From 78f67775cd8d880dacd5e8d5be6e17cc9fcbf77c Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 26 五月 2026 14:53:07 +0800
Subject: [PATCH] feat(forms): 统一表单创建时间和编号生成逻辑

---
 src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue |  114 ++++++++++++++++++++++++++++-----------------------------
 1 files changed, 56 insertions(+), 58 deletions(-)

diff --git a/src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue b/src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue
index 8328ee6..bacdebd 100644
--- a/src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue
+++ b/src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue
@@ -85,6 +85,35 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <!-- 鍑哄樊鏃堕棿锛堜粎褰� approveType 涓� 3 鏃舵樉绀猴級 -->
+        <el-row :gutter="30" v-if="props.approveType == 3">
+          <el-col :span="12">
+            <el-form-item label="鍑哄樊寮�濮嬫椂闂达細" prop="startDateTime">
+              <el-date-picker
+                  v-model="form.startDateTime"
+                  type="datetime"
+                  placeholder="璇烽�夋嫨寮�濮嬫椂闂�"
+                  value-format="YYYY-MM-DD HH:mm"
+                  format="YYYY-MM-DD HH:mm"
+                  clearable
+                  style="width: 100%"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鍑哄樊缁撴潫鏃堕棿锛�" prop="endDateTime">
+              <el-date-picker
+                  v-model="form.endDateTime"
+                  type="datetime"
+                  placeholder="璇烽�夋嫨缁撴潫鏃堕棿"
+                  value-format="YYYY-MM-DD HH:mm"
+                  format="YYYY-MM-DD HH:mm"
+                  clearable
+                  style="width: 100%"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
         <!-- 鍑哄樊鍦扮偣锛堜粎褰� approveType 涓� 3 鏃舵樉绀猴級 -->
         <el-row v-if="props.approveType == 3">
           <el-col :span="24">
@@ -101,17 +130,7 @@
         <el-row :gutter="30">
           <el-col :span="24">
             <el-form-item label="闄勪欢鏉愭枡锛�" prop="remark">
-              <el-upload v-model:file-list="fileList" :action="upload.url" multiple ref="fileUpload" auto-upload
-                         :headers="upload.headers" :before-upload="handleBeforeUpload" :on-error="handleUploadError"
-                         :on-success="handleUploadSuccess" :on-remove="handleRemove">
-                <el-button type="primary" v-if="operationType !== 'view'">涓婁紶</el-button>
-                <template #tip v-if="operationType !== 'view'">
-                  <div class="el-upload__tip">
-                    鏂囦欢鏍煎紡鏀寔
-                    doc锛宒ocx锛寈ls锛寈lsx锛宲pt锛宲ptx锛宲df锛宼xt锛寈ml锛宩pg锛宩peg锛宲ng锛実if锛宐mp锛宺ar锛寊ip锛�7z
-                  </div>
-                </template>
-              </el-upload>
+              <FileUpload v-model:file-list="fileList" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -140,6 +159,7 @@
 const { proxy } = getCurrentInstance()
 const emit = defineEmits(['close'])
 import useUserStore from "@/store/modules/user";
+import FileUpload from "@/components/AttachmentUpload/file/index.vue";
 const userStore = useUserStore();
 
 const dialogFormVisible = ref(false);
@@ -158,11 +178,13 @@
     approveDeptName: "",
     approveReason: "",
     checkResult: "",
-    tempFileIds: [],
     startDate: "", // 璇峰亣寮�濮嬫椂闂�
     endDate: "", // 璇峰亣缁撴潫鏃堕棿
     price: null, // 鎶ラ攢閲戦
-    location: "" // 鍑哄樊鍦扮偣
+    startDateTime: "", // 鍑哄樊寮�濮嬫椂闂�
+    endDateTime: "", // 鍑哄樊缁撴潫鏃堕棿
+    location: "", // 鍑哄樊鍦扮偣
+    storageBlobDTOS: []
   },
   rules: {
     approveId: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
@@ -172,6 +194,8 @@
     startDate: [{ required: true, message: "璇烽�夋嫨璇峰亣寮�濮嬫椂闂�", trigger: "change" }],
     endDate: [{ required: true, message: "璇烽�夋嫨璇峰亣缁撴潫鏃堕棿", trigger: "change" }],
     price: [{ required: true, message: "璇疯緭鍏ユ姤閿�閲戦", trigger: "blur" }],
+    startDateTime: [{ required: true, message: "璇烽�夋嫨鍑哄樊寮�濮嬫椂闂�", trigger: "change" }],
+    endDateTime: [{ required: true, message: "璇烽�夋嫨鍑哄樊缁撴潫鏃堕棿", trigger: "change" }],
     location: [{ required: true, message: "璇疯緭鍏ュ嚭宸湴鐐�", trigger: "blur" }],
   },
 });
@@ -214,6 +238,7 @@
     currentApproveStatus.value = row.approveStatus
     approveProcessGetInfo({id: row.approveId,approveReason: '1'}).then(res => {
       form.value = {...res.data}
+      fileList.value = res.data.storageBlobVOS
     })
   }
 }
@@ -222,8 +247,8 @@
     productOptions.value = res.data;
     // 濡傛灉宸叉湁閮ㄩ棬ID锛岃嚜鍔ㄨ缃儴闂ㄥ悕绉帮紙鐢ㄤ簬楠岃瘉锛�
     if (form.value.approveDeptId && productOptions.value.length > 0) {
-      const matchedDept = productOptions.value.find(dept => 
-        dept.deptId == form.value.approveDeptId || 
+      const matchedDept = productOptions.value.find(dept =>
+        dept.deptId == form.value.approveDeptId ||
         String(dept.deptId) === String(form.value.approveDeptId)
       );
       if (matchedDept) {
@@ -242,7 +267,7 @@
     if (children && children.length > 0) {
       newItem.children = convertIdToValue(children);
     }
-    
+
     return newItem;
   });
 }
@@ -265,8 +290,20 @@
       return
     }
   }
-  // 褰� approveType 涓� 3 鏃讹紝鏍¢獙鍑哄樊鍦扮偣
+  // 褰� approveType 涓� 3 鏃讹紝鏍¢獙鍑哄樊鏃堕棿鍜屽湴鐐�
   if (props.approveType == 3) {
+    if (!form.value.startDateTime) {
+      proxy.$modal.msgError("璇烽�夋嫨鍑哄樊寮�濮嬫椂闂达紒")
+      return
+    }
+    if (!form.value.endDateTime) {
+      proxy.$modal.msgError("璇烽�夋嫨鍑哄樊缁撴潫鏃堕棿锛�")
+      return
+    }
+    if (new Date(form.value.endDateTime) < new Date(form.value.startDateTime)) {
+      proxy.$modal.msgError("鍑哄樊缁撴潫鏃堕棿涓嶈兘鏃╀簬寮�濮嬫椂闂达紒")
+      return
+    }
     if (!form.value.location || form.value.location.trim() === '') {
       proxy.$modal.msgError("璇疯緭鍏ュ嚭宸湴鐐癸紒")
       return
@@ -279,6 +316,8 @@
       return
     }
   }
+  form.value.storageBlobDTOS = fileList.value
+
   proxy.$refs.formRef.validate(valid => {
     if (valid) {
       if (operationType.value === "add" || currentApproveStatus.value == 3) {
@@ -302,47 +341,6 @@
   dialogFormVisible.value = false;
   emit('close')
 };
-
-// 涓婁紶鍓嶆牎妫�
-function handleBeforeUpload(file) {
-  // 鏍℃鏂囦欢澶у皬
-  // if (file.size > 1024 * 1024 * 10) {
-  //   proxy.$modal.msgError("涓婁紶鏂囦欢澶у皬涓嶈兘瓒呰繃10MB!");
-  //   return false;
-  // }
-  proxy.$modal.loading("姝e湪涓婁紶鏂囦欢锛岃绋嶅��...");
-  return true;
-}
-// 涓婁紶澶辫触
-function handleUploadError(err) {
-  proxy.$modal.msgError("涓婁紶鏂囦欢澶辫触");
-  proxy.$modal.closeLoading();
-}
-// 涓婁紶鎴愬姛鍥炶皟
-function handleUploadSuccess(res, file, uploadFiles) {
-  proxy.$modal.closeLoading();
-  if (res.code === 200) {
-    // 纭繚 tempFileIds 瀛樺湪涓斾负鏁扮粍
-    if (!form.value.tempFileIds) {
-      form.value.tempFileIds = [];
-    }
-    form.value.tempFileIds.push(res.data.tempId);
-    proxy.$modal.msgSuccess("涓婁紶鎴愬姛");
-  } else {
-    proxy.$modal.msgError(res.msg);
-    proxy.$refs.fileUpload.handleRemove(file);
-  }
-}
-// 绉婚櫎鏂囦欢
-function handleRemove(file) {
-  if (operationType.value === "edit") {
-    let ids = [];
-    ids.push(file.id);
-    delLedgerFile(ids).then((res) => {
-      proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-    });
-  }
-}
 
 defineExpose({
   openDialog,

--
Gitblit v1.9.3