Browse Source

新增移动端我的界面

shenjj 7 years ago
parent
commit
da75f96018

+ 3 - 0
components/mobile/common/userHeader.vue

@@ -51,6 +51,9 @@
         this.showEnterpriseToggle = false
         this.$http.get(`/user/authentication/${en.uu}`).then(() => {
           this.$store.dispatch('loadUserInfo')
+          this.$store.dispatch('loadStoreStatus', { op: 'check' }).then(() => {
+            this.$emit('updateLoad')
+          })
         })
       },
       setShowEnterpriseToggle(flag, e) {

+ 1 - 1
nuxt.config.js

@@ -1,6 +1,6 @@
 const path = require('path')
 const isProdMode = Object.is(process.env.NODE_ENV, 'production')
-const baseUrl = process.env.BASE_URL || (isProdMode ? 'http://api.usoftmall.com/' : 'http://10.1.51.124:8080/platform-b2c')
+const baseUrl = process.env.BASE_URL || (isProdMode ? 'http://api.usoftmall.com/' : 'http://192.168.253.121:9090/platform-b2c')
 const commonUrl = process.env.COMMON_URL || (isProdMode ? 'https://api-inquiry.usoftmall.com/' : 'http://218.17.158.219:24000/')
 const materialUrl = process.env.MATERIAL_URL || (isProdMode ? 'https://api-product.usoftmall.com/' : 'http://218.17.158.219:24000/')
 

+ 747 - 11
pages/mobile/user/index.vue

@@ -1,39 +1,494 @@
 <template>
   <div class="user-content mobile-content">
-    <user-header></user-header>
+    <user-header @updateLoad="updateEnterpriseInfo"></user-header>
     <ul class="switch-list">
-      <li :class="{active: activeType == 'seek'}" @click="activeType = 'seek'">店铺管理</li>
-      <li :class="{active: activeType == 'comp'}" @click="activeType = 'comp'">账户管理</li>
+      <li :class="{active: activeType === 'store'}" @click="swtichTab('store')">店铺管理</li>
+      <li :class="{active: activeType === 'Account'}" @click="swtichTab('Account')">账户管理</li>
     </ul>
+    <!-- 店铺管理 -->
+    <template v-if="activeType === 'store'">
+      <template v-if="storeInfo.storeName">
+        <div class="topinfo clearfix">
+          <div class="pull-left">
+            店铺信息
+          </div>
+          <div class="pull-right" @click="updateInfo()" v-show="storeState === 'look'">
+            <img src="/images/vendor/edit.png"/>
+            编辑
+          </div>
+        </div>
+        <ul class="infoul">
+          <li class="clearfix" :class="{border:  storeState !== 'look'}">
+            <div class="name pull-left" :class="{update: storeState !== 'look'}">店铺名称:</div>
+            <div class="text pull-left" v-if="storeState === 'look'">
+              {{storeInfo.storeName || '-'}}
+            </div>
+            <div v-else class="text pull-left">
+              <input v-model="storeInfo.storeName" type="text"/>
+            </div>
+          </li>
+          <li class="clearfix" :class="{border:  storeState !== 'look'}">
+            <div class="name pull-left" :class="{update: storeState !== 'look'}">简介:</div>
+            <div class="text pull-left clearfix" v-if="storeState === 'look'">
+              {{Islook ? dealWithText(storeInfo.description) : dealWithText()}}
+              <a class="pull-right" @click="dealWithText()" v-show="Islook">全部<img src="/images/store/default/openblack.png"/></a>
+            </div>
+            <div class="text pull-left" v-else>
+              <textarea v-model="storeInfo.description">
 
+              </textarea>
+            </div>
+          </li>
+          <li class="clearfix" :class="{border:  storeState !== 'look'}">
+            <div class="name pull-left" :class="{update: storeState !== 'look'}">企业地址:</div>
+            <div class="text pull-left" v-if="storeState === 'look'">
+              {{storeInfo.enterprise.address || '-'}}
+            </div>
+            <div v-else class="text pull-left">
+              <input v-model="storeInfo.enterprise.address" type="text"/>
+            </div>
+          </li>
+          <li class="clearfix" :class="{border:  storeState !== 'look'}">
+            <div class="name pull-left" :class="{update: storeState !== 'look'}">电话:</div>
+            <div class="text pull-left" v-if="storeState === 'look'">
+              {{storeInfo.enterprise.enTel || '暂无信息'}}
+            </div>
+            <div v-else class="text pull-left">
+              <input v-model="storeInfo.enterprise.enTel" type="text"/>
+            </div>
+          </li>
+          <li class="clearfix" :class="{border:  storeState !== 'look'}">
+            <div class="name pull-left" :class="{update: storeState !== 'look'}">传真:</div>
+            <div class="text pull-left" v-if="storeState === 'look'">
+              {{storeInfo.enterprise.enFax || '暂无信息'}}
+            </div>
+            <div v-else class="text pull-left">
+              <input v-model="storeInfo.enterprise.enFax" type="text"/>
+            </div>
+          </li>
+          <li class="clearfix" :class="{border:  storeState !== 'look'}">
+            <div class="name pull-left" :class="{update: storeState !== 'look'}">手机:</div>
+            <div class="text pull-left" v-if="storeState === 'look'">
+              {{storeInfo.enterprise.enPhone || '暂无信息'}}
+            </div>
+            <div v-else class="text pull-left">
+              <input v-model="storeInfo.enterprise.enPhone" type="text"/>
+            </div>
+          </li>
+          <li class="clearfix" :class="{border:  storeState !== 'look'}">
+            <div class="name pull-left" :class="{update: storeState !== 'look'}">微信:</div>
+            <div class="text pull-left" v-if="storeState === 'look'">
+              {{storeInfo.enterprise.enWeixin || '暂无信息'}}
+            </div>
+            <div v-else class="text pull-left">
+              <input v-model="storeInfo.enterprise.enWeixin" type="text"/>
+            </div>
+          </li>
+          <li class="clearfix" :class="{border:  storeState !== 'look'}">
+            <div class="name pull-left" :class="{update: storeState !== 'look'}">QQ:</div>
+            <div class="text pull-left" v-if="storeState === 'look'">
+              {{storeInfo.enterprise.enQQ || '暂无信息'}}
+            </div>
+            <div v-else class="text pull-left">
+              <input v-model="storeInfo.enterprise.enQQ" type="text"/>
+            </div>
+          </li>
+        </ul>
+        <div class="save" @click="storeInfosave()" v-if="storeState !== 'look'">保存</div>
+      </template>
+      <template v-else>
+        <div class="none-state">
+          <img src="/images/mobile/@2x/empty-collect.png">
+          <p v-text="getRemindText"></p>
+          <nuxt-link to="/">返回首页</nuxt-link>
+        </div>
+      </template>
+    </template>
+    <!-- /end 店铺管理 -->
+
+    <!-- 账户管理 -->
+    <template v-else>
+      <div class="topinfo clearfix">
+        <div class="pull-left">
+          企业信息
+        </div>
+        <div class="pull-right" @click="updateInfo()" v-show="storeState === 'look' && enterpriseInfo.enName">
+          <img src="/images/vendor/edit.png"/>
+          编辑
+        </div>
+      </div>
+      <ul class="infoul infoul2">
+        <li class="clearfix" :class="{noupdate:  storeState !== 'look'}">
+          <div class="name pull-left" :class="{update: storeState !== 'look'}">企业名称:</div>
+          <div class="text pull-left" :class="{update: storeState !== 'look'}">
+            {{enterpriseInfo.enName || '-'}}
+          </div>
+        </li>
+
+        <li class="clearfix" :class="{noupdate:  storeState !== 'look', border:  storeState !== 'look'}">
+          <div class="name pull-left" :class="{update: storeState !== 'look'}">营业执照号:</div>
+          <div class="text pull-left" :class="{update: storeState !== 'look'}">
+            {{enterpriseInfo.enBussinessCode || '-'}}
+          </div>
+        </li>
+
+        <li class="clearfix" :class="{border:  storeState !== 'look'}">
+          <div class="name pull-left" :class="{update: storeState !== 'look'}">注册地址:</div>
+          <div class="text pull-left" v-if="storeState === 'look'">
+            {{enterpriseInfo.enAddress || '-'}}
+          </div>
+          <div v-else class="text pull-left">
+            <input v-model="enterpriseInfo.enAddress" type="text"/>
+          </div>
+        </li>
+
+        <li class="clearfix" :class="{border:  storeState !== 'look'}">
+          <div class="name pull-left" :class="{update: storeState !== 'look'}">官网地址:</div>
+          <div class="text pull-left" v-if="storeState === 'look'">
+            {{enterpriseInfo.enUrl || '-'}}
+          </div>
+          <div v-else class="text pull-left">
+            <input v-model="enterpriseInfo.enUrl" type="text"/>
+          </div>
+        </li>
+
+        <li class="clearfix" :class="{border:  storeState !== 'look'}">
+          <div class="name pull-left" :class="{update: storeState !== 'look'}">所属行业:</div>
+          <div class="text pull-left" v-if="storeState === 'look'">
+            {{enterpriseInfo.enIndustry || '-'}}
+          </div>
+          <div v-else class="text pull-left clearfix">
+            <input v-model="enterpriseInfo.enIndustry" type="text" style="width: 4.5rem"/>
+            <img src="/images/store/default/openblackR.png" class="moreIcon pull-right" @click="isShowTypeAlert = true"/>
+          </div>
+        </li>
+
+        <li class="clearfix" :class="{border:  storeState !== 'look'}">
+          <div class="name pull-left" :class="{update: storeState !== 'look'}">经营范围:</div>
+          <div class="text pull-left" v-if="storeState === 'look'" >
+            <span v-for="item in scopeLabel" class="label">
+              {{item}}
+            </span>
+            <span class="text pull-left nolabel"  v-if="scopeLabel.length == 0">
+              无标签信息
+            </span>
+          </div>
+          <div v-else class="text pull-left">
+            <label v-for="item in scopeLabel" class="labelKuang" v-show="AddBtnShow">
+              <span class="Updatelabel">
+                {{item}}
+              </span>
+              <span class="updatespan"@click="addBtn(item)">编辑</span>
+            </label>
+            <span class="addBtn" v-show="AddBtnShow" @click="addBtn()"></span>
+            <div class="commit" v-show="!AddBtnShow">
+              <input type="text" placeholder="请输入不大于10个字符" class="inputText" v-model="labelText"/>
+              <button @click="saveLabel()">确定</button>
+            </div>
+          </div>
+        </li>
+      </ul>
+      <template v-if="storeState === 'look'">
+        <div class="topinfo clearfix" style="color: #999;border-top: 1px solid #b4b4b4">
+            个人信息
+        </div>
+        <ul class="infoul infoul2" style="color: #999">
+          <li class="clearfix">
+            <div class="name pull-left">用户名:</div>
+            <div class="text pull-left">
+              {{userInfo.userName || '-'}}
+            </div>
+          </li>
+          <li class="clearfix">
+            <div class="name pull-left">邮箱:</div>
+            <div class="text pull-left">
+              {{userInfo.userEmail || '-'}}
+            </div>
+          </li>
+          <li class="clearfix">
+            <div class="name pull-left">手机:</div>
+            <div class="text pull-left">
+              {{userInfo.userTel || '-'}}
+            </div>
+          </li>
+        </ul>
+
+        <div class="topinfo clearfix" style="color: #999;border-top: 1px solid #b4b4b4">
+          管理员信息
+        </div>
+        <ul class="infoul infoul2" style="color: #999">
+          <li class="clearfix">
+            <div class="name pull-left">姓名:</div>
+            <div class="text pull-left">
+              {{admininfo.userName || '-'}}
+            </div>
+          </li>
+          <li class="clearfix">
+            <div class="name pull-left">手机号:</div>
+            <div class="text pull-left">
+              {{admininfo.userTel || '-'}}
+            </div>
+          </li>
+          <li class="clearfix">
+            <div class="name pull-left">邮箱:</div>
+            <div class="text pull-left">
+              {{admininfo.userEmail || '-'}}
+            </div>
+          </li>
+        </ul>
+      </template>
+      <div class="save" @click="storeInfosave()" v-if="storeState !== 'look'">保存</div>
+    </template>
+    <!-- /end 账户管理 -->
+
+    <!-- 选择行业弹窗 -->
+    <div class="mobile-modal" v-show="isShowTypeAlert">
+      <div class="modal-content">
+        <div class="content-title">
+          所属行业
+          <i class="el-icon-close" @click="isShowTypeAlert = false"></i>
+        </div>
+        <div class="content-title-label clearfix" >
+          <div v-for="(item, index) in ContentTitleArray" @click="chooseTitle(index)">
+            <a>{{item}}</a>
+          </div>
+        </div>
+        <div class="content-info" v-if="TypeListShow.firstListShow">
+          <div v-for="(item, index) in TypeList.firstList" class="content-info-item" :class="{active: index === TypeListActive.firstListActive}"  @click="chooseItem('firstList', item, index)" >
+            {{item}}<img src="/images/mobile/@2x/getlabel_icon.png" v-show="index === TypeListActive.firstListActive"/>
+          </div>
+        </div>
+        <div class="content-info" v-if="TypeListShow.secondsListShow">
+          <div v-for="(item, index) in TypeList.secondsList" class="content-info-item" :class="{active: index === TypeListActive.secondsListActive}"  @click="chooseItem('secondsList', item, index)" >
+            {{item}}
+            <img src="/images/mobile/@2x/getlabel_icon.png" v-show="index === TypeListActive.secondsListActive"/>
+          </div>
+        </div>
+        <div class="content-info" v-if="TypeListShow.threetListShow">
+          <div v-for="(item, index) in TypeList.threetList" class="content-info-item" :class="{active: index === TypeListActive.threetListActive}"  @click="chooseItem('threetList', item, index)" >
+            {{item}}
+            <img src="/images/mobile/@2x/getlabel_icon.png" v-show="index === TypeListActive.threetListActive"/>
+          </div>
+
+        </div>
+      </div>
+    </div>
+    <!-- /end 选择行业弹窗 -->
+    <remind-box :title="collectResult" :timeoutCount="timeoutCount"></remind-box>
+    <!--<loading v-show="isSearchSearchingMore"></loading>-->
   </div>
 </template>
 
 <script>
-  import { userHeader } from '~components/mobile/common'
+  import { userHeader, RemindBox, Loading } from '~components/mobile/common'
   export default {
     layout: 'mobile',
     middleware: 'authenticated',
     data () {
       return {
-        activeType: 'seek'
+        activeType: 'store',
+        splitText: '', // 省略号文本
+        normalText: '', // 原来文本
+        Islook: true,
+        storeState: 'look',
+        admininfo: {}, // 管理员信息
+        AddBtnShow: true,
+        labelText: '',
+        scopeLabel: [],
+        ContentTitleArray: [], // 行业数组
+        isSearchSearchingMore: false,
+        collectResult: '',
+        timeoutCount: 0,
+        isShowTypeAlert: false, // 是否现在所属行业弹窗
+        TypeList: {
+          firstList: [],
+          secondsList: [],
+          threetList: []
+        },
+        TypeListActive: {
+          firstListActive: '',
+          secondsListActive: '',
+          threetListActive: ''
+        },
+        TypeListShow: {
+          firstListShow: true,
+          secondsListShow: false,
+          threetListShow: false
+        },
+        TypeObj: {}
       }
     },
     components: {
-      userHeader
+      userHeader,
+      RemindBox,
+      Loading
     },
     fetch ({ store, route }) {
+      return Promise.all([
+        store.dispatch('loadStoreStatus', { op: 'check' })
+      ])
       // let user = store.state.option.user.data
     },
     mounted: function () {
       this.$nextTick(() => {
-        window.addEventListener('scroll', this.scroll, false)
-        document.body.addEventListener('click', () => {
-          this.setShowEnterpriseToggle(false)
-        }, false)
+        this.$http.get('/data/profession.json').then(response => {
+          this.TypeObj = response.data
+          for (let i of Object.keys(response.data)) {
+            this.TypeList.firstList.push(i)
+          }
+        })
       })
     },
+    computed: {
+      getRemindText: function () {
+        return '您的账户暂未开通卖家中心,请前往pc端申请开通!'
+      },
+      storeInfo() {
+        console.log(this.$store.state.option.storeStatus.data)
+        let str = JSON.stringify(this.$store.state.option.storeStatus.data)
+        return JSON.parse(str)
+      },
+      enterpriseInfo() {
+        // return this.$store.state.supplier.material.enUser.data
+        let str = JSON.stringify(this.$store.state.supplier.material.enUser.data)
+        return JSON.parse(str)
+      },
+      userInfo() {
+        return this.$store.state.option.user.data
+      }
+    },
     methods: {
+      chooseTitle(key) {
+        if (key === 0) {
+          this.TypeListShow = {
+            firstListShow: true,
+              secondsListShow: false,
+              threetListShow: false
+          }
+        } else if (key === 1) {
+          this.TypeListShow = {
+            firstListShow: false,
+            secondsListShow: true,
+            threetListShow: false
+          }
+        } else if (key === 2) {
+          this.TypeListShow = {
+            firstListShow: false,
+            secondsListShow: true,
+            threetListShow: false
+          }
+        }
+      },
+      chooseItem(listIndex, key, index) {
+        if (listIndex === 'firstList') {
+          this.TypeListActive.firstListActive = index
+          this.ContentTitleArray[0] = key
+          this.TypeList.secondsList = []
+
+          if (this.TypeObj[key] instanceof Array) {
+            this.TypeList.secondsList = this.TypeObj[key]
+          } else {
+            for (let i of Object.keys(this.TypeObj[key])) {
+              this.TypeList.secondsList.push(i)
+            }
+          }
+          this.TypeListShow = {
+            firstListShow: false,
+            secondsListShow: true,
+            threetListShow: false
+          }
+          this.TypeListActive.secondsListActive = ''
+          this.TypeListActive.threetListActive = ''
+          for (let i = 1; i < this.ContentTitleArray.length; i++) {
+            this.ContentTitleArray.splice(i, 1)
+          }
+        } else if (listIndex === 'secondsList') {
+          this.TypeList.threetList = []
+          this.TypeListActive.secondsListActive = index
+          this.TypeListActive.threetListActive = ''
+          this.ContentTitleArray[1] = key
+          if (this.TypeObj[this.ContentTitleArray[0]][key] instanceof Array) {
+            this.TypeList.threetList = this.TypeObj[this.ContentTitleArray[0]][key] ? this.TypeObj[this.ContentTitleArray[0]][key] : []
+          }
+          for (let i = 2; i < this.ContentTitleArray.length; i++) {
+            this.ContentTitleArray.splice(i, 1)
+          }
+          if (this.TypeList.threetList.length > 0) {
+            this.TypeListShow = {
+              firstListShow: false,
+              secondsListShow: false,
+              threetListShow: true
+            }
+          } else {
+            this.enterpriseInfo.enIndustry = key
+            this.isShowTypeAlert = false
+            this.TypeListShow = {
+              firstListShow: true,
+              secondsListShow: false,
+              threetListShow: false
+            }
+          }
+        } else if (listIndex === 'threetList') {
+          this.TypeListActive.threetListActive = index
+          this.ContentTitleArray[2] = key
+          this.enterpriseInfo.enIndustry = key
+          this.isShowTypeAlert = false
+          this.TypeListShow = {
+            firstListShow: true,
+            secondsListShow: false,
+            threetListShow: false
+          }
+        }
+      },
+      addBtn(text) {
+        if (text !== undefined) {
+          this.labelText = text
+        }
+        this.AddBtnShow = false
+      },
+      saveLabel() {
+        this.AddBtnShow = true
+        if (this.labelText === '') {
+          return false
+        }
+        if (this.enterpriseInfo.enBusinessScope.trim() === '') {
+          this.enterpriseInfo.enBusinessScope += this.labelText
+        } else {
+          this.enterpriseInfo.enBusinessScope += ',' + this.labelText
+        }
+        this.labelText = ''
+        this.scopeLabel = this.enterpriseInfo.enBusinessScope.split(',')
+        // this.enterpriseInfo.enBusinessScope.push(this.labelText)
+      },
+      swtichTab(_tp) {
+        this.activeType = _tp
+        this.storeState = 'look'
+        this.isSearchSearchingMore = true
+        this.updateEnterpriseInfo()
+      },
+      updateEnterpriseInfo() {
+        this.admininfo = {}
+        this.$store.dispatch('supplier/loadEnUser', {enUU: this.storeInfo.enUU, filter: 'enUU'}).then(() => {
+          this.scopeLabel = this.enterpriseInfo.enBusinessScope ? this.enterpriseInfo.enBusinessScope.split(',') : []
+          this.$http.get(`/basic/user/getUserByUU?uu=${this.enterpriseInfo.enAdminuu}`).then(res => {
+            this.admininfo = res.data
+            this.isSearchSearchingMore = false
+          })
+        })
+      },
+      updateInfo() {
+        this.storeState = 'update'
+      },
+      dealWithText(_T) {
+        if (_T) {
+          // 文本处理
+          this.normalText = _T
+          return _T.substr(0, 140) + '...'
+        } else {
+          this.Islook = false
+          return this.normalText
+        }
+      },
       scroll: function () {
         // let scrolled = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop
         if (this.$refs.searchSeekInput && this.$store.state.mobile.InputGetFocus) {
@@ -49,6 +504,27 @@
         setTimeout(() => {
           this.$store.dispatch('mobile/SetInputGetFocus', true)
         }, 300)
+      },
+      storeInfosave() {
+        if (this.activeType === 'store') {
+          let kay = {
+            description: this.storeInfo.description,
+            enterprise: this.storeInfo.enterprise,
+            storeName: this.storeInfo.storeName,
+            storeShortName: this.storeInfo.storeShortName
+          }
+          this.$http.put(`/store-service/stores/${this.storeInfo.uuid}?kind=BASIC_INFO`, kay).then(res => {
+            this.collectResult = '删除成功'
+            this.timeoutCount++
+            this.storeState = 'look'
+          })
+        } else {
+          this.$http.post(`/basic/enterprise/${this.storeInfo.enUU}/info`, this.enterpriseInfo).then(res => {
+            this.collectResult = '删除成功'
+            this.timeoutCount++
+            this.storeState = 'look'
+          })
+        }
       }
     }
   }
@@ -56,7 +532,7 @@
 
 <style scoped lang="scss">
   .user-content{
-    margin-bottom: .98rem;
+    margin-bottom: 1.4rem;
     ul.switch-list {
       li {
         display: inline-block;
@@ -87,5 +563,265 @@
         }
       }
     }
+    .topinfo {
+      color: #333;
+      font-size: 0.28rem;
+      height: 0.8rem;
+      line-height: 0.8rem;
+      padding: 0 0.24rem;
+      border-bottom: 1px solid #b4b4b4;
+      .pull-right {
+        color: #999;
+        font-size: 0.26rem;
+        img {
+          width: 0.34rem;
+          height: 0.34rem;
+        }
+      }
+    }
+    .infoul {
+      color: #666;
+      font-size: 0.28rem;
+      li {
+        padding: 0.15rem 0.24rem;
+        line-height: 1.3;
+        &.border {
+          border-bottom: 1px solid #b4b4b4;
+        }
+        &.noupdate {
+          background: #fafafa;
+        }
+      }
+      .name {
+        width: 1.6rem;
+        text-align: right;
+      }
+      .text {
+        width: 5.4rem;
+      }
+      .update {
+        padding: 0.06rem 0 0.06rem 0rem;
+      }
+      input {
+        width: 5.4rem;
+        border: 0px solid #b4b4b4;
+        padding: 0.06rem 0 0.06rem 0.12rem;
+      }
+      textarea{
+        width: 5.4rem;
+        padding: 0.06rem 0 0.06rem 0.12rem;
+        min-height: 5rem;
+        resize: none;
+        border: 0px solid #b4b4b4;
+      }
+    }
+    .save {
+      border-radius: 3px;
+      width: 90%;
+      color: #fff;
+      text-align: center;
+      height: .77rem;
+      line-height: 0.77rem;
+      background: #3e82f5;
+      margin: 0.15rem auto 0.4rem;
+    }
+    .infoul2 {
+      .name {
+        width: 1.7rem;
+      }
+      .text {
+        width: 5.3rem;
+      }
+      input {
+        width: 5.3rem;
+      }
+      .nolabel {
+        position: relative;
+        width: auto;
+        padding: 0 3px;
+        margin: 0 3px;
+        background: #f2f3f7;
+        border-radius: 5px;
+        text-align: center;
+        color: #666;
+        font-size: 0.12rem;
+      }
+      .label {
+        width: auto;
+        padding: 2px 4px;
+        margin: 0.06rem 3px 0 3px;
+        background: #5078cb;
+        border-radius: 5px;
+        text-align: center;
+        color: #fff;
+        font-size: 0.12rem;
+        display: inline-block;
+        vertical-align: top;
+      }
+      .labelKuang {
+        background: #fff;
+        border: 1px solid #b4b4b4;
+        border-radius: 3px;
+        overflow: hidden;
+        height: 0.53rem;
+        line-height: 0.53rem;
+        display: inline-block;
+        vertical-align: top;
+        margin: 0px 3px 3px 3px;
+      }
+      .Updatelabel {
+        padding: 0 4px;
+        color: #666;
+        font-size: 0.26rem;
+        height: 100%;
+        display: inline-block;
+      }
+      .updatespan {
+        background: #353535;
+        color: #fff;
+        font-size: 0.26rem;
+        padding:0 2px;
+        height: 100%;
+        display: inline-block;
+      }
+      .addBtn {
+        background-image: url('/images/mobile/@2x/addBtn.png');
+        background-size: 100% 100%;
+        width: 1.4rem;
+        height: 0.54rem;
+        display: inline-block;
+      }
+      .commit {
+
+      }
+      .inputText {
+        width: 4.4rem;
+        border-top-left-radius: 3px;
+        border-bottom-left-radius: 3px;
+        border: 1px solid #b4b4b4;
+        height: 0.62rem;
+        line-height: 0.62rem;
+        vertical-align: top;
+        display: inline-block;
+      }
+      button {
+        display: inline-block;
+        height: 0.62rem;
+        width: 0.8rem;
+        line-height: 0.62rem;
+        font-size: 14px;
+        font-weight: 400;
+        text-align: center;
+        background-color: #3f84f6;
+        border: 1px solid #3f84f6;
+        color: #fff;
+        border-top-right-radius: 3px;
+        border-bottom-right-radius: 3px;
+        vertical-align: top;
+        margin-left: -0.1rem;
+      }
+      .moreIcon {
+        width: 0.06rem;
+        height: 0.1rem;
+        margin-top: 0.14rem;
+      }
+    }
+    .modal-content {
+      position: absolute;
+      height: 10rem;
+      bottom: 0px;
+      left: 0px;
+      background: #fff;
+      width: 100%;
+      border-radius: 0px;
+      box-shadow: 0 -9px 9px rgba(0,0,0,.5);
+      .content-title {
+        color: #666;
+        font-size: .3rem;
+        text-align: center;
+        height: 1rem;
+        line-height: 1rem;
+        position: relative;
+        i {
+          font-size: 0.3rem;
+          color: #999;
+          position: absolute;
+          right: 0.3rem;
+          top: 50%;
+          margin-top: -0.15rem;
+        }
+      }
+      .content-title-label {
+        color: #3f84f6;
+        font-size: 0.28rem;
+        height: 0.5rem;
+        line-height: 0.5rem;
+        border-bottom: 1px solid #999;
+        div {
+          width: 33.3%;
+          float: left;
+          text-align: center;
+          a {
+            height: 0.5rem;
+            line-height: 0.5rem;
+            color: #3f84f6 !important;
+            border-bottom: 1px solid #3f84f6;
+            display: inline-block;
+            width: 80%;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+          }
+        }
+      }
+      .content-info {
+        overflow-y: auto;
+        height: 8.5rem;
+        width: 100%;
+        .content-info-item {
+          height: 0.86rem;
+          line-height: 0.86rem;
+          color: #333;
+          font-size: 0.28rem;
+          padding-left: 0.3rem;
+          &.active {
+            color: #3f84f6 !important
+          }
+          img {
+            width: 0.3rem;
+            height: 0.18rem;
+            margin-left: 0.3rem;
+          }
+        }
+      }
+    }
+    .none-state{
+      text-align: center;
+      padding:1.5rem 0;
+      background: #fff;
+      margin-top:.1rem;
+      width:100%;
+      img{
+        margin:0 auto;
+        width: 4.08rem;
+        height: 2.62rem;
+      }
+      p {
+        font-size: .32rem;
+        color: #999;
+        margin: 1.19rem 0 0 0;
+      }
+      a {
+        display: block;
+        font-size: .28rem;
+        color: #fff;
+        width: 1.88rem;
+        height: .54rem;
+        line-height: .54rem;
+        background: #418bf6;
+        margin: .7rem auto 0;
+        border-radius: .05rem;
+      }
+    }
   }
 </style>

BIN
static/images/mobile/@2x/addBtn.png


BIN
static/images/mobile/@2x/getlabel_icon.png


+ 1 - 0
store/option.js

@@ -83,5 +83,6 @@ export const mutations = {
   },
   REQUEST_STORE_STATUS_FAILURE (state) {
     state.storeStatus.fetching = false
+    state.storeStatus.data = {}
   }
 }

+ 1 - 0
store/supplier/material.js

@@ -29,5 +29,6 @@ export const mutations = {
   },
   GET_ENUSER_FAILURE (state) {
     state.enUser.fetching = false
+    state.enUser.data = {}
   }
 }