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