From 955ea2fdeeb257d19dd72c888f95a4216dc2766a Mon Sep 17 00:00:00 2001 From: hejinfu1026 <18537720348@163.com> Date: Mon, 15 Nov 2021 10:16:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9B=E7=BC=BA?= =?UTF-8?q?=E9=99=B7=EF=BC=8C=E6=9B=B4=E6=8D=A2tabbar=E7=B4=A0=E6=9D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .hbuilderx/launch.json | 19 ++- components/userEvaluation/index.vue | 5 +- config/app.js | 2 +- manifest.json | 8 +- .../goods_combination_details/index.vue | 19 ++- .../activity/goods_seckill_details/index.vue | 44 +++++-- pages/goods_details/index.vue | 61 ++++++---- pages/users/user_address/index.vue | 110 ++++++++--------- static/html/pc.html | 16 +-- static/images/1-001.png | Bin 2118 -> 1946 bytes static/images/1-002.png | Bin 2467 -> 1690 bytes static/images/2-001.png | Bin 2064 -> 1519 bytes static/images/2-002.png | Bin 2231 -> 1417 bytes static/images/3-001.png | Bin 2230 -> 2133 bytes static/images/3-002.png | Bin 2106 -> 1899 bytes static/images/4-001.png | Bin 2006 -> 2482 bytes static/images/4-002.png | Bin 2096 -> 2016 bytes utils/cache.js | 113 ++++++++++++++++-- utils/util.js | 24 ++++ 19 files changed, 284 insertions(+), 137 deletions(-) diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json index 501e01c8..075b9c55 100644 --- a/.hbuilderx/launch.json +++ b/.hbuilderx/launch.json @@ -2,10 +2,19 @@ // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 "version": "0.0", "configurations": [{ - "type": "uniCloud", - "default": { - "launchtype": "remote" - } - } + "default" : + { + "launchtype" : "remote" + }, + "h5" : + { + "launchtype" : "remote" + }, + "mp-weixin" : + { + "launchtype" : "remote" + }, + "type" : "uniCloud" + } ] } diff --git a/components/userEvaluation/index.vue b/components/userEvaluation/index.vue index a01cc37a..dabc11ce 100644 --- a/components/userEvaluation/index.vue +++ b/components/userEvaluation/index.vue @@ -1,6 +1,5 @@ @@ -67,12 +68,12 @@ import { mapGetters } from "vuex"; - import wPicker from "@/components/wPicker/w-picker.vue"; // #ifdef MP import authorize from '@/components/Authorize'; // #endif import home from '@/components/home'; // import city from '@/utils/cityData'; + let app = getApp(); export default { components: { // #ifdef MP @@ -102,7 +103,7 @@ defaultRegionCode: '440113', bargain: false, //是否是砍价 combination: false, //是否是拼团 - secKill: false //是否是秒杀 + secKill: false, //是否是秒杀 }; }, computed: mapGetters(['isLogin']), @@ -120,39 +121,42 @@ onLoad(options) { if (this.isLogin) { this.preOrderNo = options.preOrderNo || 0; - // this.cartId = options.cartId || ''; - // this.pinkId = options.pinkId || 0; - // this.couponId = options.couponId || 0; this.id = options.id || 0; - // this.secKill = options.secKill || false; - // this.combination = options.combination || false; - // this.bargain = options.bargain || false; uni.setNavigationBarTitle({ title: options.id ? '修改地址' : '添加地址' }) this.getUserAddress(); - this.getCityList(); - // if(this.district && this.district.length){ - // this.initialize(); - // } + if(this.$Cache.has('cityList')){ + //检测城市数据是否存在缓存,有的话从缓存取,没有的话请求接口 + this.district = this.$Cache.getItem('cityList') + this.initialize(); + }else{ + this.getCityList(); + } } else { toLogin(); } }, methods: { - // 回去地址数据 + // #ifdef APP-PLUS + // 获取选择的地区 + handleGetRegion(region) { + this.region = region + }, + // #endif + // 获取地址数据 getCityList: function() { let that = this; getCity().then(res => { - this.district = res.data + this.district = res.data; + let oneDay = 24 * 3600 * 1000; + // this.$Cache.set('cityList', JSON.stringify(res.data)); //设置不过期时间的方法 + this.$Cache.setItem({name:'cityList',value:res.data,expires:oneDay * 7}); //设置七天过期时间 that.initialize(); }) }, initialize: function() { - let that = this, - province = [], - city = [], - area = []; + let that = this,province = [],city = [],area = []; if (that.district.length) { let cityChildren = that.district[0].child || []; let areaChildren = cityChildren.length ? (cityChildren[0].child || []) : []; @@ -216,7 +220,7 @@ break; } - // #ifdef MP + // #ifdef MP || APP-PLUS this.$set(this.multiArray, 0, multiArray[0]); this.$set(this.multiArray, 1, multiArray[1]); this.$set(this.multiArray, 2, multiArray[2]); @@ -224,9 +228,6 @@ // #ifdef H5 this.multiArray = multiArray; // #endif - - - this.multiIndex = multiIndex // this.setData({ multiArray: multiArray, multiIndex: multiIndex}); }, @@ -254,6 +255,13 @@ that.city_id = res.data.cityId }); }, + chooseLocation: function () { + uni.chooseLocation({ + success: (res) => { + this.$set(this.userAddress,'detail',res.address.replace(/.+?(省|市|自治区|自治州|县|区)/g,'')); + } + }) + }, // 导入共享地址(小程序) getWxAddress: function() { let that = this; @@ -456,9 +464,7 @@ setTimeout(function() { if (that.preOrderNo>0) { uni.redirectTo({ - url: '/pages/users/order_confirm/index?preOrderNo=' + that - .preOrderNo + '&addressId=' + (that.id ? that.id : res.data - .id) + url: '/pages/users/order_confirm/index?preOrderNo=' + that.preOrderNo + '&addressId=' + (that.id ? that.id : res.data.id) }) } else { // #ifdef H5 @@ -469,29 +475,7 @@ delta: 1, }) // #endif - } - - // if (that.cartId) { - // let cartId = that.cartId; - // let pinkId = that.pinkId; - // let couponId = that.couponId; - // that.cartId = ''; - // that.pinkId = ''; - // that.couponId = ''; - // uni.navigateTo({ - // url: '/pages/users/order_confirm/index?cartId=' + cartId + '&addressId=' + (that.id ? that.id : res.data.id) +'&pinkId=' + pinkId + '&couponId=' + couponId + '&secKill=' + that.secKill + '&combination=' + that.combination + '&bargain=' + that.bargain - // }); - // } else { - // // #ifdef H5 - // return history.back(); - // // #endif - // // #ifndef H5 - // return uni.navigateBack({ - // delta: 1, - // }) - // // #endif - // } }, 1000); }).catch(err => { return that.$util.Tips({ @@ -510,7 +494,6 @@ .addAddress { padding-top: 20rpx; } - .addAddress .list { background-color: #fff; padding: 0 24rpx; @@ -548,10 +531,6 @@ font-size: 30rpx; } - .addAddress .list .item picker .iconfont { - font-size: 43rpx; - } - .addAddress .default { padding: 0 30rpx; height: 90rpx; @@ -585,4 +564,15 @@ color: #E93323 ; border: 1px solid #E93323; } + .relative{ + position: relative; + } + .icon-dizhi{ + font-size: 44rpx; + z-index: 100; + } + .abs_right{ + position: absolute; + right:0; + } diff --git a/static/html/pc.html b/static/html/pc.html index 8450d453..7148bd20 100644 --- a/static/html/pc.html +++ b/static/html/pc.html @@ -18,7 +18,8 @@ width: 375px; height: 667px; background-color: #fff; - box-sizing: content-box; + /* box-sizing: content-box; */ + box-sizing: border-box; border: none; } @@ -39,20 +40,15 @@ window.isPC = true; window.onload = function(){ /* 监听电脑浏览器窗口尺寸改变 */ - window.onresize = function(){ - /* 窗口宽度 小于或等于420px 时,跳转回H5页面 */ - if(window.innerWidth <= 420){ - // window.location.pathname = 'https://java.crmeb.net/'; - /* 若你的项目未设置根目录(默认为 / 时),则使用下方代码 */ - window.location.pathname = ''; - } - } + if(window.innerWidth <= 420){ + window.location.pathname = '/'; + } } - + \ No newline at end of file diff --git a/static/images/1-001.png b/static/images/1-001.png index 2fd4914923addad4cd1e9b2c7b4a3c523dcb337c..c2d7fae88c0b20f358a1cbdfb261a4a28e331174 100644 GIT binary patch literal 1946 zcmaJ?c~BEq9NwrP9%zV+2r4cMDyTU&cVYr0*>H#nkj9enKtr+#DI^<{wOPO-Rg8f; zYO$V0ElQ^;Dy`!MYQ;jTbwC>wMT^C&wdgp47OG>Nu^R;2KWuk)-+TM^`+mRg{f^m+ zEOlz=*r>4p0EDKeAsTYd4m=^jAaitD_4>RE|y#obgMl25n)2(_lszLR} zqLmj>2>^_=S+qJ_r&=gBU{;1cfMF0;JIMwBNfKe#8wyYy%tOrF zsaPtz0?oIi6+6)Piq%>}ae+Z(gpv|L2_Ys8SW#RL64pYSQ%p#qLAzpd9oS|<;2;Dq zkV0=n=~P*u0&}1skHM!KU@i|7h!`-R!xf3hrKwxD+ClzBz)`u2Q`_OeSOZ|BeDcQjIv%VIh;EFGMiIDl2Nk(-A2|eqk6bMloMx zMDuugY`PF7!)7pXg>)f|^66{=83++iq&Jv^!*<@qm!)tyA`ZeOM@K?At>69^!KTmn&8{P(6-0v=~-6Tm@PA7>+sfF*~SG1hOsy z<8v%FBj$1@1k&{8)ClUZe25xT9GDdxjI-GC4h?Js7I4{ezA}ZyC-n=3GDN1}!ZKK{ z4;2A{QS5&JwIGFWqnE2%7~dEm9#8sN7<~Nn9&0ubdT1~j~LTljda8zQcu2}vNC3Y zZ=H7q_ny0F>6rwEm%212S3=P4Ut5oGH$~pw+;pd^{z-rT`L>ciZ;Ljw^L6$jtd6r) z%h++$`${VxRi5T4PYZ)$Xi$u1UA(mz-nQU}#N@6M8EE{jg|ntU*HurLm2kCUrrJ{` zpk1OgWV=V~``AT!5Fzgmw)1zl_EoRREe`FZ{F))h-LnO^#-98>cG{_dmeY3)WxHa1 zO%ye9mGVs=adCPB1-yMB6b^ehzO1$VOw@?vc3Q*K&iYLyuZ~GKe=#G=v8{B49G^wsc^omZ#oA$d?IjeotXtwu&eXgnVc~X5B zWk&gi3t{4lkjZ5`%O6P2wD}K@&Yc+Yd|J1{)U}96>8P3Xmm}rrT%KehfSuc>29z%& zv$wyvSzE5|;e@TgJzDf70JnL1mmOra?ho0c+s>&xBzFeYv+$C-ueJyhd$Tt^ zfX@8rr*GM+uBGxuExyy@rcUwOZ~ir3@@#e5kxAVc;jMD@Ai-fls_T8a4|@KbP@f7< z9MSDMIM61QZuD2g>9TxtZu*x2xt)C>;a|8fPvTZ}@5y$nK~C7nsKa-U+?*-dot2-8 z>bdyds* zjITMGsxX5z&y*YC+z5Ql$}3AkH*XkIq&b#s{!ObmdAcunW8>_O744yoT|swv4RaCz z9v*fBAWJ`H7nCXOm5kZI1a`L^M#D zxa8uF9kA`Q-N!#Xus{M7%C83fbgVM-S*uNue`AYo< z_fe9X_XR&aIb!X#-mC*1-IkZnl7CjzU7Koplvq@j1yVC>u1`*icy?My@leNnO5PA6 zk3;0OtM}-dY3ljo+HZ}0VJ)yfBD7rUK==J|HPH++2?)+et7!)(lp)Cp=KqG)PHSxJP+_wfCO3>%=clYL*v;Jh%D2>m(u#S7P4RJ(z*G zzh2BRKdC71$&s!3r9n`8Hn%^fUYcFHBK~!_cU~D(s%tts`}Czz)N@-)nd+y@ q5ocyVWJo|TH9;Qd^F8_s7zr$!UfEb*^vWOjTc#`3NWFZ;+P?w4$m2-> delta 2116 zcmV-K2)p;155^FX8Gi!+005m)x�K0(MYLR7C&)0Q0v(@3l$svOMy!K<%U|?wTp^ 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 Ij&*f^1N#sj@&Et; delta 2062 zcmV+p2=Vvt3y=_y8Gi!+005m)x�K0#Z;+R7C&)0Hrwqq&EPiIRL^D0MZ%<(;5fU z8wu4O3DOz|&JqIB8VAxE2hkY@(G~;J8wb-G2+|q{(isNz#9yU20Mi=?&>05rvp}Xl z2EG{p(i#ZT8VJ)G2hth`(i#W)(P_$mJ*GMU(i#W!zD(2{3V+iY2hte@^v!#uIRNLa zM)S8pvQQGGIRNvtKhhcq^}|=v8VA!H3DOz{@uMa6&wA1s2=&Wj^0!CP7zWpuIqJJ& z@5glTqb2gVM&2AIn*Bwr8oekH~`Ta2cIH~{m*SEo7vraA%8 zi$3tCDxx(2-G8NJ*dY<|#8ULpkn*N0+9MS9)0MYfAo8s?>zh9H#8>Q@Y~-?V>USTd zHvsd;V&P9F^0PqWPBPOQ2=_%q_((^kIRNlHH`pN&?K(8_Ks@t8KJ-IC;42^8Cm7@~ zCGkHx<}xVN9t`O=F6%ci=QJwgE+gJ38`>ij=rt_tIe#+ZEg{<_7W248@u@G~DjfF7 zVfDvc^uSZ`r6}~fOY*Zm@~}Dd$7b}sPxaD+??X5B#98pgP4l%v@~t)X&1v?`W%hkW z^uky1L^|=SGx4S@@SrB%F&?>J9JyT>_STr|z-0ArM)qYz=UyPRRu=Trko3-Z;;>!u zoKfl*N%Eyc^;$ymp+4}VI_pg`=R_vObR@A)53ENF^39LquU7T2RPez@^GiSN zeL2N;IPPgT@|891SvBs4D&%D;>vJf*W+&&leBi8V=YCkyl2z=#Q0B8l+MGANX)5G7 zDDIOaHpS)V0001DbW%=J0M|IL2KDjnF8mMGQ-2^B`G9Fa{>pME9~%tk;?1U82>$Zh z&Yzn!F)D76%gR3*< zY}~PHMM0#zOQ(+=K2SUK^VP@N+Q&e3b#()^gM+IMWuLqt1 zu8*I=3o49WoMkI~QvWr)3kL$v-+RQ{;*z+}w@8Lzx|){yPp^i;0Be5$;#D1%l7BXf zBQQZG!7!VyCRkSA^5k>I$3X@*R5!5dTOe?)xY?|;VOa7qPOHa>Fd&0n8l2TcIv-H-rlFI9k ziUF|@tPK>SUiw9a{G4W!|NpRcfZLDiI^;bjW}I~ zA)?vzt5d0@h_^^$2~Dhi*Y5&E8wMmwXCp?(K%fl}EzY}*o$b$_l`_Q2-ZyVvzV354 zEi@5}Wh1T>VNj50*Ap+go0=LM??E*-HFbBtz_t1iq9mSm>(miMt-+|#Tz_Vy(HIRQ zh+;WwT;ii>qRaX(qTTAEiJOzy1CvIbb)nzt^=SzlA{ih~XnlZ4xhIuNY^IBmAKiY7 z*MWxA&_HTwuf^~7ki@7s4nQfI(dKcREMRRoBoO4G5y8?H6Uq#hHG}=yStiDqwc(Hm zsX;(EB3v4oCr8TqGcLp^Lw}+neE>-_jS%QVBkE9QlH*wYNRMcCyG?$JlSC2*95(_S zZXigY)8aRo=(CQAXU&X+@uSu0wL1V&t0f2n5COjF^$v&K%O^7lDIqDeQ}f|QM)*jF zM=4m3Iu~PixPx(cRs#Eln?fBmN%Vn}{)-4^^r6haSjP(3r4UgLhkxcF45Kom_j#>; zl$oepA(tXl#Ly0R(spDrgMLQJ;gVcnaCSwD=%aCgVCxCS;V^_?MCPK1l5+vVOB}6D zpSF>S3>iWvj5Q!~LMAPWK|q}c4(Xr_1Owz3+W5jg?ff5 z1!Qp|G=(W~oE*-hXXIQ$m=msNhJiS;INdX{Bz9uD7!l#x|LmDz^P~xR_Y6dir)Lt9 zY4@1jg%jU1R;$wvQaGY#9Cka;o=G0nGodo#{Cg&iQ_l<&Q-7ibY?6yZh``}v_Y9WH z!H@AGlo_`lUg7wdJ(I(!XVSAq_KYTc&j6x0Rx046S@Y?hvBRDT`EQ1Y_KZl*Ovw5N zEme$q29<(_7ODlZXRaQU#qxTSB9$*XTFCSa3{7aytj|%vg5mf4+WxZ73XxRL0E(f1DQuvh;z~O@y1Kf0dU|^4 zr?|EI1d(X@20#q=6j!`<$?OPUe4JmP3`0Buc#*4M`L0t77G!5nlPVCsH s7K~rB)oS&M6&Ka&0>Pvv_226crPAmguCYn`00000Ne4wvM6N<$f=wgu=l}o! diff --git a/static/images/2-002.png b/static/images/2-002.png index bfd1926c9d639e34a606144cd452b7508a9a8a5c..76aa0d23d6628f0bdfad7397bd9a04b6e02a5d9e 100644 GIT binary patch literal 1417 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 Eg4JwZJOBUy diff --git a/static/images/3-001.png b/static/images/3-001.png index 664de97f494a89bf70f5b940ceeb4521bd6a0630..b55ee3113dc06dbbf4db0b79457fa66b9bae9cc3 100644 GIT binary patch literal 2133 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 Ky9yicU;hgdk@)NY diff --git a/static/images/3-002.png b/static/images/3-002.png index 8d383bca9855e0d78ca83a51ce9533d0d6e65164..4a0ca4193307f79dd82464101a696a8b8f749668 100644 GIT binary patch literal 1899 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 GlK%s9X5YpD diff --git a/static/images/4-001.png b/static/images/4-001.png index 76b1e6d3efe151ac5c48e7f3b2a1f77db5b917a0..26d7fbe565bb2eae0db366df92ea71d5b9a92d62 100644 GIT binary patch literal 2482 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 diff --git a/static/images/4-002.png b/static/images/4-002.png index 77df66eca3f446a2e95cb87cb1626971092e571e..f3304d79658b28227c25306e33462033b345feca 100644 GIT binary patch literal 2016 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 +// +---------------------------------------------------------------------- + import { EXPIRE } from '../config/app'; class Cache { @@ -7,6 +17,7 @@ class Cache { this.cacheGetHandler = uni.getStorageSync; this.cacheClearHandler = uni.removeStorageSync; this.cacheExpire = '_expire_2019_12_17_18_44'; + this.name = 'storage'; } /** @@ -18,7 +29,7 @@ class Cache { } /** - * 字符串转时间戳 + * 日期字符串转时间戳 * @param {Object} expiresTime */ strTotime(expiresTime){ @@ -27,17 +38,64 @@ class Cache { return Math.round(new Date(expires_time).getTime() / 1000); } + setExpireCaheTag(key, expire) { + expire = expire !== undefined ? expire : EXPIRE; + if (typeof expire === 'number') { + let tag = this.cacheGetHandler(this.cacheExpire), newTag = [],newKeys = []; + if (typeof tag === 'object' && tag.length) { + newTag = tag.map(item => { + newKeys.push(item.key); + if (item.key === key) { + item.expire = expire === 0 ? 0 : this.time() + expire; + } + return item; + }); + } + if (!newKeys.length || newKeys.indexOf(key) === -1) { + newTag.push({ + key: key, + expire: expire === 0 ? 0 : this.time() + expire + }); + } + this.cacheSetHandler(this.cacheExpire, newTag); + } + } + /** * 设置过期时间缓存 - * @param {Object} key - * @param {Object} expire + * @param {Object} name key + * @param {Object} value value + * @param {Object} expire 过期时间 + * @param {Object} startTime 记录何时将值存入缓存,毫秒级 */ - setExpireCahe(key,expire) - { - expire = expire !== undefined ? expire : EXPIRE; - if (expire) { - this.cacheSetHandler(key + this.cacheExpire,this.time() + expire) - } + setItem(params){ + let obj = { + name:'', + value:'', + expires:"", + startTime:new Date().getTime() + } + let options = {}; + //将obj和传进来的params合并 + Object.assign(options,obj,params); + if(options.expires){ + //如果options.expires设置了的话 + //以options.name为key,options为值放进去 + // localStorage.setItem(options.name,JSON.stringify(options)); + uni.setStorageSync(options.name,JSON.stringify(options)); + }else{ + //如果options.expires没有设置,就判断一下value的类型 + let type = Object.prototype.toString.call(options.value); + //如果value是对象或者数组对象的类型,就先用JSON.stringify转一下,再存进去 + if(Object.prototype.toString.call(options.value) == '[object Object]'){ + options.value = JSON.stringify(options.value); + } + if(Object.prototype.toString.call(options.value) == '[object Array]'){ + options.value = JSON.stringify(options.value); + } + // localStorage.setItem(options.name,options.value); + uni.setStorageSync(options.name,options.value); + } } /** @@ -76,8 +134,8 @@ class Cache { if(typeof data === 'object') data = JSON.stringify(data); try{ - this.setExpireCahe(key,expire); - return this.cacheSetHandler(key,data); + this.setExpireCaheTag(key,expire); + return this.cacheSetHandler(key,data); }catch(e){ return false; } @@ -150,6 +208,39 @@ class Cache { // }) // } } + + /** + * 获取缓存,调用后无需转换数据类型 + * @param {Object} key + */ + getItem(name){ + // let item = localStorage.getItem(name); + let item = uni.getStorageSync(name); + //先将拿到的试着进行json转为对象的形式 + try{ + item = JSON.parse(item); + }catch(error){ + //如果不行就不是json的字符串,就直接返回 + item = item; + } + //如果有startTime的值,说明设置了失效时间 + if(item.startTime){ + let date = new Date().getTime(); + //何时将值取出减去刚存入的时间,与item.expires比较,如果大于就是过期了,如果小于或等于就还没过期 + if(date - item.startTime > item.expires){ + //缓存过期,清除缓存,返回false + // localStorage.removeItem(name); + uni.removeStorageSync(name); + return false; + }else{ + //缓存未过期,返回值 + return item.value; + } + }else{ + //如果没有设置失效时间,直接返回值 + return item; + } + } } diff --git a/utils/util.js b/utils/util.js index 0d2975de..05a8097c 100644 --- a/utils/util.js +++ b/utils/util.js @@ -533,6 +533,30 @@ export default { } return value; }, + /**根据格式组装公共参数 + * @param {Object} value + */ + formatMpQrCodeData(value){ + let values = value.split(','); + let result = {}; + if(values.length === 2){ + let v1 = values[0].split(":"); + if (v1[0] === 'pid') { + result.spread = v1[1]; + } else{ + result.id = v1[1]; + } + let v2 = values[1].split(":"); + if (v2[0] === 'pid') { + result.spread = v2[1]; + }else{ + result.id = v2[1]; + } + }else{ + result = values[0].split(":")[1]; + } + return result; + }, // #endif /* * 合并数组