From a9d97b150701e634bdb751eab277696abd136cca Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 16 六月 2026 14:39:47 +0800
Subject: [PATCH] 君歌app 1.依照web端功能修改

---
 src/pages/fileManagement/borrow/edit.vue |  333 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 333 insertions(+), 0 deletions(-)

diff --git a/src/pages/fileManagement/borrow/edit.vue b/src/pages/fileManagement/borrow/edit.vue
new file mode 100644
index 0000000..1338a6f
--- /dev/null
+++ b/src/pages/fileManagement/borrow/edit.vue
@@ -0,0 +1,333 @@
+<template>
+  <view class="borrow-edit">
+    <PageHeader :title="pageTitle" @back="goBack" />
+
+    <up-form
+      ref="formRef"
+      :model="form"
+      :rules="rules"
+      label-width="110"
+    >
+      <up-form-item label="鍊熼槄浜�" prop="borrower" required>
+        <up-input
+          v-model="form.borrower"
+          placeholder="璇疯緭鍏ュ�熼槄浜�"
+          clearable
+          :disabled="isReturned"
+        />
+      </up-form-item>
+
+      <up-form-item label="鍊熼槄涔︾睄" prop="documentationId" required>
+        <up-input
+          v-model="displayDocName"
+          placeholder="璇烽�夋嫨鍊熼槄涔︾睄"
+          readonly
+          :disabled="isEdit"
+          @click="!isEdit && (showDocPicker = true)"
+        />
+        <template #right>
+          <up-icon v-if="!isEdit" name="arrow-right" @click="showDocPicker = true"></up-icon>
+        </template>
+      </up-form-item>
+
+      <up-form-item label="鍊熼槄鏃ユ湡" prop="borrowDate" required>
+        <up-input
+          v-model="form.borrowDate"
+          placeholder="璇烽�夋嫨鍊熼槄鏃ユ湡"
+          readonly
+          @click="!isReturned && (showBorrowDatePicker = true)"
+          :disabled="isReturned"
+        />
+        <template #right>
+          <up-icon name="arrow-right" @click="!isReturned && (showBorrowDatePicker = true)"></up-icon>
+        </template>
+      </up-form-item>
+
+      <up-form-item label="搴斿綊杩樻棩鏈�" prop="dueReturnDate" required>
+        <up-input
+          v-model="form.dueReturnDate"
+          placeholder="璇烽�夋嫨搴斿綊杩樻棩鏈�"
+          readonly
+          @click="!isReturned && (showDueDatePicker = true)"
+          :disabled="isReturned"
+        />
+        <template #right>
+          <up-icon name="arrow-right" @click="!isReturned && (showDueDatePicker = true)"></up-icon>
+        </template>
+      </up-form-item>
+
+      <up-form-item label="鍊熼槄鐩殑" prop="borrowPurpose" required>
+        <up-input
+          v-model="form.borrowPurpose"
+          placeholder="璇疯緭鍏ュ�熼槄鐩殑"
+          clearable
+          :disabled="isReturned"
+        />
+      </up-form-item>
+
+      <up-form-item label="澶囨敞">
+        <up-textarea
+          v-model="form.remark"
+          placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�"
+          height="80"
+          border="none"
+          :disabled="isReturned"
+        />
+      </up-form-item>
+    </up-form>
+
+    <FooterButtons
+      v-if="!isReturned"
+      :loading="loading"
+      :confirmText="isEdit ? '淇濆瓨' : '鏂板'"
+      @cancel="goBack"
+      @confirm="handleSubmit"
+    />
+
+    <!-- 鍊熼槄鏃ユ湡閫夋嫨鍣� -->
+    <up-popup :show="showBorrowDatePicker" mode="bottom" @close="showBorrowDatePicker = false">
+      <up-datetime-picker
+        :show="true"
+        v-model="borrowDateValue"
+        @confirm="onBorrowDateConfirm"
+        @cancel="showBorrowDatePicker = false"
+        mode="date"
+      />
+    </up-popup>
+
+    <!-- 搴斿綊杩樻棩鏈熼�夋嫨鍣� -->
+    <up-popup :show="showDueDatePicker" mode="bottom" @close="showDueDatePicker = false">
+      <up-datetime-picker
+        :show="true"
+        v-model="dueReturnDateValue"
+        @confirm="onDueDateConfirm"
+        @cancel="showDueDatePicker = false"
+        mode="date"
+      />
+    </up-popup>
+
+    <!-- 鏂囨。閫夋嫨鍣� -->
+    <up-action-sheet
+      :show="showDocPicker"
+      :actions="documentOptions"
+      title="閫夋嫨鍊熼槄涔︾睄"
+      @select="onDocSelect"
+      @close="showDocPicker = false"
+    />
+  </view>
+</template>
+
+<script setup>
+import { ref, computed, onMounted } from "vue";
+import { onLoad } from "@dcloudio/uni-app";
+import PageHeader from "@/components/PageHeader.vue";
+import FooterButtons from "@/components/FooterButtons.vue";
+import { addBorrow, updateBorrow, getDocumentList } from "@/api/fileManagement/borrow";
+
+const formRef = ref();
+const loading = ref(false);
+const borrowId = ref("");
+const isEdit = ref(false);
+
+// 寮圭獥鏄剧ず鐘舵��
+const showDocPicker = ref(false);
+const showBorrowDatePicker = ref(false);
+const showDueDatePicker = ref(false);
+
+// 鏁版嵁
+const documentList = ref([]);
+const borrowDateValue = ref(Date.now());
+const dueReturnDateValue = ref(Date.now());
+const displayDocName = ref(""); // 鐢ㄤ簬鏄剧ず鐨勬枃妗e悕绉�
+
+const form = ref({
+  id: "",
+  documentationId: "",
+  borrower: "",
+  borrowPurpose: "",
+  borrowDate: "",
+  dueReturnDate: "",
+  remark: "",
+  borrowStatus: "",
+});
+
+const rules = {
+  borrower: [{ required: true, message: "璇疯緭鍏ュ�熼槄浜�", trigger: "blur" }],
+  documentationId: [{ required: true, message: "璇烽�夋嫨鍊熼槄涔︾睄", trigger: "change" }],
+  borrowPurpose: [{ required: true, message: "璇疯緭鍏ュ�熼槄鐩殑", trigger: "blur" }],
+  borrowDate: [{ required: true, message: "璇烽�夋嫨鍊熼槄鏃ユ湡", trigger: "change" }],
+  dueReturnDate: [{ required: true, message: "璇烽�夋嫨搴斿綊杩樻棩鏈�", trigger: "change" }],
+};
+
+// 椤甸潰鏍囬
+const pageTitle = computed(() => {
+  if (isEdit.value) {
+    return form.value.borrowStatus === "褰掕繕" ? "鍊熼槄璇︽儏" : "缂栬緫鍊熼槄";
+  }
+  return "鏂板鍊熼槄";
+});
+
+// 鏄惁宸插綊杩�
+const isReturned = computed(() => {
+  return form.value.borrowStatus === "褰掕繕";
+});
+
+// 鏂囨。閫夐」锛堜粎鏂板妯″紡浣跨敤锛�
+const documentOptions = computed(() => {
+  return documentList.value.map((item) => ({
+    name: item.docName || item.name,
+    id: item.id,
+  }));
+});
+
+// 杩斿洖涓婁竴椤�
+const goBack = () => {
+  uni.removeStorageSync("borrowEditData");
+  uni.navigateBack();
+};
+
+// 鍔犺浇鏂囨。鍒楄〃锛堜粎鏂板妯″紡闇�瑕侊級
+const loadDocumentList = async () => {
+  try {
+    const res = await getDocumentList();
+    if (res.code === 200) {
+      documentList.value = res.data || [];
+    }
+  } catch (error) {
+    console.error("鑾峰彇鏂囨。鍒楄〃澶辫触", error);
+  }
+};
+
+// 鏂囨。閫夋嫨纭
+const onDocSelect = (e) => {
+  form.value.documentationId = e.id;
+  displayDocName.value = e.name;
+  showDocPicker.value = false;
+};
+
+// 鍊熼槄鏃ユ湡纭
+const onBorrowDateConfirm = (e) => {
+  const date = new Date(e.value);
+  form.value.borrowDate = formatDate(date);
+  showBorrowDatePicker.value = false;
+};
+
+// 搴斿綊杩樻棩鏈熺‘璁�
+const onDueDateConfirm = (e) => {
+  const date = new Date(e.value);
+  form.value.dueReturnDate = formatDate(date);
+  showDueDatePicker.value = false;
+};
+
+// 鏍煎紡鍖栨棩鏈�
+const formatDate = (date) => {
+  const year = date.getFullYear();
+  const month = String(date.getMonth() + 1).padStart(2, "0");
+  const day = String(date.getDate()).padStart(2, "0");
+  return `${year}-${month}-${day}`;
+};
+
+// 鎻愪氦琛ㄥ崟
+const handleSubmit = () => {
+  // 濡傛灉宸插綊杩橈紝绂佹鎻愪氦
+  if (isReturned.value) {
+    uni.showToast({ title: "宸插綊杩樼殑鍊熼槄璁板綍涓嶈兘缂栬緫", icon: "none" });
+    return;
+  }
+
+  formRef.value
+    .validate()
+    .then(async () => {
+      try {
+        loading.value = true;
+
+        if (isEdit.value) {
+          // 缂栬緫妯″紡
+          const res = await updateBorrow({
+            id: form.value.id,
+            borrower: form.value.borrower,
+            borrowPurpose: form.value.borrowPurpose,
+            borrowDate: form.value.borrowDate,
+            dueReturnDate: form.value.dueReturnDate,
+            remark: form.value.remark,
+          });
+
+          if (res.code === 200) {
+            uni.showToast({ title: "缂栬緫鎴愬姛", icon: "success" });
+            setTimeout(() => {
+              goBack();
+            }, 1500);
+          } else {
+            uni.showToast({ title: res.msg || "缂栬緫澶辫触", icon: "none" });
+          }
+        } else {
+          // 鏂板妯″紡
+          const res = await addBorrow({
+            documentationId: form.value.documentationId,
+            borrower: form.value.borrower,
+            borrowPurpose: form.value.borrowPurpose,
+            borrowDate: form.value.borrowDate,
+            dueReturnDate: form.value.dueReturnDate,
+            borrowStatus: "鍊熼槄",
+            remark: form.value.remark,
+          });
+
+          if (res.code === 200) {
+            uni.showToast({ title: "鏂板鎴愬姛", icon: "success" });
+            setTimeout(() => {
+              goBack();
+            }, 1500);
+          } else {
+            uni.showToast({ title: res.msg || "鏂板澶辫触", icon: "none" });
+          }
+        }
+      } catch (error) {
+        uni.showToast({ title: "鎿嶄綔澶辫触", icon: "none" });
+      } finally {
+        loading.value = false;
+      }
+    })
+    .catch(() => {
+      // 楠岃瘉澶辫触
+    });
+};
+
+// 椤甸潰鍔犺浇
+onLoad((options) => {
+  if (options.id) {
+    // 缂栬緫妯″紡
+    isEdit.value = true;
+    borrowId.value = options.id;
+
+    // 浠� storage 鑾峰彇缂栬緫鏁版嵁
+    const editDataStr = uni.getStorageSync("borrowEditData");
+    if (editDataStr) {
+      try {
+        const data = JSON.parse(editDataStr);
+        Object.assign(form.value, data);
+        borrowDateValue.value = new Date(data.borrowDate).getTime();
+        dueReturnDateValue.value = new Date(data.dueReturnDate).getTime();
+        // 鐩存帴浣跨敤浼犻�掔殑鏂囨。鍚嶇О鏄剧ず锛屽皾璇曞涓彲鑳界殑瀛楁鍚�
+        displayDocName.value = data.docName || data.documentationName || data.fileName || data.name || "";
+      } catch (e) {
+        console.error("瑙f瀽缂栬緫鏁版嵁澶辫触", e);
+      }
+    }
+  } else {
+    // 鏂板妯″紡锛屽姞杞芥枃妗e垪琛ㄥ苟璁剧疆榛樿鏃ユ湡
+    loadDocumentList();
+    const today = new Date();
+    form.value.borrowDate = formatDate(today);
+    borrowDateValue.value = today.getTime();
+  }
+});
+</script>
+
+<style lang="scss">
+@import "@/static/scss/form-common.scss";
+
+.borrow-edit {
+  min-height: 100vh;
+  background: #f5f5f5;
+}
+</style>

--
Gitblit v1.9.3