| @@ -0,0 +1,9 @@ | |||
| ## 开发环境 | |||
| # 变量必须以 VITE_ 为前缀才能暴露给外部读取 | |||
| NODE_ENV='development' | |||
| VITE_APP_TITLE = 'Metavatar-PC' | |||
| VITE_APP_PORT = 3000 | |||
| ## VITE_APP_BASE_API = 'https://photo.metavatar.cc/C' | |||
| VITE_APP_BASE_API = 'https://test.metavatar.cc/C' | |||
| @@ -0,0 +1,21 @@ | |||
| # Logs | |||
| logs | |||
| *.log | |||
| npm-debug.log* | |||
| yarn-debug.log* | |||
| yarn-error.log* | |||
| pnpm-debug.log* | |||
| lerna-debug.log* | |||
| node_modules | |||
| .DS_Store | |||
| dist | |||
| *.local | |||
| # Editor directories and files | |||
| .idea | |||
| *.suo | |||
| *.ntvs* | |||
| *.njsproj | |||
| *.sln | |||
| *.sw? | |||
| @@ -0,0 +1,20 @@ | |||
| <!DOCTYPE html> | |||
| <html lang="en"> | |||
| <head> | |||
| <meta charset="UTF-8" /> | |||
| <script> | |||
| var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || | |||
| CSS.supports('top: constant(a)')) | |||
| document.write( | |||
| '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + | |||
| (coverSupport ? ', viewport-fit=cover' : '') + '" />') | |||
| </script> | |||
| <title></title> | |||
| <!--preload-links--> | |||
| <!--app-context--> | |||
| </head> | |||
| <body> | |||
| <div id="app"><!--app-html--></div> | |||
| <script type="module" src="/src/main.js"></script> | |||
| </body> | |||
| </html> | |||
| @@ -0,0 +1,9 @@ | |||
| { | |||
| "compilerOptions": { | |||
| "types": [ | |||
| "@dcloudio/types", | |||
| "miniprogram-api-typings", | |||
| "mini-types" | |||
| ] | |||
| } | |||
| } | |||
| @@ -0,0 +1,72 @@ | |||
| { | |||
| "name": "uni-preset-vue", | |||
| "version": "0.0.0", | |||
| "scripts": { | |||
| "dev:app": "uni -p app", | |||
| "dev:app-android": "uni -p app-android", | |||
| "dev:app-ios": "uni -p app-ios", | |||
| "dev:custom": "uni -p", | |||
| "dev:h5": "uni", | |||
| "dev:h5:ssr": "uni --ssr", | |||
| "dev:mp-alipay": "uni -p mp-alipay", | |||
| "dev:mp-baidu": "uni -p mp-baidu", | |||
| "dev:mp-jd": "uni -p mp-jd", | |||
| "dev:mp-kuaishou": "uni -p mp-kuaishou", | |||
| "dev:mp-lark": "uni -p mp-lark", | |||
| "dev:mp-qq": "uni -p mp-qq", | |||
| "dev:mp-toutiao": "uni -p mp-toutiao", | |||
| "dev:mp-weixin": "uni -p mp-weixin", | |||
| "dev:quickapp-webview": "uni -p quickapp-webview", | |||
| "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei", | |||
| "dev:quickapp-webview-union": "uni -p quickapp-webview-union", | |||
| "build:app": "uni build -p app", | |||
| "build:app-android": "uni build -p app-android", | |||
| "build:app-ios": "uni build -p app-ios", | |||
| "build:custom": "uni build -p", | |||
| "build:h5": "uni build", | |||
| "build:h5:ssr": "uni build --ssr", | |||
| "build:mp-alipay": "uni build -p mp-alipay", | |||
| "build:mp-baidu": "uni build -p mp-baidu", | |||
| "build:mp-jd": "uni build -p mp-jd", | |||
| "build:mp-kuaishou": "uni build -p mp-kuaishou", | |||
| "build:mp-lark": "uni build -p mp-lark", | |||
| "build:mp-qq": "uni build -p mp-qq", | |||
| "build:mp-toutiao": "uni build -p mp-toutiao", | |||
| "build:mp-weixin": "uni build -p mp-weixin", | |||
| "build:quickapp-webview": "uni build -p quickapp-webview", | |||
| "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei", | |||
| "build:quickapp-webview-union": "uni build -p quickapp-webview-union" | |||
| }, | |||
| "dependencies": { | |||
| "@dcloudio/uni-app": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-app-plus": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-components": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-h5": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-mp-alipay": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-mp-baidu": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-mp-jd": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-mp-kuaishou": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-mp-lark": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-mp-qq": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-mp-toutiao": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-mp-weixin": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-quickapp-webview": "3.0.0-3080720230703001", | |||
| "clipboard": "^2.0.11", | |||
| "dayjs": "^1.11.9", | |||
| "pinia": "2.0.33", | |||
| "pinia-plugin-persistedstate": "^3.2.0", | |||
| "uview-plus": "^3.1.34", | |||
| "vue": "3.2.45", | |||
| "vue-i18n": "^9.1.9" | |||
| }, | |||
| "devDependencies": { | |||
| "@dcloudio/types": "^3.3.2", | |||
| "@dcloudio/uni-automator": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-cli-shared": "3.0.0-3080720230703001", | |||
| "@dcloudio/uni-stacktracey": "3.0.0-3080720230703001", | |||
| "@dcloudio/vite-plugin-uni": "3.0.0-3080720230703001", | |||
| "sass": "^1.64.2", | |||
| "sass-loader": "13.2.2", | |||
| "vite": "4.1.4" | |||
| } | |||
| } | |||
| @@ -0,0 +1,20 @@ | |||
| <style lang="scss"> | |||
| /* 注意要写在第一行,同时给style标签加入lang="scss"属性 */ | |||
| @import "uview-plus/index.scss"; | |||
| </style> | |||
| <script setup> | |||
| import { onLaunch, onShow, onHide } from "@dcloudio/uni-app"; | |||
| onLaunch(() => { | |||
| console.log("App Launch!"); | |||
| }); | |||
| onShow(() => { | |||
| console.log("App Show!"); | |||
| }); | |||
| onHide(() => { | |||
| console.log("App Hide!"); | |||
| }); | |||
| </script> | |||
| <style> | |||
| /*每个页面公共css */ | |||
| </style> | |||
| @@ -0,0 +1,8 @@ | |||
| import request from "../utils/request" | |||
| export function voiceTotalApi() { | |||
| return request({ | |||
| url: `api/voiceMould/voiceTotal`, | |||
| method: 'GET', | |||
| }) | |||
| } | |||
| @@ -0,0 +1,18 @@ | |||
| // main.js | |||
| import uviewPlus from 'uview-plus' | |||
| import "./style/my.scss"; | |||
| //#region VUE3 | |||
| import { createSSRApp } from 'vue' | |||
| import { store } from '../src/store/index' | |||
| export function createApp() { | |||
| const app = createSSRApp(App) | |||
| app.use(uviewPlus) | |||
| app.use(store) | |||
| return { | |||
| app | |||
| } | |||
| } | |||
| //#endregion ----------------------- | |||
| @@ -0,0 +1,72 @@ | |||
| { | |||
| "name" : "", | |||
| "appid" : "", | |||
| "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" : [ | |||
| "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", | |||
| "<uses-permission android:name=\"android.permission.VIBRATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", | |||
| "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.CAMERA\"/>", | |||
| "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", | |||
| "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", | |||
| "<uses-feature android:name=\"android.hardware.camera\"/>", | |||
| "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" | |||
| ] | |||
| }, | |||
| /* ios打包配置 */ | |||
| "ios" : {}, | |||
| /* SDK配置 */ | |||
| "sdkConfigs" : {} | |||
| } | |||
| }, | |||
| /* 快应用特有相关 */ | |||
| "quickapp" : {}, | |||
| /* 小程序特有相关 */ | |||
| "mp-weixin" : { | |||
| "appid" : "", | |||
| "setting" : { | |||
| "urlCheck" : false | |||
| }, | |||
| "usingComponents" : true | |||
| }, | |||
| "mp-alipay" : { | |||
| "usingComponents" : true | |||
| }, | |||
| "mp-baidu" : { | |||
| "usingComponents" : true | |||
| }, | |||
| "mp-toutiao" : { | |||
| "usingComponents" : true | |||
| }, | |||
| "uniStatistics": { | |||
| "enable": false | |||
| }, | |||
| "vueVersion" : "3" | |||
| } | |||
| @@ -0,0 +1,37 @@ | |||
| { | |||
| "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages | |||
| { | |||
| "path": "pages/index/index", | |||
| "style": { | |||
| "navigationBarTitleText": "慧图" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/uploadPhoto/uploadPhoto", | |||
| "style": { | |||
| "navigationBarTitleText": "慧图" | |||
| } | |||
| } | |||
| , | |||
| { | |||
| "path": "pages/closeStyle/closeStyle", | |||
| "style": { | |||
| "navigationBarTitleText": "慧图" | |||
| } | |||
| } | |||
| ], | |||
| "easycom": { | |||
| // 注意一定要放在custom里,否则无效,https://ask.dcloud.net.cn/question/131175 | |||
| "custom": { | |||
| "^u--(.*)": "uview-plus/components/u-$1/u-$1.vue", | |||
| "^up-(.*)": "uview-plus/components/u-$1/u-$1.vue", | |||
| "^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue" | |||
| } | |||
| }, | |||
| "globalStyle": { | |||
| "navigationBarTextStyle": "black", | |||
| "navigationBarTitleText": "uni-app", | |||
| "navigationBarBackgroundColor": "#F8F8F8", | |||
| "backgroundColor": "#F8F8F8" | |||
| } | |||
| } | |||
| @@ -0,0 +1,22 @@ | |||
| <template> | |||
| <div class="page"> | |||
| <view class="title">选择照片风格</view> | |||
| </div> | |||
| </template> | |||
| <script setup> | |||
| //#region 导入 | |||
| import { ref, reactive } from "vue"; | |||
| import { voiceTotalApi } from "../../api/login.js"; | |||
| //#endregion | |||
| //#region | |||
| //#endregion --------------------- | |||
| //#region | |||
| //#endregion --------------------- | |||
| </script> | |||
| <style lang="scss"></style> | |||
| @@ -0,0 +1,79 @@ | |||
| <template> | |||
| <div class="page"> | |||
| <view class="title imgContenBox" | |||
| ><image src="../../assets/text/closeStyleText.png" mode="scaleToFill" | |||
| /></view> | |||
| <u-list class="styleListBox" @scrolltolower="scrolltolower"> | |||
| <u-list-item | |||
| v-for="item in styleList" | |||
| :key="index" | |||
| class="styleListBoxItme" | |||
| > | |||
| <view class="styleInfo"> | |||
| <image src="../../assets/icon/uploadImg.png" /> | |||
| <text>样式风格</text> | |||
| </view> | |||
| </u-list-item> | |||
| </u-list> | |||
| </div> | |||
| </template> | |||
| <script setup> | |||
| //#region 导入 | |||
| import { ref, reactive } from "vue"; | |||
| import { voiceTotalApi } from "../../api/login.js"; | |||
| //#endregion | |||
| //#region | |||
| const styleList = ref([0, 1, 2, 3, 4, 5, 6, 7]); | |||
| const scrolltolower = () => { | |||
| loadmore(); | |||
| }; | |||
| const loadmore = () => { | |||
| styleList.value.push(...[8, 9, 10, 11]); | |||
| }; | |||
| //#endregion --------------------- | |||
| //#region | |||
| //#endregion --------------------- | |||
| </script> | |||
| <style lang="scss"> | |||
| .title { | |||
| width: 100%; | |||
| height: 80rpx; | |||
| image { | |||
| width: 40%; | |||
| height: 80rpx; | |||
| } | |||
| } | |||
| .u-list { | |||
| width: 100%; | |||
| view { | |||
| display: flex !important; | |||
| flex-direction: row !important; | |||
| flex-wrap: wrap !important; | |||
| justify-content: space-between !important; | |||
| .u-list-item { | |||
| } | |||
| } | |||
| .styleInfo { | |||
| width: 350rpx; | |||
| height: 400rpx; | |||
| margin-bottom: 50rpx; | |||
| image { | |||
| width: 350rpx; | |||
| height: 350rpx; | |||
| } | |||
| text { | |||
| width: 100%; | |||
| height: 50rpx; | |||
| text-align: center; | |||
| line-height: 50rpx; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,91 @@ | |||
| <template> | |||
| <view class="page"> | |||
| <video | |||
| src="https://video.metavatar.cc/sv/d51a6f6-187fa2dff79/d51a6f6-187fa2dff79.mp4" | |||
| autoplay | |||
| muted | |||
| :controls="false" | |||
| /> | |||
| <up-button | |||
| type="primary" | |||
| text="开始制作我的数字分身" | |||
| color="linear-gradient(to right, rgb(66, 83, 216), rgb(213, 51, 186))" | |||
| @click="toCreate" | |||
| ></up-button> | |||
| <u-checkbox-group v-model="checkboxValue1" placement="row"> | |||
| <u-checkbox | |||
| activeColor="red" | |||
| v-for="(item, index) in checkboxList1" | |||
| :key="index" | |||
| :label="item.name" | |||
| :name="item.name" | |||
| > | |||
| </u-checkbox> | |||
| </u-checkbox-group> | |||
| </view> | |||
| </template> | |||
| <script setup> | |||
| //#region 导入 | |||
| import { ref, reactive } from "vue"; | |||
| import { voiceTotalApi } from "../../api/login.js"; | |||
| //#endregion | |||
| //#region 勾选 | |||
| const checkboxValue1 = ref([]); | |||
| const checkboxList1 = reactive([ | |||
| { | |||
| name: "同意慧图相机用户使用协议", | |||
| disabled: false, | |||
| }, | |||
| ]); | |||
| function toCreate() { | |||
| if (checkboxValue1.value[0]) { | |||
| handleLogin(); | |||
| // uni.redirectTo({ | |||
| // url: "/pages/uploadPhoto/uploadPhoto", | |||
| // }); | |||
| } else { | |||
| uni.showToast({ | |||
| title: "请先勾选", | |||
| icon: "none", | |||
| }); | |||
| } | |||
| } | |||
| function handleLogin() { | |||
| uni.login({ | |||
| provider: "weixin", // 使用微信登录授权 | |||
| success: (res) => { | |||
| console.log(res); | |||
| if (res.code) { | |||
| // 获取到微信授权登录的code,将code发送给后端 | |||
| // this.loginWithCode(res.code); | |||
| } else { | |||
| console.log("登录失败:", res.errMsg); | |||
| } | |||
| }, | |||
| fail: (err) => { | |||
| console.log("登录失败:", err.errMsg); | |||
| }, | |||
| }); | |||
| } | |||
| //#endregion --------------------- | |||
| // voiceTotalApi(); | |||
| </script> | |||
| <style lang="scss"> | |||
| video { | |||
| width: 100%; | |||
| aspect-ratio: 9/16; | |||
| } | |||
| button { | |||
| margin-top: 50rpx; | |||
| } | |||
| .u-button { | |||
| width: 50% !important; | |||
| } | |||
| .u-checkbox-group { | |||
| margin-top: 70rpx; | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,101 @@ | |||
| <template> | |||
| <view class="page"> | |||
| <view class="title imgContenBox"> | |||
| <image | |||
| v-show="uploadState == 1" | |||
| src="../../assets/text/uploadText.png" | |||
| mode="aspectFit" /><image | |||
| aspectFit | |||
| v-show="uploadState == 2" | |||
| src="../../assets/text/uploadText2.png" | |||
| mode="aspectFit" /><image | |||
| v-show="uploadState == 3" | |||
| src="../../assets/text/uploadText3.png" | |||
| mode="aspectFit" | |||
| /></view> | |||
| <view class="uploadBox imgContenBox scan"> | |||
| <view class="scan-line"></view> | |||
| <image src="../../assets/icon/uploadImg.png" alt="" /> | |||
| </view> | |||
| <up-button | |||
| type="primary" | |||
| text="上传我的照片" | |||
| color="linear-gradient(to right, rgb(66, 83, 216), rgb(213, 51, 186))" | |||
| @click="toCreate" | |||
| ></up-button> | |||
| <view class="tips">请按照样片上传您五官清晰的正面照片</view> | |||
| <view class="demoImgBox"> | |||
| <view class="demoImg1"></view> | |||
| <view class="demoImg2"></view> | |||
| <view class="demoImg1"></view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script setup> | |||
| //#region 导入 | |||
| import { ref, reactive } from "vue"; | |||
| import { voiceTotalApi } from "../../api/login.js"; | |||
| //#endregion | |||
| //#region 上传 | |||
| const uploadState = ref(3); | |||
| //#endregion --------------------- | |||
| //#region | |||
| //#endregion --------------------- | |||
| </script> | |||
| <style lang="scss"> | |||
| .title { | |||
| width: 100%; | |||
| height: 80rpx; | |||
| image { | |||
| // min-width: 40%; | |||
| height: 80rpx; | |||
| } | |||
| } | |||
| .uploadBox { | |||
| width: 80%; | |||
| aspect-ratio: 1/1; | |||
| border: 5rpx solid #000; | |||
| border-radius: 50rpx; | |||
| margin-bottom: 50rpx; | |||
| image { | |||
| max-width: 30%; | |||
| max-height: 30%; | |||
| } | |||
| } | |||
| .scan { | |||
| position: relative; | |||
| overflow: hidden; | |||
| .scan-line { | |||
| position: absolute; | |||
| top: 0; | |||
| left: 0; | |||
| width: 100%; | |||
| height: 40%; | |||
| background: linear-gradient(180deg, rgba(0, 255, 51, 0) 50%, #00ff33 300%); | |||
| border-bottom: 2px solid #00ff33; | |||
| animation: scanAnimation 2s linear infinite; | |||
| } | |||
| @keyframes scanAnimation { | |||
| 0% { | |||
| transform: translateY(-150%); | |||
| } | |||
| 100% { | |||
| transform: translateY(150%); | |||
| } | |||
| } | |||
| } | |||
| .u-button { | |||
| width: 70% !important; | |||
| } | |||
| .tips { | |||
| margin-top: 20rpx; | |||
| margin-bottom: 20rpx; | |||
| } | |||
| </style> | |||
| @@ -0,0 +1,6 @@ | |||
| export {}; | |||
| declare module "vue" { | |||
| type Hooks = App.AppInstance & Page.PageInstance; | |||
| interface ComponentCustomOptions extends Hooks {} | |||
| } | |||
| @@ -0,0 +1,6 @@ | |||
| import { createPinia } from 'pinia' | |||
| import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' | |||
| const store = createPinia(); | |||
| store.use(piniaPluginPersistedstate) | |||
| export { store }; | |||
| @@ -0,0 +1,19 @@ | |||
| import { defineStore } from "pinia"; | |||
| export const userInfoModules = defineStore("userInfoStore", () => { | |||
| // state | |||
| const userInfo = ref(null) | |||
| // 登录获取用户信息 | |||
| async function getUserInfo() { | |||
| } | |||
| // 退出清除用户信息 | |||
| function loginOut(params) { | |||
| } | |||
| return { userInfo, getUserInfo, loginOut }; | |||
| }, | |||
| { | |||
| persist: true, | |||
| }); | |||
| @@ -0,0 +1,18 @@ | |||
| .page { | |||
| display: flex; | |||
| flex-direction: column; | |||
| align-items: center; | |||
| justify-content: center; | |||
| padding: 20rpx; | |||
| } | |||
| .imgContenBox { | |||
| position: relative; | |||
| image { | |||
| position: absolute; | |||
| top: 50%; | |||
| left: 50%; | |||
| transform: translate(-50%, -50%); | |||
| } | |||
| } | |||
| @@ -0,0 +1,82 @@ | |||
| /** | |||
| * 这里是uni-app内置的常用样式变量 | |||
| * | |||
| * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 | |||
| * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App | |||
| * | |||
| */ | |||
| /** | |||
| * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 | |||
| * | |||
| * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 | |||
| */ | |||
| /* uni.scss */ | |||
| @import 'uview-plus/theme.scss'; | |||
| /* 颜色变量 */ | |||
| /* 行为相关颜色 */ | |||
| $uni-color-primary: #007aff; | |||
| $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: #fff; | |||
| $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: 16; | |||
| /* 图片尺寸 */ | |||
| $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: #555; // 二级标题颜色 | |||
| $uni-font-size-subtitle: 18px; | |||
| $uni-color-paragraph: #3f536e; // 文章段落颜色 | |||
| $uni-font-size-paragraph: 15px; | |||
| @@ -0,0 +1,31 @@ | |||
| const BASE_URL = 'https://test.metavatar.cc/C/'; | |||
| // 通用的网络请求函数,接收请求的URL和请求参数,返回一个Promise | |||
| const request = (requestObj) => { | |||
| return new Promise((resolve, reject) => { | |||
| uni.request({ | |||
| url: BASE_URL + requestObj.url, | |||
| method: requestObj.method, // 这里可以根据需要更改请求方法 | |||
| data: requestObj.params, | |||
| success: (res) => { | |||
| if (res.statusCode === 200) { | |||
| resolve(res.data); | |||
| } else { | |||
| reject(new Error('请求失败')); | |||
| uni.showToast({ | |||
| title: '请求失败,请稍后再试', | |||
| icon: 'none', | |||
| }); | |||
| } | |||
| }, | |||
| fail: (err) => { | |||
| reject(err); | |||
| uni.showToast({ | |||
| title: '请求失败,请稍后再试', | |||
| icon: 'none', | |||
| }); | |||
| }, | |||
| }); | |||
| }); | |||
| }; | |||
| export default request | |||
| @@ -0,0 +1,22 @@ | |||
| import { defineConfig } from 'vite' | |||
| import uni from '@dcloudio/vite-plugin-uni' | |||
| // https://vitejs.dev/config/ | |||
| export default defineConfig({ | |||
| transpileDependencies: ['uview-ui'], | |||
| plugins: [ | |||
| uni(), | |||
| ], | |||
| // server: { | |||
| // host: "0.0.0.0", | |||
| // port: Number(env.VITE_APP_PORT), | |||
| // open: true, // 运行是否自动打开浏览器 | |||
| // proxy: { | |||
| // // 反向代理解决跨域 | |||
| // "/api": { | |||
| // target: env.VITE_APP_BASE_API, // 线上接口地址 | |||
| // changeOrigin: true, | |||
| // rewrite: (path) => path.replace(/^\/api/, ""), | |||
| // }, | |||
| // }, | |||
| // }, | |||
| }) | |||