feat: 教育管理员不可切换子账号订阅计划&Peding状态提示开始时间

This commit is contained in:
2026-01-05 15:48:21 +08:00
parent 9c9b219f3b
commit ebd5ceac41
4 changed files with 79 additions and 58 deletions

View File

@@ -96,7 +96,7 @@
style="width: 250px" style="width: 250px"
/> />
</div> </div>
<div class="admin_state_item" v-if="title?.value == 'Edit'"> <!-- <div class="admin_state_item" v-if="title?.value == 'Edit'">
<span> <span>
{{ $t('admin.SubscribePlan') }}: {{ $t('admin.SubscribePlan') }}:
<span>*</span> <span>*</span>
@@ -108,7 +108,7 @@
:field-names="{ label: 'name', value: 'id' }" :field-names="{ label: 'name', value: 'id' }"
:placeholder="$t('admin.SelectPlan')" :placeholder="$t('admin.SelectPlan')"
></a-select> ></a-select>
</div> </div> -->
</div> </div>
<div class="allUserPoeration_btn admin_page"> <div class="allUserPoeration_btn admin_page">
<div class="admin_search_item" @click="cancelDsign">{{ $t('admin.Close') }}</div> <div class="admin_search_item" @click="cancelDsign">{{ $t('admin.Close') }}</div>

View File

@@ -91,11 +91,18 @@
}" }"
@click="plan.status !== 'PENDING' && selectPlanFilter(plan.id)" @click="plan.status !== 'PENDING' && selectPlanFilter(plan.id)"
> >
<a-tooltip v-if="plan.status === 'PENDING'">
<template #title>{{ $t('admin.PlanStart') }} {{ plan.startTime }}</template>
<span class="plan_name">{{ plan.name }}</span>
<MoreOutlined class="plan_more_icon" />
</a-tooltip>
<template v-else>
<span class="plan_name">{{ plan.name }}</span> <span class="plan_name">{{ plan.name }}</span>
<MoreOutlined <MoreOutlined
class="plan_more_icon" class="plan_more_icon"
@click.stop="plan.status !== 'PENDING' && openPlanRenameModal(plan)" @click.stop="plan.status !== 'PENDING' && openPlanRenameModal(plan)"
/> />
</template>
</div> </div>
</div> </div>
<a-table <a-table
@@ -435,8 +442,11 @@ export default defineComponent({
if (!orgId) return if (!orgId) return
Https.axiosPost(Https.httpUrls.searchSubscribeByOrg, { Https.axiosPost(Https.httpUrls.searchSubscribeByOrg, {
organizationId: orgId, organizationId: orgId,
status: ['ACTIVE','PENDING'] status: ['ACTIVE', 'PENDING']
}).then(res => { }).then(res => {
res.forEach(plan => {
plan.startTime = formatTime(plan.currentPeriodStart, 'YYYY-MM-DD hh:mm:ss')
})
// 将与当前用户 subscriptionPlanId 相同的订阅计划放到第一个 // 将与当前用户 subscriptionPlanId 相同的订阅计划放到第一个
const userSubscriptionPlanId = store.state.UserHabit.userDetail.subscriptionPlanId const userSubscriptionPlanId = store.state.UserHabit.userDetail.subscriptionPlanId
if (userSubscriptionPlanId && Array.isArray(res)) { if (userSubscriptionPlanId && Array.isArray(res)) {
@@ -451,6 +461,7 @@ export default defineComponent({
} else { } else {
planFilterOptions.value = res planFilterOptions.value = res
} }
console.log(planFilterOptions.value)
}) })
} }
// 监听组织ID获取到值后再拉取订阅计划 // 监听组织ID获取到值后再拉取订阅计划
@@ -459,7 +470,8 @@ export default defineComponent({
orgId => { orgId => {
if (orgId) { if (orgId) {
fetchSubscribePlanList() fetchSubscribePlanList()
const userSubscriptionPlanId = store.state.UserHabit.userDetail.subscriptionPlanId const userSubscriptionPlanId =
store.state.UserHabit.userDetail.subscriptionPlanId
if (userSubscriptionPlanId) { if (userSubscriptionPlanId) {
selectPlanFilter(userSubscriptionPlanId) selectPlanFilter(userSubscriptionPlanId)
} }

View File

@@ -1593,7 +1593,8 @@ export default {
InputPlanName: '请输入计划名称', InputPlanName: '请输入计划名称',
Cancel: '取消', Cancel: '取消',
SelectPlan: '选择计划', SelectPlan: '选择计划',
AllPlan: '全部' AllPlan: '全部',
PlanStart:'订阅计划生效时间:'
}, },
Login: { Login: {
Login: '登录', Login: '登录',

View File

@@ -1192,7 +1192,8 @@ export default {
createGroup: 'Create Group', createGroup: 'Create Group',
slutionGroup: 'Slution Group', slutionGroup: 'Slution Group',
deleteLayer: 'Delete Layer', deleteLayer: 'Delete Layer',
cannotDeleteOnlyLayer: 'Cannot delete the last layer. At least one layer must remain.', cannotDeleteOnlyLayer:
'Cannot delete the last layer. At least one layer must remain.',
fixedLayerCannotDelete: 'Fixed layer cannot be deleted', fixedLayerCannotDelete: 'Fixed layer cannot be deleted',
backLayerCannotDelete: 'Background layer cannot be deleted', backLayerCannotDelete: 'Background layer cannot be deleted',
clearSelection: 'Clear Selection', clearSelection: 'Clear Selection',
@@ -1530,17 +1531,23 @@ export default {
CompositeHardLight: 'Hard Light', CompositeHardLight: 'Hard Light',
CompositeHardLightTip: 'Hard Light: Highlight effect', CompositeHardLightTip: 'Hard Light: Highlight effect',
CompositeDifference: 'Difference', CompositeDifference: 'Difference',
CompositeDifferenceTip: 'Difference: Take the color difference between the two images', CompositeDifferenceTip:
'Difference: Take the color difference between the two images',
CompositeExclusion: 'Exclusion', CompositeExclusion: 'Exclusion',
CompositeExclusionTip: 'Exclusion: Take the absolute value of the color difference between the two images', CompositeExclusionTip:
'Exclusion: Take the absolute value of the color difference between the two images',
CompositeHue: 'Hue', CompositeHue: 'Hue',
CompositeHueTip: 'Hue: Preserve the original image color and change the hue of the new image', CompositeHueTip:
'Hue: Preserve the original image color and change the hue of the new image',
CompositeSaturation: 'Saturation', CompositeSaturation: 'Saturation',
CompositeSaturationTip: 'Saturation: Preserve the original image hue and change the saturation of the new image', CompositeSaturationTip:
'Saturation: Preserve the original image hue and change the saturation of the new image',
CompositeColor: 'Color', CompositeColor: 'Color',
CompositeColorTip: 'Color: Preserve the original image saturation and change the color of the new image', CompositeColorTip:
'Color: Preserve the original image saturation and change the color of the new image',
CompositeLuminosity: 'Luminosity', CompositeLuminosity: 'Luminosity',
CompositeLuminosityTip: 'Luminosity: Preserve the original image color and change the luminosity of the new image', CompositeLuminosityTip:
'Luminosity: Preserve the original image color and change the luminosity of the new image'
}, },
speedList: { speedList: {
High: 'High', High: 'High',
@@ -1624,7 +1631,7 @@ export default {
ChatRobot: 'ChatRobot', ChatRobot: 'ChatRobot',
Yes: 'Yes', Yes: 'Yes',
No: 'No', No: 'No',
SubscribePlan:'Subscribe Plan', SubscribePlan: 'Subscribe Plan',
SwitchPlanSuccess: 'Switch subscription plan successfully', SwitchPlanSuccess: 'Switch subscription plan successfully',
SwitchPlanFailed: 'Failed to switch subscription plan', SwitchPlanFailed: 'Failed to switch subscription plan',
NoPlanSelected: 'Please select a subscription plan first', NoPlanSelected: 'Please select a subscription plan first',
@@ -1637,7 +1644,8 @@ export default {
InputPlanName: 'Please enter plan name', InputPlanName: 'Please enter plan name',
Cancel: 'Cancel', Cancel: 'Cancel',
SelectPlan: 'Select Plan', SelectPlan: 'Select Plan',
AllPlan:'All' AllPlan: 'All',
PlanStart:'This plan will be actived from',
}, },
Login: { Login: {
Login: 'Login', Login: 'Login',
@@ -1656,7 +1664,7 @@ export default {
AgreePolicies: 'Please agree to all terms, privacy policy, and fees.', AgreePolicies: 'Please agree to all terms, privacy policy, and fees.',
PasswordConditions: 'You must satisfy ALL password conditions to register.', PasswordConditions: 'You must satisfy ALL password conditions to register.',
LoginWithGoogle: 'Sign in with Google', LoginWithGoogle: 'Sign in with Google',
LoginWithWechat: 'Sign in with Wechat', LoginWithWechat: 'Sign in with Wechat'
}, },
LoginPersonal: { LoginPersonal: {
Email: 'Email', Email: 'Email',