tremble 6 years ago
parent
commit
d4ceed2ec6

+ 1 - 1
build/webpack.dev.conf.js

@@ -10,7 +10,7 @@ const HtmlWebpackPlugin = require('html-webpack-plugin')
 const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
 const portfinder = require('portfinder')
 
-const HOST = '192.168.0.22'
+const HOST = '192.168.0.38'
 const PORT = process.env.PORT && Number(process.env.PORT)
 
 const devWebpackConfig = merge(baseWebpackConfig, {

+ 9 - 0
index.html

@@ -17,6 +17,15 @@
     <link rel="apple-touch-icon" sizes="180x180" href="//4dkk.4dage.com/FDKKIMG/icon/kankan_icon180.png">
     <title>四维看看</title>
     <script>
+      var _hmt = _hmt || [];
+      (function() {
+        var hm = document.createElement("script");
+        hm.src = "https://hm.baidu.com/hm.js?b0f5aaf3788187f626ef33c810d82c10";
+        var s = document.getElementsByTagName("script")[0];
+        s.parentNode.insertBefore(hm, s);
+      })();
+    </script>
+    <script>
     (function(){
         if (navigator.userAgent.indexOf('iPhone') > -1 || navigator.userAgent.indexOf('Android') > -1) {
             window.location.href = '/mobile/index.html';

BIN
src/assets/images/eye-pro.png


BIN
src/assets/images/eye_lite.png


BIN
src/assets/images/introduce-line.png


BIN
src/assets/images/introduce-line1.png


BIN
src/assets/images/quhao-jiantou.png


+ 3 - 3
src/components/card/index.vue

@@ -17,7 +17,7 @@
         <span >{{data.nickName}}</span>
       </div>
       <div class="u-r">
-        <img src="@/assets/images/eye.png" alt>
+        <img :src="data.sceneScheme>=4?`${$cdn}images/eye_lite.png`:`${$cdn}images/eye-pro.png`" alt>
         <span>{{data.sceneScheme>=4?'Pro':'Lite'}}</span>
       </div>
     </div>
@@ -180,10 +180,10 @@ export default {
         img{
           width: 16px;
           height: 16px;
-          vertical-align: middle;
+          vertical-align: top;
         }
         span{
-          vertical-align: middle;
+          vertical-align: top;
         }
       }
     }

+ 0 - 1
src/components/slide/style.css

@@ -82,7 +82,6 @@
   position: relative;
   z-index: 2;
   perspective: 100vw;
-  transform-style: preserve-3d;
   transform: translate3d(0px, 0px, 0px);
 }
 

+ 1 - 1
src/components/spinner/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="spinner">
-    <input oninput="value=Math.max(Math.min(Number(value.replace(/[^\d]/g,'')),99),1)" v-model="num" min='1' step="1" max="99" type="number">
+    <input oninput="value=Math.max(Math.min(Number(value.replace(/[^\d]/g,'')),99),1)" v-model="num" >
     <div class="icon">
       <i @click="num++" class="iconfont icon-shang"></i>
       <i @click="num>1?num--:1" class="iconfont icon-xia"></i>

+ 5 - 3
src/components/toast/binding.vue

@@ -9,7 +9,7 @@
         <span>添加新设备</span>
         <i class="iconfont icon-cuowu" @click="handleClick"></i>
       </div>
-      <div class="binding-con" :style="{height:!bindingSuccess?'295px':'200px'}">
+      <div class="binding-con" :style="{height:!bindingSuccess?'286px':'200px'}">
         <div class="binding-body" v-if="!bindingSuccess">
           <div class="b-input">
             <input :class="{notbing:hasBind}" v-model="SN" placeholder="请输入产品包装盒上的S/N码" type="text">
@@ -88,12 +88,14 @@ export default {
         this.SN = ''
         this.bindingSuccess = true
       } else if (data.code === 4010) {
-        this.$toast.show('error', '绑定的相机不存在')
+        this.hasBind = true
+        this.errorMsg = '绑定的相机不存在'
       } else if (data.code === 6010) {
         this.hasBind = true
         this.errorMsg = '该序列号已被绑定'
       } else {
-        this.$toast.show('error', data.msg)
+        this.hasBind = true
+        this.errorMsg = data.msg
       }
     }
   }

+ 3 - 1
src/components/toast/style.scss

@@ -116,7 +116,7 @@ $border-color: #e7e7e7;
             margin-right: 20px;
             display: flex;
             align-items: center;
-            border: 1px solid #f4f4f4;
+            border: 1px solid #e7e7e7;
             position: relative;
             cursor: pointer;
             .year {
@@ -201,6 +201,7 @@ $border-color: #e7e7e7;
                 position: absolute;
                 top: 0;
                 left: 0;
+                opacity: 0;
               }
                input[type='submit']{
                  width: 100%;
@@ -208,6 +209,7 @@ $border-color: #e7e7e7;
                  top: 0;
                  left: 0;
                  height: 100%;
+                 opacity: 0;
                }
             }
           }

+ 6 - 3
src/page/home2/index.vue

@@ -92,10 +92,10 @@
       </div>
       <div class="content-layout">
         <div class="slide-l" :class="{actice: slideActive}" ref="slide">
-          <div class="content">
+          <div class="content" >
             <slide :items="langHome.items" class="body">
-              <div slot-scope="{data}" class="item">
-                <img :src="data.image" class="cover" @click="goto(data.url)">
+              <div slot-scope="{data}" class="item"  @click="goto(data.url)">
+                <img :src="data.image" class="cover">
                 <div class="jj">
                   <img :src="data.icon" class="icon">
                   <span v-if="data.text">{{data.text}}</span>
@@ -163,6 +163,9 @@ export default {
     }
   },
   methods: {
+    alertte () {
+      alert('asdasd')
+    },
     mediaClick () {
       this.$bus.$emit('showLeft', 'mediaInfo', {id: 83})
     },

+ 2 - 0
src/page/introtow/index.vue

@@ -18,6 +18,8 @@
         <div class="intro-title">
           <img src="@/assets/images/introduce-line.png" alt="">
           <p>点数充值,记录您的美好空间</p>
+          <img src="@/assets/images/introduce-line1.png" alt="">
+
         </div>
         <p class="intro-sub">购买立即生效,拍摄安心存放</p>
         <ul class="intro-type">

+ 7 - 9
src/page/introtow/style.scss

@@ -6,7 +6,7 @@
     background: url('~@/assets/images/person-bg.png') no-repeat top center;
     background-size: cover;
     .introduce-con{
-      padding: 55px 0 50px;
+      padding: 55px 0 40px;
       .info{
         width: 680px;
         font-size: 28px;
@@ -15,7 +15,7 @@
       .c-dec{
         font-size: 16px;
         color: #fff;
-        margin: 38px 0;
+        margin: 26px 0 30px;
         line-height: 1;
         span{
           font-size: 28px;
@@ -36,7 +36,7 @@
   }
   .plate02{
     width: 1100px;
-    margin: 70px auto;
+    margin: 60px auto 70px;
     .intro-card{
       width: 870px;
       margin: 0 auto;
@@ -92,15 +92,13 @@
       }
     }
     .intro-title{
-      margin: 40px auto 20px;
+      margin: 30px auto 12px;
       text-align: center;
       position: relative;
       p{
-        position: absolute;
-        left: 50%;
-        top: 50%;
-        transform: translate(-50%,-50%);
+        display: inline-block;
         font-size: 28px;
+        margin: 0 20px;
         color: $font-color;
       }
     }
@@ -122,7 +120,7 @@
         box-shadow: 0 0 15px rgba(0, 0, 0, 0.3);
         border-radius: 4px;
         .point{
-          margin: 30px 0 36px;
+          margin: 38px 0 22px;
           font-weight: bold;
           font-size: 36px;
           color: $font-color;

+ 186 - 0
src/page/layout/aside/temp/ltemp/country.js

@@ -0,0 +1,186 @@
+let selectCall = [
+  ['中国', '+86', 'China'],
+  ['美国', '+1', 'USA'],
+  ['日本', '+81', 'Japan'],
+  ['中国香港', '+852', 'Hong Kong China'],
+  ['中国台湾', '+886', 'Taiwan of China'],
+  ['马来西亚', '+60', 'Malaysia'],
+  ['澳大利亚', '+61', 'Australia'],
+  ['加拿大', '+1', 'Canada'],
+  ['英国', '+44', 'UK'],
+  ['新加坡', '+65', 'Singapore'],
+  ['德国', '+49', 'Germany'],
+  ['俄罗斯', '+7', 'Russia'],
+  ['埃及', '+20', 'Egypt'],
+  ['南非', '+27', 'South Africa'],
+  ['希腊', '+30', 'Greece'],
+  ['荷兰', '+31', 'Holland'],
+  ['比利时', '+32', 'Belgium'],
+  ['法国', '+33', 'France'],
+  ['西班牙', '+34', 'Spain'],
+  ['匈牙利', '+36', 'Hungary'],
+  ['意大利', '+39', 'Italy'],
+  ['罗马尼亚', '+40', 'Romania'],
+  ['瑞士', '+41', 'Switzerland'],
+  ['奥地利', '+43', 'Austria'],
+  ['丹麦', '+45', 'Denmark'],
+  ['瑞典', '+46', 'Rachel Canon'],
+  ['挪威', '+47', 'Norway'],
+  ['波兰', '+48', 'Poland'],
+  ['秘鲁', '+51', 'Peru'],
+  ['墨西哥', '+52', 'Mexico'],
+  ['古巴', '+53', 'Cuba'],
+  ['阿根廷', '+54', 'Argentina'],
+  ['巴西', '+55', 'Brazil'],
+  ['智利', '+56', 'Chile'],
+  ['哥伦比亚', '+57', 'Columbia'],
+  ['委内瑞拉', '+58', 'Venezuela'],
+  ['印度尼西亚', '+62', 'Indonesia'],
+  ['菲律宾', '+63', 'Philippines'],
+  ['新西兰', '+64', 'New Zealand'],
+  ['泰国', '+66', 'Thailand'],
+  ['哈萨克斯坦', '+7', 'Kazakhstan'],
+  ['韩国', '+82', 'Korea'],
+  ['越南', '+84', 'Vietnam'],
+  ['土耳其', '+90', 'Turkey'],
+  ['印度', '+91', 'India'],
+  ['巴基斯坦', '+92', 'BaStan'],
+  ['阿富汗', '+93', 'Afghanistan'],
+  ['斯里兰卡', '+94', 'Sri Lanka'],
+  ['缅甸', '+95', 'Burma'],
+  ['伊朗', '+98', 'Iran'],
+  ['摩洛哥', '+212', 'Morocco'],
+  ['阿尔及利亚', '+213', 'Alger'],
+  ['突尼斯', '+216', 'Tunisian'],
+  ['利比亚', '+218', 'Libyan'],
+  ['冈比亚', '+220', 'Gambian'],
+  ['塞内加尔', '+221', 'Senegalese'],
+  ['马里', '+223', 'Mali'],
+  ['几内亚', '+224', 'Guinean'],
+  ['科特迪瓦', '+225', 'Ketediwa'],
+  ['布基纳法索', '+226', 'Burkina Faso'],
+  ['尼日尔', '+227', 'Niger'],
+  ['多哥', '+228', 'Togo'],
+  ['贝宁', '+229', 'Berlin'],
+  ['毛里求斯', '+230', 'Mauritius'],
+  ['利比里亚', '+231', 'Liberian'],
+  ['塞拉利昂', '+232', 'Sierra Leone'],
+  ['加纳', '+233', 'Ghana'],
+  ['尼日利亚', '+234', 'Nigerian'],
+  ['乍得', '+235', 'Chad'],
+  ['中非共和国', '+236', 'Central African Republic'],
+  ['喀麦隆', '+237', 'Cameroon'],
+  ['圣多美和普林西比', '+239', 'Sao Tome and Principe'],
+  ['加蓬', '+241', 'Gabonese'],
+  ['刚果民主共和国', '+243', 'Congo democratic republic'],
+  ['安哥拉', '+244', 'Angolan'],
+  ['阿森松岛', '+247', 'Ascension Island'],
+  ['塞舌尔', '+248', 'seychelles'],
+  ['苏丹', '+249', 'Sudanese'],
+  ['埃塞俄比亚', '+251', 'Ethiopian'],
+  ['索马里', '+252', 'Somalian'],
+  ['吉布提', '+253', 'Djibouti'],
+  ['肯尼亚', '+254', 'Kenyan'],
+  ['坦桑尼亚', '+255', 'Tanzanian'],
+  ['乌干达', '+256', 'Ugandan'],
+  ['布隆迪', '+257', 'Burundi'],
+  ['莫桑比克', '+258', 'Mozambique'],
+  ['赞比亚', '+260', 'Zambian'],
+  ['马达加斯加', '+261', 'Madagascar'],
+  ['津巴布韦', '+263', 'Zimbabwe'],
+  ['纳米比亚', '+264', 'Namibian'],
+  ['马拉维', '+265', 'Malawi'],
+  ['莱索托', '+266', 'Lesotho'],
+  ['博茨瓦纳', '+267', 'Botswana'],
+  ['斯威士兰', '+268', 'Swaziland'],
+  ['直布罗陀', '+350', 'Gibraltar'],
+  ['葡萄牙', '+351', 'Portuguese'],
+  ['卢森堡', '+352', 'Luxembourg'],
+  ['爱尔兰', '+353', 'Irish'],
+  ['冰岛', '+354', 'Icelandic'],
+  ['阿尔巴尼亚', '+355', 'Albanian'],
+  ['马耳他', '+356', 'Malta'],
+  ['塞浦路斯', '+357', 'Cypriot'],
+  ['芬兰', '+358', 'Finnish'],
+  ['保加利亚', '+359', 'Bulgarian'],
+  ['立陶宛', '+370', 'Lithuania'],
+  ['拉脱维亚', '+371', 'Latvian'],
+  ['爱沙尼亚', '+372', 'Estonian'],
+  ['摩尔多瓦', '+373', 'Moldova'],
+  ['亚美尼亚', '+374', 'Armenian'],
+  ['白俄罗斯', '+375', 'Belorussia'],
+  ['安道尔共和国', '+376', 'Republic of Andorra'],
+  ['摩纳哥', '+377', 'Monaco'],
+  ['圣马力诺', '+378', 'san marino'],
+  ['乌克兰', '+380', 'Ukraine'],
+  ['斯洛文尼亚', '+386', 'Slovenia'],
+  ['捷克', '+420', 'Czechoslovakian'],
+  ['斯洛伐克', '+421', 'Slovakian'],
+  ['列支敦士登', '+423', 'Liechtenstein'],
+  ['伯利兹', '+501', 'Belize'],
+  ['瓜地马拉', '+502', 'Guatemala'],
+  ['萨尔瓦多', '+503', 'Salvadoran'],
+  ['洪都拉斯', '+504', 'Honduran'],
+  ['尼加拉瓜', '+505', 'Nicaraguan'],
+  ['哥斯达黎加', '+506', 'Costa Rica'],
+  ['巴拿马', '+507', 'Panamanian'],
+  ['海地', '+509', 'Haiti'],
+  ['玻利维亚', '+591', 'Bolivian'],
+  ['圭亚那', '+592', 'Guyanan'],
+  ['厄瓜多尔', '+593', 'Ecuadoran'],
+  ['法属圭亚那', '+594', 'French Guianan'],
+  ['巴拉圭', '+595', 'Paraguay'],
+  ['马提尼克', '+596', 'Martini gram'],
+  ['苏里南', '+597', 'Surinam'],
+  ['乌拉圭', '+598', 'Uruguayan'],
+  ['文莱', '+673', 'Brunei'],
+  ['巴布亚新几内亚', '+675', 'Papua New Guinean'],
+  ['汤加', '+676', 'Tonga'],
+  ['所罗门群岛', '+677', 'Solomon Islands'],
+  ['斐济', '+679', 'Fijian'],
+  ['库克群岛', '+682', 'Cook Islands'],
+  ['法属波利尼西亚', '+689', 'French Polynesian'],
+  ['中国澳门', '+853', 'Chinese Aomen'],
+  ['柬埔寨', '+855', 'Cambodian'],
+  ['老挝', '+856', 'Laos'],
+  ['孟加拉国', '+880', 'Bangladesh'],
+  ['马尔代夫', '+960', 'Maldives'],
+  ['黎巴嫩', '+961', 'Lebanese'],
+  ['约旦', '+962', 'Jordanian'],
+  ['叙利亚', '+963', 'Syrian'],
+  ['伊拉克', '+964', 'Iraqi'],
+  ['科威特', '+965', 'Kuwaiti'],
+  ['沙特阿拉伯', '+966', 'Saudi Arabian'],
+  ['也门', '+967', 'Yemenese'],
+  ['阿曼', '+968', 'Aman'],
+  ['阿拉伯联合酋长国', '+971', 'United Arab Emirates'],
+  ['以色列', '+972', 'Israeli'],
+  ['巴林', '+973', 'Bahraini'],
+  ['卡塔尔', '+974', 'Qataran'],
+  ['蒙古', '+976', 'Mongolian'],
+  ['尼泊尔', '+977', 'Nepalese'],
+  ['塔吉克斯坦', '+992', 'Tajikistan'],
+  ['土库曼斯坦', '+993', 'Turkmenistan'],
+  ['阿塞拜疆', '+994', 'Azerbaijanian'],
+  ['格鲁吉亚', '+995', 'Georgian'],
+  ['吉尔吉斯斯坦', '+996', 'Kyrgyzstan'],
+  ['乌兹别克斯坦', '+998', 'Uzbekistan'],
+  ['巴哈马', '+1242', 'Bahamian'],
+  ['巴巴多斯', '+1246', 'Barbados'],
+  ['安圭拉岛', '+1264', 'Anguilla island'],
+  ['安提瓜和巴布达', '+1268', 'Antigua and Barbadian'],
+  ['开曼群岛', '+1345', 'cayman islands'],
+  ['百慕大群岛', '+1441', 'Bermuda Islands'],
+  ['格林纳达', '+1473', 'Grenada'],
+  ['蒙特塞拉特岛', '+1664', 'Montserrat'],
+  ['关岛', '+1671', 'Guam'],
+  ['圣卢西亚', '+1758', 'Saint Lucia'],
+  ['波多黎各', '+1787', 'Puerto Rico'],
+  ['多明尼加共和国', '+1809', 'Dominican republic'],
+  ['特立尼达和多巴哥', '+1868', 'Trinidad and Tobago'],
+  ['牙买加', '+1876', 'Jamaica'],
+  ['塞尔维亚共和国', '+381', 'The republic of Serbia'],
+  ['毛里塔尼亚', '+222', 'Mauritania ']
+]
+
+export default selectCall

+ 34 - 3
src/page/layout/aside/temp/ltemp/forget.vue

@@ -1,8 +1,19 @@
 <template>
   <div class="iforget-layout">
-    <div class="input"><input readonly onfocus="this.removeAttribute('readonly')"  autocomplete="off" placeholder="输入手机号码" oninput="value=value.replace(/[^\d]/g,'')" maxlength='11' v-model="phone" type="text"></div>
+    <div class="input phone-select" ref="quhaoMenu" >
+      <div @click="showSelect=!showSelect">
+        <span>{{codeActive[1]}}</span>
+        <img :src="`${$cdn}images/quhao-jiantou.png`" >
+      </div>
+      <ul v-show="showSelect" >
+        <li @click="selectItem(item)" v-for="(item,i) in selectCall" :key="i">
+          {{item[0]}}{{item[1]}}
+        </li>
+      </ul>
+      <input autocomplete="off" placeholder="输入手机号码" oninput="value=value.replace(/[^\d]/g,'')" maxlength='11' v-model="phone" type="text">
+    </div>
     <div class="verification input">
-      <input readonly onfocus="this.removeAttribute('readonly')"  autocomplete="off" placeholder="验证码" v-model="authCode" type="text">
+      <input autocomplete="off" placeholder="验证码" v-model="authCode" type="text">
       <span v-if="!jishi" @click="getAuthCode">获取验证码</span>
       <span v-else>{{interTime}}s后重新发送</span>
     </div>
@@ -13,6 +24,7 @@
 </template>
 <script>
 import {mapState} from 'vuex'
+import selectCall from './country.js'
 
 export default {
   computed: {
@@ -22,6 +34,9 @@ export default {
   },
   data () {
     return {
+      showSelect: false,
+      selectCall,
+      codeActive: ['中国', '+86', 'China'],
       phone: '',
       authCode: '',
       interTime: 60,
@@ -30,9 +45,21 @@ export default {
       confirmpass: ''
     }
   },
+  mounted () {
+    document.addEventListener('click', (e) => {
+      if (this.$refs.quhaoMenu) {
+        if (!this.$refs.quhaoMenu.contains(e.target)) {
+          this.showSelect = false
+        }
+      }
+    })
+  },
   methods: {
     async getAuthCode () {
-      let res = await this.$store.dispatch('getAuthCode', this.phone)
+      let res = await this.$store.dispatch('getAuthCode', {
+        phone: this.phone,
+        code: this.codeActive[1].substr(1)
+      })
       if (res) {
         this.interl && clearInterval(this.interl)
         this.interl = null
@@ -48,6 +75,10 @@ export default {
         }, 1000)
       }
     },
+    selectItem (item) {
+      this.showSelect = false
+      this.codeActive = item
+    },
     async submit () {
       let check = value => {
         for (let i = 0, len = value.length; i < len; i++) {

+ 3 - 4
src/page/layout/aside/temp/ltemp/login.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="ilogin-layout">
     <div class="input-con login-input-con">
-    <div class="input"><input readonly onfocus="this.removeAttribute('readonly')"  autocomplete="off" v-model="phone" oninput="value=value.replace(/[^\d]/g,'')" maxlength='11' placeholder="请输入手机号码" type="text"></div>
-    <div class="input"><input  readonly onfocus="this.removeAttribute('readonly')"  autocomplete="off"  @keyup.enter="login" v-model="password" placeholder="输入密码" maxlength='12' type="password"></div>
+    <div class="input"><input autocomplete="off" v-model="phone" oninput="value=value.replace(/[^\d]/g,'')" maxlength='11' placeholder="请输入手机号码" type="text"></div>
+    <div class="input"><input autocomplete="off"  @keyup.enter="login" v-model="password" placeholder="输入密码" maxlength='12' type="password"></div>
       <div class="remember" @click="rememberMe=~rememberMe">
         <span>
           <img v-if="rememberMe"  src="@/assets/images/icon-click.png" alt="">
@@ -115,9 +115,8 @@ export default {
         if (response.code === 0) {
           this.$store.commit('saveToken', response.data.token)
           if (response.data.token) {
+            this.$store.commit('DEVICELOGIN', 'active')
             this.$bus.$emit('hideAside')
-            this.$store.dispatch('getInfo', {url: '/user/getUserInfo', name: 'info'})
-            this.$store.dispatch('getCart')
           }
           return false
         }

+ 36 - 4
src/page/layout/aside/temp/ltemp/register.vue

@@ -1,7 +1,18 @@
 <template>
   <div class="iregister-layout">
-    <div class="input"><input readonly onfocus="this.removeAttribute('readonly')"  autocomplete="off" v-model="nickname" placeholder="昵称" type="text"></div>
-    <div class="input"><input readonly onfocus="this.removeAttribute('readonly')"  autocomplete="off" v-model="phone" oninput="value=value.replace(/[^\d]/g,'')" maxlength='11' placeholder="输入手机号码" type="text"></div>
+    <div class="input"><input autocomplete="off" v-model="nickname" placeholder="昵称" type="text"></div>
+    <div class="input phone-select" ref="quhaoMenu" >
+      <div @click="showSelect=!showSelect">
+        <span>{{codeActive[1]}}</span>
+        <img :src="`${$cdn}images/quhao-jiantou.png`" >
+      </div>
+      <ul v-show="showSelect" >
+        <li @click="selectItem(item)" v-for="(item,i) in selectCall" :key="i">
+          {{item[0]}}{{item[1]}}
+        </li>
+      </ul>
+      <input readonly onfocus="this.removeAttribute('readonly')"  autocomplete="off" v-model="phone" oninput="value=value.replace(/[^\d]/g,'')" maxlength='11' placeholder="输入手机号码" type="text">
+    </div>
     <div class="verification input">
       <input v-model="authCode" placeholder="输入验证码" type="text">
       <span v-if="!jishi" @click="getAuthCode">获取验证码</span>
@@ -15,12 +26,16 @@
 
 <script>
 import { mapState } from 'vuex'
+import selectCall from './country.js'
 
 export default {
   data () {
     return {
+      showSelect: false,
+      codeActive: ['中国', '+86', 'China'],
       nickname: '',
       phone: '',
+      selectCall,
       authCode: '',
       password: '',
       confirmPass: '',
@@ -34,9 +49,25 @@ export default {
       language: state => state.language.current
     })
   },
+  mounted () {
+    document.addEventListener('click', (e) => {
+      if (this.$refs.quhaoMenu) {
+        if (!this.$refs.quhaoMenu.contains(e.target)) {
+          this.showSelect = false
+        }
+      }
+    })
+  },
   methods: {
+    selectItem (item) {
+      this.showSelect = false
+      this.codeActive = item
+    },
     async getAuthCode () {
-      let res = await this.$store.dispatch('getAuthCode', this.phone)
+      let res = await this.$store.dispatch('getAuthCode', {
+        phone: this.phone,
+        code: Number(this.codeActive[1].substr(1))
+      })
       if (res) {
         this.interl && clearInterval(this.interl)
         this.interl = null
@@ -86,12 +117,13 @@ export default {
       if (!check(checkStr)) {
         return
       }
+      let country = Number(this.codeActive[1].substr(1))
       let params = {
         password: this.password,
         phoneNum: this.phone,
         msgAuthCode: this.authCode,
         nickName: this.nickname,
-        country: this.language === '中' ? '国内' : '国外',
+        country,
         confirmPwd: this.confirmPass
       }
       let res = await this.$http({

+ 46 - 0
src/page/layout/aside/temp/ltemp/style.scss

@@ -117,4 +117,50 @@ $lincolor:#d0d0d1;
       margin: 52px auto 20px;
     }
   }
+}
+
+.phone-select{
+  position: relative;
+  div{
+    width: 80px;
+    height: 60px;
+    line-height: 60px;
+    display: inline-block;
+    color: #757575;
+    position: absolute;
+    top: -3px;
+    cursor: pointer;
+    span{
+     display: inline-block;
+     vertical-align: middle;
+    }
+    img{
+      width: 20px;
+      vertical-align: middle;
+    }
+  }
+  ul{
+    position: absolute;
+    top: 0;
+    left: 0;
+    background: #fff;
+    width: 200px;
+    height: 400px;
+    padding: 0 10px;
+    overflow: auto;
+    transition: ease 0.3s all;
+    li{
+      height: 40px;
+      line-height: 50px;
+      color: #999;
+      font-size: 14px;
+      cursor: pointer;
+      &:hover{
+        color: #000;
+      }
+    }
+  }
+  input{
+    padding-left: 80px;
+  }
 }

+ 5 - 4
src/page/layout/header/index.vue

@@ -47,8 +47,8 @@
         </vcenter>
       </a>
       <a class="user cart" v-else>
-        <div class="cart-user" @click="$router.push({name:'information'})">
-          <div class="user-img" :style="{background:`url(${info.head}) 50% 50%/cover no-repeat `,}"></div>
+        <div class="cart-user" @click="$router.push({name:deviceLogin?'scene':'information'})">
+          <div class="user-img" :style="{background:`url(${info.head}) 50% 50%/cover no-repeat`}"></div>
         </div>
         <div class="cart-icon" @click="loginHandle">
           <i class="iconfont icon-cart"></i>
@@ -122,11 +122,12 @@ export default {
       langHeader: state => state.language.home.headers,
       split: state => state.ui.navDivision,
       isLogin: state => state.user.token,
-      info: state => state.user.info
+      info: state => state.user.info,
+      deviceLogin: state => state.user.deviceLogin
     })
   },
   mounted () {
-    if (this.isLogin) {
+    if (this.isLogin && !this.deviceLogin) {
       let cart = JSON.parse(this.$store.state.user.cart)
       let count = 0
       cart.forEach(item => {

+ 51 - 36
src/page/manage/index.vue

@@ -17,7 +17,7 @@
         <div v-for="(item,index) in settings" :key="index">
           <ul class="list-items">
             <li v-for="(sub,i) in item.items" :key="i">
-              <span @click="tabHandle(sub)" :class='{active:active.name===sub.name}'>{{sub.name}}</span>
+              <span @click="tabHandle(sub)" :class="{active:active.name===sub.name,'logout-span':sub.name === '退出登录'}">{{sub.name}}</span>
             </li>
           </ul>
         </div>
@@ -32,7 +32,51 @@
 </template>
 <script>
 import {mapState} from 'vuex'
+let settings = [
+  {
+    name: 'info',
+    items: [{
+      name: '账号信息',
+      to: {name: 'information'}
+    }, {
+      name: '我的场景',
+      to: {name: 'scene'}
+    }, {
+      name: '我的订单',
+      to: {name: 'order'}
+    }, {
+      name: '我的设备',
+      to: {name: 'device'}
+    }, {
+      name: '消费记录',
+      to: {name: 'consumption'}
+    }
+    ]
+  },
+  {
+    name: 'security',
+    items: [{
+      name: '修改密码',
+      to: {name: 'change'}
+    }, {
+      name: '退出登录',
+      to: 'logout'
+    }]
+  }
+]
 
+let deviceSettings = [
+  {
+    name: 'security',
+    items: [ {
+      name: '我的场景',
+      to: {name: 'scene'}
+    }, {
+      name: '退出登录',
+      to: 'logout'
+    }]
+  }
+]
 export default {
 
   data () {
@@ -55,47 +99,14 @@ export default {
       }
     }
 
-    let settings = [
-      {
-        name: 'info',
-        items: [{
-          name: '账号信息',
-          to: {name: 'information'}
-        }, {
-          name: '我的场景',
-          to: {name: 'scene'}
-        }, {
-          name: '我的订单',
-          to: {name: 'order'}
-        }, {
-          name: '我的设备',
-          to: {name: 'device'}
-        }, {
-          name: '消费记录',
-          to: {name: 'consumption'}
-        }
-        ]
-      },
-      {
-        name: 'security',
-        items: [{
-          name: '修改密码',
-          to: {name: 'change'}
-        }, {
-          name: '退出登录',
-          to: 'logout'
-        }]
-      }
-    ]
     return {
-      settings,
       nameArr,
       content: '',
       btnItem: btnType['buy']
     }
   },
   mounted () {
-    this.getInfo()
+    // this.getInfo()
   },
   methods: {
     tabHandle (sub) {
@@ -129,7 +140,11 @@ export default {
     ...mapState({
       split: state => state.ui.navDivision,
       token: state => state.user.token,
-      info: state => state.user.info
+      info: state => state.user.info,
+      settings: state => {
+        console.log(state.user.deviceLogin)
+        return state.user.deviceLogin ? deviceSettings : settings
+      }
     }),
     active: {
       get () {

+ 6 - 0
src/page/manage/style.scss

@@ -90,7 +90,13 @@
               border: 1px solid #1fe4dc;
             }
           }
+          .logout-span{
+            &::before{
+              display: none;
+            }
+          }
         }
+        
       }
     }
     .mc-right{

+ 13 - 10
src/page/manage/temp/change.vue

@@ -2,15 +2,15 @@
   <div class="change-layout">
     <div class="change-con">
       <div class="input">
-        <input readonly onfocus="this.removeAttribute('readonly')"  autocomplete="off"  oninput="value=value.replace(/[^\d]/g,'')" maxlength='11' v-model="phone" type="text" placeholder="手机号码">
+        {{info.userName}}
       </div>
       <div class="input yanzhengma">
-        <input readonly onfocus="this.removeAttribute('readonly')"  autocomplete="off" v-model="code" type="text" placeholder="验证码">
+        <input autocomplete="off" v-model="code" type="text" placeholder="验证码">
         <div v-if="!jishi" @click="getAuthCode" class="code btn parmary">获取验证码</div>
         <div v-else class="code btn parmary">{{interTime}}s后重新发送</div>
       </div>
       <div class="input">
-        <input readonly onfocus="this.removeAttribute('readonly')"  autocomplete="off" maxlength="12" v-model="password" type="password" placeholder="新密码">
+        <input autocomplete="off" maxlength="12" v-model="password" type="password" placeholder="新密码">
       </div>
       <div @click="submit" class="btn parmary">
         提交
@@ -25,7 +25,8 @@ import {mapState} from 'vuex'
 export default {
   computed: {
     ...mapState({
-      token: state => state.user.token
+      token: state => state.user.token,
+      info: state => state.user.info
     })
   },
   data () {
@@ -39,7 +40,11 @@ export default {
   },
   methods: {
     async getAuthCode () {
-      let res = await this.$store.dispatch('getAuthCode', this.phone)
+      let {userName, country} = this.info
+      let res = await this.$store.dispatch('getAuthCode', {
+        phone: userName,
+        code: country === '中国' ? 86 : country
+      })
       if (res) {
         this.interl && clearInterval(this.interl)
         this.interl = null
@@ -67,10 +72,6 @@ export default {
 
       let checkStr = [
         {
-          name: '手机号码',
-          val: this.phone
-        },
-        {
           name: '验证码',
           val: this.code
         },
@@ -85,7 +86,7 @@ export default {
 
       let params = {
         password: this.password,
-        phoneNum: this.phone,
+        phoneNum: this.info.userName,
         msgAuthCode: this.code
       }
 
@@ -101,6 +102,7 @@ export default {
       if (data.code === 0) {
         this.$toast.show('success', '密码修改成功,请重新登录')
         this.$store.commit('logout')
+        this.$router.push({name: 'home'})
       } else {
         this.$toast.show('warn', `修改失败,${data.msg}`)
       }
@@ -113,6 +115,7 @@ export default {
 .change-layout{
   $theme-color: #1fe4dc;
   $border-color: #e7e7e7;
+  margin-bottom: 300px;
   .input{
     width: 300px;
     margin-bottom: 20px;

+ 15 - 4
src/page/manage/temp/consumption.vue

@@ -239,6 +239,11 @@ export default {
         pageSize: this.pageSize
       }
       await this.$store.dispatch('getUserExpansion', params)
+      if (!this.myexpansion.total && searchKey) {
+        return this.$toast.show('warn', '没有找到相应的记录', () => {
+          this.getList()
+        })
+      }
       this.pageSize = this.myexpansion.pageSize
       this.total = this.myexpansion.total || 0
       this.data = this.myexpansion.list
@@ -271,6 +276,11 @@ export default {
         pageSize: this.pageSize
       }
       await this.$store.dispatch('getChargeList', params)
+      if (!this.mycharge.total && searchKey) {
+        return this.$toast.show('warn', '没有找到相应的记录', () => {
+          this.getList()
+        })
+      }
       this.pageSize = this.mycharge.pageSize
       this.total = this.mycharge.total || 0
       this.data = this.mycharge.list
@@ -324,12 +334,13 @@ $border-color: #d9d9d9;
   }
   .parmary {
     background-color: $theme-color;
-    width: 99px;
-    height: 36px;
-    line-height: 36px;
+    width: 88px;
+    height: 28px;
+    line-height: 28px;
+    font-size: 14px;
   }
 .consump-layout{
-  margin: 30px 0 30px 40px;
+  margin: 30px 0 150px 40px;
   padding: 38px 60px 20px 45px;
   width: 1024px;
   border: 1px solid $border-color;

+ 15 - 9
src/page/manage/temp/device.vue

@@ -11,7 +11,7 @@
         <i class="iconfont icon-sousuo" @click="getList(searchKey)"></i>
       </div>
     </div>
-    <div class="d-con" v-if="total">
+    <div class="d-con">
       <div class="edit-item item" @click="addDevice">
         <div class="plus-con">
           <div class="iconplus">
@@ -56,10 +56,6 @@
         </div>
       </div>
     </div>
-    <div class="scene-nothing" v-else>
-      <img src="@/assets/images/nothing.png">
-      <div>居然还没有新时代空间建模神器<br/>赶紧入手吧</div>
-    </div>
     <div class="paging" v-if="total">
       <Paging @clickHandle="pageChange" :current="currentPage" :total="total" :equable="pageSize" />
     </div>
@@ -141,7 +137,7 @@ export default {
           headers: {
             token: this.token
           },
-          url: '/user/unbindCamera'
+          url: '/user/camera/unbind'
         })
         let data = res.data
         if (data.code === 0) {
@@ -169,6 +165,12 @@ export default {
         pageSize: this.pageSize
       }
       await this.$store.dispatch('getUserDevice', params)
+
+      if (!this.mydevice.total && searchKey) {
+        return this.$toast.show('warn', '没有找到对应的设备', () => {
+          this.getList()
+        })
+      }
       this.pageSize = this.mydevice.pageSize
       this.total = this.mydevice.total || 0
     }
@@ -277,9 +279,10 @@ $font-color: #2d2d2d;
         width: 145px;
         margin-top: 25px;
         .d-id{
-          color: 16px;
+          font-size: 16px;
           font-weight: bold;
           margin-bottom: 5px;
+          word-break: break-all;
         }
         .capacity{
           margin: 5px 0;
@@ -313,7 +316,7 @@ $font-color: #2d2d2d;
         height: 100%;
         position: relative;
         img{
-          height:100%;
+          height:150px;
         }
         .king{
           position: absolute;
@@ -326,15 +329,18 @@ $font-color: #2d2d2d;
     }
   }
   .scene-nothing{
-    padding: 42px 0 0 40px;
+    padding: 42px 0 150px 0;
+    text-align: center;
     img{
       padding-bottom: 22px;
+      text-align: center;
     }
     div{
       font-size: 16px;
       color: #969696;
       text-align: center;
       width: 230px;
+      margin: 0 auto;
     }
   }
    .paging {

+ 2 - 1
src/page/manage/temp/order.vue

@@ -297,7 +297,8 @@ $border-color: #e7e7e7;
     }
   }
   .scene-nothing{
-    padding: 42px 0 0 40px;
+    padding: 42px 0 150px 40px;
+    text-align: center;
     img{
       padding-bottom: 22px;
     }

+ 3 - 2
src/page/manage/temp/scene.vue

@@ -127,7 +127,7 @@ export default {
 
 <style lang="scss" scoped>
 .scene-layout{
-  width: 90%;
+  width: 100%;
   ul{
     padding: 30px 0 0 40px;
     li{
@@ -173,7 +173,8 @@ export default {
     }
   }
   .scene-nothing{
-    padding: 42px 0 0 40px;
+    padding: 42px 0 210px 0;
+    text-align: center;
     img{
       padding-bottom: 22px;
     }

+ 3 - 3
src/page/navs/search/index.vue

@@ -2,10 +2,10 @@
 <div class="search-body" ref="searchcon">
   <div class="search-con">
     <div class="search-ban" :style="{marginLeft:(split-260)+ 'px'}">
-      <div class="search-txt" v-if="scene.length">
+      <div class="search-txt" v-if="searchTxt!==''">
         <vcenter>
-          <span >{{total}}</span>
-          <div></div>
+          <span>{{total||0}}</span>
+          <div v-show="scene.length"></div>
         </vcenter>
       </div>
       <div class="search-input">

+ 2 - 0
src/page/pay/index.vue

@@ -307,6 +307,7 @@ $theme-color: #1fe4dc;
               height: 1px;
               position: absolute;
               top: 0;
+              opacity: 0;
               left: 0;
             }
              input[type='submit']{
@@ -314,6 +315,7 @@ $theme-color: #1fe4dc;
                position: absolute;
                top: 0;
                left: 0;
+               opacity: 0;
                height: 100%;
              }
           }

+ 2 - 0
src/page/payrecharge/index.vue

@@ -430,6 +430,7 @@ $theme-color: #1fe4dc;
                 height: 1px;
                 position: absolute;
                 top: 0;
+               opacity: 0;
                 left: 0;
               }
               input[type="submit"] {
@@ -437,6 +438,7 @@ $theme-color: #1fe4dc;
                 position: absolute;
                 top: 0;
                 left: 0;
+                opacity: 0;
                 height: 100%;
               }
             }

+ 14 - 4
src/store/user.js

@@ -14,6 +14,7 @@ let fdkankantoken = Cookies.get('4dkankantoken') || ''
 let cart = (localStorage && localStorage.getItem('cart')) || []
 let invoice2 = (localStorage && localStorage.getItem('invoice2')) || []
 let invoice3 = (localStorage && localStorage.getItem('invoice3')) || []
+let deviceLogin = (localStorage && localStorage.getItem('deviceLogin')) || ''
 
 let dataObj = {
   info: {},
@@ -39,6 +40,7 @@ export default {
     mycharge: '',
     myinvoicelist: '',
     myorder: '',
+    deviceLogin,
     invoicedevice: '',
     invoice2: invoice2,
     invoice3: invoice3,
@@ -56,6 +58,7 @@ export default {
 
       }
     },
+
     logout (state) {
       try {
         Cookies.set('fdkankantoken', '')
@@ -117,6 +120,11 @@ export default {
 
     user_not_login (state) {
       state.name = null
+    },
+
+    DEVICELOGIN (state, data) {
+      state.deviceLogin = data
+      localStorage.setItem('deviceLogin', data)
     }
   },
 
@@ -151,6 +159,7 @@ export default {
       let token = data.data.token
       context.commit('saveToken', token)
       if (token) {
+        context.commit('DEVICELOGIN', '')
         context.dispatch('getInfo', {url: '/user/getUserInfo', name: 'info'})
         context.dispatch('getCart')
       }
@@ -342,12 +351,13 @@ export default {
       if (data.code !== 0) return
       context.commit('myOrder', data.data)
     },
-    async getAuthCode (context, phone) {
-      let languge = localStorage.getItem('language')
+    async getAuthCode (context, item) {
+      let {phone, code} = item
+      let areaNum = Number(code) || 86
       if (phone) {
         let params = {
-          phoneNum: phone,
-          areaNum: languge === '中' ? '86' : '8888'
+          phoneNum: Number(phone),
+          areaNum
         }
         http({
           method: 'post',

+ 2 - 2
src/util/http.js

@@ -6,9 +6,9 @@ import Vue from 'vue'
 let vue = new Vue()
 // import qs from 'qs'
 const exceptUrls = ['/sso/user/logout', '/sso/user/sendUserInfo', '/user/order/queryOrderStatus', '/user/checkToken']
-// axios.defaults.baseURL = process.env.NODE_ENV === 'development' ? 'https://pro.4dkankan.com/api' : '/api'
+axios.defaults.baseURL = process.env.NODE_ENV === 'development' ? 'https://pro.4dkankan.com/api' : '/api'
 
-axios.defaults.baseURL = process.env.NODE_ENV === 'development' ? 'http://192.168.0.10:8080/api' : '/api'
+// axios.defaults.baseURL = process.env.NODE_ENV === 'development' ? 'http://192.168.0.10:8080/api' : '/api'
 // 请求超时时限
 axios.defaults.timeout = 15000
 // 请求次数