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/components/tabbar/tabbar.vue b/components/tabbar/tabbar.vue new file mode 100644 index 0000000..aaeea80 --- /dev/null +++ b/components/tabbar/tabbar.vue @@ -0,0 +1,101 @@ + ++ + + + + + + + + diff --git a/config.js b/config.js new file mode 100644 index 0000000..d9639a4 --- /dev/null +++ b/config.js @@ -0,0 +1,7 @@ +export default { + // baseUrl: 'http://192.168.1.63:1017', + // baseUrl: 'https://app.zhongshuai2023.com', + // sok: 'app.zhongshuai2023.com' + // sok: '192.168.1.63:1017', + baseUrl: 'https://appapi.prod.zhongshuai2023.com', +} \ No newline at end of file diff --git a/hooks/useNav.js b/hooks/useNav.js new file mode 100644 index 0000000..ce42edb --- /dev/null +++ b/hooks/useNav.js @@ -0,0 +1,74 @@ +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 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 + } +} + +export default useNav \ 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 @@ + + + + + ++ ++ ++ ++ {{ item.text }} ++ ++ ++ {{ item.text }} ++ + + + + + + + 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..4aa4f0d --- /dev/null +++ b/manifest.json @@ -0,0 +1,90 @@ +{ + "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" : "wxbf62981cd056044f", + "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", + "h5" : { + "sdkConfigs" : { + "maps" : { + "amap" : { + "key" : "fe4a4b418bf5fdb5f52209072fc6354e", + "securityJsCode" : "f3036e5e1fba79865f29c32195d3b192", + "serviceHost" : "" + } + } + } + } +} 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/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 @@ + + + + + + + + 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..c9d8349 --- /dev/null +++ b/pages.json @@ -0,0 +1,225 @@ +{ + "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, + "navigationStyle": "custom", + "mp-alipay": { + "transparentTitle": "always", + "titlePenetrate": "YES" + } + } + }, + { + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "mp-alipay": { + "transparentTitle": "always", + "titlePenetrate": "YES" + } + } + }, + { + "path": "pages/mine/mine", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": false, + "navigationStyle": "custom", + "mp-alipay": { + "transparentTitle": "always", + "titlePenetrate": "YES" + } + } + }, + + { + "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": "" + } + } + ], + "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": "退款申请" + } + } + ] + }], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8" + }, + "uniIdRouter": {}, + "tabBar": { + "color": "#999999", + "selectedColor": "#999999", + "borderStyle": "black", + "backgroundColor": "#ffffff", + "list": [{ + "pagePath": "pages/home/home", + "text": "首页" + }, { + "pagePath": "pages/index/index", + "text": "地图" + }, { + "pagePath": "pages/sweep/sweep", + "text": "扫码充电" + }, { + "pagePath": "pages/order/order", + "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/home/detail.vue b/pages/home/detail.vue new file mode 100644 index 0000000..a71952a --- /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..3a2ebbb --- /dev/null +++ b/pages/home/home.vue @@ -0,0 +1,292 @@ + ++ + ++ + ++ 电站详情 ++ + ++ + + + + ++ +费用信息 ++ 价格详情 + ++ ++ + ++ + +电站价格 ++ {{ 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/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/index.vue b/pages/index/index.vue new file mode 100644 index 0000000..f48a5ba --- /dev/null +++ b/pages/index/index.vue @@ -0,0 +1,266 @@ + ++ ++ +{{ 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/login/login.vue b/pages/login/login.vue new file mode 100644 index 0000000..085b18e --- /dev/null +++ b/pages/login/login.vue @@ -0,0 +1,166 @@ + ++ + ++ ++ + ++ ++ + + + + + + + + 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 @@ + ++ ++ + +Hello! +欢迎登录云快充 ++ + ++ ++ 我已阅读并同意 + 用户协议 + 和 +隐私政策 ++ + + + + + 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..2207ab0 --- /dev/null +++ b/pages/mine/incomeList.vue @@ -0,0 +1,146 @@ + ++ ++ + + + + + + diff --git a/pages/mine/mine.vue b/pages/mine/mine.vue new file mode 100644 index 0000000..fe32854 --- /dev/null +++ b/pages/mine/mine.vue @@ -0,0 +1,257 @@ + ++ ++ ++ +{{ item.recordName || '-' }} +{{ item.createTime }} ++ + +{{ item.amount }}元 ++ + + + + + diff --git a/pages/mine/sett.vue b/pages/mine/sett.vue new file mode 100644 index 0000000..31bb72e --- /dev/null +++ b/pages/mine/sett.vue @@ -0,0 +1,95 @@ + ++ + + ++ ++ + ++ + +{{ info.nickName }} +{{ info.phone || '' }} ++ + + ++ ++ +{{ info.balance || 0 }} +钱包余额 ++ +0 +赠送余额 ++ + + +退款 +充值 ++ + + +常用功能 ++ ++ ++ {{ item.name }} ++ + + + + + + + + + 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 @@ + ++ ++ + ++ + +{{ info.nickName }} + ++ + +{{ info.phone || '-' }} + ++ + + + + + + + diff --git a/pages/order/detail.vue b/pages/order/detail.vue new file mode 100644 index 0000000..47270b8 --- /dev/null +++ b/pages/order/detail.vue @@ -0,0 +1,22 @@ + ++ + +当前余额: +{{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..aa21e09 --- /dev/null +++ b/pages/order/order.vue @@ -0,0 +1,205 @@ + ++ + + + + + + diff --git a/pages/sweep/sweep.vue b/pages/sweep/sweep.vue new file mode 100644 index 0000000..d11ee87 --- /dev/null +++ b/pages/sweep/sweep.vue @@ -0,0 +1,132 @@ + ++ ++ ++ + ++ ++ {{ item.name }} + ++ + ++ +订单编号:{{ item.orderNo }} ++ +充电时间 +{{ item.startTime }} ++ +结束时间 +{{ item.endTime }} ++ +充电电量 +{{ item.useDegree }}度 ++ +服务费 +{{ item.serviceAmount }}元 ++ +电费 +{{ item.electricityAmount }}元 ++ +预付金额 +{{ item.preAmount }}元 +实付金额:{{ item.actuallyAmount }}元 ++ + + + + + + + + diff --git a/request/index.js b/request/index.js new file mode 100644 index 0000000..2bd05a1 --- /dev/null +++ b/request/index.js @@ -0,0 +1,115 @@ +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() + 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 || {}, + 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) { + 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) { + 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`6G=otRA@uBT6>gL)p`HzbI!eY?%a8Sg5&U#rwEmbv58U@M9@jBNfrTP%(Hei zZPS0!Hf 3A`J-BxaikHYBEKD4h`Uk;Fzt4a yAFGVk){|<>r{8JFQ+dBGo9{c|H?+MM<-WDiY0#VDvVe)fz`FhI5D;64yUWK73 zfs0~P33cPm& ulG1*jG!|5hJ<`F^4*8Gex>v5TL#4ua!j_UNEkxdj8l=* zD~>;5)6b%ujtsqHQ!kE~1fokwnVZQY49dL#{xGUJyS9F%v-svBCBTu1X-2Ot6zaKA zxg>AW^t08E0K`(5dd^_ !QX%QeSfD^L3&kBf3LEJB}c9v>E^-@sRW-rH+5ynj8N6UkWM>NGHD* z0nZh12`q_{5e7~#T5S@EMpTR YI`>!HM&n}Ec=pPDj@?6O8 zWjv)ek(EFM%)Cr!sT9&?2t~{BatQs>lQNRux+o|^4I>6d^@2#^sw+G!Uy#G>X&zde z9XJ|OTAy_J(Yw!Jtl+r<7#a<6;JA<1PS$XKG=k?TP!z?4l`1j@6e%QKCy{>otOMa@ z5CzpOB9faLf}%}!Nagfy6F|-Z2XGyMJ8sD1zSS-K{K8m-vm>hRO^(ten7s3Jy{kGs zv@|&!t?zE1zzeTck