From 0333d66e4b397c161c6a44ce1e2a121c2cc41082 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 28 五月 2026 09:20:20 +0800
Subject: [PATCH] Merge branch 'dev_NEW_pro' into dev_天津_中兴实强
---
src/pages/inspectionUpload/components/formDia.vue | 228 ++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 187 insertions(+), 41 deletions(-)
diff --git a/src/pages/inspectionUpload/components/formDia.vue b/src/pages/inspectionUpload/components/formDia.vue
index 6b900cd..62bf40f 100644
--- a/src/pages/inspectionUpload/components/formDia.vue
+++ b/src/pages/inspectionUpload/components/formDia.vue
@@ -8,53 +8,99 @@
>
<view class="popup-content">
<view class="popup-header">
- <text class="popup-title">涓婁紶</text>
+ <text class="popup-title">宸℃璁板綍涓婁紶</text>
</view>
<view class="upload-container">
+ <!-- 寮傚父鐘舵�侀�夋嫨 -->
<view class="form-container">
- <view class="title">鐢熶骇鍓�</view>
- <u-upload
- :fileList="beforeModelValue"
- @afterRead="afterRead"
- @delete="deleteFile"
- name="before"
- multiple
- :maxCount="10"
- :maxSize="5 * 1024 * 1024"
- accept="image/*"
- :previewFullImage="true"
- ></u-upload>
+ <view class="title">宸℃鐘舵��</view>
+ <view class="exception-section">
+ <view class="exception-options">
+ <view
+ class="exception-option"
+ :class="{ active: hasException === false }"
+ @click="setExceptionStatus(false)"
+ >
+ <u-icon name="checkmark-circle" size="20" color="#52c41a"></u-icon>
+ <text class="option-text">姝e父</text>
+ </view>
+ <view
+ class="exception-option"
+ :class="{ active: hasException === true }"
+ @click="setExceptionStatus(true)"
+ >
+ <u-icon name="close-circle" size="20" color="#ff4d4f"></u-icon>
+ <text class="option-text">瀛樺湪寮傚父</text>
+ </view>
+ </view>
+ </view>
+ </view>
+
+ <!-- 寮傚父鎻忚堪锛堜粎鍦ㄥ紓甯告椂鏄剧ず锛� -->
+ <view class="form-container" v-if="hasException === true">
+ <view class="title">寮傚父鎻忚堪</view>
+ <u-input
+ v-model="exceptionDescription"
+ type="textarea"
+ :maxlength="500"
+ placeholder="璇锋弿杩板紓甯告儏鍐�..."
+ :customStyle="{ padding: '10px', backgroundColor: '#f5f5f5' }"
+ />
</view>
- <view class="form-container">
- <view class="title">鐢熶骇鍚�</view>
- <u-upload
- :fileList="afterModelValue"
- @afterRead="afterRead"
- @delete="deleteFile"
- name="after"
- multiple
- :maxCount="10"
- :maxSize="5 * 1024 * 1024"
- accept="image/*"
- :previewFullImage="true"
- ></u-upload>
- </view>
-
- <view class="form-container">
- <view class="title">鐢熶骇闂</view>
- <u-upload
- :fileList="issueModelValue"
- @afterRead="afterRead"
- @delete="deleteFile"
- name="issue"
- multiple
- :maxCount="10"
- :maxSize="5 * 1024 * 1024"
- accept="image/*"
- :previewFullImage="true"
- ></u-upload>
+ <!-- 涓婁紶鍖哄煙锛堜粎鍦ㄥ紓甯告椂鏄剧ず锛� -->
+ <template v-if="hasException === true">
+ <view class="form-container">
+ <view class="title">鐢熶骇鍓�</view>
+ <u-upload
+ :fileList="beforeModelValue"
+ @afterRead="afterRead"
+ @delete="deleteFile"
+ name="before"
+ multiple
+ :maxCount="10"
+ :maxSize="5 * 1024 * 1024"
+ accept="image/*"
+ :previewFullImage="true"
+ ></u-upload>
+ </view>
+
+ <view class="form-container">
+ <view class="title">鐢熶骇鍚�</view>
+ <u-upload
+ :fileList="afterModelValue"
+ @afterRead="afterRead"
+ @delete="deleteFile"
+ name="after"
+ multiple
+ :maxCount="10"
+ :maxSize="5 * 1024 * 1024"
+ accept="image/*"
+ :previewFullImage="true"
+ ></u-upload>
+ </view>
+
+ <view class="form-container">
+ <view class="title">鐢熶骇闂</view>
+ <u-upload
+ :fileList="issueModelValue"
+ @afterRead="afterRead"
+ @delete="deleteFile"
+ name="issue"
+ multiple
+ :maxCount="10"
+ :maxSize="5 * 1024 * 1024"
+ accept="image/*"
+ :previewFullImage="true"
+ ></u-upload>
+ </view>
+ </template>
+
+ <!-- 姝e父鐘舵�佹彁绀� -->
+ <view class="form-container normal-tip" v-if="hasException === false">
+ <u-icon name="info-circle" size="40" color="#52c41a"></u-icon>
+ <text class="tip-text">璁惧杩愯姝e父锛屾棤闇�涓婁紶鐓х墖</text>
</view>
</view>
@@ -79,6 +125,11 @@
const afterModelValue = ref([])
const issueModelValue = ref([])
const infoData = ref(null)
+
+// 寮傚父鐘舵�侊細null=鏈�夋嫨, false=姝e父, true=寮傚父
+const hasException = ref(null)
+// 寮傚父鎻忚堪
+const exceptionDescription = ref('')
// 璁$畻涓婁紶URL
const uploadFileUrl = computed(() => {
@@ -196,9 +247,43 @@
}
}
+// 璁剧疆寮傚父鐘舵��
+const setExceptionStatus = (status) => {
+ hasException.value = status
+}
+
// 鎻愪氦琛ㄥ崟
const submitForm = async () => {
try {
+ // 妫�鏌ユ槸鍚﹂�夋嫨浜嗗贰妫�鐘舵��
+ if (hasException.value === null) {
+ uni.showToast({
+ title: '璇烽�夋嫨宸℃鐘舵��',
+ icon: 'none'
+ })
+ return
+ }
+
+ // 濡傛灉鏄紓甯哥姸鎬侊紝妫�鏌ユ槸鍚︽湁涓婁紶鏂囦欢
+ if (hasException.value === true) {
+ const totalFiles = beforeModelValue.value.length + afterModelValue.value.length + issueModelValue.value.length
+ if (totalFiles === 0) {
+ uni.showToast({
+ title: '璇蜂笂浼犲紓甯哥収鐗�',
+ icon: 'none'
+ })
+ return
+ }
+ // 妫�鏌ユ槸鍚﹀~鍐欎簡寮傚父鎻忚堪
+ if (!exceptionDescription.value.trim()) {
+ uni.showToast({
+ title: '璇峰~鍐欏紓甯告弿杩�',
+ icon: 'none'
+ })
+ return
+ }
+ }
+
let arr = []
if (beforeModelValue.value.length > 0) {
arr.push(...beforeModelValue.value.map(item => ({ ...item, statusType: 0 })))
@@ -212,6 +297,8 @@
// 鎻愪氦鏁版嵁
infoData.value.storageBlobDTO = arr
+ infoData.value.hasException = hasException.value
+ infoData.value.exceptionDescription = exceptionDescription.value
await submitInspectionRecord({ ...infoData.value })
uni.showToast({
@@ -238,6 +325,8 @@
beforeModelValue.value = []
afterModelValue.value = []
issueModelValue.value = []
+ hasException.value = null
+ exceptionDescription.value = ''
}
// 鍏抽棴寮规
@@ -311,4 +400,61 @@
border-top: 1px solid #f0f0f0;
background-color: #fafafa;
}
+
+// 寮傚父鐘舵�侀�夋嫨鏍峰紡
+.exception-section {
+ padding: 10px 0;
+}
+
+.exception-options {
+ display: flex;
+ gap: 15px;
+}
+
+.exception-option {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+ padding: 15px 20px;
+ border: 2px solid #e0e0e0;
+ border-radius: 8px;
+ cursor: pointer;
+ transition: all 0.3s;
+ background-color: #fff;
+
+ &.active {
+ border-color: #1890ff;
+ background-color: #e6f7ff;
+ }
+
+ &:active {
+ opacity: 0.8;
+ }
+}
+
+.option-text {
+ font-size: 14px;
+ color: #333;
+ font-weight: 500;
+}
+
+// 姝e父鐘舵�佹彁绀烘牱寮�
+.normal-tip {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: 40px 20px;
+ background-color: #f6ffed;
+ border: 1px dashed #b7eb8f;
+ border-radius: 8px;
+
+ .tip-text {
+ margin-top: 15px;
+ font-size: 14px;
+ color: #52c41a;
+ }
+}
</style>
--
Gitblit v1.9.3