hldy_app_mini/pages/watch/settings/saoma.vue

495 lines
9.9 KiB
Vue
Raw Normal View History

2025-11-05 15:59:48 +08:00
<template>
<view class="index-content-other">
<view class="index-content-right" @click="goback">
<image class="back-img" :src="`/static/index/settings/back.png`" />
返回
</view>
<view class="saomiao">
<view class="card" v-if="allitem.nuName">
<view class="main-title">
<view class="main-title-font" style="font-weight: 600;font-size: 40rpx;">
{{allitem.nuName}}
</view>
<view class="video-father">
<image class="edit-img" @click="" src="/static/index/leida/play.png" />
</view>
</view>
<view style="display: flex;justify-content: center;width: 100%;">
<view class="blue-button" style="width: 200rpx;height: 70rpx;margin-top: 50rpx;"
@click="allitem={} ">
关闭
</view>
<view class="blue-button" style="width: 200rpx;height: 70rpx;margin-top: 50rpx;" @click="rename()">
重命名
</view>
</view>
<view class="card-tags">
<view style="margin-left: 80rpx;">
NUID:{{allitem.nuId}}
</view>
</view>
<view class="play-img">
护理单元
</view>
</view>
</view>
<view class="popup-any" v-show="isshowchange" :style="isdonghua?{opacity:1}:{opacity:0}">
<view class="mask" @click="isdonghua=false"></view>
<view class="rename-father">
<view class="rename-title">
重命名
</view>
<view style="width: 100%;margin-left: 5rpx;margin-bottom: 20rpx;">
NUID:{{savenuId}}
</view>
<view class="rename-input">
<input class="uni-input" placeholder="请重新命名" v-model="savevalue" @confirm="changename" />
<image v-show="savevalue" class="right-img" src="@/static/index/quxiao.png" @click="savevalue=``" />
</view>
<view class="blue-button" style="width: 200rpx;height: 70rpx;margin-top: 40rpx;" @click="changename">
确定
</view>
</view>
</view>
</view>
<image class="big-bgc" src="@/static/kuai.png" v-if="!allitem.nuName" />
<view class="big-img" @click="onScan" v-if="!allitem.nuName">
<image style="width: 100%;height: 100%;" src="@/static/sao.png" />
<view class="big-font">
点击扫描区域二维码
</view>
</view>
<image class="big-QR" src="@/static/qr.png" @click="onScan" v-if="!allitem.nuName" />
<view class="index-content-down">
长春市朝阳区久泰开运养老服务有限公司
</view>
</template>
<script setup lang="ts">
import { ref, onMounted, watch, nextTick } from 'vue'
import { getqueryinfoByBuId, updateBaseInfo } from "./api.js"
const goback = () => {
uni.navigateBack()
}
const allitem = ref({})
function onScan() {
uni.scanCode({
// 仅使用相机扫码,设置为 false 则可以从相册选择图片扫码(部分平台可能不支持)
onlyFromCamera: true,
scanType: ['qrCode', 'barCode'],
success(res) {
if (res.result) {
uuid.value = res.result
getqueryinfoByBuId(uuid.value).then((res : any) => {
// console.log("zzz",res.result)
if (res.success) {
allitem.value = res.result
} else {
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
}
console.log("chenggong", res.result)
},
fail(err) {
uni.showToast({ title: '扫码失败:' + err.errMsg, icon: 'none' })
}
})
}
const uuid = ref("")
const isshowchange = ref(false)
const isdonghua = ref(false);
const savevalue = ref("");
const savenuId = ref("")
const rename = () => {
savevalue.value = allitem.value.nuName;
savenuId.value = allitem.value.nuId;
isdonghua.value = false;
isshowchange.value = true;
// savevalue.value = ""
setTimeout(()=>{
isdonghua.value = true;
},50)
// console.log("dianji")
}
const changename = () => {
if (savevalue.value) {
let data = {
id:allitem.value.id,
nuName:savevalue.value
}
console.log("????",data)
updateBaseInfo(data).then((res:any)=>{
if(res.success){
getqueryinfoByBuId(uuid.value).then((res : any) => {
// console.log("zzz",res.result)
if (res.success) {
allitem.value = res.result;
isshowchange.value = false;
isdonghua.value = false
} else {
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
}
})
}
}
</script>
<style scoped lang="less">
.index-content-other {
width: 100%;
height: 100%;
transition: opacity 1s ease;
position: relative;
background-color: #EFF0F4;
}
.index-content-down {
// width: calc(100% - 60rpx);
// height: 100rpx;
position: absolute;
bottom: 40rpx;
left: 50%;
transform: translateX(-50%);
}
.index-content-right {
width: 100%;
border-radius: 50rpx;
display: flex;
align-items: center;
padding-top: 100rpx;
font-size: 32rpx;
position: relative;
.index-content-title {
position: absolute;
top: 60rpx;
left: 60rpx;
display: flex;
align-items: center;
.shu {
width: 20rpx;
height: 50rpx;
background: linear-gradient(to right, #0052C2, #00B4FF);
border-radius: 20rpx;
margin-right: 30rpx;
}
.shu-font {
color: #415273;
font-size: 35rpx;
}
}
}
.saomiao {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: flex;
z-index: 1;
}
.blue-button {
// margin-top: 20rpx;
margin-left: 30rpx;
width: 170rpx;
height: 90rpx;
border-radius: 40rpx;
display: flex;
justify-content: center;
align-items: center;
color: #007CFF;
font-size: 30rpx;
background-color: #ddf0ff;
border: 1rpx solid #007CFF;
}
.big-ball {
width: 200rpx;
height: 200rpx;
position: absolute;
top: 50%;
left: -55rpx;
transform: translateY(-50%);
border-radius: 50%;
background-color: rgb(219, 228, 246);
.ball {
width: 150rpx;
height: 150rpx;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border-radius: 50%;
background-color: rgb(207, 221, 241);
}
}
.back-img {
width: 30rpx;
height: 30rpx;
margin-left: 100rpx;
margin-right: 20rpx;
}
.big-bgc {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 1800rpx;
height: 900rpx;
}
.big-img {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 350rpx;
height: 350rpx;
&::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
animation: scanMove 1.3s ease-in-out infinite;
z-index: 1001;
height: 80rpx; // 尾巴长度
background: linear-gradient(to bottom,
rgba(5, 170, 254, 0.6),
rgba(5, 170, 254, 0.1),
transparent);
will-change: transform;
}
}
.big-QR {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 300rpx;
height: 300rpx;
}
.big-font {
position: absolute;
// bottom: -50rpx;
color: #888A8B;
left: 0;
bottom: -80rpx;
// width: 300rpx;
font-size: 32rpx;
width: 100%;
display: flex;
justify-content: center;
// transform: translateX(-50%);
}
// 扫描动画关键帧
@keyframes scanMove {
0% {
top: 5%;
}
100% {
top: 95%;
}
}
.card {
width: 600rpx;
margin-left: 4%;
height: 450rpx;
box-shadow: 3rpx 6rpx 12rpx 3rpx rgba(206, 206, 206, 0.5);
background-color: #f4f5f7;
border-radius: 30rpx;
margin-top: 5rpx;
margin-bottom: 35rpx;
padding: 0 25rpx;
position: relative;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
overflow: hidden;
}
.card-title {
width: 100%;
height: 130rpx;
display: flex;
align-items: center;
justify-content: space-between;
}
.main-title {
display: flex;
align-items: center;
margin-top: 70rpx;
margin-bottom: 10rpx;
}
.video-father {
width: 60rpx;
height: 60rpx;
display: flex;
justify-content: center;
align-items: center;
margin-left: 15rpx;
}
.edit-img {
width: 40rpx;
height: 30rpx;
}
.play-img {
position: absolute;
top: 50rpx;
right: 30rpx;
width: 130rpx;
height: 55rpx;
font-size: 26rpx;
border-radius: 35rpx;
border: 2rpx solid #999;
display: flex;
justify-content: center;
align-items: center;
}
.card-tags {
position: absolute;
top: 50rpx;
left: 0rpx;
width: 200rpx;
height: 65rpx;
font-size: 25rpx;
display: flex;
justify-content: center;
align-items: center;
}
.popup-any {
position: fixed;
inset: 0;
z-index: 999;
/* 初始透明度 */
opacity: 0;
/* 播放动画:名称 fadeIn时长 0.5s,缓动函数 ease保持最后状态 */
transition: opacity 0.5s ease;
backdrop-filter: blur(1rpx);
background-color: rgba(236, 237, 241, 0.4);
/* 添加毛玻璃效果 */
z-index: 999;
}
.mask {
position: absolute;
inset: 0;
}
.rename-father {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 600rpx;
height: 450rpx;
border-radius: 30rpx;
box-shadow: 2rpx 4rpx 8rpx 2rpx rgba(0, 0, 0, 0.3);
background-color: #fff;
display: flex;
// justify-content: center;
flex-direction: column;
align-items: center;
padding: 0 30rpx;
z-index: 999;
.rename-title {
width: 100%;
height: 80rpx;
// border-bottom: 2rpx solid rgb(245, 245, 245);
display: flex;
justify-content: center;
align-items: center;
// margin: 30rpx 0;
margin-top: 30rpx;
margin-bottom: 20rpx;
font-size: 32rpx;
}
.rename-gray {
width: 100%;
height: 80rpx;
display: flex;
// justify-content: center;
color: rgb(167, 167, 167);
align-items: center;
}
.rename-input {
width: 100%;
height: 80rpx;
display: flex;
background-color: rgb(245, 246, 250);
border-radius: 20rpx;
color: rgb(167, 167, 167);
align-items: center;
padding: 0 20rpx;
position: relative;
.uni-input {
font-size: 25rpx;
width: 100%;
}
.left-img {
width: 50rpx;
height: 50rpx;
margin-right: 15rpx;
}
.right-img {
position: absolute;
right: 30rpx;
top: 50%;
transform: translateY(-50%);
width: 30rpx;
height: 30rpx;
}
}
}
</style>