feat(distribution): 默认结算冷却天数改为系统配置驱动
新建站点的默认冷却期原先硬编码 7 天(OnboardSite 字面量、DB 列默认、两套前端表单), 改一处要同时动三处。现统一到系统配置键 distribution.default_settlement_hold_days: - systemconfig 注册该键(默认 7,0=立即释放,0-365 校验),纳入 admin 可见配置 - distribution 建站两条路径(CreateSite 未传值、OnboardSite 缺省)读取该配置,缺失或非法回落 7 - 新增 GET /admin/distribution/site-defaults 暴露当前有效默认值 - Vue / React 站点表单改为运行时拉取,拉取失败保持 7 - DB 列默认值保留作为兜底,站点级 settlement_hold_days 仍可单独覆盖
This commit is contained in:
@@ -119,6 +119,17 @@ export async function fetchDistributionSites() {
|
||||
return data.data.items ?? []
|
||||
}
|
||||
|
||||
export interface DistributionSiteDefaults {
|
||||
default_settlement_hold_days: number
|
||||
}
|
||||
|
||||
export async function fetchDistributionSiteDefaults() {
|
||||
const { data } = await apiClient.get<ApiResponse<DistributionSiteDefaults>>(
|
||||
'/admin/distribution/site-defaults'
|
||||
)
|
||||
return data.data
|
||||
}
|
||||
|
||||
export async function onboardDistributionSite(payload: OnboardDistributionSitePayload) {
|
||||
const { data } = await apiClient.post<ApiResponse<OnboardDistributionSiteResult>>(
|
||||
'/admin/distribution/sites/onboard',
|
||||
|
||||
@@ -4,6 +4,7 @@ import { ElMessage, type FormInstance, type FormRules } from 'element-plus'
|
||||
import { Plus, Shop, Link, DocumentCopy, Refresh, Clock } from '@element-plus/icons-vue'
|
||||
import {
|
||||
fetchDistributionSites,
|
||||
fetchDistributionSiteDefaults,
|
||||
onboardDistributionSite,
|
||||
syncDistributionSiteAccounts,
|
||||
updateDistributionSite,
|
||||
@@ -16,6 +17,7 @@ import { readError } from '@/shared/utils/error'
|
||||
|
||||
const loading = ref(false)
|
||||
const sites = ref<DistributionSite[]>([])
|
||||
const defaultSettlementHoldDays = ref(7)
|
||||
|
||||
const onboardDialogVisible = ref(false)
|
||||
const submitting = ref(false)
|
||||
@@ -29,13 +31,13 @@ const settlementSubmitting = ref(false)
|
||||
const settlementForm = reactive({
|
||||
site_id: 0,
|
||||
site_name: '',
|
||||
settlement_hold_days: 7,
|
||||
settlement_hold_days: defaultSettlementHoldDays.value,
|
||||
})
|
||||
|
||||
function handleOpenSettlement(row: DistributionSite) {
|
||||
settlementForm.site_id = row.id
|
||||
settlementForm.site_name = row.site_name
|
||||
settlementForm.settlement_hold_days = row.settlement_hold_days ?? 7
|
||||
settlementForm.settlement_hold_days = row.settlement_hold_days ?? defaultSettlementHoldDays.value
|
||||
settlementDialogVisible.value = true
|
||||
}
|
||||
|
||||
@@ -63,7 +65,7 @@ const onboardForm = reactive({
|
||||
admin_password: '',
|
||||
admin_nickname: '',
|
||||
member_type: 'operator',
|
||||
settlement_hold_days: 7,
|
||||
settlement_hold_days: defaultSettlementHoldDays.value,
|
||||
display_account_enabled: true,
|
||||
tax_enabled: false,
|
||||
tax_rate_bps: 100,
|
||||
@@ -102,7 +104,7 @@ function handleOpenOnboard() {
|
||||
onboardForm.admin_password = ''
|
||||
onboardForm.admin_nickname = ''
|
||||
onboardForm.member_type = 'operator'
|
||||
onboardForm.settlement_hold_days = 7
|
||||
onboardForm.settlement_hold_days = defaultSettlementHoldDays.value
|
||||
onboardForm.display_account_enabled = true
|
||||
onboardForm.tax_enabled = false
|
||||
onboardForm.tax_rate_bps = 100
|
||||
@@ -171,6 +173,16 @@ async function handleSyncAccounts(row: DistributionSite) {
|
||||
|
||||
onMounted(() => {
|
||||
loadSites()
|
||||
fetchDistributionSiteDefaults()
|
||||
.then(res => {
|
||||
const days = res?.default_settlement_hold_days
|
||||
if (typeof days === 'number' && days >= 0 && days <= 365) {
|
||||
defaultSettlementHoldDays.value = days
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
// 拉取失败时保持内置默认值 7,不弹错误提示
|
||||
})
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user