update:项目价格可修改
This commit is contained in:
parent
ddcd73bbe1
commit
367b653088
@ -17,6 +17,33 @@
|
||||
<span v-else>{{ localFormData.price }}</span>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 单价(项目)模式:逐项目设置价格 -->
|
||||
<el-form-item label="项目单价" v-if="localFormData.chargeMode === 3">
|
||||
<div class="project-fee-list">
|
||||
<div v-if="!localFormData.projects || !localFormData.projects.length" class="project-fee-empty">
|
||||
暂无项目,请先在第三步配置项目
|
||||
</div>
|
||||
<el-table v-else :data="localFormData.projects" border style="width: 100%">
|
||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||
<el-table-column prop="name" label="项目名称" min-width="160" />
|
||||
<el-table-column label="价格(元)" width="200" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-input-number
|
||||
v-if="!readonly"
|
||||
v-model="row.fee"
|
||||
:min="0"
|
||||
:step="1"
|
||||
:precision="2"
|
||||
style="width: 160px"
|
||||
placeholder="请输入价格"
|
||||
/>
|
||||
<span v-else>{{ row.fee ?? '-' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
|
||||
<el-divider content-position="center" style="margin: 60px 0 40px;">账户信息</el-divider>
|
||||
@ -150,6 +177,7 @@ const localFormData = ref({
|
||||
bankName: '',
|
||||
accountNumber: '',
|
||||
businessLicenseUrl: '',
|
||||
projects: [],
|
||||
});
|
||||
|
||||
const merchantOptions = ref([]);
|
||||
@ -205,6 +233,7 @@ watch(
|
||||
localFormData.value.bankName = v.bankName ?? '';
|
||||
localFormData.value.accountNumber = v.accountNumber ?? '';
|
||||
localFormData.value.businessLicenseUrl = v.businessLicenseUrl ?? '';
|
||||
localFormData.value.projects = v.projects ?? [];
|
||||
|
||||
// 如果已经初始化完成,调用 syncMerchantInfo
|
||||
if (isInitialized.value) {
|
||||
@ -309,6 +338,15 @@ const validatePrice = (rule, value, callback) => {
|
||||
return;
|
||||
}
|
||||
}
|
||||
// 单价(项目)模式:每个项目都必须有价格
|
||||
if (localFormData.value.chargeMode === 3) {
|
||||
const projects = localFormData.value.projects ?? [];
|
||||
const invalid = projects.some((p) => p.fee === undefined || p.fee === null || p.fee === '' || p.fee < 0);
|
||||
if (invalid) {
|
||||
callback(new Error('请为所有项目设置价格(不能为空且不能小于0)'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
callback();
|
||||
};
|
||||
|
||||
@ -327,7 +365,7 @@ const validateMerchantId = (rule, value, callback) => {
|
||||
const rules = {
|
||||
chargeMode: [{ required: true, message: '请选择收费模式', trigger: 'change' }],
|
||||
price: [
|
||||
{ validator: validatePrice, trigger: 'change' }
|
||||
{ validator: validatePrice, trigger: ['change', 'blur'] }
|
||||
],
|
||||
merchantId: [
|
||||
{ validator: validateMerchantId, trigger: 'change' }
|
||||
@ -338,6 +376,14 @@ const rules = {
|
||||
|
||||
const validate = async () => {
|
||||
if (!formRef.value) return false;
|
||||
// 单价(项目)模式:额外验证每个项目的 fee
|
||||
if (localFormData.value.chargeMode === 3) {
|
||||
const projects = localFormData.value.projects ?? [];
|
||||
const invalid = projects.some((p) => p.fee === undefined || p.fee === null || p.fee === '' || p.fee < 0);
|
||||
if (invalid) {
|
||||
return Promise.reject('请为所有项目设置价格(不能为空且不能小于0)');
|
||||
}
|
||||
}
|
||||
return await formRef.value.validate();
|
||||
};
|
||||
|
||||
@ -439,4 +485,15 @@ defineExpose({ validate });
|
||||
max-height: 500px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
/* 项目单价列表 */
|
||||
.project-fee-list {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.project-fee-empty {
|
||||
color: var(--el-text-color-secondary);
|
||||
font-size: 13px;
|
||||
padding: 12px 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -99,7 +99,10 @@ const currentStepData = computed(() => {
|
||||
registrationType: formData.value.basicInfo.registrationType
|
||||
};
|
||||
case 3:
|
||||
return formData.value.feeConfig;
|
||||
return {
|
||||
...formData.value.feeConfig,
|
||||
projects: formData.value.projectConfig.projects,
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
@ -118,7 +121,13 @@ const handleStepDataUpdate = (newData) => {
|
||||
formData.value.projectConfig = projectConfig;
|
||||
break;
|
||||
case 3:
|
||||
formData.value.feeConfig = newData;
|
||||
// eslint-disable-next-line no-case-declarations
|
||||
const { projects: updatedProjects, ...feeConfig } = newData;
|
||||
formData.value.feeConfig = feeConfig;
|
||||
// 单价(项目)模式下,同步修改后的 projects fee 回第三步
|
||||
if (updatedProjects) {
|
||||
formData.value.projectConfig.projects = updatedProjects;
|
||||
}
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user