Pārlūkot izejas kodu

Merge branch 'hotfix-201812-wangcz' into dev

gaoxm 7 gadi atpakaļ
vecāks
revīzija
6acc1dc0ef

+ 16 - 2
components/home/count/displayCard.vue

@@ -114,6 +114,20 @@
         }
         return num
       },
+      formatDouble (num) {
+        if (num.toString().indexOf('E') !== -1) {
+          let arr = num.toString().split('E')
+          num = arr[0] * Math.pow(10, arr[1])
+        }
+        if (num > 99999999) {
+          num = (num / 100000000).toFixed(2).slice(num.length - 1, 4) + '亿'
+        } else if (num > 9999) {
+          num = (num / 10000).toFixed(2).slice(num.length - 1, 4) + '万'
+        } else {
+            num += ''
+        }
+        return num
+      },
       goStoreApply: function () {
         if (this.user.logged) {
           if (this.enterprise && this.enterprise.isVendor === 313) {
@@ -138,11 +152,11 @@
       },
       inquirySheet () {
         let sheetNum = this.$store.state.count.inquirySheet.data.count
-        return this.formatNumber(sheetNum, 3)
+        return this.formatDouble(sheetNum)
       },
       inquirySheetLast () {
         let lastSheetNum = this.$store.state.count.inquirySheetLast.data.count
-        return this.formatNumber(lastSheetNum, 4)
+        return this.formatDouble(lastSheetNum)
       },
       all () {
         let count = this.$store.state.supplier.merchant.merchantAll.data

+ 8 - 2
components/mobile/Home.vue

@@ -48,6 +48,11 @@
           </nuxt-link>
         </li>
       </ul>
+
+      <div class="display_card">
+        <statistics-mobile/>
+      </div>
+
       <div class="seek-title">
         <img src="/images/mobile/@2x/applyPurchase/home/seek-title.png" alt="">
         <span>最新求购信息</span>
@@ -75,7 +80,7 @@
 <script>
   import SeekList from './applyPurchase/SeekList.vue'
   import MainSearch from '~/components/mobile/search/MainSearch.vue'
-  import { RemindBox, LoginBox, PullUp } from '~components/mobile/common'
+  import { RemindBox, LoginBox, PullUp, StatisticsMobile } from '~components/mobile/common'
   export default {
     data () {
       return {
@@ -113,7 +118,8 @@
       MainSearch,
       RemindBox,
       LoginBox,
-      PullUp
+      PullUp,
+      StatisticsMobile
     },
     watch: {
       '$store.state.applyPurchase.purchaseManList.purchaseHomeList.data': {

+ 254 - 0
components/mobile/common/StatisticsMobile.vue

@@ -0,0 +1,254 @@
+<template>
+  <div class="statistics">
+    <ul class="list-inline" :style="{top: widthTop + 'rem'}" :class="{no_tran: widthTop == 2.4}">
+      <li v-for="(item, index) in itemData">
+        <span class="title"><i class="icon" :class="'icon' + index" ></i></span>
+        <span class="number" v-if="item.type === 2">
+          <span v-html="formatDouble(item.count)"></span>
+          <span class="unit">条</span>
+        </span>
+        <span class="number" v-else>
+          <span v-html="formatNumber(item.count, index)"></span>
+          <span class="unit" v-if="item.type === 3">家</span>
+        </span>
+      </li>
+    </ul>
+  </div>
+</template>
+<script>
+  export default {
+    name: 'StatisticsView',
+    data () {
+      return {
+        step: 1,
+        widthTop: 0,
+        timerIndex: 0,
+        timer: {}, // 定时器实体
+        imgbox: {
+            'src': ''
+        }
+      }
+    },
+    mounted () {
+      this.$nextTick(() => {
+        this.changeInterval()
+      })
+    },
+    methods: {
+      changeInterval () {
+        setInterval(() => {
+          this.widthTop += -0.6
+          if (this.widthTop === -2.4) {
+            this.widthTop = 0
+          }
+        }, 3000)
+      },
+      formatNumber (num, type) {
+        if (num.toString().indexOf('E') !== -1) {
+          let arr = num.toString().split('E')
+          num = arr[0] * Math.pow(10, arr[1])
+        }
+        if (num > 99999999) {
+          let str2 = num.toString()
+          num = Math.floor(num / 100000000)
+          if (parseInt(str2.charAt(str2.length - 8)) > 8) {
+            num = num + 1
+          }
+          num = num + '<span style="color: #333">亿</span>'
+        } else if (num > 9999) {
+          let str = num.toString()
+          num = Math.floor(num / 10000)
+          if (parseInt(str.charAt(str.length - 4)) > 4) {
+            num = num + 1
+          }
+          num += '<span style="color: #333">万</span>'
+        } else {
+          if (type === 6 || type === 7) {
+            num += '<span style="color: #333">元</span>'
+          } else {
+            num += ''
+          }
+        }
+        return num
+      },
+      formatDouble (num) {
+        console.log(11)
+        if (num.toString().indexOf('E') !== -1) {
+          let arr = num.toString().split('E')
+          num = arr[0] * Math.pow(10, arr[1])
+        }
+        if (num > 99999999) {
+          num = (num / 100000000).toFixed(2).slice(num.length - 1, 4) + '<span style="color: #333">亿</span>'
+        } else if (num > 9999) {
+          num = (num / 10000).toFixed(2).slice(num.length - 1, 4) + '<span style="color: #333">万</span>'
+        } else {
+          num += ''
+        }
+        return num
+      }
+    },
+    computed: {
+      allCount () {
+        return this.$store.state.count.allCount.data
+      },
+      inquirySheet () {
+        let sheetNum = this.$store.state.count.inquirySheet.data.count
+        return this.formatDouble(sheetNum)
+      },
+      inquirySheetLast () {
+        let lastSheetNum = this.$store.state.count.inquirySheetLast.data.count
+        return this.formatDouble(lastSheetNum)
+      },
+      all () {
+        let count = this.$store.state.supplier.merchant.merchantAll.data
+        return count.content ? count.totalElements : '0'
+      },
+      counts () {
+        return this.$store.state.product.common.counts
+      },
+      itemData () {
+        let str = []
+        if (this.counts.data) {
+          this.counts.data.forEach((value, key, $data) => {
+            str.push({id: $data[key].item, count: $data[key].count, type: 1})
+          })
+        }
+        str.push({id: '供应商', count: this.all ? this.all : 0, type: 3})
+        str.push({id: '本月询价单', count: this.$store.state.count.inquirySheet.data ? this.$store.state.count.inquirySheet.data.count : 0, type: 2})
+        str.push({id: '上月询价单', count: this.$store.state.count.inquirySheetLast.data ? this.$store.state.count.inquirySheetLast.data.count : 0, type: 2})
+        if (this.allCount) {
+          this.allCount.forEach((value, key, $data) => {
+            str.push({id: $data[key].item, count: $data[key].count, type: 1})
+          })
+        }
+        str = [str[1], str[2], str[0], ...str.slice(3, 6), str[7], str[6]]
+        return str
+      }
+    }
+  }
+</script>
+<style lang="scss" scoped>
+  .statistics{
+    position:relative;
+    height: .6rem;
+    border-radius:.3rem;
+    background: #fff;
+    margin:0 .05rem .2rem;
+    overflow: hidden;
+    ul{
+      position:absolute;
+      transition: .5s all linear;
+      &:no_tran{
+        transition:none;
+      }
+      li{
+        width:50%;
+        height:.6rem;
+        line-height: .6rem;
+        /*padding: 0 .3rem;*/
+        /*text-align: center;*/
+        font-size: .28rem;
+        font-weight: bold;
+        white-space: nowrap;
+        overflow: hidden;
+        vertical-align:top;
+        &:nth-child(odd){
+          &::after{
+            content: '';
+            display: inline-block;
+            width: 0.02rem;
+            height: 0.3rem;
+            background-color: #9c9c9c;
+            position: relative;
+            top: 3px;
+          }
+        }
+        span{
+          &.title{
+            display: inline-block;
+            width: 1.85rem;
+            height:.6rem;
+            line-height: .6rem;
+            vertical-align:middle;
+            margin-left: 0.15rem;
+
+            i{
+              &.icon{
+                display: inline-block;
+                width: 100%;
+                height: .6rem;
+              }
+              &.icon0{
+                background:url('/images/mobile/@2x/home/count1.jpg') right no-repeat;
+                background-size: auto 0.3rem;
+              }
+              &.icon1{
+                background:url('/images/mobile/@2x/home/count2.jpg') right no-repeat;
+                background-size: auto 0.3rem;
+              }
+              &.icon2{
+                background:url('/images/mobile/@2x/home/count3.jpg') right no-repeat;
+                background-size: auto 0.3rem;
+              }
+              &.icon3{
+                background:url('/images/mobile/@2x/home/count4.jpg') right no-repeat;
+                background-size: auto 0.3rem;
+              }
+              &.icon4{
+                background:url('/images/mobile/@2x/home/count5.jpg') right no-repeat;
+                background-size: auto 0.3rem;
+              }
+              &.icon5{
+                background:url('/images/mobile/@2x/home/count6.jpg') right no-repeat;
+                background-size: auto 0.3rem;
+              }
+              &.icon6{
+                background:url('/images/mobile/@2x/home/count7.jpg') right no-repeat;
+                background-size: auto 0.3rem;
+              }
+              &.icon7{
+                background:url('/images/mobile/@2x/home/count8.jpg') right no-repeat;
+                background-size: auto 0.3rem;
+              }
+            }
+          }
+          &.number{
+            display: inline-block;
+            color:red;
+            width: 1.6rem;
+            font-size: 0.32rem;
+            height: .6rem;
+            vertical-align:middle;
+            padding-left: 0.14rem;
+            line-height:.6rem;
+            .unit{
+              color: #333;
+            }
+          }
+        }
+        &:nth-child(2), &:nth-child(4){
+          span{
+            &.title{
+              width: 1.4rem;
+            }
+          }
+        }
+        &:nth-child(6){
+          span{
+            &.title{
+              width: 1.83rem;
+              margin-left: 0rem;
+            }
+          }
+        }
+        &:nth-child(8){
+          span{
+            &.title{
+              width: 1.3rem;
+            }
+          }
+        }
+      }
+    }
+  }
+</style>

+ 2 - 1
components/mobile/common/index.js

@@ -4,4 +4,5 @@ import LoginBox from './LoginBox.vue'
 import userHeader from './userHeader.vue'
 import PullUp from './PullUp.vue'
 import EmptyStatus from './EmptyStatus.vue'
-export { Loading, RemindBox, LoginBox, userHeader, PullUp, EmptyStatus }
+import StatisticsMobile from './StatisticsMobile.vue'
+export { Loading, RemindBox, LoginBox, userHeader, PullUp, EmptyStatus, StatisticsMobile }

+ 4 - 0
pages/index.vue

@@ -115,6 +115,10 @@
         store.dispatch('applyPurchase/loadPurchaseManList', {pageNumber: 1, pageSize: 50, enUU: store.state.option.user.data.enterprise ? store.state.option.user.data.enterprise.uu : null}),
         store.dispatch('loadStoreStatus', { op: 'check' })
       ]) : Promise.all([
+        store.dispatch('supplier/loadVendorAll', {page: 1, size: 20}),
+        store.dispatch('loadAllCount', {_status: 'actived', usedFor: 'mall_home_banner'}),
+        store.dispatch('loadInquirySheet', {year: nowYear, month: nowMonth}),
+        store.dispatch('loadInquirySheetLast', {year: nowYear, month: LastMonth}),
         store.dispatch('applyPurchase/loadMobileHomeList', {pageNumber: 1, pageSize: 5, enUU: store.state.option.user.data.enterprise ? store.state.option.user.data.enterprise.uu : null})
       ])
     },

BIN
static/images/mobile/@2x/home/count1.jpg


BIN
static/images/mobile/@2x/home/count2.jpg


BIN
static/images/mobile/@2x/home/count3.jpg


BIN
static/images/mobile/@2x/home/count4.jpg


BIN
static/images/mobile/@2x/home/count5.jpg


BIN
static/images/mobile/@2x/home/count6.jpg


BIN
static/images/mobile/@2x/home/count7.jpg


BIN
static/images/mobile/@2x/home/count8.jpg


BIN
static/images/mobile/@2x/home/mobile-count.png


BIN
static/images/mobile/@2x/mobile-count.png