@@ -2,7 +2,7 @@ | |||||
"appid": "wx75cf14e3a0d45821", | |||||
wx-"appid": "wx75cf14e3a0d45821", | |||||
git commit -m "feat: " | git commit -m "feat: " | ||||
git commit --no-verify -m "提交时的注释" 跳过检验 | git commit --no-verify -m "提交时的注释" 跳过检验 |
@@ -1,4 +1,4 @@ | |||||
import request from "../utils/request" | |||||
import { request } from "../utils/request" | |||||
// 获取风格列表 | // 获取风格列表 | ||||
export function getListApi(pageNum, pageSize) { | export function getListApi(pageNum, pageSize) { | ||||
@@ -1,4 +1,4 @@ | |||||
import request from "../utils/request" | |||||
import { request } from "../utils/request" | |||||
/** | /** | ||||
* @description:获取金币价格列表 | * @description:获取金币价格列表 | ||||
@@ -1,4 +1,4 @@ | |||||
import request from "../utils/request" | |||||
import { request } from "../utils/request" | |||||
// 获取风格列表 | // 获取风格列表 | ||||
export function findWorkByIdApi(id) { | export function findWorkByIdApi(id) { | ||||
@@ -1,4 +1,4 @@ | |||||
import request from "../utils/request" | |||||
import { request } from "../utils/request" | |||||
/** | /** | ||||
* @description:获取用户头像 | * @description:获取用户头像 | ||||
@@ -1,11 +1,6 @@ | |||||
import request from "../utils/request" | |||||
import { request } from "../utils/request" | |||||
export function voiceTotalApi() { | |||||
return request({ | |||||
url: `api/voiceMould/voiceTotal`, | |||||
method: 'GET', | |||||
}) | |||||
} | |||||
// 微信登录 | // 微信登录 | ||||
export function loginApi(data) { | export function loginApi(data) { | ||||
return request({ | return request({ | ||||
@@ -22,4 +17,26 @@ export function loginPhoneApi(data) { | |||||
method: 'POST', | method: 'POST', | ||||
data | 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 | |||||
}) | |||||
} | } |
@@ -1,4 +1,4 @@ | |||||
import request from "../utils/request" | |||||
import { request } from "../utils/request" | |||||
/** | /** | ||||
@@ -1,4 +1,4 @@ | |||||
import request from "../utils/request" | |||||
import { request } from "../utils/request" | |||||
// /api/baidu/checkPhoto | // /api/baidu/checkPhoto | ||||
// /api/userDigital/checkPhoto | // /api/userDigital/checkPhoto | ||||
@@ -51,6 +51,9 @@ | |||||
/* 小程序特有相关 */ | /* 小程序特有相关 */ | ||||
"mp-weixin": { | "mp-weixin": { | ||||
"appid": "wx75cf14e3a0d45821", | "appid": "wx75cf14e3a0d45821", | ||||
"useExtendedLib": { | |||||
"share": true // 确保分享功能已经开启 | |||||
}, | |||||
"permission": { | "permission": { | ||||
"scope.userLocation": { | "scope.userLocation": { | ||||
"desc": "获取您的地理位置信息" | "desc": "获取您的地理位置信息" | ||||
@@ -80,7 +83,8 @@ | |||||
"usingComponents": true | "usingComponents": true | ||||
}, | }, | ||||
"mp-toutiao": { | "mp-toutiao": { | ||||
"usingComponents": true | |||||
"usingComponents": true, | |||||
"appid": "tt2eba5807b1883f9f01" | |||||
}, | }, | ||||
"uniStatistics": { | "uniStatistics": { | ||||
"enable": false | "enable": false | ||||
@@ -75,7 +75,7 @@ | |||||
{ | { | ||||
"path": "pages/protocol/coin", | "path": "pages/protocol/coin", | ||||
"style": { | "style": { | ||||
"navigationBarTitleText": "慧拍金币充值协议" | |||||
"navigationBarTitleText": "智像金币充值协议" | |||||
} | } | ||||
}, | }, | ||||
{ | { | ||||
@@ -22,7 +22,7 @@ | |||||
//#region 导入 | //#region 导入 | ||||
import { onPullDownRefresh } from "@dcloudio/uni-app"; | import { onPullDownRefresh } from "@dcloudio/uni-app"; | ||||
import { ref, reactive } from "vue"; | import { ref, reactive } from "vue"; | ||||
import { voiceTotalApi } from "../../api/login.js"; | |||||
import { getListApi } from "../../api/closeStyle"; | import { getListApi } from "../../api/closeStyle"; | ||||
//#endregion | //#endregion | ||||
@@ -22,7 +22,6 @@ | |||||
//#region 导入 | //#region 导入 | ||||
import { onPullDownRefresh } from "@dcloudio/uni-app"; | import { onPullDownRefresh } from "@dcloudio/uni-app"; | ||||
import { ref, reactive } from "vue"; | import { ref, reactive } from "vue"; | ||||
import { voiceTotalApi } from "../../api/login.js"; | |||||
import { getListApi } from "../../api/closeStyle"; | import { getListApi } from "../../api/closeStyle"; | ||||
//#endregion | //#endregion | ||||
@@ -106,6 +106,7 @@ | |||||
//#region 导入 | //#region 导入 | ||||
import { ref, reactive } from "vue"; | import { ref, reactive } from "vue"; | ||||
import { onLoad } from "@dcloudio/uni-app"; | import { onLoad } from "@dcloudio/uni-app"; | ||||
import { BASE_URL } from "@/utils/request"; | |||||
import { | import { | ||||
findByIdApi, | findByIdApi, | ||||
findImageApi, | findImageApi, | ||||
@@ -194,7 +195,7 @@ function chooseImg(index) { | |||||
}); | }); | ||||
// 百度敏感信息检测 | // 百度敏感信息检测 | ||||
uni.uploadFile({ | uni.uploadFile({ | ||||
url: "https://test.metavatar.cc/C/api/baidu/checkPhoto", //上传图片api | |||||
url: BASE_URL + "api/baidu/checkPhoto", //上传图片api | |||||
filePath: res.tempFilePaths[0], | filePath: res.tempFilePaths[0], | ||||
name: "file", | name: "file", | ||||
formData: { | formData: { | ||||
@@ -215,7 +216,7 @@ function chooseImg(index) { | |||||
} else { | } else { | ||||
// 人脸识别接口 | // 人脸识别接口 | ||||
uni.uploadFile({ | uni.uploadFile({ | ||||
url: "https://test.metavatar.cc/C/api/userDigital/checkPhoto", //上传图片api | |||||
url: BASE_URL + "api/userDigital/checkPhoto", //上传图片api | |||||
filePath: res.tempFilePaths[0], | filePath: res.tempFilePaths[0], | ||||
name: "file", | name: "file", | ||||
formData: { | formData: { | ||||
@@ -236,7 +237,7 @@ function chooseImg(index) { | |||||
} else { | } else { | ||||
// 上传接口 | // 上传接口 | ||||
uni.uploadFile({ | uni.uploadFile({ | ||||
url: "https://test.metavatar.cc/C/api/upload/awsImgUpload", //上传图片api | |||||
url: BASE_URL + "api/upload/awsImgUpload", //上传图片api | |||||
filePath: res.tempFilePaths[0], | filePath: res.tempFilePaths[0], | ||||
name: "file", | name: "file", | ||||
formData: { | formData: { | ||||
@@ -129,9 +129,17 @@ function inviteFriend() { | |||||
//#region 页面跳转 | //#region 页面跳转 | ||||
function bueCoin() { | function bueCoin() { | ||||
uni.navigateTo({ | |||||
url: "/pages/home/buyCoin", | |||||
}); | |||||
if (userInfoModulesPinia.platForm == 3) { | |||||
uni.showToast({ | |||||
title: "暂未开放", | |||||
icon: "none", | |||||
mask: true, | |||||
}); | |||||
} else { | |||||
uni.navigateTo({ | |||||
url: "/pages/index/buyCoin", | |||||
}); | |||||
} | |||||
} | } | ||||
//#endregion --------------------- | //#endregion --------------------- | ||||
@@ -13,7 +13,7 @@ | |||||
</view> | </view> | ||||
<view class="buyBtn"> | <view class="buyBtn"> | ||||
<view class="btn" @click="createProductOrder">立刻购买</view> | <view class="btn" @click="createProductOrder">立刻购买</view> | ||||
<view class="pro" @click="goPro">《慧拍金币充值协议》</view> | |||||
<view class="pro" @click="goPro">《智像金币充值协议》</view> | |||||
</view> | </view> | ||||
</view> | </view> | ||||
</template> | </template> | ||||
@@ -210,6 +210,7 @@ getList(); | |||||
.pro { | .pro { | ||||
text-align: center; | text-align: center; | ||||
color: #ff4f00; | color: #ff4f00; | ||||
font-size: 24rpx; | |||||
} | } | ||||
} | } | ||||
</style> | </style> |
@@ -30,9 +30,7 @@ | |||||
<view class="coinBox" v-if="userInfoModulesPinia.token"> | <view class="coinBox" v-if="userInfoModulesPinia.token"> | ||||
我的金币: {{ userInfoModulesPinia.myGlod }} | 我的金币: {{ userInfoModulesPinia.myGlod }} | ||||
<image src="../../assets/icon/icon.png" mode="scaleToFill" /> | <image src="../../assets/icon/icon.png" mode="scaleToFill" /> | ||||
<text class="buyCoinText" @click="goOtherPage('buyCoin', 2)" | |||||
>购买金币</text | |||||
></view | |||||
<text class="buyCoinText" @click="goBuyCoin">购买金币</text></view | |||||
> | > | ||||
<view class="coinBox" v-if="!userInfoModulesPinia.token" | <view class="coinBox" v-if="!userInfoModulesPinia.token" | ||||
>登录即可体验更多功能哦! | >登录即可体验更多功能哦! | ||||
@@ -70,9 +68,7 @@ | |||||
v-for="item in PhotoList" | v-for="item in PhotoList" | ||||
:key="item.id" | :key="item.id" | ||||
class="showListItem" | class="showListItem" | ||||
@click=" | |||||
goOtherPage(`/pages/lookPhoto/index?id=${item.id}`, item.status) | |||||
" | |||||
@click="goLookPhoto(item.id, item.status)" | |||||
> | > | ||||
<view class="top"> | <view class="top"> | ||||
<text class="name">{{ item.title }}</text> | <text class="name">{{ item.title }}</text> | ||||
@@ -116,11 +112,7 @@ | |||||
<!-- 空处理 --> | <!-- 空处理 --> | ||||
<view v-show="PhotoList.length == 0" class="noData" | <view v-show="PhotoList.length == 0" class="noData" | ||||
>暂无数据 , | >暂无数据 , | ||||
<text | |||||
@click="goOtherPage('/pages/closeStyle/closeStyle', 2)" | |||||
class="goCreate" | |||||
>去生成!</text | |||||
> | |||||
<text @click="goCloseStyle" class="goCreate">去生成!</text> | |||||
</view> | </view> | ||||
</scroll-view> | </scroll-view> | ||||
<!-- 显示视频列表内容 --> | <!-- 显示视频列表内容 --> | ||||
@@ -252,47 +244,25 @@ function chooseAvatar() { | |||||
url: "/pages/uploadPhoto/uploadPhoto", | url: "/pages/uploadPhoto/uploadPhoto", | ||||
}); | }); | ||||
return; | return; | ||||
uni.chooseImage({ | |||||
count: 1, // 最多可以选择的图片张数,这里设置为1,只选择一张图片 | |||||
success: async (res) => { | |||||
// avatarUrl.value = res.tempFilePaths[0]; | |||||
// TODO: 在这里处理图片上传逻辑,你可以调用上传接口将图片上传到服务器 | |||||
// 示例代码: | |||||
// uploadImageToServer(tempFilePaths[0]); | |||||
// 图片压缩 | |||||
console.log(res.tempFiles[0].size); | |||||
if (userInfoModulesPinia.platForm != 1) { | |||||
uni.compressImage({ | |||||
src: res.tempFilePaths[0], | |||||
quality: 20, | |||||
success: (res2) => { | |||||
avatarUrl.value = res2.tempFilePath; | |||||
console.log(res2.tempFilePath); | |||||
}, | |||||
}); | |||||
} else { | |||||
const options = { | |||||
maxSizeMB: 2, // 最大压缩大小为 4MB | |||||
useWebWorker: true, // 使用 Web Worker 进行压缩,提高性能 | |||||
}; | |||||
const compressedFile = await imageCompression( | |||||
res.tempFiles[0], | |||||
options | |||||
); | |||||
//compressedFile是一个blob对象 | |||||
avatarUrl.value = URL.createObjectURL(compressedFile); | |||||
console.log(compressedFile); | |||||
// avatarUrl.value = compressedFile; | |||||
console.log("压缩图片h5"); | |||||
} | |||||
}, | |||||
fail: (err) => { | |||||
console.error("选择图片失败", err); | |||||
}, | |||||
}); | |||||
} | } | ||||
//#endregion | |||||
function goOtherPage(url, status) { | |||||
//#region 路由跳转 | |||||
function goBuyCoin() { | |||||
if (userInfoModulesPinia.platForm == 3) { | |||||
uni.showToast({ | |||||
title: "暂未开放", | |||||
icon: "none", | |||||
mask: true, | |||||
}); | |||||
} else { | |||||
uni.navigateTo({ | |||||
url: "/pages/index/buyCoin", | |||||
}); | |||||
} | |||||
} | |||||
function goLookPhoto(id, status) { | |||||
if (status != 2) { | if (status != 2) { | ||||
uni.showToast({ | uni.showToast({ | ||||
title: "正在生成,请稍后", | title: "正在生成,请稍后", | ||||
@@ -301,9 +271,16 @@ function goOtherPage(url, status) { | |||||
return; | return; | ||||
} | } | ||||
uni.navigateTo({ | uni.navigateTo({ | ||||
url: url, | |||||
url: `/pages/lookPhoto/index?id=${id}`, | |||||
}); | |||||
} | |||||
function goCloseStyle() { | |||||
uni.navigateTo({ | |||||
url: `/pages/closeStyle/closeStyle`, | |||||
}); | }); | ||||
} | } | ||||
//#endregion | //#endregion | ||||
//#region tab | //#region tab | ||||
@@ -20,7 +20,7 @@ | |||||
</view> | </view> | ||||
<view class="bottomBox"> | <view class="bottomBox"> | ||||
<button | <button | ||||
v-if="!checkboxValue[0]" | |||||
v-if="!checkboxValue[0] && userInfoModulesPinia.platForm == 2" | |||||
class="bottomBtn" | class="bottomBtn" | ||||
type="default" | type="default" | ||||
id="getPhoneNumber" | id="getPhoneNumber" | ||||
@@ -29,7 +29,7 @@ | |||||
开始制作我的数字写真 | 开始制作我的数字写真 | ||||
</button> | </button> | ||||
<button | <button | ||||
v-if="checkboxValue[0]" | |||||
v-if="checkboxValue[0] && userInfoModulesPinia.platForm == 2" | |||||
class="bottomBtn" | class="bottomBtn" | ||||
open-type="getPhoneNumber" | open-type="getPhoneNumber" | ||||
type="default" | type="default" | ||||
@@ -38,8 +38,31 @@ | |||||
> | > | ||||
开始制作我的数字写真 | 开始制作我的数字写真 | ||||
</button> | </button> | ||||
<!-- 抖音获取手机号 --> | |||||
<!-- <button | |||||
v-if="userInfoModulesPinia.platForm == 3" | |||||
class="bottomBtn" | |||||
open-type="getPhoneNumber" | |||||
type="default" | |||||
id="getPhoneNumber" | |||||
@getphonenumber="dogetphonenumber" | |||||
> | |||||
开始制作我的数字分身 | |||||
</button> --> | |||||
<!-- 手机号登录 --> | |||||
<button | |||||
v-if="userInfoModulesPinia.platForm == 3" | |||||
class="bottomBtn" | |||||
type="default" | |||||
id="getPhoneNumber" | |||||
@click="phoneLogin" | |||||
> | |||||
开始制作我的数字分身 | |||||
</button> | |||||
<!-- <view class="bottomBtn" @click="toCreate"> 开始制作我的数字写真 </view> --> | <!-- <view class="bottomBtn" @click="toCreate"> 开始制作我的数字写真 </view> --> | ||||
<!-- 同意协议 --> | |||||
<u-checkbox-group | <u-checkbox-group | ||||
v-if="userInfoModulesPinia.platForm == 2" | |||||
v-model="checkboxValue" | v-model="checkboxValue" | ||||
placement="row" | placement="row" | ||||
@change="changedCheckbox" | @change="changedCheckbox" | ||||
@@ -57,6 +80,45 @@ | |||||
</text> | </text> | ||||
</u-checkbox-group> | </u-checkbox-group> | ||||
</view> | </view> | ||||
<!-- 手机号验证码登录 --> | |||||
<view class="phoneLoginForm" v-show="userInfoModulesPinia.platForm == 3"> | |||||
<u--form | |||||
labelPosition="left" | |||||
:model="formData" | |||||
:rules="rules" | |||||
ref="formRef" | |||||
> | |||||
<u-form-item | |||||
labelWidth="80" | |||||
label="手机号" | |||||
prop="phoneNum" | |||||
borderBottom | |||||
ref="form1" | |||||
> | |||||
<u--input | |||||
type="number" | |||||
v-model="formData.phoneNum" | |||||
border="none" | |||||
></u--input> | |||||
</u-form-item> | |||||
<!-- 获取验证码 --> | |||||
<!-- 验证码 --> | |||||
<view class="getCodeBtn" @click="getCode"> | |||||
{{ backwardsNum < 60 ? backwardsNum + "s" : "发送验证码" }} | |||||
</view> | |||||
<!-- <view v-if="backwardsNums <= 0" class="getCodeBtn">{{ | |||||
backwardsNum | |||||
}}</view> --> | |||||
<u-form-item labelWidth="80" label="验证码 " borderBottom ref="form2"> | |||||
<u--input | |||||
type="number" | |||||
v-model="formData.codeNum" | |||||
border="none" | |||||
></u--input> | |||||
</u-form-item> | |||||
</u--form> | |||||
<view class="loginBtn" @click="loginByCode">登录</view> | |||||
</view> | |||||
</view> | </view> | ||||
</template> | </template> | ||||
@@ -64,11 +126,16 @@ | |||||
//#region 导入 | //#region 导入 | ||||
import { ref, reactive, computed } from "vue"; | import { ref, reactive, computed } from "vue"; | ||||
import { onLoad } from "@dcloudio/uni-app"; | import { onLoad } from "@dcloudio/uni-app"; | ||||
import { voiceTotalApi, loginPhoneApi } from "../../api/login.js"; | |||||
import { | |||||
loginApi, | |||||
loginPhoneApi, | |||||
getCodeApi, | |||||
loginByCodeApi, | |||||
} from "../../api/login.js"; | |||||
import { userInfoModules } from "@/store/modules/userInfo"; | import { userInfoModules } from "@/store/modules/userInfo"; | ||||
//#endregion | //#endregion | ||||
const userInfoModulesPinia = userInfoModules(); | const userInfoModulesPinia = userInfoModules(); | ||||
console.log(userInfoModulesPinia.platForm); | |||||
const pageClass = computed(() => { | const pageClass = computed(() => { | ||||
if (userInfoModulesPinia.platForm == 1) { | if (userInfoModulesPinia.platForm == 1) { | ||||
return "page pageH5"; | return "page pageH5"; | ||||
@@ -87,12 +154,13 @@ function changedCheckbox(e) { | |||||
console.log(e); | console.log(e); | ||||
} | } | ||||
async function getphonenumber(e) { | |||||
console.log(e); | |||||
async function dogetphonenumber(e) { | |||||
console.log(e, "e"); | |||||
if (e.detail.errMsg.includes("ok")) { | if (e.detail.errMsg.includes("ok")) { | ||||
// if (e.detail.errMsg.includes("fail")) { | |||||
//用户授权了手机号 | //用户授权了手机号 | ||||
const data = { | const data = { | ||||
appId: "wx75cf14e3a0d45821", | |||||
appId: userInfoModulesPinia.getAppId(), | |||||
openId: userInfoModulesPinia.openId, | openId: userInfoModulesPinia.openId, | ||||
encryptedData: e.detail.encryptedData, | encryptedData: e.detail.encryptedData, | ||||
iv: e.detail.iv, | iv: e.detail.iv, | ||||
@@ -110,7 +178,7 @@ async function getphonenumber(e) { | |||||
} catch (error) { | } catch (error) { | ||||
uni.showToast({ | uni.showToast({ | ||||
icon: "none", | icon: "none", | ||||
title: "获取失败", | |||||
title: "获取手机号失败", | |||||
}); | }); | ||||
} | } | ||||
} else { | } else { | ||||
@@ -126,7 +194,7 @@ async function toCreate(e) { | |||||
console.log(); | console.log(); | ||||
if (checkboxValue.value[0]) { | if (checkboxValue.value[0]) { | ||||
// await handleLogin(); | // await handleLogin(); | ||||
await getphonenumber(e); | |||||
await dogetphonenumber(e); | |||||
} else { | } else { | ||||
uni.showModal({ | uni.showModal({ | ||||
title: "提示", | title: "提示", | ||||
@@ -135,7 +203,7 @@ async function toCreate(e) { | |||||
if (res.confirm) { | if (res.confirm) { | ||||
checkboxValue.value = ["同意智像相机用户使用协议"]; | checkboxValue.value = ["同意智像相机用户使用协议"]; | ||||
// handleLogin(); | // handleLogin(); | ||||
getphonenumber(e); | |||||
dogetphonenumber(e); | |||||
} else if (res.cancel) { | } else if (res.cancel) { | ||||
} | } | ||||
}, | }, | ||||
@@ -192,23 +260,280 @@ const goPro = () => { | |||||
}; | }; | ||||
//#endregion --------------------- | //#endregion --------------------- | ||||
//#region 手机号登录 | |||||
const formData = ref({ | |||||
phoneNum: null, | |||||
codeNum: null, | |||||
}); | |||||
const rules = { | |||||
phoneNum: [ | |||||
{ | |||||
required: true, | |||||
message: "请填写手机号", | |||||
trigger: ["blur"], | |||||
}, | |||||
{ | |||||
// 自定义验证函数,见上说明 | |||||
validator: (rule, value, callback) => { | |||||
// 上面有说,返回true表示校验通过,返回false表示不通过 | |||||
// uni.$u.test.mobile()就是返回true或者false的 | |||||
return uni.$u.test.mobile(value); | |||||
}, | |||||
message: "手机号码不正确", | |||||
// 触发器可以同时用blur和change | |||||
trigger: ["blur"], | |||||
}, | |||||
], | |||||
}; | |||||
const formRef = ref(null); | |||||
const form1 = ref(null); | |||||
const backwardsNum = ref(60); | |||||
const countdownTimer = ref(null); // 倒计时的计时器 | |||||
const timerFlag = ref(false); | |||||
function getCode() { | |||||
if (timerFlag.value) { | |||||
return; // 如果倒计时尚未结束,不执行倒计时操作 | |||||
} | |||||
timerFlag.value = true; | |||||
formRef.value | |||||
.validate() | |||||
.then(async (res) => { | |||||
try { | |||||
uni.showLoading({ | |||||
title: "请稍后", | |||||
mask: true, | |||||
}); | |||||
const res = await getCodeApi(formData.value.phoneNum); | |||||
console.log(res.code, "duanxing"); | |||||
uni.hideLoading(); | |||||
if (res.code != 200) { | |||||
uni.showToast({ | |||||
title: res.message, | |||||
icon: "none", | |||||
}); | |||||
} | |||||
console.log(res); | |||||
// 表单验证通过后开始倒计时 | |||||
countdownTimer.value = setInterval(() => { | |||||
if (backwardsNum.value > 0) { | |||||
backwardsNum.value--; | |||||
} else { | |||||
clearInterval(countdownTimer.value); | |||||
countdownTimer.value = null; | |||||
backwardsNum.value = 60; | |||||
timerFlag.value = false; | |||||
} | |||||
}, 1000); | |||||
} catch (error) { | |||||
uni.hideLoading(); | |||||
uni.$u.toast("短信验证码获取失败"); | |||||
clearInterval(countdownTimer.value); | |||||
countdownTimer.value = null; | |||||
backwardsNum.value = 5; | |||||
timerFlag.value = false; | |||||
} | |||||
}) | |||||
.catch((errors) => { | |||||
console.log(errors); | |||||
}); | |||||
} | |||||
async function loginByCode() { | |||||
uni.showLoading({ | |||||
title: "请稍后", | |||||
mask: true, | |||||
}); | |||||
const data = { | |||||
appId: userInfoModulesPinia.getAppId(), | |||||
openId: userInfoModulesPinia.openId, | |||||
phone: formData.value.phoneNum, | |||||
code: formData.value.codeNum, | |||||
}; | |||||
try { | |||||
const res = await loginByCodeApi(data); | |||||
console.log(res); | |||||
uni.hideLoading(); | |||||
userInfoModulesPinia.token = res.data.token; | |||||
console.log(res.code, "denglu"); | |||||
if (res.code != 200) { | |||||
uni.showToast({ | |||||
title: res.message, | |||||
icon: "none", | |||||
}); | |||||
} else { | |||||
uni.switchTab({ | |||||
url: "/pages/uploadPhoto/uploadPhoto", | |||||
}); | |||||
} | |||||
} catch (error) { | |||||
uni.hideLoading(); | |||||
uni.showToast({ | |||||
title: "登录失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
} | |||||
} | |||||
//#endregion --------------------- | |||||
//#region | //#region | ||||
onLoad((options) => { | onLoad((options) => { | ||||
uni.hideHomeButton(); | uni.hideHomeButton(); | ||||
// workId.value = options.id; | // workId.value = options.id; | ||||
if (options.type == "tokenFfalse") { | if (options.type == "tokenFfalse") { | ||||
uni.showToast({ | uni.showToast({ | ||||
title: "登录失效,请重新登录", | title: "登录失效,请重新登录", | ||||
icon: "none", | icon: "none", | ||||
}); | }); | ||||
} | } | ||||
if (userInfoModulesPinia.platForm == 2) { | |||||
uni.login({ | |||||
provider: "weixin", // 使用微信登录授权 | |||||
success: async (res) => { | |||||
if (res.code) { | |||||
try { | |||||
uni.showLoading({ | |||||
title: "加载中...", | |||||
mask: true, | |||||
}); | |||||
const data = { | |||||
appId: userInfoModulesPinia.getAppId(), | |||||
code: res.code, | |||||
}; | |||||
const res2 = await loginApi(data); | |||||
userInfoModulesPinia.openId = res2.data.openId; | |||||
if (res2.data.token) { | |||||
userInfoModulesPinia.token = res2.data.token; | |||||
// uni.setStorageSync("token", userInfoModulesPinia.token); | |||||
console.log(userInfoModulesPinia.openId, "获取openid"); | |||||
// 获取头像和金币 | |||||
const res3 = await findImageApi(); | |||||
userInfoModulesPinia.myAvatar = | |||||
res3.data && res3.data.image ? res3.data.image : ""; | |||||
const res4 = await findGlodApi(); | |||||
if (!res4.data) { | |||||
userInfoModulesPinia.myGlod = 0; | |||||
} else { | |||||
userInfoModulesPinia.myGlod = res4.data.digitalAvatarResidueGlod | |||||
? res4.data.digitalAvatarResidueGlod | |||||
: 0; | |||||
} | |||||
uni.hideLoading(); | |||||
if (res2.data.token) { | |||||
// uni.redirectTo({ | |||||
// url: "/pages/index/index", | |||||
// }); | |||||
} else { | |||||
uni.redirectTo({ | |||||
url: "/pages/login/index", | |||||
}); | |||||
console.log("error1"); | |||||
uni.showToast({ | |||||
title: "登录失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
} | |||||
} | |||||
uni.hideLoading(); | |||||
} catch (error) { | |||||
// uni.redirectTo({ | |||||
// url: "pages/index/index", | |||||
// }); | |||||
console.log(error, "error2"); | |||||
uni.showToast({ | |||||
title: "登录失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
} | |||||
} else { | |||||
// uni.redirectTo({ | |||||
// url: "pages/index/index", | |||||
// }); | |||||
console.log("error3"); | |||||
uni.showToast({ | |||||
title: "登录失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
} | |||||
}, | |||||
fail: (err) => { | |||||
// uni.redirectTo({ | |||||
// url: "pages/index/index", | |||||
// }); | |||||
console.log("error4"); | |||||
uni.showToast({ | |||||
title: "登录失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
}, | |||||
}); | |||||
} | |||||
// 抖音头条授权 | |||||
else if (userInfoModulesPinia.platForm == 3) { | |||||
uni.login({ | |||||
provider: "toutiao", // 使用微信登录授权 | |||||
success: async (res) => { | |||||
if (res.code) { | |||||
try { | |||||
uni.showLoading({ | |||||
title: "加载中...", | |||||
mask: true, | |||||
}); | |||||
const data = { | |||||
appId: userInfoModulesPinia.getAppId(), | |||||
code: res.code, | |||||
}; | |||||
const res2 = await loginApi(data); | |||||
userInfoModulesPinia.openId = res2.data.openId; | |||||
if (res2.data.token) { | |||||
userInfoModulesPinia.token = res2.data.token; | |||||
// uni.setStorageSync("token", userInfoModulesPinia.token); | |||||
console.log(userInfoModulesPinia.openId, "获取openid"); | |||||
uni.hideLoading(); | |||||
} else { | |||||
uni.hideLoading(); | |||||
// uni.redirectTo({ | |||||
// url: "/pages/login/index", | |||||
// }); | |||||
console.log("error1"); | |||||
uni.showToast({ | |||||
title: "登录失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
} | |||||
uni.hideLoading(); | |||||
} catch (error) { | |||||
uni.hideLoading(); | |||||
console.log(error, "error2"); | |||||
uni.showToast({ | |||||
title: "登录失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
} | |||||
} else { | |||||
console.log("error3"); | |||||
uni.showToast({ | |||||
title: "登录失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
} | |||||
}, | |||||
fail: (err) => { | |||||
console.log("error4"); | |||||
uni.showToast({ | |||||
title: "登录失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
}, | |||||
}); | |||||
} | |||||
}); | }); | ||||
//#endregion --------------------------------- | //#endregion --------------------------------- | ||||
//#region | //#region | ||||
//#endregion --------------------------------- | //#endregion --------------------------------- | ||||
// voiceTotalApi(); | |||||
</script> | </script> | ||||
<style lang="scss"> | <style lang="scss"> | ||||
@@ -263,4 +588,30 @@ onLoad((options) => { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
.phoneLoginForm { | |||||
position: absolute; | |||||
top: 20%; | |||||
left: 30rpx; | |||||
width: 690rpx; | |||||
z-index: 9; | |||||
background-color: #fff; | |||||
padding: 30rpx; | |||||
.u-code { | |||||
width: 100%; | |||||
height: 50rpx; | |||||
background-color: green; | |||||
color: #ff4f00; | |||||
} | |||||
.getCodeBtn { | |||||
background-color: green; | |||||
text-align: center; | |||||
line-height: 50rpx; | |||||
} | |||||
.loginBtn { | |||||
background-color: #ff4f00; | |||||
text-align: center; | |||||
line-height: 50rpx; | |||||
} | |||||
} | |||||
</style> | </style> |
@@ -33,7 +33,7 @@ | |||||
<view class="tips"> | <view class="tips"> | ||||
<text>邀请好友可获得2枚金币</text> | <text>邀请好友可获得2枚金币</text> | ||||
</view> | </view> | ||||
<view class="shareBtn" @click="share">分享</view> | |||||
<button open-type="share" class="shareBtn" @click="share">分享</button> | |||||
<view class="shareBtn" @click="inviteFriend">邀请好友</view> | <view class="shareBtn" @click="inviteFriend">邀请好友</view> | ||||
<view class="shareBtn" @click="buyCoin">金币充值</view> | <view class="shareBtn" @click="buyCoin">金币充值</view> | ||||
</view> | </view> | ||||
@@ -159,33 +159,40 @@ function previewImage(index) { | |||||
//#endregion --------------------- | //#endregion --------------------- | ||||
//#region 分享 | //#region 分享 | ||||
// onShareAppMessage((res) => { | |||||
// return { | |||||
// title: "页面分享的标题", | |||||
// path: "pages/uploadPhoto/uploadPhoto", | |||||
// // imageUrl: "", | |||||
// }; | |||||
// }); | |||||
function share() { | function share() { | ||||
uni.showToast({ | |||||
title: "敬请期待!", | |||||
icon: "none", | |||||
}); | |||||
return; | |||||
uni.share({ | |||||
provider: "weixin", //分享服务提供商(即weixin|qq|sinaweibo) | |||||
scene: "WXSenceTimeline", //WXSceneSession(分享到聊天界面)、WXSenceTimeline(分享到朋友圈)、WXSceneFavorite(分享到微信收藏) | |||||
type: 5, | |||||
title: "分享到朋友圈", | |||||
summary: "分享描述", | |||||
href: "www.baidu.com", //分享跳转地址 | |||||
imageUrl: "../static/lovehot.png", //分享图片路径(必须是线上可访问图片) | |||||
miniProgram: { | |||||
id: "wx75cf14e3a0d45821", | |||||
path: "pages/index/index", | |||||
type: 0, | |||||
webUrl: "", | |||||
}, | |||||
success: function (res) { | |||||
// console.log("success:" + JSON.stringify(res)); | |||||
}, | |||||
fail: function (err) { | |||||
// console.log("fail:" + JSON.stringify(err)); | |||||
}, | |||||
}); | |||||
// -------------------------------------------------- | |||||
// uni.showToast({ | |||||
// title: "敬请期待!", | |||||
// icon: "none", | |||||
// }); | |||||
// return; | |||||
// uni.onShareAppMessage({ | |||||
// provider: "weixin", //分享服务提供商(即weixin|qq|sinaweibo) | |||||
// scene: "WXSenceTimeline", //WXSceneSession(分享到聊天界面)、WXSenceTimeline(分享到朋友圈)、WXSceneFavorite(分享到微信收藏) | |||||
// type: 5, | |||||
// title: "分享到朋友圈", | |||||
// summary: "分享描述", | |||||
// href: "www.baidu.com", //分享跳转地址 | |||||
// imageUrl: "../static/lovehot.png", //分享图片路径(必须是线上可访问图片) | |||||
// miniProgram: { | |||||
// id: "wx75cf14e3a0d45821", | |||||
// path: "pages/index/index", | |||||
// type: 0, | |||||
// webUrl: "", | |||||
// }, | |||||
// success: function (res) { | |||||
// }, | |||||
// fail: function (err) { | |||||
// }, | |||||
// }); | |||||
} | } | ||||
function inviteFriend() { | function inviteFriend() { | ||||
uni.showToast({ | uni.showToast({ | ||||
@@ -219,9 +226,17 @@ function inviteFriend() { | |||||
//#region 页面跳转 | //#region 页面跳转 | ||||
function buyCoin() { | function buyCoin() { | ||||
uni.navigateTo({ | |||||
url: "/pages/index/buyCoin", | |||||
}); | |||||
if (userInfoModulesPinia.platForm == 3) { | |||||
uni.showToast({ | |||||
title: "暂未开放", | |||||
icon: "none", | |||||
mask: true, | |||||
}); | |||||
} else { | |||||
uni.navigateTo({ | |||||
url: "/pages/index/buyCoin", | |||||
}); | |||||
} | |||||
} | } | ||||
//#endregion --------------------- | //#endregion --------------------- | ||||
@@ -255,6 +270,7 @@ async function photoSupper() { | |||||
console.log(res); | console.log(res); | ||||
uni.hideLoading(); | uni.hideLoading(); | ||||
uni.showToast({ | uni.showToast({ | ||||
title: "高清处理请求成功,请稍后", | |||||
title: "高清处理请求成功,请稍等", | title: "高清处理请求成功,请稍等", | ||||
icon: "none", | icon: "none", | ||||
}); | }); | ||||
@@ -1,24 +1,24 @@ | |||||
<template> | <template> | ||||
<div class="page"> | <div class="page"> | ||||
<div class="title">慧拍“金币”充值协议</div> | |||||
<div class="title">智像“金币”充值协议</div> | |||||
<div class="paragraph"> | <div class="paragraph"> | ||||
欢迎您使用慧拍的“金币”付费服务!为了使用慧拍内的特定付费产品和服务,您必须仔细阅读并遵守《慧拍“金币”充值协议》(以下简称“本协议”)。 | |||||
欢迎您使用智像的“金币”付费服务!为了使用智像内的特定付费产品和服务,您必须仔细阅读并遵守《智像“金币”充值协议》(以下简称“本协议”)。 | |||||
</div> | </div> | ||||
<div class="paragraph"> | <div class="paragraph"> | ||||
注意:请用户仔细阅读以下全部内容。如果您不同意本服务协议的任一或全部条款内容,请不要使用慧拍“金币”服务。慧拍“金币”服务是慧拍服务的子服务,因此,当您开始使用慧拍“金币”服务时,即表示您与慧拍已达成协议关系,并自愿接受并遵守慧拍服务及慧拍“金币”服务的所有服务协议,包括但不限于《用户服务协议》、本服务协议及相关子协议和管理规范等。 | |||||
注意:请用户仔细阅读以下全部内容。如果您不同意本服务协议的任一或全部条款内容,请不要使用智像“金币”服务。智像“金币”服务是智像服务的子服务,因此,当您开始使用智像“金币”服务时,即表示您与智像已达成协议关系,并自愿接受并遵守智像服务及智像“金币”服务的所有服务协议,包括但不限于《用户服务协议》、本服务协议及相关子协议和管理规范等。 | |||||
</div> | </div> | ||||
<div class="paragraph"> | <div class="paragraph"> | ||||
特别提示:在您开始使用本服务之前,您应当具备中华人民共和国法律规定的与您行为相适应的民事行为能力。若您不具备前述与您行为相适应的民事行为能力,则应获得监护人的知情同意。您及您的监护人应依照法律规定承担因此而导致的相应责任。特别地,如果您是未成年人,请在您的监护人的同意和指导下访问和/或使用我们的平台。慧拍谨此提醒家长合理引导未成年子女的上网及消费行为。 | |||||
特别提示:在您开始使用本服务之前,您应当具备中华人民共和国法律规定的与您行为相适应的民事行为能力。若您不具备前述与您行为相适应的民事行为能力,则应获得监护人的知情同意。您及您的监护人应依照法律规定承担因此而导致的相应责任。特别地,如果您是未成年人,请在您的监护人的同意和指导下访问和/或使用我们的平台。智像谨此提醒家长合理引导未成年子女的上网及消费行为。 | |||||
</div> | </div> | ||||
<div class="item"> | <div class="item"> | ||||
<div class="name">一、协议的范围</div> | <div class="name">一、协议的范围</div> | ||||
<div class="child"> | <div class="child"> | ||||
1.1 | 1.1 | ||||
协议适用主体范围:本协议是用户与慧拍之间关于用户在使用指定付费产品/服务和充值规则等相关事宜所订立的协议。 | |||||
协议适用主体范围:本协议是用户与智像之间关于用户在使用指定付费产品/服务和充值规则等相关事宜所订立的协议。 | |||||
</div> | </div> | ||||
<div class="child"> | <div class="child"> | ||||
1.2 | 1.2 | ||||
协议关系及冲突条款:本协议视为《慧拍用户服务协议》的补充协议,是其不可分割的组成部分。如果本协议与上述内容存在冲突,以本协议为准。 | |||||
协议关系及冲突条款:本协议视为《智像用户服务协议》的补充协议,是其不可分割的组成部分。如果本协议与上述内容存在冲突,以本协议为准。 | |||||
</div> | </div> | ||||
</div> | </div> | ||||
@@ -26,11 +26,11 @@ | |||||
<div class="name">二、名词定义</div> | <div class="name">二、名词定义</div> | ||||
<div class="child"> | <div class="child"> | ||||
2.1 | 2.1 | ||||
慧拍“金币”:指按照慧拍的指定方式支付一定费用后,可以享有由慧拍提供的特定付费产品和服务。慧拍“金币”不具有法定货币的流通和支付功能,不得兑换为法定货币或实物。慧拍提醒用户注意,慧拍“金币”付费服务非存款、预付款或其他可无理由退还性质的商品或财产权利。 | |||||
智像“金币”:指按照智像的指定方式支付一定费用后,可以享有由智像提供的特定付费产品和服务。智像“金币”不具有法定货币的流通和支付功能,不得兑换为法定货币或实物。智像提醒用户注意,智像“金币”付费服务非存款、预付款或其他可无理由退还性质的商品或财产权利。 | |||||
</div> | </div> | ||||
<div class="child"> | <div class="child"> | ||||
2.2 | 2.2 | ||||
充值服务:用户通过慧拍“金币”充值,享有由慧拍或第三方提供的特定付费产品/服务。用户所享有的具体服务内容会根据充值金额而有所不同。同时,慧拍可能会在不同时间推出具体不同的服务内容,以不断完善和优化本服务。具体服务内容请参阅慧拍相关服务页面的公布和实际提供的内容。 | |||||
充值服务:用户通过智像“金币”充值,享有由智像或第三方提供的特定付费产品/服务。用户所享有的具体服务内容会根据充值金额而有所不同。同时,智像可能会在不同时间推出具体不同的服务内容,以不断完善和优化本服务。具体服务内容请参阅智像相关服务页面的公布和实际提供的内容。 | |||||
</div> | </div> | ||||
</div> | </div> | ||||
@@ -38,49 +38,49 @@ | |||||
<div class="name">三、付费服务及充值规则</div> | <div class="name">三、付费服务及充值规则</div> | ||||
<div class="child"> | <div class="child"> | ||||
3.1 | 3.1 | ||||
用户理解并同意,用户必须成为慧拍的普通注册用户后,才能继续进行付费服务。本服务收取的充值金额是慧拍向最终用户收取互联网增值服务使用费的一种通用收费渠道或计费方式。该充值金额仅可用于慧拍指定服务,不适用于其他任何产品或服务。 | |||||
用户理解并同意,用户必须成为智像的普通注册用户后,才能继续进行付费服务。本服务收取的充值金额是智像向最终用户收取互联网增值服务使用费的一种通用收费渠道或计费方式。该充值金额仅可用于智像指定服务,不适用于其他任何产品或服务。 | |||||
</div> | </div> | ||||
<div class="child"> | <div class="child"> | ||||
3.2 | 3.2 | ||||
慧拍将有权决定所提供的服务资费标准和收费方式。可能会针对不同的服务制定不同的资费标准和收费方式,也可能根据慧拍所提供的服务的不同阶段确定不同的资费标准和收费方式。 | |||||
智像将有权决定所提供的服务资费标准和收费方式。可能会针对不同的服务制定不同的资费标准和收费方式,也可能根据智像所提供的服务的不同阶段确定不同的资费标准和收费方式。 | |||||
</div> | </div> | ||||
<div class="child"> | <div class="child"> | ||||
3.3 充值 | 3.3 充值 | ||||
<div class="inside"> | <div class="inside"> | ||||
3.3.1 | 3.3.1 | ||||
用户通过所用客户端相应的支付方式(具体支付方式请见充值页面),为其账号充值所直接获得的慧拍“金币”,可在指定的付费产品/服务中使用。 | |||||
安卓端:慧拍“金币”费用将通过支付宝、微信等第三方代收费的方式支付,具体价格请见购买收银台标示。 | |||||
iOS端:慧拍“金币”费用将通过支付宝、微信等第三方代收费的方式支付,具体价格为人民币0.1元。 | |||||
用户通过所用客户端相应的支付方式(具体支付方式请见充值页面),为其账号充值所直接获得的智像“金币”,可在指定的付费产品/服务中使用。 | |||||
安卓端:智像“金币”费用将通过支付宝、微信等第三方代收费的方式支付,具体价格请见购买收银台标示。 | |||||
iOS端:智像“金币”费用将通过支付宝、微信等第三方代收费的方式支付。 | |||||
</div> | </div> | ||||
<div class="inside"> | <div class="inside"> | ||||
3.3.2 | 3.3.2 | ||||
用户可以通过登录慧拍,在首页点击“我的金币”,查询已购买或尚未消费的慧拍“金币”。 | |||||
用户可以通过登录智像,在首页点击“我的金币”,查询已购买或尚未消费的智像“金币”。 | |||||
</div> | </div> | ||||
<div class="inside"> | <div class="inside"> | ||||
3.3.3 | 3.3.3 | ||||
用户理解并知晓,慧拍不提供用户间交易慧拍“金币”服务。用户间交易慧拍“金币”构成对本协议的违反,慧拍有权在未经通知的情况下采取相应适当措施,以确保不提供用户间交易慧拍“金币”服务。 | |||||
用户理解并知晓,智像不提供用户间交易智像“金币”服务。用户间交易智像“金币”构成对本协议的违反,智像有权在未经通知的情况下采取相应适当措施,以确保不提供用户间交易智像“金币”服务。 | |||||
</div> | </div> | ||||
<div class="inside"> | <div class="inside"> | ||||
3.3.4 | 3.3.4 | ||||
用户理解并同意,充值的慧拍“金币”不适用无理由退换。充值一旦成功,即视为充值完成。用户不得以消费完成后账户内仍有剩余慧拍“金币”为由要求退费。 | |||||
用户理解并同意,充值的智像“金币”不适用无理由退换。充值一旦成功,即视为充值完成。用户不得以消费完成后账户内仍有剩余智像“金币”为由要求退费。 | |||||
</div> | </div> | ||||
<div class="inside"> | <div class="inside"> | ||||
3.3.5 | 3.3.5 | ||||
当用户在慧拍进行慧拍“金币”充值时,用户必须仔细确认自己的账号及信息。若因为用户自身操作不当、不了解或未充分了解充值计费方式等因素造成充错账号、错选充值种类等情况而损害自身权益,由用户自行负责。 | |||||
当用户在智像进行智像“金币”充值时,用户必须仔细确认自己的账号及信息。若因为用户自身操作不当、不了解或未充分了解充值计费方式等因素造成充错账号、错选充值种类等情况而损害自身权益,由用户自行负责。 | |||||
</div> | </div> | ||||
<div class="inside"> | <div class="inside"> | ||||
3.3.6 | 3.3.6 | ||||
用户在充值时使用第三方支付企业提供的服务应遵守与该第三方的各项协议及其服务规则。在使用第三方支付服务过程中,用户应妥善保管个人信息,包括但不限于银行卡账号、密码、验证码等。用户同意并确认,慧拍对因第三方支付服务产生的纠纷不承担任何责任。 | |||||
用户在充值时使用第三方支付企业提供的服务应遵守与该第三方的各项协议及其服务规则。在使用第三方支付服务过程中,用户应妥善保管个人信息,包括但不限于银行卡账号、密码、验证码等。用户同意并确认,智像对因第三方支付服务产生的纠纷不承担任何责任。 | |||||
</div> | </div> | ||||
<div class="inside"> | <div class="inside"> | ||||
3.3.7 | 3.3.7 | ||||
若因违反本协议条款,导致账号被冻结和/或终止使用的用户,不得因此要求慧拍作任何补偿或赔偿。 | |||||
若因违反本协议条款,导致账号被冻结和/或终止使用的用户,不得因此要求智像作任何补偿或赔偿。 | |||||
</div> | </div> | ||||
<div class="inside"> | <div class="inside"> | ||||
3.3.8 | 3.3.8 | ||||
若因慧拍“金币”充值系统自身充值故障原因造成用户充值失实,在慧拍恢复、存有有效数据和用户提供合法有效凭证的情况下,慧拍将根据用户充值情况作出变动及补救措施。 | |||||
因慧拍“金币”充值系统自身故障原因,造成系统充值额小于用户实际充值额的,慧拍将补其差额。 | |||||
因慧拍“金币”充值系统自身故障原因,造成系统充值额大于用户实际充值额的,慧拍有权追回差额。 | |||||
若因智像“金币”充值系统自身充值故障原因造成用户充值失实,在智像恢复、存有有效数据和用户提供合法有效凭证的情况下,智像将根据用户充值情况作出变动及补救措施。 | |||||
因智像“金币”充值系统自身故障原因,造成系统充值额小于用户实际充值额的,智像将补其差额。 | |||||
因智像“金币”充值系统自身故障原因,造成系统充值额大于用户实际充值额的,智像有权追回差额。 | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
@@ -89,22 +89,22 @@ | |||||
<div class="name">四、服务的变更、中止或终止</div> | <div class="name">四、服务的变更、中止或终止</div> | ||||
<div class="child"> | <div class="child"> | ||||
4.1 本服务的中止或终止包含如下情况: | 4.1 本服务的中止或终止包含如下情况: | ||||
因用户的违约或违规行为,慧拍主动中止或终止服务。 | |||||
因国家或相关政府监管部门要求或发生不可抗力事件时,慧拍中止或终止服务。 | |||||
因用户的违约或违规行为,智像主动中止或终止服务。 | |||||
因国家或相关政府监管部门要求或发生不可抗力事件时,智像中止或终止服务。 | |||||
其他根据法律法规应中止或终止服务的情况。 | 其他根据法律法规应中止或终止服务的情况。 | ||||
</div> | </div> | ||||
<div class="child"> | <div class="child"> | ||||
4.2 | 4.2 | ||||
中止或终止服务后,慧拍会以法律允许的方式通知用户。当用户发现无法登录或享受服务时,可以咨询客服人员。 | |||||
中止或终止服务后,智像会以法律允许的方式通知用户。当用户发现无法登录或享受服务时,可以咨询客服人员。 | |||||
</div> | </div> | ||||
<div class="child"> | <div class="child"> | ||||
4.3 中止或终止后的处理: | 4.3 中止或终止后的处理: | ||||
除法律规定的责任外,慧拍对本服务的中止或终止对用户和第三人不承担任何责任。 | |||||
除法律规定的责任外,智像对本服务的中止或终止对用户和第三人不承担任何责任。 | |||||
除法律规定或本协议另有约定外,已收取的费用不予退还。 | 除法律规定或本协议另有约定外,已收取的费用不予退还。 | ||||
</div> | </div> | ||||
<div class="child"> | <div class="child"> | ||||
4.4 | 4.4 | ||||
对于本服务或本协议可能发生的变更(包括但不限于本协议修改、服务细则调整等),慧拍将根据本协议的约定通知用户。请用户仔细阅读并选择是否按照调整和/或变更后的本协议/服务细则等继续选择本服务。如用户同意上述调整和/或变更,用户可以继续使用本服务,以表明用户已经接受上述调整和/或变更。如用户不同意调整和/或变更,建议用户立即停止使用本服务。如用户对上述调整和/或变更有任何问题,可以咨询客服。 | |||||
对于本服务或本协议可能发生的变更(包括但不限于本协议修改、服务细则调整等),智像将根据本协议的约定通知用户。请用户仔细阅读并选择是否按照调整和/或变更后的本协议/服务细则等继续选择本服务。如用户同意上述调整和/或变更,用户可以继续使用本服务,以表明用户已经接受上述调整和/或变更。如用户不同意调整和/或变更,建议用户立即停止使用本服务。如用户对上述调整和/或变更有任何问题,可以咨询客服。 | |||||
</div> | </div> | ||||
</div> | </div> | ||||
@@ -112,11 +112,11 @@ | |||||
<div class="name">五、违约责任</div> | <div class="name">五、违约责任</div> | ||||
<div class="child"> | <div class="child"> | ||||
5.1 | 5.1 | ||||
如果慧拍发现用户有违反本协议任何行为的,慧拍有权进行独立判断并采取技术手段予以删除、屏蔽或断开相关信息。同时,慧拍有权视用户的行为性质,对用户采取包括但不限于暂停或终止部分或全部本服务、中止或终止用户对慧拍账号使用、追究法律责任等措施。由此给用户带来的损失(包括但不限于通信中断、相关数据清空、服务费用作为违约金而归慧拍所有等),由用户自行承担。造成慧拍损失的,用户也应予以赔偿。若慧拍依前述约定对用户采取暂停或终止部分或全部本服务的,慧拍无需向用户退还任何费用,剩余的服务费用作为违约金而归慧拍所有。 | |||||
如果智像发现用户有违反本协议任何行为的,智像有权进行独立判断并采取技术手段予以删除、屏蔽或断开相关信息。同时,智像有权视用户的行为性质,对用户采取包括但不限于暂停或终止部分或全部本服务、中止或终止用户对智像账号使用、追究法律责任等措施。由此给用户带来的损失(包括但不限于通信中断、相关数据清空、服务费用作为违约金而归智像所有等),由用户自行承担。造成智像损失的,用户也应予以赔偿。若智像依前述约定对用户采取暂停或终止部分或全部本服务的,智像无需向用户退还任何费用,剩余的服务费用作为违约金而归智像所有。 | |||||
</div> | </div> | ||||
<div class="child"> | <div class="child"> | ||||
5.2 | 5.2 | ||||
如用户有违反本协议任何行为,导致任何第三方损害,用户应当独立承担责任。慧拍因此遭受损失的,用户也应当一并赔偿。 | |||||
如用户有违反本协议任何行为,导致任何第三方损害,用户应当独立承担责任。智像因此遭受损失的,用户也应当一并赔偿。 | |||||
</div> | </div> | ||||
</div> | </div> | ||||
@@ -144,7 +144,7 @@ | |||||
</div> | </div> | ||||
<div class="paragraph"> | <div class="paragraph"> | ||||
以上为慧拍“金币”充值协议的内容,请您仔细阅读并遵守。如您同意并愿意继续使用慧拍“金币”服务,请进行相应操作。如有任何疑问,请咨询客服人员。谢谢! | |||||
以上为智像“金币”充值协议的内容,请您仔细阅读并遵守。如您同意并愿意继续使用智像“金币”服务,请进行相应操作。如有任何疑问,请咨询客服人员。谢谢! | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</template> | </template> | ||||
@@ -4,7 +4,7 @@ | |||||
<div class="date">生效日期:2023年8月2日</div> | <div class="date">生效日期:2023年8月2日</div> | ||||
<div class="version">版本号:2023V1</div> | <div class="version">版本号:2023V1</div> | ||||
<div class="paragraph"> | <div class="paragraph"> | ||||
欢迎您使用慧拍!为使用未序网络科技(上海)有限公司(以下简称“我方”)运营的慧拍客户端软件提供的相关服务(以下简称“我方平台服务”),您应当阅读并遵守《用户服务协议》(以下简称“本协议”)。建议您仔细阅读本协议的全部内容,尤其是以加粗形式展示的与您的权益(可能)存在重大关系的条款(包括相关约定免除或者限制责任的条款、法律适用和争议解决等条款),请您务必审慎阅读、充分理解个条款内容。各条款标题仅为帮助您理解该条款表达的主旨之用,不影响或限制本协议条款的含义或解释。 | |||||
欢迎您使用智像!为使用未序网络科技(上海)有限公司(以下简称“我方”)运营的智像客户端软件提供的相关服务(以下简称“我方平台服务”),您应当阅读并遵守《用户服务协议》(以下简称“本协议”)。建议您仔细阅读本协议的全部内容,尤其是以加粗形式展示的与您的权益(可能)存在重大关系的条款(包括相关约定免除或者限制责任的条款、法律适用和争议解决等条款),请您务必审慎阅读、充分理解个条款内容。各条款标题仅为帮助您理解该条款表达的主旨之用,不影响或限制本协议条款的含义或解释。 | |||||
</div> | </div> | ||||
<div class="paragraph"> | <div class="paragraph"> | ||||
您点击同意或您使用我方平台服务(使用”行为指包括但不限于下载安装、启动、浏览、注册、登录等行为中的一种或多种,下同),即表示您已阅读并同意签署本协议所有内容,本协议即在您与我方之间产生法律效力,成为对双方均具有约束力的法律文件。如您不同意我方不时对本协议的修改或补充内容,您应放弃注册、停止使用或主动取消本服务。 | 您点击同意或您使用我方平台服务(使用”行为指包括但不限于下载安装、启动、浏览、注册、登录等行为中的一种或多种,下同),即表示您已阅读并同意签署本协议所有内容,本协议即在您与我方之间产生法律效力,成为对双方均具有约束力的法律文件。如您不同意我方不时对本协议的修改或补充内容,您应放弃注册、停止使用或主动取消本服务。 | ||||
@@ -21,7 +21,7 @@ | |||||
</div> | </div> | ||||
<div class="child"> | <div class="child"> | ||||
1.2 | 1.2 | ||||
我方平台:慧拍(www.metavatar.cc)向您提供的各项产品及/或服务的网站、客户端、小程序以及随技术发展出现的新形态。 | |||||
我方平台:智像(www.metavatar.cc)向您提供的各项产品及/或服务的网站、客户端、小程序以及随技术发展出现的新形态。 | |||||
</div> | </div> | ||||
<div class="child"> | <div class="child"> | ||||
1.3 | 1.3 | ||||
@@ -56,7 +56,7 @@ | |||||
3.2 账户说明 | 3.2 账户说明 | ||||
<div class="inside"> | <div class="inside"> | ||||
3.2.1 | 3.2.1 | ||||
[账户获得]当您按照注册页面提示填写信息、阅读并同意本协议目完成全部注册程序后,您可获得我方平台账户(“慧拍账户”)并成为我方平台用户。 | |||||
[账户获得]当您按照注册页面提示填写信息、阅读并同意本协议目完成全部注册程序后,您可获得我方平台账户(“智像账户”)并成为我方平台用户。 | |||||
</div> | </div> | ||||
<div class="inside"> | <div class="inside"> | ||||
3.2.2 | 3.2.2 | ||||
@@ -69,7 +69,7 @@ | |||||
<div class="name">4.1 我方平台服务</div> | <div class="name">4.1 我方平台服务</div> | ||||
<div class="child"> | <div class="child"> | ||||
4.1.1 | 4.1.1 | ||||
服务范围:我方平台服务是指由我们提供的名称为慧拍的服务。根据您选择的功能不同,您可能将上传您的照片用于AI生成,系统将通过后期技术生成新的内容。“您的上传内容”与“AI生成内容”,统称为“您的内容”。 | |||||
服务范围:我方平台服务是指由我们提供的名称为智像的服务。根据您选择的功能不同,您可能将上传您的照片用于AI生成,系统将通过后期技术生成新的内容。“您的上传内容”与“AI生成内容”,统称为“您的内容”。 | |||||
</div> | </div> | ||||
<div class="child"> | <div class="child"> | ||||
4.1.2 | 4.1.2 | ||||
@@ -79,7 +79,7 @@ | |||||
4.1.3 知识产权: | 4.1.3 知识产权: | ||||
<div class="inside"> | <div class="inside"> | ||||
(1) | (1) | ||||
我方知识产权:除非另有约定或我方另行声明,本服务所使用的我方平台内的所有内容及我方平台的Logo、“慧拍”等文字、图形及其组合,以及我方平台的其他标识、徽记、产品和服务名称均归我方或我方关联公司所有或控制。未经我方书面授权,任何人不得以任何方式展示、使用或作其他处理,也不得向他人表明您有权展示、使用或作其他处理。 | |||||
我方知识产权:除非另有约定或我方另行声明,本服务所使用的我方平台内的所有内容及我方平台的Logo、“智像”等文字、图形及其组合,以及我方平台的其他标识、徽记、产品和服务名称均归我方或我方关联公司所有或控制。未经我方书面授权,任何人不得以任何方式展示、使用或作其他处理,也不得向他人表明您有权展示、使用或作其他处理。 | |||||
</div> | </div> | ||||
<div class="inside"> | <div class="inside"> | ||||
(2) | (2) | ||||
@@ -105,9 +105,17 @@ function previewImage(index) { | |||||
//#region 页面跳转 | //#region 页面跳转 | ||||
function bueCoin() { | function bueCoin() { | ||||
uni.navigateTo({ | |||||
url: "/pages/home/buyCoin", | |||||
}); | |||||
if (userInfoModulesPinia.platForm == 3) { | |||||
uni.showToast({ | |||||
title: "暂未开放", | |||||
icon: "none", | |||||
mask: true, | |||||
}); | |||||
} else { | |||||
uni.navigateTo({ | |||||
url: "/pages/index/buyCoin", | |||||
}); | |||||
} | |||||
} | } | ||||
//#endregion --------------------- | //#endregion --------------------- | ||||
@@ -37,7 +37,7 @@ | |||||
<script setup> | <script setup> | ||||
//#region 导入 | //#region 导入 | ||||
import { ref, reactive } from "vue"; | import { ref, reactive } from "vue"; | ||||
import { voiceTotalApi } from "../../api/login.js"; | |||||
import { userInfoModules } from "@/store/modules/userInfo"; | import { userInfoModules } from "@/store/modules/userInfo"; | ||||
import imageCompression from "browser-image-compression"; //压缩图片插件 | import imageCompression from "browser-image-compression"; //压缩图片插件 | ||||
import { onShow } from "@dcloudio/uni-app"; | import { onShow } from "@dcloudio/uni-app"; | ||||
@@ -61,7 +61,7 @@ function router2(url) { | |||||
} | } | ||||
function getRandomRange() { | function getRandomRange() { | ||||
randomNum.value = Math.floor(Math.random() * (100 - 81)) + 80; | |||||
randomNum.value = Math.floor(Math.random() * (99 - 95 + 1)) + 95; | |||||
} | } | ||||
//#endregion --------------------- | //#endregion --------------------- | ||||
@@ -109,7 +109,6 @@ const showImgData = ref(null); //上传数据 | |||||
// 点击上传图片 | // 点击上传图片 | ||||
function chooseImage() { | function chooseImage() { | ||||
console.log("chooseImage"); | |||||
// 检查token | // 检查token | ||||
if (!userInfoModulesPinia.token) { | if (!userInfoModulesPinia.token) { | ||||
uni.showModal({ | uni.showModal({ | ||||
@@ -207,7 +206,7 @@ async function toCloseStyle() { | |||||
console.log(showImgUrl2.value.path); | console.log(showImgUrl2.value.path); | ||||
// 百度敏感信息检测 | // 百度敏感信息检测 | ||||
uni.uploadFile({ | uni.uploadFile({ | ||||
url: "https://test.metavatar.cc/C/api/baidu/checkPhoto", //上传图片api | |||||
url: BASE_URL + "api/baidu/checkPhoto", //上传图片api | |||||
filePath: showImgUrl2.value.path, | filePath: showImgUrl2.value.path, | ||||
name: "file", | name: "file", | ||||
formData: { | formData: { | ||||
@@ -225,7 +224,7 @@ async function toCloseStyle() { | |||||
} | } | ||||
// 人脸识别接口 | // 人脸识别接口 | ||||
uni.uploadFile({ | uni.uploadFile({ | ||||
url: "https://test.metavatar.cc/C/api/userDigital/checkPhoto", //上传图片api | |||||
url: BASE_URL + "api/userDigital/checkPhoto", //上传图片api | |||||
filePath: showImgUrl2.value.path, | filePath: showImgUrl2.value.path, | ||||
name: "file", | name: "file", | ||||
formData: { | formData: { | ||||
@@ -243,7 +242,7 @@ async function toCloseStyle() { | |||||
} | } | ||||
// 上传接口 | // 上传接口 | ||||
uni.uploadFile({ | uni.uploadFile({ | ||||
url: "https://test.metavatar.cc/C/api/upload/awsImgUpload", //上传图片api | |||||
url: BASE_URL + "api/upload/awsImgUpload", //上传图片api | |||||
filePath: showImgUrl2.value.path, | filePath: showImgUrl2.value.path, | ||||
name: "file", | name: "file", | ||||
formData: { | formData: { | ||||
@@ -327,22 +326,21 @@ async function toCloseStyle() { | |||||
//#region 页面初始化 | //#region 页面初始化 | ||||
onLoad((options) => { | onLoad((options) => { | ||||
// showImgUrl.value = userInfoModulesPinia.myAvatar; | |||||
// 获取微信小程序的 AppID | |||||
// const appid = uni.getAccountInfoSync().miniProgram.appId; | |||||
// 微信登录授权 | // 微信登录授权 | ||||
if (userInfoModulesPinia.platForm != 1) { | |||||
if (userInfoModulesPinia.platForm == 2) { | |||||
uni.login({ | uni.login({ | ||||
provider: "weixin", // 使用微信登录授权 | provider: "weixin", // 使用微信登录授权 | ||||
success: async (res) => { | success: async (res) => { | ||||
console.log(res); | |||||
if (res.code) { | if (res.code) { | ||||
console.log(res.code); | |||||
try { | try { | ||||
uni.showLoading({ | uni.showLoading({ | ||||
title: "加载中...", | title: "加载中...", | ||||
mask: true, | mask: true, | ||||
}); | }); | ||||
const data = { | const data = { | ||||
appId: "wx75cf14e3a0d45821", | |||||
appId: userInfoModulesPinia.getAppId(), | |||||
code: res.code, | code: res.code, | ||||
}; | }; | ||||
const res2 = await loginApi(data); | const res2 = await loginApi(data); | ||||
@@ -413,7 +411,77 @@ onLoad((options) => { | |||||
}, | }, | ||||
}); | }); | ||||
} | } | ||||
console.log(options); | |||||
// 抖音头条授权 | |||||
else if (userInfoModulesPinia.platForm == 3) { | |||||
uni.login({ | |||||
provider: "toutiao", // 使用微信登录授权 | |||||
success: async (res) => { | |||||
if (res.code) { | |||||
try { | |||||
uni.showLoading({ | |||||
title: "加载中...", | |||||
mask: true, | |||||
}); | |||||
const data = { | |||||
appId: userInfoModulesPinia.getAppId(), | |||||
code: res.code, | |||||
}; | |||||
const res2 = await loginApi(data); | |||||
userInfoModulesPinia.openId = res2.data.openId; | |||||
if (res2.data.token) { | |||||
userInfoModulesPinia.token = res2.data.token; | |||||
// uni.setStorageSync("token", userInfoModulesPinia.token); | |||||
console.log(userInfoModulesPinia.openId, "获取openid"); | |||||
// 获取头像和金币 | |||||
const res3 = await findImageApi(); | |||||
userInfoModulesPinia.myAvatar = | |||||
res3.data && res3.data.image ? res3.data.image : ""; | |||||
const res4 = await findGlodApi(); | |||||
if (!res4.data) { | |||||
userInfoModulesPinia.myGlod = 0; | |||||
} else { | |||||
userInfoModulesPinia.myGlod = res4.data.digitalAvatarResidueGlod | |||||
? res4.data.digitalAvatarResidueGlod | |||||
: 0; | |||||
} | |||||
uni.hideLoading(); | |||||
} else { | |||||
uni.hideLoading(); | |||||
uni.redirectTo({ | |||||
url: "/pages/login/index", | |||||
}); | |||||
console.log("error1"); | |||||
uni.showToast({ | |||||
title: "登录失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
} | |||||
uni.hideLoading(); | |||||
} catch (error) { | |||||
uni.hideLoading(); | |||||
console.log(error, "error2"); | |||||
uni.showToast({ | |||||
title: "登录失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
} | |||||
} else { | |||||
console.log("error3"); | |||||
uni.showToast({ | |||||
title: "登录失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
} | |||||
}, | |||||
fail: (err) => { | |||||
console.log("error4"); | |||||
uni.showToast({ | |||||
title: "登录失败,请重试", | |||||
icon: "none", | |||||
}); | |||||
}, | |||||
}); | |||||
} | |||||
}); | }); | ||||
onShow(() => { | onShow(() => { | ||||
// 若来自我的页面的更换头像按钮,直接触发以下操作 | // 若来自我的页面的更换头像按钮,直接触发以下操作 | ||||
@@ -14,6 +14,8 @@ export const userInfoModules = defineStore("userInfoStore", () => { | |||||
const token = ref(null) | const token = ref(null) | ||||
const myAvatar = ref('') | const myAvatar = ref('') | ||||
const myGlod = ref(0) | const myGlod = ref(0) | ||||
const wxappid = "wx75cf14e3a0d45821" | |||||
const dyappid = "tt2eba5807b1883f9f01" | |||||
/** | /** | ||||
* @description:依托平台:(web、mp-weixin、mp-toutiao) | * @description:依托平台:(web、mp-weixin、mp-toutiao) | ||||
* @example 平台名:"web-H5",枚举值:1 | * @example 平台名:"web-H5",枚举值:1 | ||||
@@ -40,7 +42,14 @@ export const userInfoModules = defineStore("userInfoStore", () => { | |||||
// async function getMyGlod(params) { | // async function getMyGlod(params) { | ||||
// } | // } | ||||
return { userInfo, openId, token, myAvatar, myGlod, platForm, hostSystem }; | |||||
function getAppId() { | |||||
if (platForm.value == 2) { | |||||
return wxappid | |||||
} else if (platForm.value == 3) { | |||||
return dyappid | |||||
} | |||||
} | |||||
return { userInfo, openId, token, myAvatar, myGlod, platForm, hostSystem, wxappid, dyappid, getAppId }; | |||||
}, | }, | ||||
{ | { | ||||
@@ -45,4 +45,4 @@ const request = (requestObj) => { | |||||
}) | }) | ||||
}) | }) | ||||
}; | }; | ||||
export default request | |||||
export { BASE_URL, request } |