@@ -58,6 +59,70 @@
-->
+
+
+
+
+
+
+
+
+
+
+
+
+ 重置
+ 查询
+
+
+
+
+
+
+
+ {{ (merchantPage.PageNo - 1) * merchantPage.PageSize + $index + 1 }}
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+ 使用
+
+
+
+
+
+
@@ -123,9 +188,9 @@ const syncMerchantInfo = () => {
localFormData.value.creditCode = '';
localFormData.value.bankName = '';
localFormData.value.accountNumber = '';
+ businessLicenseUrl.value = '';
return;
}
- // el-select 可能返回 string/number,这里做宽松匹配避免找不到
const m = (merchantOptions.value ?? []).find((x) => x?.value == id);
localFormData.value.merchantName = m?.merchantName ?? '';
localFormData.value.creditCode = m?.creditCode ?? '';
@@ -134,7 +199,60 @@ const syncMerchantInfo = () => {
businessLicenseUrl.value = m?.businessLicenseUrl ?? '';
};
-// watch(() => localFormData.value.merchantId, syncMerchantInfo, { immediate: true , deep: true});
+// 商户选择弹窗相关
+const merchantDialogVisible = ref(false);
+const merchantList = ref([]);
+const merchantPage = ref({
+ PageNo: 1,
+ PageSize: 10,
+ Total: 0
+});
+const searchForm = ref({
+ merchantName: '',
+ accountNumber: ''
+});
+
+const openMerchantDialog = () => {
+ merchantDialogVisible.value = true;
+ merchantPage.value.PageNo = 1;
+ searchMerchants();
+};
+
+const searchMerchants = async () => {
+ try {
+ const params = {
+ PageNo: merchantPage.value.PageNo,
+ PageSize: merchantPage.value.PageSize
+ };
+ if (searchForm.value.merchantName) {
+ params.merchantName = searchForm.value.merchantName;
+ }
+ const res = await merchantPageGet(params);
+ merchantList.value = res?.data?.rows ?? [];
+ merchantPage.value.Total = res?.data?.total ?? 0;
+ } catch {
+ merchantList.value = [];
+ merchantPage.value.Total = 0;
+ }
+};
+
+const resetSearch = () => {
+ searchForm.value.merchantName = '';
+ searchForm.value.accountNumber = '';
+ merchantPage.value.PageNo = 1;
+ searchMerchants();
+};
+
+const selectMerchant = (row) => {
+ localFormData.value.merchantId = row.id;
+ localFormData.value.merchantName = row.merchantName ?? row.name ?? '';
+ localFormData.value.creditCode = row.creditCode ?? '';
+ localFormData.value.bankName = row.bankName ?? '';
+ localFormData.value.accountNumber = row.accountNumber ?? '';
+ businessLicenseUrl.value = row.businessLicenseUrl ?? '';
+ merchantDialogVisible.value = false;
+};
+
watch(merchantOptions, syncMerchantInfo, { deep: true });
const rules = {
@@ -234,4 +352,18 @@ defineExpose({ validate });
margin: 8px 0;
line-height: 1.6;
}
+
+/* 商户选择弹窗样式 */
+.merchant-search {
+ margin-bottom: 20px;
+}
+
+.merchant-search .el-form-item {
+ margin-bottom: 0;
+}
+
+.merchant-table {
+ max-height: 500px;
+ overflow-y: auto;
+}