@@ -0,0 +1,6 @@ | |||
## 开发环境 | |||
NODE_ENV='development' | |||
VITE_APP_TITLE = 'Metavatar-PC' | |||
VITE_APP_PORT = 3000 | |||
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,11 @@ | |||
# Suimang-wxapp | |||
# setStorageSync 键名 | |||
wx-"appid": "", | |||
git commit -m "feat: " | |||
git commit --no-verify -m "提交时的注释" 跳过检验 | |||
git merge origin/dev_ |
@@ -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,71 @@ | |||
{ | |||
"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-3081220230817001", | |||
"@dcloudio/uni-app-plus": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-components": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-h5": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-alipay": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-baidu": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-jd": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-kuaishou": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-lark": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-qq": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-toutiao": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-mp-weixin": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-quickapp-webview": "3.0.0-3081220230817001", | |||
"clipboard": "^2.0.11", | |||
"dayjs": "^1.11.10", | |||
"uview-plus": "^3.1.37", | |||
"vue": "^3.2.45", | |||
"vue-i18n": "^9.1.9" | |||
}, | |||
"devDependencies": { | |||
"@dcloudio/types": "^3.3.2", | |||
"@dcloudio/uni-automator": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-cli-shared": "3.0.0-3081220230817001", | |||
"@dcloudio/uni-stacktracey": "3.0.0-3081220230817001", | |||
"@dcloudio/vite-plugin-uni": "3.0.0-3081220230817001", | |||
"@vue/runtime-core": "^3.2.45", | |||
"sass": "^1.68.0", | |||
"sass-loader": "^13.3.2", | |||
"vite": "4.1.4" | |||
} | |||
} |
@@ -0,0 +1,10 @@ | |||
/// <reference types='@dcloudio/types' /> | |||
import 'vue' | |||
declare module '@vue/runtime-core' { | |||
type Hooks = App.AppInstance & Page.PageInstance; | |||
interface ComponentCustomOptions extends Hooks { | |||
} | |||
} |
@@ -0,0 +1,21 @@ | |||
<script> | |||
export default { | |||
onLaunch: function () { | |||
// console.log('App Launch') | |||
}, | |||
onShow: function () { | |||
// console.log('App Show') | |||
}, | |||
onHide: function () { | |||
// console.log('App Hide') | |||
}, | |||
}; | |||
</script> | |||
<style> | |||
/*每个页面公共css */ | |||
</style> | |||
<style lang="scss"> | |||
/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */ | |||
@import "uview-plus/index.scss"; | |||
</style> |
@@ -0,0 +1,34 @@ | |||
import { request } from "../utils/request" | |||
// 获取风格列表 | |||
export function getListApi(pageNum, pageSize, sex) { | |||
return request({ | |||
url: `api/digitalAvatarMould/list?pageNum=${pageNum}&pageSize=${pageSize}&sex=${sex}`, | |||
method: 'GET', | |||
}) | |||
} | |||
// 根据iD获取详情 | |||
export function findByIdApi(id) { | |||
return request({ | |||
url: `api/digitalAvatarMould/findById?id=${id}`, | |||
method: 'GET', | |||
}) | |||
} | |||
// 查询用户头像照片,生成写真时需要 | |||
export function findImageApi() { | |||
return request({ | |||
url: `api/userDigital/findImage`, | |||
method: 'GET', | |||
}) | |||
} | |||
// 生成写真 | |||
export function createPhotoApi(data) { | |||
return request({ | |||
url: `api/digitalAvatarPhoto/createPhoto`, | |||
method: 'POST', | |||
data | |||
}) | |||
} |
@@ -0,0 +1,42 @@ | |||
import { request } from "../utils/request" | |||
// 微信登录 | |||
export function loginApi(data) { | |||
return request({ | |||
url: `api/miniApp/login`, | |||
method: 'POST', | |||
data | |||
}) | |||
} | |||
// 授权手机号登陆 | |||
export function loginPhoneApi(data) { | |||
return request({ | |||
url: `api/miniApp/loginPhone`, | |||
method: 'POST', | |||
data | |||
}) | |||
} | |||
// 获取短信验证码 | |||
export function getCodeApi(phone) { | |||
return request({ | |||
url: `api/user/sendLoginPhoneCode?phone=${phone}`, | |||
method: 'get', | |||
}) | |||
} | |||
/** | |||
* @description:短信登录 | |||
* @param {*} (appId, openId,phone,code) | |||
* @return: list | |||
*/ | |||
export function loginByCodeApi(data) { | |||
return request({ | |||
url: `api/miniApp/loginPhoneCode`, | |||
method: 'POST', | |||
data | |||
}) | |||
} |
@@ -0,0 +1,13 @@ | |||
import { | |||
createSSRApp | |||
} from "vue"; | |||
import uviewPlus from 'uview-plus' | |||
import "./style/my.scss"; | |||
import App from "./App.vue"; | |||
export function createApp() { | |||
const app = createSSRApp(App); | |||
app.use(uviewPlus) | |||
return { | |||
app, | |||
}; | |||
} |
@@ -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,43 @@ | |||
{ | |||
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages | |||
{ | |||
"path": "pages/login/index", | |||
"style": { | |||
"navigationBarTitleText": "智像相册" | |||
} | |||
}, | |||
{ | |||
"path": "pages/chooseStyle/index", | |||
"style": { | |||
"navigationBarTitleText": "智像相册" | |||
} | |||
}, | |||
{ | |||
"path": "pages/createing/index", | |||
"style": { | |||
"navigationBarTitleText": "智像相册" | |||
} | |||
}, | |||
{ | |||
"path": "pages/created/index", | |||
"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": "智像相册", | |||
"navigationBarBackgroundColor": "#F8F8F8", | |||
"backgroundColor": "#F8F8F8", | |||
"navigationStyle": "custom" | |||
} | |||
} |
@@ -0,0 +1,328 @@ | |||
<template> | |||
<view class="page"> | |||
<!-- tab栏 --> | |||
<view class="tabBox"> | |||
<u-tabs | |||
:list="tabList" | |||
lineWidth="50" | |||
lineColor="#ff4f00" | |||
:itemStyle="{ width: '150rpx', height: '90rpx', padding: '0' }" | |||
:activeStyle="{ color: '#ff4f00' }" | |||
:inactiveStyle="{ color: '#fff' }" | |||
@click="chooseTab" | |||
></u-tabs> | |||
<view class="moreTabs"> | |||
<view class="moreIcon" @click="showPopup = true"> 更多 </view> | |||
</view> | |||
</view> | |||
<!-- 更多tab弹出层 --> | |||
<u-popup | |||
closeable="true" | |||
mode="top" | |||
:round="20" | |||
:show="showPopup" | |||
@close="closePopup" | |||
@open="openPopup" | |||
> | |||
<view class="popupBox"> | |||
<view class="type">类型</view> | |||
<view class="typeBox"> | |||
<view | |||
v-show="item.name" | |||
class="typeBox-item" | |||
:class="item.id == sex ? 'itemActive' : ''" | |||
@click="sex = item.id" | |||
v-for="item in tabList" | |||
:key="item.id" | |||
>{{ item.name }}</view | |||
> | |||
</view> | |||
<view class="type">风格</view> | |||
<view class="typeBox"> | |||
<view | |||
v-show="item.name" | |||
class="typeBox-item" | |||
:class="item.id == sex ? 'itemActive' : ''" | |||
@click="sex = item.id" | |||
v-for="item in tabList" | |||
:key="item.id" | |||
>{{ item.name }}</view | |||
> | |||
</view> | |||
</view> | |||
</u-popup> | |||
<!-- 模版选择 --> | |||
<u-list | |||
class="styleListBox" | |||
@scrolltolower="scrolltolower" | |||
lowerThreshold="100" | |||
> | |||
<u-list-item class="glodYBox"> | |||
<u-list-item | |||
v-for="item in styleList" | |||
:key="item.id" | |||
class="styleListBoxItme" | |||
> | |||
<view class="styleInfo" @click="createPhoto(item)"> | |||
<image :src="item.coverImg" mode="aspectFit" /> | |||
<text class="name">{{ item.title }}</text> | |||
<text class="single">{{ peopleNum(item.mouldType) }}</text> | |||
</view> | |||
</u-list-item> | |||
<view v-if="styleList.length == 0">暂无数据</view> | |||
</u-list-item> | |||
</u-list> | |||
</view> | |||
</template> | |||
<script setup> | |||
//#region 导入 | |||
import { ref, reactive, watch } from "vue"; | |||
import { getListApi } from "../../api/closeStyle"; | |||
//#endregion ----------------------- | |||
//#region tab栏 | |||
const sex = ref(2); | |||
const tabList = ref([ | |||
{ name: "女", id: 2 }, | |||
{ name: "男", id: 1 }, | |||
{ name: "多人", id: 3 }, | |||
{ name: "电影明星", id: 4 }, | |||
{ name: "体育", id: 5 }, | |||
{ name: "多人", id: 6 }, | |||
// { name: "电影明星", id: 7 }, | |||
{ name: "体育", id: 8 }, | |||
{ name: "", id: 999, disabled: true }, | |||
]); | |||
function chooseTab(item) { | |||
sex.value = item.id; | |||
} | |||
//#endregion | |||
//#region 更多tab弹出层 | |||
const showPopup = ref(false); | |||
function closePopup() { | |||
showPopup.value = false; | |||
} | |||
function openPopup() {} | |||
//#endregion ----------------------- | |||
//#region 列表加载 | |||
const pageNum = ref(1); | |||
const pageSize = ref(20); | |||
// const sex = ref(2); //1男2女 | |||
const styleList = ref([]); | |||
// 得到列表 | |||
async function getList() { | |||
try { | |||
uni.showLoading({ | |||
title: "加载中...", | |||
mask: true, | |||
}); | |||
const res = await getListApi(pageNum.value, pageSize.value, sex.value); | |||
styleList.value = res.data.list; | |||
uni.hideLoading(); | |||
} catch (error) { | |||
uni.hideLoading(); | |||
uni.showToast({ | |||
title: "获取列表失败,请重试", | |||
icon: "none", | |||
}); | |||
} | |||
} | |||
// 监听性别tab变化 | |||
watch( | |||
() => sex.value, | |||
(sex) => { | |||
pageNum.value = 1; | |||
pageSize.value = 20; | |||
getList(); | |||
} | |||
); | |||
getList(); | |||
// 触底加载更多 | |||
const scrolltolower = async () => { | |||
try { | |||
uni.showLoading({ | |||
title: "加载中...", | |||
mask: true, | |||
}); | |||
pageNum.value += 1; | |||
const res = await getListApi(pageNum.value, pageSize.value, sex.value); | |||
styleList.value.push(...res.data.list); | |||
setTimeout(function () { | |||
uni.hideLoading(); | |||
}, 500); | |||
if (res.data.list.length == 0) { | |||
pageNum.value -= 1; | |||
uni.showToast({ | |||
title: "已加载全部内容", | |||
icon: "none", | |||
}); | |||
} | |||
} catch (error) { | |||
setTimeout(function () { | |||
uni.hideLoading(); | |||
}, 500); | |||
uni.showToast({ | |||
title: "获取数据失败,请重试", | |||
icon: "none", | |||
}); | |||
} | |||
}; | |||
// 处理单人双人多人 | |||
function peopleNum(num) { | |||
if (num == 1) { | |||
return "单人"; | |||
} else if (num == 2) { | |||
return "双人"; | |||
} else if (num == 3) { | |||
return "三人"; | |||
} | |||
} | |||
//#endregion --------------------- | |||
//#region 点击图片 | |||
function createPhoto(item) { | |||
if (item.mouldType == 1) { | |||
uni.navigateTo({ | |||
url: `/pages/closeStyle/goCreatePhoto?id=${item.id}`, | |||
}); | |||
} else { | |||
uni.navigateTo({ | |||
url: `/pages/closeStyle/multiplayer?id=${item.id}`, | |||
}); | |||
} | |||
} | |||
//#endregion --------------------- | |||
//#region | |||
//#endregion ----------------------- | |||
</script> | |||
<style lang="scss" scoped> | |||
// <!-- tab栏 --> | |||
.tabBox { | |||
position: relative; | |||
width: 100vw; | |||
.u-tabs { | |||
// width: calc(100% - 100rpx); | |||
width: 100%; | |||
color: #fff !important; | |||
margin-bottom: 30rpx; | |||
// :deep(.u-tabs__wrapper__nav__item-7) { | |||
// color: #00ff33 !important; | |||
// margin-right: 90rpx !important; | |||
// } | |||
} | |||
.moreTabs { | |||
position: absolute; | |||
top: 0; | |||
right: 0; | |||
width: 200rpx; | |||
height: 90rpx; | |||
background: linear-gradient(90deg, transparent 20%, #333 100%); | |||
// background-color: red; | |||
.moreIcon { | |||
margin-left: 50rpx; | |||
margin-top: 20rpx; | |||
width: 130rpx; | |||
height: 60rpx; | |||
border-radius: 40rpx; | |||
background-color: #ff4f00; | |||
text-align: center; | |||
line-height: 60rpx; | |||
} | |||
} | |||
} | |||
// <!-- 更多tab弹出层 --> | |||
.popupBox { | |||
padding-bottom: 30rpx; | |||
.type { | |||
padding: 30rpx 30rpx 0 30rpx; | |||
color: #000; | |||
font-weight: 900; | |||
font-size: 32rpx; | |||
} | |||
.typeBox { | |||
padding: 0 0 0 30rpx; | |||
display: flex; | |||
flex-wrap: wrap; | |||
justify-content: flex-start; | |||
color: #1f1212; | |||
font-size: 26rpx; | |||
&-item { | |||
margin-top: 20rpx; | |||
margin-right: 30rpx; | |||
height: 60rpx; | |||
line-height: 60rpx; | |||
text-align: center; | |||
// margin: 0 30rpx; | |||
width: 200rpx; | |||
border: 2rpx solid #ccc; | |||
border-radius: 30rpx; | |||
} | |||
.itemActive { | |||
color: #ff4f00; | |||
border: 2rpx solid #ff4f00; | |||
} | |||
} | |||
} | |||
// <!-- 模版选择 --> | |||
.u-list { | |||
overflow: hidden; | |||
height: calc(100vh - 200rpx) !important; | |||
width: 650rpx; | |||
.glodYBox { | |||
display: flex !important; | |||
flex-direction: row !important; | |||
flex-wrap: wrap !important; | |||
justify-content: space-between !important; | |||
} | |||
.u-list-item { | |||
display: flex !important; | |||
flex-direction: row !important; | |||
flex-wrap: wrap !important; | |||
justify-content: space-between !important; | |||
} | |||
.styleInfo { | |||
position: relative; | |||
display: flex !important; | |||
flex-wrap: wrap !important; | |||
width: 300rpx; | |||
height: 480rpx; | |||
margin-bottom: 50rpx; | |||
border-radius: 24rpx; | |||
overflow: hidden; | |||
image { | |||
width: 300rpx; | |||
height: 400rpx; | |||
} | |||
.name { | |||
background-color: #393b3d; | |||
width: 100%; | |||
height: 80rpx; | |||
text-align: center; | |||
line-height: 80rpx; | |||
font-size: 30rpx; | |||
font-weight: bold; | |||
} | |||
.single { | |||
position: absolute; | |||
top: 11rpx; | |||
right: 13rpx; | |||
width: 72rpx; | |||
height: 41rpx; | |||
text-align: center; | |||
line-height: 41rpx; | |||
background: rgba(0, 0, 0, 0.4); | |||
font-size: 22rpx; | |||
// opacity: 0.4; | |||
border-radius: 12rpx; | |||
} | |||
} | |||
} | |||
</style> |
@@ -0,0 +1,7 @@ | |||
<template> | |||
<view> 主页 </view> | |||
</template> | |||
<script setup> | |||
import { ref } from "vue"; | |||
</script> | |||
<style lang="scss" scoped></style> |
@@ -0,0 +1,7 @@ | |||
<template> | |||
<view> 主页 </view> | |||
</template> | |||
<script setup> | |||
import { ref } from "vue"; | |||
</script> | |||
<style lang="scss" scoped></style> |
@@ -0,0 +1,52 @@ | |||
<template> | |||
<view class="page"> | |||
<image src="../../assets/img/homeImg.jpg" mode="scaleToFill" /> | |||
<view class="bottomBox"> | |||
<view class="orangeBtn" @click="toChooseStyle">开始体验</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script setup> | |||
//#region 导入 | |||
import { ref } from "vue"; | |||
//#endregion ---------------------------------- | |||
function toChooseStyle() { | |||
uni.navigateTo({ url: "/pages/chooseStyle/index" }); | |||
} | |||
//#region 初始化 | |||
//#endregion ---------------------------------- | |||
//#region 授权 | |||
//#endregion ---------------------------------- | |||
//#region 登录 | |||
//#endregion ---------------------------------- | |||
</script> | |||
<style lang="scss" scoped> | |||
.page { | |||
position: relative; | |||
width: 100vw; | |||
height: 100vh; | |||
image { | |||
position: absolute; | |||
width: 100%; | |||
height: 100%; | |||
} | |||
.bottomBox { | |||
position: absolute; | |||
bottom: 0; | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
padding: 100rpx 0; | |||
width: 100%; | |||
height: 400rpx; | |||
background-color: rgba($color: #000000, $alpha: 0.5); | |||
} | |||
} | |||
</style> |
@@ -0,0 +1,6 @@ | |||
export {}; | |||
declare module "vue" { | |||
type Hooks = App.AppInstance & Page.PageInstance; | |||
interface ComponentCustomOptions extends Hooks {} | |||
} |
@@ -0,0 +1,74 @@ | |||
.page { | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
// justify-content: center; | |||
padding: 30rpx; | |||
// background-color: #fff; | |||
font-size: 26rpx; | |||
color: #fff; | |||
position: relative; | |||
min-height: 100vh; | |||
background-color: rgba(0, 0, 0, 0.8); | |||
} | |||
// 毛玻璃 | |||
.glass { | |||
position: fixed; | |||
width: 100vw; | |||
height: 100vh; | |||
z-index: -9; | |||
image { | |||
width: 100vw; | |||
height: 100vh; | |||
// position: fixed; | |||
// background-size: 100% 100%; | |||
// z-index: -1; | |||
/* 通过滤镜增加毛玻璃效果 */ | |||
filter: blur(20rpx); | |||
} | |||
} | |||
view { | |||
box-sizing: border-box; | |||
} | |||
.imgContenBox { | |||
position: relative; | |||
image { | |||
position: absolute; | |||
top: 50%; | |||
left: 50%; | |||
transform: translate(-50%, -50%); | |||
} | |||
} | |||
.orangeBtn { | |||
background-color: #FF4F00; | |||
width: 520rpx; | |||
height: 100rpx; | |||
line-height: 100rpx; | |||
font-size: 30rpx; | |||
font-weight: bold; | |||
text-align: center; | |||
border-radius: 100rpx; | |||
} | |||
.grayBtn { | |||
position: relative; | |||
margin-top: 30rpx; | |||
background-color: transparent; | |||
width: 520rpx; | |||
height: 100rpx; | |||
line-height: 100rpx; | |||
font-size: 30rpx; | |||
font-weight: bold; | |||
text-align: center; | |||
border-radius: 100rpx; | |||
color: #FF4F00; | |||
border: 2rpx solid #FF4F00; | |||
} |
@@ -0,0 +1,77 @@ | |||
/** | |||
* 这里是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,50 @@ | |||
// import { userInfoModules } from "@/store/modules/userInfo"; | |||
// import { store } from '@/store/index'; | |||
const BASE_URL = 'https://test.metavatar.cc/C/'; | |||
// const userInfoModulesPinia = userInfoModules(store); | |||
// const BASE_URL = 'https://test.metavatar.cc/'; | |||
// 通用的网络请求函数,接收请求的URL和请求参数,返回一个Promise | |||
const request = (requestObj) => { | |||
return new Promise((resolve, reject) => { | |||
uni.request({ | |||
url: BASE_URL + requestObj.url, | |||
method: requestObj.method, // 这里可以根据需要更改请求方法 | |||
data: requestObj.data, | |||
header: { | |||
// Authorization: userInfoModulesPinia.token, | |||
// token: userInfoModulesPinia.token, | |||
// token: uni.getStorageSync("token"), | |||
}, | |||
success: (res) => { | |||
if (res.data.code == 1052) { | |||
uni.setStorageSync("token", null) | |||
uni.reLaunch({ | |||
url: "/pages/login/index?type=tokenFfalse", | |||
}); | |||
return | |||
} | |||
if (res.statusCode == 200) { | |||
// if (res.data.code == 200) { | |||
resolve(res.data) | |||
} else { | |||
reject(new Error('请求失败')); | |||
uni.showToast({ | |||
title: '请求失败,请稍后再试', | |||
icon: 'none', | |||
}) | |||
} | |||
}, | |||
fail: (err) => { | |||
reject(err, "拦截器返回错误"); | |||
uni.showToast({ | |||
title: '请求失败,请稍后再试', | |||
icon: 'none', | |||
}) | |||
}, | |||
}) | |||
}) | |||
}; | |||
export { BASE_URL, request } |
@@ -0,0 +1,26 @@ | |||
export default { | |||
onShareAppMessage() { | |||
return { | |||
title: "邃芒智像", | |||
path: `/pages/login/index?userId=${uni.getStorageSync('userId')}`, | |||
}; | |||
}, | |||
// 分享到朋友圈 | |||
onShareTimeline() { | |||
return { | |||
title: "邃芒智像", | |||
path: `/pages/login/index?userId=${uni.getStorageSync('userId')}`, | |||
}; | |||
}, | |||
// 收藏 | |||
onAddToFavorites() { | |||
return { | |||
title: "邃芒智像", | |||
}; | |||
} | |||
} |
@@ -0,0 +1,29 @@ | |||
import { defineConfig, loadEnv } from 'vite' | |||
import uni from '@dcloudio/vite-plugin-uni' | |||
// https://vitejs.dev/config/ | |||
export default defineConfig(({ command, mode }) => { | |||
const env = loadEnv(mode, process.cwd()) // 获取 .env里面定义是参数 | |||
console.log('env', env, mode, command) | |||
return { | |||
transpileDependencies: ['uview-ui'], | |||
plugins: [ | |||
uni(), | |||
], | |||
server: { | |||
host: "0.0.0.0", | |||
port: '8591', | |||
open: false, // 运行是否自动打开浏览器 | |||
proxy: { | |||
// 反向代理解决跨域 | |||
"/api": { | |||
target: env.VITE_APP_BASE_URL, // 线上接口地址 | |||
changeOrigin: true, | |||
rewrite: (path) => path.replace(/^\/api/, ""), | |||
}, | |||
}, | |||
} | |||
} | |||
}) |