From db42d47f5692ef64e5436c5a6d29dcb537b44596 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期一, 26 一月 2026 16:36:13 +0800
Subject: [PATCH] 浪潮对接单点登录:mis调整
---
src/views/financialManagement/loanManagement/Modal.vue | 222 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 222 insertions(+), 0 deletions(-)
diff --git a/src/views/financialManagement/loanManagement/Modal.vue b/src/views/financialManagement/loanManagement/Modal.vue
new file mode 100644
index 0000000..73b2cc3
--- /dev/null
+++ b/src/views/financialManagement/loanManagement/Modal.vue
@@ -0,0 +1,222 @@
+<template>
+ <FormDialog
+ v-model="dialogVisible"
+ :title="dialogTitle"
+ :operationType="operationType"
+ width="60%"
+ @confirm="sendForm"
+ @close="close"
+ @cancel="close"
+ >
+ <el-form
+ ref="formRef"
+ :model="form"
+ :rules="formRules"
+ label-width="120px"
+ >
+ <el-form-item label="鍊熸浜哄鍚�" prop="borrowerName">
+ <el-input v-model="form.borrowerName" placeholder="璇疯緭鍏ュ�熸浜哄鍚�" />
+ </el-form-item>
+ <el-form-item label="鍊熸閲戦锛堝厓锛�" prop="borrowAmount">
+ <el-input-number
+ :step="0.01"
+ :min="0"
+ :precision="2"
+ style="width: 100%"
+ v-model="form.borrowAmount"
+ placeholder="璇疯緭鍏ュ�熸閲戦"
+ />
+ </el-form-item>
+ <el-form-item label="鍊熸鍒╃巼锛�%锛�" prop="interestRate">
+ <el-input-number
+ :step="0.01"
+ :min="0"
+ :precision="2"
+ style="width: 100%"
+ v-model="form.interestRate"
+ placeholder="璇疯緭鍏ュ�熸鍒╃巼锛屽锛�5.85"
+ />
+ </el-form-item>
+ <el-form-item label="鍊熸鏃ユ湡" prop="borrowDate">
+ <el-date-picker
+ style="width: 100%"
+ v-model="form.borrowDate"
+ format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD"
+ type="date"
+ placeholder="璇烽�夋嫨鍊熸鏃ユ湡"
+ clearable
+ />
+ </el-form-item>
+ <!-- 瀹為檯杩樻鏃ユ湡锛氫粎鈥滆繕娆锯�濇椂鍙~ -->
+ <el-form-item
+ v-if="operationType === 'repay'"
+ label="瀹為檯杩樻鏃ユ湡"
+ prop="repayDate"
+ >
+ <el-date-picker
+ style="width: 100%"
+ v-model="form.repayDate"
+ format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD"
+ type="date"
+ placeholder="璇烽�夋嫨瀹為檯杩樻鏃ユ湡锛堣繕娆惧悗濉啓锛�"
+ clearable
+ />
+ </el-form-item>
+ <el-form-item label="澶囨敞" prop="remark">
+ <el-input
+ v-model="form.remark"
+ type="textarea"
+ :rows="3"
+ placeholder="璇疯緭鍏ュ娉紙鍊熸璇存槑锛�"
+ />
+ </el-form-item>
+ </el-form>
+ </FormDialog>
+</template>
+
+<script setup>
+import { add, update } from "@/api/financialManagement/loanManagement";
+import useFormData from "@/hooks/useFormData";
+import FormDialog from "@/components/Dialog/FormDialog.vue";
+import { ElMessage } from "element-plus";
+import { ref } from "vue";
+
+defineOptions({
+ name: "鍊熸鏂板缂栬緫",
+});
+
+const emits = defineEmits(["success"]);
+
+const formRef = ref(null);
+const dialogVisible = ref(false);
+const operationType = ref("add"); // add | edit
+const id = ref(undefined);
+const submitting = ref(false);
+
+const dialogTitle = (type) => {
+ if (type === "edit") return "缂栬緫鍊熸";
+ if (type === "repay") return "杩樻";
+ return "鏂板鍊熸";
+};
+
+const formRules = {
+ borrowerName: [{ required: true, trigger: "blur", message: "璇疯緭鍏ュ�熸浜哄鍚�" }],
+ borrowAmount: [{ required: true, trigger: "blur", message: "璇疯緭鍏ュ�熸閲戦" }],
+ interestRate: [{ required: true, trigger: "blur", message: "璇疯緭鍏ュ�熸鍒╃巼" }],
+ borrowDate: [{ required: true, trigger: "change", message: "璇烽�夋嫨鍊熸鏃ユ湡" }],
+ repayDate: [
+ {
+ validator: (_rule, value, callback) => {
+ if (operationType.value === "repay" && !value) {
+ callback(new Error("璇烽�夋嫨瀹為檯杩樻鏃ユ湡"));
+ return;
+ }
+ callback();
+ },
+ trigger: "change",
+ },
+ ],
+};
+
+const { form, resetForm } = useFormData({
+ borrowerName: undefined, // 鍊熸浜哄鍚�
+ borrowAmount: undefined, // 鍊熸閲戦锛堝厓锛�
+ interestRate: undefined, // 鍊熸鍒╃巼锛堝锛�5.85 浠h〃5.85%锛�
+ borrowDate: undefined, // 鍊熸鏃ユ湡
+ repayDate: undefined, // 瀹為檯杩樻鏃ユ湡锛堣繕娆惧悗濉厖锛�
+ remark: undefined, // 澶囨敞锛堝�熸璇存槑锛�
+});
+
+const sendForm = () => {
+ if (submitting.value) return;
+ formRef.value?.validate(async (valid) => {
+ if (valid) {
+ submitting.value = true;
+ try {
+ const isRepay = operationType.value === "repay";
+ // 杩樻锛氫笉灞曠ず status锛屼絾鎻愪氦鏃跺己鍒朵紶 status=2锛岃蛋鏇存柊鎺ュ彛
+ const payload = isRepay
+ ? { id: id.value, ...form, status: 2 }
+ : id.value
+ ? { id: id.value, ...form }
+ : form;
+
+ const { code } = isRepay
+ ? await update(payload)
+ : id.value
+ ? await update(payload)
+ : await add(payload);
+ if (code == 200) {
+ emits("success");
+ ElMessage({ message: "鎿嶄綔鎴愬姛", type: "success" });
+ close();
+ }
+ } finally {
+ submitting.value = false;
+ }
+ }
+ });
+};
+
+const close = () => {
+ resetForm();
+ formRef.value?.clearValidate();
+ id.value = undefined;
+ dialogVisible.value = false;
+};
+
+// 缂栬緫锛氱洿鎺ョ敤鍒楄〃琛屾暟鎹洖濉紙閬垮厤渚濊禆璇︽儏鎺ュ彛锛�
+const loadForm = async (row) => {
+ const rowId = row?.id;
+ operationType.value = "edit";
+ id.value = rowId;
+ dialogVisible.value = true;
+ if (rowId) {
+ form.borrowerName = row.borrowerName;
+ form.borrowAmount = row.borrowAmount;
+ form.interestRate = row.interestRate;
+ form.borrowDate = row.borrowDate;
+ form.repayDate = row.repayDate;
+ form.remark = row.remark;
+ } else {
+ resetForm();
+ formRef.value?.clearValidate();
+ }
+};
+
+// 杩樻锛氭墦寮�寮圭獥锛屼粎濉啓瀹為檯杩樻鏃ユ湡锛屾彁浜ゆ椂寮哄埗 status=2
+const repay = async (row) => {
+ const rowId = row?.id;
+ operationType.value = "repay";
+ id.value = rowId;
+ dialogVisible.value = true;
+ if (rowId) {
+ // 涓轰簡璧� update 鎺ュ彛鏇寸ǔ濡ワ紝甯︿笂鍘熸湁鏁版嵁锛涘彧璁╃敤鎴烽�� repayDate
+ form.borrowerName = row.borrowerName;
+ form.borrowAmount = row.borrowAmount;
+ form.interestRate = row.interestRate;
+ form.borrowDate = row.borrowDate;
+ form.remark = row.remark;
+ form.repayDate = undefined;
+ } else {
+ resetForm();
+ formRef.value?.clearValidate();
+ }
+};
+
+const openModal = () => {
+ operationType.value = "add";
+ id.value = undefined;
+ resetForm();
+ formRef.value?.clearValidate();
+ dialogVisible.value = true;
+};
+
+defineExpose({
+ openModal,
+ loadForm,
+ repay,
+});
+</script>
--
Gitblit v1.9.3