InspectionCleaning/pages/adminNfc/components/bindDialog.vue

253 lines
6.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<!-- 遮罩层 -->
<view class="dialog-mask" v-if="visible" @click="closeDialog"></view>
<!-- 弹窗内容 -->
<view class="dialog-container" v-if="visible">
<view class="dialog-content">
<!-- 头部标题和标签 -->
<view class="dialog-header">
<text class="title">{{currentRow.name}}</text>
<u-tag class="tag" text="室内" mode="light" />
<!-- <u-tag
class="tag"
:text="areaType"
mode="light"
:type="
areaType === '室外'
? 'success'
: areaType === '特殊'
? 'warning'
: 'primary'
"
/> -->
</view>
<!-- 副标题 - 负责人 -->
<view class="dialog-subtitle"> 区域主负责人:{{ "张三" }} </view>
<!-- 已存在卡片时显示图片 -->
<view class="dialog-image-container" v-if="isChange === true">
<!-- 替换为实际的图片路径 -->
<image src="/static/adminImg/nfc-result.png" mode="widthFix" class="dialog-image"></image>
</view>
<!-- 未存在nfc时显示图片 -->
<view class="dialog-image-container" v-if="isChange === false">
<!-- 替换为实际的图片路径 -->
<image src="/static/adminImg/step.png" mode="widthFix" style="width: 500rpx;"></image>
</view>
<!-- 更换绑定链接 -->
<view v-if="isChange === true" class="change-binding" @click="nfcChange">
更换绑定
</view>
<!-- -->
<view v-if="step === 1">1.请将标签卡贴靠设备NFC识别处</view>
<view v-if="step === 2">2.如果确定将该卡片写入该区域,请将标签卡贴靠设备xNFC识别处否则请退出</view>
<view v-if="step === 3">3.请再次将标签卡贴靠设备NFC识别处</view>
<view v-if="step === 4">{{lookData}}</view>
</view>
<!-- 底部按钮 -->
<view class="dialog-footer">
<button class="confirm-button" @click="handleConfirm">知道了</button>
</view>
</view>
</view>
</template>
<script>
import { loginApi } from '@/api/apiList'
export default {
props: {
// 控制弹窗显示/隐藏
visible: {
type: Boolean,
default: false
},
// 可以添加更多 props 来传递动态数据,例如标题、负责人等
// title: String,
// responsiblePerson: String,
currentRow: {
type: Object,
default: () => ({})
}
},
data() {
return {
isChange: false,
step: 0,
lookData: {}
}
},
mounted() {
window.nfcInitFn = this.nfcInitFn
},
onLoad() {},
methods: {
nfcInitFn(data) {
if (!data) {
return uni.showToast({ title: '未传入参数 initFn', icon: 'none' })
}
if (data.step === 1) {
this.step = 1
}
if (data.step === 2) {
this.step = 2
}
if (data.step === 3) {
this.step = 3
}
if (data.step === 4) {
this.lookData = data
this.step = 4
// uni.showModal({
// title: '查看',
// content: JSON.stringify(data) || '未传入参数 initFn',
// showCancel: true,
// success: function (res) {}
// })
}
},
// 关闭弹窗(点击遮罩)
closeDialog() {
// 推荐通过事件通知父组件关闭
this.$emit('close')
},
// 点击更换绑定
nfcChange() {
this.isChange = false
this.step = 1
// this.$emit('changeBinding')
// this.closeDialogInternal(); // 可以选择点击后是否关闭弹窗
},
// 点击知道了
handleConfirm() {
this.$emit('confirm')
this.closeDialogInternal()
},
// 内部关闭避免重复emit
closeDialogInternal() {
if (this.visible) {
this.$emit('update:visible', false) // 如果使用 v-model
this.$emit('close') // 兼容只使用 :visible 和 @close 的情况
}
}
}
}
</script>
<style lang="scss" scoped>
.dialog-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
z-index: 999; /* 确保遮罩在底层 */
}
.dialog-container {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 90%; /* 或者根据需要设置固定宽度 */
// max-width: 600rpx;
z-index: 1000; /* 确保弹窗在遮罩上 */
}
.dialog-content {
background-color: #ffffff;
border-radius: 24rpx 24rpx 0 0;
padding: 40rpx;
display: flex;
flex-direction: column;
align-items: center;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.1);
}
.dialog-header {
display: flex;
align-items: center;
justify-content: center; /* 居中显示 */
width: 100%;
margin-bottom: 16rpx;
.title {
font-size: 34rpx;
font-weight: bold;
color: #333333;
margin-right: 16rpx;
}
.tag {
font-size: 28rpx;
padding: 6rpx 10rpx;
border-radius: 10rpx;
margin-top: 2rpx;
}
// .tag {
// background-color: #e6f0ff; /* 淡蓝色背景 */
// color: #4a90e2; /* 蓝色文字 */
// font-size: 24rpx;
// padding: 4rpx 12rpx;
// border-radius: 8rpx;
// }
}
.dialog-subtitle {
font-size: 28rpx;
color: #666666;
margin-bottom: 40rpx;
}
.dialog-image-container {
// border: 1px solid red;
height: auto;
margin-bottom: 30rpx;
.dialog-image {
width: 100%;
width: 200rpx; /* 根据图片调整 */
height: auto; /* 让图片自适应高度 */
}
}
.change-binding {
font-size: 28rpx;
color: #4a90e2; /* 蓝色链接颜色 */
// margin-bottom: 50rpx;
cursor: pointer; /* 鼠标悬停显示手型 */
}
.dialog-footer {
width: 100%;
}
.confirm-button {
width: 100%;
height: 88rpx;
line-height: 88rpx;
background-color: #4879e6; /* 蓝色按钮背景 */
color: #ffffff;
font-size: 32rpx;
border-radius: 0 0 24rpx 24rpx;
border: none;
text-align: center;
// 移除按钮默认边框H5
&::after {
border: none;
}
}
/* 可以添加按钮按下的效果 */
// .confirm-button:active {
// background-color: #4879e6;
// }
</style>