feat: 教育管理员只获取active订阅计划&超级管理员可修改订阅计划状态

This commit is contained in:
2025-12-17 10:55:01 +08:00
parent 61dd9fb1c5
commit 5a7e5e92a8
2 changed files with 50 additions and 3 deletions

View File

@@ -430,7 +430,7 @@ export default defineComponent({
if (!orgId) return if (!orgId) return
Https.axiosPost(Https.httpUrls.searchSubscribeByOrg, { Https.axiosPost(Https.httpUrls.searchSubscribeByOrg, {
organizationId: orgId, organizationId: orgId,
status: ['PENDING', 'ACTIVE'] status: ['ACTIVE']
}).then(res => { }).then(res => {
// 将与当前用户 subscriptionPlanId 相同的订阅计划放到第一个 // 将与当前用户 subscriptionPlanId 相同的订阅计划放到第一个
const userSubscriptionPlanId = store.state.UserHabit.userDetail.subscriptionPlanId const userSubscriptionPlanId = store.state.UserHabit.userDetail.subscriptionPlanId

View File

@@ -293,6 +293,16 @@
placeholder="Input the credit limit" placeholder="Input the credit limit"
/> />
</div> </div>
<div class="admin_state_item">
<span>Status:</span>
<a-select
v-model:value="formState.status"
placeholder="Select status"
allow-clear
style="width: 250px"
:options="statusOption"
/>
</div>
</div> </div>
</div> </div>
<div class="subscriptionPlan_btn admin_page"> <div class="subscriptionPlan_btn admin_page">
@@ -411,7 +421,8 @@ const formState = reactive({
organizationId: undefined as string | undefined, organizationId: undefined as string | undefined,
adminAccId: undefined as string | undefined, adminAccId: undefined as string | undefined,
creditLimit: null as number | null, creditLimit: null as number | null,
accountNum: null as number | null accountNum: null as number | null,
status: undefined as PlanStatus | undefined
}) })
const organizationModalVisible = ref(false) const organizationModalVisible = ref(false)
@@ -499,6 +510,7 @@ const resetFormState = () => {
formState.adminAccId = undefined formState.adminAccId = undefined
formState.creditLimit = null formState.creditLimit = null
formState.accountNum = null formState.accountNum = null
formState.status = undefined
} }
const handleSearch = () => { const handleSearch = () => {
@@ -537,7 +549,29 @@ const openEdit = (record: SubscriptionPlan) => {
formState.adminAccId = record.adminAccId formState.adminAccId = record.adminAccId
formState.creditLimit = record.creditLimit formState.creditLimit = record.creditLimit
formState.accountNum = (record as any).accountNum || null formState.accountNum = (record as any).accountNum || null
formState.status = record.status
formState.id = record.id formState.id = record.id
// 检查组织ID是否在已加载的组织列表中如果不在则添加临时项
if (record.organizationId) {
const orgExists = organizationOptions.value.some(
(org: any) => org.id === record.organizationId || String(org.id) === String(record.organizationId)
)
if (!orgExists) {
// 从表格数据中获取组织名称,如果存在则添加临时项
const orgName = (record as any).organizationName
if (orgName) {
organizationOptions.value = [
{
id: record.organizationId,
name: orgName
},
...organizationOptions.value
]
}
}
}
modalVisible.value = true modalVisible.value = true
} }
@@ -666,7 +700,20 @@ const getOrganizationList = async (isLoadMore = false) => {
organizationParams organizationParams
) )
if (rv) { if (rv) {
organizationOptions.value = [...organizationOptions.value, ...(rv.records || [])] const newRecords = rv.records || []
// 去重如果新数据中包含已存在的组织ID则移除旧项包括临时项保留新项
const existingIds = new Set(
organizationOptions.value.map((org: any) => String(org.id))
)
const newIds = new Set(newRecords.map((org: any) => String(org.id)))
// 移除会被新数据覆盖的旧项(包括临时项)
organizationOptions.value = organizationOptions.value.filter(
(org: any) => !newIds.has(String(org.id))
)
// 追加新数据
organizationOptions.value = [...organizationOptions.value, ...newRecords]
organizationParams.total = rv.total || 0 organizationParams.total = rv.total || 0
} }
} finally { } finally {