This commit is contained in:
Teng 2025-06-03 17:29:22 +08:00
parent db34d51dd1
commit 0d6ddaaf3d
265 changed files with 4198 additions and 26604 deletions

36
api/loginApi.js Normal file
View File

@ -0,0 +1,36 @@
// src/composables/useWeChatAuth.js
import { ref } from 'vue';
import request from '@/request/index.js';
//滑块获取验证码
export function getHkCode(data){
return request({
url: `/sys/getHkCode`,
method: 'post',
data,
})
}
//发送验证码
export function smsCode(data){
return request({
url: `/sys/smsCode`,
method: 'post',
data,
})
}
//验证码是否正确
export function checkPhoneCode(data){
return request({
url: `/sys/checkPhoneCode`,
method: 'post',
data,
})
}
//不知道干啥的
export function getList(){
return request({
url: `/NuBizAdvisoryInfo/nuBizAdvisoryInfo/list`,
method: 'get',
})
}

View File

@ -6,22 +6,22 @@
<view class="overlay" :style="{width: containerWidth + 'rpx', height: containerHeight + 'rpx'}"> <view class="overlay" :style="{width: containerWidth + 'rpx', height: containerHeight + 'rpx'}">
<view class="hole" :style="{ <view class="hole" :style="{
top: originY + 'rpx', top: originY + 'rpx',
left: originX + 'rpx', left: (originX +50 ) + 'rpx',
width: pieceSize + 'rpx', width: pieceSize + 'rpx',
height: pieceSize + 'rpx', height: pieceSize + 'rpx',
clipPath: clipPath, clipPath: clipPath,
transform: 'translate(-50%, -50%)', transform: 'translate(-50%, -50%)',
backgroundColor: 'rgba(0,0,0,0.3)' backgroundColor: 'rgba(0,0,0,0.6)'
}"></view> }"></view>
<view class="piece" :style="{ <view class="piece" :style="{
top: originY + 'rpx', top: originY + 'rpx',
left: offsetX + 'rpx', left: (offsetX +50 ) + 'rpx',
width: pieceSize + 'rpx', width: pieceSize + 'rpx',
height: pieceSize + 'rpx', height: pieceSize + 'rpx',
backgroundImage: `url(${bgImage})`, backgroundImage: `url(${bgImage})`,
backgroundSize: containerWidth + 'rpx ' + containerHeight + 'rpx', backgroundSize: containerWidth + 'rpx ' + containerHeight + 'rpx',
backgroundPosition: `-${originX-30}rpx -${originY-45}rpx`, backgroundPosition: `-${originX+10}rpx -${originY-20}rpx`,
clipPath: clipPath, clipPath: clipPath,
transform: 'translate(-50%, -50%)' transform: 'translate(-50%, -50%)'
}"></view> }"></view>
@ -29,8 +29,13 @@
</view> </view>
<view class="slider-bar"> <view class="slider-bar">
<view class="slider-bar-font">
向右滑动滑块填充拼图
</view>
<view class="slider-button" ref="btn" @touchstart.prevent="onStart" @mousedown.prevent="onStart" <view class="slider-button" ref="btn" @touchstart.prevent="onStart" @mousedown.prevent="onStart"
:style="{ left: offsetX + 'rpx', maxWidth: (containerWidth - pieceSize) + 'rpx' }"></view> :style="{ left: offsetX + 'rpx', maxWidth: (containerWidth - pieceSize) + 'rpx' }">
<image src="/static/login/right.png" style="width: 50rpx;height: 50rpx;" mode="widthFix" />
</view>
</view> </view>
</view> </view>
</template> </template>
@ -49,6 +54,8 @@
import img2 from '@/static/login/2.png' import img2 from '@/static/login/2.png'
import img3 from '@/static/login/3.png' import img3 from '@/static/login/3.png'
const emit = defineEmits(['success'])
const pieceSizePx = 50; const pieceSizePx = 50;
const pieceSize = pieceSizePx * 2; const pieceSize = pieceSizePx * 2;
const tolerance = 20; const tolerance = 20;
@ -108,6 +115,10 @@
containerHeight.value = data.height * 2; containerHeight.value = data.height * 2;
originX.value = Math.random() * (containerWidth.value - pieceSize * 2) + pieceSize; originX.value = Math.random() * (containerWidth.value - pieceSize * 2) + pieceSize;
// console.log("!!!!!",originX.value)
if (originX.value < 100) {
originX.value = 100;
}
originY.value = containerHeight.value / 2; originY.value = containerHeight.value / 2;
offsetX.value = 0; offsetX.value = 0;
@ -141,9 +152,15 @@
window.removeEventListener('mouseup', onEnd); window.removeEventListener('mouseup', onEnd);
window.removeEventListener('touchmove', onMove); window.removeEventListener('touchmove', onMove);
window.removeEventListener('touchend', onEnd); window.removeEventListener('touchend', onEnd);
if (Math.abs(offsetX.value - originX.value) < tolerance) { if (Math.abs(offsetX.value - originX.value) < tolerance) {
console.log('验证成功'); // console.log('');
uni.showToast({
title: '验证成功',
icon: 'none', //
duration: 2000 //
})
emit('success')
} else { } else {
offsetX.value = 0; offsetX.value = 0;
uni.showToast({ uni.showToast({
@ -170,13 +187,13 @@
</script> </script>
<style scoped> <style scoped lang="scss">
.captcha-container { .captcha-container {
/* margin: 20rpx auto; */ /* margin: 20rpx auto; */
user-select: none; user-select: none;
background-color: #fff; background-color: #fff;
width: 600rpx; width: 600rpx;
height: 800rpx; height: 700rpx;
margin: 0 auto; margin: 0 auto;
z-index: 999; z-index: 999;
border-radius: 30rpx; border-radius: 30rpx;
@ -212,7 +229,7 @@
.piece { .piece {
position: absolute; position: absolute;
z-index: 101; z-index: 101;
border-radius: 5rpx; /* border-radius: 5rpx; */
box-shadow: 0 0 6rpx rgba(0, 0, 0, 0.4); box-shadow: 0 0 6rpx rgba(0, 0, 0, 0.4);
} }
@ -228,23 +245,38 @@
.slider-bar { .slider-bar {
position: relative; position: relative;
height: 160rpx; height: 100rpx;
margin-top: 0rpx; margin-top: 0rpx;
background: #eee; background: rgb(245, 246, 252);
border-radius: 80rpx; /* border-radius: 80rpx; */
width: 600rpx; width: 540rpx;
display: flex;
justify-content: center;
align-items: center;
.slider-bar-font {
// z-index: -1;
color: rgb(169, 169, 171);
font-size: 28rpx;
}
} }
.slider-button { .slider-button {
position: absolute; position: absolute;
top: 20rpx; top: 0rpx;
width: 120rpx; left: 0;
height: 120rpx; width: 100rpx;
height: 100rpx;
background: #fff; background: #fff;
border-radius: 60rpx; /* border-radius: 60rpx; */
box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.2); box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.2);
transition: background 0.3s; transition: background 0.3s;
user-select: none; user-select: none;
border-radius: 10rpx;
border: 3rpx solid rgb(139, 218, 202);
display: flex;
justify-content: center;
align-items: center;
} }
.slider-button.success { .slider-button.success {
@ -256,8 +288,8 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
height: 80rpx; height: 100rpx;
font-size: 30rpx; font-size: 35rpx;
font-weight: 700; font-weight: 700;
} }
</style> </style>

View File

@ -3,7 +3,7 @@ import { ref } from 'vue';
import request from '@/request/index.js'; import request from '@/request/index.js';
const APPID = 'wx8fc3e4305d2fbf0b'; const APPID = 'wx8fc3e4305d2fbf0b';
const REDIRECT_URI = encodeURIComponent('https://www.focusnu.com/wechat/thd/#/pages/index/callback'); const REDIRECT_URI = encodeURIComponent('https://www.focusnu.com/wechat/thd/#/pages/login/callback');
export function useWeChatAuth() { export function useWeChatAuth() {
const code = ref(''); const code = ref('');

View File

@ -15,6 +15,7 @@
</head> </head>
<body> <body>
<div id="app"><!--app-html--></div> <div id="app"><!--app-html--></div>
<script src="https://unpkg.com/html5-qrcode"></script>
<script type="module" src="/main.js"></script> <script type="module" src="/main.js"></script>
</body> </body>
</html> </html>

View File

@ -37,9 +37,27 @@
} }
}, },
{ {
"path": "pages/map/index", "path": "pages/addoldman/hukou",
"style": { "style": {
"navigationBarTitleText": "地图" "navigationBarTitleText": "长者信息采集"
}
},
{
"path": "pages/addoldman/yibao",
"style": {
"navigationBarTitleText": "长者信息采集"
}
},
{
"path": "pages/addoldman/IDcard",
"style": {
"navigationBarTitleText": "长者信息采集"
}
},
{
"path": "pages/selectunit/map",
"style": {
"navigationBarTitleText": "选择护理单元"
} }
}, },
{ {

246
pages/addoldman/IDcard.vue Normal file
View File

@ -0,0 +1,246 @@
<template>
<div class="container">
<view class="white-content">
<view class="content-title">
<view class="content-weight">身份证上传</view>
<image class="content-img" src="@/static/index/bian.png" />
</view>
<view class="white-photo" @click="getMessage">
<view class="photo-left">
<view class="photo-weight">人像面</view>
<view class="photo-font">请上传身份证人像面</view>
</view>
<image class="photo" src="@/static/index/IDcard.png" />
</view>
<view class="white-photo" style="margin-top: 30rpx;" @click="getMessage">
<view class="photo-left">
<view class="photo-weight">国徽面</view>
<view class="photo-font">请上传身份证国徽面</view>
</view>
<image class="photo" src="@/static/index/backIDcard.png" />
</view>
<view class="white-message">
<view class="message-title">
<view class="shu"></view>
<view class="message-weight">
确认户口本本人页信息
</view>
</view>
<view style="margin-bottom: 20rpx;">
<view v-for="(item,index) in nameArray" :key="index" class="one">
<view class="one-left">{{item}}</view>
<view class="one-right">自动获得</view>
</view>
</view>
</view>
</view>
<view class="gray-font">
<view class="">注意事项:</view>
<view class="">同一个身份证号只能认证一个账号国徽而与正面信息应为同一身份证的信息目在有效期内,所有上传照片需清晰且未遮挡请勿进行美化和修改,所有上传信息均会被妥善保管,不会用于其他商业用途或传输给第三方</view>
</view>
<view class="finish-button" @click="next">
下一步
</view>
</div>
</template>
<script setup>
import {
ref
} from 'vue'
const nameArray = ["姓名", "性别", "身份证号码","民族","出生日期","住址","签发机关","有效期限"]
//
const tempImagePath = ref('')
//
function getMessage() {
// 使 UniApp API
uni.chooseImage({
count: 1,
sourceType: ['camera'],
success: chooseRes => {
tempImagePath.value = chooseRes.tempFilePaths[0]
//
uploadImage(tempImagePath.value)
},
fail: err => {
console.error('拍照失败:', err)
}
})
}
//
function uploadImage(filePath) {
uni.uploadFile({
url: `${uni.getStorageSync('serverUrl')}/api/ocr/idCard`, // POST
filePath,
name: 'file', //
header: {
'X-Access-Token': uni.getStorageSync('token') || '',
},
formData: {
//
// userId: '12345'
},
success: uploadRes => {
console.log("????",JSON.parse(JSON.parse(uploadRes.data).result).data)
},
fail: err => {
uni.showToast({
title: '上传出错',
icon: 'error'
})
}
})
}
const next = () =>{
uni.navigateTo({
url: "/pages/addoldman/yibao"
});
}
</script>
<style lang="scss" scoped>
.container {
display: flex;
flex-direction: column;
min-height: 100vh;
width: 100%;
background-color: rgb(239, 241, 252);
position: relative;
box-shadow: 2rpx 2rpx 4rpx rgba(0, 0, 0, 0.1);
.white-content {
width: 90%;
margin-left: 5%;
margin-top: 30rpx;
// height: 1200rpx;
border-radius: 35rpx;
background-color: rgb(245, 251, 254);
.content-title {
display: flex;
// align-items: center;
height: 100rpx;
position: relative;
.content-weight {
// font-size: 35rpx;
font-weight: 600;
margin-left: 70rpx;
margin-top: 20rpx;
}
.content-img {
position: absolute;
right: 0;
top: 0;
width: 400rpx;
height: 100%;
}
}
}
.white-photo {
width: 90%;
margin-left: 5%;
// margin-top: 30rpx;
height: 300rpx;
border-radius: 35rpx;
background-color: #fff;
box-shadow: 4rpx 4rpx 8rpx rgba(0, 0, 0, 0.1);
justify-content: space-around;
align-items: center;
display: flex;
.photo {
width: 300rpx;
height: 200rpx;
}
}
.white-message{
width: 90%;
margin-left: 5%;
margin-top: 30rpx;
margin-bottom: 30rpx;
// height: 800rpx;
border-radius: 35rpx;
background-color: #fff;
box-shadow: 4rpx 4rpx 8rpx rgba(0, 0, 0, 0.1);
justify-content: space-around;
// align-items: center;
display: flex;
flex-direction: column;
.message-title{
width: 100%;
height: 100rpx;
align-items: center;
display: flex;
.shu{
width: 10rpx;
height: 30rpx;
background-color: #0097FF;
border-radius: 10rpx;
margin: 0 20rpx 0 30rpx;
}
.message-weight{
font-size: 30rpx;
// font-weight: 600;
}
}
.one{
width: 90%;
margin-left: 5%;
border-bottom: 1rpx solid #d7d7d7;
height: 90rpx;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10rpx;
.one-left{
margin-left: 10rpx;
}
.one-right{
margin-right: 10rpx;
color: #999999 ;
}
}
}
}
.photo-left {
.photo-weight {
font-size: 26rpx;
font-weight: 600;
}
.photo-font {
font-size: 23rpx;
margin-top: 10rpx;
}
}
.gray-font{
padding: 30rpx 60rpx;
color: #999999;
}
.finish-button{
display: flex;
justify-content: center;
align-items: center;
width: 70%;
height: 100rpx;
margin: 0rpx auto;
margin-bottom: 80rpx;
color: #fff;
background: linear-gradient(to right,#00C9FF,#0076FF );
border-radius: 50rpx;
font-size: 35rpx;
}
</style>

239
pages/addoldman/hukou.vue Normal file
View File

@ -0,0 +1,239 @@
<template>
<div class="container">
<view class="white-content">
<view class="content-title">
<view class="content-weight">上传户口本本人页</view>
<image class="content-img" src="@/static/index/bian.png" />
</view>
<view class="white-photo" @click="getMessage">
<view class="photo-left">
<view class="photo-weight">户口本本人页</view>
<view class="photo-font">请上传户口本本人页</view>
</view>
<image class="photo" src="@/static/index/photoID.png" />
</view>
<view class="white-message">
<view class="message-title">
<view class="shu"></view>
<view class="message-weight">
确认户口本本人页信息
</view>
</view>
<view style="margin-bottom: 20rpx;">
<view v-for="(item,index) in nameArray" :key="index" class="one">
<view class="one-left">{{item}}</view>
<view class="one-right">自动获得</view>
</view>
</view>
</view>
</view>
<view class="gray-font">
<view class="">注意事项:</view>
<view class="">1.所有上传信息均会被妥善保管不用于其他商业用途或传输给第三方</view>
</view>
<view class="finish-button" @click="goback">
确认提交
</view>
</div>
</template>
<script setup>
import {
ref
} from 'vue'
const nameArray = ["姓名", "户主或与户主关系", "曾用名", "性别", "出生地", "民族", "籍贯", "出生日期", "本市(县)其他住址", "宗教信仰", "公民身份证件编号", "身高",
"血型", "文化程度", "婚姻状况","兵役状况","服务住所","职业","何时由何地迁来本市(县)","何时由何地迁来本址"
]
//
const tempImagePath = ref('')
//
function getMessage() {
// 使 UniApp API
uni.chooseImage({
count: 1,
sourceType: ['camera'],
success: chooseRes => {
tempImagePath.value = chooseRes.tempFilePaths[0]
//
uploadImage(tempImagePath.value)
},
fail: err => {
console.error('拍照失败:', err)
}
})
}
//
function uploadImage(filePath) {
uni.uploadFile({
url: `${uni.getStorageSync('serverUrl')}/api/ocr/idCard`, // POST
filePath,
name: 'file', //
header: {
'X-Access-Token': uni.getStorageSync('token') || '',
},
formData: {
//
// userId: '12345'
},
success: uploadRes => {
console.log("????",JSON.parse(JSON.parse(uploadRes.data).result).data)
},
fail: err => {
uni.showToast({
title: '上传出错',
icon: 'error'
})
}
})
}
const goback = () =>{
uni.redirectTo({
url: `/pages/index/index`
});
}
</script>
<style lang="scss" scoped>
.container {
display: flex;
flex-direction: column;
min-height: 100vh;
width: 100%;
background-color: rgb(239, 241, 252);
position: relative;
box-shadow: 2rpx 2rpx 4rpx rgba(0, 0, 0, 0.1);
.white-content {
width: 90%;
margin-left: 5%;
margin-top: 30rpx;
// height: 1200rpx;
border-radius: 35rpx;
background-color: rgb(245, 251, 254);
.content-title {
display: flex;
// align-items: center;
height: 100rpx;
position: relative;
.content-weight {
// font-size: 35rpx;
font-weight: 600;
margin-left: 20rpx;
margin-top: 20rpx;
}
.content-img {
position: absolute;
right: 0;
top: 0;
width: 400rpx;
height: 100%;
}
}
}
.white-photo {
width: 90%;
margin-left: 5%;
// margin-top: 30rpx;
height: 300rpx;
border-radius: 35rpx;
background-color: #fff;
box-shadow: 4rpx 4rpx 8rpx rgba(0, 0, 0, 0.1);
justify-content: space-around;
align-items: center;
display: flex;
.photo {
width: 300rpx;
height: 200rpx;
}
}
.white-message{
width: 90%;
margin-left: 5%;
margin-top: 30rpx;
margin-bottom: 30rpx;
// height: 800rpx;
border-radius: 35rpx;
background-color: #fff;
box-shadow: 4rpx 4rpx 8rpx rgba(0, 0, 0, 0.1);
justify-content: space-around;
// align-items: center;
display: flex;
flex-direction: column;
.message-title{
width: 100%;
height: 100rpx;
align-items: center;
display: flex;
.shu{
width: 10rpx;
height: 30rpx;
background-color: #0097FF;
border-radius: 10rpx;
margin: 0 20rpx 0 30rpx;
}
.message-weight{
font-size: 30rpx;
// font-weight: 600;
}
}
.one{
width: 90%;
margin-left: 5%;
border-bottom: 1rpx solid #d7d7d7;
height: 90rpx;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10rpx;
.one-left{
margin-left: 10rpx;
}
.one-right{
margin-right: 10rpx;
color: #999999 ;
}
}
}
}
.photo-left {
.photo-weight {
font-size: 26rpx;
font-weight: 600;
}
.photo-font {
font-size: 23rpx;
margin-top: 10rpx;
}
}
.gray-font{
padding: 30rpx 60rpx;
color: #999999;
}
.finish-button{
display: flex;
justify-content: center;
align-items: center;
width: 70%;
height: 100rpx;
margin: 0rpx auto;
margin-bottom: 80rpx;
color: #fff;
background: linear-gradient(to right,#00C9FF,#0076FF );
border-radius: 50rpx;
font-size: 35rpx;
}
</style>

259
pages/addoldman/yibao.vue Normal file
View File

@ -0,0 +1,259 @@
<template>
<div class="container">
<view class="white-content">
<view class="content-title">
<view class="content-weight">医保卡上传</view>
<image class="content-img" src="@/static/index/bian.png" />
</view>
<view class="white-photo" @click="getMessage">
<view class="photo-left">
<view class="photo-weight">医保卡正面</view>
<view class="photo-font">请上传身份证医保卡正面</view>
</view>
<image class="photo" src="@/static/index/yibaocard.png" />
</view>
<view class="white-photo" style="margin-top: 30rpx;" @click="getMessage">
<view class="photo-left">
<view class="photo-weight">医保卡背面</view>
<view class="photo-font">请上传身份证医保卡背面</view>
</view>
<image class="photo" src="@/static/index/backyibaocard.png" />
</view>
<view class="white-message">
<view class="message-title">
<view class="shu"></view>
<view class="message-weight">
确认户口本本人页信息
</view>
</view>
<view style="margin-bottom: 20rpx;">
<view v-for="(item,index) in nameArray" :key="index" class="one">
<view class="one-left">{{item}}</view>
<view class="one-right">自动获得</view>
</view>
</view>
</view>
</view>
<view class="gray-font">
<view class="">注意事项:</view>
<view class="">
1.同一个医保卡号只能认证一个账号;
</view>
<view class="">2.正反面医保卡信息应为同一医保卡信息;</view>
<view class="">3.所有上传照片需清晰且未遮挡请勿进行美化和修改;</view>
<view class="">4.所有上传信息均会被妥善保管不会用于其他商业用途或传输给第三方;</view>
</view>
<view class="finish-button" @click="next">
下一步
</view>
</div>
</template>
<script setup>
import {
ref
} from 'vue'
const nameArray = ["姓名", "社会保障卡号码", "社会保障卡卡号", "发卡日期"]
//
const tempImagePath = ref('')
//
function getMessage() {
// 使 UniApp API
uni.chooseImage({
count: 1,
sourceType: ['camera'],
success: chooseRes => {
tempImagePath.value = chooseRes.tempFilePaths[0]
//
uploadImage(tempImagePath.value)
},
fail: err => {
console.error('拍照失败:', err)
}
})
}
//
function uploadImage(filePath) {
uni.uploadFile({
url: `${uni.getStorageSync('serverUrl')}/api/ocr/idCard`, // POST
filePath,
name: 'file', //
header: {
'X-Access-Token': uni.getStorageSync('token') || '',
},
formData: {
//
// userId: '12345'
},
success: uploadRes => {
console.log("????", JSON.parse(JSON.parse(uploadRes.data).result).data)
},
fail: err => {
uni.showToast({
title: '上传出错',
icon: 'error'
})
}
})
}
const next = () => {
uni.navigateTo({
url: "/pages/addoldman/hukou"
});
}
</script>
<style lang="scss" scoped>
.container {
display: flex;
flex-direction: column;
min-height: 100vh;
width: 100%;
background-color: rgb(239, 241, 252);
position: relative;
box-shadow: 2rpx 2rpx 4rpx rgba(0, 0, 0, 0.1);
.white-content {
width: 90%;
margin-left: 5%;
margin-top: 30rpx;
// height: 1200rpx;
border-radius: 35rpx;
background-color: rgb(245, 251, 254);
.content-title {
display: flex;
// align-items: center;
height: 100rpx;
position: relative;
.content-weight {
// font-size: 35rpx;
font-weight: 600;
margin-left: 70rpx;
margin-top: 20rpx;
}
.content-img {
position: absolute;
right: 0;
top: 0;
width: 400rpx;
height: 100%;
}
}
}
.white-photo {
width: 90%;
margin-left: 5%;
// margin-top: 30rpx;
height: 300rpx;
border-radius: 35rpx;
background-color: #fff;
box-shadow: 4rpx 4rpx 8rpx rgba(0, 0, 0, 0.1);
justify-content: space-around;
align-items: center;
display: flex;
.photo {
width: 300rpx;
height: 200rpx;
}
}
.white-message {
width: 90%;
margin-left: 5%;
margin-top: 30rpx;
margin-bottom: 30rpx;
// height: 800rpx;
border-radius: 35rpx;
background-color: #fff;
box-shadow: 4rpx 4rpx 8rpx rgba(0, 0, 0, 0.1);
justify-content: space-around;
// align-items: center;
display: flex;
flex-direction: column;
.message-title {
width: 100%;
height: 100rpx;
align-items: center;
display: flex;
.shu {
width: 10rpx;
height: 30rpx;
background-color: #0097FF;
border-radius: 10rpx;
margin: 0 20rpx 0 30rpx;
}
.message-weight {
font-size: 30rpx;
// font-weight: 600;
}
}
.one {
width: 90%;
margin-left: 5%;
border-bottom: 1rpx solid #d7d7d7;
height: 90rpx;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10rpx;
.one-left {
margin-left: 10rpx;
}
.one-right {
margin-right: 10rpx;
color: #999999;
}
}
}
}
.photo-left {
.photo-weight {
font-size: 26rpx;
font-weight: 600;
}
.photo-font {
font-size: 23rpx;
margin-top: 10rpx;
}
}
.gray-font {
padding: 30rpx 60rpx;
color: #999999;
}
.finish-button {
display: flex;
justify-content: center;
align-items: center;
width: 70%;
height: 100rpx;
margin: 0rpx auto;
margin-bottom: 80rpx;
color: #fff;
background: linear-gradient(to right, #00C9FF, #0076FF);
border-radius: 50rpx;
font-size: 35rpx;
}
</style>

View File

@ -1,14 +1,177 @@
<template> <template>
<view class="login-container"> <view class="login-container">
<!-- 扫码遮罩层 -->
<view v-show="scanning" class="scan-mask">
<!-- 半透明背景自动铺满 -->
<view class="mask-bg" @click="cancelScan"></view>
<!-- 扫描框容器绝对居中 -->
<view class="mask-center" @click.stop >
<div id="reader" class="reader"></div>
<!-- <view class="cancel-btn" @click="scanQrCode">取消扫描</view> -->
</view>
</view>
<view class="index-up">
<image class="index-up-img" src="@/static/index/indexgif.gif" mode="widthFix" lazy-load="false" />
</view>
<view class="index-ball-father">
<view class="white-ball">
<image class="small-img" @click="gotoPay" src="@/static/index/button/money.png" mode="widthFix"
lazy-load="false" />
</view>
<view class="white-ball">
<image class="small-img" src="@/static/index/button/scan.png" mode="widthFix" lazy-load="false" />
</view>
<view class="white-ball">
<image class="small-img" src="@/static/index/button/watch.png" mode="widthFix" lazy-load="false" />
</view>
<view class="super-white-ball" @click="jumpTo">
<image class="small-img" src="@/static/index/button/more.png" mode="widthFix" lazy-load="false" />
</view>
</view>
<view class="index-smallPhoto">
<view class="photo-box" @click="preview()">
<image class="photo-box-img" src="@/static/index/kuai.png" mode="widthFix" lazy-load="false" />
<image class="photo-box-img" :src="tu" mode="widthFix" lazy-load="false" />
</view>
</view>
<view class="white-scan" v-show="scaning">
<view class="scan-title">
<image class="scan-img" src="@/static/index/badscan.png" />
<view class="scan-font">
<view class="weight">
扫描机构二维码
</view>
<view class="noral">
持续搜索中...
</view>
</view>
<view class="scan-back" @click="scaning = false;">
返回
</view>
<!-- <image class="scan-back" src="@/static/index/index/back.png" @click="scaning = false;" /> -->
</view>
<view v-if="qrResult" class="result">
扫描结果{{ qrResult }}
</view>
<view class="other-scan">
<view class="scan-circle" @click="scanQrCode">
<view class="small-circle"></view>
<image class="scan-img" src="@/static/index/goodscan.png" />
</view>
<view class="scan-text">
扫描二维码
</view>
</view>
</view>
<view class="white-content-father-time" v-show="!scaning">
<view class="white-content">
<view class="time-father">
<view class="font-weight">
{{ hours }}:{{ minutes }}:{{ seconds }}
</view>
<view class="font-small">
{{ month }}{{ day }} {{ weekday }}
</view>
</view>
<view class="white-shu"></view>
<view class="wendu-content">
<image class="wendu-img" src="@/static/index/index/wendu.png" lazy-load="false" />
<view class="wendu-font">
<view>温度</view>
<view style="font-weight: 600;">16</view>
</view>
<image class="wendu-img" src="@/static/index/index/shidu.png" lazy-load="false" />
<view class="wendu-font">
<view>湿度</view>
<view style="font-weight: 600;">49%</view>
</view>
</view>
</view>
</view>
<view class="white-content-father" v-show="!scaning">
<swiper style="width: 100%;" :duration="500" :style="{height: `600rpx`}" :current="which"
@change="swiperchange">
<swiper-item style="width: 100%;">
<view class="white-content">
<image class="white-content-img" src="@/static/index/index/nobang.png" lazy-load="false" />
<view class="white-font">
请绑定护理单元~
</view>
<view class="botton-button">
<view class="botton-button-father">
<view class="botton-button-bgc">
<image class="botton-button-img" src="@/static/index/index/cloudbang.png" />
</view>
<view class="botton-button-font">
云绑定
</view>
</view>
<view class="botton-button-father">
<view class="botton-button-bgc" @click="scaning = true">
<image class="botton-button-img" src="@/static/index/index/scan.png" />
</view>
<view class="botton-button-font" @click="scaning = true">
扫码绑定
</view>
</view>
</view>
</view>
</swiper-item>
<swiper-item>
<view class="white-content">
<image style="top: 10rpx;width: 600rpx;height: 400rpx;" class="white-content-img"
src="@/static/index/badold.png" />
<view style="margin-top: 350rpx;" class="white-font">
请添加长者信息
</view>
<view class="bad-button">
<view class="blue-button" @click="addoldman">
+添加长者
</view>
</view>
</view>
</swiper-item>
<swiper-item>
<view class="zhiling-box">
<view class="">
单元清洁服务指令已执行完毕点击查看
</view>
<image class="zhiling-img" src="@/static/index/index/back.png" />
</view>
<view class="white-box-father">
<view v-for="(item,index) in buttonArray" :key="index" class="white-box">
<image class="box-img" :src="`/static/index/jumpbutton/${index}.png`" />
<view class="box-font">{{item}}</view>
</view>
<view class="white-box">
<view style="font-weight: 600;font-size: 80rpx;">+</view>
</view>
</view>
</swiper-item>
</swiper>
</view>
<!-- 底部的栏为啥这样写是因为要做左右拉动 --> <!-- 底部的栏为啥这样写是因为要做左右拉动 -->
<view class="botton-view"> <view class="botton-view">
<view class="jia-box">
<view class="gray-box" v-show="whichMenu===2"></view>
<view class="jia">
+
</view>
</view>
<view v-for="(item,index) in itemArray" class="array-father"> <view v-for="(item,index) in itemArray" class="array-father">
<view :class="itemTarget===index ? `bottom-button-target` : `bottom-button`" @click="itemTarget=index"> <view :class="itemTarget===index ? `bottom-button-target` : `bottom-button`" @click="itemTarget=index">
<view class=""> <image class="botton-img"
:src="`/static/index/itemsbutton/${index}${itemTarget===index?1:0}.png`" />
<view class="bottom-text" :style="!index ?{fontWeight:600}:{}">
{{item}} {{item}}
</view> </view>
</view> </view>
<view v-show="itemTarget===index" class="blue-heng"></view> <!-- <view v-show="itemTarget===index" class="blue-heng"></view> -->
</view> </view>
</view> </view>
</view> </view>
@ -17,10 +180,139 @@
<script setup> <script setup>
import { import {
reactive, reactive,
ref ref,
onMounted,
onUnmounted
} from 'vue'; } from 'vue';
import tu from '@/static/index/tu.png'
import request from '@/request/index.js' // uni.request
const itemArray = ["NU", "动态", "我的"]; const itemArray = ["NU", "动态", "我的"];
const buttonArray = ref(["护理流程", "服务指令", "实时监控", "客户信息", "缴费账单", "充值缴费", "退住管理"])
const itemTarget = ref(0); const itemTarget = ref(0);
const which = ref(0);
const scaning = ref(false)
function preview() {
uni.previewImage({
urls: [tu], //
// current: imgList.value[currentIndex], //
})
}
const jumpTo = () => {
uni.navigateTo({
url: "/pages/index/indexone"
});
}
const month = ref('01')
const day = ref('01')
const weekday = ref('周一')
const weekMap = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
const hours = ref('00')
const minutes = ref('00')
const seconds = ref('00')
let timer = null
function updateTime() {
const now = new Date()
// +1
month.value = String(now.getMonth() + 1).padStart(2, '0')
day.value = String(now.getDate()).padStart(2, '0')
weekday.value = weekMap[now.getDay()]
// 0
hours.value = String(now.getHours()).padStart(2, '0')
minutes.value = String(now.getMinutes()).padStart(2, '0')
seconds.value = String(now.getSeconds()).padStart(2, '0')
}
const whichMenu = ref(0);
const swiperchange = (res) => {
whichMenu.value = res.detail.current
// console.log("res",res.detail.current)
}
const addoldman = () => {
uni.navigateTo({
url: "/pages/addoldman/IDcard"
});
}
const gotoPay = () => {
uni.navigateTo({
url: "/pages/pay/index"
});
}
const qrResult = ref('')
const scanning = ref(false)
let html5QrCode = null
async function cancelScan() {
if (html5QrCode && scanning.value) {
try {
await html5QrCode.stop()
} catch (e) {
console.warn('停止扫码出错', e)
}
}
scanning.value = false
}
function scanQrCode() {
//
if (html5QrCode && scanning.value) {
html5QrCode.stop().catch(() => {}).finally(() => {
scanning.value = false
})
return
}
//
scanning.value = true
qrResult.value = ''
// ID
html5QrCode = new Html5Qrcode("reader")
// 10 250×250
const config = {
fps: 10,
qrbox: {
width: 350,
height: 350
}
}
html5QrCode.start({
facingMode: "environment"
}, //
config,
decodedText => {
//
qrResult.value = decodedText
//
html5QrCode.stop().catch(console.warn).finally(() => {
scanning.value = false
})
uni.navigateTo({
url: "/pages/selectunit/map"
});
},
errorMessage => {
//
}
).catch(err => {
console.error("扫码启动失败", err)
scanning.value = false
})
}
onMounted(async () => {
updateTime() //
timer = setInterval(updateTime, 1000) //
})
onUnmounted(() => {
clearInterval(timer) //
html5QrCode && html5QrCode.stop().catch(console.warn)
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -31,23 +323,31 @@
width: 100%; width: 100%;
background-color: rgb(239, 241, 252); background-color: rgb(239, 241, 252);
position: relative; position: relative;
} }
.array-father { .array-father {
width: 33%; width: 33%;
position: relative; position: relative;
} }
.botton-view { .botton-view {
position: fixed; position: fixed;
bottom: 0; bottom: 0;
left: 0; left: 0;
height: 200rpx; // margin-top: 50rpx;
// margin: 0 auto;
// margin-top: 60rpx;
height: 120rpx;
width: 100%; width: 100%;
// border-radius: 60rpx;
background-color: #fff;
// background-color: greenyellow; // background-color: greenyellow;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
font-weight: 500; font-weight: 500;
z-index: 999;
.bottom-button { .bottom-button {
width: 100%; width: 100%;
@ -55,6 +355,7 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
flex-direction: column;
} }
.bottom-button-target { .bottom-button-target {
@ -64,6 +365,7 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
color: rgb(42, 133, 235); color: rgb(42, 133, 235);
flex-direction: column;
} }
.blue-heng { .blue-heng {
@ -77,4 +379,479 @@
transform: translateX(-50%); transform: translateX(-50%);
} }
} }
.index-up {
position: absolute;
top: -70rpx;
left: 0;
width: 100%;
.index-up-img {
width: 100%;
height: 20rpx;
}
}
.index-ball-father {
width: 100%;
display: flex;
justify-content: flex-end;
// margin-top: 35rpx;
position: fixed;
top: 35rpx;
left: 0;
z-index: 999;
.white-ball {
width: 60rpx;
height: 60rpx;
background-color: #fff;
border-radius: 50%;
margin-right: 20rpx;
box-shadow: 2rpx 2rpx 4rpx rgba(0, 0, 0, 0.1);
display: flex;
justify-content: center;
align-items: center;
}
.super-white-ball {
width: 70rpx;
height: 60rpx;
background-color: #fff;
border-radius: 50%;
margin-right: 40rpx;
box-shadow: 2rpx 2rpx 4rpx rgba(0, 0, 0, 0.1);
display: flex;
justify-content: center;
align-items: center;
}
.small-img {
width: 25rpx;
height: 25rpx;
}
}
.index-smallPhoto {
width: 100%;
display: flex;
justify-content: flex-end;
margin-top: 480rpx;
margin-bottom: 50rpx;
.photo-box {
margin-right: 40rpx;
height: 180rpx;
width: 250rpx;
// background-color: #fff;
z-index: 2;
position: relative;
.photo-box-img {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
}
}
.white-content-father {
width: 100%;
display: flex;
justify-content: center;
margin-top: 30rpx;
margin-bottom: 200rpx;
.white-content {
height: 500rpx;
width: 92%;
margin-left: 4%;
background-color: #fff;
box-shadow: 2rpx 2rpx 5rpx rgba(0, 0, 0, 0.1);
border-radius: 30rpx;
z-index: 2;
display: flex;
// justify-content: space-evenly;
align-items: center;
flex-direction: column;
position: relative;
.white-content-img {
position: absolute;
top: -40rpx;
left: 50%;
transform: translateX(-50%);
width: 80%;
height: 370rpx;
// margin: 0 auto;
}
.white-font {
margin-top: 240rpx;
font-size: 27rpx;
color: #222222;
}
}
.botton-button {
width: 100%;
height: 280rpx;
display: flex;
justify-content: space-around;
.botton-button-father {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
.botton-button-bgc {
width: 100rpx;
height: 100rpx;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
background-color: #D8DEEA;
.botton-button-img {
width: 35rpx;
height: 35rpx;
}
}
.botton-button-font {
margin-top: 10rpx;
font-size: 30rpx;
}
}
}
}
.botton-img {
width: 36rpx;
height: 36rpx;
margin-bottom: 5rpx;
}
.bottom-text {
font-size: 22rpx;
}
.jia-box {
position: absolute;
top: -40rpx;
left: 50%;
transform: translateX(-50%);
display: flex;
}
.jia {
width: 30rpx;
height: 30rpx;
border-radius: 50%;
background-color: rgb(1, 168, 255);
color: #fff;
display: flex;
justify-content: center;
align-items: center;
font-size: 30rpx;
}
.gray-box {
border-radius: 20rpx;
height: 30rpx;
width: 50rpx;
margin-right: 15rpx;
background-color: #A4A8BD;
}
.white-content-father-time {
width: 100%;
display: flex;
justify-content: center;
.white-content {
height: 170rpx;
width: 92%;
background-color: #fff;
background-image:
linear-gradient(rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.5)),
url("@/static/index/bluebgc.png");
background-repeat: no-repeat;
background-position: center top;
/* 2. 水平方向拉满容器,垂直方向保持原始比例 */
background-size: 100% auto;
box-shadow: 2rpx 2rpx 5rpx rgba(0, 0, 0, 0.1);
border-radius: 35rpx;
z-index: 2;
display: flex;
align-items: center;
border: 2rpx solid #fff;
.time-father {
margin-left: 45rpx;
.font-weight {
font-weight: 600;
font-size: 40rpx;
margin-bottom: 7rpx;
}
.font-small {
color: #7C788D;
}
}
}
.white-shu {
height: 100%;
width: 2rpx;
background-color: #fff;
margin: 0 20rpx;
}
}
.wendu-content {
display: flex;
align-items: center;
.wendu-img {
width: 50rpx;
height: 50rpx;
margin: 0 20rpx 0 60rpx;
}
.wendu-font {
font-size: 25rpx;
}
}
.bad-button {
width: 100%;
margin-top: 40rpx;
display: flex;
justify-content: flex-end;
.blue-button {
background: linear-gradient(to right, #00C9FF, #0076FF);
color: #fff;
font-size: 25rpx;
padding: 10rpx 20rpx;
border-radius: 35rpx;
margin-right: 40rpx;
}
}
.zhiling-box {
display: flex;
justify-content: space-around;
align-items: center;
width: 92%;
margin-left: 3%;
height: 100rpx;
background-color: #fff;
box-shadow: 2rpx 2rpx 5rpx rgba(0, 0, 0, 0.1);
// margin-top: 20rpx;
border-radius: 35rpx;
.zhiling-img {
width: 25rpx;
height: 25rpx;
}
}
.white-box-father {
display: flex;
width: 100%;
flex-wrap: wrap;
.white-box {
margin-top: 20rpx;
width: 20%;
margin-left: 4%;
height: 190rpx;
background-color: #fff;
border-radius: 35rpx;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
box-shadow: 2rpx 2rpx 5rpx rgba(0, 0, 0, 0.1);
.box-img {
width: 55rpx;
height: 55rpx;
margin-bottom: 15rpx;
}
.box-font {
font-size: 25rpx;
}
}
}
.white-scan {
background-color: #fff;
border-radius: 35rpx;
display: flex;
flex-direction: column;
box-shadow: 2rpx 2rpx 5rpx rgba(0, 0, 0, 0.1);
width: 92%;
margin-left: 4%;
height: 700rpx;
z-index: 2;
margin-bottom: 300rpx;
.scan-title {
width: 100%;
height: 180rpx;
display: flex;
position: relative;
align-items: center;
}
.scan-img {
margin-left: 65rpx;
width: 65rpx;
height: 65rpx;
}
.scan-font {
margin-left: 30rpx;
.weight {
font-weight: 500;
}
.noral {
font-size: 25rpx;
color: #999999;
}
}
}
.other-scan {
width: 100%;
height: 520rpx;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
.scan-circle {
width: 300rpx;
height: 300rpx;
border-radius: 50%;
background-color: #fbfbfb;
display: flex;
align-items: center;
position: relative;
// animation: fadeInOut 2s infinite;
.scan-img {
width: 30%;
height: 30%;
margin: 0 auto;
}
.small-circle {
position: absolute;
top: 50%;
left: 50%;
transform-origin: center center;
/* 从中心缩放,否则宽高从左上角开始 */
transform: translate(-50%, -50%);
animation: shrinkExpand 1s infinite;
border-radius: 50%;
background-color: #f5f5f5;
}
}
.scan-text {
margin-top: 30rpx;
}
}
.scan-back {
// width: 40rpx;
// height: 30rpx;
position: absolute;
right: 60rpx;
top: auto;
color: #999999;
font-size: 32rpx;
}
@keyframes shrinkExpand {
0%,
100% {
width: 100%;
height: 100%;
}
50% {
width: 0%;
height: 0%;
}
}
/* 扫码遮罩层 */
.scan-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 1000;
}
/* 半透明背景 */
.mask-bg {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.6);
}
/* 中心容器 */
.mask-center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: flex;
flex-direction: column;
align-items: center;
}
/* 扫码区域 */
.reader {
width: 600rpx;
height: 600rpx;
background: #000;
/* 可以用透明html5-qrcode 会覆盖视频流 */
// border: 4rpx solid #fff;
border-radius: 16rpx;
box-sizing: border-box;
overflow: hidden;
}
.result{
margin: 0 auto;
}
</style> </style>

View File

@ -1,6 +1,21 @@
<template> <template>
<view class="callback-container"> <view class="login-container">
回调成功{{ceshi.name}}{{ceshi.openid}} 页面跳转中请稍后...
<!-- 底部的栏为啥这样写是因为要做左右拉动 -->
<!-- <view class="botton-view">
<view v-for="(item,index) in itemArray" class="array-father">
<view :class="itemTarget===index ? `bottom-button-target` : `bottom-button`" @click="itemTarget=index">
<view class="">
{{item}}
</view>
</view>
<view v-show="itemTarget===index" class="blue-heng"></view>
</view>
</view> -->
</view>
<!-- <view class="callback-container">
回调成功{{ceshi.name}}{{ceshi.openid}} -->
<!-- {{look}} --> <!-- {{look}} -->
<!-- <text v-if="!userInfo">授权中...</text> <!-- <text v-if="!userInfo">授权中...</text>
<view v-else> <view v-else>
@ -8,7 +23,7 @@
<text v-if="userInfo.nickname">昵称: {{ userInfo.nickname }}</text> <text v-if="userInfo.nickname">昵称: {{ userInfo.nickname }}</text>
<image v-if="userInfo.headimgurl" :src="userInfo.headimgurl" class="avatar" /> <image v-if="userInfo.headimgurl" :src="userInfo.headimgurl" class="avatar" />
</view> --> </view> -->
<view v-for="(item,index) in jigouArray" :key="index"> <!-- <view v-for="(item,index) in jigouArray" :key="index">
<view style="font-size: 30rpx;margin-top: 10rpx;font-weight: 700;" @click="jigouClick(item)"> <view style="font-size: 30rpx;margin-top: 10rpx;font-weight: 700;" @click="jigouClick(item)">
{{item.departName}} {{item.departName}}
</view> </view>
@ -20,46 +35,48 @@
{{item.nuName}} {{item.nuName}}
</view> </view>
</view> </view>
</view> </view> -->
</template> </template>
<script setup> <script setup>
import { import {
onLoad onLoad
} from '@dcloudio/uni-app'; } from '@dcloudio/uni-app';
import { // import {
useWeChatAuth // useWeChatAuth
} from '@/compontent/useWeChatAuth.js'; // } from '@/compontent/useWeChatAuth.js';
import request from '@/request/index.js'; import request from '@/request/index.js';
import { import {
reactive, reactive,
ref ref
} from 'vue'; } from 'vue';
import {getList} from "@/api/loginApi.js"
const { const itemArray = ["NU", "动态", "我的"];
fetchUserInfo, const itemTarget = ref(0);
openid, // const {
userInfo // fetchUserInfo,
} = useWeChatAuth(); // openid,
// userInfo
// } = useWeChatAuth();
const ceshi = reactive({ const ceshi = reactive({
name: "", name: "",
openid: "", openid: "",
accessToken: "" accessToken: ""
}) })
const jumpto = () => { // const jumpto = () => {
console.log("???") // console.log("???")
uni.navigateTo({ // uni.navigateTo({
url: "/pages/pay/index" // url: "/pages/pay/index"
}); // });
} // }
const getOpenId = (code) => { const getOpenId = (code) => {
const url = `https://www.focusnu.com/nursing-unit/weixin/wechat/callback?code=${encodeURIComponent(code)}`; const url = `https://www.focusnu.com/nursing-unit/weixin/wechat/callback?code=${encodeURIComponent(code)}`;
fetch(url) fetch(url)
.then(res => res.json()) .then(res => res.json())
.then(data => { .then(data => {
console.log("✅ 获取用户信息成功:", data);
ceshi.name = data.data.nickname ceshi.name = data.data.nickname
ceshi.openid = data.data.openid ceshi.openid = data.data.openid
ceshi.accessToken = data.accessToken ceshi.accessToken = data.accessToken
@ -81,38 +98,74 @@
const look = ref("") const look = ref("")
const getUserMessage = () => { const getUserMessage = () => {
const url = const url =
`https://www.focusnu.com/nursing-unit/h5Api/nuBizAdvisoryInfo/queryWeixinInfo?openId=${encodeURIComponent(ceshi.openid)}&wechatName=${encodeURIComponent(ceshi.name)}`; `https://www.focusnu.com/nursing-unit/h5Api/nuBizAdvisoryInfo/queryWeixinInfo?openId=${encodeURIComponent(ceshi.openid)}`;
fetch(url) fetch(url)
.then(res => res.json()) .then(res => res.json())
.then(data => { .then(data => {
console.log("个人信息打印", data) console.log("个人信息打印", data)
// serve.value = data.result.serverUrl uni.setStorageSync('token', data.result.token);
uni.setStorageSync('serverUrl', data.result.serverUrl);
console.log("???token存储",data.result.token)
// uni.getStorageSync('token')
const urlpost = `${data.result.serverUrl}/weiXinPay/getUserInfo`; const post = `${data.result.serverUrl}/weiXinPay/getJsApiInfo`;
const payload = { const pay = {
openid: ceshi.openid,
access_token: ceshi.accessToken, access_token: ceshi.accessToken,
// serverUrl: serve.value
}; };
console.log("???/", payload) console.log("???/", pay)
fetch(urlpost, { fetch(post, {
method: 'POST', method: 'POST',
headers: { headers: {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
}, },
body: JSON.stringify(payload) body: JSON.stringify(pay)
}) })
.then(res => res.json()) .then(res => res.json())
.then(data => { .then(data => {
// secondArray.value = [...data.result]; // secondArray.value = [...data.result];
look.value = data console.log("???调取微信", data)
console.log("", data)
}) })
.catch(err => { .catch(err => {
console.error('请求失败:', err); console.error('请求失败:', err);
}); });
// const urlpost = `${data.result.serverUrl}/weiXinPay/getUserInfo`;
// const payload = {
// openid: ceshi.openid,
// access_token: ceshi.accessToken,
// // serverUrl: serve.value
// };
// console.log("???/", payload)
// fetch(urlpost, {
// method: 'POST',
// headers: {
// 'Content-Type': 'application/json'
// },
// body: JSON.stringify(payload)
// })
// .then(res => res.json())
// .then(data => {
// // secondArray.value = [...data.result];
// look.value = data
// console.log("", data)
// })
// .catch(err => {
// console.error(':', err);
// });
if(!data.result.tel){
uni.redirectTo({
url: `/pages/login/phonebumber`
});
}else{
uni.redirectTo({
url: `/pages/index/index`
});
}
getjigou() getjigou()
}) })
@ -179,13 +232,12 @@
if (query.code) { if (query.code) {
getOpenId(query.code) getOpenId(query.code)
// fetchUserInfo(query.code) // fetchUserInfo(query.code)
} }
}); });
</script> </script>
<style scoped> <style scoped lang="scss">
.callback-container { .callback-container {
padding: 24px; padding: 24px;
} }
@ -196,4 +248,57 @@
border-radius: 40px; border-radius: 40px;
margin-top: 12px; margin-top: 12px;
} }
.login-container {
display: flex;
flex-direction: column;
min-height: 100vh;
width: 100%;
background-color: rgb(239, 241, 252);
position: relative;
}
.array-father {
width: 33%;
position: relative;
}
.botton-view {
position: fixed;
bottom: 0;
left: 0;
height: 200rpx;
width: 100%;
// background-color: greenyellow;
display: flex;
justify-content: space-between;
font-weight: 500;
.bottom-button {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.bottom-button-target {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
color: rgb(42, 133, 235);
}
.blue-heng {
height: 6rpx;
width: 150rpx;
background-color: rgb(42, 133, 235);
position: absolute;
bottom: 55rpx;
left: 50%;
/* 左边缘到父容器左边的距离占父宽度 50% */
transform: translateX(-50%);
}
}
</style> </style>

View File

@ -15,21 +15,21 @@
请输入验证码 请输入验证码
</view> </view>
<view class="code-number"> <view class="code-number">
验证码已发送至{{ phonenumber }} 验证码已发送至{{ mobile }}
</view> </view>
</view> </view>
<view class="captcha-container"> <view class="captcha-container">
<view class="captcha-box"> <view class="captcha-box">
<view v-for="(digit, index) in captcha" :key="index" class="captcha-item"> <view v-for="(digit, index) in captcha" :key="index" class="captcha-item">
<input v-model="captcha[index]" class="captcha-input" type="number" maxlength="1" <input v-model="captcha[index]" class="captcha-input" type="number" maxlength="4"
:placeholder="index < 3 ? '' : ' '" @input="handleInput(index)" :placeholder="index < 3 ? '' : ' '" @input="handleInput(index, $event)"
@keydown="handleKeydown(index, $event)" :focus="focusedIndex === index" /> @keydown="handleKeydown(index, $event)" :focus="focusedIndex === index" />
</view> </view>
</view> </view>
</view> </view>
<view class="under-view"> <view class="under-view">
<view class="right-blue" v-show="!countdown"> <view class="right-blue" v-show="!countdown" @click="getcode">
重新发送 重新发送
</view> </view>
<view class="right-white" v-show="countdown"> <view class="right-white" v-show="countdown">
@ -72,9 +72,15 @@
onLoad onLoad
} from '@dcloudio/uni-app'; } from '@dcloudio/uni-app';
const phonenumber = ref("") import {
smsCode,
checkPhoneCode
} from "@/api/loginApi.js"
const mobile = ref("")
const hkcode = ref("")
const captcha = ref(['', '', '', '']); // 4 const captcha = ref(['', '', '', '']); // 4
const focusedIndex = ref(0); // const focusedIndex = ref(-1); //
const isFadingOut = ref(false); const isFadingOut = ref(false);
// rgba // rgba
const maskColor = ref('rgba(0, 0, 0, 0.5)') const maskColor = ref('rgba(0, 0, 0, 0.5)')
@ -82,24 +88,63 @@
function closeModal() { function closeModal() {
isFadingOut.value = false isFadingOut.value = false
} }
function filterToSingleDigit(number) {
if (typeof number === 'number') {
return number % 10; //
}
return number; // number
}
// //
const handleInput = (index) => { const handleInput = (index, event) => {
const val = event.detail.value || ''
console.log("??????", event)
if (val.length == 4) {
// 1. 0 4
const codeStr = event.detail.value.toString().padStart(4, '0') // "0123"
captcha.value = codeStr.split('')
focusedIndex.value = 3
nextTick(() => {
submitCaptcha()
})
} else if (val.length == 2) {
captcha.value[index] = filterToSingleDigit(captcha.value[index])
if (captcha.value[index]) { if (captcha.value[index]) {
if (index < 3) { if (index < 3) {
focusedIndex.value = index + 1; // focusedIndex.value = index + 1; //
} }
} }
let isFour = true; let isFour = true;
captcha.value.forEach(number=>{ captcha.value.forEach(number => {
if(!number){ if (!number) {
isFour = false; isFour = false;
} }
}) })
nextTick(()=>{ nextTick(() => {
if(isFour){ if (isFour) {
submitCaptcha() submitCaptcha()
} }
}) })
} else {
if (captcha.value[index]) {
if (index < 3) {
focusedIndex.value = index + 1; //
}
}
let isFour = true;
captcha.value.forEach(number => {
if (!number) {
isFour = false;
}
})
nextTick(() => {
if (isFour) {
submitCaptcha()
}
})
}
}; };
// //
@ -110,64 +155,52 @@
} }
} }
}; };
const rightCode = ref("")
// //
const submitCaptcha = () => { const submitCaptcha = () => {
const code = captcha.value.join(''); const code = captcha.value.join('');
if (code.length === 4) { if (code.length === 4) {
console.log('提交验证码:', code); console.log('提交验证码:', code);
uni.reLaunch({ if (rightCode.value != code) {
rightCode.value = code;
checkPhoneCode({
mobile: mobile.value,
openId : uni.getStorageSync('openid').openid,
smscode: code
}).then(res => {
if (res.success) {
uni.redirectTo({
url: `/pages/index/index` url: `/pages/index/index`
}); });
} else {
uni.showToast({
title: '验证码错误',
icon: 'none', //
duration: 2000 //
})
}
})
}
// //
} else { } else {
console.log('验证码未输入完整'); console.log('验证码未输入完整');
} }
}; };
const getcode = () =>{ const getcode = () => {
// uni.getStorage({
// key: 'serverUrl', smsCode({
// success: (res) => { mobile: mobile.value,
// // res.data { url: '...' } hkcode: hkcode.value,
// const { url } = res.data; smsmode:1
// console.log(' serverUrl', url); }).then(res => {
// const url = `${url}/h5Api/nuBaseInfo/list`; if (res.success) {
// fetch(url) uni.showToast({
// .then(res => res.json()) title: '发送成功',
// .then(data => { icon: 'none', //
// secondArray.value = [...data.result] duration: 2000 //
// })
// //
// },
// fail: (err) => {
// console.error(' serverUrl ', err);
// }
// });
const url = `https://www.focusnu.com/nursing-unit/sys/randomImage/${Date.now()}`;
fetch(url)
.then(res => res.json())
.then(data => {
console.log("code测试",data)
}) })
} focusedIndex.value = 0;
//
const countdown = ref(60);
let timerId = null;
//
onUnmounted(() => {
if (timerId) {
clearInterval(timerId);
}
});
onLoad((options) => {
phonenumber.value = options.phonenumber;
getcode()
// //
countdown.value = 60; countdown.value = 60;
timerId = setInterval(() => { timerId = setInterval(() => {
@ -178,6 +211,33 @@
timerId = null; timerId = null;
} }
}, 1000); }, 1000);
} else {
uni.showToast({
title: res.message,
icon: 'none', //
duration: 2000 //
})
}
})
}
//
const countdown = ref(0);
let timerId = null;
//
onUnmounted(() => {
if (timerId) {
clearInterval(timerId);
}
});
onLoad((options) => {
mobile.value = options.mobile;
hkcode.value = options.hkcode;
getcode()
}); });
</script> </script>
@ -329,27 +389,31 @@
border-color: #00C9FF; border-color: #00C9FF;
} }
.right-blue{ .right-blue {
// float: right; // float: right;
color: #0083FF; color: #0083FF;
margin-left: 60rpx; margin-left: 60rpx;
} }
.right-white{
color: rgb(194,198,211); .right-white {
color: rgb(194, 198, 211);
margin-left: 60rpx; margin-left: 60rpx;
} }
.right-black{
.right-black {
// float: right; // float: right;
// color: #0083FF; // color: #0083FF;
margin-right: 80rpx; margin-right: 80rpx;
color: black; color: black;
} }
.under-view{
.under-view {
width: 100%; width: 100%;
margin-top: 10rpx; margin-top: 10rpx;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
} }
/* 遮罩 */ /* 遮罩 */
.overlay { .overlay {
position: fixed; position: fixed;
@ -453,7 +517,8 @@
.slide-up-leave-from { .slide-up-leave-from {
transform: translateY(0); transform: translateY(0);
} }
.text-view{
.text-view {
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
</style> </style>

View File

@ -1,14 +1,14 @@
<template> <template>
<view class="login-container"> <view class="login-container">
<view class="title"> <view class="title">
<image class="title-imge" src="/static/index/nu.png" /> <image class="title-imge" src="/static/index/nu.png" @click="ceshi" />
<view class="title-font"> <view class="title-font">
<view class="">您好</view> <view class="">您好</view>
<view class="">欢迎使用护理单元~</view> <view class="">欢迎使用护理单元~</view>
</view> </view>
</view> </view>
<image class="photo-imge" src="/static/index/bgc.png" /> <image class="photo-imge" src="/static/index/bgc.png" />
<image class="old-imge" src="/static/index/old.png" /> <image class="old-imge" src="/static/index/old.png" @click="ceshiscan" />
<view class="under-container"> <view class="under-container">
<view class="under-container-title"> <view class="under-container-title">
<view :class="isTarget ? 'radio-circle-target' : 'radio-circle'" @click="isTarget = !isTarget"></view> <view :class="isTarget ? 'radio-circle-target' : 'radio-circle'" @click="isTarget = !isTarget"></view>
@ -73,22 +73,27 @@
} }
const loginIt = () => { const loginIt = () => {
if (!isTarget.value) { if (!isTarget.value) {
isFadingOut.value = true; isFadingOut.value = true;
} else { } else {
uni.navigateTo({ login();
url: "/pages/login/phonebumber"
});
// login();
} }
}; };
const jumpToPro = () =>{ const jumpToPro = () =>{
console.log("????")
uni.navigateTo({ uni.navigateTo({
url: "/pages/login/protocol" url: "/pages/login/protocol"
}); });
} }
const ceshi = () =>{
uni.navigateTo({
url: "/pages/index/index"
});
}
const ceshiscan = () =>{
uni.navigateTo({
url: "/pages/selectunit/map"
});
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -17,9 +17,6 @@
@input="isRight" /> @input="isRight" />
</view> </view>
</view> </view>
<view class="button-blue" @click="huakuaiOpen = true">
滑块校验
</view>
<view class="button-blue" v-show="canClick" @click="jumpto"> <view class="button-blue" v-show="canClick" @click="jumpto">
获得验证码 获得验证码
</view> </view>
@ -28,7 +25,7 @@
</view> </view>
</view> </view>
<view class="bg-mask" v-if="huakuaiOpen" @click="huakuaiOpen=false" > <view class="bg-mask" v-if="huakuaiOpen" @click="huakuaiOpen=false" >
<huakuai @click.stop /> <huakuai @click.stop @success="codeIsOk" />
</view> </view>
@ -42,13 +39,29 @@
} from 'vue'; } from 'vue';
import huakuai from "@/compontent/public/huakuai.vue" import huakuai from "@/compontent/public/huakuai.vue"
import { getHkCode } from "@/api/loginApi.js"
const huakuaiOpen = ref(false); const huakuaiOpen = ref(false);
const jumpto = () => { const jumpto = () => {
huakuaiOpen.value = true;
}
const codeIsOk = () =>{
huakuaiOpen.value = false;
getHkCode({mobile:phonenumber.value}).then(res=>{
// console.log("????????????//",res.success)
if(res.success){
uni.navigateTo({ uni.navigateTo({
url: `/pages/login/code?phonenumber=${phonenumber.value}` url: `/pages/login/code?mobile=${phonenumber.value}&hkcode=${res.message}`
}); });
}else{
uni.showToast({
title: res.message,
icon: 'none', //
duration: 2000 //
})
}
})
} }
//11 //11
function is11DigitNumber(value) { function is11DigitNumber(value) {

View File

@ -60,7 +60,8 @@
} }
} }
const diaoqu = () =>{ const diaoqu = () =>{
const urlpost = `${saveurl.value}/weiXinPay/native`; // const urlpost = `${saveurl.value}/weiXinPay/native`;
const urlpost = `https://www.focusnu.com/nursing-unit_0010507/weiXinPay/native`
const payload = { const payload = {
title: "测试", title: "测试",
openId: openid.value, openId: openid.value,

102
pages/selectunit/map.vue Normal file
View File

@ -0,0 +1,102 @@
<template>
<div class="container">
<view class="select" @click.stop >
<view class="select-left" @click="isRuler=true" :style="!isRuler?{color:`black`,backgroundColor:`#fff`}:{}">
列表
</view>
<view class="select-right" @click="isRuler=false" :style="isRuler?{color:`black`,backgroundColor:`#fff`}:{}">
地图
</view>
</view>
<view class="title-map">
<view class="right-bad">
<view></view>
<image class="right-bad-img" src="@/static/index/zhinan.png" />
<view></view>
</view>
<image class="title-img" src="@/static/index/map.png" />
</view>
</div>
</template>
<script setup>
import {
ref
} from 'vue'
const isRuler = ref(true);
</script>
<style lang="scss" scoped>
.container{
width: 100%;
min-height: 100vh;
position: relative;
.select{
position: absolute;
left: 30rpx;
top: -20rpx;
width: 170rpx;
height: 60rpx;
border-radius: 20rpx;
background-color: #01A8FF;
z-index: 1;
display: flex;
border: 4rpx solid #01A8FF;
.select-left{
border-top-left-radius: 15rpx;
border-bottom-left-radius: 15rpx;
width: 50%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
font-size: 25rpx;
color: #fff;
}
.select-right{
border-top-right-radius: 15rpx;
border-bottom-right-radius: 15rpx;
width: 50%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
font-size: 25rpx;
color: #fff;
}
}
.title-map{
width: 100%;
height: 650rpx;
background-color: #E0E2E9;
margin-top: 50rpx;
position: relative;
.right-bad{
position: absolute;
top: 10rpx;
right: 20rpx;
width: 50rpx;
height: 130rpx;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
background-color: #fff;
z-index:1;
border-radius: 20rpx;
font-size: 23rpx;
.right-bad-img{
width: 30rpx;
height: 55rpx;
}
}
.title-img{
width: 700rpx;
height: 600rpx;
margin-left: 25rpx;
margin-top: 25rpx;
}
}
}
</style>

View File

@ -1,5 +1,5 @@
// 全局请求封装 // 全局请求封装
const base_url = 'http://192.168.2.199:8081/nursing-unit_001' const base_url = 'https://www.focusnu.com/nursing-unit'
// 请求超出时间 // 请求超出时间
const timeout = 5000 const timeout = 5000
@ -9,10 +9,10 @@ export default (params) => {
let method = params.method || "get"; let method = params.method || "get";
let data = params.data || {}; let data = params.data || {};
let header = { let header = {
'Blade-Auth': uni.getStorageSync('token') || '', 'X-Access-Token': uni.getStorageSync('token') || '',
'Content-Type': 'application/json;charset=UTF-8', 'Content-Type': 'application/json;charset=UTF-8',
'Authorization': 'Basic c2FiZXI6c2FiZXJfc2VjcmV0', 'Authorization': 'Basic c2FiZXI6c2FiZXJfc2VjcmV0',
'Tenant-Id': uni.getStorageSync('tenantId') || 'xxx', // avue配置相关
...params.header ...params.header
} }
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@ -25,6 +25,7 @@ export default (params) => {
success(response) { success(response) {
const res = response const res = response
// 根据返回的状态码做出对应的操作 // 根据返回的状态码做出对应的操作
if (res.statusCode == 200) { if (res.statusCode == 200) {
resolve(res.data); resolve(res.data);
} else { } else {
@ -38,7 +39,7 @@ export default (params) => {
success() { success() {
setTimeout(() => { setTimeout(() => {
uni.navigateTo({ uni.navigateTo({
url: "/pages/login/login", url: "/pages/login/index",
}) })
}, 1000); }, 1000);
}, },

BIN
static/index/IDcard.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
static/index/backIDcard.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
static/index/badold.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
static/index/badscan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
static/index/bian.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
static/index/bluebgc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
static/index/goodscan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
static/index/index/back.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
static/index/index/scan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1013 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 849 B

BIN
static/index/indexgif.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 873 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 803 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 995 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
static/index/kuai.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

BIN
static/index/map.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

BIN
static/index/photoID.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
static/index/tu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
static/index/yibaocard.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
static/index/zhinan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
static/login/right.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 940 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 733 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 KiB

View File

@ -0,0 +1 @@
.container[data-v-82ee0fe1]{display:flex;flex-direction:column;min-height:100vh;width:100%;background-color:#eff1fc;position:relative;box-shadow:.0625rem .0625rem .125rem rgba(0,0,0,.1)}.container .white-content[data-v-82ee0fe1]{width:90%;margin-left:5%;margin-top:.9375rem;border-radius:1.09375rem;background-color:#f5fbfe}.container .white-content .content-title[data-v-82ee0fe1]{display:flex;height:3.125rem;position:relative}.container .white-content .content-title .content-weight[data-v-82ee0fe1]{font-weight:600;margin-left:2.1875rem;margin-top:.625rem}.container .white-content .content-title .content-img[data-v-82ee0fe1]{position:absolute;right:0;top:0;width:12.5rem;height:100%}.container .white-photo[data-v-82ee0fe1]{width:90%;margin-left:5%;height:9.375rem;border-radius:1.09375rem;background-color:#fff;box-shadow:.125rem .125rem .25rem rgba(0,0,0,.1);justify-content:space-around;align-items:center;display:flex}.container .white-photo .photo[data-v-82ee0fe1]{width:9.375rem;height:6.25rem}.container .white-message[data-v-82ee0fe1]{width:90%;margin-left:5%;margin-top:.9375rem;margin-bottom:.9375rem;border-radius:1.09375rem;background-color:#fff;box-shadow:.125rem .125rem .25rem rgba(0,0,0,.1);justify-content:space-around;display:flex;flex-direction:column}.container .white-message .message-title[data-v-82ee0fe1]{width:100%;height:3.125rem;align-items:center;display:flex}.container .white-message .message-title .shu[data-v-82ee0fe1]{width:.3125rem;height:.9375rem;background-color:#0097ff;border-radius:.3125rem;margin:0 .625rem 0 .9375rem}.container .white-message .message-title .message-weight[data-v-82ee0fe1]{font-size:.9375rem}.container .white-message .one[data-v-82ee0fe1]{width:90%;margin-left:5%;border-bottom:.03125rem solid #d7d7d7;height:2.8125rem;display:flex;justify-content:space-between;align-items:center;margin-bottom:.3125rem}.container .white-message .one .one-left[data-v-82ee0fe1]{margin-left:.3125rem}.container .white-message .one .one-right[data-v-82ee0fe1]{margin-right:.3125rem;color:#999}.photo-left .photo-weight[data-v-82ee0fe1]{font-size:.8125rem;font-weight:600}.photo-left .photo-font[data-v-82ee0fe1]{font-size:.71875rem;margin-top:.3125rem}.gray-font[data-v-82ee0fe1]{padding:.9375rem 1.875rem;color:#999}.finish-button[data-v-82ee0fe1]{display:flex;justify-content:center;align-items:center;width:70%;height:3.125rem;margin:0 auto;margin-bottom:2.5rem;color:#fff;background:linear-gradient(to right,#00c9ff,#0076ff);border-radius:1.5625rem;font-size:1.09375rem}

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1 @@
const n="/wechat/thd/assets/bian-Bn6jzrNn.png";export{n as _};

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

View File

@ -1 +0,0 @@
.callback-container[data-v-4644647c]{padding:24px}.avatar[data-v-4644647c]{width:80px;height:80px;border-radius:40px;margin-top:12px}

View File

@ -0,0 +1 @@
.callback-container[data-v-812fd514]{padding:24px}.avatar[data-v-812fd514]{width:80px;height:80px;border-radius:40px;margin-top:12px}.login-container[data-v-812fd514]{display:flex;flex-direction:column;min-height:100vh;width:100%;background-color:#eff1fc;position:relative}.array-father[data-v-812fd514]{width:33%;position:relative}.botton-view[data-v-812fd514]{position:fixed;bottom:0;left:0;height:6.25rem;width:100%;display:flex;justify-content:space-between;font-weight:500}.botton-view .bottom-button[data-v-812fd514]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.botton-view .bottom-button-target[data-v-812fd514]{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#2a85eb}.botton-view .blue-heng[data-v-812fd514]{height:.1875rem;width:4.6875rem;background-color:#2a85eb;position:absolute;bottom:1.71875rem;left:50%;transform:translate(-50%)}

View File

@ -0,0 +1 @@
.login-container[data-v-f1b5ebad]{display:flex;flex-direction:column;min-height:100vh;width:100%;background-color:#eff1fc;position:relative}.login-container .title[data-v-f1b5ebad]{margin-top:2.1875rem;align-items:center}.login-container .title .title-imge[data-v-f1b5ebad]{width:3.125rem;height:3.28125rem;margin-left:3.125rem}.login-container .title .title-font[data-v-f1b5ebad]{font-size:1.09375rem;font-weight:600;margin-left:3.28125rem;margin-top:.3125rem}.login-container .photo-imge[data-v-f1b5ebad]{position:absolute;top:3.75rem;left:0;width:100%;height:34.375rem}.login-container .old-imge[data-v-f1b5ebad]{position:absolute;right:.9375rem;top:12.5rem;width:12.5rem;height:12.5rem}.login-container .under-container[data-v-f1b5ebad]{position:fixed;left:0;bottom:0;width:100%;height:45vh;background-color:#fff;border-top-left-radius:1.5625rem;border-top-right-radius:1.5625rem;box-shadow:.3125rem .3125rem .625rem rgba(0,0,0,.1);display:flex;flex-direction:column;color:#5a607f}.login-container .under-container .radio-circle[data-v-f1b5ebad],.login-container .under-container .radio-circle-target[data-v-f1b5ebad]{position:relative;margin-top:.0625rem;width:1.25rem;height:1.25rem;border-radius:50%;border:.0625rem solid #C0C5D9;background-color:transparent}.login-container .under-container .radio-circle-target[data-v-f1b5ebad]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:.9375rem;height:.9375rem;background-color:#00c9ff;border-radius:50%}.under-container-title[data-v-f1b5ebad]{margin-top:1.5625rem;margin-bottom:.625rem;font-size:.78125rem;font-weight:500;width:100%}.under-container-title .code-title[data-v-f1b5ebad]{margin-left:2.5rem;font-size:1.09375rem;color:#000;font-weight:500;margin-bottom:.625rem}.under-container-title .code-number[data-v-f1b5ebad]{margin-left:2.5rem;font-size:.875rem;margin-bottom:.625rem}.captcha-container[data-v-f1b5ebad]{display:flex;flex-direction:column;align-items:center;margin-top:.625rem}.captcha-box[data-v-f1b5ebad]{display:flex;justify-content:space-between;margin-bottom:.625rem}.captcha-item[data-v-f1b5ebad]{display:flex;justify-content:center;align-items:center}.captcha-input[data-v-f1b5ebad]{width:3.4375rem;height:3.4375rem;border:.09375rem solid #C0C5D9;border-radius:.9375rem;font-size:1.5625rem;font-weight:700;text-align:center;margin-right:1.25rem;outline:none}.captcha-input[data-v-f1b5ebad]:focus{border-color:#00c9ff}.right-blue[data-v-f1b5ebad]{color:#0083ff;margin-left:1.875rem}.right-white[data-v-f1b5ebad]{color:#c2c6d3;margin-left:1.875rem}.right-black[data-v-f1b5ebad]{margin-right:2.5rem;color:#000}.under-view[data-v-f1b5ebad]{width:100%;margin-top:.3125rem;display:flex;justify-content:space-between}.overlay[data-v-f1b5ebad]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:998}.modal[data-v-f1b5ebad]{position:fixed;bottom:0;left:0;background-color:#fff;z-index:999;border-top-left-radius:1.5625rem;border-top-right-radius:1.5625rem;width:100%;height:15.625rem;display:flex;flex-direction:column;align-items:center}.modal .modal-title[data-v-f1b5ebad]{font-size:1rem;font-weight:700;margin:1.5625rem 0 .9375rem}.modal .model-p[data-v-f1b5ebad]{padding:0 1.5625rem;width:100%;font-size:.9375rem}.modal .model-down[data-v-f1b5ebad]{display:flex;width:100%;justify-content:space-between;padding:0 1.5625rem;margin-top:1.25rem}.modal .model-down .model-white[data-v-f1b5ebad]{border-radius:1.5625rem;width:9.375rem;height:2.96875rem;border:.15625rem solid #008dff;color:#008dff;font-size:1.09375rem;display:flex;justify-content:center;align-items:center}.modal .model-down .model-blue[data-v-f1b5ebad]{border-radius:1.5625rem;width:9.375rem;height:2.96875rem;background:linear-gradient(to right,#00c9ff,#0076ff);color:#fff;font-size:1.09375rem;display:flex;justify-content:center;align-items:center}.fade-enter-active[data-v-f1b5ebad],.fade-leave-active[data-v-f1b5ebad]{transition:opacity .3s}.fade-enter-from[data-v-f1b5ebad],.fade-leave-to[data-v-f1b5ebad]{opacity:0}.fade-enter-to[data-v-f1b5ebad],.fade-leave-from[data-v-f1b5ebad]{opacity:1}.slide-up-enter-active[data-v-f1b5ebad],.slide-up-leave-active[data-v-f1b5ebad]{transition:transform .3s}.slide-up-enter-from[data-v-f1b5ebad],.slide-up-leave-to[data-v-f1b5ebad]{transform:translateY(100%)}.slide-up-enter-to[data-v-f1b5ebad],.slide-up-leave-from[data-v-f1b5ebad]{transform:translateY(0)}.text-view[data-v-f1b5ebad]{margin-bottom:.625rem}

View File

@ -1 +0,0 @@
.login-container[data-v-edc97756]{display:flex;flex-direction:column;min-height:100vh;width:100%;background-color:#eff1fc;position:relative}.login-container .title[data-v-edc97756]{margin-top:2.1875rem;align-items:center}.login-container .title .title-imge[data-v-edc97756]{width:3.125rem;height:3.28125rem;margin-left:3.125rem}.login-container .title .title-font[data-v-edc97756]{font-size:1.09375rem;font-weight:600;margin-left:3.28125rem;margin-top:.3125rem}.login-container .photo-imge[data-v-edc97756]{position:absolute;top:3.75rem;left:0;width:100%;height:34.375rem}.login-container .old-imge[data-v-edc97756]{position:absolute;right:.9375rem;top:12.5rem;width:12.5rem;height:12.5rem}.login-container .under-container[data-v-edc97756]{position:fixed;left:0;bottom:0;width:100%;height:45vh;background-color:#fff;border-top-left-radius:1.5625rem;border-top-right-radius:1.5625rem;box-shadow:.3125rem .3125rem .625rem rgba(0,0,0,.1);display:flex;flex-direction:column;color:#5a607f}.login-container .under-container .radio-circle[data-v-edc97756],.login-container .under-container .radio-circle-target[data-v-edc97756]{position:relative;margin-top:.0625rem;width:1.25rem;height:1.25rem;border-radius:50%;border:.0625rem solid #C0C5D9;background-color:transparent}.login-container .under-container .radio-circle-target[data-v-edc97756]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:.9375rem;height:.9375rem;background-color:#00c9ff;border-radius:50%}.under-container-title[data-v-edc97756]{margin-top:1.5625rem;margin-bottom:.625rem;font-size:.78125rem;font-weight:500;width:100%}.under-container-title .code-title[data-v-edc97756]{margin-left:2.5rem;font-size:1.09375rem;color:#000;font-weight:500;margin-bottom:.625rem}.under-container-title .code-number[data-v-edc97756]{margin-left:2.5rem;font-size:.875rem;margin-bottom:.625rem}.captcha-container[data-v-edc97756]{display:flex;flex-direction:column;align-items:center;margin-top:.625rem}.captcha-box[data-v-edc97756]{display:flex;justify-content:space-between;margin-bottom:.625rem}.captcha-item[data-v-edc97756]{display:flex;justify-content:center;align-items:center}.captcha-input[data-v-edc97756]{width:3.4375rem;height:3.4375rem;border:.09375rem solid #C0C5D9;border-radius:.9375rem;font-size:1.5625rem;font-weight:700;text-align:center;margin-right:1.25rem;outline:none}.captcha-input[data-v-edc97756]:focus{border-color:#00c9ff}.right-blue[data-v-edc97756]{color:#0083ff;margin-left:1.875rem}.right-white[data-v-edc97756]{color:#c2c6d3;margin-left:1.875rem}.right-black[data-v-edc97756]{margin-right:2.5rem;color:#000}.under-view[data-v-edc97756]{width:100%;margin-top:.3125rem;display:flex;justify-content:space-between}.overlay[data-v-edc97756]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:998}.modal[data-v-edc97756]{position:fixed;bottom:0;left:0;background-color:#fff;z-index:999;border-top-left-radius:1.5625rem;border-top-right-radius:1.5625rem;width:100%;height:15.625rem;display:flex;flex-direction:column;align-items:center}.modal .modal-title[data-v-edc97756]{font-size:1rem;font-weight:700;margin:1.5625rem 0 .9375rem}.modal .model-p[data-v-edc97756]{padding:0 1.5625rem;width:100%;font-size:.9375rem}.modal .model-down[data-v-edc97756]{display:flex;width:100%;justify-content:space-between;padding:0 1.5625rem;margin-top:1.25rem}.modal .model-down .model-white[data-v-edc97756]{border-radius:1.5625rem;width:9.375rem;height:2.96875rem;border:.15625rem solid #008dff;color:#008dff;font-size:1.09375rem;display:flex;justify-content:center;align-items:center}.modal .model-down .model-blue[data-v-edc97756]{border-radius:1.5625rem;width:9.375rem;height:2.96875rem;background:linear-gradient(to right,#00c9ff,#0076ff);color:#fff;font-size:1.09375rem;display:flex;justify-content:center;align-items:center}.fade-enter-active[data-v-edc97756],.fade-leave-active[data-v-edc97756]{transition:opacity .3s}.fade-enter-from[data-v-edc97756],.fade-leave-to[data-v-edc97756]{opacity:0}.fade-enter-to[data-v-edc97756],.fade-leave-from[data-v-edc97756]{opacity:1}.slide-up-enter-active[data-v-edc97756],.slide-up-leave-active[data-v-edc97756]{transition:transform .3s}.slide-up-enter-from[data-v-edc97756],.slide-up-leave-to[data-v-edc97756]{transform:translateY(100%)}.slide-up-enter-to[data-v-edc97756],.slide-up-leave-from[data-v-edc97756]{transform:translateY(0)}.text-view[data-v-edc97756]{margin-bottom:.625rem}

View File

@ -0,0 +1 @@
.container[data-v-d30bd38d]{display:flex;flex-direction:column;min-height:100vh;width:100%;background-color:#eff1fc;position:relative;box-shadow:.0625rem .0625rem .125rem rgba(0,0,0,.1)}.container .white-content[data-v-d30bd38d]{width:90%;margin-left:5%;margin-top:.9375rem;border-radius:1.09375rem;background-color:#f5fbfe}.container .white-content .content-title[data-v-d30bd38d]{display:flex;height:3.125rem;position:relative}.container .white-content .content-title .content-weight[data-v-d30bd38d]{font-weight:600;margin-left:.625rem;margin-top:.625rem}.container .white-content .content-title .content-img[data-v-d30bd38d]{position:absolute;right:0;top:0;width:12.5rem;height:100%}.container .white-photo[data-v-d30bd38d]{width:90%;margin-left:5%;height:9.375rem;border-radius:1.09375rem;background-color:#fff;box-shadow:.125rem .125rem .25rem rgba(0,0,0,.1);justify-content:space-around;align-items:center;display:flex}.container .white-photo .photo[data-v-d30bd38d]{width:9.375rem;height:6.25rem}.container .white-message[data-v-d30bd38d]{width:90%;margin-left:5%;margin-top:.9375rem;margin-bottom:.9375rem;border-radius:1.09375rem;background-color:#fff;box-shadow:.125rem .125rem .25rem rgba(0,0,0,.1);justify-content:space-around;display:flex;flex-direction:column}.container .white-message .message-title[data-v-d30bd38d]{width:100%;height:3.125rem;align-items:center;display:flex}.container .white-message .message-title .shu[data-v-d30bd38d]{width:.3125rem;height:.9375rem;background-color:#0097ff;border-radius:.3125rem;margin:0 .625rem 0 .9375rem}.container .white-message .message-title .message-weight[data-v-d30bd38d]{font-size:.9375rem}.container .white-message .one[data-v-d30bd38d]{width:90%;margin-left:5%;border-bottom:.03125rem solid #d7d7d7;height:2.8125rem;display:flex;justify-content:space-between;align-items:center;margin-bottom:.3125rem}.container .white-message .one .one-left[data-v-d30bd38d]{margin-left:.3125rem}.container .white-message .one .one-right[data-v-d30bd38d]{margin-right:.3125rem;color:#999}.photo-left .photo-weight[data-v-d30bd38d]{font-size:.8125rem;font-weight:600}.photo-left .photo-font[data-v-d30bd38d]{font-size:.71875rem;margin-top:.3125rem}.gray-font[data-v-d30bd38d]{padding:.9375rem 1.875rem;color:#999}.finish-button[data-v-d30bd38d]{display:flex;justify-content:center;align-items:center;width:70%;height:3.125rem;margin:0 auto;margin-bottom:2.5rem;color:#fff;background:linear-gradient(to right,#00c9ff,#0076ff);border-radius:1.5625rem;font-size:1.09375rem}

View File

@ -1 +0,0 @@
.container[data-v-d6f4282f]{width:100%;height:400px}.three-container[data-v-d6f4282f]{width:100%;height:100%}

View File

@ -0,0 +1 @@
.container[data-v-51197c27]{padding:20px}.input-group[data-v-51197c27]{display:flex;align-items:center;gap:10px;margin-bottom:20px}.amount-input[data-v-51197c27]{flex:1;height:40px;border:1px solid #ddd;padding:0 10px;border-radius:4px}.pay-btn[data-v-51197c27]{padding:0 20px;height:40px;background-color:#1aad19;color:#fff;border:none;border-radius:4px;cursor:pointer}.status-group[data-v-51197c27]{margin-top:10px}

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
.container[data-v-8d52c10e]{padding:20px}.input-group[data-v-8d52c10e]{display:flex;align-items:center;gap:10px;margin-bottom:20px}.amount-input[data-v-8d52c10e]{flex:1;height:40px;border:1px solid #ddd;padding:0 10px;border-radius:4px}.pay-btn[data-v-8d52c10e]{padding:0 20px;height:40px;background-color:#1aad19;color:#fff;border:none;border-radius:4px;cursor:pointer}.status-group[data-v-8d52c10e]{margin-top:10px}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
.login-container[data-v-71ce103a]{display:flex;flex-direction:column;min-height:100vh;width:100%;background-color:#eff1fc;position:relative}.login-container .title[data-v-71ce103a]{margin-top:2.1875rem;align-items:center}.login-container .title .title-imge[data-v-71ce103a]{width:3.125rem;height:3.28125rem;margin-left:3.125rem}.login-container .title .title-font[data-v-71ce103a]{font-size:1.09375rem;font-weight:600;margin-left:3.28125rem;margin-top:.3125rem}.login-container .photo-imge[data-v-71ce103a]{position:absolute;top:3.75rem;left:0;width:100%;height:34.375rem}.login-container .old-imge[data-v-71ce103a]{position:absolute;right:.9375rem;top:12.5rem;width:12.5rem;height:12.5rem}.login-container .under-container[data-v-71ce103a]{position:fixed;left:0;bottom:0;width:100%;height:45vh;background-color:#fff;border-top-left-radius:1.5625rem;border-top-right-radius:1.5625rem;box-shadow:.3125rem .3125rem .625rem rgba(0,0,0,.1);display:flex;flex-direction:column;align-items:center}.login-container .under-container .radio-circle[data-v-71ce103a],.login-container .under-container .radio-circle-target[data-v-71ce103a]{position:relative;margin-top:.0625rem;width:1.25rem;height:1.25rem;border-radius:50%;border:.0625rem solid #C0C5D9;background-color:transparent}.login-container .under-container .radio-circle-target[data-v-71ce103a]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:.9375rem;height:.9375rem;background-color:#00c9ff;border-radius:50%}.under-container-title[data-v-71ce103a]{display:flex;margin-top:1.875rem;margin-bottom:1.25rem;align-items:center;font-size:.78125rem;font-weight:500}.under-container-title .radio-circle-blue[data-v-71ce103a]{color:#0083ff;margin-top:.09375rem}.under-container-title .radio-circle-font[data-v-71ce103a]{color:#5a607f;margin-top:.09375rem}.button-blue[data-v-71ce103a]{width:80%;display:flex;justify-content:center;align-items:center;height:3.125rem;border-radius:1.34375rem;background:linear-gradient(to right,#00c9ff,#0076ff);color:#fff;font-size:1.03125rem;margin-bottom:.9375rem}.overlay[data-v-71ce103a]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:998}.modal[data-v-71ce103a]{position:fixed;bottom:0;left:0;background-color:#fff;z-index:999;border-top-left-radius:1.5625rem;border-top-right-radius:1.5625rem;width:100%;height:15.625rem;display:flex;flex-direction:column;align-items:center}.modal .modal-title[data-v-71ce103a]{font-size:1rem;font-weight:700;margin:1.5625rem 0}.modal .model-p[data-v-71ce103a]{padding:0 1.5625rem;width:100%;font-size:.9375rem}.modal .model-down[data-v-71ce103a]{display:flex;width:100%;justify-content:space-between;padding:0 1.5625rem;margin-top:1.25rem}.modal .model-down .model-white[data-v-71ce103a]{border-radius:1.5625rem;width:9.375rem;height:2.96875rem;border:.15625rem solid #008dff;color:#008dff;font-size:1.09375rem;display:flex;justify-content:center;align-items:center}.modal .model-down .model-blue[data-v-71ce103a]{border-radius:1.5625rem;width:9.375rem;height:2.96875rem;background:linear-gradient(to right,#00c9ff,#0076ff);color:#fff;font-size:1.09375rem;display:flex;justify-content:center;align-items:center}.fade-enter-active[data-v-71ce103a],.fade-leave-active[data-v-71ce103a]{transition:opacity .3s}.fade-enter-from[data-v-71ce103a],.fade-leave-to[data-v-71ce103a]{opacity:0}.fade-enter-to[data-v-71ce103a],.fade-leave-from[data-v-71ce103a]{opacity:1}.slide-up-enter-active[data-v-71ce103a],.slide-up-leave-active[data-v-71ce103a]{transition:transform .3s}.slide-up-enter-from[data-v-71ce103a],.slide-up-leave-to[data-v-71ce103a]{transform:translateY(100%)}.slide-up-enter-to[data-v-71ce103a],.slide-up-leave-from[data-v-71ce103a]{transform:translateY(0)}

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
.login-container[data-v-8017333f]{display:flex;flex-direction:column;min-height:100vh;width:100%;background-color:#eff1fc;position:relative}.login-container .title[data-v-8017333f]{margin-top:2.1875rem;align-items:center}.login-container .title .title-imge[data-v-8017333f]{width:3.125rem;height:3.28125rem;margin-left:3.125rem}.login-container .title .title-font[data-v-8017333f]{font-size:1.09375rem;font-weight:600;margin-left:3.28125rem;margin-top:.3125rem}.login-container .photo-imge[data-v-8017333f]{position:absolute;top:3.75rem;left:0;width:100%;height:34.375rem}.login-container .old-imge[data-v-8017333f]{position:absolute;right:.9375rem;top:12.5rem;width:12.5rem;height:12.5rem}.login-container .under-container[data-v-8017333f]{position:fixed;left:0;bottom:0;width:100%;height:45vh;background-color:#fff;border-top-left-radius:1.5625rem;border-top-right-radius:1.5625rem;box-shadow:.3125rem .3125rem .625rem rgba(0,0,0,.1);display:flex;flex-direction:column;align-items:center}.login-container .under-container .radio-circle[data-v-8017333f],.login-container .under-container .radio-circle-target[data-v-8017333f]{position:relative;margin-top:.0625rem;width:1.25rem;height:1.25rem;border-radius:50%;border:.0625rem solid #C0C5D9;background-color:transparent}.login-container .under-container .radio-circle-target[data-v-8017333f]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:.9375rem;height:.9375rem;background-color:#00c9ff;border-radius:50%}.under-container-title[data-v-8017333f]{display:flex;margin-top:1.875rem;margin-bottom:1.25rem;align-items:center;font-size:.78125rem;font-weight:500}.under-container-title .radio-circle-blue[data-v-8017333f]{color:#0083ff;margin-top:.09375rem}.under-container-title .radio-circle-font[data-v-8017333f]{color:#5a607f;margin-top:.09375rem}.button-blue[data-v-8017333f]{width:80%;display:flex;justify-content:center;align-items:center;height:3.125rem;border-radius:1.34375rem;background:linear-gradient(to right,#00c9ff,#0076ff);color:#fff;font-size:1.03125rem;margin-bottom:.9375rem}.overlay[data-v-8017333f]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:998}.modal[data-v-8017333f]{position:fixed;bottom:0;left:0;background-color:#fff;z-index:999;border-top-left-radius:1.5625rem;border-top-right-radius:1.5625rem;width:100%;height:15.625rem;display:flex;flex-direction:column;align-items:center}.modal .modal-title[data-v-8017333f]{font-size:1rem;font-weight:700;margin:1.5625rem 0}.modal .model-p[data-v-8017333f]{padding:0 1.5625rem;width:100%;font-size:.9375rem}.modal .model-down[data-v-8017333f]{display:flex;width:100%;justify-content:space-between;padding:0 1.5625rem;margin-top:1.25rem}.modal .model-down .model-white[data-v-8017333f]{border-radius:1.5625rem;width:9.375rem;height:2.96875rem;border:.15625rem solid #008dff;color:#008dff;font-size:1.09375rem;display:flex;justify-content:center;align-items:center}.modal .model-down .model-blue[data-v-8017333f]{border-radius:1.5625rem;width:9.375rem;height:2.96875rem;background:linear-gradient(to right,#00c9ff,#0076ff);color:#fff;font-size:1.09375rem;display:flex;justify-content:center;align-items:center}.fade-enter-active[data-v-8017333f],.fade-leave-active[data-v-8017333f]{transition:opacity .3s}.fade-enter-from[data-v-8017333f],.fade-leave-to[data-v-8017333f]{opacity:0}.fade-enter-to[data-v-8017333f],.fade-leave-from[data-v-8017333f]{opacity:1}.slide-up-enter-active[data-v-8017333f],.slide-up-leave-active[data-v-8017333f]{transition:transform .3s}.slide-up-enter-from[data-v-8017333f],.slide-up-leave-to[data-v-8017333f]{transform:translateY(100%)}.slide-up-enter-to[data-v-8017333f],.slide-up-leave-from[data-v-8017333f]{transform:translateY(0)}

View File

@ -1 +0,0 @@
.login-container[data-v-0ae6d08b]{display:flex;flex-direction:column;min-height:100vh;width:100%;background-color:#eff1fc;position:relative}.array-father[data-v-0ae6d08b]{width:33%;position:relative}.botton-view[data-v-0ae6d08b]{position:fixed;bottom:0;left:0;height:6.25rem;width:100%;display:flex;justify-content:space-between;font-weight:500}.botton-view .bottom-button[data-v-0ae6d08b]{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.botton-view .bottom-button-target[data-v-0ae6d08b]{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#2a85eb}.botton-view .blue-heng[data-v-0ae6d08b]{height:.1875rem;width:4.6875rem;background-color:#2a85eb;position:absolute;bottom:1.71875rem;left:50%;transform:translate(-50%)}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@ -0,0 +1 @@
import{y as e,A as t,B as s,s as o,C as a,f as n,D as r,E as i}from"./index-BMxaUgem.js";const c=c=>{let u=c.url,d=c.method||"get",l=c.data||{},h={"X-Access-Token":e("token")||"","Content-Type":"application/json;charset=UTF-8",Authorization:"Basic c2FiZXI6c2FiZXJfc2VjcmV0",...c.header};return new Promise(((e,c)=>{t({url:"https://www.focusnu.com/nursing-unit"+u,method:d,header:h,data:l,timeout:5e3,success(t){const r=t;if(200==r.statusCode)e(r.data);else switch(s(),r.statusCode){case 401:a({title:"提示",content:"请登录",showCancel:!1,success(){setTimeout((()=>{n({url:"/pages/login/index"})}),1e3)}});break;case 404:o({title:"请求地址不存在...",duration:2e3});break;default:o({title:"请重试...",duration:2e3})}},fail(e){console.log(e),-1!==e.errMsg.indexOf("request:fail")?o({title:"网络异常",icon:"error",duration:2e3}):o({title:"未知异常",duration:2e3}),c(e)},complete(){r(),i()}})})).catch((()=>{}))};function u(e){return c({url:"/sys/getHkCode",method:"post",data:e})}function d(e){return c({url:"/sys/smsCode",method:"post",data:e})}function l(e){return c({url:"/sys/checkPhoneCode",method:"post",data:e})}export{l as c,u as g,d as s};

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

View File

@ -0,0 +1 @@
.container[data-v-40d5300a]{width:100%;min-height:100vh;position:relative}.container .select[data-v-40d5300a]{position:absolute;left:.9375rem;top:-.625rem;width:5.3125rem;height:1.875rem;border-radius:.625rem;background-color:#01a8ff;z-index:1;display:flex;border:.125rem solid #01A8FF}.container .select .select-left[data-v-40d5300a]{border-top-left-radius:.46875rem;border-bottom-left-radius:.46875rem;width:50%;height:100%;display:flex;justify-content:center;align-items:center;font-size:.78125rem;color:#fff}.container .select .select-right[data-v-40d5300a]{border-top-right-radius:.46875rem;border-bottom-right-radius:.46875rem;width:50%;height:100%;display:flex;justify-content:center;align-items:center;font-size:.78125rem;color:#fff}.container .title-map[data-v-40d5300a]{width:100%;height:20.3125rem;background-color:#e0e2e9;margin-top:1.5625rem;position:relative}.container .title-map .right-bad[data-v-40d5300a]{position:absolute;top:.3125rem;right:.625rem;width:1.5625rem;height:4.0625rem;display:flex;justify-content:center;align-items:center;flex-direction:column;background-color:#fff;z-index:1;border-radius:.625rem;font-size:.71875rem}.container .title-map .right-bad .right-bad-img[data-v-40d5300a]{width:.9375rem;height:1.71875rem}.container .title-map .title-img[data-v-40d5300a]{width:21.875rem;height:18.75rem;margin-left:.78125rem;margin-top:.78125rem}

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
import{r as a,c as s,w as t,i as e,o as l,a as o,q as n,s as u,F as r,n as c,b as _,t as d,m as i,v as f}from"./index-DVIfOFfO.js";import{_ as b}from"./_plugin-vue_export-helper.BCo6x5W8.js";const m=b({__name:"index",setup(b){const m=["NU","动态","我的"],p=a(0);return(a,b)=>{const v=e;return l(),s(v,{class:"login-container"},{default:t((()=>[o(v,{class:"botton-view"},{default:t((()=>[(l(),n(r,null,u(m,((a,s)=>o(v,{class:"array-father"},{default:t((()=>[o(v,{class:c(p.value===s?"bottom-button-target":"bottom-button"),onClick:a=>p.value=s},{default:t((()=>[o(v,{class:""},{default:t((()=>[_(d(a),1)])),_:2},1024)])),_:2},1032,["class","onClick"]),i(o(v,{class:"blue-heng"},null,512),[[f,p.value===s]])])),_:2},1024))),64))])),_:1})])),_:1})}}},[["__scopeId","data-v-0ae6d08b"]]);export{m as default};

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
import{y as e,r as n,c as o,w as s,z as t,i as a,o as c,b as i,t as r,q as l,s as p,F as u,a as d,f as h,g as f}from"./index-DVIfOFfO.js";import{o as m}from"./uni-app.es.DNqITeUz.js";import{u as g}from"./useWeChatAuth.s7uh5--2.js";import{_ as w}from"./_plugin-vue_export-helper.BCo6x5W8.js";const y=w({__name:"callback",setup(w){g();const y=e({name:"",openid:"",accessToken:""}),v=()=>{console.log("???"),h({url:"/pages/pay/index"})},k=n(""),I=()=>{const e=`https://www.focusnu.com/nursing-unit/h5Api/nuBizAdvisoryInfo/queryWeixinInfo?openId=${encodeURIComponent(y.openid)}&wechatName=${encodeURIComponent(y.name)}`;fetch(e).then((e=>e.json())).then((e=>{console.log("个人信息打印",e);const n=`${e.result.serverUrl}/weiXinPay/getUserInfo`,o={openid:y.openid,access_token:y.accessToken};console.log("???/",o),fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).then((e=>e.json())).then((e=>{k.value=e,console.log("",e)})).catch((e=>{console.error("请求失败:",e)})),j()}))},_=n([]),j=()=>{fetch("https://www.focusnu.com/nursing-unit/sys/sysDepart/queryInstitutionsList").then((e=>e.json())).then((e=>{_.value=[...e],console.log("机构打印",_.value)}))},x=n([]);return m((()=>{var e;const n=null==(e=window.location.href.split("?")[1])?void 0:e.split("#")[0],o={};n&&n.split("&").forEach((e=>{const[n,s]=e.split("=");o[n]=decodeURIComponent(s)})),console.log("解析到的 query 参数:",o),o.code&&(e=>{const n=`https://www.focusnu.com/nursing-unit/weixin/wechat/callback?code=${encodeURIComponent(e)}`;fetch(n).then((e=>e.json())).then((e=>{console.log("✅ 获取用户信息成功:",e),y.name=e.data.nickname,y.openid=e.data.openid,y.accessToken=e.accessToken,t({key:"openid",data:{openid:e.data.openid,accessToken:e.accessToken}}),I()})).catch((e=>{console.error("❌ 获取用户信息失败:",e)}))})(o.code)})),(e,n)=>{const h=a,m=f;return c(),o(h,{class:"callback-container"},{default:s((()=>[i(" 回调成功"+r(y.name)+r(y.openid)+" ",1),(c(!0),l(u,null,p(_.value,((e,n)=>(c(),o(h,{key:n},{default:s((()=>[d(h,{style:{"font-size":"30rpx","margin-top":"10rpx","font-weight":"700"},onClick:n=>(e=>{const n=`${e.serverUrl}/h5Api/nuBaseInfo/list`;fetch(n).then((e=>e.json())).then((e=>{x.value=[...e.result]})),t({key:"serverUrl",data:{url:e.serverUrl}});const o={openId:y.openid,serverUrl:e.serverUrl};console.log("???/",o),fetch("https://www.focusnu.com/nursing-unit/h5Api/nuBizAdvisoryInfo/editNuBizAdvisoryInfo",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).then((e=>e.json())).then((e=>{console.log("???",e)})).catch((e=>{console.error("请求失败:",e)}))})(e)},{default:s((()=>[i(r(e.departName),1)])),_:2},1032,["onClick"]),d(m,{style:{width:"60rpx",height:"60rpx"},src:`https://www.focusnu.com/nursing-unit/sys/common/static/${e.picUrl}`},null,8,["src"])])),_:2},1024)))),128)),(c(!0),l(u,null,p(x.value,((e,n)=>(c(),o(h,{key:n,onClick:v},{default:s((()=>[d(h,{style:{"font-size":"30rpx","margin-top":"10rpx","font-weight":"700"}},{default:s((()=>[i(r(e.nuName),1)])),_:2},1024)])),_:2},1024)))),128))])),_:1})}}},[["__scopeId","data-v-4644647c"]]);export{y as default};

View File

@ -0,0 +1 @@
import{r as e,G as o,c as n,w as s,H as t,J as c,z as a,i as r,o as i,b as l}from"./index-BMxaUgem.js";import{o as p}from"./uni-app.es.B5-OajNy.js";import{_ as u}from"./_plugin-vue_export-helper.BCo6x5W8.js";const d=u({__name:"callback",setup(u){e(0);const d=o({name:"",openid:"",accessToken:""});e("");const h=()=>{const e=`https://www.focusnu.com/nursing-unit/h5Api/nuBizAdvisoryInfo/queryWeixinInfo?openId=${encodeURIComponent(d.openid)}`;fetch(e).then((e=>e.json())).then((e=>{console.log("个人信息打印",e),c("token",e.result.token),c("serverUrl",e.result.serverUrl),console.log("???token存储",e.result.token);const o=`${e.result.serverUrl}/weiXinPay/getJsApiInfo`,n={access_token:d.accessToken};console.log("???/",n),fetch(o,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)}).then((e=>e.json())).then((e=>{console.log("???调取微信",e)})).catch((e=>{console.error("请求失败:",e)})),e.result.tel?a({url:"/pages/index/index"}):a({url:"/pages/login/phonebumber"}),m()}))},f=e([]),m=()=>{fetch("https://www.focusnu.com/nursing-unit/sys/sysDepart/queryInstitutionsList").then((e=>e.json())).then((e=>{f.value=[...e],console.log("机构打印",f.value)}))};return e([]),p((()=>{var e;const o=null==(e=window.location.href.split("?")[1])?void 0:e.split("#")[0],n={};o&&o.split("&").forEach((e=>{const[o,s]=e.split("=");n[o]=decodeURIComponent(s)})),console.log("解析到的 query 参数:",n),n.code&&(e=>{const o=`https://www.focusnu.com/nursing-unit/weixin/wechat/callback?code=${encodeURIComponent(e)}`;fetch(o).then((e=>e.json())).then((e=>{d.name=e.data.nickname,d.openid=e.data.openid,d.accessToken=e.accessToken,t({key:"openid",data:{openid:e.data.openid,accessToken:e.accessToken}}),h()})).catch((e=>{console.error("❌ 获取用户信息失败:",e)}))})(n.code)})),(e,o)=>{const t=r;return i(),n(t,{class:"login-container"},{default:s((()=>[l(" 页面跳转中,请稍后... ")])),_:1})}}},[["__scopeId","data-v-812fd514"]]);export{d as default};

View File

@ -0,0 +1 @@
import{r as e,p as a,c as l,w as s,s as t,i as u,o,a as c,b as n,t as d,q as i,u as r,F as v,m as f,v as p,d as m,e as _,T as g,g as h,x as b,I as x,y,z as k}from"./index-BMxaUgem.js";import{_ as w,a as I,b as j}from"./old.CKixGO1Z.js";import{o as C}from"./uni-app.es.B5-OajNy.js";import{s as S,c as V}from"./loginApi.Csw35X6S.js";import{_ as E}from"./_plugin-vue_export-helper.BCo6x5W8.js";const K=E({__name:"code",setup(E){const K=e(""),U=e(""),q=e(["","","",""]),z=e(-1),A=e(!1),B=e("rgba(0, 0, 0, 0.5)");function F(){A.value=!1}const M=e(""),T=()=>{const e=q.value.join("");4===e.length?(console.log("提交验证码:",e),M.value!=e&&(M.value=e,V({mobile:K.value,openId:y("openid").openid,smscode:e}).then((e=>{e.success?k({url:"/pages/index/index"}):t({title:"验证码错误",icon:"none",duration:2e3})})))):console.log("验证码未输入完整")},D=()=>{S({mobile:K.value,hkcode:U.value,smsmode:1}).then((e=>{e.success?(t({title:"发送成功",icon:"none",duration:2e3}),z.value=0,G.value=60,H=setInterval((()=>{G.value>0?G.value--:(clearInterval(H),H=null)}),1e3)):t({title:e.message,icon:"none",duration:2e3})}))},G=e(0);let H=null;return a((()=>{H&&clearInterval(H)})),C((e=>{K.value=e.mobile,U.value=e.hkcode,D()})),(e,a)=>{const t=h,y=u,k=x;return o(),l(y,{class:"login-container"},{default:s((()=>[c(y,{class:"title"},{default:s((()=>[c(t,{class:"title-imge",src:w}),c(y,{class:"title-font"},{default:s((()=>[c(y,{class:""},{default:s((()=>[n("您好,")])),_:1}),c(y,{class:""},{default:s((()=>[n("欢迎使用护理单元~")])),_:1})])),_:1})])),_:1}),c(t,{class:"photo-imge",src:I}),c(t,{class:"old-imge",src:j}),c(y,{class:"under-container"},{default:s((()=>[c(y,{class:"under-container-title"},{default:s((()=>[c(y,{class:"code-title"},{default:s((()=>[n(" 请输入验证码 ")])),_:1}),c(y,{class:"code-number"},{default:s((()=>[n(" 验证码已发送至"+d(K.value),1)])),_:1})])),_:1}),c(y,{class:"captcha-container"},{default:s((()=>[c(y,{class:"captcha-box"},{default:s((()=>[(o(!0),i(v,null,r(q.value,((e,a)=>(o(),l(y,{key:a,class:"captcha-item"},{default:s((()=>[c(k,{modelValue:q.value[a],"onUpdate:modelValue":e=>q.value[a]=e,class:"captcha-input",type:"number",maxlength:"4",placeholder:a<3?"":" ",onInput:e=>((e,a)=>{const l=a.detail.value||"";if(console.log("??????",a),4==l.length){const e=a.detail.value.toString().padStart(4,"0");q.value=e.split(""),z.value=3,b((()=>{T()}))}else if(2==l.length){q.value[e]="number"==typeof(s=q.value[e])?s%10:s,q.value[e]&&e<3&&(z.value=e+1);let a=!0;q.value.forEach((e=>{e||(a=!1)})),b((()=>{a&&T()}))}else{q.value[e]&&e<3&&(z.value=e+1);let a=!0;q.value.forEach((e=>{e||(a=!1)})),b((()=>{a&&T()}))}var s})(a,e),onKeydown:e=>((e,a)=>{"Backspace"!==a.key||q.value[e]||e>0&&(z.value=e-1)})(a,e),focus:z.value===a},null,8,["modelValue","onUpdate:modelValue","placeholder","onInput","onKeydown","focus"])])),_:2},1024)))),128))])),_:1})])),_:1}),c(y,{class:"under-view"},{default:s((()=>[f(c(y,{class:"right-blue",onClick:D},{default:s((()=>[n(" 重新发送 ")])),_:1},512),[[p,!G.value]]),f(c(y,{class:"right-white"},{default:s((()=>[n(d(G.value)+"S后重新发送 ",1)])),_:1},512),[[p,G.value]]),c(y,{class:"right-black",onClick:a[0]||(a[0]=e=>A.value=!0)},{default:s((()=>[n(" 收不到验证码 ")])),_:1})])),_:1})])),_:1}),c(g,{name:"fade"},{default:s((()=>[A.value?(o(),l(y,{key:0,class:"overlay",onClick:F,style:m({backgroundColor:B.value})},null,8,["style"])):_("",!0)])),_:1}),c(g,{name:"slide-up"},{default:s((()=>[A.value?(o(),l(y,{key:0,class:"modal"},{default:s((()=>[c(y,{class:"modal-title"},{default:s((()=>[n("收不到验证码")])),_:1}),c(y,{class:"model-p"},{default:s((()=>[c(y,{class:"text-view",style:{"font-weight":"600"}},{default:s((()=>[n("手机号可正常使用:")])),_:1}),c(y,{class:"text-view"},{default:s((()=>[n("1 是否输错手机号")])),_:1}),c(y,{class:"text-view"},{default:s((()=>[n("2 手机是否设置短信拦截/欠费/信号不好")])),_:1}),c(y,{class:"text-view"},{default:s((()=>[n("3 手机内存是否满了")])),_:1}),c(y,{class:"text-view"},{default:s((()=>[n("4 手机卡是否为物联卡而非SIM卡")])),_:1})])),_:1})])),_:1})):_("",!0)])),_:1})])),_:1})}}},[["__scopeId","data-v-f1b5ebad"]]);export{K as default};

View File

@ -1 +0,0 @@
import{r as e,p as a,c as l,w as s,i as t,o as u,a as c,b as o,t as n,q as d,s as r,F as i,m as f,v,d as _,e as p,T as m,g as h,u as g,I as w,x}from"./index-DVIfOFfO.js";import{_ as y,a as b,b as k}from"./old.CKixGO1Z.js";import{o as I}from"./uni-app.es.DNqITeUz.js";import{_ as j}from"./_plugin-vue_export-helper.BCo6x5W8.js";const V=j({__name:"code",setup(j){const V=e(""),C=e(["","","",""]),K=e(0),S=e(!1),U=e("rgba(0, 0, 0, 0.5)");function q(){S.value=!1}const B=()=>{const e=C.value.join("");4===e.length?(console.log("提交验证码:",e),x({url:"/pages/index/index"})):console.log("验证码未输入完整")},D=e(60);let E=null;return a((()=>{E&&clearInterval(E)})),I((e=>{V.value=e.phonenumber,(()=>{const e=`https://www.focusnu.com/nursing-unit/sys/randomImage/${Date.now()}`;fetch(e).then((e=>e.json())).then((e=>{console.log("code测试",e)}))})(),D.value=60,E=setInterval((()=>{D.value>0?D.value--:(clearInterval(E),E=null)}),1e3)})),(e,a)=>{const x=h,I=t,j=w;return u(),l(I,{class:"login-container"},{default:s((()=>[c(I,{class:"title"},{default:s((()=>[c(x,{class:"title-imge",src:y}),c(I,{class:"title-font"},{default:s((()=>[c(I,{class:""},{default:s((()=>[o("您好,")])),_:1}),c(I,{class:""},{default:s((()=>[o("欢迎使用护理单元~")])),_:1})])),_:1})])),_:1}),c(x,{class:"photo-imge",src:b}),c(x,{class:"old-imge",src:k}),c(I,{class:"under-container"},{default:s((()=>[c(I,{class:"under-container-title"},{default:s((()=>[c(I,{class:"code-title"},{default:s((()=>[o(" 请输入验证码 ")])),_:1}),c(I,{class:"code-number"},{default:s((()=>[o(" 验证码已发送至"+n(V.value),1)])),_:1})])),_:1}),c(I,{class:"captcha-container"},{default:s((()=>[c(I,{class:"captcha-box"},{default:s((()=>[(u(!0),d(i,null,r(C.value,((e,a)=>(u(),l(I,{key:a,class:"captcha-item"},{default:s((()=>[c(j,{modelValue:C.value[a],"onUpdate:modelValue":e=>C.value[a]=e,class:"captcha-input",type:"number",maxlength:"1",placeholder:a<3?"":" ",onInput:e=>(e=>{C.value[e]&&e<3&&(K.value=e+1);let a=!0;C.value.forEach((e=>{e||(a=!1)})),g((()=>{a&&B()}))})(a),onKeydown:e=>((e,a)=>{"Backspace"!==a.key||C.value[e]||e>0&&(K.value=e-1)})(a,e),focus:K.value===a},null,8,["modelValue","onUpdate:modelValue","placeholder","onInput","onKeydown","focus"])])),_:2},1024)))),128))])),_:1})])),_:1}),c(I,{class:"under-view"},{default:s((()=>[f(c(I,{class:"right-blue"},{default:s((()=>[o(" 重新发送 ")])),_:1},512),[[v,!D.value]]),f(c(I,{class:"right-white"},{default:s((()=>[o(n(D.value)+"S后重新发送 ",1)])),_:1},512),[[v,D.value]]),c(I,{class:"right-black",onClick:a[0]||(a[0]=e=>S.value=!0)},{default:s((()=>[o(" 收不到验证码 ")])),_:1})])),_:1})])),_:1}),c(m,{name:"fade"},{default:s((()=>[S.value?(u(),l(I,{key:0,class:"overlay",onClick:q,style:_({backgroundColor:U.value})},null,8,["style"])):p("",!0)])),_:1}),c(m,{name:"slide-up"},{default:s((()=>[S.value?(u(),l(I,{key:0,class:"modal"},{default:s((()=>[c(I,{class:"modal-title"},{default:s((()=>[o("收不到验证码")])),_:1}),c(I,{class:"model-p"},{default:s((()=>[c(I,{class:"text-view",style:{"font-weight":"600"}},{default:s((()=>[o("手机号可正常使用:")])),_:1}),c(I,{class:"text-view"},{default:s((()=>[o("1 是否输错手机号")])),_:1}),c(I,{class:"text-view"},{default:s((()=>[o("2 手机是否设置短信拦截/欠费/信号不好")])),_:1}),c(I,{class:"text-view"},{default:s((()=>[o("3 手机内存是否满了")])),_:1}),c(I,{class:"text-view"},{default:s((()=>[o("4 手机卡是否为物联卡而非SIM卡")])),_:1})])),_:1})])),_:1})):p("",!0)])),_:1})])),_:1})}}},[["__scopeId","data-v-edc97756"]]);export{V as default};

View File

@ -0,0 +1 @@
import{r as l,c as e,w as a,i as s,o as t,a as o,b as c,n,d as u,e as i,T as d,f as r,g as f,h as _}from"./index-BMxaUgem.js";import{_ as p,a as m,b as g}from"./old.CKixGO1Z.js";import{_ as v}from"./_plugin-vue_export-helper.BCo6x5W8.js";const k=encodeURIComponent("https://www.focusnu.com/wechat/thd/#/pages/login/callback");const C=v({__name:"index",setup(v){const C=l(!1),b=l(!1),{login:h}=(l(""),l(""),l(null),{login:function(l="snsapi_userinfo",e=""){const a=`https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8fc3e4305d2fbf0b&redirect_uri=${k}&response_type=code&scope=${l}&state=${e}#wechat_redirect`;window.location.href=a}}),w=l("rgba(0, 0, 0, 0.5)");function x(){b.value=!1}const y=()=>{C.value?h():b.value=!0},j=()=>{r({url:"/pages/login/protocol"})},$=()=>{r({url:"/pages/index/index"})},q=()=>{r({url:"/pages/selectunit/map"})};return(l,r)=>{const v=f,k=s,h=_;return t(),e(k,{class:"login-container"},{default:a((()=>[o(k,{class:"title"},{default:a((()=>[o(v,{class:"title-imge",src:p,onClick:$}),o(k,{class:"title-font"},{default:a((()=>[o(k,{class:""},{default:a((()=>[c("您好,")])),_:1}),o(k,{class:""},{default:a((()=>[c("欢迎使用护理单元~")])),_:1})])),_:1})])),_:1}),o(v,{class:"photo-imge",src:m}),o(v,{class:"old-imge",src:g,onClick:q}),o(k,{class:"under-container"},{default:a((()=>[o(k,{class:"under-container-title"},{default:a((()=>[o(k,{class:n(C.value?"radio-circle-target":"radio-circle"),onClick:r[0]||(r[0]=l=>C.value=!C.value)},null,8,["class"]),o(k,{style:{"margin-left":"17rpx"},class:"radio-circle-font",onClick:r[1]||(r[1]=l=>C.value=!C.value)},{default:a((()=>[c("同意")])),_:1}),o(k,{class:"radio-circle-blue",onClick:j},{default:a((()=>[c(" 《护理单元使用条款》 ")])),_:1}),o(k,{class:"radio-circle-font",onClick:r[2]||(r[2]=l=>C.value=!C.value)},{default:a((()=>[c("并授权NU获取本机号码")])),_:1})])),_:1}),o(k,{class:"button-blue",onClick:y},{default:a((()=>[c(" 一键登录 ")])),_:1})])),_:1}),o(d,{name:"fade"},{default:a((()=>[b.value?(t(),e(k,{key:0,class:"overlay",onClick:x,style:u({backgroundColor:w.value})},null,8,["style"])):i("",!0)])),_:1}),o(d,{name:"slide-up"},{default:a((()=>[b.value?(t(),e(k,{key:0,class:"modal"},{default:a((()=>[o(k,{class:"modal-title"},{default:a((()=>[c("服务协议及隐私保护")])),_:1}),o(k,{class:"model-p"},{default:a((()=>[o(h,null,{default:a((()=>[c("  为了更好地保障您的合法权益,请阅读并同意以下协议")])),_:1}),o(h,{style:{color:"rgb(0,141,255)"},onClick:j},{default:a((()=>[c("《护理单元使用条款》")])),_:1}),o(h,null,{default:a((()=>[c(",同意后将自动登录。")])),_:1})])),_:1}),o(k,{class:"model-down"},{default:a((()=>[o(k,{class:"model-white",onClick:x},{default:a((()=>[c(" 不同意 ")])),_:1}),o(k,{class:"model-blue",onClick:r[3]||(r[3]=l=>{x(),C.value=!0})},{default:a((()=>[c(" 同意 ")])),_:1})])),_:1})])),_:1})):i("",!0)])),_:1})])),_:1})}}},[["__scopeId","data-v-71ce103a"]]);export{C as default};

View File

@ -1 +0,0 @@
import{r as l,c as a,w as e,i as s,o as t,a as o,b as c,n as u,d as n,e as d,T as r,f as i,g as f,h as _}from"./index-DVIfOFfO.js";import{_ as m,a as p,b as v}from"./old.CKixGO1Z.js";import{u as g}from"./useWeChatAuth.s7uh5--2.js";import{_ as b}from"./_plugin-vue_export-helper.BCo6x5W8.js";const k=b({__name:"index",setup(b){const k=l(!1),C=l(!1);g();const h=l("rgba(0, 0, 0, 0.5)");function y(){C.value=!1}const x=()=>{k.value?i({url:"/pages/login/phonebumber"}):C.value=!0},j=()=>{console.log("????"),i({url:"/pages/login/protocol"})};return(l,i)=>{const g=f,b=s,w=_;return t(),a(b,{class:"login-container"},{default:e((()=>[o(b,{class:"title"},{default:e((()=>[o(g,{class:"title-imge",src:m}),o(b,{class:"title-font"},{default:e((()=>[o(b,{class:""},{default:e((()=>[c("您好,")])),_:1}),o(b,{class:""},{default:e((()=>[c("欢迎使用护理单元~")])),_:1})])),_:1})])),_:1}),o(g,{class:"photo-imge",src:p}),o(g,{class:"old-imge",src:v}),o(b,{class:"under-container"},{default:e((()=>[o(b,{class:"under-container-title"},{default:e((()=>[o(b,{class:u(k.value?"radio-circle-target":"radio-circle"),onClick:i[0]||(i[0]=l=>k.value=!k.value)},null,8,["class"]),o(b,{style:{"margin-left":"17rpx"},class:"radio-circle-font",onClick:i[1]||(i[1]=l=>k.value=!k.value)},{default:e((()=>[c("同意")])),_:1}),o(b,{class:"radio-circle-blue",onClick:j},{default:e((()=>[c(" 《护理单元使用条款》 ")])),_:1}),o(b,{class:"radio-circle-font",onClick:i[2]||(i[2]=l=>k.value=!k.value)},{default:e((()=>[c("并授权NU获取本机号码")])),_:1})])),_:1}),o(b,{class:"button-blue",onClick:x},{default:e((()=>[c(" 一键登录 ")])),_:1})])),_:1}),o(r,{name:"fade"},{default:e((()=>[C.value?(t(),a(b,{key:0,class:"overlay",onClick:y,style:n({backgroundColor:h.value})},null,8,["style"])):d("",!0)])),_:1}),o(r,{name:"slide-up"},{default:e((()=>[C.value?(t(),a(b,{key:0,class:"modal"},{default:e((()=>[o(b,{class:"modal-title"},{default:e((()=>[c("服务协议及隐私保护")])),_:1}),o(b,{class:"model-p"},{default:e((()=>[o(w,null,{default:e((()=>[c("  为了更好地保障您的合法权益,请阅读并同意以下协议")])),_:1}),o(w,{style:{color:"rgb(0,141,255)"},onClick:j},{default:e((()=>[c("《护理单元使用条款》")])),_:1}),o(w,null,{default:e((()=>[c(",同意后将自动登录。")])),_:1})])),_:1}),o(b,{class:"model-down"},{default:e((()=>[o(b,{class:"model-white",onClick:y},{default:e((()=>[c(" 不同意 ")])),_:1}),o(b,{class:"model-blue",onClick:i[3]||(i[3]=l=>{y(),k.value=!0})},{default:e((()=>[c(" 同意 ")])),_:1})])),_:1})])),_:1})):d("",!0)])),_:1})])),_:1})}}},[["__scopeId","data-v-8017333f"]]);export{k as default};

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
import{r as e,j as a,o as t,c as l,w as n,a as s,d as o,k as u,l as r,g as i,i as c,b as v,m as d,v as h,e as p,f as m,I as f}from"./index-DVIfOFfO.js";import{_ as g,a as w,b as _}from"./old.CKixGO1Z.js";import{o as x}from"./uni-app.es.DNqITeUz.js";import{_ as b}from"./_plugin-vue_export-helper.BCo6x5W8.js";const y="/wechat/thd/assets/1-BjS2h1iy.png",$=b({__name:"huakuai",setup(v){const d=100,h=e(null),p=e(null),m=e(400),f=e(600),g=e(0),w=e(0),_=e(0),b=e(!1),$=e(0);const k=`path('${L=d,`\n M20 0\n h${L/3-20}\n a20 20 0 0 1 0 40\n h${L/3}\n a20 20 0 0 0 0 -40\n h${L/3-20}\n v${L/3-20}\n a20 20 0 0 1 -40 0\n v${L/3}\n a20 20 0 0 0 40 0\n v${L/3-20}\n h-${L/3-20}\n a20 20 0 0 1 0 -40\n h-${L/3}\n a20 20 0 0 0 0 40\n h-${L/3-20}\n z\n `}')`;var L;function E(){r().in(h.value).select(".bg-image").boundingClientRect((e=>{e?(console.log("图片宽高:",e.width,e.height),m.value=2*e.width,f.value=2*e.height,g.value=Math.random()*(m.value-200)+d,w.value=f.value/2,_.value=0,console.log("originX:",g.value,"originY:",w.value)):console.error("无法获取.bg-image尺寸")})).exec()}function C(e){b.value=!0,$.value=e.touches?2*e.touches[0].clientX:2*e.clientX,window.addEventListener("mousemove",M),window.addEventListener("mouseup",j),window.addEventListener("touchmove",M),window.addEventListener("touchend",j)}function M(e){if(!b.value)return;let a=(e.touches?2*e.touches[0].clientX:2*e.clientX)-$.value;a=Math.max(0,Math.min(a,m.value-d)),_.value=a}function j(){b.value=!1,window.removeEventListener("mousemove",M),window.removeEventListener("mouseup",j),window.removeEventListener("touchmove",M),window.removeEventListener("touchend",j),Math.abs(_.value-g.value)<20?console.log("验证成功"):_.value=0}const I=e("");return x((()=>{let e=Math.floor(4*Math.random());const a=["/wechat/thd/assets/0-DC0meffC.png",y,y,y];I.value=a[e]})),a((()=>{window.removeEventListener("mousemove",M),window.removeEventListener("mouseup",j),window.removeEventListener("touchmove",M),window.removeEventListener("touchend",j)})),(e,a)=>{const r=i,v=c;return t(),l(v,{class:"captcha-container",ref_key:"container",ref:h},{default:n((()=>[s(v,{class:"captcha-image",style:{position:"relative",width:"100%",height:"400rpx",overflow:"hidden"}},{default:n((()=>[s(r,{src:I.value,class:"bg-image",mode:"widthFix",onLoad:E},null,8,["src"]),s(v,{class:"overlay",style:o({width:m.value+"rpx",height:f.value+"rpx"})},{default:n((()=>[s(v,{class:"hole",style:o({top:w.value+"rpx",left:g.value+"rpx",width:"100rpx",height:"100rpx",clipPath:k,transform:"translate(-50%, -50%)",backgroundColor:"rgba(0,0,0,0.3)"})},null,8,["style"]),s(v,{class:"piece",style:o({top:w.value+"rpx",left:_.value+"rpx",width:"100rpx",height:"100rpx",backgroundImage:`url(${I.value})`,backgroundSize:m.value+"rpx "+f.value+"rpx",backgroundPosition:`-${g.value}rpx -${w.value}rpx`,clipPath:k,transform:"translate(-50%, -50%)"})},null,8,["style"])])),_:1},8,["style"])])),_:1}),s(v,{class:"slider-bar"},{default:n((()=>[s(v,{class:"slider-button",ref_key:"btn",ref:p,onTouchstart:u(C,["prevent"]),onMousedown:u(C,["prevent"]),style:o({left:_.value+"rpx",maxWidth:m.value-d+"rpx"})},null,8,["style"])])),_:1})])),_:1},512)}}},[["__scopeId","data-v-9fb232f4"]]),k=b({__name:"phonebumber",setup(a){const o=e(!1),r=()=>{m({url:`/pages/login/code?phonenumber=${x.value}`})};const x=e(""),b=e(!1),y=e=>{var a;console.log("????",e.detail.value),a=e.detail.value,/^\d{11}$/.test(a.toString())?(x.value=e.detail.value,b.value=!0):b.value=!1};return(e,a)=>{const m=i,x=c,k=f;return t(),l(x,{class:"login-container"},{default:n((()=>[s(x,{class:"title"},{default:n((()=>[s(m,{class:"title-imge",src:g}),s(x,{class:"title-font"},{default:n((()=>[s(x,{class:""},{default:n((()=>[v("您好,")])),_:1}),s(x,{class:""},{default:n((()=>[v("欢迎使用护理单元~")])),_:1})])),_:1})])),_:1}),s(m,{class:"photo-imge",src:w}),s(m,{class:"old-imge",src:_}),s(x,{class:"under-container"},{default:n((()=>[s(x,{class:"under-container-title"},{default:n((()=>[s(x,{class:"under-container-input"},{default:n((()=>[s(x,{class:"input-left"},{default:n((()=>[v("+86")])),_:1}),s(k,{type:"number",style:{width:"600rpx","font-size":"33rpx"},maxlength:"11",placeholder:"请输入绑定手机号",onInput:y})])),_:1})])),_:1}),s(x,{class:"button-blue",onClick:a[0]||(a[0]=e=>o.value=!0)},{default:n((()=>[v(" 滑块校验 ")])),_:1}),d(s(x,{class:"button-blue",onClick:r},{default:n((()=>[v(" 获得验证码 ")])),_:1},512),[[h,b.value]]),d(s(x,{class:"button-gray"},{default:n((()=>[v(" 获得验证码 ")])),_:1},512),[[h,!b.value]])])),_:1}),o.value?(t(),l(x,{key:0,class:"bg-mask",onClick:a[2]||(a[2]=e=>o.value=!1)},{default:n((()=>[s($,{onClick:a[1]||(a[1]=u((()=>{}),["stop"]))})])),_:1})):p("",!0)])),_:1})}}},[["__scopeId","data-v-a00813dc"]]);export{k as default};

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More