fix: 设备分配代理,虚比例,sim顺序
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m15s

This commit is contained in:
sexygoat
2026-04-20 11:45:59 +08:00
parent c5ee690ccd
commit d721c4b8a9
8 changed files with 19 additions and 282 deletions

View File

@@ -534,7 +534,7 @@
getSwitchModeName
} = useAssetFormatters(deviceRealtimeRef)
// 排序后的设备卡列表(当前卡排在最前面)
// 排序后的设备卡列表(按卡槽位置排序,当前卡排在最前面)
const sortedDeviceCards = computed(() => {
if (!props.cardInfo?.cards || props.cardInfo.cards.length === 0) {
return []
@@ -543,7 +543,7 @@
return cards.sort((a, b) => {
if (a.is_current && !b.is_current) return -1
if (!a.is_current && b.is_current) return 1
return 0
return (a.slot_position ?? 0) - (b.slot_position ?? 0)
})
})

View File

@@ -98,7 +98,7 @@
<ElDescriptionsItem label="套餐类型">
{{ getPackageTypeName(currentPackage.package_type) }}
</ElDescriptionsItem>
<ElDescriptionsItem v-if="currentPackage.enable_virtual_data" label="虚流量比例">
<ElDescriptionsItem v-if="currentPackage.enable_virtual_data && isSuperAdmin" label="虚流量比例">
{{ currentPackage.virtual_ratio || '-' }}
</ElDescriptionsItem>
<ElDescriptionsItem v-if="currentPackage.duration_days" label="套餐时长" :span="3">
@@ -134,6 +134,8 @@
ElAlert
} from 'element-plus'
import { useAssetFormatters } from '../composables/useAssetFormatters'
import { useUserStore } from '@/store/modules/user'
import { storeToRefs } from 'pinia'
import { formatDateTime } from '@/utils/business/format'
import type { PackageInfo } from '../types'
@@ -146,6 +148,10 @@
getProgressColorByPercentage
} = useAssetFormatters()
const userStore = useUserStore()
const { info: userInfo } = storeToRefs(userStore)
const isSuperAdmin = computed(() => userInfo.value.user_type === 1)
// Props
interface Props {
currentPackage: PackageInfo | null

View File

@@ -1365,7 +1365,7 @@
try {
const data = {
device_ids: selectedDevices.value.map((d) => d.id),
target_shop_id: allocateForm.target_shop_id!,
target_shop_id: allocateForm.target_shop_id![0],
remark: allocateForm.remark
}
const res = await DeviceService.allocateDevices(data)

View File

@@ -9,24 +9,6 @@
{{ isDark ? '&#xe6b5;' : '&#xe725;' }}
</i>
</div>
<ElDropdown @command="changeLanguage" popper-class="langDropDownStyle">
<!--<div class="btn language-btn">-->
<!-- <i class="iconfont-sys icon-language">&#xe611;</i>-->
<!--</div>-->
<!--<template #dropdown>-->
<!-- <ElDropdownMenu>-->
<!-- <div v-for="lang in languageOptions" :key="lang.value" class="lang-btn-item">-->
<!-- <ElDropdownItem-->
<!-- :command="lang.value"-->
<!-- :class="{ 'is-selected': locale === lang.value }"-->
<!-- >-->
<!-- <span class="menu-txt">{{ lang.label }}</span>-->
<!-- <i v-if="locale === lang.value" class="iconfont-sys icon-check">&#xe621;</i>-->
<!-- </ElDropdownItem>-->
<!-- </div>-->
<!-- </ElDropdownMenu>-->
<!--</template>-->
</ElDropdown>
</div>
<div class="header">
<ArtLogo class="icon" />
@@ -43,19 +25,6 @@
@keyup.enter="handleSubmit"
style="margin-top: 25px"
>
<!-- Mock 账号选择仅在开发模式且使用 Mock 时显示 -->
<ElFormItem prop="account" v-if="false">
<ElSelect v-model="formData.account" @change="setupAccount" class="account-select">
<ElOption
v-for="account in mockAccounts"
:key="account.key"
:label="account.label"
:value="account.key"
>
<span>{{ account.label }}</span>
</ElOption>
</ElSelect>
</ElFormItem>
<ElFormItem prop="username">
<ElInput :placeholder="$t('login.placeholder[0]')" v-model.trim="formData.username" />
</ElFormItem>
@@ -74,7 +43,6 @@
<ElCheckbox v-model="formData.rememberPassword">{{
$t('login.rememberPwd')
}}</ElCheckbox>
<!--<RouterLink :to="RoutesAlias.ForgetPassword">{{ $t('login.forgetPwd') }}</RouterLink>-->
</div>
<div style="margin-top: 30px">
@@ -97,22 +65,18 @@
<script setup lang="ts">
import AppConfig from '@/config'
import { LanguageEnum, SystemThemeEnum } from '@/enums/appEnum'
import { useI18n } from 'vue-i18n'
import { SystemThemeEnum } from '@/enums/appEnum'
import { useSettingStore } from '@/store/modules/setting'
import { useUserStore } from '@/store/modules/user'
import { useTheme } from '@/composables/useTheme'
import { useLogin } from '@/composables/useLogin'
defineOptions({ name: 'Login' })
const { locale } = useI18n()
const settingStore = useSettingStore()
const userStore = useUserStore()
const { isDark, systemThemeType } = storeToRefs(settingStore)
// 使用登录 Composable
const { formRef, formData, rules, loading, mockAccounts, setupAccount, handleLogin } = useLogin()
const { formRef, formData, rules, loading, handleLogin } = useLogin()
const systemName = AppConfig.systemInfo.name
@@ -121,13 +85,6 @@
await handleLogin()
}
// 切换语言
const changeLanguage = (lang: LanguageEnum) => {
if (locale.value === lang) return
locale.value = lang
userStore.setLanguage(lang)
}
// 切换主题
const toggleTheme = () => {
let { LIGHT, DARK } = SystemThemeEnum