From 9f287fa67ed7148cf7f7b071d5584b734a5ee41e Mon Sep 17 00:00:00 2001 From: jiangAB Date: Fri, 14 Nov 2025 19:53:07 +0800 Subject: [PATCH] init --- .gitignore | 23 + App.vue | 23 + api/httpSetting.js | 91 ++++ api/index.js | 8 + components/recruitment/recruitment.vue | 246 +++++++++++ index.html | 20 + main.js | 25 ++ manifest.json | 78 ++++ pages.json | 73 ++++ pages/index/index.vue | 111 +++++ pages/login/login.vue | 275 ++++++++++++ pages/map/map.vue | 238 +++++++++++ pages/my/my.vue | 151 +++++++ pages/positionDetail/positionDetail.vue | 419 +++++++++++++++++++ pages/searchPositions/searchPositions.vue | 262 ++++++++++++ static/logo.png | Bin 0 -> 4023 bytes static/position-icon.png | Bin 0 -> 2331 bytes static/tabbarIcon/home-select.png | Bin 0 -> 894 bytes static/tabbarIcon/home.png | Bin 0 -> 845 bytes static/tabbarIcon/my-select.png | Bin 0 -> 516 bytes static/tabbarIcon/my.png | Bin 0 -> 505 bytes static/tabbarIcon/searchPositions-select.png | Bin 0 -> 629 bytes static/tabbarIcon/searchPositions.png | Bin 0 -> 610 bytes static/wechat-icon.png | Bin 0 -> 873 bytes stores/user.js | 64 +++ uni.promisify.adaptor.js | 13 + uni.scss | 76 ++++ 27 files changed, 2196 insertions(+) create mode 100644 .gitignore create mode 100644 App.vue create mode 100644 api/httpSetting.js create mode 100644 api/index.js create mode 100644 components/recruitment/recruitment.vue create mode 100644 index.html create mode 100644 main.js create mode 100644 manifest.json create mode 100644 pages.json create mode 100644 pages/index/index.vue create mode 100644 pages/login/login.vue create mode 100644 pages/map/map.vue create mode 100644 pages/my/my.vue create mode 100644 pages/positionDetail/positionDetail.vue create mode 100644 pages/searchPositions/searchPositions.vue create mode 100644 static/logo.png create mode 100644 static/position-icon.png create mode 100644 static/tabbarIcon/home-select.png create mode 100644 static/tabbarIcon/home.png create mode 100644 static/tabbarIcon/my-select.png create mode 100644 static/tabbarIcon/my.png create mode 100644 static/tabbarIcon/searchPositions-select.png create mode 100644 static/tabbarIcon/searchPositions.png create mode 100644 static/wechat-icon.png create mode 100644 stores/user.js create mode 100644 uni.promisify.adaptor.js create mode 100644 uni.scss diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2561bb4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules/ +unpackage/ +dist/ + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.project +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw* diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..b169d07 --- /dev/null +++ b/App.vue @@ -0,0 +1,23 @@ + + + diff --git a/api/httpSetting.js b/api/httpSetting.js new file mode 100644 index 0000000..c1110f4 --- /dev/null +++ b/api/httpSetting.js @@ -0,0 +1,91 @@ +// api.js + +// 基础URL,可以根据环境来设置 +// uEnvDev +const accountInfo = wx.getAccountInfoSync(); +// env类型 develop:开发版、trial:体验版、release:正式版 +export const env = accountInfo.miniProgram.envVersion; +if (!env) { + console.error("获取运行环境失败!"); +} +const baseApi = { + // 开发版 + develop: "http://110.40.156.216:30005/api", + // 体验版 + trial: "http://110.40.156.216:30005/api", + // 正式版 + release: "http://110.40.156.216:30005/api" +}; +console.log(env, 'env') +// request请求baseURL +const BASE_URL = baseApi[env] || 'http://110.40.156.216:30005/api'; + + +function request(url, method, data = {}) { + const userInfo = uni.getStorageSync('loginInfo') || {}; + const UTCOffset = new Date().getTimezoneOffset(); + return new Promise((resolve, reject) => { + uni.request({ + url: BASE_URL + url, // 完整的URL + method: method, + data: data, + header: { + 'AccessToken': userInfo.accessToken || '-1', // 请求头,可根据需要调整 + 'UserId': userInfo.userId || '1', // 请求头,可根据需要调整 + 'LanguageType': 0, + 'LoginName': userInfo.loginName || '', + 'CompanyId': userInfo.companyId || '', + 'UTCOffset': UTCOffset, + }, + success: (res) => { + if (res.statusCode === 200) { + console.log(res) + if (res.data.code === 200 | res.data.code === 0) { + resolve(res.data) + } else { + reject(res.data) + } + /* if (res.data.code === 500) { + uni.showToast({ + title: '系统错误', // 提示的文本内容 + icon: 'none', // 提示的图标,可选值:'success' | 'loading' | 'none' + duration: 2000 // 提示框的显示时间,单位为毫秒,默认1500ms + }); + } + if (res.data.code === 401) { + uni.showToast({ + title: '登录过期,重新登录中', // 提示的文本内容 + icon: 'none', // 提示的图标,可选值:'success' | 'loading' | 'none' + duration: 2000 // 提示框的显示时间,单位为毫秒,默认1500ms + }); + } + if (res.data.code === 20001) { + reject(res.data); + } + resolve(res.data) */ + } else { + reject(res); + } + + }, + fail: (err) => { + uni.showToast({ + title: '请求错误', // 提示的文本内容 + icon: 'none', // 提示的图标,可选值:'success' | 'loading' | 'none' + duration: 2000 // 提示框的显示时间,单位为毫秒,默认1500ms + }); + reject(err); // 请求失败 + } + }); + }); +} + +// GET 请求 +export function get(url, params = {}) { + return request(url, 'GET', params); +} + +// POST 请求 +export function post(url, data = {}) { + return request(url, 'POST', data); +} \ No newline at end of file diff --git a/api/index.js b/api/index.js new file mode 100644 index 0000000..37fc018 --- /dev/null +++ b/api/index.js @@ -0,0 +1,8 @@ +import { get, post } from "./httpSetting"; + +/** + * 登录 + */ +export const userLogin = (params ={}) => post('/app/auth/login', params); + +export const getAppJobVO = (params ={}) => get('/app/job/getAppJobVO', params); diff --git a/components/recruitment/recruitment.vue b/components/recruitment/recruitment.vue new file mode 100644 index 0000000..e0c922f --- /dev/null +++ b/components/recruitment/recruitment.vue @@ -0,0 +1,246 @@ + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..b5d330d --- /dev/null +++ b/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + +
+ + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..a906811 --- /dev/null +++ b/main.js @@ -0,0 +1,25 @@ +import App from './App' +import * as Pinia from 'pinia'; + +// #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.use(Pinia.createPinia()); + return { + app, + Pinia + } +} +// #endif \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..3b506fe --- /dev/null +++ b/manifest.json @@ -0,0 +1,78 @@ +{ + "name" : "laowumap", + "appid" : "__UNI__3F7EFE0", + "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" : "wx6b37987f8de3af0f", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true, + "permission" : { + "scope.userLocation" : { + "desc" : "您的位置信息将用于地图定位和附近地点展示" + } + }, + "lazyCodeLoading" : "requiredComponents" + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "3" +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..6548280 --- /dev/null +++ b/pages.json @@ -0,0 +1,73 @@ +{ + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "挑好厂|找周边工作" + } + }, + { + "path": "pages/searchPositions/searchPositions", + "style": { + "navigationBarTitleText": "岗位搜索" + } + }, + { + "path": "pages/my/my", + "style": { + "navigationBarTitleText": "个人中心" + } + }, + { + "path" : "pages/map/map", + "style" : + { + "navigationBarTitleText" : "地图" + } + }, + { + "path" : "pages/positionDetail/positionDetail", + "style" : + { + "navigationBarTitleText" : "岗位详情" + } + }, + { + "path" : "pages/login/login", + "style" : + { + "navigationBarTitleText" : "登录" + } + } + + ], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8" + }, + "tabBar": { + "list": [ + { + "text": "首页", + "pagePath": "pages/index/index", + "iconPath": "/static/tabbarIcon/home.png", + "selectedIconPath": "/static/tabbarIcon/home-select.png" + }, + { + "text": "搜岗位", + "pagePath": "pages/searchPositions/searchPositions", + "iconPath": "/static/tabbarIcon/searchPositions.png", + "selectedIconPath": "/static/tabbarIcon/searchPositions-select.png" + }, + { + "text": "我的", + "pagePath": "pages/my/my", + "iconPath": "/static/tabbarIcon/my.png", + "selectedIconPath": "/static/tabbarIcon/my-select.png" + } + ] + }, + "uniIdRouter": {} +} diff --git a/pages/index/index.vue b/pages/index/index.vue new file mode 100644 index 0000000..57c291e --- /dev/null +++ b/pages/index/index.vue @@ -0,0 +1,111 @@ + + + + + \ No newline at end of file diff --git a/pages/login/login.vue b/pages/login/login.vue new file mode 100644 index 0000000..55ad5f1 --- /dev/null +++ b/pages/login/login.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/pages/map/map.vue b/pages/map/map.vue new file mode 100644 index 0000000..3e9d193 --- /dev/null +++ b/pages/map/map.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/pages/my/my.vue b/pages/my/my.vue new file mode 100644 index 0000000..306b264 --- /dev/null +++ b/pages/my/my.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/pages/positionDetail/positionDetail.vue b/pages/positionDetail/positionDetail.vue new file mode 100644 index 0000000..0faa0e0 --- /dev/null +++ b/pages/positionDetail/positionDetail.vue @@ -0,0 +1,419 @@ + + + + + diff --git a/pages/searchPositions/searchPositions.vue b/pages/searchPositions/searchPositions.vue new file mode 100644 index 0000000..b2a6bfd --- /dev/null +++ b/pages/searchPositions/searchPositions.vue @@ -0,0 +1,262 @@ + + + + + \ No newline at end of file diff --git a/static/logo.png b/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b5771e209bb677e2ebd5ff766ad5ee11790f305a GIT binary patch literal 4023 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 SYs}WS&%*SCNx89m_ntos@P4_va zug%gQwziMQRF20umv*W>KLAAir@%{$?G)Trve8300Nc<*g^vEC(-+A zaR@`-zGZt01wa$N&2-sNtZi+&kDL`k0N_*jV_;fVcz!tEo?N>5ly`SDB2-!PuPTXMT;6@%gc_>5rw zCHQ}@x8Jbc>)pe@uXj%v&)@BKdWXW-Nb<^J@Z2aA0MJWU=LYj}e}3G(-cGyUf`8oq z@tt=lZcDPrj~|a1>m5-5Jf(kTGQwXXS3Tbc1i4%dXeaM8ZRY&6O8seK#&#c0AT=H$gCdq(lrpIa`j*}GOd2a0MJ;UmJOPM z?@sl1^H~m9VwU+OcXTdwfLv>}B{2Zr6r8Ir&ify6<{f$2QIl~Nke+B_09+Q2DNM~9x09tUa;gKw0HBRY?HUI$q z(*M5bQ~6wB|8>;oVgP7Vs8NF&$!{?LA`M!?*PQbI675*G5gvdtfG6u9M()4FFS7fa z@0Ug(JOI*{MVAKD`uwH+iveI&6;DR@AFTS7u06y6SW2GM@m5zKR{cuFt+f*#00ts` zf1EZyGfzMG@|mA=_6-3*R`{HJPVh!JMhpPU`{TKM64@&Y)Y(7XTZvx;6TR#$?O6>) zw%^<>3)qQI#H2rm5CcHkF$TNDa>)X9b}l(<*|FN~pYvu?`20Z(0G!uwkap*r-tW{` z@oi`SXP1EUV{~|=C;*2|+q`;9(~l~aT>rH_Tk+*abJ&t70G5T|;jpIrD%#<@YhKlM ze2A~{gD;{0Sl0oE0#^vCfQNhLyyB{&{>e5U;%hChq5u$BEk|j4xgp+s5D*$1Kc1-quw?;4 zyw>z*Kc1-qKnGhEAPUQ^$Lz-|bpW<3K$w?WpV^OB>HyFQf47In&E`d5&g`Gp()pvh z08riNM|JHl>i>P?)C~Zr-fj+^gHr$R936Ym4FEdc3PPfA+L$D#_v-BF3IGLRGX5h= zI$@M(wQuTg9(M(RPAw>>U*Fb0^|yF*2Y`+}{MAkT@M1*-l^^z)GrrRIoWo>~VJX-O z!WPr~NIcrB-j5~#Fv#uRKuS!4rAuNG-pl}C9M`@Sc$fsH0MyiHQ~d&OYRLIRH3xZ8wO3o^g9H7XVz>Qs5)?H~3rtfHTaB@s|QWsh^l*ZUDfU z(U$@sXPlnQ6#yeI1(#m(YC+=)00voSiLZ4Mzb-S|yM3Se?hXK)1%h$v0e|a0F>dA( z0Gu189sp*>Mt=NC-kt^35VSx5kIo|H@K<++{3T=)0m6&3&n zVSAG(zWBs2Gyn|1YW*bx(Z81UYBxLp)C0YX!ruL9!Vn$+f&&Eoio)1MAMx6^Apl@N zq-6b~aEx`Icr_aa00yL66pkl8F&hd12Bc9Gl3B4rn;<8tf_npeUSsWia=+QQ#O30KWJU<9h-5E7xOW2G~LZ&_qWJL_sL5pC0v# zC+WX}_x#YWZ`q#00YJc;=(3?$*IEUS?sIq%trtK002ovPDHLkV1oGP BP9^{V literal 0 HcmV?d00001 diff --git a/static/tabbarIcon/home-select.png b/static/tabbarIcon/home-select.png new file mode 100644 index 0000000000000000000000000000000000000000..62af1bca2aa510778effe9ab252ed9baf8a0fef8 GIT binary patch literal 894 zcmV-^1A+XBP)|SECSD54qo4v#)hsfW(Bz#n9DKm>9`ln71tdyj_TSW~Mj z{}chPJOR`u8Swk_F{I%DeBf)?8t-lu0RYTejs+86_>ASR??n@wPkW}_ylZr4~0LUlZ=>t_m1dDa%c&`BLveu#5b!YnA-ppVH zGuVA#CI!F&yX+oj{*0&*0qk%%>+3a)3cy;zLC$zhpq}GwkD6GQg)$?)@bLHkn~_I^(p->5M{s6C5UJ@(h45Crt{c zGYa+YxN1P9{7WhTU#FmrNmZB*tM_ShHJYo0^~O1Qa&XEq>ANcUos%K8I|%W86Z_GH~W$SlQWv|p=1)r zf==Ia#bgF(r5+c=9t^FU#{N)>H_*P~zQ7zfihMIEfPFm{DGSWI#?#!Qv_3@UIqGgw z07hvQFAMOOvdsAo!Ycq-U}o;9B4t7{0SsRI<%%buR{+K%0^i%AD8-6l0({pi69!(e z`^qcunQ2-K8$d{aXC*I}7Aru2( z#aCUhECnC{+MaI9HUp4wvs%lI7UDIGNsP(jxOvP?01z*Cip_@l%1MaNhVVGRY5)?? zs=Sx@sSY6E%d{-{cohIEzUE?=EWlP|U04Mn8^8g@TLza^5V8PBJRyIinRnt{o(&-x zfECZe;|4ow4g@AD$-gK72{%7E>g^2T<)%r-XM8tjfsY^n+W|DsB;LuzXMQ2bUD+)E z5rD+Asv>^Y=wt;zK+B@rivX&eLsIn}TQ!0P)^le5zJZxJE=wi>n^D1P~POR9Xnlz7j0~IE^W}cgvd6 zU~Qe20CHwEr|w$qrd>+_X27F;3;;))k*)sZwjU9YORTs0BLaGx(Of+v0&~=YP}bjIj5pfwO=Kp+}0U>wSEk zFNb3vzdw0PNdN8py(dQ61vfw`9CJQ~oL7C6YSPa!?g)U!fVcoKjHPfXYP5i$F;cEm zO#qBAyegc3(4cLln*eM(MlBO<9xWc)JmV%n>bez4_e2a~XX#Y{$XS6UcFoBF#Y@Xo z0p?hJDQbDC07X1Un^Rh9J}Q7E(#)oes{m8Xrf8l55WDWI!KnZ_gm+Ce=eP>+wb-2I zD)g~@*=t@Z00Mdc-@OYh4-=p#k8%1=h_?4&HA#t08o-2(bgWr0N`17!Lq;s zK$&<}I{>imZ&RTDYiizq00030|0@M5IRF3v21!IgR09Brv&n(k5NbjI0000?5 zmmG2}ihzp%FedEn__ofZF~!N-5=8*~Gg@#WBIG}t!Np@4xh01YK(hcCS!ZrxjFw^f zEih=8HNWj8Lu*W$Q0hV(fXEmD7VGji4tZJmej5&G%G#pm7 zB1+;&LkF%dp%*~2bZf)G+VgPX|Ff7Y2#6KU!5*rBdoDFncn|NQRNN*CmZ@| zWe$0$T%P#_A(bw;TH9~|GHyal&KgnWf{1l&stR#|=1c9Vb)jB>Fl+Orgp|5qZ?}sp zO%~qC&&$7HdL84JH7>Z29PeK6JSU{2FnZ|k2&5Sn@J_bGLPB8~Ty78mLBQc*^Tec8 zsE`~U)$=|G;6WAf+$`kA%wfe`y?~%7W7!Wy90LI)%lS3! z2QW3}uqOiOUOuz6pJ*kS9mRGq!5+V#2+#zqikn5(Yez7^O6^MuU<1v9azL0@MOQT# zxqVpyx)Bf+62u7j;D~fCBj-%6R;?JR@fQF9|NrB$ptS%100v1!K~w_(^5t2~%#Y8H P00000NkvXXu0mjfG^i8D literal 0 HcmV?d00001 diff --git a/static/tabbarIcon/searchPositions.png b/static/tabbarIcon/searchPositions.png new file mode 100644 index 0000000000000000000000000000000000000000..77625b25295135e434dd9a385a054ca6373d5c28 GIT binary patch literal 610 zcmV-o0-gPdP)^w3`L#nk~!*3W@oabb7YwGT^+>n2OPk(2bG`Dy9hPub*T7xzu%+mxv-DMn6J&6 z&lMquA^-(N;G@7#*|;zbt@+xd*(86Uia-tl6o?xkjDTWSwIYx#fW)~iH>y%iI0Hhg z#MZEX0txfZt+!5!XwhO4TjNzrWgtttI@vba#a;o3aOcpblRvf9hydE4YFmmeua@57 zInc7*2%uT6;9lD6-J+HOgxhCDZnxV-n-5vHCQW;815ngRr17?qvQZGTtS5*)_f;hE zJ+{h=xdFOwFA&8WJp&7^wfD&AVDu&#C<$y9T3d@zxHIH z>VP8JUxdUivM8=~Z#7wX0pJHqd$N!cw)2AGLYU3J{b~UqrWaohq%;e^0F*i-ytO1q zO%|@fc^kNPo&x!LF=@|a0I}jX!}-7>h=LOn%efn%0m%8D^J-i-kfXEGwE8iC;Ali) z+^frd$VIIP5QvUa)(h$tv@Bi(V5W`UPeIs~Z8cT^!Sg>McCmK=A|yq8&-Z)|i%INo z$=K}xd`HgE#$xgHhMq4hVkM7e0q_>YnSVC?*7oN{yp$aR_<;=wS>bswcVX;ymp|W> wc58RY^?v{W0RR8nd9JVk000I_L_t&o02W2}CT!P>x}~ ztIrY;crIQE{9O^>B&`~j1g|Ixvb8Ibg+%F)3T{(% zLLfDXH0x=K#5#^FJ|^p0!>)8tA6`1Xa|CKmxr984oE}*yg>ZH(`iwHn34V5EAtIn) zEoZDlkY|-X2MV3DlRtj&wsvF&p{yuD1pB8YA|NjWR(E&iJG<1zI;%t;Th}25dZQ{!kARzi9#JxmvK6yCz@3PQ!oAE$T~}+WOS&(a0fFK| z2e7ce>J%0!wtvpJD|hKxN3=Yp5hrrolL0Okpa70AcI6_#w~asu=SdKhM+mX3pDF>J zKBWU_!~wSs>|8;xn?WM$vq}Ikhy~f2YY$}yk(O!idiZ~p*jEW8)&mNWprno41!2x(F+}#$2pA${ z1p#mn=8)lu<`IC ({ + loginRes: uni.getStorageSync('loginRes') || null, // 存储登录响应数据 + userInfo: uni.getStorageSync('userInfo') || null, // 用户信息 + token: uni.getStorageSync('token') || null // 认证令牌 + }), + + getters: { + isLoggedIn: (state) => !!state.token, + userId: (state) => state.userInfo?.userId || null + }, + + actions: { + /** + * 设置登录响应数据 + * @param {Object} data - 登录响应数据 + */ + setLoginRes(data) { + this.loginRes = data; + uni.setStorageSync('loginRes', data); + }, + + /** + * 设置用户信息 + * @param {Object} userInfo - 用户信息 + */ + setUserInfo(userInfo) { + this.userInfo = userInfo; + uni.setStorageSync('userInfo', userInfo); + }, + + /** + * 设置认证令牌 + * @param {String} token - 认证令牌 + */ + setToken(token) { + this.token = token; + uni.setStorageSync('token', token); + }, + + /** + * 清除所有用户数据 + */ + clearUserData() { + this.loginRes = null; + this.userInfo = null; + this.token = null; + uni.removeStorageSync('loginRes'); + uni.removeStorageSync('userInfo'); + uni.removeStorageSync('token'); + }, + + /** + * 更新用户信息 + * @param {Object} updates - 要更新的用户信息字段 + */ + updateUserInfo(updates) { + this.userInfo = { ...this.userInfo, ...updates }; + uni.setStorageSync('userInfo', this.userInfo); + } + } +}); \ No newline at end of file diff --git a/uni.promisify.adaptor.js b/uni.promisify.adaptor.js new file mode 100644 index 0000000..5fec4f3 --- /dev/null +++ b/uni.promisify.adaptor.js @@ -0,0 +1,13 @@ +uni.addInterceptor({ + returnValue (res) { + if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) { + return res; + } + return new Promise((resolve, reject) => { + res.then((res) => { + if (!res) return resolve(res) + return res[0] ? reject(res[0]) : resolve(res[1]) + }); + }); + }, +}); \ No newline at end of file diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..20ed99f --- /dev/null +++ b/uni.scss @@ -0,0 +1,76 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #6DC2AA; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333;//基本色 +$uni-text-color-inverse:#fff;//反色 +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color:#c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:12px; +$uni-font-size-base:14px; +$uni-font-size-lg:16px; + +/* 图片尺寸 */ +$uni-img-size-sm:20px; +$uni-img-size-base:26px; +$uni-img-size-lg:40px; + +/* Border Radius */ +$uni-border-radius-sm: 2px; +$uni-border-radius-base: 3px; +$uni-border-radius-lg: 6px; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 5px; +$uni-spacing-row-base: 10px; +$uni-spacing-row-lg: 15px; + +/* 垂直间距 */ +$uni-spacing-col-sm: 4px; +$uni-spacing-col-base: 8px; +$uni-spacing-col-lg: 12px; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:20px; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:26px; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:15px;