feat: 教育管理员不可切换子账号订阅计划&Peding状态提示开始时间
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -85,17 +85,24 @@
|
|||||||
v-for="plan in planFilterOptions"
|
v-for="plan in planFilterOptions"
|
||||||
:key="plan.id"
|
:key="plan.id"
|
||||||
class="plan_item"
|
class="plan_item"
|
||||||
:class="{
|
:class="{
|
||||||
active: subscriptionPlanId === plan.id,
|
active: subscriptionPlanId === plan.id,
|
||||||
disabled: plan.status === 'PENDING'
|
disabled: plan.status === 'PENDING'
|
||||||
}"
|
}"
|
||||||
@click="plan.status !== 'PENDING' && selectPlanFilter(plan.id)"
|
@click="plan.status !== 'PENDING' && selectPlanFilter(plan.id)"
|
||||||
>
|
>
|
||||||
<span class="plan_name">{{ plan.name }}</span>
|
<a-tooltip v-if="plan.status === 'PENDING'">
|
||||||
<MoreOutlined
|
<template #title>{{ $t('admin.PlanStart') }} {{ plan.startTime }}</template>
|
||||||
class="plan_more_icon"
|
<span class="plan_name">{{ plan.name }}</span>
|
||||||
@click.stop="plan.status !== 'PENDING' && openPlanRenameModal(plan)"
|
<MoreOutlined class="plan_more_icon" />
|
||||||
/>
|
</a-tooltip>
|
||||||
|
<template v-else>
|
||||||
|
<span class="plan_name">{{ plan.name }}</span>
|
||||||
|
<MoreOutlined
|
||||||
|
class="plan_more_icon"
|
||||||
|
@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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1593,7 +1593,8 @@ export default {
|
|||||||
InputPlanName: '请输入计划名称',
|
InputPlanName: '请输入计划名称',
|
||||||
Cancel: '取消',
|
Cancel: '取消',
|
||||||
SelectPlan: '选择计划',
|
SelectPlan: '选择计划',
|
||||||
AllPlan: '全部'
|
AllPlan: '全部',
|
||||||
|
PlanStart:'订阅计划生效时间:'
|
||||||
},
|
},
|
||||||
Login: {
|
Login: {
|
||||||
Login: '登录',
|
Login: '登录',
|
||||||
|
|||||||
102
src/lang/en.ts
102
src/lang/en.ts
@@ -1192,9 +1192,10 @@ 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',
|
||||||
AddPinnedLayer: 'Add a pinned layer',
|
AddPinnedLayer: 'Add a pinned layer',
|
||||||
selectedLayers: 'The number of selected layers:',
|
selectedLayers: 'The number of selected layers:',
|
||||||
@@ -1216,7 +1217,7 @@ export default {
|
|||||||
color: 'Color',
|
color: 'Color',
|
||||||
Print: 'Print',
|
Print: 'Print',
|
||||||
Elements: 'Elements',
|
Elements: 'Elements',
|
||||||
PrintAndElementsGroup: 'Print and Elements Group',
|
PrintAndElementsGroup: 'Print and Elements Group',
|
||||||
KeyboardShortcutsOperationGuide: 'Keyboard shortcuts & Operation guide',
|
KeyboardShortcutsOperationGuide: 'Keyboard shortcuts & Operation guide',
|
||||||
other: 'Other',
|
other: 'Other',
|
||||||
touchDevice: 'Touch Device',
|
touchDevice: 'Touch Device',
|
||||||
@@ -1335,14 +1336,14 @@ export default {
|
|||||||
flipVertical: 'Vertical Flip',
|
flipVertical: 'Vertical Flip',
|
||||||
cropAndAdd: 'Crop and Add',
|
cropAndAdd: 'Crop and Add',
|
||||||
cropImage: 'Crop Image',
|
cropImage: 'Crop Image',
|
||||||
noRepeat: 'no-repeat',
|
noRepeat: 'no-repeat',
|
||||||
repeat: 'repeat',
|
repeat: 'repeat',
|
||||||
repeatX: 'repeat-x',
|
repeatX: 'repeat-x',
|
||||||
repeatY: 'repeat-y',
|
repeatY: 'repeat-y',
|
||||||
repeatSetting: 'Repeat Setting',
|
repeatSetting: 'Repeat Setting',
|
||||||
angle: 'Angle',
|
angle: 'Angle',
|
||||||
scale: 'Scale',
|
scale: 'Scale',
|
||||||
offset: 'Offset',
|
offset: 'Offset',
|
||||||
group: 'Group',
|
group: 'Group',
|
||||||
//长毛笔
|
//长毛笔
|
||||||
FurSettings: 'FurSettings',
|
FurSettings: 'FurSettings',
|
||||||
@@ -1506,41 +1507,47 @@ export default {
|
|||||||
DeleteTexture: 'Delete Texture',
|
DeleteTexture: 'Delete Texture',
|
||||||
TextureSettings: 'Texture Settings',
|
TextureSettings: 'Texture Settings',
|
||||||
TextureSelector: 'Texture Selector',
|
TextureSelector: 'Texture Selector',
|
||||||
// 混合模式
|
// 混合模式
|
||||||
CompositeNormal: 'Normal',
|
CompositeNormal: 'Normal',
|
||||||
CompositeNormalTip: 'Normal: Default, new graphics cover original content',
|
CompositeNormalTip: 'Normal: Default, new graphics cover original content',
|
||||||
CompositeDarken: 'Darken',
|
CompositeDarken: 'Darken',
|
||||||
CompositeDarkenTip: 'Darken: Take the darkest color',
|
CompositeDarkenTip: 'Darken: Take the darkest color',
|
||||||
CompositeMultiply: 'Multiply',
|
CompositeMultiply: 'Multiply',
|
||||||
CompositeMultiplyTip: 'Multiply: Darken the image',
|
CompositeMultiplyTip: 'Multiply: Darken the image',
|
||||||
CompositeColorBurn: 'Color Burn',
|
CompositeColorBurn: 'Color Burn',
|
||||||
CompositeColorBurnTip: 'Color Burn: Increase contrast and darken the bottom color',
|
CompositeColorBurnTip: 'Color Burn: Increase contrast and darken the bottom color',
|
||||||
CompositeLighten: 'Lighten',
|
CompositeLighten: 'Lighten',
|
||||||
CompositeLightenTip: 'Lighten: Take the brightest color',
|
CompositeLightenTip: 'Lighten: Take the brightest color',
|
||||||
CompositeScreen: 'Screen',
|
CompositeScreen: 'Screen',
|
||||||
CompositeScreenTip: 'Screen: Lighten the image',
|
CompositeScreenTip: 'Screen: Lighten the image',
|
||||||
CompositeColorDodge: 'Color Dodge',
|
CompositeColorDodge: 'Color Dodge',
|
||||||
CompositeColorDodgeTip: 'Color Dodge: Reduce contrast and lighten the bottom color',
|
CompositeColorDodgeTip: 'Color Dodge: Reduce contrast and lighten the bottom color',
|
||||||
CompositeLighter: 'Color Dodge (Add)',
|
CompositeLighter: 'Color Dodge (Add)',
|
||||||
CompositeLighterTip: 'Color Dodge (Add): Add the brightness of the overlapping parts',
|
CompositeLighterTip: 'Color Dodge (Add): Add the brightness of the overlapping parts',
|
||||||
CompositeOverlay: 'Overlay',
|
CompositeOverlay: 'Overlay',
|
||||||
CompositeOverlayTip: 'Overlay: Highlight effect',
|
CompositeOverlayTip: 'Overlay: Highlight effect',
|
||||||
CompositeSoftLight: 'Soft Light',
|
CompositeSoftLight: 'Soft Light',
|
||||||
CompositeSoftLightTip: 'Soft Light: Blend effect',
|
CompositeSoftLightTip: 'Soft Light: Blend effect',
|
||||||
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:
|
||||||
CompositeExclusion: 'Exclusion',
|
'Difference: Take the color difference between the two images',
|
||||||
CompositeExclusionTip: 'Exclusion: Take the absolute value of the color difference between the two images',
|
CompositeExclusion: 'Exclusion',
|
||||||
CompositeHue: 'Hue',
|
CompositeExclusionTip:
|
||||||
CompositeHueTip: 'Hue: Preserve the original image color and change the hue of the new image',
|
'Exclusion: Take the absolute value of the color difference between the two images',
|
||||||
CompositeSaturation: 'Saturation',
|
CompositeHue: 'Hue',
|
||||||
CompositeSaturationTip: 'Saturation: Preserve the original image hue and change the saturation of the new image',
|
CompositeHueTip:
|
||||||
CompositeColor: 'Color',
|
'Hue: Preserve the original image color and change the hue of the new image',
|
||||||
CompositeColorTip: 'Color: Preserve the original image saturation and change the color of the new image',
|
CompositeSaturation: 'Saturation',
|
||||||
CompositeLuminosity: 'Luminosity',
|
CompositeSaturationTip:
|
||||||
CompositeLuminosityTip: 'Luminosity: Preserve the original image color and change the luminosity of the new image',
|
'Saturation: Preserve the original image hue and change the saturation of the new image',
|
||||||
|
CompositeColor: 'Color',
|
||||||
|
CompositeColorTip:
|
||||||
|
'Color: Preserve the original image saturation and change the color of the new image',
|
||||||
|
CompositeLuminosity: 'Luminosity',
|
||||||
|
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',
|
||||||
|
|||||||
Reference in New Issue
Block a user