|
|
@@ -0,0 +1,159 @@
|
|
|
+<template>
|
|
|
+ <popup v-model:show="showValue" class="execute-trace-popup" closeable teleport="body" :z-index="9999">
|
|
|
+ <div class="trace-section">
|
|
|
+ <div class="section-title">执行轨迹</div>
|
|
|
+ <!-- 二维码横幅 -->
|
|
|
+ <div class="qr-banner">
|
|
|
+ <span class="banner-text">扫码执行,自动记录人工执行轨迹</span>
|
|
|
+ <img class="qr-code" src="@/assets/img/home/qrcode.png" alt="二维码" />
|
|
|
+ </div>
|
|
|
+ <!-- 图片上传区域 -->
|
|
|
+ <upload exampleImg>
|
|
|
+ <div class="upload-example">
|
|
|
+ <img class="example" src="@/assets/img/home/example-4.png" alt="" />
|
|
|
+ <img class="example" src="@/assets/img/home/plus.png" alt="" />
|
|
|
+ </div>
|
|
|
+ </upload>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 执行现场部分 -->
|
|
|
+ <div class="scene-section">
|
|
|
+ <div class="section-title">执行现场</div>
|
|
|
+ <!-- 二维码横幅 -->
|
|
|
+ <div class="qr-banner">
|
|
|
+ <span class="banner-text">邀请好友拍照,立即获取执行照片</span>
|
|
|
+ <img class="qr-code" src="@/assets/img/home/qrcode.png" alt="二维码" />
|
|
|
+ </div>
|
|
|
+ <!-- 图片上传区域 -->
|
|
|
+ <upload exampleImg>
|
|
|
+ <div class="upload-example">
|
|
|
+ <img class="example" src="@/assets/img/home/example-4.png" alt="" />
|
|
|
+ <img class="example" src="@/assets/img/home/plus.png" alt="" />
|
|
|
+ </div>
|
|
|
+ </upload>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 底部按钮 -->
|
|
|
+ <div class="popup-buttons">
|
|
|
+ <div class="btn-later" @click="handleLater">稍后上传</div>
|
|
|
+ <div class="btn-confirm" @click="handleConfirm">确认上传</div>
|
|
|
+ </div>
|
|
|
+ </popup>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import { Popup } from "vant";
|
|
|
+import upload from "@/components/upload.vue";
|
|
|
+import { computed } from "vue";
|
|
|
+
|
|
|
+const props = defineProps({
|
|
|
+ // 控制弹窗显示/隐藏
|
|
|
+ show: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false,
|
|
|
+ },
|
|
|
+});
|
|
|
+
|
|
|
+const emit = defineEmits(["update:show", "later", "confirm"]);
|
|
|
+
|
|
|
+// 处理v-model双向绑定
|
|
|
+const showValue = computed({
|
|
|
+ get: () => props.show,
|
|
|
+ set: (value) => emit("update:show", value),
|
|
|
+});
|
|
|
+
|
|
|
+// 稍后上传
|
|
|
+const handleLater = () => {
|
|
|
+ emit("later");
|
|
|
+ emit("update:show", false);
|
|
|
+};
|
|
|
+
|
|
|
+// 确认上传
|
|
|
+const handleConfirm = () => {
|
|
|
+ emit("confirm");
|
|
|
+ emit("update:show", false);
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped lang="scss">
|
|
|
+.execute-trace-popup {
|
|
|
+ width: 90%;
|
|
|
+ padding: 24px 16px 20px;
|
|
|
+ border-radius: 8px;
|
|
|
+ background: linear-gradient(360deg, #ffffff 74.2%, #d1ebff 100%);
|
|
|
+
|
|
|
+ ::v-deep {
|
|
|
+ .van-popup__close-icon {
|
|
|
+ color: #333333;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .trace-section,
|
|
|
+ .scene-section {
|
|
|
+ .section-title {
|
|
|
+ font-size: 16px;
|
|
|
+ margin-bottom: 12px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .qr-banner {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ background: rgba(33, 153, 248, 0.1);
|
|
|
+ padding: 5px 8px;
|
|
|
+ border-radius: 5px;
|
|
|
+ margin-bottom: 12px;
|
|
|
+ border: 0.5px solid #2199f8;
|
|
|
+
|
|
|
+ .banner-text {
|
|
|
+ color: #2199f8;
|
|
|
+ }
|
|
|
+
|
|
|
+ .qr-code {
|
|
|
+ width: 32px;
|
|
|
+ height: 32px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .upload-example {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ .example {
|
|
|
+ width: 80px;
|
|
|
+ height: 80px;
|
|
|
+ }
|
|
|
+ .example + .example {
|
|
|
+ margin-left: 12px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .scene-section {
|
|
|
+ margin: 12px 0 24px 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .popup-buttons {
|
|
|
+ display: flex;
|
|
|
+ gap: 12px;
|
|
|
+
|
|
|
+ .btn-later,
|
|
|
+ .btn-confirm {
|
|
|
+ flex: 1;
|
|
|
+ padding: 6px;
|
|
|
+ border-radius: 2px;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn-later {
|
|
|
+ color: #9D9D9D;
|
|
|
+ border: 1px solid #D7D7D7;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn-confirm {
|
|
|
+ background: #2199f8;
|
|
|
+ color: #ffffff;
|
|
|
+ border: 1px solid #2199f8;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|