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

View File

@ -3,7 +3,7 @@ import { ref } from 'vue';
import request from '@/request/index.js';
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() {
const code = ref('');

View File

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

View File

@ -37,9 +37,27 @@
}
},
{
"path": "pages/map/index",
"path": "pages/addoldman/hukou",
"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>
<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="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 :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}}
</view>
</view>
<view v-show="itemTarget===index" class="blue-heng"></view>
<!-- <view v-show="itemTarget===index" class="blue-heng"></view> -->
</view>
</view>
</view>
@ -17,10 +180,139 @@
<script setup>
import {
reactive,
ref
ref,
onMounted,
onUnmounted
} from 'vue';
import tu from '@/static/index/tu.png'
import request from '@/request/index.js' // uni.request
const itemArray = ["NU", "动态", "我的"];
const buttonArray = ref(["护理流程", "服务指令", "实时监控", "客户信息", "缴费账单", "充值缴费", "退住管理"])
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>
<style lang="scss" scoped>
@ -31,30 +323,39 @@
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;
// margin-top: 50rpx;
// margin: 0 auto;
// margin-top: 60rpx;
height: 120rpx;
width: 100%;
// border-radius: 60rpx;
background-color: #fff;
// background-color: greenyellow;
display: flex;
justify-content: space-between;
font-weight: 500;
z-index: 999;
.bottom-button {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.bottom-button-target {
@ -64,6 +365,7 @@
justify-content: center;
align-items: center;
color: rgb(42, 133, 235);
flex-direction: column;
}
.blue-heng {
@ -77,4 +379,479 @@
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>

View File

@ -1,6 +1,21 @@
<template>
<view class="callback-container">
回调成功{{ceshi.name}}{{ceshi.openid}}
<view class="login-container">
页面跳转中请稍后...
<!-- 底部的栏为啥这样写是因为要做左右拉动 -->
<!-- <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}} -->
<!-- <text v-if="!userInfo">授权中...</text>
<view v-else>
@ -8,7 +23,7 @@
<text v-if="userInfo.nickname">昵称: {{ userInfo.nickname }}</text>
<image v-if="userInfo.headimgurl" :src="userInfo.headimgurl" class="avatar" />
</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)">
{{item.departName}}
</view>
@ -19,47 +34,49 @@
<view style="font-size: 30rpx;margin-top: 10rpx;font-weight: 700;">
{{item.nuName}}
</view>
</view>
</view>
</view>
</view> -->
</template>
<script setup>
import {
onLoad
} from '@dcloudio/uni-app';
import {
useWeChatAuth
} from '@/compontent/useWeChatAuth.js';
// import {
// useWeChatAuth
// } from '@/compontent/useWeChatAuth.js';
import request from '@/request/index.js';
import {
reactive,
ref
} from 'vue';
const {
fetchUserInfo,
openid,
userInfo
} = useWeChatAuth();
import {getList} from "@/api/loginApi.js"
const itemArray = ["NU", "动态", "我的"];
const itemTarget = ref(0);
// const {
// fetchUserInfo,
// openid,
// userInfo
// } = useWeChatAuth();
const ceshi = reactive({
name: "",
openid: "",
accessToken: ""
})
const jumpto = () => {
console.log("???")
uni.navigateTo({
url: "/pages/pay/index"
});
}
// const jumpto = () => {
// console.log("???")
// uni.navigateTo({
// url: "/pages/pay/index"
// });
// }
const getOpenId = (code) => {
const url = `https://www.focusnu.com/nursing-unit/weixin/wechat/callback?code=${encodeURIComponent(code)}`;
fetch(url)
.then(res => res.json())
.then(data => {
console.log("✅ 获取用户信息成功:", data);
.then(data => {
ceshi.name = data.data.nickname
ceshi.openid = data.data.openid
ceshi.accessToken = data.accessToken
@ -81,38 +98,74 @@
const look = ref("")
const getUserMessage = () => {
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)
.then(res => res.json())
.then(data => {
console.log("个人信息打印", data)
// serve.value = data.result.serverUrl
const urlpost = `${data.result.serverUrl}/weiXinPay/getUserInfo`;
const payload = {
openid: ceshi.openid,
uni.setStorageSync('token', data.result.token);
uni.setStorageSync('serverUrl', data.result.serverUrl);
console.log("???token存储",data.result.token)
// uni.getStorageSync('token')
const post = `${data.result.serverUrl}/weiXinPay/getJsApiInfo`;
const pay = {
access_token: ceshi.accessToken,
// serverUrl: serve.value
};
console.log("???/", payload)
fetch(urlpost, {
console.log("???/", pay)
fetch(post, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
body: JSON.stringify(pay)
})
.then(res => res.json())
.then(data => {
// secondArray.value = [...data.result];
look.value = data
console.log("", data)
console.log("???调取微信", data)
})
.catch(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()
})
@ -179,13 +232,12 @@
if (query.code) {
getOpenId(query.code)
// fetchUserInfo(query.code)
}
});
</script>
<style scoped>
<style scoped lang="scss">
.callback-container {
padding: 24px;
}
@ -196,4 +248,57 @@
border-radius: 40px;
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>

View File

@ -15,21 +15,21 @@
请输入验证码
</view>
<view class="code-number">
验证码已发送至{{ phonenumber }}
验证码已发送至{{ mobile }}
</view>
</view>
<view class="captcha-container">
<view class="captcha-box">
<view v-for="(digit, index) in captcha" :key="index" class="captcha-item">
<input v-model="captcha[index]" class="captcha-input" type="number" maxlength="1"
:placeholder="index < 3 ? '' : ' '" @input="handleInput(index)"
<input v-model="captcha[index]" class="captcha-input" type="number" maxlength="4"
:placeholder="index < 3 ? '' : ' '" @input="handleInput(index, $event)"
@keydown="handleKeydown(index, $event)" :focus="focusedIndex === index" />
</view>
</view>
</view>
<view class="under-view">
<view class="right-blue" v-show="!countdown">
<view class="right-blue" v-show="!countdown" @click="getcode">
重新发送
</view>
<view class="right-white" v-show="countdown">
@ -44,7 +44,7 @@
<transition name="fade">
<view v-if="isFadingOut" class="overlay" @click="closeModal" :style="{ backgroundColor: maskColor }" />
</transition>
<!-- 底部弹窗 -->
<transition name="slide-up">
<view v-if="isFadingOut" class="modal">
@ -66,40 +66,85 @@
nextTick,
reactive,
ref,
onUnmounted
onUnmounted
} from 'vue';
import {
onLoad
} 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 focusedIndex = ref(0); //
const focusedIndex = ref(-1); //
const isFadingOut = ref(false);
// rgba
const maskColor = ref('rgba(0, 0, 0, 0.5)')
function closeModal() {
isFadingOut.value = false
}
//
const handleInput = (index) => {
if (captcha.value[index]) {
if (index < 3) {
focusedIndex.value = index + 1; //
}
function filterToSingleDigit(number) {
if (typeof number === 'number') {
return number % 10; //
}
let isFour = true;
captcha.value.forEach(number=>{
if(!number){
isFour = false;
}
})
nextTick(()=>{
if(isFour){
return number; // number
}
//
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 (index < 3) {
focusedIndex.value = index + 1; //
}
}
})
let isFour = true;
captcha.value.forEach(number => {
if (!number) {
isFour = false;
}
})
nextTick(() => {
if (isFour) {
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,74 +155,89 @@
}
}
};
const rightCode = ref("")
//
const submitCaptcha = () => {
const code = captcha.value.join('');
if (code.length === 4) {
console.log('提交验证码:', code);
uni.reLaunch({
url: `/pages/index/index`
});
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`
});
} else {
uni.showToast({
title: '验证码错误',
icon: 'none', //
duration: 2000 //
})
}
})
}
//
} else {
console.log('验证码未输入完整');
}
};
const getcode = () =>{
// uni.getStorage({
// key: 'serverUrl',
// success: (res) => {
// // res.data { url: '...' }
// const { url } = res.data;
// console.log(' serverUrl', url);
// const url = `${url}/h5Api/nuBaseInfo/list`;
// fetch(url)
// .then(res => res.json())
// .then(data => {
// secondArray.value = [...data.result]
// })
// //
// },
// 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)
})
const getcode = () => {
smsCode({
mobile: mobile.value,
hkcode: hkcode.value,
smsmode:1
}).then(res => {
if (res.success) {
uni.showToast({
title: '发送成功',
icon: 'none', //
duration: 2000 //
})
focusedIndex.value = 0;
//
countdown.value = 60;
timerId = setInterval(() => {
if (countdown.value > 0) {
countdown.value--;
} else {
clearInterval(timerId);
timerId = null;
}
}, 1000);
} else {
uni.showToast({
title: res.message,
icon: 'none', //
duration: 2000 //
})
}
})
}
//
const countdown = ref(60);
const countdown = ref(0);
let timerId = null;
//
onUnmounted(() => {
if (timerId) {
clearInterval(timerId);
}
if (timerId) {
clearInterval(timerId);
}
});
onLoad((options) => {
phonenumber.value = options.phonenumber;
mobile.value = options.mobile;
hkcode.value = options.hkcode;
getcode()
//
countdown.value = 60;
timerId = setInterval(() => {
if (countdown.value > 0) {
countdown.value--;
} else {
clearInterval(timerId);
timerId = null;
}
}, 1000);
});
</script>
@ -329,27 +389,31 @@
border-color: #00C9FF;
}
.right-blue{
.right-blue {
// float: right;
color: #0083FF;
margin-left: 60rpx;
}
.right-white{
color: rgb(194,198,211);
.right-white {
color: rgb(194, 198, 211);
margin-left: 60rpx;
}
.right-black{
.right-black {
// float: right;
// color: #0083FF;
margin-right: 80rpx;
color: black;
}
.under-view{
.under-view {
width: 100%;
margin-top: 10rpx;
display: flex;
justify-content: space-between;
}
/* 遮罩 */
.overlay {
position: fixed;
@ -359,7 +423,7 @@
height: 100%;
z-index: 998;
}
/* 弹窗 */
.modal {
position: fixed;
@ -375,27 +439,27 @@
display: flex;
flex-direction: column;
align-items: center;
.modal-title {
font-size: 32rpx;
font-weight: 700;
margin: 50rpx 0;
margin-bottom: 30rpx;
}
.model-p {
padding: 0 50rpx;
width: 100%;
font-size: 30rpx;
}
.model-down {
display: flex;
width: 100%;
justify-content: space-between;
padding: 0 50rpx;
margin-top: 40rpx;
.model-white {
border-radius: 50rpx;
width: 300rpx;
@ -407,7 +471,7 @@
justify-content: center;
align-items: center;
}
.model-blue {
border-radius: 50rpx;
width: 300rpx;
@ -421,39 +485,40 @@
}
}
}
/* 动画:遮罩淡入淡出 */
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.3s;
}
.fade-enter-from,
.fade-leave-to {
opacity: 0;
}
.fade-enter-to,
.fade-leave-from {
opacity: 1;
}
/* 动画:弹窗上滑 */
.slide-up-enter-active,
.slide-up-leave-active {
transition: transform 0.3s;
}
.slide-up-enter-from,
.slide-up-leave-to {
transform: translateY(100%);
}
.slide-up-enter-to,
.slide-up-leave-from {
transform: translateY(0);
}
.text-view{
.text-view {
margin-bottom: 20rpx;
}
</style>

View File

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

View File

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

View File

@ -60,7 +60,8 @@
}
}
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 = {
title: "测试",
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
@ -9,10 +9,10 @@ export default (params) => {
let method = params.method || "get";
let data = params.data || {};
let header = {
'Blade-Auth': uni.getStorageSync('token') || '',
'X-Access-Token': uni.getStorageSync('token') || '',
'Content-Type': 'application/json;charset=UTF-8',
'Authorization': 'Basic c2FiZXI6c2FiZXJfc2VjcmV0',
'Tenant-Id': uni.getStorageSync('tenantId') || 'xxx', // avue配置相关
...params.header
}
return new Promise((resolve, reject) => {
@ -25,6 +25,7 @@ export default (params) => {
success(response) {
const res = response
// 根据返回的状态码做出对应的操作
if (res.statusCode == 200) {
resolve(res.data);
} else {
@ -38,7 +39,7 @@ export default (params) => {
success() {
setTimeout(() => {
uni.navigateTo({
url: "/pages/login/login",
url: "/pages/login/index",
})
}, 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