<template>
|
<view class="sales-account">
|
<PageHeader :title="pageTitle" @back="goBack" />
|
<view class="search-section">
|
<up-form :model="form" :rules="rules" ref="formRef">
|
<up-form-item label="借款人姓名" prop="borrowerName">
|
<up-input v-model="form.borrowerName" placeholder="请输入" />
|
</up-form-item>
|
<up-form-item label="借款金额(元)" prop="borrowAmount">
|
<up-input type="number" v-model="form.borrowAmount" placeholder="请输入" />
|
</up-form-item>
|
<up-form-item label="借款利率(%)" prop="interestRate">
|
<up-input type="number" v-model="form.interestRate" placeholder="例如 5.85" />
|
</up-form-item>
|
<up-form-item label="借款日期" prop="borrowDate">
|
<uni-datetime-picker type="date" v-model="form.borrowDate" />
|
</up-form-item>
|
<up-form-item v-if="operationType==='repay'" label="实际还款日期" prop="repayDate">
|
<uni-datetime-picker type="date" v-model="form.repayDate" />
|
</up-form-item>
|
<up-form-item label="备注" prop="remark">
|
<up-textarea v-model="form.remark" autoHeight />
|
</up-form-item>
|
</up-form>
|
<view class="actions">
|
<u-button type="primary" @click="submitForm">保存</u-button>
|
</view>
|
</view>
|
</view>
|
</template>
|
|
<script setup>
|
import { ref, reactive, computed } from "vue";
|
import { onLoad } from "@dcloudio/uni-app";
|
import { add, update } from "@/api/financialManagement/loanManagement";
|
|
const operationType = ref("add");
|
const id = ref(undefined);
|
|
const formRef = ref();
|
const form = reactive({
|
borrowerName: "",
|
borrowAmount: undefined,
|
interestRate: undefined,
|
borrowDate: undefined,
|
repayDate: undefined,
|
remark: "",
|
});
|
|
const rules = {
|
borrowerName: [{ required: true, message: "请输入", trigger: "blur" }],
|
borrowAmount: [{ required: true, message: "请输入", trigger: "blur" }],
|
interestRate: [{ required: true, message: "请输入", trigger: "blur" }],
|
borrowDate: [{ required: true, message: "请选择", trigger: "change" }],
|
repayDate: [{ validator: (_r, v, cb) => { if (operationType.value==='repay' && !v) return cb(new Error('请选择')); cb(); }, trigger: "change" }],
|
};
|
|
const pageTitle = computed(() => operationType.value==='repay' ? "还款" : operationType.value==='edit' ? "编辑借款" : "新增借款");
|
|
const submitForm = () => {
|
formRef.value?.validate(async (valid) => {
|
if (!valid) return;
|
const payload = operationType.value==='repay' ? { ...form, status: 2 } : { ...form };
|
const res = operationType.value==='add' ? await add(payload) : await update({ id: id.value, ...payload });
|
if (res?.code === 200) {
|
uni.navigateBack();
|
}
|
});
|
};
|
|
const goBack = () => {
|
uni.navigateBack();
|
};
|
|
onLoad((query) => {
|
operationType.value = query?.type || "add";
|
if (query?.id) {
|
id.value = query.id;
|
// 通过导航参数携带的字段回填由 index 页决定,这里仅保留最简逻辑
|
}
|
});
|
</script>
|
|
<style scoped lang="scss">
|
@import "@/styles/sales-common.scss";
|
.actions { margin-top: 16px; }
|
</style>
|