|
|
@@ -20,15 +20,7 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item label="收款账号" prop="paymentAccount">
|
|
|
<div class="bank-card-input">
|
|
|
- <el-input v-model="bankCardDisplay" placeholder="请输入银行卡号" maxlength="23" clearable />
|
|
|
- <el-button type="primary" link @click="handleAddCard"> 添加 </el-button>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <div class="bank-card-tags">
|
|
|
- <el-tag v-for="(card, index) in bankCardList" :key="card" closable @close="removeCard(index)">
|
|
|
- {{ formatCard(card) }}
|
|
|
- </el-tag>
|
|
|
+ <el-input v-model="bankCardDisplay" placeholder="请输入银行卡号" maxlength="23" clearable :disabled="isEditMode" />
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
@@ -68,7 +60,6 @@ const form = reactive({
|
|
|
platformCommissionRatio: 3
|
|
|
});
|
|
|
const bankCardInput = ref("");
|
|
|
-const bankCardList = ref<string[]>([]);
|
|
|
const bankCardReg = /^([1-9]\d{15}|\d{17}|\d{18}|\d{19})$/;
|
|
|
|
|
|
const validateServiceFee = (_rule: any, value: number | string, callback: (err?: Error) => void) => {
|
|
|
@@ -94,11 +85,14 @@ const rules = reactive({
|
|
|
address: [{ required: true, message: "请输入律所位置", trigger: "blur" }],
|
|
|
creditCode: [{ required: true, message: "请输入社会统一信用代码", trigger: "blur" }],
|
|
|
paymentAccount: [
|
|
|
- { required: true, message: "请至少添加一张银行卡", trigger: "change" },
|
|
|
+ { required: true, message: "请输入收款账号", trigger: "blur" },
|
|
|
{
|
|
|
validator: (_rule, _value, callback) => {
|
|
|
- if (!bankCardList.value.length) {
|
|
|
- callback(new Error("请至少添加一张银行卡"));
|
|
|
+ const card = bankCardInput.value.trim();
|
|
|
+ if (!card) {
|
|
|
+ callback(new Error("请输入收款账号"));
|
|
|
+ } else if (!bankCardReg.test(card)) {
|
|
|
+ callback(new Error("请输入正确的银行卡号"));
|
|
|
} else {
|
|
|
callback();
|
|
|
}
|
|
|
@@ -123,7 +117,6 @@ const resetForm = () => {
|
|
|
form.paymentAccount = "";
|
|
|
form.platformCommissionRatio = 3;
|
|
|
bankCardInput.value = "";
|
|
|
- bankCardList.value = [];
|
|
|
};
|
|
|
|
|
|
const open = (payload: DialogOptions) => {
|
|
|
@@ -131,17 +124,14 @@ const open = (payload: DialogOptions) => {
|
|
|
options.value = payload;
|
|
|
if (payload.row) {
|
|
|
Object.assign(form, payload.row);
|
|
|
- const cards = (form.paymentAccount || "")
|
|
|
- .split(",")
|
|
|
- .map(card => card.trim())
|
|
|
- .filter(card => !!card);
|
|
|
- bankCardList.value = cards.slice(0, 3);
|
|
|
- form.paymentAccount = bankCardList.value.join(",");
|
|
|
+ bankCardInput.value = (form.paymentAccount || "").replace(/\s+/g, "");
|
|
|
form.platformCommissionRatio = Number(payload.row.platformCommissionRatio ?? 3);
|
|
|
form.creditCode = payload.row.creditCode || "";
|
|
|
} else {
|
|
|
form.platformCommissionRatio = 3;
|
|
|
form.creditCode = "";
|
|
|
+ bankCardInput.value = "";
|
|
|
+ form.paymentAccount = "";
|
|
|
}
|
|
|
visible.value = true;
|
|
|
nextTick(() => formRef.value?.clearValidate());
|
|
|
@@ -151,34 +141,17 @@ const emits = defineEmits<{
|
|
|
success: [];
|
|
|
}>();
|
|
|
|
|
|
-const syncPaymentAccount = () => {
|
|
|
- form.paymentAccount = bankCardList.value.join(",");
|
|
|
- formRef.value?.validateField("paymentAccount").catch(() => {});
|
|
|
-};
|
|
|
+const isEditMode = computed(() => !!form.id);
|
|
|
|
|
|
const bankCardDisplay = computed({
|
|
|
get: () => formatCard(bankCardInput.value),
|
|
|
set: val => {
|
|
|
bankCardInput.value = val.replace(/\s+/g, "");
|
|
|
+ form.paymentAccount = bankCardInput.value;
|
|
|
+ formRef.value?.validateField("paymentAccount").catch(() => {});
|
|
|
}
|
|
|
});
|
|
|
|
|
|
-const handleAddCard = () => {
|
|
|
- const card = bankCardInput.value.trim();
|
|
|
- if (!card) return ElMessage.warning("请输入银行卡号");
|
|
|
- if (!bankCardReg.test(card)) return ElMessage.error("请输入正确的银行卡号");
|
|
|
- if (bankCardList.value.includes(card)) return ElMessage.warning("银行卡号已存在");
|
|
|
- if (bankCardList.value.length >= 3) return ElMessage.warning("最多可添加 3 张银行卡");
|
|
|
- bankCardList.value.push(card);
|
|
|
- bankCardInput.value = "";
|
|
|
- syncPaymentAccount();
|
|
|
-};
|
|
|
-
|
|
|
-const removeCard = (index: number) => {
|
|
|
- bankCardList.value.splice(index, 1);
|
|
|
- syncPaymentAccount();
|
|
|
-};
|
|
|
-
|
|
|
const formatCard = (card: string) => {
|
|
|
return card
|
|
|
.replace(/\s+/g, "")
|
|
|
@@ -187,7 +160,7 @@ const formatCard = (card: string) => {
|
|
|
};
|
|
|
|
|
|
const handleSubmit = () => {
|
|
|
- syncPaymentAccount();
|
|
|
+ form.paymentAccount = bankCardInput.value;
|
|
|
formRef.value?.validate(async valid => {
|
|
|
if (!valid) return;
|
|
|
loading.value = true;
|