Browse Source

处理应付优化

wangcz 7 years ago
parent
commit
e5585c0bc7

File diff suppressed because it is too large
+ 840 - 69
pages/mobile/center/user/btobarCheck.vue


+ 583 - 0
pages/mobile/center/user/oldBtobarCheck.vue

@@ -0,0 +1,583 @@
+<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.recordDate | time}}</span>
+            </div>
+            <div class="invoice-btob-wrapper-middle">
+              <div class="invoice-btob-wrapper-middle-title">{{item.vendorName}}</div>
+              <div><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>{{item.checkAmount | toFixedNum}}</div>
+              <div><span>对账人:</span>{{item.recorder}}</div>
+              <!--<div><span>明细条目:</span>{{item.items.length}}条</div>-->
+              <!--<div><span>商品总数:</span>{{item.getTotalProd}}</div>-->
+              <div><span>对账结果:</span>
+                <span v-if="item.checkStatus === '未对账'">-</span>
+                <span v-else v-text="item.checkStatus"></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.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
+          }
+        }
+      },
+      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  - 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>

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

@@ -225,8 +225,8 @@
             <label class="mobile-cart-check" :class="{active: !isCheckAll}"></label>全选
          </span>
         <div class="fr bbgoresult" @click="goTopayfor" v-show="!isShowApcheckList.showApcheck">对账</div>
-        <div class="fr" style="margin-right: 0.2rem" v-show="!isShowApcheckList.showApcheck">合计:<a style="color: #001408;">{{allMoney}}</a></div>
-        <div class="fl" style="margin-left: 0.2rem" v-show="isShowApcheckList.showApcheck">合计:<a style="color: #001408;">{{allMoney}}</a></div>
+        <div class="fr" style="margin-right: 0.2rem" v-show="!isShowApcheckList.showApcheck">合计:<a style="color: #001408;">{{allMoney | priceFilter}}</a></div>
+        <div class="fl" style="margin-left: 0.2rem" v-show="isShowApcheckList.showApcheck">合计:<a style="color: #001408;">{{allMoney | priceFilter}}</a></div>
         <div class="fr bbgoresult" v-show="isShowApcheckList.showApcheck" @click="submitCheck">提交</div>
         <div class="fr bbgoresult cancel" v-show="isShowApcheckList.showApcheck" @click="deleteCheck">取消</div>
       </div>

Some files were not shown because too many files changed in this diff