From 067a7119d3175c9ea9b7c0d46b59df6e8ccb994c Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期三, 03 十二月 2025 17:58:25 +0800
Subject: [PATCH] yys 1.修改文件上传大小限制

---
 src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue |  228 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 207 insertions(+), 21 deletions(-)

diff --git a/src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue b/src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue
index a71d689..04dd066 100644
--- a/src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue
+++ b/src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue
@@ -16,26 +16,84 @@
         </el-row>
         <el-row>
           <el-col :span="24">
-            <el-form-item label="鐢宠閮ㄩ棬锛�" prop="approveDeptId">
-							<el-select
-								disabled
-								v-model="form.approveDeptId"
-								placeholder="閫夋嫨閮ㄩ棬"
-							>
-								<el-option
-									v-for="user in productOptions"
-									:key="user.deptId"
-									:label="user.deptName"
-									:value="user.deptId"
-								/>
-							</el-select>
+            <el-form-item label="鐢宠閮ㄩ棬锛�" prop="approveDeptName">
+              <el-input v-model="form.approveDeptName" placeholder="璇疯緭鍏�" clearable/>
+<!--							<el-select-->
+<!--								disabled-->
+<!--								v-model="form.approveDeptId"-->
+<!--								placeholder="閫夋嫨閮ㄩ棬"-->
+<!--							>-->
+<!--								<el-option-->
+<!--									v-for="user in productOptions"-->
+<!--									:key="user.deptId"-->
+<!--									:label="user.deptName"-->
+<!--									:value="user.deptId"-->
+<!--								/>-->
+<!--							</el-select>-->
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="24">
-            <el-form-item label="瀹℃壒浜嬬敱锛�" prop="approveReason">
+            <el-form-item :label="props.approveType == 5 ? '閲囪喘璇存槑锛�' : '瀹℃壒浜嬬敱锛�'" prop="approveReason">
               <el-input v-model="form.approveReason" placeholder="璇疯緭鍏�" clearable type="textarea" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <!-- 璇峰亣鏃堕棿锛堜粎褰� approveType 涓� 2 鏃舵樉绀猴級 -->
+        <el-row :gutter="30" v-if="props.approveType == 2">
+          <el-col :span="12">
+            <el-form-item label="璇峰亣寮�濮嬫椂闂达細" prop="startDate">
+              <el-date-picker
+                  v-model="form.startDate"
+                  type="date"
+                  placeholder="璇烽�夋嫨寮�濮嬫棩鏈�"
+                  value-format="YYYY-MM-DD"
+                  format="YYYY-MM-DD"
+                  clearable
+                  style="width: 100%"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="璇峰亣缁撴潫鏃堕棿锛�" prop="endDate">
+              <el-date-picker
+                  v-model="form.endDate"
+                  type="date"
+                  placeholder="璇烽�夋嫨缁撴潫鏃ユ湡"
+                  value-format="YYYY-MM-DD"
+                  format="YYYY-MM-DD"
+                  clearable
+                  style="width: 100%"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <!-- 鎶ラ攢閲戦锛堜粎褰� approveType 涓� 4 鏃舵樉绀猴級 -->
+        <el-row v-if="props.approveType == 4">
+          <el-col :span="24">
+            <el-form-item label="鎶ラ攢閲戦锛�" prop="price">
+              <el-input-number
+                  v-model="form.price"
+                  placeholder="璇疯緭鍏ユ姤閿�閲戦"
+                  :min="0"
+                  :precision="2"
+                  :step="0.01"
+                  style="width: 100%"
+                  clearable
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <!-- 鍑哄樊鍦扮偣锛堜粎褰� approveType 涓� 3 鏃舵樉绀猴級 -->
+        <el-row v-if="props.approveType == 3">
+          <el-col :span="24">
+            <el-form-item label="鍑哄樊鍦扮偣锛�" prop="location">
+              <el-input
+                  v-model="form.location"
+                  placeholder="璇疯緭鍏ュ嚭宸湴鐐�"
+                  clearable
+              />
             </el-form-item>
           </el-col>
         </el-row>
@@ -53,7 +111,10 @@
                   :key="node.id"
                   style="margin-right: 30px; text-align: center; margin-bottom: 10px;"
                 >
-                  <div>鑺傜偣{{ index + 1 }} 鈫�</div>
+                  <div>
+                    <span>瀹℃壒浜�</span>
+                    鈫�
+                  </div>
                   <el-select
                     v-model="node.userId"
                     placeholder="閫夋嫨浜哄憳"
@@ -85,6 +146,9 @@
 							<el-select
 								v-model="form.approveUser"
 								placeholder="閫夋嫨浜哄憳"
+                filterable
+                default-first-option
+                :reserve-keyword="false"
 							>
 								<el-option
 									v-for="user in userList"
@@ -109,6 +173,23 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <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>
+            </el-form-item>
+          </el-col>
+        </el-row>
       </el-form>
       <template #footer>
         <div class="dialog-footer">
@@ -126,8 +207,12 @@
   approveProcessAdd, approveProcessGetInfo,
   approveProcessUpdate,
   getDept
-} from "../../../../api/collaborativeApproval/approvalProcess.js";
-import {userListNoPage, getUserProfile} from "../../../../api/system/user.js";
+} from "@/api/collaborativeApproval/approvalProcess.js";
+import {
+  delLedgerFile,
+} from "@/api/salesManagement/salesLedger.js";
+import {userListNoPageByTenantId} from "@/api/system/user.js";
+import { getToken } from "@/utils/auth";
 const { proxy } = getCurrentInstance()
 const emit = defineEmits(['close'])
 import useUserStore from "@/store/modules/user";
@@ -135,27 +220,51 @@
 
 const dialogFormVisible = ref(false);
 const operationType = ref('')
+const fileList = ref([]);
+const upload = reactive({
+  // 涓婁紶鐨勫湴鍧�
+  url: import.meta.env.VITE_APP_BASE_API + "/file/upload",
+  // 璁剧疆涓婁紶鐨勮姹傚ご閮�
+  headers: { Authorization: "Bearer " + getToken() },
+});
 const data = reactive({
   form: {
     approveTime: "",
     approveId: "",
     approveUser: "",
 		approveDeptId: "",
+    approveDeptName: "",
     approveReason: "",
     checkResult: "",
-    approverList: [] // 鏂板瀛楁锛屽瓨鍌ㄦ墍鏈夎妭鐐圭殑瀹℃壒浜篿d
+    tempFileIds: [],
+    approverList: [], // 鏂板瀛楁锛屽瓨鍌ㄦ墍鏈夎妭鐐圭殑瀹℃壒浜篿d
+    startDate: "", // 璇峰亣寮�濮嬫椂闂�
+    endDate: "", // 璇峰亣缁撴潫鏃堕棿
+    price: null, // 鎶ラ攢閲戦
+    location: "" // 鍑哄樊鍦扮偣
   },
   rules: {
     approveTime: [{ required: false, message: "璇疯緭鍏�", trigger: "change" },],
     approveId: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
     approveUser: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-		approveDeptId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+    approveDeptName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     approveReason: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     checkResult: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+    startDate: [{ required: true, message: "璇烽�夋嫨璇峰亣寮�濮嬫椂闂�", trigger: "change" }],
+    endDate: [{ required: true, message: "璇烽�夋嫨璇峰亣缁撴潫鏃堕棿", trigger: "change" }],
+    price: [{ required: true, message: "璇疯緭鍏ユ姤閿�閲戦", trigger: "blur" }],
+    location: [{ required: true, message: "璇疯緭鍏ュ嚭宸湴鐐�", trigger: "blur" }],
   },
 });
 const { form, rules } = toRefs(data);
 const productOptions = ref([]);
+const currentApproveStatus = ref(0)
+const props = defineProps({
+  approveType: {
+    type: [Number, String],
+    default: 0
+  }
+})
 
 // 瀹℃壒浜鸿妭鐐圭浉鍏�
 const approverNodes = ref([
@@ -174,7 +283,7 @@
 const openDialog = (type, row) => {
   operationType.value = type;
   dialogFormVisible.value = true;
-  userListNoPage().then((res) => {
+	userListNoPageByTenantId().then((res) => {
     userList.value = res.data;
   });
   getProductOptions();
@@ -188,6 +297,9 @@
   // 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅骞惰缃儴闂↖D
   form.value.approveDeptId = userStore.currentDeptId
   if (operationType.value === 'edit') {
+    fileList.value = row.commonFileList
+    form.value.tempFileIds = fileList.value.map(file => file.id)
+		currentApproveStatus.value = row.approveStatus
     approveProcessGetInfo({id: row.approveId,approveReason: '1'}).then(res => {
 			form.value = {...res.data}
       // 鍙嶆樉瀹℃壒浜�
@@ -228,15 +340,46 @@
 const submitForm = () => {
   // 鏀堕泦鎵�鏈夎妭鐐圭殑瀹℃壒浜篿d
   form.value.approveUserIds = approverNodes.value.map(node => node.userId).join(',')
+  form.value.approveType = props.approveType
   // 瀹℃壒浜哄繀濉牎楠�
   const hasEmptyApprover = approverNodes.value.some(node => !node.userId)
   if (hasEmptyApprover) {
     proxy.$modal.msgError("璇蜂负鎵�鏈夊鎵硅妭鐐归�夋嫨瀹℃壒浜猴紒")
     return
   }
+  // 褰� approveType 涓� 2 鏃讹紝鏍¢獙璇峰亣鏃堕棿
+  if (props.approveType == 2) {
+    if (!form.value.startDate) {
+      proxy.$modal.msgError("璇烽�夋嫨璇峰亣寮�濮嬫椂闂达紒")
+      return
+    }
+    if (!form.value.endDate) {
+      proxy.$modal.msgError("璇烽�夋嫨璇峰亣缁撴潫鏃堕棿锛�")
+      return
+    }
+    // 鏍¢獙缁撴潫鏃堕棿涓嶈兘鏃╀簬寮�濮嬫椂闂�
+    if (new Date(form.value.endDate) < new Date(form.value.startDate)) {
+      proxy.$modal.msgError("璇峰亣缁撴潫鏃堕棿涓嶈兘鏃╀簬寮�濮嬫椂闂达紒")
+      return
+    }
+  }
+  // 褰� approveType 涓� 3 鏃讹紝鏍¢獙鍑哄樊鍦扮偣
+  if (props.approveType == 3) {
+    if (!form.value.location || form.value.location.trim() === '') {
+      proxy.$modal.msgError("璇疯緭鍏ュ嚭宸湴鐐癸紒")
+      return
+    }
+  }
+  // 褰� approveType 涓� 4 鏃讹紝鏍¢獙鎶ラ攢閲戦
+  if (props.approveType == 4) {
+    if (!form.value.price || form.value.price <= 0) {
+      proxy.$modal.msgError("璇疯緭鍏ユ湁鏁堢殑鎶ラ攢閲戦锛�")
+      return
+    }
+  }
   proxy.$refs.formRef.validate(valid => {
     if (valid) {
-      if (operationType.value === "add") {
+      if (operationType.value === "add" || currentApproveStatus.value == 3) {
         approveProcessAdd(form.value).then(res => {
           proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
           closeDia();
@@ -252,6 +395,7 @@
 }
 // 鍏抽棴寮规
 const closeDia = () => {
+  fileList.value = []
   proxy.resetForm("formRef");
   dialogFormVisible.value = false;
   emit('close')
@@ -264,6 +408,48 @@
   const day = String(today.getDate()).padStart(2, "0");
   return `${year}-${month}-${day}`;
 }
+
+// 涓婁紶鍓嶆牎妫�
+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