R%YJE0WT&r4cPDU$peCeiVYfsyISstLm> z?fdp7^b3?1oq_0cV_eM0bM+JFn2TAg6e)4Ac7mPxMU*gkE%4$?zs;F|VxKD~;LC3+ z5l}R#*3fU^BrC-oj=Hy+nVmKI+t~_jOqTJ8duV8+#Cfy(@ctWcJ%aM(`13N;B_^NX zlJ~a(GUSG*Pa^vHqXby>iNGS+ybAE*9r4yFjLjE zX`Us wh_ol(_3ePpoHf(jAkW*>@j z&H*32eJ!5+d;6l$T{M3N7)kS- >p z;Q1s2uv5BXbCGW~y$Y9sQg@kRc<#o;b%4SZUtdoCy~Bf1 A8(vEPDND!P?UMs-G2`5HLWN`4}^d$Nl<%)voKitK1ef$^v9TL6KlG6Xb&HR78 b 9`Lvwc zr{t4Eh|vL|B8g``&o9p(@VuTM?!)W4U)TM*U-xxg@Avz@lh4^(34)J aqn;!1ee$ zRa~vy*8oorMC4Vys=La#l6L5)daNlOlOwf1eb{GLX3*yix-HS$BM;~>ePIj7I10E- z8CHczaZ32Vofs`_uZ(X59yo|vWLnd*%OWzsEbf~(Z*FdHZ_8w*P=*JwT6zYX&bx=X zI%+Q~cb9W7+j!>w{{8#tK|#GA(liJz&pZ0U_;4TXr~MH374@{aTQ@##lRa7hfCUVP zRCwd5e3-OjSd^UZYrP7D0E}JEWJ#%F?WlxA(a!t!l)P1`M@*W(y&tOn$q>v653z#C z|JnQTWh1oM>C;Ke3<;NIq@!cuIgGjl1^yI8tWp-LLP(O}DEI1c7Vh3FuyrMNE6d~G zJCt*AJ!@-g{4n|4qC(W?9*K(iSYrOF_rb#|1T61ScjRZVfzu|$oGv3J exnn v)YEfOSax0|}a)bXO z%?p6Z@Gy@%@%h@o(s0E?1QX;~YrO*saO3*cInA7cVZc3o)^z<-jN0$D!T4^1R=I(k zhsv$a_Djvv&2l1zh#~JL*<%dULJw(JTjIU%!fl7B58>C13p|`PG6Ts-eazLcu+elE zRiSS;WOsIU&=Sg6ZA+Tzj3WQKznU^;D%clEw01*B7 #f}~cX761MdqJq>-0F4EMBX7HyjsCAtZg7k>WgFA0>>6jG5nP|JtnymDIts z$&hyOL>E@5;ySj*B*Sb;S%HhnfMnfF6jUUAWkuVWM~$wG7q3XE8<3>z;QABHyv_ z?L*cp%*uu8R~EAuQJzQZWp;s1k|UGB=0DuBfIKd~HsSVD^S5EipfK-=0G$(wf^$z( zj7bL AF_N%~S_vVR@P2>MjK)JopVg4CoaH4x9AyGlxW z%h{Ns*L=rrpHI02yD)LHI*O7@s_Qu3(9tG83omZwZ$b>Eu@k4@yqiSLTfZvd^B(F& zLJhF(y^^4#M@J|Cc0z=Yo0rf9FYu I0%i()#b(E2jO|wk)mZ7JvK<8ua~*Pg zdVXGE*i-$lYA}~p2lL|gP1{iT#pdJyap^h!o=JpwD$nUc ccThc9`pLb}V$LtA_)PsIf?A%Z#VL>??C8S*ytXx}vFfV6gBl0eQe31fX zfxi1`ijmA^4#aFWlz{)s)FttUo@y0!$^iaGVwC?G)KJ-Q3F9rtjBn}a=%`d}KQSu` zV{9O>nvsv^P~_9%%f^TyX;PZ?spYhnBmMHRq6#7}Uc_whJy%(M6_B4^dR$hq=ud|F z2Jb>Japdii^ruR7hyrZ+vi|pSsINH2W)rl*i<+v91ugm+zezY-$SM>m*fKXBX!KlI z?(@2qs}s{_S+^x!zXjt&Y&&V~$m}bduN4TPPMvj9_XCz{*H2adm>+lF+(YkaiI0DC zf~aDZB7r|>-Ln-gU8RRO*jXFHGbNJ9o--b +LPwasPO 3e;14w(A~o05%93Hd0LIULGmTslI*=BF0d;X zbncwd06z1KlY9HDrv$Pmgvt<2y&UIXk|L#;FdNu9 xQG*RoT z*ee%M5@`yy#4wW#+kBi Knp4fK1s`7jFh?MeOLKccXv17*3 %}i%l zHzsO(MUz^Q%{MQ$KFd)hiEsL_`BuwrB2eaW1=Qo~a-+6erYgw06Ub58PiPSC_odx9 zg89_PnB(CVAzRscIcsIaeID2n3}+)h>=Ep7 RrdKf-+}nBPPmb96B+f3E zwk0?Z^a;HNx?%~BhIL!tMQMPDxG5)kgC#Da+h| bE{| zV4I-CjJDNfFHd@tVhN-X04h&G?Y*aoF~bth!oAPxf0a2LqX@cB7-6)?r6*shN3iiJ zU(Q-@%CF|~r& XyqJvee3fT{GRfj7*CkJrVm~A;wKuH&Py)L++Nyx$6XdyVecyW9 zP}sozUTc)VpIrV8=X`O${xYI|gf)^-r`3|HL)RIXAb)Y`-<9A1c)ZJkbeRg@$zd;m zw~1sfxhA1CD_^^$f)^AZ8qT91va4krXw9cGB(@ag3qkWegY;7fwUiasOjAf5O~9U7 zx$JgcP<}8amy@2!)k@oZkB1S864{8Mtkh}afnP>Na4q=(-PSFh)om3!&Cx }L|9yuY!Z-_ z|D$_qQi~7ebIooqqY6M11p GbU_-@GJIy?MN{DUudG5gHY zxue9Gn3%y7W2GAMue_n`BlJ`!$)*?1`Qc?^q2ZadqT(Yl8X%tQoJ->zm6Dy{MpF~) zp7M1%#7+G!sF?$^Cb+7k+!@Iz!i&i-W-%uLL8~*R#6}Ylnn~EWe1~Xa_@LlQ20r+X zR13$95us^$R;Gxu(9tKbA`b)ypJ2lsFP0}v*9co*V_bHx@#L^QbLP1*bs$l#L*w1c z-bGhz$BIIS aFFIXA&FU?$sX&F zyRlp}rkk_{Yh^*xKIUCl@7ru}S0{EvGi9J1CG76~AdNwq$0v9sH~o#imG*zEtQ}+! zKTWA^(%^?*F9kH(ICyox@b8Xs_-r~Hwa$vPH;)h^8BV12r2`(&Q&?(K!Tq7nZLZG* zV@`^7P*z2khWa|9Ij~G2wj<9+^U-kBrIa^-ZB+Jb?O@Zf|MB#3rMD_~RIpvYq-~B? zm?6v1RC$q|&(|GR(t~nj%wQ6Z7BbjNtNZH0& do7)v#mU EiqN$yI{B%pL;j3dF_#hxIlmC2QC?$%e_7i>}+H7Q?yg8#}^=Dc^7dfyuG zu|1s!{eCjg1>$ Sn%=SG=prG&oTtjlBZ87i-BkyKUGS|VBO&xAXx^*xLfan z@i-QEZG?#u@0XkkK4YY8NiApe%T@-vKvajs^YiK!_zglkEk7BI+{H;nieTS DCPD$f| z*?Uo6%WzXSOu&TrFb%&c@D8mKzDPB2#2#(rh`paTKRDns^ISI}Y;&cnFH+EK3r&rQ zO2oL1YhBywuU;ShBz+^7uyD^tBuE-nDZh@r5_F~FTwB832GQT)*bv|k%G7BP4LKxO z4ZE_gn{(BKYWlT#j)bTgnRPu7J}oDb)S*P0Pm-CqeXkY8d1E~Z47u8 %Zv%tHB!6=XEOMu-HKNtc~LjC^F(OpQ|uK3zqpaWW*aq9osB4=bKGO%NVT#j z8DYQTtnU-IRPPt9hMg{Mb!;R5+Qj)-xNny?lT6gq5?MwgnE}V$#YQsmO*nT_OGKB1 zG&Ob6C}Z2FdmrofstRGVqCb`i*p|=HC?_dD=-qdF{S~68o+n!!N^jy-=_@jj))McJ z$&*Frqn@FpShit8pHj5(c!)){3BWNM{QodH04~1g#;^`5Ae>JaE^7;W^IB6c(tiOv Cj2R>V literal 0 HcmV?d00001 diff --git a/components/statusBar/statusBar.vue b/components/statusBar/statusBar.vue new file mode 100644 index 0000000..ac53a6e --- /dev/null +++ b/components/statusBar/statusBar.vue @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/config.js b/config.js new file mode 100644 index 0000000..54c17df --- /dev/null +++ b/config.js @@ -0,0 +1,10 @@ +export default { + // baseUrl: 'http://192.168.1.63:1017', + baseUrl: 'https://dianxr.com', + sok: 'dianxr.com', + // sok: '192.168.1.63:1017', + // baseUrl: 'http://192.168.1.63:1017', + + + isInvest: true +} \ No newline at end of file diff --git a/hooks/useNav.js b/hooks/useNav.js new file mode 100644 index 0000000..ce79835 --- /dev/null +++ b/hooks/useNav.js @@ -0,0 +1,73 @@ +import { + ref, + watch +} from 'vue'; + + +export function useNav() { + + + + const nav = (e) => { + if (e.call) { + uni.makePhoneCall({ + phoneNumber: '4008005326' //仅为示例 + }); + return + } + if (!uni.getStorageSync('token')) { + uni.showModal({ + title: '提示', + content: '为提供更好的服务,请前往登录', + success: (res) => { + if (res.confirm) { + uni.navigateTo({ + url: '/pages/login/login' + }) + } else if (res.cancel) { + console.log('用户点击取消'); + } + } + }) + return + } + uni[e.type == 'nav' || !e.type ? 'navigateTo' : e.type == 'switchTab' ? 'switchTab' : 'navigateTo']({ + url: e.path + }) + } + + const relTo = (path, token, call) => { + uni.reLaunch({ + url: path + }) + } + + const navTo = (path, token, call) => { + // if (!uni.getStorageSync('token')) { + // uni.showModal({ + // title: '提示', + // content: '为提供更好的服务,请前往登录', + // success: (res) => { + // if (res.confirm) { + // uni.navigateTo({ + // url: '/pages/login/login' + // }) + // } else if (res.cancel) { + // console.log('用户点击取消'); + // } + // } + // }) + // return + // } + uni.navigateTo({ + url: path + }) + } + return { + nav, + navTo, + relTo + } +} + +export default useNav \ No newline at end of file diff --git a/hooks/userInfo.js b/hooks/userInfo.js new file mode 100644 index 0000000..d0bb636 --- /dev/null +++ b/hooks/userInfo.js @@ -0,0 +1,127 @@ +import { + userInfo, + userInfoIsInvest +} from '@/api/api.js'; +import config from '@/config' +import { + onShow, + onLoad +} from '@dcloudio/uni-app'; +import { + reactive, + ref, + onMounted +} from 'vue'; + +export function userHook() { + const user = reactive({}); + const isInvest = ref(false) + const tabbar = ref([]) + + + const fetchUserData = async () => { + if (!uni.getStorageSync('token')) { + return + } + + + try { + const data = isInvest.value ? await userInfoIsInvest() : await userInfo(); + Object.assign(user, data); + } catch (error) { + console.log(error); + } + }; + const tabbarData = async () => { + // let isInvest = uni.getStorageSync('isInvest') || false; + tabbar.value = isInvest.value ? [{ + index: 0, + name: '首页', + img: '/static/tabbar/select_home.png', + acImg: '/static/tabbar/home.png' + }, + { + index: 1, + name: '订单', + img: '/static/tabbar/orderIs1.png', + acImg: '/static/tabbar/orderIs.png' + }, + { + index: 2, + name: '充电桩', + img: '/static/tabbar/cds.png', + acImg: '/static/tabbar/cd.png' + }, + { + index: 3, + name: '我的', + img: '/static/tabbar/select_my.png', + acImg: '/static/tabbar/my.png' + } + ] : [{ + index: 0, + name: '首页', + img: '/static/tabbar/select_home.png', + acImg: '/static/tabbar/home.png' + }, + { + index: 1, + name: '地图', + img: '/static/tabbar/select_sq.png', + acImg: '/static/tabbar/sq.png' + }, + { + index: 2, + name: '扫一扫', + img: '/static/tabbar/find.png', + acImg: '/static/tabbar/find.png', + type: 'big' + }, + { + index: 3, + name: '发现', + img: '/static/tabbar/select_order.png', + acImg: '/static/tabbar/order.png' + }, + { + index: 4, + name: '我的', + img: '/static/tabbar/select_my.png', + acImg: '/static/tabbar/my.png' + } + ]; + }; + + // onMounted(() => { + // console.log('onMounted-Hook'); + // tabbarData() + // }) + + onLoad(() => { + console.log('onLoad-Hook'); + isInvest.value = uni.getStorageSync('isInvest'); + if (isInvest.value === '') { + isInvest.value = config.isInvest; + } + + + + tabbarData() + }) + + onShow(async () => { + console.log('onShow Hook'); + isInvest.value = uni.getStorageSync('isInvest'); + if (isInvest.value === '') { + isInvest.value = config.isInvest; + } + await fetchUserData(); + }); + + return { + user, + isInvest, + fetchUserData, + tabbar + }; +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..c3ff205 --- /dev/null +++ b/index.html @@ -0,0 +1,20 @@ + + + + + ++ + + + + + + + + + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..4f3e7ed --- /dev/null +++ b/main.js @@ -0,0 +1,34 @@ +import App from './App' + +import store from './store/index.js' +import uviewPlus from '@/uni_modules/uview-plus' +// 引入uview-plus对小程序分享的mixin封装 +import mpShare from '@/uni_modules/uview-plus/libs/mixin/mpShare' +// #ifndef VUE3 +import Vue from 'vue' +import './uni.promisify.adaptor' +Vue.config.productionTip = false +App.mpType = 'app' +const app = new Vue({ + ...App +}) +app.$mount() + +// #endif + + + +// #ifdef VUE3 +import { + createSSRApp +} from 'vue' +export function createApp() { + const app = createSSRApp(App) + app.mixin(mpShare) + app.use(uviewPlus) + app.use(store) + return { + app, + } +} +// #endif \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..ef83437 --- /dev/null +++ b/manifest.json @@ -0,0 +1,79 @@ +{ + "name" : "电小芮", + "appid" : "__UNI__334883D", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : {}, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " ", + " " + ] + }, + /* ios打包配置 */ + "ios" : {}, + /* SDK配置 */ + "sdkConfigs" : {} + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "wx9c307554d0e5edb0", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true, + "permission" : { + "scope.userLocation" : { + "desc" : "你的位置信息将用于小程序位置接口的效果展示" + } + }, + "requiredPrivateInfos" : [ "getLocation" ] + }, + "mp-alipay" : { + "usingComponents" : true, + "appid" : "2021004150609395" + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "3" +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..a436e10 --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "id": "itsse-20230104", + "name": "顶部导航栏滚动渐变", + "displayName": "顶部导航栏滚动渐变", + "version": "1.0", + "description": "顶部导航栏滚动渐变,适用于微信小程序,其他小程序APP没有测试过", + "keywords": [ + "滚动渐变", + "导航栏滚动渐变" + ], + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ] + } +} \ No newline at end of file diff --git a/pageInvest/facility/facility.vue b/pageInvest/facility/facility.vue new file mode 100644 index 0000000..a6472cf --- /dev/null +++ b/pageInvest/facility/facility.vue @@ -0,0 +1,213 @@ + + + + + + + + \ No newline at end of file diff --git a/pageInvest/login/getBack.vue b/pageInvest/login/getBack.vue new file mode 100644 index 0000000..80d0986 --- /dev/null +++ b/pageInvest/login/getBack.vue @@ -0,0 +1,152 @@ + ++ ++ +充电桩汇总 ++ ++ +{{ count.installCount || 0 }} +已安装 ++ +{{ count.installNotCount || 0 }} +未安装数量 ++ +0 +团队 ++ + + ++ + +安装电站:{{ i.stationName || '-' }} ++ +设备ID: +{{ i.id }} ++ +设备功率: +{{ i.deviceType }}KW ++ +设备类型: +{{ i.purposeType == 1 ? '商用运维版' : i.purposeType == 2 ? '商用合作版' : i.purposeType == 3 ? '家用专业版' : '' }} +地址:{{ i.stationAddress || '-' }} + ++ +下单时间: +{{ timeFormat(new Date(i.createTime).getTime(), 'yyyy-mm-dd hh:MM') }} ++ ++ +设备ID: +{{ i.id }} ++ +设备功率: +{{ i.deviceType }}KW ++ +设备类型: +{{ i.purposeType == 1 ? '商用运维版' : i.purposeType == 2 ? '商用合作版' : i.purposeType == 3 ? '家用专业版' : '' }} ++ +下单时间: +{{ timeFormat(new Date(i.createTime).getTime(), 'yyyy-mm-dd hh:MM') }} ++ + + + + + diff --git a/pageInvest/login/getBackAccout.vue b/pageInvest/login/getBackAccout.vue new file mode 100644 index 0000000..d083e5f --- /dev/null +++ b/pageInvest/login/getBackAccout.vue @@ -0,0 +1,160 @@ + ++ + ++ + ++ + + + + ++ 欢迎来到投资者平台 ++ ++ ++ + ++ + ++ + ++ + ++ + {{ tips }} ++ +确认 ++ + + + + + diff --git a/pageInvest/login/login.vue b/pageInvest/login/login.vue new file mode 100644 index 0000000..953c07d --- /dev/null +++ b/pageInvest/login/login.vue @@ -0,0 +1,178 @@ + ++ + ++ + ++ + + + + ++ 欢迎来到投资者平台 ++ ++ ++ + ++ + {{ tips }} ++ +确认 ++ + + + + + diff --git a/pageInvest/login/register.vue b/pageInvest/login/register.vue new file mode 100644 index 0000000..7594eb4 --- /dev/null +++ b/pageInvest/login/register.vue @@ -0,0 +1,192 @@ + ++ + ++ + ++ + + + ++ 欢迎来到投资者平台 ++ ++ ++ + + ++ + ++ 忘记账号? + +找回用户名 ++ +忘记密码 ++ +登录 ++ + +还没有账号?立即注册 ++ + + + + + + + diff --git a/pageInvest/money/recharge.vue b/pageInvest/money/recharge.vue new file mode 100644 index 0000000..9fd05a5 --- /dev/null +++ b/pageInvest/money/recharge.vue @@ -0,0 +1,121 @@ + ++ + ++ + ++ + + + + ++ + ++ 欢迎来到投资者平台 ++ ++ ++ 用户名由字母或数字组成,长度6-32 ++ ++ + ++ + {{ tips }} ++ ++ + ++ 密码必须包含字母、数字长度8-32 ++ ++ + 已有账号? + +立即登录 ++ +注册 ++ ++ 已阅读并同意 + 《用户注册服务协议》 + 和 +《隐私政策》 ++ + + + + + + diff --git a/pageInvest/money/wallet.vue b/pageInvest/money/wallet.vue new file mode 100644 index 0000000..5090a15 --- /dev/null +++ b/pageInvest/money/wallet.vue @@ -0,0 +1,190 @@ + ++ +当前增值收益 ¥{{ user.money2 }} ++ + 最小充值金额为{{ rechargeConfig.min_money }}元 ++ + +支付方式 ++ + ++ ++ ++ + + +微信支付 +微信快捷支付 ++ 立即支付 ++ + + + + + + diff --git a/pageInvest/money/withdraw.vue b/pageInvest/money/withdraw.vue new file mode 100644 index 0000000..9455e59 --- /dev/null +++ b/pageInvest/money/withdraw.vue @@ -0,0 +1,267 @@ + ++ ++ ++ + ++ 基础收益 + + ++ +{{ user.money || '0.00' }} + ++ +增值收益 ++ +{{ user.money2 || '0.00' }} ++ +充值 +提现 ++ + ++ + ++ +{{ moneyJson.find((val) => val.id == item.type).name }} +{{ item.created_at }} +{{ item.money }}元 ++ + + + + + + diff --git a/pageInvest/shop/affirm.vue b/pageInvest/shop/affirm.vue new file mode 100644 index 0000000..fa4a900 --- /dev/null +++ b/pageInvest/shop/affirm.vue @@ -0,0 +1,246 @@ + ++ + + +提现到 +请选择银行卡 ++ + + ++ ++ ++ ++ + {{ bank.realname }} ++ {{ bank.mobile || '' }} ++ + + +开户行:{{ bank.subname }} ++ 银行卡号:{{ bank.num }} ++ + + + +提现金额 ++ + +¥ ++ ++ 全部提现 ++ ++ + ++ + ++ {{ tips }} +当前基础收益:¥{{ getInfo.money }} +最低提现金额为¥{{ appConfig.chargeMinAmount }} +私户每100.00元提现手续费为{{ appConfig.free }}% ++ + +提现规则: + + +1.每月1号、11号、21号可提现,到账时间T+(1-3) +2.提现年龄是18-65岁 +3.提现银行卡是常用的一类银行,否则会有限额 +4.一月不能超{{ appConfig.monthQuota }}元,如遇超出 提现后管理人员会联系您 +5.提现次数不限、公户无限额、无手续费 + ++ + +立即提现 ++ + + + + + + diff --git a/pageInvest/shop/details.vue b/pageInvest/shop/details.vue new file mode 100644 index 0000000..cb15238 --- /dev/null +++ b/pageInvest/shop/details.vue @@ -0,0 +1,139 @@ + ++ + ++ + +{{ shop.name }} ++ + +单价: +{{ shop.currentPrice }}元 ++ + +总价: +{{ shop.currentPrice * dataFrom.num }}元 ++ + + + + + + ++ +购买数量 ++ + + + +购买须知: ++ 付款成功后立即生效,并投入生产安装,不支持退款、退货。 ++ + ++ +阅读并同意: ++ +《充电桩购销合同》 ++ ++ + + + ++ +阅读并同意: ++ +《充电桩托管协议》 ++ ++ + + +确认订单 ++ + + + + + + + + \ No newline at end of file diff --git a/pageInvest/shop/order.vue b/pageInvest/shop/order.vue new file mode 100644 index 0000000..1100943 --- /dev/null +++ b/pageInvest/shop/order.vue @@ -0,0 +1,214 @@ + ++ + ++ +¥ {{ shop.currentPrice }} +{{ shop.name }} ++ 库存:{{ shop.stock }} + ++ 销量:{{ shop.sales }} + 详情介绍 ++ + + + +立即下单 ++ + + + + + diff --git a/pageInvest/shop/pay.vue b/pageInvest/shop/pay.vue new file mode 100644 index 0000000..65a8068 --- /dev/null +++ b/pageInvest/shop/pay.vue @@ -0,0 +1,184 @@ + ++ ++ + ++ + + ++ ++ ++ +订单号 + :{{ i.orderNo }} ++ ++ + + + + ++ + ++ ++ ++ + {{ i.goodName }} + +数量:{{ i.num }} ++ 订单金额: + +¥{{ i.amount }} ++ +{{ timeFormat(new Date(i.createTime).getTime(), 'yyyy-mm-dd hh:MM') }} ++ ++ + + + + + + + + diff --git a/pageInvest/shop/shop.vue b/pageInvest/shop/shop.vue new file mode 100644 index 0000000..71d4055 --- /dev/null +++ b/pageInvest/shop/shop.vue @@ -0,0 +1,234 @@ + ++ + + ++ +¥ +{{ amount }} +支付金额 ++ + +支付方式 ++ + ++ ++ ++ + + +余额支付 +当前余额:¥{{ user.money2 || 0 }} ++ ++ ++ + + ++ 微信支付 + + +微信快捷支付 ++ + +确认支付 ++ + + + + + diff --git a/pageMake/invoice/applyFor.vue b/pageMake/invoice/applyFor.vue new file mode 100644 index 0000000..1d4f4be --- /dev/null +++ b/pageMake/invoice/applyFor.vue @@ -0,0 +1,172 @@ + ++ ++ ++ 请输入您需要的商品名称 ++ ++ ++ +{{ item.name }} ++ ++ ++ ++ ++ +{{ item.name }} ++ ++ ++ {{ item1.name }} ++ + + + + + diff --git a/pageMake/invoice/applyForDay.vue b/pageMake/invoice/applyForDay.vue new file mode 100644 index 0000000..95af129 --- /dev/null +++ b/pageMake/invoice/applyForDay.vue @@ -0,0 +1,115 @@ + ++ ++ ++ 发票须知: + 1.开票金额为用户实际支付金额(不含返利返佣) +2.未寄出的纸质发票会在开票确认后的20个工作日内寄出 +3.单笔订单只支持开具一种发票类型 +4.云快充仅为平台方,实际开票主体以申请开票时展示的开票运营商公司为准 +5.发票由各家电站运营商提供,一起申请可能会生成多张发票 +6.若超过20个工作日仍未收到发票,您可以通过(区号)+12366向开票公司所在区域的主管税务机关进行反馈处理 ++ + + ++ ++ ++ ++ ++ 充电单号:{{ item.orderNo }} + + ++ +即途展厅 +{{item.electricityAmount}}电费 +{{ item.serviceAmount }}服务费 ++ ++ {{ item.actuallyAmount }} + +元 +个人支付 ++ ++ ++ + ++ + + + + + + diff --git a/pageMake/invoice/invoice.vue b/pageMake/invoice/invoice.vue new file mode 100644 index 0000000..d1a2f5a --- /dev/null +++ b/pageMake/invoice/invoice.vue @@ -0,0 +1,127 @@ + ++ ++ ++ 发票须知: + 1.开票金额为用户实际支付金额(不含返利返佣) +2.未寄出的纸质发票会在开票确认后的20个工作日内寄出 +3.单笔订单只支持开具一种发票类型 +4.云快充仅为平台方,实际开票主体以申请开票时展示的开票运营商公司为准 +5.发票由各家电站运营商提供,一起申请可能会生成多张发票 +6.若超过20个工作日仍未收到发票,您可以通过(区号)+12366向开票公司所在区域的主管税务机关进行反馈处理 ++ + + ++ ++ + 开票运营商:{{ item.merchantName }} + ++ ++ +{{ item.electricityAmount }}电费 +{{ item.serviceAmount }}服务费 ++ ++ {{ item.invoiceAmount }} + +元 +个人支付 ++ ++ + + ++ + + + + + + diff --git a/pageMake/invoice/makeInvoice.vue b/pageMake/invoice/makeInvoice.vue new file mode 100644 index 0000000..a8aded8 --- /dev/null +++ b/pageMake/invoice/makeInvoice.vue @@ -0,0 +1,296 @@ + ++ ++ ++ 温馨提示: + 1.云充电仅为平台方,实际开票主体以下方展示的开票公司为准 +2.若超过20个工作日仍未收到发票,您可以通过(区号)+12366向开票公司所在区域的主管税务机关进行反馈处理 ++ + + ++ ++ ++ ++ {{item.createTime}} + + + +发票抬头 +{{item.invoiceTitle}} ++ +开票运营商 +{{item.merchantInvoice || '-'}} ++ + + ++ ++ + + + {{item.invoiceAmount}} + +元 ++ + ++ + + + + + + + + diff --git a/pageMake/refund/refund.vue b/pageMake/refund/refund.vue new file mode 100644 index 0000000..223de58 --- /dev/null +++ b/pageMake/refund/refund.vue @@ -0,0 +1,83 @@ + ++ ++ ++ 发票须知: + 1.开票金额为用户实际支付金额(不含返利返佣) +2.未寄出的纸质发票会在开票确认后的20个工作日内寄出 +3.单笔订单只支持开具一种发票类型 +4.云快充仅为平台方,实际开票主体以申请开票时展示的开票运营商公司为准 +5.发票由各家电站运营商提供,一起申请可能会生成多张发票 +6.若超过20个工作日仍未收到发票,您可以通过(区号)+12366向开票公司所在区域的主管税务机关进行反馈处理 ++ + ++ ++ 发票主体 + +* ++ ++ {{ !dataFrom.subjectType ? '请选择' : columns2[0].find((val) => val.id == dataFrom.subjectType).label }} + ++ + ++ 发票类型 + +* ++ ++ {{ !dataFrom.invoiceType ? '请选择' : columns1[0].find((val) => val.id == dataFrom.invoiceType).label }} + ++ + ++ 发票抬头 + +* ++ + ++ ++ 发票税号 + +* ++ + ++ ++ 公司地址 + +* ++ + ++ ++ 公司电话 + +* ++ + ++ ++ 开户行名称 + +* ++ + ++ ++ 开户行账号 + +* ++ + ++ + ++ ++ 收票人姓名 + +* ++ + ++ ++ 收票人手机 + +* ++ + ++ ++ 收票人地址 + +* ++ + ++ ++ 收票人邮箱 + +* ++ + ++ + +发票备注:改内容会打印在发票上 ++ + + ++ +合计 +14.05 +元 ++ ++ + + + + + + + + diff --git a/pageOrder/recharge/recharge.vue b/pageOrder/recharge/recharge.vue new file mode 100644 index 0000000..616be11 --- /dev/null +++ b/pageOrder/recharge/recharge.vue @@ -0,0 +1,285 @@ + ++ 退款信息 + +活动金额不在退款范围内 ++ +¥ + +全部 +申请退款理由 ++ ++ 退款须知: +1.退款金额不包含充值时使用的第三方优惠抵扣金额,退款时充值享受到的优惠金额也将全部扣除 +2.您的退款金额到账时间由各充值渠道(微信/支付宝)决定,请耐心等待,约1~3工作日到账 +3.退款按照充值记录进行逐笔退款,一次申请可能产生多笔退款到账记录,请注意查收 +4.正在充电或存在异常订单时无法进行退款操作 +5.根据各充值渠道规则,只可退一年内的充值金额 ++ ++ + ++ + ++ + + + + + + + + diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..caee605 --- /dev/null +++ b/pages.json @@ -0,0 +1,379 @@ +{ + "easycom": { + "autoscan": true, + // 注意一定要放在custom里,否则无效,https://ask.dcloud.net.cn/question/131175 + "custom": { + "^u--(.*)": "@/uni_modules/uview-plus/components/u-$1/u-$1.vue", + "^up-(.*)": "@/uni_modules/uview-plus/components/u-$1/u-$1.vue", + "^u-([^-].*)": "@/uni_modules/uview-plus/components/u-$1/u-$1.vue" + } + }, + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/home/home", + "style": { + "navigationBarTitleText": "电小芮", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "mp-alipay": { + "transparentTitle": "always", + "titlePenetrate": "YES" + } + } + }, + { + "path": "pages/mine/mine", + "style": { + "navigationBarTitleText": "个人中心", + "enablePullDownRefresh": false + } + }, + + { + "path": "pages/order/order", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false, + "navigationStyle": "custom", + "mp-alipay": { + "transparentTitle": "always", + "titlePenetrate": "YES" + } + } + }, + { + "path": "pages/sweep/sweep", + "style": { + "navigationBarTitleText": "扫码充电", + "navigationStyle": "custom", + "mp-alipay": { + "transparentTitle": "always", + "titlePenetrate": "YES" + } + } + }, + { + "path": "pages/order/detail", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/home/detail", + "style": { + "navigationBarTitleText": "电站详情", + "navigationStyle": "custom", + "mp-alipay": { + "transparentTitle": "always", + "titlePenetrate": "YES" + } + } + }, + { + "path": "pages/login/login", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "mp-alipay": { + "transparentTitle": "always", + "titlePenetrate": "YES" + } + } + }, + { + "path": "pages/home/star", + "style": { + "navigationBarTitleText": "开始充电" + } + }, + { + "path": "pages/mine/earnings", + "style": { + "navigationBarTitleText": "收益" + } + }, + { + "path": "pages/mine/sett", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mine/incomeList", + "style": { + "navigationBarTitleText": "余额明细" + } + }, + { + "path": "pages/mine/card", + "style": { + "navigationBarTitleText": "我的电卡" + } + }, + { + "path": "pages/mine/cardList", + "style": { + "navigationBarTitleText": "电卡记录" + } + }, + { + "path": "pages/money/recharge", + "style": { + "navigationBarTitleText": "充值" + } + }, + { + "path": "pages/agreement/agreement", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mine/car/car", + "style": { + "navigationBarTitleText": "我的爱车" + } + }, + { + "path": "pages/mine/car/add", + "style": { + "navigationBarTitleText": "绑定爱车" + } + }, + { + "path": "pages/find/find", + "style": { + "navigationBarTitleText": "电小芮" + } + }, + { + "path": "pages/find/myArticle", + "style": { + "navigationBarTitleText": "我的文章" + } + }, + { + "path": "pages/find/detail", + "style": { + "navigationBarTitleText": "详情" + } + }, + { + "path": "pages/mine/multipleNumbers", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/bank/bank", + "style": { + "navigationBarTitleText": "银行卡" + } + }, + { + "path": "pages/bank/addBankCard", + "style": { + "navigationBarTitleText": "添加银行卡" + } + }, + { + "path": "pages/mine/signIn", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "mp-alipay": { + "transparentTitle": "always", + "titlePenetrate": "YES" + } + } + }, + { + "path": "pages/find/add", + "style": { + "navigationBarTitleText": "发布" + } + }, + { + "path": "pages/protocol/buy", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/protocol/trusteeship", + "style": { + "navigationBarTitleText": "发布" + } + } + ], + "subPackages": [{ + "root": "pageOrder", + "pages": [{ + "path": "recharge/recharge", + "style": { + "navigationBarTitleText": "充电中", + "navigationBarBackgroundColor": "#000", + "navigationBarTextStyle": "white", + "mp-alipay": { + "transparentTitle": "always", + "titlePenetrate": "YES" + } + } + }] + }, { + "root": "pageMake", + "pages": [{ + "path": "invoice/invoice", + "style": { + "navigationBarTitleText": "开票记录" + } + }, + { + "path": "invoice/applyFor", + "style": { + "navigationBarTitleText": "申请开票" + } + }, + { + "path": "invoice/makeInvoice", + "style": { + "navigationBarTitleText": "申请开票" + } + }, + { + "path": "invoice/applyForDay", + "style": { + "navigationBarTitleText": "申请开票" + } + }, + { + "path": "refund/refund", + "style": { + "navigationBarTitleText": "退款申请" + } + } + ] + }, { + "root": "pageInvest", + "pages": [{ + "path": "shop/shop", + "style": { + "navigationBarTitleText": "商城" + } + }, + { + "path": "facility/facility", + "style": { + "navigationBarTitleText": "我的充电桩" + } + }, + { + "path": "login/login", + "style": { + "navigationBarTitleText": "登录", + "navigationStyle": "custom" + } + }, + { + "path": "login/register", + "style": { + "navigationBarTitleText": "注册", + "navigationStyle": "custom" + } + }, + { + "path": "login/getBack", + "style": { + "navigationBarTitleText": "找回密码", + "navigationStyle": "custom" + } + }, + { + "path": "login/getBackAccout", + "style": { + "navigationBarTitleText": "找回账号", + "navigationStyle": "custom" + } + }, + { + "path": "shop/details", + "style": { + "navigationBarTitleText": "商品详情" + } + }, + { + "path": "shop/affirm", + "style": { + "navigationBarTitleText": "确认订单" + } + }, + { + "path": "shop/pay", + "style": { + "navigationBarTitleText": "订单支付" + } + }, + { + "path": "shop/order", + "style": { + "navigationBarTitleText": "订单列表" + } + }, + { + "path": "money/wallet", + "style": { + "navigationBarTitleText": "余额" + } + }, + { + "path": "money/withdraw", + "style": { + "navigationBarTitleText": "提现" + } + }, + { + "path": "money/recharge", + "style": { + "navigationBarTitleText": "充值" + } + } + ] + }], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "", + "navigationBarBackgroundColor": "#fff", + "backgroundColor": "#fff" + }, + "uniIdRouter": {} + // "tabBar": { + // "color": "#999999", + // "selectedColor": "#999999", + // "borderStyle": "black", + // "backgroundColor": "#ffffff", + // "height": "60px", + // "list": [ + // { + // "pagePath": "pages/home/home", + // "text": "首页" + // }, { + // "pagePath": "pages/index/index", + // "text": "地图" + // }, { + // "pagePath": "pages/sweep/sweep", + // "text": "扫码充电" + // }, { + // "pagePath": "pages/find/find", + // "text": "发现" + // }, { + // "pagePath": "pages/mine/mine", + // "text": "我的" + // }] + // } +} \ No newline at end of file diff --git a/pages/agreement/agreement.vue b/pages/agreement/agreement.vue new file mode 100644 index 0000000..1c45235 --- /dev/null +++ b/pages/agreement/agreement.vue @@ -0,0 +1,21 @@ + ++ ++ 订单号:{{ store.state.dataObj.orderNo }} + ++ + ++ ++ + + +¥{{ store.state.dataObj.currentAmount || 0 }} +已用时长 +{{ store.state.dataObj.cumulativeTime || 0 }}min ++ ++ + + ++ ++ {{ store.state.dataObj.chargingDegree || 0 }} +已充电量(度) ++ ++ {{ store.state.dataObj.cumulativeTime || 0 }}min +已充时长 ++ ++ {{ store.state.dataObj.currentAmount || 0 }} +已充金额(元) ++ ++ +{{ store.state.dataObj.outputVoltage || 0 }} +实时电压(V) ++ +{{ store.state.dataObj.outputCurrent || 0 }} +实时电流(A) ++ +{{ store.state.dataObj.power || 0 }} +实时功率(KW) ++ +终端名称:{{ store.state.dataObj.gunNo }} +终端编码:{{ store.state.dataObj.deviceNo || '' }} +结束充电 ++ + + + + + diff --git a/pages/bank/addBankCard.vue b/pages/bank/addBankCard.vue new file mode 100644 index 0000000..e6573a8 --- /dev/null +++ b/pages/bank/addBankCard.vue @@ -0,0 +1,137 @@ + ++ + + + + + + + diff --git a/pages/bank/bank.vue b/pages/bank/bank.vue new file mode 100644 index 0000000..9c3d767 --- /dev/null +++ b/pages/bank/bank.vue @@ -0,0 +1,127 @@ + ++ + +请输入{{ enterprise.role == 1 ? '姓名' : '企业名称' }}: ++ + + ++ + +请输入手机号: ++ ++ + + +请输入身份证号: ++ ++ 请输入开户行: ++ ++ 请输入银行卡卡号: ++ ++ + + +请仔细核对信息,填写错误会导致提现失败。 ++ +确定 ++ + + + + + diff --git a/pages/find/add.vue b/pages/find/add.vue new file mode 100644 index 0000000..782d255 --- /dev/null +++ b/pages/find/add.vue @@ -0,0 +1,199 @@ + ++ ++ ++ ++ 添加银行卡 ++ + ++ ++ ++ ++ ++ + {{ item.realname }} ++ {{ item.mobile || '' }} ++ + + +开户行:{{ item.subname }} ++ 银行卡号:{{ item.num }} ++ + + + + + + + diff --git a/pages/find/detail.vue b/pages/find/detail.vue new file mode 100644 index 0000000..f16e681 --- /dev/null +++ b/pages/find/detail.vue @@ -0,0 +1,120 @@ + ++ + + ++ +标题 ++ ++ + + #添加话题 ++ ++ {{ item.name }} + + ++ ++ + + + + + + diff --git a/pages/find/find.vue b/pages/find/find.vue new file mode 100644 index 0000000..029e0bd --- /dev/null +++ b/pages/find/find.vue @@ -0,0 +1,122 @@ + ++ ++ ++ + ++ {{ detailData.authorName }} + ++ {{ detailData.publishTime }} + ++ +{{ detailData.pageView }} + + {{ detailData.title }} + ++ {{ detailData.content }} + ++ ++ + ++ {{ item.name }} + ++ + + + + diff --git a/pages/find/myArticle.vue b/pages/find/myArticle.vue new file mode 100644 index 0000000..ed1814e --- /dev/null +++ b/pages/find/myArticle.vue @@ -0,0 +1,186 @@ + + ++ ++ ++ ++ {{ item.title }} ++ ++ {{ item.authorName }} ++ ++ 发文 ++ + + + + + \ No newline at end of file diff --git a/pages/home/components/Invest/facility.vue b/pages/home/components/Invest/facility.vue new file mode 100644 index 0000000..06fe4bb --- /dev/null +++ b/pages/home/components/Invest/facility.vue @@ -0,0 +1,184 @@ + ++ ++ ++ + {{ info.nickName }} + ++ ++ 发文 ++ ++ ++ ++ ++ + ++ {{ item.content }} + ++ ++ ++ 删除 ++ ++ 编辑 ++ + + + + + diff --git a/pages/home/components/Invest/order.vue b/pages/home/components/Invest/order.vue new file mode 100644 index 0000000..74a5053 --- /dev/null +++ b/pages/home/components/Invest/order.vue @@ -0,0 +1,182 @@ + ++ +充电桩汇总 ++ ++ +{{ count.installDeviceNumber || 0 }} +已安装 ++ +{{ count.uninstallDeviceNumber || 0 }} +未安装数量 ++ +{{ count.deviceTotal || 0 }} +团队 ++ + + ++ + +安装电站:{{ i.stationName || '-' }} ++ +设备ID: +{{ i.id }} ++ +设备功率: +{{ i.deviceType }}KW ++ +设备类型: +{{ i.purposeType == 1 ? '商用运维版' : i.purposeType == 2 ? '商用合作版' : i.purposeType == 3 ? '家用专业版' : '' }} +地址:{{ i.stationAddress || '-' }} + ++ +下单时间: +{{ timeFormat(new Date(i.createTime).getTime(), 'yyyy-mm-dd hh:MM') }} ++ ++ +设备ID: +{{ i.id }} ++ +设备功率: +{{ i.deviceType }}KW ++ +设备类型: +{{ i.purposeType == 1 ? '商用运维版' : i.purposeType == 2 ? '商用合作版' : i.purposeType == 3 ? '家用专业版' : '' }} ++ +下单时间: +{{ timeFormat(new Date(i.createTime).getTime(), 'yyyy-mm-dd hh:MM') }} ++ + + + + + diff --git a/pages/home/components/Invest/shop.vue b/pages/home/components/Invest/shop.vue new file mode 100644 index 0000000..722c774 --- /dev/null +++ b/pages/home/components/Invest/shop.vue @@ -0,0 +1,349 @@ + ++ ++ + + ++ +{{ item.name }} ++ + ++ ++ ++ +订单号 + :{{ i.orderNo }} ++ ++ + + + + ++ + ++ ++ + ++ {{ i.orderGoods.name }} + +数量:{{ i.num }} ++ 订单金额: + +¥{{ i.payMoney }} ++ +{{ i.createdAt }} ++ ++ + + + + + + + + diff --git a/pages/home/components/user/find.vue b/pages/home/components/user/find.vue new file mode 100644 index 0000000..3b57b9e --- /dev/null +++ b/pages/home/components/user/find.vue @@ -0,0 +1,138 @@ + ++ + ++ + + ++ + + ++ +{{ item.name }} ++ + + + + ++ ++ ++ {{ i.name }} ++ +¥{{ i.currentPrice }} 元 + + ++ + + + + diff --git a/pages/home/components/user/home.vue b/pages/home/components/user/home.vue new file mode 100644 index 0000000..acb154e --- /dev/null +++ b/pages/home/components/user/home.vue @@ -0,0 +1,389 @@ + ++ ++ + + ++ ++ {{ item.title }} ++ ++ {{ item.authorName }} ++ ++ 发文 ++ + + + + + + + diff --git a/pages/home/components/user/index.vue b/pages/home/components/user/index.vue new file mode 100644 index 0000000..e2425f9 --- /dev/null +++ b/pages/home/components/user/index.vue @@ -0,0 +1,264 @@ + ++ ++ ++ ++ + + ++ + + + ++ ++ ++ +距我最近 ++ + +空闲最多 ++ + + ++ + + ++ +充电方式 ++ ++ {{ item.label }} + +停车费 ++ ++ {{ item.label }} + +终端功率(kw) ++ ++ + + + + + + + + + diff --git a/pages/home/components/user/mine.vue b/pages/home/components/user/mine.vue new file mode 100644 index 0000000..67629b9 --- /dev/null +++ b/pages/home/components/user/mine.vue @@ -0,0 +1,373 @@ + ++ + ++ ++ + + ++ ++ + + + + + + + diff --git a/pages/home/components/user/sweep.vue b/pages/home/components/user/sweep.vue new file mode 100644 index 0000000..b2261d7 --- /dev/null +++ b/pages/home/components/user/sweep.vue @@ -0,0 +1,127 @@ + ++ + + ++ ++ + +{{ user.nickName || user.username }} +{{ user.phone || user.mobile }} ++ +您还未登录 ++ ++ 邀请码 ++ + + ++ +{{ user.money2 || '0' }} +余额 ++ +{{ user.points || '0' }} +积分 ++ +{{ user.deviceNum || '0' }} +充电桩 ++ + ++ + +我的爱车 +全部车辆 > ++ + ++ {{ user.licensePlate }} ++ ++ ++ 添加我的爱车 ++ ++ ++ 停车定位 ++ ++ 充电状态 ++ ++ 精确定位 ++ + + ++ ++ {{ item.name }} ++ + + ++ ++ {{ item.name }} ++ ++ ++ {{ item.name }} ++ + + + + + diff --git a/pages/home/detail.vue b/pages/home/detail.vue new file mode 100644 index 0000000..9c02aed --- /dev/null +++ b/pages/home/detail.vue @@ -0,0 +1,445 @@ + ++ + + ++ ++ ++ 插上 +充电枪 ++ ++ ++ 点击 +扫码充电 ++ ++ ++ 点击 +开始充电 ++ + ++ + ++ + + ++ + + + + + + + + diff --git a/pages/home/home - 副本.vue b/pages/home/home - 副本.vue new file mode 100644 index 0000000..f46062b --- /dev/null +++ b/pages/home/home - 副本.vue @@ -0,0 +1,261 @@ + ++ + ++ + ++ 电站详情 ++ + ++ + + + + ++ +费用信息 ++ 价格详情 + ++ ++ + ++ + +电站价格 ++ {{ fullCost.totalAmount }} + +元/度 ++ + ++ +终端明细 ++ ++ + + 交流 ++ {{ info.gunCount - info.gunUseCount }} + +空闲 +/{{ info.gunCount }}总 ++ ++ + +基本信息 ++ + +服务提供方 ++ {{ info.merchantName }} + ++ + + +营业时间 ++ {{ info.busineHours }} + ++ + +发票服务 +{{ info.invoice }} ++ +备注信息 +{{ info.remarks || '' }} ++ +服务提供方 +{{ info.stationTel }} ++ ++ {{ fullCost.totalAmount }} + +元/度 +扫码充电 ++ + ++ ++ ++ + + 交流 ++ {{ info.gunCount - info.gunUseCount }} + +空闲 +/{{ info.gunCount }}总 ++ ++ ++ ++ ++ ++ + + + + + {{ item.gunName }} +{{ item.deviceNo }} ++ +最高功率:{{ item.maxPower }}KW +电压:{{ item.maxVoltage }}V ++ ++ + + +价格详情 ++ ++ ++ ++ +当前计费时间段 + {{ item.startTime }}-{{ item.endTime }} ++ ++ +电费 +{{ item.electricityRate }}元/度 ++ +服务费 +{{ item.serviceFeeRate }}元/度 ++ + +总计 +{{ item.totalAmount }}元/度 ++ + + + + + + + diff --git a/pages/home/home.vue b/pages/home/home.vue new file mode 100644 index 0000000..68c7837 --- /dev/null +++ b/pages/home/home.vue @@ -0,0 +1,75 @@ + ++ ++ ++ ++ + + ++ + + + ++ ++ ++ +距我最近 ++ + +空闲最多 ++ + ++ + + + + + + + + diff --git a/pages/home/star.vue b/pages/home/star.vue new file mode 100644 index 0000000..9874e10 --- /dev/null +++ b/pages/home/star.vue @@ -0,0 +1,561 @@ + ++ ++ ++ + ++ + ++ + ++ + ++ ++ + ++ + ++ + ++ + ++ + + + + + + + + diff --git a/pages/index/components/Invest/shop.vue b/pages/index/components/Invest/shop.vue new file mode 100644 index 0000000..71d4055 --- /dev/null +++ b/pages/index/components/Invest/shop.vue @@ -0,0 +1,234 @@ + ++ ++ +{{ info.stationName }} ++ +枪号:{{ info.gunName }} ++ 停车收费说明:{{ info.occupyCostInfo }} +占用收费说明:{{ info.parkCostInfo }} ++ ++ +费用信息 ++ ++ + +电站价格 ++ {{ currentPrice.totalAmount }} + +元/度 ++ ++ ++ +支付方式 + ++ ++ + ++ + + + + + ++ ++ ++ ++ {{ item.name }} + 可用余额:{{ infoUser.balance || 0 }} ++ + ++ ++ + ++ + +预付费 ++ + + ++ 30 + ++ 50 + ++ 100 + ++ + +自定义 ++ + ++ ++ +当前可用电卡 ++ ++ + ++ + ++ {{ item.name }} + +卡号:{{ item.cardNo }} ++ +{{ item.balance }} +余额 ++ + + ++ {{ currentPrice.totalAmount }} + + +元/度 免费停车 ++ + + + + ++ + + + + + ++ + + + + + + diff --git a/pages/index/components/user/find.vue b/pages/index/components/user/find.vue new file mode 100644 index 0000000..52fa9f5 --- /dev/null +++ b/pages/index/components/user/find.vue @@ -0,0 +1,140 @@ + ++ ++ ++ 请输入您需要的商品名称 ++ ++ ++ +{{ item.name }} ++ ++ ++ ++ ++ +{{ item.name }} ++ ++ ++ {{ item1.name }} ++ + + + + diff --git a/pages/index/components/user/home.vue b/pages/index/components/user/home.vue new file mode 100644 index 0000000..f46062b --- /dev/null +++ b/pages/index/components/user/home.vue @@ -0,0 +1,261 @@ + ++ ++ + + ++ ++ {{ item.title }} ++ ++ {{ item.authorName }} ++ + + ++ 发文 ++ + + + + + + + diff --git a/pages/index/components/user/index.vue b/pages/index/components/user/index.vue new file mode 100644 index 0000000..4dd626c --- /dev/null +++ b/pages/index/components/user/index.vue @@ -0,0 +1,265 @@ + ++ ++ ++ ++ + + ++ + + + ++ ++ ++ +距我最近 ++ + +空闲最多 ++ + ++ + + + + + + + + + + + diff --git a/pages/index/components/user/mine.vue b/pages/index/components/user/mine.vue new file mode 100644 index 0000000..6b75201 --- /dev/null +++ b/pages/index/components/user/mine.vue @@ -0,0 +1,321 @@ + ++ + ++ ++ + ++ ++ + + + + + + + + + diff --git a/pages/index/components/user/sweep.vue b/pages/index/components/user/sweep.vue new file mode 100644 index 0000000..7964744 --- /dev/null +++ b/pages/index/components/user/sweep.vue @@ -0,0 +1,130 @@ + ++ + + ++ ++ + +{{ user.nickName || user.username }} +{{ user.phone || user.mobile }} ++ ++ 邀请码 ++ + + ++ +{{ user.balance || '0' }} +余额 ++ +{{ user.points || '0' }} +积分 ++ +{{ user.deviceNum || '0' }} +充电桩 ++ + ++ + +我的爱车 +全部车辆 > ++ + ++ {{ user.licensePlate }} ++ ++ ++ 添加我的爱车 ++ ++ ++ 停车定位 ++ ++ 充电状态 ++ ++ 精确定位 ++ + + ++ ++ {{ item.name }} ++ + ++ ++ {{ item.name }} ++ + + + + + + diff --git a/pages/index/index - 副本.vue b/pages/index/index - 副本.vue new file mode 100644 index 0000000..2e1a017 --- /dev/null +++ b/pages/index/index - 副本.vue @@ -0,0 +1,268 @@ + ++ + + ++ ++ ++ 插上 +充电枪 ++ ++ ++ 点击 +扫码充电 ++ ++ ++ 点击 +开始充电 ++ + ++ + ++ + + ++ + + + + + + + + + + + + diff --git a/pages/index/index.vue b/pages/index/index.vue new file mode 100644 index 0000000..07b4e2e --- /dev/null +++ b/pages/index/index.vue @@ -0,0 +1,49 @@ + ++ + ++ ++ + ++ ++ + + + + + + + + diff --git a/pages/login/login.vue b/pages/login/login.vue new file mode 100644 index 0000000..41293a5 --- /dev/null +++ b/pages/login/login.vue @@ -0,0 +1,166 @@ + ++ + ++ ++ + ++ + ++ + ++ + ++ + + + + + + + diff --git a/pages/mine/car/add.vue b/pages/mine/car/add.vue new file mode 100644 index 0000000..6880da8 --- /dev/null +++ b/pages/mine/car/add.vue @@ -0,0 +1,100 @@ + ++ ++ + +Hello! +欢迎登录电小芮 ++ + ++ ++ 我已阅读并同意 + 用户协议 + 和 +隐私政策 ++ + + + + + diff --git a/pages/mine/car/car.vue b/pages/mine/car/car.vue new file mode 100644 index 0000000..d15770a --- /dev/null +++ b/pages/mine/car/car.vue @@ -0,0 +1,144 @@ + ++ + ++ ++ ++ 停车定位 ++ ++ 充电状态 ++ ++ 精确定位 ++ 绑定车牌后,在指定充电站可享减免停车费或免费停车 ++ + + + + + diff --git a/pages/mine/card.vue b/pages/mine/card.vue new file mode 100644 index 0000000..e1e0f65 --- /dev/null +++ b/pages/mine/card.vue @@ -0,0 +1,96 @@ + ++ ++ +NO{{ index + 1 }}. ++ + ++ ++ + +默认车辆 ++ ++ {{ car.licensePlate }} ++ + ++ +添加我的爱车 ++ + + + + + diff --git a/pages/mine/cardList.vue b/pages/mine/cardList.vue new file mode 100644 index 0000000..ea4bc9b --- /dev/null +++ b/pages/mine/cardList.vue @@ -0,0 +1,151 @@ + ++ ++ ++ ++ {{ item.name }} + ++ 卡号:{{ item.cardNo }} + ++ 电站:{{ item.stationName }} + ++ 商户:{{ item.merchantName }} + ++ +{{ item.balance }} +余额 ++ + + + + + diff --git a/pages/mine/earnings.vue b/pages/mine/earnings.vue new file mode 100644 index 0000000..cf25be3 --- /dev/null +++ b/pages/mine/earnings.vue @@ -0,0 +1,18 @@ + ++ ++ ++ +{{ item.recordName || '-' }} +{{ item.createTime }} ++ + +{{ item.amount }}元 ++ + + + + + diff --git a/pages/mine/incomeList.vue b/pages/mine/incomeList.vue new file mode 100644 index 0000000..c84d7e4 --- /dev/null +++ b/pages/mine/incomeList.vue @@ -0,0 +1,225 @@ + ++ ++ + + + + + + \ No newline at end of file diff --git a/pages/mine/mine.vue b/pages/mine/mine.vue new file mode 100644 index 0000000..94c92e0 --- /dev/null +++ b/pages/mine/mine.vue @@ -0,0 +1,322 @@ + ++ + +总余额(元) +{{ info.balance || 0 }} ++ ++ +可提取金额 +{{ userInfo.balance || 0 }} ++ +冻结金额 +0 ++ + ++ ++ +{{ date }} ++ 充值¥{{ statistics.inMoney }} 提现/支出人民币{{ statistics.outMoney }} ++ ++ ++ ++ {{item.recordName}}{{item.amount}} + ++ {{item.createTime}} ++ + + ++ + + + + + + diff --git a/pages/mine/multipleNumbers.vue b/pages/mine/multipleNumbers.vue new file mode 100644 index 0000000..34048d5 --- /dev/null +++ b/pages/mine/multipleNumbers.vue @@ -0,0 +1,41 @@ + ++ + + ++ ++ + +{{ user.nickName || user.username }} +{{ user.phone || user.mobile }} ++ +您还未登录 ++ ++ 邀请码 ++ + + ++ +{{ user.balance || '0' }} +余额 ++ +{{ user.points || '0' }} +积分 ++ +{{ user.deviceNum || '0' }} +充电桩 ++ + ++ + +我的爱车 +全部车辆 > ++ + ++ {{ user.licensePlate }} ++ ++ ++ 添加我的爱车 ++ ++ ++ 停车定位 ++ ++ 充电状态 ++ ++ 精确定位 ++ + + ++ ++ {{ item.name }} ++ + ++ ++ {{ item.name }} ++ + + + + + + diff --git a/pages/mine/sett.vue b/pages/mine/sett.vue new file mode 100644 index 0000000..1aa98c5 --- /dev/null +++ b/pages/mine/sett.vue @@ -0,0 +1,84 @@ + ++ ++ +开通一号多充 ++ 开通后,可以让您使用同一个 账号,同时给多辆车进行充电。 你可以按需调整同时充电的数量 + ++ + + +开通一号多充 ++ +1 ++ + + + + + + diff --git a/pages/mine/signIn.vue b/pages/mine/signIn.vue new file mode 100644 index 0000000..5a63375 --- /dev/null +++ b/pages/mine/signIn.vue @@ -0,0 +1,109 @@ + ++ ++ + ++ + +{{ user.nickname || user.nickName }} + ++ + +{{ user.mobile || user.phone || '-' }} + ++ + + + + + + + diff --git a/pages/money/recharge.vue b/pages/money/recharge.vue new file mode 100644 index 0000000..7a17afd --- /dev/null +++ b/pages/money/recharge.vue @@ -0,0 +1,341 @@ + ++ + + + + + + diff --git a/pages/order/detail.vue b/pages/order/detail.vue new file mode 100644 index 0000000..90e711a --- /dev/null +++ b/pages/order/detail.vue @@ -0,0 +1,362 @@ + ++ + +当前余额: +{{info.balance}} ++ ++ ++ ++ ++ + +{{ item.number }} ++ ++ ++ + + ++ +温馨提示 ++ +1、本次充值金额尽可用于充电消费 ++ +2、若充值时若使用了第三方优惠抵扣时,该笔金额不支持直接退款 ++ ++ ++ 我已阅读并同意《 + 云充电用户充值协议 + 》 ++ ++ {{ money }} + +元 ++ ++ + + + + + + + diff --git a/pages/order/order.vue b/pages/order/order.vue new file mode 100644 index 0000000..d74080e --- /dev/null +++ b/pages/order/order.vue @@ -0,0 +1,200 @@ + ++ ++ ++ {{ detailData.status < 2 ? "待支付" : detailData.status < 5 ? "进行中" : detailData.status == 5 ? "已完成" : "" }} + + +{{ getPayName(detailData.orderPlatform) }} ++ ++ ++ 订单编号 + ++ {{ detailData.orderNo }} + ++ + ++ 充电桩编号 + ++ {{ detailData.gunNo }} + ++ + ++ 充电信息 + ++ ++ {{ detailData.startTime?.substring(5, 10)?.replace("-", "月") }}日 + ++ {{ detailData.endTime?.substring(5, 10)?.replace("-", "月") }}日 + ++ ++ {{ detailData.startTime?.substring(11, 19) }} + ++ ++ {{ detailData.useTime }}分钟 + ++ + {{ detailData.endTime?.substring(11, 19) }} + ++ ++ 开始充电 + ++ 结束充电 + ++ + ++ 合计充电量 + ++ +{{ detailData.useDegree }} +度 ++ ++ 费用信息 + ++ ++ 订单总额 + ++ {{ detailData.actuallyAmount }}元 + ++ ++ ++ 电费 + +{{ detailData.electricityAmount }} + 元 ++ 服务费 + +{{ detailData.serviceAmount }} + 元 ++ ++ 支付金额 + ++ {{ detailData.actuallyAmount }}元 + ++ ++ {{ detailData.payTime }} + ++ {{ getPayName(detailData.orderPlatform) }} + ++ + ++ 实付金额 + ++ +{{ detailData.actuallyAmount }} +元 ++ ++ 终端信息 + + ++ ++ 充电站 + ++ {{ detailData.stationName }} + ++ ++ 终端名称 + ++ {{ detailData.deviceNo }} + ++ + + + + + diff --git a/pages/protocol/buy.vue b/pages/protocol/buy.vue new file mode 100644 index 0000000..2bb3043 --- /dev/null +++ b/pages/protocol/buy.vue @@ -0,0 +1,77 @@ + ++ ++ ++ + ++ ++ {{ item.name }} + ++ + ++ +订单编号:{{ item.orderNo }} ++ +充电时间 +{{ item.startTime }} ++ +结束时间 +{{ item.endTime }} ++ +充电电量 +{{ item.useDegree }}度 ++ +服务费 +{{ item.serviceAmount }}元 ++ +电费 +{{ item.electricityAmount }}元 ++ +预付金额 +{{ item.preAmount }}元 +实付金额:{{ item.actuallyAmount }}元 ++ + + + + + diff --git a/pages/protocol/trusteeship.vue b/pages/protocol/trusteeship.vue new file mode 100644 index 0000000..c3e7c78 --- /dev/null +++ b/pages/protocol/trusteeship.vue @@ -0,0 +1,130 @@ + ++ 充电桩购销合同 ++ + +买方:用户名:{{ shopinfo.username }} 手机号:{{ shopinfo.mobile }} +卖方:电小芮(河南)新能源科技有限公司 +合同签订地点: 河南郑州 ++ 根据《中华人民共和国民法典》及相关法律、法规,甲乙双方本着平等、自愿、公平、互惠互利和诚实守信的原则,为满足甲方的需求,就充电桩买卖事宜协商一致订立本合同,以资共同遵守: + +一、购买标的、方式 ++ 本协议项下的买卖标的物为乙方公司销售的充电桩,甲方自行在乙方开发或告知的网站上进行独立购买,自行选择型号和数量,并全款支付合同订立购买充电桩数的总价。 + +二、品名、型号、数量、金额、总价 + +三、交货方式 +甲方购买的充电桩经第三方公司安装结束后,由甲方在后台系统上电子签署《收到货物确认单》,甲方签署后,视为乙方交付本合同项下的充电桩。 +四、付款方式:由甲方在购买时一次性支付。 +五、双方权利及义务 +1、甲方的权利及义务 +甲方应在选定型号后及时支付款项。 +2、乙方的权利及义务 +乙方应保证所售充电桩的质量及技术标准符合国家的最低标准要求。 +六、产品质保 ++ 质保期五年,在质保期内,乙方应积极履行质保义务,出现质量问题,乙方应免费及时更换维修合格产品及配件,乙方未尽到质保义务时,须承担所有维修费用。质保期自甲方所购充电桩安装结束并由甲方签署到货确认函后第二日起算。 + +七、违约责任 +1、甲方在购买充电桩后,不能因任何除产品质量有缺陷外的原因要求解除本合同及退款。 +2、乙方充电桩存在质量问题,由乙方协调各方进行免费更换维修。 +八、解决合同纠纷方式 +本合同在履行过程中发生争议,由双方当事人协商解决;协商或调解不成的,可依法在乙方所在地人民法院起诉。 +九、其他 +本合同一式两份,甲乙双方各执一份,自双方签字盖章之日起生效。 ++ ++ 我已阅读并同意《充电桩购销合同》 ++ 取消 ++ + + + + + + diff --git a/pages/sweep/sweep.vue b/pages/sweep/sweep.vue new file mode 100644 index 0000000..7964744 --- /dev/null +++ b/pages/sweep/sweep.vue @@ -0,0 +1,130 @@ + ++ 充电桩托管协议 ++ + +甲方(运营方):电小芮(河南)新能源科技有限公司 +乙方(投资方):用户名:{{ shopinfo.username }} 手机号:{{ shopinfo.mobile }} +合同签订地点: 河南郑州 ++ 鉴于:乙方购买了电小芮(河南)新能源科技有限公司 个充电桩端口,乙方因工作及地域 等原因无法亲自管理自己的充电桩,现为节省乙方精力,提高充电桩的运营效率, + 甲乙双方本着平等、自愿、互利的原则,根据《中华人民共和国民法典》及相关 法律法规的规定,就乙方购买的新能源汽车充电桩运营相关事宜协商一致,签订 本协议。 + +一、项目概况: +1、项目名称: +2、项目地址:电小芮(河南)新能源科技有限公司后台系统自动显示) +3、合作期限: 5 年,自站点正式竣工投运日开始计算。 +4、项目规模:计划投建___个充电专用车位,在60天之内完成。 +二、合作内容: +1、甲方承担充电桩的选址、场地协调、规划设计、项目备案、终端服务、 客户引流等 +三、合作方式 ++ 1、 甲方负责安装及运营:充电桩交由甲方主导运营,甲方通过运营平台向 充电用户收取充电费用(电费+充电服务费等)。甲方提供运营平台系统给乙方查 + 阅及对账,甲方将所有站点时时赚取利润按双方约定分红比例每月定期支付给乙 方。 + +2、利润核算方式:利润 = 当月平台收益 - 当月缴纳电费 - 公共开支(如 平台活动、保险、消防设施、税票等) ++ 3、电费缴纳方式:电价选用下列第 种方式申报缴纳:(1)甲方独立申报/ 改造新能源专用电,与国家电网申请独立电表,执行新能源专用电,乙方将变压 + 器户头过户至甲方,由甲方单独与国家电网结算;(2)乙方配合协调甲方在充电 桩上端加装独立计量电表,以甲方每月进行对独立计量电表缴费; + +4、甲方享有该项目利润的 50 %,乙方享有该项目利润的 50 %。 ++ 充电桩运营:充电费用是指甲方向新能源汽车充电客户统一收取的充电费用, 由“充电电费 ”和“充电服务费 ”两部分组成,运营决策权归甲方所有,乙方不 参与运营。 + +四、支付方式 +1 、充电服务费甲、乙双方分红结算,每周由乙方在甲方系统上自动提取收 益。 +2、 乙方按确认的分成收益金额向甲方开具财务凭证,甲方在收到乙方的财 务凭证后 日内向乙方支付上述费用; + +乙方账户信息: 开户名称: 帐 号: 开 户 行: +五、甲乙双方的权利和义务 +1、 建设运营期内,甲方在该项目场地内的消防和用电安全,应当符合国家 法律法规要求,并采取必要的保障措施确保项目的安全运营。 ++ 2、 甲方应在协议期内协调好本协议充电场站所在土地、房屋、电力基础设 施的所有权或使用权无纠纷,并确保场地租赁期限符合本协议要求,充分满足项 + 目建设、运营的需要。若甲方故意隐瞒或无法保证协议期内充电设施的正常运营, 造成的损失由甲方承担(不可抗力因素除外)。因甲方与产权方之间不能继续场 + 地租赁协议导致本协议未能正常履行完毕的,甲方应协调产权人将此协议继续履 行。 + +3、甲方有义务对充电桩的日常充电站的卫生清洁,不允许非充电车辆占用 新能源车位,提供较好的充电场站运营环境。 + ++ 4、乙方在充电站开始建设后或运营中提出位置更改并经甲方同意的,因更 改产生的相关费用由乙方承担。在协议期限内,若因不可抗力、场地整体重新规 + 划导致该充电桩场地改造,影响到该项目正常运营,甲方不承担相关运营损失, 但有关充电站改造费用由甲方承担。因法律法规变动、政府规划、城市更新需要 + 而须调整或终止该项目的情况,甲方须需提前一个月书面知会并协调相关单位保 障乙方的利益。 + +六、违约责任 ++ 1、合作期限内,双方应按照协议约定各自履行相应的义务,因任何一方原 因无法保证该项目正常运营,且在守约方书面催告后仍未处理/仍不纠正的,逾 期 7 + 日时,守约方有权单方面解除协议。 + ++ 2、本协议生效后,各方均应全面履行本协议约定的义务。任何一方不履行 或不完全履行本协议约定义务的,应当承担相应的违约责任,并赔偿由此给守约 方造成的损失。 + +七、其他 ++ 保密条款:1、甲乙双方应对在本协议洽谈和项目合作过程中获取的对方的 保密信息及对方关联方的保密信息(包括但不限于商业秘密、财务资料、经营方 + 式、技术资料等)以及双方合作内容相关的一切信息应予保密并采取必要的保密 措施;2、甲乙双方应严格保密双方的合作内容以及协议模式等信息,不得向任 + 何第三方透露;3、未经一方事先书面同意,另一方不得将任何该等信息披露给 任何第三方,或者自行复制保存等;4、甲乙双方应严格遵循上述保密条款,若 + 违约方违反上述约定给守约方造成损失的,违约方应就守约方由此遭受的损失承 担损失赔偿责任。 + ++ 风险约定:本协议项下的充电桩营运场所所有权为甲方,场所内发生的第三 方人员及车辆的所有者责任、交通事故等意外损害等,均按法律规定处理。 + ++ 不可抗力:本协议履行过程中, 如一方因发生无法预见又无法避免的事件 而不能全部或部分履行协议,可以根据不可抗力的影响减免相应责任,但须在不 可抗力因素发生后 48 + 小时内通知对方,并采取措施避免损失的扩大。 + ++ 订立本协议所依据的法律、法规或所依据的客观情况发生重大变化,致使本 协议无法履行的,经甲、乙双方协商一致,可以变更本协议有关内容,但均应以 书面方式盖章确认。 + +八、适用法律及争议解决: ++ 在履行本协议过程中,若发生争议,双方应本着友好互让的原则协商解决, + 未能协商一致,可向甲方所在地人民法院提起诉讼解决。当任何争议发生时或该争议处于协商或提交诉讼解决时,除争议事项外,双方应继续享有本协议规定的其它权利,履行本协议规定的其它义务。 + +本协议一式四份,甲乙双方各执贰份, 自双方盖章后生效。 ++ 本协议附件为本协议有效组成部分,与本协议具有同等法律效力。本协议未 尽事宜由甲、乙双方友好协商后,以书面形式加以补充,补充协议具有同等的法 律效力。 + ++ ++ 我已阅读并同意《充电桩托管协议》 ++ 取消 ++ + + + + + + diff --git a/request/index.js b/request/index.js new file mode 100644 index 0000000..c1716c1 --- /dev/null +++ b/request/index.js @@ -0,0 +1,136 @@ +import config from '@/config' +import { + toast +} from '@/uni_modules/uview-plus' + +export const http = (url, params, method) => { + return new Promise((resolve, reject) => { + let Authorization = uni.getStorageSync('token') || '' + let version = uni.getStorageSync('version') || uni.getSystemInfoSync() + let isInvest = uni.getStorageSync('isInvest') || config.isInvest; + + if (!uni.getStorageSync('version')) uni.setStorageSync('version', version); + let { + deviceId, + deviceBrand, + deviceModel, + osVersion, + } = version + let header = { + deviceId, + deviceBrand, + deviceModel, + osVersion, + platform: 1, + Authorization + } + uni.request({ + url: config.baseUrl + url, + data: params || {}, + params: {}, + method: method || 'POST', + header: header, + success: (res) => { + // uni.hideLoading() + if (res.statusCode == 401) { + uni.removeStorageSync('token'); + uni.removeStorageSync('user'); + uni.hideLoading() + uni.showModal({ + title: '提示', + content: '为提供更好的服务,请前往登录', + success: (res) => { + if (res.confirm) { + if(isInvest){ + uni.navigateTo({ + url: '/pageInvest/login/login' + }) + }else{ + uni.navigateTo({ + url: '/pages/login/login' + }) + } + + } else if (res.cancel) { + console.log('用户点击取消'); + } + } + }) + return + } + const data = res.data + if (data.code == 10 && !data.success) { + reject(data) + return + } + if (data.code !== 1 && !data.success) { + toast(data.msg) + reject(data) + return + } + resolve(data.data || null) + }, + fail: (err) => { + if (err.statusCode == 401) { + uni.removeStorageSync('token'); + uni.removeStorageSync('user'); + uni.hideLoading() + uni.showModal({ + title: '提示', + content: '为提供更好的服务,请前往登录', + success: (res) => { + if (res.confirm) { + + + + if(isInvest){ + uni.navigateTo({ + url: '/pageInvest/login/login' + }) + }else{ + uni.navigateTo({ + url: '/pages/login/login' + }) + } + + + } else if (res.cancel) { + console.log('用户点击取消'); + } + } + }) + return + } + const data = err.data + if (data.code !== 1 && !data.success) { + toast(data.msg) + reject(data) + return + } + uni.hideLoading() + reject(err) + } + }) + }); +}; + + + + + +// import {requestInterceptors,responseInterceptors} from './interceptors.js' +// // 引入luch-request +// import { http } from '@/uni_modules/uview-plus' +// // 初始化请求配置 +// const initRequest=(vm)=>{ +// http.setConfig((defaultConfig) => { +// /* defaultConfig 为默认全局配置 */ +// defaultConfig.baseURL = config.baseUrl /* 根域名 */ +// return defaultConfig +// }) +// requestInterceptors() +// responseInterceptors() +// } +// export { +// initRequest +// } \ No newline at end of file diff --git a/static/address.png b/static/address.png new file mode 100644 index 0000000000000000000000000000000000000000..06687596dde6ab265f0b7515f78a504fa540549d GIT binary patch literal 2247 zcmV;&2srnNP)+ + + ++ ++ ++ 插上 +充电枪 ++ ++ ++ 点击 +扫码充电 ++ ++ ++ 点击 +开始充电 ++ + ++ + ++ + + ++ + + + Px-fk{L`RA@uZTYqpA e$DSSAs<}hdsa0w_R;Hanw9`=wc5sYSuqxbLf)+;kVYPteHUUC@Kum7; z>FkBjTynYG?d}Qt*WKLrKJW8 0?O8SkuBA=eZ5I)E!7C=)=*1W&*O z(Fx!^0sdituebTinjs<6DIIYFQ2KUID;b9$f&4xovz=f8+yjw6b)UlTyRHuFcCl;; zs@!o;nL3vDQq0>0QeoG5=FwxjP %TRYup=tBU*qkc;#3ly_r( zVwn74n}1zXKBl<~Vo1^AT@M0$Kt$AhoY-wk(g5UP-B JfPypJ8%o$zlsITBu0L0UZck^nclLB=f%0x#>n@OSeT Yqt`czxj6fe1Ue{U^*)bGyn4k-ztHveO^0*L}x#Yhf zFcf^`F* |mH6Z!B;h Y|NVmEVs`r{5 zGY3b#G(p~Y;0{2Zbl-0w5qW3A7kO&HL%N_?;2nru<)Zu3Al|3ogoP=@1PHDGFxE96 z Fo;P8)Eh#RIDa@>{23tbI*il8cYeTX!fM*2JA_rxkf*tMh#nK=8-9FY-*9Aa6YI zA|T5g3X1lc9SgIiCWG W0%%e h(jUlLSs|~-E5>(aPutXvM zW*3Y=T=#|R?Alv)T09sN*xz@VBHwJSZQPO)q_qUTA*Q@;mk`0-x-U{=*S=p+phY0n zb}^{%dc7v{_kKaU)?6*BXILtpD>wy*^_tR)axG*G!?g-9EnS}qF*R48L)+0vF3{($ ze>){;QZ#V6N5Nh|My)Yqc1W5E>so8pHQOOn)v~r$F(u~2f6~OPWB$m8DFGGDYbuJV z>H@L7p(F5u?hF6Gjvy@_{G$Lj+p+Br+wAKVLu;>H-`+nWglNryeNHMnR!(IqSY$<- ze27^QRxz>7Ne*dMg!J0T%(H*2sdW?!yeuN$$%jmawmMW?m8cH?I~N@9?%-Eo;9aNt zFOq-J>msRQ&e=8NjRkLoU_&lMMrm^tz>0(~Y~^SpKHhk6A%Kn6|GHzJ#HvJH_;+c7 zDx+(@q>ATb2*x;e0Fokqg~&7dq~vx?J=~kZJUq2nJLb6t 9TphO z1edh>B3m;GLesS#?|A=i0J93r!!7u|iIdT4)W4O?ET}&PSs{=Y-11mR9D+CNzK9iA z&OXC4gHTBE-q865MCuDk#xXY8lz6plAwucrvKdpIRKY|sqi!EJIu>yTfM7dJ#XnFO z$v#47e$`^Z+eDBmJe+S2iPd^t_}NUnvLC0!f{h{wo=<{Eg!Q^`!$_R6XV+Hoq&cw3 zg=&yXeZtL&+Q>~-&Sp=LWwqsw3%rwytrFK#msr_^;VX%wz00xWsn4?k {kz}p aTAM3G>kwm w{kcAjsRpeF5HjX}0+>|goSHQoa&n+>95tPG76=G!E2@2V|cEph?%*Yg8 zP==8z B^hE0Ag2veIz*%crqRVBbQA10 z$nN&`iZ0ZL&Q^1B?UT%cxJ;e+uW1*mJ(wekOa)|y2xb77LZS=`N`xpOSnA}&A`?mL zBtalu6m-Kxw@B*3`VkWQ0q&>C!^RkVaQv%>K7(vFGOwW*m#NL& JO)002ovPDHLkV1lWdHoE`- literal 0 HcmV?d00001 diff --git a/static/all.png b/static/all.png new file mode 100644 index 0000000000000000000000000000000000000000..b636bf02df83654a515370c5be44ff022db6de1e GIT binary patch literal 4273 zcmXw61yqzx)Lwz5K}2FfQc`LuDNzIgB|chW6{KTVkVcUP2?3SvmhM=(m-r}Y(1j&M z8UzFsg!z~6|Nl96-uKQt_qk`DnLF<}Z-kE4V=8iHatH)MrS?Qw5C8VO>ZFADr@)&e zE(nA`L`Ty=1wRBu5YY1gl#qcANl-}#%BevEEx^cwraPd48x&mwXm(Hy14RU&`yQxf z1dRfqhU043Dg 4t|IYh0Y38o ziFg!0*(3j75_!-q2YT*bp?K$th0pvSg!l2*DRV`~+`n2gKHv(H1D*dHDG!RF0N=V~ zK&KRF7YE(4pot%pko=!Iyb3f2D5V6gBA|j6w2EE{Y!L?aw?Qo{D5D0I^q`moH1LAY z5KzYsYHool2GA@3%4x2)r9}|bbAuYDD;14`pz`L`8ZQ2T%Zn>HIS_zm2IVB6f*#b; zgDOhU#04s7Km$7{B?MUzu-y%Y?ZN39Sj+@x2jI^hXuk{oo`Bz*VCpTXp#{4Gpye(& zSpgkN;QR>u!ht$oa4-$fx50c8XoQ1uO7L?6w2OkHZ(ySdjC+FPMX*){228>4ZLrx2 zR!cxV3#euTKkC427#Mj4hRnf$G1%<`%lTj_8+56Gtq#y<09yFL{s@>30%NYAk`(l) zfrV7?Eec?CKsp3`u>^B5pkEsdqd@CD&>{m8Az%zi K=Q6lQ-uIo8&glN}vk7kJj%QsL?9 z>gwOihObJheKlo81N(*6iTfXdMQK7UB11QcpNl~ejESZkR#u$Z|1MS(tnkkRNGa}# zE-hAc6l%6PS;(fo>zEFY?pnc&NhZl6DmBphh98`AhDaUG%i z8?D)l84f}}3Y#7_GfwWwsDZHQ 2?%!zg z^EKbUCO3(@WzxHF(<&<>tRYSnvGW>Bp-JbY(oYrn;eith<6pbRx6J{mo_&syI!h1F zVuhU&N%ht}qO3KU%+*up%e8m2dy*K5$(_2kQ1(pLj%BoQ7QN-ED@_*@s=n1b=_$Q` zaPHDq%%uBvCj4v22dgh8yzN7VN-5v%P(f7LF(mOs!PtOFA>>Zkt@;=h{2jKBcp|td z4;M6n^kHD*$b_9CBD&iFyfvh;*Q6M*hHk-39HOrQbdJlspPk;xlS>yn3qj2)$M5Vk|!AXNNU%U zDGicTG^$t_hxSunrrfpZdb+xU-v16qt<9xL()7DzA$=PA+nL;((_IpNA=uofkwzvD zD;-)4LvM`<1b4=F5eM5+L^TbB2wU`6?|)fDpEKq|gW0n`pc=JzqfYWY|5oI`0J& zPMA<}NguQ91!hw-&oqRI0-3(VE>&Z^J(V9UJfj5rc*mWiyrW86W6;S))9COPkk=0kM&U&bB()Zv8oPMRBp2fE%ETC#H07V>aRa!=-tYoq;US1J3XUN zEQuM02|bQ^t)v>J*1UxZ?{r^Ma;MdIkTr?r3DJCP2S2eN#syy6797$wiOu%N(ZGym zsYakUHp7J6;?Qn4%f-btJEzYQQ#WmMDr_-RtdkJU+|r&F^o&9^@`c+!aqD8SdCSAN zwAJoFy=o2qRHwG>>ly>r&2N>? p1hrp=pB#f^Uf@ zz;H|+8f}U9->0^6EB*>qCB}J>W_zC{)5M*uY?MH1?QOKg$>uJbX4t61P?#?Rqj_iJ zfxfaYCFSDBv)xp=v`)0{Wk`*|%*^Vgmzk(nbjmdYQx+8uZ*2qypC2FiRmZC5Q(xB~ zxj>Yd?ALFhZEJ~lX17OtVv$E^L#i{DLhos0X@(-HpMszD;C$P;3pqDKhe|G$U#*bL z49EQ}&EM7(xBgg)wPm)+jWE!fLut4DZr#VB{W%{sG9TD3weX$p y3G1F<3X=MBtZ_=89q}M)!;DEHkyD$8 }3D?0>yf1Dw{KBhOq!g#{QemL+bqDLv+JRRea zk@c4r1A5c#4-)-epc50Pbjz2FP|Ol2*-9+o;esoj3a6EBcwa1gcoDm`KPRZRZ%QIcbVY1isrBT9)p23^N-zoUakJvCDt zLSyYL)3d(iO15JJVi#@fhvQzlbct5h2gfjmi10VIZzeC(f7Vs<8VZJ9!@g>l(nXrS zWWAOZ^tHKBMtv<-6q8Xoh Eiju^M6a zLVY#e2(yK{SXf)tenJ^q7fup z z^71_Ss9~)4N7jDV=e=V5z9e6UR`JxPq+gD{dMqQ){4wSAW%+dT4!;ln(rM9*DlNZB zcJo#!qx4r@3Bp5O=&o+Mml&`Jeo~^@;VMfCQTdX28EJkGDPcl-lTBt!GqDCs*U| zjmu@?@qYGD-ta=LCfu-FQjpY&zfUkml4|FT{jPi~e?E*d^7*KTo~rX(p2K rP-(%3r1gEC^S!hLOdW~qcVi;$8*hM~0L{5f6Y~s?=F!#$*LPDnmqLs@p^_33{ zUjb>qzx+YG;;nDF9W-uJDGh5jhVS&+?^+(=L^ 5i_TBDiV}a0%A(N4e-f4Dl2u`BW{NP@2ZQIt24O`KwPSs4kd*NlW=pf z3&Gmo#&7pU*;W=_vSoYL&xSSn7g%B8fqG-I)4N-ux)axBVlvf^hE~(9KRi%SCpVBI ztTps9D5+9{Etp1rrtw SQ1rSFBBLBL~_yJ%J7N24Ndk%uh} zgG?!%$KYTXS6X)cg$c^=CRBDdIypP~k+6(|o_U~?V9&4O%ahRd)KjS(-6d;r?QQ)o zUOB5cxFX`&fVD+f!b9B~-Y0$bBh?o*HW+ zbBl8+tf)Kr^M`ipWHr-kxt1pFvkgt*{i{5+FyrmBD8{|A-dx?8dXbOP|8T;f|AO4! z8$}+PV(`irZg ABL+&Z|DXTQ#5Ht}{A5e@phHT=;TIPS;?` zpvIytN_h1zmZYizzBpqDSEnh>_wc &%i|d@M1>$HOsq#w)xp)s*dX!@xPu z*P^aHYn8z*H7)o$*(7v0^sx=)K@FA5{A`-`f)ta*#<9Ou!At}9nA3=m6TRTn3T1pP zZUQUCD?9P$A>1pj$0nYZ%%^Df7b+N9ywYoxQ81IOO_r83ViS;)-FMg2VO!n23i0fB z8QM-m%vqiu(WC+m;C`)J)P_~rU0`-1`1RH{6NY%`>bECtYcEDkAS$Wxt2u<>jTUMa z?b)DU7{$e46>m>s8_Qp|$ZF8WL_k{H>64q(@ml?Gp0$pkQ|kDu+$p^%t8e;w(cGx6 zOf-}yWa%RfLXb4@z Rf~9xQm*KNG}na6zsV?1#xq43Ux0uU%p@WnJ8A8D_oJ>vhK%I zRKMYAG@C!x=;587 r{w(K@Nsg5Ph>#m2QGEX%)^quzern62S z3Me9k#YCUw ypYl4e+tEO_7Nv6g-_PDJ9D{gLHG}S$7ToOd zhmEk&d^$`>L kT_!OWH_L#&|cW(HwhX-1AT06XwFFF z63Z$vkV2420Lu+iPHtMMa<9mkljn9dk9s-v1geiAXX1Mcy|Zv3Qst)lb)-CQh~qhI z_ BAf#K1*mU8GP8QN8Am zmd?>&2fG34);K=#O?i7bvH0@c&!0vf+PFUH%u6_bSf_DI7D5qCty~8shM=|*(g_FD zklKQ+2e0|XKhbz7Q%@EM8z%9WO8+*0f-|xCiQdf9lVG#8&zQ~ FP}l z5>^tq{*P27U2o_c%&bUcSBnt;xBd}NB^A#H$|w8ZBKdYrbz?=O^YrM~JytrlC =U07xhi&5Z4%-2{csP6|e-gsQYFeLUsR8w!r% zv-}s>3G?=jYTU;(p7Kz=R6xwRt1&uljinAmQsswxAFaaAlG-CmgQ8Bw@0F#&MbX!a zB%yc*4X`hz)I!W)fc}F92f{`GF(=DIO0yIwa&~}rQ2b<>91DP?Vadi+HGoeQmLE>N z3~1ep45#z50DB&u=GS`+;OD|kwN#J*rE GBN`fKU)r?gM#x;{M9>Er0`@&8ZQ+5&(3iuUVh4fq{SR1CM==7<{x(>y5)m zf&R$u{LYKwg#fkD%hS)>H%9)UuKwD%vGJDyXZOga5FTe?F*7cLa!cHav-+9B_^cdS z?s{=Ve`NYiV%*sV)<&kFmL!A?7#ba}{bMd6mwZ pY>xsF0t?fYGj)q!>U@-%J^VVl+T24BRxpRlqDNu+h2{vJnFtR`yCu1pLswPV< z{oH=f=>i}mz1AFODXK-9E%}Cr-lqn`@yH|oY&P1It7R8S00g!s|L=?Dw#)d{@qssC z{o?r0V}-?!l8eXBU1{E$8sMBDSOVOgKT~fy-u86veE9iSMd7rr<<`5CVAdh8_-2)D z0C8fz)(ONb-8On4Ec>F;z--xJ4=uzyti%A;Q_fswIRWpJA~*JcWZTvo+RAX|U(q@_ zqO#d$K2s@xN#rJRB-G{_C)q}ice1`X+yGg}Z60g+v;@Y6Yet}F>aT!!qsstM&*QXT zD&1m5#`O=%fUCA>Tb;z17UI*JVt^=Xh0i3seCgY?t^{y;Shjpo9@cHH65zN+Ts|z> zalYxxO27!09^EZz8=Yw1A_n^9;rL9_SK&e!Q&?Fs7;al@^?DRGmX@-hwZF*Y)kL+V z5HmhhC^_B}>4&6QO9&U`sTF-+f~w=cir+q~Po^s}_8ZCA|HcLei|^(1s`n=-<}aSL zk+o)lvEY%aiPB*FtYZG=uGhwJ0?;Bl02(Gy%3)8xUw&{v(_3#Vf6?A#hi5YHFJx-R zd`@z`Emv3&b|%-pu;*7xbej^z vG{ z&+1V&{gWt8BwZiNp=SQRX%XAhH~u{Sb#Y=39HXRUNsgqL+;r323V(e6z4WtI^*TC8 zUrgFJ+-Yx!d#Dqt_)SXwKd#2W!kTiCa{?`O3htNxLpE&H&OiZ6>pF^Ad{s)oB`N&C ztgGkubo!Bgb#M6TA~5X3N$x>L%cT8yT-?@A+`V-@{jN+(&^cY-XO7bCH)G=mU5=38 z#5C9A)Sfmv&uPA|I?}M9 wZ;l>R@CBUQqtQh>#t}geOhQMxu$tf z{d(!UN~I%40`wQ8vg@@p6h^)tZ5TSK;eaol%C(h2<%e;FEh?WgKEhLa=&eX` c$Nd zl|$>vfr!kXTk{Ra@;QwUKkrl&y4wisG%%_Hv;vlWl@GiBAhlviD1GdX#q@U2r?HBY zl7V-6Jf9o$d=nURUN?B$(Z}6A9ehG9j84KSqIfH8*8%6r4f9k5)EWO%Oc~zFaYsLD zPqV08SyF4_?@BbUK3})J7YjDXx`D(|w0G-)%-!(s4OzX7B8HI>8iAa;YV3GzhLDh9 zq<)qMrw%rEx>Im;%NT|cjW`y>se{7_>qkwJS=nPvZ?d6#Avj?u*u+2HG`UqBE`}vW z^}4HIYzl`Ch@NWi9lywx3bf-MReIpbp(J$8r^r%C0SLJw-8kXD&pusSTRFj=lGg81 z>UTqne%wBtls+cehg;*GKCz^I_}%apGt!@7`k+-B_L7O&uSNd+%tsJHs3(^IIfra? zO^{^ki`sm M59;NK@&byr=cgU%nlw>NNDFx)-#+eg(x zH%Tr^Jh7vdXfZO)PmGhS>Q^{;Kyol}`PrkVF iao4< zy|NkY?JgxTCgaiJEv-D^b{}|8(yz8F?~$!wk^iuK>r~A>$@^2U47Iy!^^CmWz%*47 z)%-_i`HOLLD;!HL5pi7YP@ZywF*99&W^C=XS~9?4cWA13&5RQHWi(h3!= 7zevMEQ+S89MJA7MTmA!@Pm5*#x3FkMC66>Kc#64Fe zAr1Vs@_nHuN-j;eO9$jG_a*-_8(I$I#&+L#>TTu^1#xQW)~X(*Z4voTpn;)$@h)q* zfw>FARZ99E+&m>NrJhntb~MhL4dFXCUeW(|3@}ucL6rzpR1dZqu@bvt!hd5uh5lBy z|KHS;Ed6{^3S@sDT%U@)q8VJ%BK4J9NDljXnQx}I5Mxhv2ynQtj?^I7SN4(XLN0ip z-<~(6#vJBkRX=bv*6aPSHn+(r-+ah@^|xz8hTxwwQLKV(7|JH%**o^ldbi;P40-4T zojXC|8&u``AI@LtL}tn5IGy^^7&ySCdy9B|{wg2^J(C jqCZ z_^M9BH*?Cl=begXVwf(S2G;`>o6UWZ6rQIz&3y80ghrJp`wubNhbhY9 Q24VOcf zh-xeyI~c+WPK#Prw1NR;G1OvTTW&SlhAVuVYb0Bt5NV|lR^Ta~;B_#U=dW^vePhP5 zIYj3vJFQ8SUr0PyXYP+kQB_(?Pc zA}@c#y{a;MvnlW$aUc7^Tg*{HV2{0h{devQt%O9j@?n#)egBPW-1Uy65Wq`&1Y#uW zX%*{j+NV7+;5_~{AkZ9#Qcl|@=Ke>6GT>`=>&43YNYvLia)a9A<=@5N%n-h97ZV~_ z+gjbXArQef`IcWLKm@Bco=0hd2-fAqh)yX)u(AQx`YsT`vgIfTFF^o}G$@m210X&o zp)Ub}vIIimvLqSM;{6%&3<#7N^t1|w2Ecdfn@XBO0BzdQYu^Py`Rs#Yh7ttO#U5Uj gvk*Z4zwCLpf})LON3!W%(9Z!7&27xsCLZ+v0Ye6&s{jB1 literal 0 HcmV?d00001 diff --git a/static/icon/9you.png b/static/icon/9you.png new file mode 100644 index 0000000000000000000000000000000000000000..fe303ef58d35701866e3ed60f31deefeca8338a8 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^JRmj)8<3o<+3y6T7>k44ofy`glX(f`yz+E$4ABTq zPH|u|PCKLV9|-=PIddlX#G?~AZW8IQuB_A&5)#^ee^2G-Hy}AlNy+pLnN8UYp6BLR z7MqESho8E>KHmQC|Nr+Djg3Fs>{1iq1%jMOlO~;(kd$l&8Tj=5{r%S>BO|A8u;M(K zX|ra{8tt1mZtSW1_owpz{r&ZIGiS~WPxz!^c7P@Q+? jqmUf*1`kKMh)z4*}Q$iB}2$PXg literal 0 HcmV?d00001 diff --git a/static/icon/b1.png b/static/icon/b1.png new file mode 100644 index 0000000000000000000000000000000000000000..83cab65a820a5d3ab8e89435aac2d880afc4ea3a GIT binary patch literal 9599 zcmV-_C4kzAP) Px#Hc(7dMdj`6!{@{2>FWOX<>&9}=j-kL{{G+U<8iFq z*y!T!@bUKe_@3te%H+)2>)oy4@zd`2Po(fWYX9Z{000tnQchFH|Ns9t|NjE{ivR!r z|NsC0{@CE~z5oCq07*naRCwB~T#b6;HV*Vo7P FV~1@16+HyDL8YLk0#Dfuo^GPNFJn61TJJUg;$E-Ae81mW-df+3;O^=? zGpbkLmi$%i&wO1>%SscnT)?Jhkj=})S3~w!@v6u=zzVWF;hO)8AdA)CH4H}p=35o0 z%SI6-oaLQ_4u6U7ym%x*wt{~D{>-oMitQa7k*%=iD=Vxe+8h1_FT29Ft_j(C4*D5; z^mhZdz?viW*RPA}aUr=>IXt|I*;IG`QOu@#{L2lO>!JRWFFqeUL91ZWe%CfYUiZ&` z?e%@9wm0RVUuTDP>|qZ3f*t9*5>cR?vaF=L*6?b4P|)U|xIm!&`p@m}?}7bu7GfOh zspt1&5wjWD{zlku)>uq604qv@ETAkGKEW-dTcis)w-5q%VE_I5yf+jovK7|C0ie#! zJhsdR?f9-1pqA>PM~P)oaCbsP3y%1E`#N7hwi2z`p #93k%CwH5IC0IUh16|2AV_kV5e0dYYe9Sa z^UA9cEgaFVUOcBTj2FrNkk=6PoMUm$;Eo&=u5@p~nz^ szd47z$jmI3|?!ykj5*>0bQg|R$-arV7`RxdD1b040~iN(Q@ZUh;$kv zOHU>nFv|@x!aZOLk9r)+B`X R_ayczJ*g#byAaHeg z4XIEU$~pN$m9 th*2@|Cur~oO zqid`*WXq53C-YS-^$bQ5@<+A@ZT(Q$1s4{r9PEIhrx#37JDsaHkhMXSHj0+(>JC?9 zX{vxzkT$t+BWKW-Y|(4b{Nwk(2I##JZZFiTDv_gF#ai8FudqbZrdBLxfZd5>$M|*C z3AEhiNfrMd*>j{Ya_4uO!jiI`C9QeQg954DW(-=$UsgtsIw99!O(S#@!dVuOZ;5uq zi0_DNS-n(VlE*;G?GK_>fA>Pno+X7D-7E}5J5xp?6|wqCu*7eXhW90QgezRnZ1ilV z1y<6W!V6@xd;5>7-O7g+t3SH7h9uWyg*CQO`!lj<{MWM<;iSlr=<8#JY|aFPr9gqn zQlmW3ZD--P$h6R6f+Tmhga2(Rg}eUhuw*?>N(4h|TrAnF>w~@;Jx*A%zgh0@?8CFw z;G!5|7M_WA9kN!%n)Bi)PjU(D8Ffd_9B7)-6j(6;W)Zw0keNb+ oX?> zp&lWmuH>U0z)PyD1?pAZ&7S8C*A&_`%NYr5>&3Jb22&vm5GFbKD1bU(MiLic&yvGh z$T9|fvJWemVjH0lOW4WA&IjFXNU;9cU4L_j +i zn!p@2ZsjdJEEAs62DRaFaX)(HjtVQBe)}P&42Sf!Pn|}!k5fiHJvGN%GDowtj3yRa z%# gXVx4%CBU-tzX4(&U{igMU7hhxZlpSu*8ZhmK3Z~^{`wDudie;bi z%zzp@D-@(-EumJZ_cz3by80B3KiO<(J0#ub(r;@=-1`o+=^m*(Sn>h)0@3loaBqFg zbQ%5}vPBOxQ2(5#vAf7ZkvH;^SZam_GnP#`2!FVcYAH<1(5h%n^6$c*`|8~}xL8Wu z%N17)|2D7_4CoHf(f0LYrw{B>)fgv4Z^p6P(;2Ly8ag(~>B8m@uo!T*a>qiLwD7UZ zF^7yzdsQoqq@Lc2V~Q{H`E8556lw+8&*bZ7? %+!WEIV1f$x}>tYOsJjcnLp zVIIHi8&p#!9WcdFw?nI$B_})?ex%T}vuvVGF}pD%fjO68+9!~f_88(P)VIdH=D3pK z9&Cb^YtW7oqunefGVovZn%7lhmR+e>h=85zA`-Mlu3MMfy}F;x`t;(TDJ1{8OTYxm z_;XaC;-$J`Mz?b~5|QK^Eq`oBQmphMHqC3SP7&Tf_Tt0szgNrljBv8eCQ>-n+%TYu z0>LWfO+B30U2C;jYBFA{uz2U}?2gf3YnhTa KC&<~NDs%IV7js5sifFvFtZW}TBe66k6y1I^72;^UXK>-aA@bARnML~V`f-0 zM!zLTe}Ff>-bEI%^XLE2DGb4+p=w#R*AgH%m9`Lyqore+xi%1z@upQ4aK$QIM#|<% zD U=5; z(h@t-G;7(gW&e2?WX)%4=drtq=@GPc$4!QuOU&1i{c~Xq9boQOiD8h&P=zoe0n1j0 zNnx`?MotbpqbKx%X^d?g!`e`rSK7D1rf$yK4{qWtz49^Kgur_-8>=uE1sHR{N&v9a z#A^+qrVPzZ{cYc8VJUQ}ark@%=yYyqUNyP*M9?PVLY4KVP(S1Uk-@T{^^FU=WjqTa zr)xuN8U`W+Z+;@MF?RsdgTZ7X@UUp@h_RNbaQ)lfHhmDZsarFlbF&Jsw_^6{6TDhi zHDV8aodJUcIS76-RV8Yh0D7b}u&DCPw36!%ql*J;8mGBP?nkKyEkBlCSoQX!LHkb3 z3eomKLvl}OB&Lwv m8Q{Vb8NpXg-4?FcSuaBqr0M=fN zcHSGv{<$dW@NQ^9GE*>Cx=mu$QYgqI#XWuqASUBBU66R;TlD^|eS##-g&7TTCN=K0 z4O+JLg`KgVOoaE4m5z`biS;w6u3=j!pJB$nc?`Pi^DfDUX`E7DRAvMUx>deV>Ra9Q zR0no@E6h$(rr5{bBWs^mFe+}2+ZSgM+h_;z=p4w?L^3~*We2Q1YJ)zHVTD7(DETQw z;J%g!@X$uxYHb!u$&KuB`^oiglWCi)F~c7ZyJAW*q2|SV{%oC>u{ESNyx2Z;WHK;} zPWRPkwGKwhbNE>>t yXxTrR@YKS+HFanrr4$Go S|2CWVx8E0mu+S}8CT1UI2tJO<#p46e6$(l<)6RN=4I+#-JWPOF&uFhIu z-pRQ$K1N7jXKLA=n?C0C0NTUWl2h7!GK0za=M}A*Wx-C%q(xgu13Go?U)64X3LzeZ zyK!y7#@bayx+)^L%^a`H?`Q)J#`-yEKQ6Kp?^tWa+f(PCg9S)+5GjiT95Fy;reoJ^ z=!3pkT3-H10NbC%`e{8W{hU(_GsQLN3Z{Q+&siL^{n3~aeP9Be{ZQ(@r*O)gTmd!u zDh-c1F;gB3i|GJTg~w_SW=2J+0GI}Mh{6ojW}tdvn|a32PSH-G+z%DpJjyczwKD3} zy(KmDCee3W$7*>D*!U``Kc#(@SUq)4=F*WT3xt{jOJ6FD$HSJ*?=VBP?X!i(gJ+;_ z9Smfx$4O)BV`Bi%1}(d(89s(5v||G~|5Fc82;e%;=*b+R@*&tTnP#8FY1jyVz&;Cx z;ihb!7Brdzn}_^eveE4&Gmp=HpP`QfJz`qE-2Y0#%-AD%U1t{n8CRBKaF|sW1yH*u z6U6}rvX~#epOBr}JFa*n+wWb?$yv8+ewx&q->?UVjg6qEXgnCqPXulMUrC^o7^do0 zK>Z(U*S6ir4Z~9G(L6};<^R97nUO?-7ftMV+@5VucbmjCM {&x_W7RPe_qgZhK`Wq!qnU62B`lz( _nGuDyjv(unD4sK s4+gk(0kCrtHJ6vguxJWbR50nn7OQB(_%)^Kv# z3LUAJ2W@>ER3#`1gNL%|OQB1tt8SSrbj6dYp%N%C3VWf aUOvlY}a_nOUf7<>!$5mD>sSO(=GE-P}B !Ou9qj{U9b#=dl3N(jMLWQWaTWf) LyGp!XossV~>y#h5WERJpvv>U4VB z38k=;o8v?JqOiVxz7o|FI|V1}{dHDU-Eam-xGzM^*bGNW-O-|754ea{h+}F{EI;{d zCJf=;DMR;#c7dnlg9 >gW36Ty&rHIL~|DQ)C*J)QiA zJ}cI;G~pp;W(~{6kNg6#X5dkIw+ZLx1vIh#o3gvX7tu=O@7kIUkKeqhBosSV=S>kI zW~EbnkBi}zB7ccXq{rK5v$~l-AHg?f=1J1N4$O$aaom6kOMZIJ-W>DsC_WCuMk*e) zwRikV y;D~w za{6Wo2a^-r5c<+s)J~?177Lb%S4%7q1~0ZO!Ecl$&(*MN)!qsyuO@9j52k`-CfbKN zJCOtRd^iGYu>!D~e8GwIz{AAr9ST>yVS}SN2GyvDmyk0=!?^%t=a2SHquK_89R}Mn=+OH1d8qAE@RB a48ma zZFz~+NpNXRz`2>UALs0?Puu5_W|%AXy`0R)ybV{I&L>5`TC;R;FLWT)wE50L?kYId z1j0ZNL7tDi0h?M>>S53ueq0n;MU~hX!(^-$G``aWED5LBv?(%Z!ijicv Y{k%DTx?LcX}E6~*Z%R3j%8Mwgp{F- zjB)^utew6KD>cQ<#BF38qOtNC=YR}< ABGA1|ZPtZL6LdpV ziu=Y1j^T}x@R^D?=XfG-ZxPS~EYU !YHVL82rx6pB+mcPGVEDPkrGeHn@#2Y+V6nssIFby#m}Vcu8cp ze4`Q)iiabM^qB6i@5lH4+G8ss8@uFUaVBv!D% 6aYaeUx!}zU{A1T$ zs6LDK2`*W1#89j+iL4tdr0;wPmRq+7nW_4nz4iquMzv+iOn4%=nQJ1TgQ(stH=8YR z4LHjK8TL+(nQG1f#zy>gTkv_+rO1I%y(A6J`~Yg2swT9@l-K(fRciqwxyEwnR79FN z-7U+Q1U*p3O!2hQ6N>Kzk-bgi;6yPGQFoMeu5!{=hx(EQO#X&AvZ;8fB;4^O1+N&K zo^}JY0lXyHexW+lUSWm`lRT9}5BK~nto^9 h1bs|<}Is)Hn)t-Vl(0F!eXfsNM%IlIr3o8 zLa0lu*@!cLQZKl{ZeqaGT21;|2tlaT*8;nTHtYcz-7z9urOJ~M `Ac6 z`5;lW7ds97SsnTtav-+m32v|l=Jm)H%RifiWoDbG ~WSvVqx8&KCo_-(eednDcpW1l *22?W}lgOB@?z?5!wIl>V!QTl |S`aMA0z$uy8nb32JD<(?vqPddA1L zwdtBWjqwv3iVe%76^23byd<(WcZJm&9^_e$z8u-danP2;ds?98aE}dJ3UUi|r2M(3 zbjGpT5uU!r5f85a>t SAy^%W{(mfO7FnFcnG6!vV=G9=MI^ailj>e!i zwqSu@#pabf40V}BT}vJl{p)}zf107oa&{}0eH@y{BeLIrh-{?Sp=IxJx@(H|dM;|5 zTUs470P$iFm~*Oard@0BP9b4JNmm;5ueNtXm*lLhEG#avPOkJ;WYOF*FP^WKW<;L^ zEJU3!G_s+pXoNhHJ(gc}ZA7D4lfkb868ZkVBC`L1w$MR#(%3WdotjH}1!pVduxX`* z&Dwrrr=SX|`nR0g9JiFJnFQ~)1h2= +8cEQN$W@7?pbP{?h6;r4ggYq@vJVN-l#|hit >Hf3oLYO1rVpQ`d4a(bVmb^_MZYbT@u-Y&9Qm&2so>Ow 6pMWMIwt-v~8x3|w(cDr_! z7wle(y{)3gGqCkau=NB-Hi5y-Zw!;KDjqYd*OTAiRgtZ dt`&ce_mKM zm|D)AestqFSB1^lbdect; aiR^!O OXqw9*B; zoYQ4Yr%-+U>EXZYp5$hP!^jWXz8$!ogIy!6PugnR#3sbaO36DM>X#KWR?6F092^PQ zXhm71dJ0xaJRcE_nv9Ks#oJz<<2kKntMGnNn^-bXC8X@OJ`Va5v`4jB|K&}hCteA0 z(p5Ki%sQ?tau)4~EHdIr&+<$dNWjeanL=P+ncd##=|`XvA7vg?qd zxkW#q>X(N(7VX@)P~p}xLJip#-pxewO6u6>Oa8Mr?~vMzio{~k)#B}Z>=Hy<23_{i z>D?rz*}wKQU6J0d&K*JAf_1e+owhnNucuTp${u}x3zaZbAm3NpI5Ut~g!XKIK10Ti z;C#KNn;Ao60`R>!bLx71abRhfW18_~`?%w4|NK^1R=kVNx-D8Ite{Q$+ic6)khd61 zI#!dJ{+4N6LPzr`c5tb3^J6VC-NkXVI4_(Aon_b>nGmfg{xCb82uLI=$2rHZ-h8ni z9{22_X{r%FevJE=$}~Mb2Cl7A(t#;xGX9oLdEuoH?YsqpB_NF6 zvS2y?79H3su& &R@=blNmh)}TqTI8*|aLwsrxu7GS9%< ze#!J&;bxHb5m{sE<^98L3T$>i5N}zIpMy2(jV%1}1cbT(ujTAPGHiJcWM%=zD_M9I zrvD#{O)8C5#NrWIWcPwSxU}7F7#qFf;^LJP9XMxup;s2G!2vVJTdgtu`3jH4?e*(+ zl{@?1B#VwbFkl2(^)Og!-u9ssx{aaU9gE1`fBwfKnQhS^b9bDnynMHM^mcL~GCA3u z2Hx@}7PkG? bMK^OO$yWUX#&2j{U!f8(lhZ)s`a6pv3il#jb zRlr6r+V`PPPs?YTJY?MgI^K{GvuzcjYye69z2$I|XkEa&Q6-^CdZ1|8F>7gF7!0sY zjl4($q1}?_mx)DNhcCbL0NIp;$esS?1WC YdqP6N!d%aYLIn_{~b;DhLitt?U zII`DaZUgyu&6fBbUOL@n41#({2=qpyvc9q7JiHd3a}Di#p1A0X8f<4Ei=)R~l%#!L zr@XG3;+A?Dkr8=<0Xz>_SB?RZO~NcQ5Q`!!J%I&NXC{VH31GhCybQ+~%>oCt$R6dh zU(VLl$qsVTqyke`1puc!L?!(MJ>w9_T09{g+ycsg!Z&4o(hrCR9yuU%n9zbZ&}~?- zx@#NZTC}+>+IMpAZ}~KhByfC*Y_jvTA_5|uB5VYg6iJfs4)2_sL`#Sf9uC2+o<&RO zE*d*7jQ#Z}pzM2QS^*f0#Jqeg!IWXl^d+!f!7R+Ayzs7anZk%p##`8xQ9%YSCt9W; zHeL>eoHz$|Rwf~pK=`Ohz4P@xN*vCA93USrAA}3CuFB g)tSIjGwprFmgw zuS83`e{q4SIfodPfoLgM ovPlp?726g5z>+-aN%AG`qoWND;oi}uwG zcnhlXz0^pA$+TL*iCyj_`7NHDMKc`zx8&IHg!6(?7VG`>0psb&o{KhtGRnAOY5)KP zy-7qtRA>q5FO{s-sAAw$MIK|Da2NTZ;&9MM=xxEs7U%##w^mmM%?@ZA`E?Ef2GWSr z){cn@t^m~qFGz8Q5;Y52tb4Vy>rl1at2pW#@#M_{20Tq8Q+qNN`aKCp7Gk$09RLR$ zLYgL$pG*O~VCEEv2nr&czb1BAGOaYY3~__TE10E|-v1e@UPx*LnBf|G0^e$Um+##G z-Qi~&wZi700|qjIGAn|1c0%X!L(71*$P(P<6u@;%!v^!77tPh0OWqrWF|)HgBBzV7 z0`vOHnP9?*+@$r4n|}Klc0}9HU9Es?BvJ#<^G9g&K$(l};F%gNH&;(bHa7`6ms%Fd z)#|h9#wl>X(+Hr^(`e3Al_vj8zf!NEnO2ZauiTVSt htg4wuVSW*=&qSovih#J|E<}==eSmwKjoO1 zA_Y8J&-~_~3}a-o3Z^`+a-r)c+NWBIZ )rqsYyFf zYv%gNn`BKmBpL8KgF0At4@w%~-0a}aCv}T *=+r7^H4;;UlYIRFC(Or)gxvqJ>DgoCa{fCtw?KrIi@211(vT)s42W?G|Mxu}PxO zyo$)$Baab_POjW7OLMP}N_)dh0E%>YvID8h+zA& zB%xFi>`hL9&oHV-RL>M0Fr|f0#h~}7F&A!y$n07RCrWst?HH$AS42UNffTt50p{w= zMoRl)QXLUNu5{QcrYTqf%ks*y!5l(I1O)-8^YWSv4tMG|`I=Ced6U_~8pm$R(weG< z+KF~UZH1s)ND%Z|g{Piv&B|>6pWFk2T$L-!$062c{#_oszA@22sR(l)HzDJ6%7Rpn zfdvzWemy%oQ_Xyi86+AMVxMSt*5ar2LKB7glLkaf_aq7k&JhvJve%t|HEo{fWAc*e zu{>VFIXbkH)x*6>R=-pFtowH);^aG?S-a9TDd#La{)T&sLmBE8wprjP$-dT5+Dsft z{I`^t+`Z`NvpnFQrep-Sul~II8P~t%@jRL**XxYz<7IX70wh8)9Oc=U&CDBad>V7+ zr1Z0DQ1{Cbq8iDXjk16;mff}Q%_C c;_n_)Nv_bbuWuY5soZevpR5cDP?~edNnV}v^Z!*D?c9Ch>a+EaD} 2sUWBXeEJ-&GS pslWc1Pd}f3pU?j1>-Ae=`ag@i$F-XksmA~S002ovPDHLkV1nb`(`*0$ literal 0 HcmV?d00001 diff --git a/static/icon/b2.png b/static/icon/b2.png new file mode 100644 index 0000000000000000000000000000000000000000..16081f3db4fcdce554d73221d03e837cd4c25837 GIT binary patch literal 11072 zcmX9^bzGD0*G3va7z1G-lA|O?N=|yTbc~Wv=~4k{K|*pc=}v=?mKGR|f~10UHw+jt z2JgPV_n+;#Kii&X=iKK$=UmshVxQ`1+`G$smw m zfkH)o-=&swfYEbz0q9nTE_wRiLm}Qy-QAzO3n!FRyfk& &+Ecv%vIQ$~7Sz|<> z=GJ7!QxqC_w;(p*-4l{ O!PS#zyI<-YgG@Tn45f=#wzkt+ z?e6cq(X>iSoE%5%smvoip8j(bbPpJJHk wkFDzlN|xu(Av Z*Iy_>Bl1*WDn08Hjz@1*L_&qnRawk(>CK| z`)y9Am&RwB1(~%t#0yINX0dx&lFJ8T)-D_B1hhVDuo~f-*bG{get}Bj$KmR*=9$e+ ztwm$$*4v;1mlyJD(Tm69uD_tyTkw4UxT}HS7dt( 4SPlt+}UD;vr7;G4|AOrbP5VXpNxbNM9kFHDj?SQ$A7^- zc_dkb*%6F!% zLX#f)Gkv*H(T#MVMK=u7Yq)#Kb%>uiSaCP(N z%=C<$|3RRRZC|8z%Y;bid8;23yT@pAb1D*gwAkT$cKxO0?P&dpuXx%d{1@!6DqOy} z`U}mg4ZA}>C?@yt_R @|zsk9a>%^`6Y?aRMc-y2qG~@AVr_}W-JG8t?{;K7M(sGv!BdxKn z`9PKZyy$NAhYYu5$E6aj82TWFGlDzEYr*t5B2SsEu+n%0KzuV3L@_10)L0#`<#hWS zUWG~88h#x(9#Ih)DbB>z#RlN ase7o{X;N#_78U$~c* fbCYBu8G^&OodYyHncG`LnF($`P>xu5=_hA+u59~WKB#QY5y zJ`X+oHQ(71v{(u?+YBxjv(5yscN}(pL0*O9M)d<$NNHcvg4TaNrSoXO*r-Tx&>#Qs z^mjnU8=O>OJfNC+ubH@(EaZ-eS`)_<<&FgW*uF>JDG%%S%
ZCU3#M3uC1_eko%ug|Gu4;FaR)w@tqkn?BR3rl3hOq0T8Axqq2{oFBtfpEtVn{5 z``$b+zUm%0{d7O1!2tsW5THsSj9VacobCeDorVj@^-5jUo}DrZ2a~@L*!#RSoI?_L zfXx-~wv#GCfNs7W>U<@upJoFZ=Ar1&g$f*D0UwTj3wb7IwMoVjaH;48J^~W?53hx@ zm4|NW`po*a$tfxd|0dyEd#@1F#Bx=wYG1JCj1~^^(N&AsoJ- %m-@`WU2*YEMIxC2$FNHtut7>k_Ra! z=OtLZM8qeZ69MYcDLft=uYQlD84yHoX_Bu+5C2Ke^|fm>M#HA^w7}{|+1AdaW<}w7 zZJ9i6Q8*;{-Ku84P&DQv5%gck5 Si zt4xgX{ubdp*t=}RniT)AOeRSNpk8rB)Ieoy8^t ( zAs<3ZeTTD};j;+w)=-hYxv?<;{yzz@__MxN``RSl7aUHQ>+~p%D1vBtIPdD^nsuqd zq_K4k=TokUz~P=)IizTtpTGPd7d=NWj0&i~5pIjh_giWj!hRW0t?c!vRTzUa7%GaD z(fX=$5j1`6Usodp7IQ(me_ew(Aq6_39*n@a`$CMd&nh%0s*6p3ei~|gwWevh &e3l$%tDGHv>8`H-B4`z;ADd zy%&3-V5;*qRK5ku_%4y!caB{zx{S`z<{u?~i_F zaWMs#D?PF2PWUm-Y`ZcINiq7fuT)d?SY dISMx48Jjl-3qy<298Mgq6Y6#&jx5@WagEWcs|P2m z>h|>#gRA63csIYpjlkj`+t`5nY>v0<4TWiww153vLmH H;KcQeA`%;>R6H#;f;PTPsTOJd{eZfAk2w4wQ5k-6rT;i= z_0Xkj-ASm7vyR%pOX_;c2WynaNd5d&DFwovAD;VbaZ;J=k__Kq@u2%%iKvX=rI{F1 zMw%5}?4Rg?`#^yAlE$IUQFe8Y+>3>vhr%G+)3DU4!rzvAF4W!aas`tS*5y#XQaS0L zuDsBTG{&4jR3*kWP*aoR`Ugnu*~OAjwTC`~i}b^M5>Chm<%`FVXuqAJ_QD{@{EbtJ z(et3i`0@&2KWpBSAap&Lh_9_yy%sgQ|M^q=vaSgyBrLu618SgM?DWuLoT7Bu2TZ*a zP<&i*zej^p#xBkF8T7l<-Cx9R5IE{aaM;s8UanHu&r;s0uzo_LpoN>bCxZ1pZ@jBs zpz%rpCuHcm)5-Bp_@X(Me~|lp?|QKx<2jeU;KQLmNqs#gQ2b~?jPsdJZRa9?WsM_4 zci=Bhh)W#T9BVN)$3oXaetlvS%%sGX6*iv7Uu4;!U`oy=vY!b!aT8*)$SFu~vbyyL ztB*tRskwm+dQ|ry$$V dN5y-}wifrbh@Z0Dnx5DNKFxgR8GNi}zyIx& z!{G^hK94)q=|_XXWj7ECAphJ7wTn^Hjw {}mil)jacVwKFFyB^oDncX_n8e5}8#`ziL}E>`O0kR^1?S*Rq4*1~z! z!R0-|fGh$zQ*Rk~rPwJ-T(N<6!AOAPdyfa}ooYk(L2r*z=J@~YuGSe@ek6+!Kc*Pu zQXYE1`z=oD+7#RuNtEGL!@vG|rtwD!8A;R8E8Tb$+~$lRh0kCXP3 ?_lqon8t%XQ72)prWq#3HlpIdW-zZ}Vq%P5#M7JHLfm)u4SCMhb zM}C*h*FbhNW-+c^A(h&%3DGK2yGwM{3Efw0UUuMAs{DKF3f>ew;?SV<;-fp@!7Ifu zbY2B!skCT+w7#XHfx)mN8Ck!tq;yDplI43?x{edvw!V*9^B#tr$x6H)U4-wvzQ=ZV zG)M`Ss<~G_M)H9!7BRVtUuem@@1c)q)ic I& TA>B&c6)?shyt6 zLvx&El}TynFyDvtHxDP6(>;<9Y6fZ^svOtF-||mqk0XJ6{8Sh-PKej_<@=)~)_ieE zmebgvn%8}^KQ78y_7Y~%FPOJJ35ik(^wh7{Zqyzl0~s$({-Gh7wdO-1MWV*2p2f`< zDI(XSPl}IA_EOc%$zD6%Z_bMJuD_tls{LFpSkiV!D}`gavAThX^;e_x`GP;0vFeBi z?#C$L8^80)3CnS OENzZJK3EB@|fia9>ndUm0A3GvI;ZGhTKnErp zt6(lB9#xO{hn{~sSYv5teGRM60kII5wmMEo{m#5n{s80LGMH)m^SsWTgA?DHk*>=j zl{Fuc(6mNfmOlaSx*OLjt(D%S#++E~mp_VAzqnr=%Be~nrlM)yc4OA|ml&KBQ!Z%S zz)$R>%v5?QNqHpr31W19`L{{Zi`;Ztd{Hbl(kvGFk~Zi-Au++Y28Z3EEQXZ-4a{h= zf&+>aCO9E|iRtr-t&R ;C4yP)sGNtcp+B4TqHv$g z&~&Fu&lP|6KkITnJ+ma>^g^?tzACQ3;&ZI}mg~I0q(vgd7=L@c;pgK{YUS!**spvZ z=7WIeHZogtU|#pPW2*xWj^-2NzC6YYj|6y>HdLYv{YVRx7h(f!yiYB>A~_ja5N z{XQ98w(Z;+A<{T_FX60U-`BGl7>fV^R@SGe>mSb@Ibo~IZO8&2f1b&KQQ66JhYCg~ zwJ$et3y`Ez@w;X}7ee>G32;8)>gQQfr0!#{scFY(fl1jXIBnABZ#hz(ti&j+=&wh+ zLcV;k;*sn (8>|6B&v0adsB?BRh(u-!XEyis zLsQTX7*)`n7_wmHA@~b!Ca3^O(}s)#u 4bWCz>@^~5T<9k1+Uc{B8S5RNmd)|%h4~6{``xnKQ5S67W zwiF$b9g8CP&8R$-T?S?fD%^dRC0qn$u3dVY&teUnODV=}&Zw)oGpPrf&|L4pZ)z*} z$`win6H~)DAv4rgHOd#7*tJ pvYA}cj0fLn+inS)1t0jWFxj7+jD9Zt}^SHgPH?%*DZk%Pd z==6ZZULwvyK9vF1GBQu9hh%$uy7H>59*`(poGNzmp9$9vTTtSiP-cFl*y-5ThP`$n z>x>Ixv!Yk`ekxcZC;=u%lIz5xK&|e!CBdaUq Bu!oO>BQqrsi)F+Q9*61 zP5^OnAlJ(1*Vvj_tTHv6=ti#tV91~aBnA*?WgQ@4Q6CtkH0w^`7uOq!>bmg}?}KS0 zRp)%WxFAdCcUVp-_$j$52=5zKxnIKPf^>R*D(t9Toj3Vrl*AVH*k$5eS!{s`-V&J2 zI4$O(v`<6L8*)?$M`_O2-kvh`e%mvFy=373{^Nf)A?{ k!1@~NoRd#atCGxmLSfy7U+kCOs8cnZnt0w&1B<14bVZ?A2>q72mol?K6 zCR0Pcg_`iKJQ>?$2)ph7yG=(wGlf~y(*=?G*3N9f_IGFx{LOw`7KonXVE*Py)5zna zVMnSwTtXJe;mFe;s~Z@Jd>>7Ghm|mc(PV;|W|lP$mHf!(4cD@b-^Tl0o3r*eByk_k zKMa7r?%#c~t#^zJ@HMh@2i=K}l&MwMBdw%R_^MFML%Nl3LKopqW5DKcd0e(V^L=mZ z+@)#PWai%MMRulD41mMuN!a Z`;-Cu{hB{c_@2yW^cf^D2D!0~TSb6karf+nk2GBDi7jGctn)meG4gi? zxmNfo*U1U#086U&KPo-HDm3<1Ise(id{n+jbQr;OJU(?ew?(|NWWJUUGGr=##9z+| z(fOIY;D`xGaZ|Ow2(L*o>f=qi{?2l$n}NVj7z#MKSw5nE$DjyM=2o>IwyR|jhVCx= zX}!@Mj*?RmbwbMP1XCf+u`M7xQDSlNJwg$m%NUjHNC_8+sNq)UDz4hCGZ+a-bcE;& znz)Rbnui{3@v!($(6v==7yApE5)PkmuS^afkdi~(A3J0-j~4%#-HbEGIuo6tVv9Sm zkLJ59FW(_Mdoe=rX__iv0H|tDg;|>QG3i@MhRm_5Vloy&6@WbnjBoT)yzBG*+$Zf< z6((F}&WBL^l>DCAW{#)gfS2w)3YyqAWS%rCYamHT;;);%sFWDq10i0FI45NMSjxrz zd!JXi#4b)&|8FwdsEB_w<0INY$ hhW9GdkU;HDVFk^F*HJ51DiFTVWBhLk7 z)=`HiyGXHcHazy{fA@os+-^-(ld7bQJO;^Sp|ivGZ=Lb%H=oz{PzN>pwb6XX(Url+ z$FqFntSE;nA>pGRB8xJhdyxXqB#*b>d@-9Z;EyYB`%!`vCJwhMTGC>e+!RGe-Aa89 zjYWO4owRxije=2mjq#QU262)LMm{-^^p2rR6?B XpyN6G2ds#w^nK=Sej( zf8?DRLgl!`K7BqnWUQ_MN>?)+52H%M;ghm{K;a ;N_Mp? zaV+lO+kR!E+oOSA$7HHd@-FP7Kqfro!&XXc-utl1g--5`3#iB9g6sgwEoyaD)n0HekCsy!Wc~bd>Ufj( zq~w@T*8*lSpb9VtgwHm93^df|&i>KCA4@Qi FemjqE9&lGW0m)Gv8>N1 zaIT2VdJ0*Ma S8)fLJ7xPF_BL zV#Hv$@Hl+nXhw l|ZBGuSz= TGSFZY`ISy6Z0+r?jz5T#r58p zoBqj2ndRRjGXLR%TTW(&FT@ayaVDtERa8nBHK%G~h~5rA 8*u*R^c^ubB zJ1|IeldB>{fBDq0k3&H0k~1BW6SCV5^XvN3Y$q`ZkMd-M>pTq%6K;bBWgtMZd3)Te z;bb8PMJCxgK&SYU_P-umEfpy%+ >GvaUi!TXD!R0M blD&arg=W+WHl4P3Q2URv &v)&xyOp>u>$X-Op^NFh2Q<1oz*VJ0Iuct-B)m9}&Y%!GyU1;A z-eL7SEw#oD<@PbnE0=y`iw+N5UU3lY(cO7VY2}f`UpuE=tIiE10_Yj2QP(whYi*ej z5ZpcZPYbX @0 zMQMrH_KQMAECeN#jvtv=*K$F8e10jca+CiNx%*oFIJ?^DaGKTs-9YNm{64;gDC`_D zijs;tCrQx=F{i$g`bj5tLB#$ Q~n)ANI~2 z;W&Np#utSKZBsH_*VQn>udW5uYV-M*SF537+Su;Fb`ibGN+gm-lz$yDr@mCe31N|G z{WiB!OD)atb}oc|kjogI$g$zS6g?yu+0o_?CWW!m8ZJmd2e!`R33!1H3E3Kap5I*b z4}>PjLKfhHVvI5i?!ImJJu`RMK9Z-5Xn|s%RarEIrrbP2fF9>LiBVj?eYW5el;=Mb znD+twSgAmjV6kt7EF{BJYmhzTRTr+QJFefwo+|fm+7sbYI;}@cLC6ZjRQhkZq-x!- z|B~u=@<7 CH*`wEer)H~7m#=iwXOdUbcPLjtOYrtijIHTpU zY@KGi)hTEiscv6kKgt27)dQ0rHCo_(+WvDxTzN>vx*R{)5ocTf{6M2XJ^9Ze^)#!; zasz7&k*YmGet>@=2at$T`>R?MOBMbQBHlKAgvCz=l9GiGu{inM3t5`^Dqfn CNpOGe+NM{WE KAJj^GR48sbtiVx8KaTRe zHAmWa_TD{rv5hGYx(MKBa07*BDSp^4)UNk*u6^1K3n8W8PD@qM=Y#m}vpLbcRY+|} z8Q+4(h2vgXcs75_XNskT^tjqbh7@ 9n!58B%l;UBZPMLS%tQ-`6|*@@f$x3*2PE{o*pc zDf^sDv6-nsT^#O1+PU+c^xZUY;trIms{Qx$$ySilM1C^*jm#7E5J&PHV{qTMIkIST zE%GVyx{?w@`?dyJe66#x4?evaPWv`K9Z8QId8|cmmd?Q&?{IaOFmvt%> zPi=i+fe5DuFEvSHvuAuhdJpp{W@aqZFUIsfToLLg>Qw4D;_&9Qb;}@j-0FW%Flkzt zo*o! Mv7Ij{L^lXcM@l0-L+Y{=$^X{ {2^+8 zU8+gfDuD0HB>L{rJtldl&@o VyGA~h;*uCgfC?a>M{Fw~z@(v1q1`5I{AzyCaN^T1~ zVoAB?p1= hhFUUQbyW`f1i??@K%|)Wt?A< zd@hUmFI UB1YH?seADsqx7s_u_*14^m3VG_~oQ z-m(LGoGX`0&$RaIxi^Ysj#d{V-=$+tQ4a>%42hxVdHZ!e;rRmd&f-_9MhhEO=?3`# zLdkBym}iCA8htJ`UE&q^RCI_?8~LP4KrN!_4*H$`fb3(Lgjz~_bW=IyvIA 9TU{ckq1x7yqY$4_Re{f6+}6*64FliIK%kM&?yXh-m{ayns(LoLT=r+7%IB zT5%^uz59v#-*lzdrE +miS~nxz4@Nj4RxF-qh)#Eg z3)DrQ8|a{@n3mySLIs{k{?ugECQ{r* K9uyo=zKBp*>JFnVx!z0Av+fL$ z*0=t9EkR2_9FF6BqRAlnlRlOF`+hT70^ohJPB`A6Rr nSN`W|_O2n~V;5Q6R4i7yyKUDM}-xGXEq# zUXXH=ZVtxRcBGKy`HyOdjayFJvATPv+o*0k>9fc_R-?6>eU|}l3d%I=7A?b&4OU1# zo`BOJCyZ7rXvCGlX5cw=SC;!Ko#q@t-=wH8e~^162V(W<=#kmm2@&!$OhN{rPDA ziXw$qV0C}R=#07=+XGpg9w|S~fHR%Z%sI~5cYg9&XFB?olHCcpKT~l4l!ZMrNL$bS zH-B|257WhHnB!f#D7g#2_iKjJ>{VKz;yv%z($oFX0r~mX{(Dz+ha&YE=KfUG)EogD z`8U iimGGNKACS7JME7R>=sm*4JvY?Fw z!O+>pIb4XkQ_m$Pi`}Dx`eJjTmh!&f-i&4L{+k`!U%yT@YN{EOhZ_IRx8nL+^l;nD z9Z6_Myc+ROxzvc}bcQR9wNvFI*CR^Gk2WsJAhG6m=pi%rL!g=PV*A$+>^L_rlNPT) zoNJoO7O^$Gt!j8{To#2_EV9stTQL+A39=Uo7HZDOTYd?Jy-D5UPlZJ7riKaU4uKnk zLy|L|AeYl4H)JXwD1dSup$xb8YRP{Ro>ZpWnzCJX98N4UD-D_UZ3Uirmrmx#GzN`P z@Y667<0n8`4t;pQ8c|RFeZ7+PU!IO~p~Ru6-Y3nTY~7-RU9`fFcXpj0YAR~E?bxDo z8>Md#20$yGzjkh5u4mGJm4O}W_}OAwOoueEPlUfzc=+Fc(#r_;u!n6A-=_un%pU3N z2le^uj-lL3Cl_5SL#r`DE-AH_N4au-A aXE_C?MXtX|ePFmjj?yA+o{>tpp{M$XH zD4ne4FRkJ$wOQP;3K7BIE{@%9<1@c8)gTGBS^dXYG6Pef@)v{vSkxnw1q(M|0(oyV z`nSTRruUWwy^dr8Y&U{&)rLFTTA%d=N;}FLLO!0j+og(?i#v1uPeRHrN^^%}J>X)n uoa7FETg~b5E45|hFXI1J8PPv(iJDqIo%2 Px(u}MThRA@u(nq5p>RS?JjXV-o=CM9XwNKLDds2JN9+a^9(d{9XxD#~sX;&y3# zYTW`4VtvAP6QdQAb_=o5!~lz_DT`nmYSwB@@u3fkFSKc^2^frBBQ}9lDIk>{Gp8PM zd)Zsgy~}=F;=BO6=VN{|b7$t M~X4ASYSh;*Pl4B!iK6l8`8s sDbAmW4Fh+m31*>i3Vdzqp7uYHByA3Egc zq37O_ke^=o&=Hhvpo* bTEPMptzD0%s#eL+(78v4WpP6;IX;4(0om|c%FdE<>?kSM@(?d_Ja9UH zK-wk*3LA*qo~rG&;1JOf&R)F(9kPz8EXSEF@$;QJG&M7c#Bjf?Z+Y>M4usVh1!VqS z6 n+64#1^@Kx_tA08$7glr8E+`;XbJ+Ufo{+nNjNL 2~7O&27xRQZ~;^cLe9pj50Ryhpl6HR)BQP znGQ&IuGP5zfy~uB6N~2EL!65FH51nsm5DL|;#$Qo7Wpv8?T=M@x3h<>kW=lvoek`a zZT%*Uq2I6AnKEyzBOp6(VRW=p{okSh)phu$g%B%rHdY>5?5hxd|Hf}#GX)~PeW;82 zMg+uW9iaF3w8 SnuKDXF^;UqyO>l4HSGQUb9wM18dc(WbjdL5&lsU?k8TWu4}L_>Z~{|6w6u@AfLs zWJEY}BG`3Usc{#O48L~Yi{ufV0=PfVy54hp{`WExRMQfOoih%c2gF|<{OpxYo>}in z2vJ#(P(*zx@9h4T*Ltp-^-Bw+2GzIwpC&J!5h>aUfrkkw77%N52}z&{koZl2h6y4e h2;W6&yS}&5;a@H%mYGk2>ZAYw002ovPDHLkV1jjVVe9|^ literal 0 HcmV?d00001 diff --git a/static/icon/cd_mine.png b/static/icon/cd_mine.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2069dc8d590eb5937fda4f288b368525120c53 GIT binary patch literal 5884 zcmW+)c|6q58=qZEyN>L#N+`Rz$x*E<#k$H(<&Jhs