Browse Source

新增B2B移动端,客户资料,开票管理

shenjunjie 6 years ago
parent
commit
f78613becd

+ 1 - 1
app.html

@@ -6,7 +6,7 @@
   <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />
   <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/element-ui/1.3.7/theme-default/index.css" />
   <!--<link rel="stylesheet" type="text/css" href="https://at.alicdn.com/t/font_0d1jjt5tukcblnmi.css"/>-->
-  <link rel="stylesheet" type="text/css" href="https://at.alicdn.com/t/font_452262_7ji4kygow4.css">
+  <link rel="stylesheet" type="text/css" href="https://at.alicdn.com/t/font_452262_6koxroe1k5l.css">
   <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/3.4.2/css/swiper.min.css" />
   <!--<script src="https://wechatfe.github.io/vconsole/lib/vconsole.min.js?v=3.2.0"></script>-->
   {{ HEAD }}

+ 3 - 0
components/mobile/MobileHeader.vue

@@ -259,6 +259,9 @@
         } else if (this.startWith(val, '/mobile/center/vendor/approval')) {
           this.showSearchIcon = false
           title = '打样管理'
+        } else if (this.startWith(val, '/mobile/center/vendor/customer')) {
+          this.showSearchIcon = false
+          title = '客户资料'
         } else {
           this.showSearchIcon = true
           title = '优软商城'

+ 3 - 0
components/mobile/base/ModalWrapper.vue

@@ -27,6 +27,9 @@
         handler: function (val) {
           if (val) {
             this.init()
+          } else {
+            this.initScroll.destroy()
+            this.initScroll = null
           }
         }
       }

+ 3 - 3
layouts/mobile.vue

@@ -1,5 +1,5 @@
 <template>
-  <div id="mobile">
+  <div>
     <mobile-header></mobile-header>
     <nuxt/>
     <mobile-footer v-show="showMobileFooter"></mobile-footer>
@@ -8,12 +8,12 @@
 <script>
   import { MobileHeader, MobileFooter } from '~components/mobile'
   export default {
-    name: 'mobile',
+    name: 'mobileloyout',
     components: {
       MobileHeader,
       MobileFooter
     },
-//    middleware: 'authenticated',
+   middleware: 'authenticated',
     computed: {
       showMobileFooter () {
         return this.$store.state.option.showMobileFooter

+ 1 - 1
layouts/mobileNoFooter.vue

@@ -7,7 +7,7 @@
 <script>
   import { MobileHeader } from '~components/mobile'
   export default {
-    name: 'mobile',
+    name: 'mobileHasHeader',
     components: {
       MobileHeader
     },

+ 2 - 2
layouts/mobileNoHeader.vue

@@ -1,5 +1,5 @@
 <template>
-  <div id="mobile">
+  <div>
     <nuxt/>
     <mobile-footer></mobile-footer>
   </div>
@@ -7,7 +7,7 @@
 <script>
   import { MobileFooter } from '~components/mobile'
   export default {
-    name: 'mobile',
+    name: 'mobileHasFooter',
     components: {
       MobileFooter
     },

+ 16 - 3
nuxt.config.js

@@ -24,6 +24,10 @@ module.exports = {
       return { x: 0, y: 0 }
     }
   },
+  transition: {
+    mode: 'in-out',
+    name: 'page'
+  },
   /*
   ** Headers of the page
   */
@@ -141,6 +145,11 @@ module.exports = {
    *   }
    */
   proxyTable: {
+    '/btob/**': uasUrl,
+    '/vendor/customer/**': uasUrl,
+    '/vendorPerformanceAssess/info/**': uasUrl,
+    '/vendor/**': baseUrl,
+    '/vendor**': baseUrl,
     // 账户中心统一前缀
     '/ssoPrefix/**': ssoUrl,
     '/api/**': baseUrl,
@@ -157,7 +166,6 @@ module.exports = {
     '/register/**': baseUrl,
     '/logout/**': baseUrl,
     '/static/**': baseUrl,
-    '/vendor**': baseUrl,
     '/trade/**': baseUrl,
     '/CommodityInOutbound/**': baseUrl,
     '/recommendation/**': baseUrl,
@@ -195,8 +203,9 @@ module.exports = {
     // 公共物料匹配物料名称
     '/productuser/**': materialUrl,
     // 权限管理
+    '/account/user/**': uasUrl,
+    '/account/role/**': uasUrl,
     '/account/**': baseUrl,
-    '/vendor/**': baseUrl,
     '/internalmessage-service/**': baseUrl,
     '/wx/**': baseUrl,
     '/messages**': messageUrl,
@@ -212,6 +221,10 @@ module.exports = {
     // B2B服务接口 uasUrl
     '/sale/inquiry/**': uasUrl,
     '/sale/orders/**': uasUrl,
-    '/token**': uasUrl
+    '/sale/apBill/**': uasUrl,
+    '/sale/apCheck/**': uasUrl,
+    '/token**': uasUrl,
+    '/authentication**': uasUrl,
+    '/authentication/**': uasUrl
   }
 }

+ 462 - 0
pages/mobile/center/vendor/btobapCheck.vue

@@ -0,0 +1,462 @@
+<template>
+  <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/vendor/payCenter" tag="div" >
+            商城
+          </nuxt-link>
+        </div>
+      </div>
+      <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 === 'end' ? 'active' : ''" @click="ChangeList('end')"><span>已作废</span></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 class="read" v-if="!isUnread(item.id)" style="margin-right: 0.3rem">已读</span>
+              <span class="noread" v-if="isUnread(item.id)" style="margin-right: 0.3rem">未读</span>
+              <span  style="margin-right: 0.3rem">{{item.recordDate | time}}</span>
+              <span class="isPut" v-if="item.status">已提交</span>
+              <span class="noPut" v-else>未提交</span>
+            </div>
+            <div class="invoice-btob-wrapper-middle">
+              <div class="invoice-btob-wrapper-middle-title">{{item.custName}}</div>
+              <div @click="lookDetails(item.id)"><span>单据编号:</span><a>{{item.code}}条</a></div>
+            </div>
+            <div class="invoice-btob-wrapper-content">
+              <div><span>对账期间:</span>{{item.beginDate | time}} - {{item.endDate | time}}</div>
+              <div><span>对账金额:</span>{{isUser ? '-' : item.checkAmount}}</div>
+              <div><span>明细条目:</span>{{item.items.length}}条</div>
+              <div><span>商品总数:</span>{{item.getTotalProd}}</div>
+              <div><span>对账结果:</span>{{item.checkStatus}}</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>
+          <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>
+    </modal-wrapper>
+  </div>
+</template>
+
+<script>
+  import { ModalWrapper, BaseFilter } from '~components/mobile/base'
+  import { PullUp, EmptyStatus } from '~components/mobile/common'
+  export default {
+    layout: 'mobile',
+    middleware: 'authenticated',
+    data() {
+      return {
+        activeType: 'all',
+        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: []
+        },
+        isUser: false,
+        unreadCode: [],
+        showModal: true,
+        dateObj: {}
+      }
+    },
+    created() {
+      this.$http.get('/account/role/isUser').then(res => {
+        this.isUser = res.data.isUser
+      })
+     this.getUnread()
+    },
+    methods: {
+      setDate (type) {
+        if (this.dateObj[type]) {
+          // 初始化为00:00:00
+          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
+          }
+//          else {
+//            if (this.dateObj.fromDate && this.dateObj.toDate && this.dateObj.fromDate === this.dateObj.toDate) {
+//              // 23:59:59
+//              this.dateObj.toDate += 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000
+//            }
+//          }
+          // 23:59:59
+          if (this.dateObj.toDate && type === 'toDate') {
+            this.dateObj.toDate += (23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000)
+          }
+        } else {
+          this.dateObj[type] = null
+        }
+      },
+      toChooseUser() {
+        console.log('选择客户')
+      },
+      onPullUpAction () {
+        this.filterParams.page++
+        this.setSelect(this.$selectObj.key, this.$selectObj.value, false)
+      },
+      getUnread() {
+        this.$http.get('/sale/apCheck/unread').then(res => {
+          this.unreadCode = res.data.content
+        })
+      },
+      lookDetails(id) {
+        console.log('前往详情并且设置为已读')
+        // if (!this.isUnread(id)) { } else {
+        //   let sourceId = []
+        //   sourceId.push(id)
+        //   this.$http.post('/sale/sample/setRead', sourceId).then(res => {
+        //     this.getUnread()
+        //   })
+        // }
+      },
+      isUnread: function (id) {
+        for (let i in this.unreadCode) {
+          if (id === this.unreadCode[i]) {
+            return true
+          }
+        }
+      },
+      ChangeList(tp) {
+        this.activeType = tp
+        this.filterParams.page = 1
+        this.setSelect(this.$selectObj.key, this.$selectObj.value, true)
+      },
+      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)
+      },
+      async setSelect(...val) {
+        let { data } = await this.$http.get('/sale/apCheck/info/search', {
+          params: {
+            count: this.filterParams.count,
+            page: this.filterParams.page,
+            searchFilter: {'keyword': this.filterParams.keyword || '', 'fromDate': val[1].fromDate, 'endDate': val[1].toDate},
+            sorting: {'recordDate': 'desc'},
+            _state: this.activeType
+          }})
+        if (!this.resourceList.content) {
+          this.resourceList.content = []
+        }
+        data.content.forEach(item => {
+          item.checkAmount = item.checkAmount.toFixed(2)
+          item.getTotalProd = 0
+          item.items.forEach(im => {
+            item.getTotalProd += im.checkQty
+          })
+        })
+        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
+          }
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  @mixin overFlowHidden {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  .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;
+      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 .1rem 0;
+        width: .4rem;
+        display: inline-block;
+        text-align: center;
+        vertical-align: top;
+      }
+    }
+  }
+</style>

+ 520 - 0
pages/mobile/center/vendor/customer/index.vue

@@ -0,0 +1,520 @@
+<template>
+  <div class="modal-wrapper-bg">
+    <div class="mobile-customer-btob"  style="background: #f1f3f6" id="mobile-customer-btob">
+      <div class="switch-head" style="border:0">
+        <div class="com-switch-head clearfix" style="line-height: 0.78rem">
+          <div style="width: 50%" class="pull-left">
+            <span style="margin: 0" class="com-switch-item inline-block active" >客户资料</span>
+          </div>
+          <div style="width:50%" class="pull-left">
+            <router-link to="/mobile/center/vendor/customer/vendorPerformanceAssess" tag="span" style="margin: 0" class="com-switch-item inline-block">绩效考核</router-link>
+          </div>
+        </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="customer-btob-wrapper">
+        <div v-if="resourceList.content && resourceList.content.length > 0">
+          <div class="customer-btob-wrapper-list" v-for="(item, index) in resourceList.content">
+            <div class="customer-btob-wrapper-content">
+              <div class="list-item"><span>UU:</span>{{item.myEnterprise.uu}}</div>
+              <div class="list-item"><span>客户名称:</span><a>{{item.myEnterprise.enName}}</a></div>
+              <div class="address clearfix"><span class="fl">地址:</span><div class="fl" style="width:5.6rem">{{item.myEnterprise.enAddress}}</div></div>
+              <div class="list-item"><span>客户联系人:</span>{{item.myUser.userName}}</div>
+              <div class="list-item"><span>联系人电话:</span>{{item.myUser.userTel}}</div>
+              <div class="list-item"><span>我方联系人:</span>{{item.vendorUser.userName}}</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>
+    <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 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="输入用户名/关键字">
+                <span @click="modalObjonFilter"><i class="iconfont icon-sousuo"></i></span>
+              </div>
+              <div class="customer-modal-content">
+                <div class="customer-modal-content-title">
+                  <span class="item inline-block"  style="width: 28%;" @click="chooseAll()"  v-if="modalObj.type === 'add'">
+                    <label class="mobile-cart-check" :class="{'active': !Allcheck}"></label>
+                    全选
+                  </span>
+                  <span class="item inline-block"  style="width: 28%;height:2px" v-else>
+
+                  </span>
+                  <span class="item inline-block" style="width: 32%;">用户UU</span>
+                  <span class="item inline-block" style="width: 40%;text-align: right">用户名称</span>
+                </div>
+                <div class="customer-modal-content-list" v-for="item in modalObj.showModalList">
+                  <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>
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="customer-modal-bottom clearfix">
+            <div class="fl" @click="answerModal()">确定</div>
+            <div class="fr" @click="closeModal()">取消</div>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <remind-box :title="collectResult" :timeoutCount="timeoutCount"></remind-box>
+    <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
+        },
+        collectResult: '',
+        timeoutCount: 0,
+        resourceList: {
+          content: []
+        },
+        enabled: '',
+        modalObj: {
+          customer: {},
+          showModal: false,
+          showModalList: [], // 筛选完的数据
+          type: 'add', // chance
+          originList: [] // 原数据
+        },
+        transfer: false,
+        thisUser: {}
+      }
+    },
+    created() {
+      this.$http.get('/account/role/currentRole').then(res => {
+        this.thisUser = this.$store.state.option.user.data
+        this.enabled = res.data.count > 0 || this.thisUser.sys
+      })
+      this.setSelect()
+    },
+
+    methods: {
+      async answerModal() {
+        if (this.modalObj.type !== 'add') {
+          if (this.modalObj.customer.myEnterprise.uu) {
+            // 当前用户是管理员时
+            if (this.thisUser.sys) {
+                this.$http.post(`/account/user/transferUserToVendor/${this.modalObj.customer.myEnterprise.uu}`, this.modalObj.originList).then(data => {
+                  this.onMind('转移成功!')
+                  this.closeModal()
+                }, err => {
+                  this.onMind(err.data)
+                  this.closeModal()
+                })
+              // } else {
+              //   this.onMind('您未勾选任何记录!')
+              //   this.closeModal()
+              // }
+            } else {
+              // 非管理员转移自己的权限时
+              this.modalObj.originList.forEach(item => {
+                if (item.transfer && item.userUU !== this.thisUser.userUU) {
+                  this.target = item
+                }
+              })
+              if (!this.target) {
+                this.onMind('您未选择权限转移对象!')
+                this.closeModal()
+              } else {
+                this.$http.post(`/account/user/transferMyDistribute`, {
+                  custUU: this.modalObj.customer.myEnterprise.uu,
+                  userUU: this.target.userUU
+                }).then(data => {
+                  this.onMind('转移成功!')
+                  this.closeModal()
+                }, err => {
+                  this.onMind(err.data)
+                  this.closeModal()
+                })
+              }
+            }
+          } else {
+            this.closeModal()
+          }
+        } else {
+          this.$http.post(`/account/user/bindUserToVendor/${this.modalObj.customer.myEnterprise.uu}`, this.modalObj.originList).then(res => {
+            this.onMind('分配成功!')
+            this.closeModal()
+          }).catch(err => {
+            this.onMind('保存失败!')
+            this.closeModal()
+          })
+        }
+      },
+      chooseAll() {
+        let _str = 'distribute'
+        if (this.modalObj.type !== 'add') {
+          _str = 'transfer'
+        }
+        if (!this.Allcheck) {
+          this.modalObj.showModalList.forEach(item => {
+            item[_str] = false
+          })
+          return
+        }
+        this.modalObj.showModalList.forEach(item => {
+          item[_str] = true
+        })
+      },
+      checkItem(item) {
+        if (this.modalObj.type !== 'add') {
+          if (this.$store.state.option.user.data.sys) { // 管理员操作
+            item.transfer = !item.transfer
+            this.modalObj.originList.forEach(userInfo => {
+              if (this.$store.state.option.user.data.userUU === item.userUU && item.transfer) {
+                this.transfer = true
+              }
+              if (item.userUU !== userInfo.userUU) {
+                userInfo.transfer = false
+              }
+            })
+          } else if (this.transfer) { // 被管理员转移权限的非管理员操作
+            item.transfer = !item.transfer
+            this.modalObj.originList.forEach(userInfo => {
+              if (item.userUU !== userInfo.userUU) {
+                userInfo.transfer = false
+              } else {
+                userInfo.transfer = true
+              }
+            })
+          } else { // 被分配客户的用户
+            item.transfer = !item.transfer
+            this.modalObj.originList.forEach(userInfo => {
+              if (item.userUU !== userInfo.userUU) {
+                userInfo.transfer = false
+              } else {
+                userInfo.transfer = true
+              }
+            })
+          }
+        } else {
+          item.distribute = !item.distribute
+        }
+      },
+      closeModal() {
+        this.modalObj.showModal = false
+        this.initScroll.destroy()
+        this.initScroll = null
+      },
+      init () {
+        this.$nextTick(() => {
+          this._initscroll()
+        })
+      },
+      modalObjonFilter() {
+        let _arr = []
+        this.modalObj.originList.forEach(item => {
+          if (item.userUU.toString().indexOf(this.modalObj.keyword) > -1) {
+            _arr.push(item)
+          }
+        })
+        this.modalObj.showModalList = _arr
+      },
+      // 分配
+      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
+          if (this.enabled || customer.enTransfer) {
+            this.$http.post(`/account/user/customer/${customer.myEnterprise.uu}`).then(data => {
+                customer.userinfos = data.data
+                this.modalObj.showModal = true
+                this.modalObj.showModalList = customer.userinfos
+                this.modalObj.originList = customer.userinfos
+                this.init()
+            })
+          } else {
+            this.onMind('您没有为当前客户分配用户的权限!')
+          }
+        })
+      },
+      // 转移
+      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
+          if (this.enabled || customer.enTransfer) {
+            this.$http.get('/authentication').then(res => {
+              this.thisUser = res.data
+            })
+            this.$http.post(`/account/user/customer/${customer.myEnterprise.uu}`).then(data => {
+              customer.userinfos = data.data
+              customer.userinfos.forEach(user => {
+                if (this.$store.state.option.user.data.userUU === user.userUU && user.transfer) {
+                  this.transfer = true
+                }
+              })
+              this.modalObj.showModal = true
+              this.modalObj.showModalList = customer.userinfos
+              this.modalObj.originList = customer.userinfos
+              this.init()
+            })
+          } else {
+            this.onMind('您没有为当前客户分配用户的权限!')
+          }
+        })
+      },
+      onFilter() {
+        this.setSelect(true)
+      },
+      onMind(str) {
+        this.collectResult = str
+        this.timeoutCount++
+      },
+      onPullUpAction() {
+        this.filterParams.page++
+        this.setSelect()
+      },
+      async setSelect(reset) {
+        let { data } = await this.$http.get('/vendor/customer/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
+      },
+      Allcheck() {
+        let _str = 'distribute'
+        if (this.modalObj.type !== 'add') {
+          _str = 'transfer'
+        }
+       return this.modalObj.showModalList.some(item => {
+          return item[_str] === false
+        })
+      }
+    },
+    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>

+ 151 - 0
pages/mobile/center/vendor/customer/vendorPerformanceAssess.vue

@@ -0,0 +1,151 @@
+<template>
+  <div>
+    <div class="mobile-assess-btob"  style="background: #f1f3f6" id="mobile-assess-btob">
+      <div class="switch-head" style="border:0">
+        <div class="com-switch-head clearfix" style="line-height: 0.78rem">
+          <div style="width: 50%" class="pull-left">
+            <router-link to="/mobile/center/vendor/customer" tag="span" style="margin: 0" class="com-switch-item inline-block">客户资料</router-link>
+          </div>
+          <div style="width:50%" class="pull-left">
+            <span style="margin: 0" class="com-switch-item inline-block active" >绩效考核</span>
+          </div>
+        </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="customer-btob-wrapper">
+        <div v-if="resourceList.content && resourceList.content.length > 0">
+          <div class="customer-btob-wrapper-list" v-for="(item, index) in resourceList.content">
+            <div class="customer-btob-wrapper-content">
+              <div class="list-item"><span>考核单号:</span>{{item.vpaCode}}</div>
+              <div class="list-item"><span>考核单位:</span><a>{{item.enterprise.enName}}</a></div>
+              <div class="list-item"><span>考核期间:</span>{{item.vpaAssessdate}}</div>
+              <div class="list-item"><span>录入日期:</span>{{item.vpaApplydate | time}}</div>
+              <div class="list-item"><span>考核人:</span>{{item.vpaApplyman}}</div>
+            </div>
+          </div>
+        </div>
+        <empty-status
+          v-else
+          :text="'暂无对应的单据'"
+          :showLink="false"
+        ></empty-status>
+      </div>
+    </div>
+
+    <pull-up :fixId="'mobile-assess-btob'" :allPage="allPage" :page="filterParams.page" @pullUpAction="onPullUpAction"></pull-up>
+  </div>
+</template>
+
+<script>
+  import { PullUp, EmptyStatus } from '~components/mobile/common'
+  export default {
+    layout: 'mobile',
+    middleware: 'authenticated',
+    data() {
+      return {
+        filterParams: {
+          page: 1,
+          count: 10,
+          keyword: ''
+        },
+        resourceList: {
+          content: []
+        }
+      }
+    },
+    methods: {
+      onFilter() {
+        this.setSelect(true)
+      },
+      onPullUpAction() {
+        this.filterParams.page++
+        this.setSelect()
+      },
+      async setSelect(reset) {
+        let { data } = await this.$http.get('/vendorPerformanceAssess/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
+      }
+    },
+    created() {
+      this.setSelect()
+    },
+    computed: {
+      allPage() {
+        return this.resourceList.totalPage
+      }
+    },
+    components: {
+      PullUp,
+      EmptyStatus
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  @mixin overFlowHidden {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+
+  .mobile-assess-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;
+      }
+    }
+    .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;
+          }
+        }
+      }
+    }
+  }
+</style>

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

@@ -2,13 +2,15 @@
   <div class="mobile-invoice mobile-content mobile-content-long vendor-invoice" style="background: #f1f3f6" :class="{'invoice-record': switchType == 'record'}" @click="showFilterInvoiceType = false">
     <div class="switch-head" style="border:0">
       <div class="com-switch-head clearfix" style="line-height: 0.78rem">
-       <div style="width: 50%" class="pull-left">
+       <div style="width: 33.3%" class="pull-left">
          <span style="margin: 0" class="com-switch-item inline-block" :class="{active: switchType == 'apply'}" @click="setSwitchType('apply')">待开票</span>
        </div>
-        <div style="width: 50%" class="pull-left">
-          <span class="com-switch-item inline-block" :class="{active: switchType == 'record'}" @click="setSwitchType('record')">已开票</span>
+        <div style="width: 33.3%" class="pull-left">
+          <span style="margin: 0" class="com-switch-item inline-block" :class="{active: switchType == 'record'}" @click="setSwitchType('record')">已开票</span>
+        </div>
+        <div style="width: 33.3%" class="pull-left">
+          <router-link tag="span" style="margin: 0" class="com-switch-item inline-block" to="/mobile/center/vendor/invoice/invoice_btob">B2B</router-link>
         </div>
-
       </div>
     </div>
     <div class="search-content mi-search-content">
@@ -299,7 +301,7 @@
         },
         showFilterInvoiceType: false,
         operateIds: null,
-        switchType: 'apply',
+        switchType: this.$route.query.tp || 'apply',
         showMoreRemind: false
       }
     },
@@ -309,9 +311,9 @@
       RemindOpeModal,
       EmptyStatus
     },
-    fetch ({store}) {
+    fetch ({store, route}) {
       return Promise.all([
-        store.dispatch('invoice/getInvoices', {count: 10, page: 1, role: 'SELLER', sorting: {'createTime': 'DESC'}, status: 101})
+        store.dispatch('invoice/getInvoices', {count: 10, page: 1, role: 'SELLER', sorting: {'createTime': 'DESC'}, status: route.query.tp === 'record' ? 102 : 101})
       ])
     },
     watch: {
@@ -354,6 +356,10 @@
       },
       allChecked () {
         return this.invoiceList.length && this.listActiveFlag
+      },
+      getRouterParams() {
+        console.log(this.$route.query.tp)
+        return this.$route.query.tp === 'record'
       }
     },
     methods: {

+ 344 - 0
pages/mobile/center/vendor/invoice/invoice_btob.vue

@@ -0,0 +1,344 @@
+<template>
+  <div>
+    <div class="mobile-invoice-btob"  style="background: #f1f3f6" id="mobile-invoice-btob">
+      <div class="switch-head" style="border:0">
+        <div class="com-switch-head clearfix" style="line-height: 0.78rem">
+          <div style="width: 33.3%" class="pull-left">
+            <span style="margin: 0" class="com-switch-item inline-block"  @click="setSwitchType('apply')">待开票</span>
+          </div>
+          <div style="width: 33.3%" class="pull-left">
+            <span style="margin: 0" class="com-switch-item inline-block"  @click="setSwitchType('record')">已开票</span>
+          </div>
+          <div style="width: 33.3%" class="pull-left">
+            <span style="margin: 0" class="com-switch-item inline-block active" >B2B</span>
+          </div>
+        </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="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 class="invoice-btob-wrapper">
+        <div  v-if="resourceList.content && resourceList.content.length > 0">
+          <div class="invoice-btob-list" v-for="bill in resourceList.content" @click="lookItem(bill)" :key="bill.id">
+            <div class="invoice-btob-list-top clearfix">
+              <div class="fl">日期:<span>{{bill.date | time}}</span></div>
+              <div class="fr">流水号:<a>{{bill.code}}</a></div>
+            </div>
+            <div class="invoice-btob-wrapper-title">
+              {{bill.enterprise.enName}}
+            </div>
+            <div class="invoice-btob-wrapper-content" v-for="item in bill.items">
+              <div><span>物料型号:</span>{{item.product.code}}</div>
+              <div><span>物料名称:</span>{{item.product.title}}</div>
+              <div><span>物料规格:</span>{{item.product.spec}}</div>
+              <div><span>单价:</span>{{isUser ? '-' : bill.currency + ' '+ item.price}}</div>
+              <div><span>税率:</span>{{item.taxrate || 0}}%</div>
+              <div><span>发票数量:</span>{{item.qty || '-'}}</div>
+              <div><span>金额:</span>{{isUser ? '-' : bill.currency + ' '+ item.apAmount}}</div>
+              <div><span>税金:</span>{{isUser ? '-' : bill.currency + ' '+ item.taxAmount}}</div>
+              <div><span>单据编号:</span>{{item.orderCode}}</div>
+              <div><span>数量:</span>{{item.thisvoQty}}{{item.product.unit}}</div>
+              <div><span>单据金额:</span>{{ isUser ? '-' : bill.currency + ' '+ item.amount}}</div>
+            </div>
+          </div>
+        </div>
+        <empty-status
+          v-else
+          :text="'暂无开票信息'"
+          :showLink="false"
+          ></empty-status>
+      </div>
+    </div>
+    <pull-up :fixId="'mobile-invoice-btob'" :allPage="allPage" :page="filterParams.page" @pullUpAction="onPullUpAction"></pull-up>
+    <modal-wrapper :showModal="showModal" :title="'发票详情'" @closeAction="showModal = false">
+      <div class="btob_invoice_modal">
+        <div class="btob_invoice_modal_title">
+          <span>单据资料</span>
+        </div>
+        <div class="btob_invoice_modal_content">
+          <div><span>客户名称:</span>{{modalObj.enterprise && modalObj.enterprise.enName}}</div>
+          <div><span>单据编号:</span>{{modalObj.code}}</div>
+          <div><span>单据编号:</span>{{modalObj.date | time}}</div>
+          <div><span>录单人:</span>{{modalObj.recorder}}</div>
+        </div>
+        <div class="btob_invoice_modal_title">
+          <span>财务结算</span>
+        </div>
+        <div class="btob_invoice_modal_content">
+          <div><span>日期:</span>{{modalObj.date | time}}</div>
+          <div><span>付款日期:</span>{{modalObj.paydate | time}}</div>
+          <div><span>币别:</span>{{modalObj.currency}}</div>
+          <div><span>汇率:</span>{{modalObj.rate}}</div>
+          <div><span>账期:</span>{{modalObj.yearMouth}}</div>
+          <div><span>应付总额:</span>{{isUser ? '-' : modalObj.apAmount}}</div>
+          <div><span>付款金额:</span>{{isUser ? '-': (modalObj.payAmount || 0)}}</div>
+          <div><span>税金合计:</span>{{isUser ? '-': (modalObj.taxSum || 0)}}</div>
+          <div><span>付款方式:</span>{{modalObj.payments}}</div>
+        </div>
+        <div class="btob_invoice_modal_title">
+          <span>明细清单</span>
+        </div>
+        <div class="btob_invoice_modal_content btob_invoice_modal_content2"  v-for="(item, index) in modalObj.items">
+          <div><span>序号:</span>{{index + 1}}</div>
+          <div><span>物料型号:</span>{{item.product.code}}</div>
+          <div><span>物料名称:</span>{{item.product.title}}</div>
+          <div><span>物料规格:</span>{{item.product.spec}}</div>
+          <div><span>单位:</span>{{item.product.unit}}</div>
+          <div><span>采购单号:</span>{{item.orderCode}}</div>
+          <div><span>出入库单号:</span>{{item.pdinoutNo}}</div>
+          <div><span>数量:</span>{{item.thisvoQty}}</div>
+          <div><span>单价:</span>{{isUser?'-':item.price}}</div>
+          <div><span>税率:</span>{{item.taxrate}}</div>
+          <div><span>单据金额:</span>{{isUser?'-':item.amount}}</div>
+          <div><span>本次开票数量:</span>{{item.qty}}</div>
+          <div><span>本次开票金额:</span>{{isUser?'-':item.apAmount}}</div>
+          <div><span>已开票数:</span>{{item.invoQty||'-'}}</div>
+          <div><span>已转开票记录数:</span>{{item.yQty|| '-'}}</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: 'mobile',
+    middleware: 'authenticated',
+    data() {
+      return {
+        resourceList: {},
+        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
+          }
+        ],
+        isUser: '', // 获取当前用户是否为普通用户
+        modalObj: {}, // 详情页
+        showModal: false
+      }
+    },
+    created() {
+      this.$http.get('/account/role/isUser').then(res => {
+        this.isUser = res.data.isUser
+      })
+    },
+    methods: {
+      lookItem(bill) {
+        this.showModal = true
+        // let {data} = this.$http.get(`/sale/apBill/${id}/info`)
+        this.modalObj = bill
+      },
+      onPullUpAction () {
+        this.filterParams.page++
+        this.setSelect(this.$selectObj.key, this.$selectObj.value, false)
+      },
+      setSwitchType(tp) {
+        this.$router.push('/mobile/center/vendor/invoice?tp=' + tp)
+      },
+      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)
+      },
+      async setSelect(...val) {
+        let { data } = await this.$http.get('/sale/apBill/info/search', {
+          params: {
+            count: this.filterParams.count,
+            page: this.filterParams.page,
+            searchFilter: {'fromDate': val[1].fromDate, 'endDate': val[1].toDate, 'keyword': this.filterParams.keyword},
+            sorting: {'date': 'desc'}
+        }})
+        this.resourceList.content = this.resourceList.content || []
+        if (!val[2]) {
+          this.resourceList.content.push(...data.content)
+          data.content = this.resourceList.content
+        } else {
+          this.resourceList.content = []
+        }
+        this.resourceList = data
+      }
+    },
+    computed: {
+      allPage () {
+        return this.resourceList.totalPage
+      },
+      isEmpty () {
+        return this.resourceList.content.length === 0
+      }
+    },
+    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
+          }
+        }
+      }
+    },
+    components: {
+      ModalWrapper,
+      BaseFilter,
+      PullUp,
+      EmptyStatus
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  @mixin overFlowHidden {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+  @import '~assets/scss/mobileInvoice';
+  .com-switch-head .com-switch-item.active {
+    border-bottom: 0.04rem solid #3f84f6;
+  }
+  .mobile-invoice-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;
+      }
+    }
+  }
+  .filter-wrapper{
+    width: 7.1rem;
+    margin: 0 auto 0.27rem;
+    background: #fff;
+    padding: 0.27rem 0.2rem;
+    border-radius: 0.05rem;
+  }
+  .invoice-btob-wrapper {
+    .invoice-btob-list {
+      width: 7.1rem;
+      margin: 0 auto 0.2rem;
+      background: #FFFFFF;
+      border-radius: 0.05rem;
+      padding: 0 0.24rem;
+      .invoice-btob-list-top {
+        line-height: 0.91rem;
+        border-bottom: 1px solid #D9D9D9;
+        color: #666;
+        font-size: 0.28rem;
+        .fl span{
+          color: #151515;
+        }
+      }
+      .invoice-btob-wrapper-title {
+        @include overFlowHidden();
+        font-size: 0.28rem;
+        color: #333333;
+        line-height: 0.9rem;
+      }
+      .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;
+        }
+      }
+    }
+  }
+  .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;
+      }
+      &:nth-child(1) {
+        border-top: 0px
+      }
+    }
+    .btob_invoice_modal_content {
+      @include overFlowHidden();
+      padding-top: 0.15rem;
+      font-size: 0.28rem;
+      color: #151515;
+      line-height: 0.5rem;
+      padding-bottom: 0.15rem;
+      span {
+        color: #666666;
+      }
+      &.btob_invoice_modal_content2 {
+        border-bottom:1px solid #D3D3D3;
+        &:nth-last-of-type(1) {
+          border-bottom: 0px
+        }
+      }
+    }
+  }
+</style>

+ 222 - 185
pages/mobile/center/vendor/payCenter.vue

@@ -1,215 +1,225 @@
 <template>
-  <div class="mobile-pay-center vendor-pay mobile-fix-content mobile-centerfix-content" :class="{'vendor-pay-record': switchType === 'record' && recordList.length}" id="mobileFixContent">
-    <!--<div class="mp-head" v-if="!fromUserPage">-->
-      <!--<span class="inline-block" :class="{'active': switchType === 'record'}" @click="setSwitchType('record')">交易记录</span>-->
-      <!--<span class="inline-block" :class="{'active': switchType === 'account'}" @click="setSwitchType('account')">收款账户</span>-->
-    <!--</div>-->
+  <div>
+    <div class="order-tab">
+      <div class="order-tab-wrapper clearfix">
+        <nuxt-link class="fl tab" to="/mobile/center/vendor/btobapCheck" tag="div" >
+          B2B
+        </nuxt-link>
+        <div class="fl active tab">商城</div>
+      </div>
+    </div>
+    <div class="mobile-pay-center vendor-pay mobile-fix-content mobile-centerfix-content" :class="{'vendor-pay-record': switchType === 'record' && recordList.length}" id="mobileFixContent">
+      <!--<div class="mp-head" v-if="!fromUserPage">-->
+        <!--<span class="inline-block" :class="{'active': switchType === 'record'}" @click="setSwitchType('record')">交易记录</span>-->
+        <!--<span class="inline-block" :class="{'active': switchType === 'account'}" @click="setSwitchType('account')">收款账户</span>-->
+      <!--</div>-->
 
-    <!-- 账户信息start -->
-    <div class="mp-content" v-if="switchType == 'account'">
-      <!--<p class="mp-content-header">已设置的账户信息<span class="fr" @click="openAddAccount"><i class="iconfont icon-xinzeng"></i>新增账户</span></p>-->
-      <template v-if="accountList && accountList.length === 0">
-        <div class="new-account">
-          <div class="new-content-line">
-            <span class="inline-block"><i>*</i>开户名称:</span>
-            <input type="text" placeholder="请填写开户人姓名或企业名称" v-model="bankAccountObj.accountname" @blur="checkAccountname">
-          </div>
-          <div class="new-content-line">
-            <span class="inline-block"><i>*</i>银行账号:</span>
-            <input type="text" placeholder="请填写银行账号" v-model="bankAccountObj.number" @blur="checkNumber">
-          </div>
-          <div class="new-content-line">
-            <span class="inline-block"><i>*</i>开户银行:</span>
-            <input type="text" readonly placeholder="例如:中国银行" v-model="bankAccountObj.bankname" @click.stop="showNewSimilar = !showNewSimilar">
-            <ul v-if="showNewSimilar" class="similar">
-              <li class="text-ellipse" v-for="bank in bankList" @click.stop="setBankName(bank)">{{bank}}</li>
-            </ul>
-          </div>
-          <div class="new-content-line">
-            <span class="inline-block"><i>*</i>开户支行:</span>
-            <input type="text" placeholder="例如:侨香支行" v-model="bankAccountObj.branchname" @blur="checkBranchname">
+      <!-- 账户信息start -->
+      <div class="mp-content" v-if="switchType == 'account'">
+        <!--<p class="mp-content-header">已设置的账户信息<span class="fr" @click="openAddAccount"><i class="iconfont icon-xinzeng"></i>新增账户</span></p>-->
+        <template v-if="accountList && accountList.length === 0">
+          <div class="new-account">
+            <div class="new-content-line">
+              <span class="inline-block"><i>*</i>开户名称:</span>
+              <input type="text" placeholder="请填写开户人姓名或企业名称" v-model="bankAccountObj.accountname" @blur="checkAccountname">
+            </div>
+            <div class="new-content-line">
+              <span class="inline-block"><i>*</i>银行账号:</span>
+              <input type="text" placeholder="请填写银行账号" v-model="bankAccountObj.number" @blur="checkNumber">
+            </div>
+            <div class="new-content-line">
+              <span class="inline-block"><i>*</i>开户银行:</span>
+              <input type="text" readonly placeholder="例如:中国银行" v-model="bankAccountObj.bankname" @click.stop="showNewSimilar = !showNewSimilar">
+              <ul v-if="showNewSimilar" class="similar">
+                <li class="text-ellipse" v-for="bank in bankList" @click.stop="setBankName(bank)">{{bank}}</li>
+              </ul>
+            </div>
+            <div class="new-content-line">
+              <span class="inline-block"><i>*</i>开户支行:</span>
+              <input type="text" placeholder="例如:侨香支行" v-model="bankAccountObj.branchname" @blur="checkBranchname">
+            </div>
+            <div class="am-btn-wrap">
+              <button @click="addAccount">确认</button>
+            </div>
+            <p class="am-remind-text clearfix">
+              <i class="fl">*声明:</i>
+              <span class="fr">
+                1. 此账户为卖家收款账户,请仔细核对信息内容,若由信息错误造成的损失,优软商城不承担赔偿责任。
+                <br/>
+                2. 卖家只能有唯一一个“使用中”的收款账户,新增账户审核通过后,原账户将自动失效。
+                <br/>
+                3. 如您的企业名称、开户银行及账号变更,您须在优软商城开展资金结算前进行更正,否则发生转账错误优软商城不承担赔偿责任。
+                <br/>
+                4. 更多的条款请阅读《优软商城代收代付协议》 。
+              </span>
+            </p>
           </div>
-          <div class="am-btn-wrap">
-            <button @click="addAccount">确认</button>
+        </template>
+        <template v-else>
+          <ul class="mp-list">
+            <li v-for="account in accountList">
+              <div class="content-line">
+                <span class="inline-block title">开户名称:</span>
+                <span class="inline-block content text-ellipse">{{account.accountname}}</span>
+              </div>
+              <div class="content-line">
+                <span class="inline-block title">银行账户:</span>
+                <span class="inline-block content text-ellipse">{{account.number}}</span>
+              </div>
+              <div class="content-line">
+                <span class="inline-block title">开户银行:</span>
+                <span class="inline-block content text-ellipse">{{account.bankname}}</span>
+              </div>
+              <div class="content-line">
+                <span class="inline-block title">开户支行:</span>
+                <span class="inline-block content text-ellipse">{{account.branchname}}</span>
+              </div>
+              <div class="content-line">
+                <span class="inline-block title">状态:</span>
+                <span class="inline-block content text-ellipse">
+                {{account.status | bankStatusFilter}}
+                <i v-if="account.status == 101" class="iconfont icon-tixing"></i>
+              </span>
+              </div>
+              <div class="btn-wrap clearfix">
+                <a class="inline-block" @click="reuseAccount(account)"><i class="iconfont icon-gouxuan1"></i>重新使用</a><!-- v-if="account.status == 105"-->
+                <a class="inline-block" @click="deleteAccount(account)"><i class="iconfont icon-lajitong"></i>删除</a>
+              </div>
+            </li>
+          </ul>
+          <div class="com-btn-wrap mp-btn-wrap">
+            <button @click.stop="openAddAccount"><i class="iconfont icon-add"></i>新增账户</button>
           </div>
-          <p class="am-remind-text clearfix">
-            <i class="fl">*声明:</i>
-            <span class="fr">
-              1. 此账户为卖家收款账户,请仔细核对信息内容,若由信息错误造成的损失,优软商城不承担赔偿责任。
-              <br/>
-              2. 卖家只能有唯一一个“使用中”的收款账户,新增账户审核通过后,原账户将自动失效。
-              <br/>
-              3. 如您的企业名称、开户银行及账号变更,您须在优软商城开展资金结算前进行更正,否则发生转账错误优软商城不承担赔偿责任。
-              <br/>
-              4. 更多的条款请阅读《优软商城代收代付协议》 。
-            </span>
-          </p>
+        </template>
+      </div>
+      <!-- 账户信息end -->
+
+      <!-- 交易记录start -->
+      <div class="mp-record" v-if="switchType == 'record'">
+        <div class="search-content">
+          <input type="text" placeholder="买家名称/订单号" v-model="filterParams.keyword" @keyup.13="filterRecord">
+          <span @click="filterRecord"><i class="iconfont icon-sousuo"></i></span>
         </div>
-      </template>
-      <template v-else>
-        <ul class="mp-list">
-          <li v-for="account in accountList">
+        <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="valueAction"
+            :title="filterOption.title"></base-filter>
+        </div>
+        <ul class="mp-list record-list mp-list-record" v-if="recordList.length">
+          <li v-for="record in recordList">
             <div class="content-line">
-              <span class="inline-block title">开户名称:</span>
-              <span class="inline-block content text-ellipse">{{account.accountname}}</span>
+              <span class="inline-block title">订单号:</span>
+              <nuxt-link :to="`/mobile/order/details?uuid=${baseUtils.enidfilter(record.puid)}&type=saler`" class="inline-block content text-ellipse link">{{record.orderid}}</nuxt-link>
             </div>
             <div class="content-line">
-              <span class="inline-block title">银行账户:</span>
-              <span class="inline-block content text-ellipse">{{account.number}}</span>
+              <span class="inline-block title">金额:</span>
+              <span class="inline-block content text-ellipse">{{record.currencyName | currencyFilter}}{{record.total}}</span>
             </div>
             <div class="content-line">
-              <span class="inline-block title">开户银行:</span>
-              <span class="inline-block content text-ellipse">{{account.bankname}}</span>
+              <span class="inline-block title">买家:</span>
+              <span class="inline-block content text-ellipse">{{record.buyerentername || record.buyername}}</span>
             </div>
             <div class="content-line">
-              <span class="inline-block title">开户支行:</span>
-              <span class="inline-block content text-ellipse">{{account.branchname}}</span>
+              <span class="inline-block title">交易方式:</span>
+              <span class="inline-block content text-ellipse">{{record.type | payTypeFilter}}</span>
             </div>
             <div class="content-line">
-              <span class="inline-block title">状态:</span>
-              <span class="inline-block content text-ellipse">
-              {{account.status | bankStatusFilter}}
-              <i v-if="account.status == 101" class="iconfont icon-tixing"></i>
-            </span>
+              <span class="inline-block title">时间:</span>
+              <span class="inline-block content text-ellipse">{{record.transferTime | time}}</span>
             </div>
-            <div class="btn-wrap clearfix">
-              <a class="inline-block" @click="reuseAccount(account)"><i class="iconfont icon-gouxuan1"></i>重新使用</a><!-- v-if="account.status == 105"-->
-              <a class="inline-block" @click="deleteAccount(account)"><i class="iconfont icon-lajitong"></i>删除</a>
+            <div class="content-line">
+              <span class="inline-block title">状态:</span>
+              <span class="inline-block content text-ellipse">收款成功</span>
             </div>
           </li>
         </ul>
-        <div class="com-btn-wrap mp-btn-wrap">
-          <button @click.stop="openAddAccount"><i class="iconfont icon-add"></i>新增账户</button>
+        <div class="fix-count-wrap" v-if="recordList.length">
+          <span class="content">已收总计:<span>{{currencySymbol | currencyFilter}}&nbsp;{{totalMoney}}</span></span>
+          <!--<span class="content">支出总计:<span>{{currencySymbol | currencyFilter}}&nbsp;0</span></span>
+          <p>结余:{{currencySymbol | currencyFilter}}&nbsp;{{totalRecordPrice}} (共计{{recordList.length || 0}}笔交易)</p>-->
+          <p>结余:{{currencySymbol | currencyFilter}}&nbsp;{{totalMoney}} (共计{{recordData.data.data.data.totalElements || 0}}笔交易)</p>
         </div>
-      </template>
-    </div>
-    <!-- 账户信息end -->
-
-    <!-- 交易记录start -->
-    <div class="mp-record" v-if="switchType == 'record'">
-      <div class="search-content">
-        <input type="text" placeholder="买家名称/订单号" v-model="filterParams.keyword" @keyup.13="filterRecord">
-        <span @click="filterRecord"><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="valueAction"
-          :title="filterOption.title"></base-filter>
-      </div>
-      <ul class="mp-list record-list mp-list-record" v-if="recordList.length">
-        <li v-for="record in recordList">
-          <div class="content-line">
-            <span class="inline-block title">订单号:</span>
-            <nuxt-link :to="`/mobile/order/details?uuid=${baseUtils.enidfilter(record.puid)}&type=saler`" class="inline-block content text-ellipse link">{{record.orderid}}</nuxt-link>
-          </div>
-          <div class="content-line">
-            <span class="inline-block title">金额:</span>
-            <span class="inline-block content text-ellipse">{{record.currencyName | currencyFilter}}{{record.total}}</span>
-          </div>
-          <div class="content-line">
-            <span class="inline-block title">买家:</span>
-            <span class="inline-block content text-ellipse">{{record.buyerentername || record.buyername}}</span>
-          </div>
-          <div class="content-line">
-            <span class="inline-block title">交易方式:</span>
-            <span class="inline-block content text-ellipse">{{record.type | payTypeFilter}}</span>
-          </div>
-          <div class="content-line">
-            <span class="inline-block title">时间:</span>
-            <span class="inline-block content text-ellipse">{{record.transferTime | time}}</span>
-          </div>
-          <div class="content-line">
-            <span class="inline-block title">状态:</span>
-            <span class="inline-block content text-ellipse">收款成功</span>
-          </div>
-        </li>
-      </ul>
-      <div class="fix-count-wrap" v-if="recordList.length">
-        <span class="content">已收总计:<span>{{currencySymbol | currencyFilter}}&nbsp;{{totalMoney}}</span></span>
-        <!--<span class="content">支出总计:<span>{{currencySymbol | currencyFilter}}&nbsp;0</span></span>
-        <p>结余:{{currencySymbol | currencyFilter}}&nbsp;{{totalRecordPrice}} (共计{{recordList.length || 0}}笔交易)</p>-->
-        <p>结余:{{currencySymbol | currencyFilter}}&nbsp;{{totalMoney}} (共计{{recordData.data.data.data.totalElements || 0}}笔交易)</p>
-      </div>
-    </div>
-    <!-- 交易记录end -->
-    <!-- 新增账户弹框start -->
-    <modal-wrapper :noHeader="true" :showModal="showModal" @closeAction="showModal = false">
-      <div class="add-account-modal in-wrapper">
-        <div class="account-modal">
-          <p class="title">新增账户</p>
-          <div class="modal-content-line">
-            <span class="inline-block"><i>*</i>开户名称:</span>
-            <input type="text" placeholder="请填写开户人姓名或企业名称" v-model="bankAccountObj.accountname" @blur="checkAccountname">
-          </div>
-          <div class="modal-content-line">
-            <span class="inline-block"><i>*</i>银行账号:</span>
-            <input type="text" placeholder="请填写银行账号" v-model="bankAccountObj.number" @blur="checkNumber">
-          </div>
-          <div class="modal-content-line">
-            <span class="inline-block"><i>*</i>开户银行:</span>
-            <input type="text" readonly placeholder="例如:中国银行" v-model="bankAccountObj.bankname" @click.stop="showSimilar = !showSimilar">
-            <ul v-if="showSimilar" class="similar">
-              <li class="text-ellipse" v-for="bank in bankList" @click.stop="setBankName(bank)">{{bank}}</li>
-            </ul>
+      <!-- 交易记录end -->
+      <!-- 新增账户弹框start -->
+      <modal-wrapper :noHeader="true" :showModal="showModal" @closeAction="showModal = false">
+        <div class="add-account-modal in-wrapper">
+          <div class="account-modal">
+            <p class="title">新增账户</p>
+            <div class="modal-content-line">
+              <span class="inline-block"><i>*</i>开户名称:</span>
+              <input type="text" placeholder="请填写开户人姓名或企业名称" v-model="bankAccountObj.accountname" @blur="checkAccountname">
+            </div>
+            <div class="modal-content-line">
+              <span class="inline-block"><i>*</i>银行账号:</span>
+              <input type="text" placeholder="请填写银行账号" v-model="bankAccountObj.number" @blur="checkNumber">
+            </div>
+            <div class="modal-content-line">
+              <span class="inline-block"><i>*</i>开户银行:</span>
+              <input type="text" readonly placeholder="例如:中国银行" v-model="bankAccountObj.bankname" @click.stop="showSimilar = !showSimilar">
+              <ul v-if="showSimilar" class="similar">
+                <li class="text-ellipse" v-for="bank in bankList" @click.stop="setBankName(bank)">{{bank}}</li>
+              </ul>
+            </div>
+            <div class="modal-content-line">
+              <span class="inline-block"><i>*</i>开户支行:</span>
+              <input type="text" placeholder="例如:侨香支行" v-model="bankAccountObj.branchname" @blur="checkBranchname">
+            </div>
+            <!--<div class="modal-content-line upload">
+              <span class="inline-block"><i>*</i>上传开户许可证:</span>
+              <input type="text" v-model="file.name" disabled>
+              <label class="upload-btn">选择文件
+                <input type="file" @change="onUpload($event)" accept="image/jpeg,image/jpg,image/png,.pdf">
+              </label>
+            </div>-->
+            <div class="am-btn-wrap">
+              <button @click="showModal = false">取消</button>
+              <button @click="addAccount">确认</button>
+            </div>
+            <p class="am-remind-text clearfix">
+              <i class="fl">*声明:</i>
+              <span class="fr">
+                1. 此账户为卖家收款账户,请仔细核对信息内容,若由信息错误造成的损失,优软商城不承担赔偿责任。
+                <br/>
+                2. 卖家只能有唯一一个“使用中”的收款账户,新增账户审核通过后,原账户将自动失效。
+                <br/>
+                3. 如您的企业名称、开户银行及账号变更,您须在优软商城开展资金结算前进行更正,否则发生转账错误优软商城不承担赔偿责任。
+                <br/>
+                4. 更多的条款请阅读《优软商城代收代付协议》 。
+                <!--<br/>
+                5. 附件仅支持JPG、PNG、PDF格式,大小超过3M。-->
+              </span>
+            </p>
           </div>
-          <div class="modal-content-line">
-            <span class="inline-block"><i>*</i>开户支行:</span>
-            <input type="text" placeholder="例如:侨香支行" v-model="bankAccountObj.branchname" @blur="checkBranchname">
+        </div>
+      </modal-wrapper>
+      <!-- 新增账户弹框end -->
+
+      <!-- 重新使用账户提示框start -->
+      <div class="mobile-modal reuse-account-modal" v-show="showReuseModal">
+        <div class="ra-remind">
+          <div class="header"><i class="iconfont icon-guanbi1" @click="showReuseModal = false"></i></div>
+          <div class="content"><i class="fa fa-exclamation-circle"></i>
+            <span>此操作会让使用中的收款账户失效,是否确定重新使用?</span>
           </div>
-          <!--<div class="modal-content-line upload">
-            <span class="inline-block"><i>*</i>上传开户许可证:</span>
-            <input type="text" v-model="file.name" disabled>
-            <label class="upload-btn">选择文件
-              <input type="file" @change="onUpload($event)" accept="image/jpeg,image/jpg,image/png,.pdf">
-            </label>
-          </div>-->
-          <div class="am-btn-wrap">
-            <button @click="showModal = false">取消</button>
-            <button @click="addAccount">确认</button>
+          <div class="footer">
+            <button @click="showReuseModal = false">取消</button>
+            <button @click="setDefaultAccount()">确认</button>
           </div>
-          <p class="am-remind-text clearfix">
-            <i class="fl">*声明:</i>
-            <span class="fr">
-              1. 此账户为卖家收款账户,请仔细核对信息内容,若由信息错误造成的损失,优软商城不承担赔偿责任。
-              <br/>
-              2. 卖家只能有唯一一个“使用中”的收款账户,新增账户审核通过后,原账户将自动失效。
-              <br/>
-              3. 如您的企业名称、开户银行及账号变更,您须在优软商城开展资金结算前进行更正,否则发生转账错误优软商城不承担赔偿责任。
-              <br/>
-              4. 更多的条款请阅读《优软商城代收代付协议》 。
-              <!--<br/>
-              5. 附件仅支持JPG、PNG、PDF格式,大小超过3M。-->
-            </span>
-          </p>
         </div>
       </div>
-    </modal-wrapper>
-    <!-- 新增账户弹框end -->
+      <!-- 重新使用账户提示框end -->
 
-    <!-- 重新使用账户提示框start -->
-    <div class="mobile-modal reuse-account-modal" v-show="showReuseModal">
-      <div class="ra-remind">
-        <div class="header"><i class="iconfont icon-guanbi1" @click="showReuseModal = false"></i></div>
-        <div class="content"><i class="fa fa-exclamation-circle"></i>
-          <span>此操作会让使用中的收款账户失效,是否确定重新使用?</span>
-        </div>
-        <div class="footer">
-          <button @click="showReuseModal = false">取消</button>
-          <button @click="setDefaultAccount()">确认</button>
-        </div>
-      </div>
+      <remind-box :title="remindText" :timeoutCount="timeoutCount"></remind-box>
+      <pull-up :fixId="'mobileFixContent'" :searchMore="fetching" :allPage="allPage" :page="page" @pullUpAction="onPullUpAction"></pull-up>
+      <empty-status v-if="isEmpty" :text="暂无交易记录" :showLink="true"></empty-status>
     </div>
-    <!-- 重新使用账户提示框end -->
-
-    <remind-box :title="remindText" :timeoutCount="timeoutCount"></remind-box>
-    <pull-up :fixId="'mobileFixContent'" :searchMore="fetching" :allPage="allPage" :page="page" @pullUpAction="onPullUpAction"></pull-up>
-    <empty-status v-if="isEmpty" :text="暂无交易记录" :showLink="true"></empty-status>
   </div>
 </template>
 <script>
@@ -688,6 +698,33 @@
 </script>
 <style lang="scss">
   @import '~assets/scss/mobilePayCenter';
+  .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;

+ 12 - 9
pages/mobile/order/orderbtob.vue

@@ -21,7 +21,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.enName}}</div>
+        <div class="list-title">{{item.enterprise.enName}}</div>
         <div class="clearfix list-content">
           <div class="fl left">
             <div class="item">
@@ -68,7 +68,6 @@
 <script>
   import { RemindBox, PullUp } from '~components/mobile/common'
   export default {
-    name: 'orderbtob',
     layout: 'mobile',
     middleware: 'authenticated',
     data() {
@@ -82,22 +81,25 @@
       }
     },
     created() {
-      this.getResource()
+      this.getResource('')
     },
     methods: {
       goDetails(item) {
         this.$router.push('/mobile/order/orderbtob_details?id=' + item.id)
       },
-      getResource(Reset) {
-        // this.isSearchSearchingMore = false
-        this.$http.get('/sale/orders/info/nosearch', {params: {
+      getResource(Reset, key) {
+        let _url = '/sale/orders/info/nosearch'
+        if (key) {
+          _url = '/sale/orders/info/search'
+        }
+        this.$http.get(_url, {params: {
           _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 => {
-          if (Reset) {
+          if (Reset !== '') {
             this.orderList = []
           }
           res.data.content.forEach(item => {
@@ -105,6 +107,7 @@
             item.orderItems.forEach(order => {
               item.sum += order.qty * order.price
             })
+            item.sum = parseFloat(item.sum).toFixed(2)
           })
           this.orderList.push(...res.data.content)
           this.allPage = Math.floor(res.data.totalElement / 10)
@@ -118,11 +121,11 @@
       },
       getMoreSearch() {
         this.page++
-        this.getResource()
+        this.getResource('')
       },
       searchOrderlist() {
         this.page = 1
-        this.getResource(true)
+        this.getResource(true, this.keyword ? 'keyword' : null)
       }
     },
     components: {