@@ -1,7 +1,9 @@ | |||
# Suimang-wxapp | |||
# setStorageSync 键名 | |||
SN --设备识别码 | |||
token --token | |||
UserId --扫码登录后获取的用户id | |||
wx-"appid": "", | |||
@@ -0,0 +1,26 @@ | |||
import { request } from "../utils/request" | |||
/** | |||
* @description:获取二维码 | |||
* @param {*} (appId, openId,phone,code) | |||
* @return: list | |||
*/ | |||
export function getQRCodeApi(data) { | |||
return request({ | |||
url: `api/machineqrcode/getQRCode`, | |||
method: 'POST', | |||
data | |||
}) | |||
} | |||
/** | |||
* @description:获取用户状态 | |||
* @param {*} (appId, openId,phone,code) | |||
* @return: list | |||
*/ | |||
export function getUserApi(UserId) { | |||
return request({ | |||
url: `api/machineuser/getUser?tmpUserId=${UserId}`, | |||
method: 'get', | |||
}) | |||
} |
@@ -57,8 +57,8 @@ onMounted(() => { | |||
// height: 1536, //实时摄像机查看器的高度 | |||
width: 864, //实时摄像机查看器的宽度 | |||
height: 1536, //实时摄像机查看器的高度 | |||
dest_width: 392, //捕获相机图像的宽 | |||
dest_height: 698, //捕获相机图像的高 | |||
// dest_width: 392, //捕获相机图像的宽 | |||
// dest_height: 698, //捕获相机图像的高 | |||
dest_width: 720, //捕获相机图像的宽 | |||
dest_height: 720, //捕获相机图像的高 | |||
// crop_width: 700, //最终裁剪图像的宽度(以像素为单位),默认为dest_width。 | |||
@@ -13,7 +13,7 @@ | |||
></u-tabs> | |||
<view class="moreTabs"> | |||
<!-- <view class="moreIcon" @click="showPopup = true"> 更多 </view> --> | |||
<view class="moreIcon" @click="toCreated"> 更多 </view> | |||
<view class="moreIcon" @click="showPopup = true"> 更多 </view> | |||
</view> | |||
</view> | |||
<!-- 更多tab弹出层 --> | |||
@@ -54,7 +54,6 @@ | |||
</u-popup> | |||
<!-- 模版选择 --> | |||
<u-list | |||
v-show="false" | |||
class="styleListBox" | |||
@scrolltolower="scrolltolower" | |||
lowerThreshold="100" | |||
@@ -112,7 +111,7 @@ function closePopup() { | |||
} | |||
function openPopup() {} | |||
function toCreated() { | |||
uni.navigateTo({ url: "/pages/camera/index" }); | |||
// uni.navigateTo({ url: "/pages/createing/index" }); | |||
} | |||
//#endregion ----------------------- | |||
@@ -123,7 +122,6 @@ const pageSize = ref(20); | |||
const styleList = ref([]); | |||
// 得到列表 | |||
async function getList() { | |||
return; | |||
try { | |||
uni.showLoading({ | |||
title: "加载中...", | |||
@@ -11,18 +11,35 @@ | |||
<view class="orangeBtn" @click="createing(styleData.id)" | |||
>开始制作写真 | |||
</view> | |||
<view class="orangeBtn" @click="toCamera" style="margin-top: 10rpx" | |||
>摄像头调试 | |||
</view> | |||
<!-- 登录二维码弹出层 --> | |||
<u-overlay | |||
class="overlay" | |||
:show="showQrCode" | |||
@click="showQrCode = false" | |||
opacity="0.9" | |||
> | |||
<view class="content"> | |||
<image :src="qrCode" mode="scaleToFill" /> | |||
<text>打开微信扫码登录小程序</text> | |||
<view class="orangeBtn">取 消</view> | |||
</view> | |||
</u-overlay> | |||
</view> | |||
</template> | |||
<script setup> | |||
//#region 导入 | |||
import { ref } from "vue"; | |||
import { onLoad, onShow } from "@dcloudio/uni-app"; | |||
import { ref, watch } from "vue"; | |||
import { onLoad, onShow, onUnload } from "@dcloudio/uni-app"; | |||
import { | |||
findByIdApi, | |||
findImageApi, | |||
createPhotoApi, | |||
} from "../../api/closeStyle"; | |||
import { getQRCodeApi, getUserApi } from "../../api/createing"; | |||
//#endregion | |||
//#region 初始化 | |||
@@ -52,6 +69,11 @@ async function getInfo() { | |||
//#region 生成写真照片 | |||
async function createing(id) { | |||
if (!uni.getStorageSync("token")) { | |||
showQrCode.value = true; | |||
} | |||
const userAgent = navigator.userAgent; | |||
console.log("User Agent:", userAgent); | |||
return; | |||
try { | |||
uni.showLoading({ | |||
@@ -83,6 +105,101 @@ async function createing(id) { | |||
} | |||
//#endregion --------------------- | |||
//#region 获取二维码 | |||
const qrCode = ref(null); //二维码路径 | |||
const showQrCode = ref(false); | |||
async function getQRCode() { | |||
uni.showLoading({ | |||
title: "加载中", | |||
mask: true, | |||
}); | |||
try { | |||
const data = { | |||
sn: "112233", | |||
type: 1, | |||
}; | |||
const res = await getQRCodeApi(data); | |||
uni.hideLoading(); | |||
if (res.code == 1013) { | |||
uni.showToast({ | |||
title: "操作频繁,请稍等....", | |||
icon: "none", | |||
mask: true, | |||
duration: 3000, | |||
}); | |||
setTimeout(() => { | |||
getQRCode(); | |||
}, 3000); | |||
return; | |||
} | |||
if (res.data && res.data.tmpUserId) { | |||
uni.setStorageSync("UserId", res.data.tmpUserId); | |||
qrCode.value = res.data.qrCodeUrl; | |||
} else if (res.code == 1013) { | |||
uni.showToast({ | |||
title: "请勿重复操作", | |||
icon: "error", | |||
mask: true, | |||
}); | |||
} | |||
} catch (err) { | |||
console.log(err); | |||
uni.hideLoading(); | |||
uni.showToast({ | |||
title: "获取登录失败,请刷新页面重试", | |||
icon: "error", | |||
mask: true, | |||
}); | |||
} | |||
} | |||
// getQRCode(); | |||
//#endregion --------------------- | |||
//#region 获取用户信息 | |||
const timer = ref(null); | |||
async function getUser() { | |||
try { | |||
const res = await getUserApi(uni.getStorageSync("UserId")); | |||
if (res.code == 200) { | |||
clearInterval(timer.value); | |||
timer.value = null; | |||
} | |||
} catch (err) { | |||
console.log(err); | |||
} | |||
} | |||
// 监听二维码弹窗显示隐藏 | |||
watch( | |||
() => showQrCode.value, | |||
() => { | |||
if (showQrCode.value == true) { | |||
getQRCode(); | |||
timer.value = setInterval(() => { | |||
if (uni.getStorageSync("UserId") && qrCode.value) { | |||
getUser(); | |||
} | |||
}, 3000); | |||
} else if (showQrCode.value == false) { | |||
// uni.setStorageSync("UserId", null); | |||
qrCode.value = null; | |||
clearInterval(timer.value); | |||
timer.value = null; | |||
} | |||
} | |||
); | |||
onUnload(() => { | |||
clearInterval(timer.value); | |||
timer.value = null; | |||
// uni.setStorageSync("UserId", null); | |||
}); | |||
//#endregion --------------------- | |||
//#region | |||
function toCamera() { | |||
uni.navigateTo({ url: "/pages/camera/index" }); | |||
} | |||
//#endregion --------------------- | |||
//#region | |||
//#endregion --------------------- | |||
@@ -123,4 +240,30 @@ async function createing(id) { | |||
text-align: center; | |||
} | |||
} | |||
.overlay { | |||
.content { | |||
width: 100%; | |||
height: 100vh; | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
text-align: center; | |||
image { | |||
margin-top: 200rpx; | |||
padding: 30rpx; | |||
width: 500rpx; | |||
height: 500rpx; | |||
border-radius: 30rpx; | |||
background-color: #fff; | |||
} | |||
text { | |||
margin-top: 20rpx; | |||
font-weight: 900; | |||
font-size: 32rpx; | |||
} | |||
.orangeBtn { | |||
margin-top: 100rpx; | |||
} | |||
} | |||
} | |||
</style> |
@@ -3,9 +3,11 @@ | |||
<image src="../../assets/img/homeImg.jpg" mode="scaleToFill" /> | |||
<view class="bottomBox"> | |||
<view class="orangeBtn" @click="toChooseStyle">开始体验</view> | |||
<view class="IMEI" @click="Imei">i</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script setup> | |||
//#region 导入 | |||
import { ref } from "vue"; | |||
@@ -19,7 +21,21 @@ function toChooseStyle() { | |||
//#endregion ---------------------------------- | |||
//#region 授权 | |||
//#region getImei | |||
function Imei() { | |||
getIMEI(); | |||
// cordova.exec( | |||
// function (imei) { | |||
// console.log("IMEI:", imei); | |||
// }, | |||
// function (error) { | |||
// console.error("Failed to get IMEI:", error); | |||
// }, | |||
// "MyPlugin", | |||
// "getIMEI", | |||
// [] | |||
// ); | |||
} | |||
//#endregion ---------------------------------- | |||
@@ -27,6 +43,7 @@ function toChooseStyle() { | |||
//#endregion ---------------------------------- | |||
</script> | |||
<style lang="scss" scoped> | |||
.page { | |||
padding: 0; | |||
@@ -48,6 +65,15 @@ function toChooseStyle() { | |||
width: 100%; | |||
height: 400rpx; | |||
background-color: rgba($color: #000000, $alpha: 0.5); | |||
.IMEI { | |||
position: absolute; | |||
bottom: 20rpx; | |||
right: 20rpx; | |||
width: 40rpx; | |||
height: 40rpx; | |||
line-height: 40rpx; | |||
text-align: center; | |||
} | |||
} | |||
} | |||
</style> |
@@ -76,6 +76,7 @@ view { | |||
.uni-toast { | |||
width: 280rpx; | |||
font-size: 30rpx; | |||
padding: 20rpx 30rpx; | |||
.uni-toast__icon { | |||
width: 50rpx !important; | |||
@@ -1,7 +1,10 @@ | |||
// import { userInfoModules } from "@/store/modules/userInfo"; | |||
// import { store } from '@/store/index'; | |||
const BASE_URL = 'https://test.metavatar.cc/C/'; | |||
// const BASE_URL = 'https://test.metavatar.cc/C/'; | |||
const BASE_URL = 'https://zhixiangtest.malls.iformall.com/C/'; | |||
// const BASE_URL = '192.168.1.105:7600/C/'; | |||
// const userInfoModulesPinia = userInfoModules(store); | |||
// const BASE_URL = 'https://test.metavatar.cc/'; | |||
@@ -20,6 +20,7 @@ export default defineConfig(({ command, mode }) => { | |||
// 反向代理解决跨域 | |||
"/api": { | |||
target: env.VITE_APP_BASE_URL, // 线上接口地址 | |||
// target: "https://zhixiangtest.malls.iformall.com/C", // 线上接口地址 | |||
changeOrigin: true, | |||
rewrite: (path) => path.replace(/^\/api/, ""), | |||
}, | |||