fix: 套餐

This commit is contained in:
sexygoat
2026-04-29 11:29:53 +08:00
parent 686bddad79
commit 1dc4701540
44 changed files with 3912 additions and 150 deletions

View File

@@ -480,6 +480,9 @@
v-model="switchModeDialogVisible"
:device-identifier="currentOperatingDeviceIdentifier"
:current-mode="currentDeviceSwitchMode"
:cards="switchModeCards"
:has-imei="currentOperatingDeviceHasImei"
:confirm-loading="switchModeLoading"
@confirm="handleConfirmSwitchMode"
/>
@@ -535,6 +538,17 @@
defineOptions({ name: 'DeviceList' })
interface SwitchModeCardOption {
iot_card_id: number
iccid: string
slot_position?: number
carrier_name?: string
msisdn?: string
network_status?: number
real_name_status?: number
is_current?: boolean
}
const { hasAuth } = useAuth()
const router = useRouter()
@@ -638,7 +652,9 @@
// 切换模式相关
const switchModeDialogVisible = ref(false)
const switchModeLoading = ref(false)
const switchModeCards = ref<SwitchModeCardOption[]>([])
const currentOperatingDeviceIdentifier = ref<string>('')
const currentOperatingDeviceHasImei = ref(false)
const currentDeviceSwitchMode = ref<number>(0)
// 实名认证策略相关
@@ -1678,7 +1694,7 @@
await handleClearDeviceSeries(deviceNo)
break
case 'switch-mode':
showSwitchModeDialog(deviceNo, device?.switch_mode)
await showSwitchModeDialog(deviceNo)
break
case 'realname-policy':
showRealnamePolicyDialog(deviceNo, device?.realname_policy)
@@ -1866,20 +1882,62 @@
}
// 显示切换模式对话框
const showSwitchModeDialog = (deviceIdentifier: string, currentMode?: number) => {
const normalizeSwitchModeCards = (cards: Array<Record<string, any>>): SwitchModeCardOption[] => {
return cards
.map((card) => ({
iot_card_id: Number(card.iot_card_id),
iccid: card.iccid,
slot_position: card.slot_position,
carrier_name: card.carrier_name,
msisdn: card.msisdn,
network_status:
card.network_status === undefined ? undefined : Number(card.network_status),
real_name_status:
card.real_name_status === undefined ? undefined : Number(card.real_name_status),
is_current: card.is_current
}))
.filter((card) => Number.isFinite(card.iot_card_id) && Boolean(card.iccid))
}
// 显示切换模式对话框
const showSwitchModeDialog = async (deviceIdentifier: string) => {
const device = currentOperatingDevice.value
if (!device) {
ElMessage.error('未找到设备信息')
return
}
currentOperatingDeviceIdentifier.value = deviceIdentifier
currentDeviceSwitchMode.value = currentMode ?? 0
currentDeviceSwitchMode.value = Number(device.switch_mode ?? 0)
currentOperatingDeviceHasImei.value = Boolean(device.imei)
switchModeCards.value = []
if (currentOperatingDeviceHasImei.value) {
try {
const res = await DeviceService.getDeviceCards(device.virtual_no)
if (res.code !== 0 || !res.data) {
ElMessage.error(res.msg || '加载设备绑定卡失败')
return
}
switchModeCards.value = normalizeSwitchModeCards(
(res.data.bindings || []) as Array<Record<string, any>>
)
} catch (error) {
console.error('加载切卡模式绑定卡失败:', error)
ElMessage.error('加载设备绑定卡失败')
return
}
}
switchModeDialogVisible.value = true
}
// 确认切换模式
const handleConfirmSwitchMode = async (data: { switch_mode: number }) => {
const handleConfirmSwitchMode = async (data: { iot_card_id: number; switch_mode: 0 | 1 }) => {
switchModeLoading.value = true
try {
const res = await DeviceService.setSwitchMode(
currentOperatingDeviceIdentifier.value,
data.switch_mode
)
const res = await DeviceService.setSwitchMode(currentOperatingDeviceIdentifier.value, data)
if (res.code === 0) {
ElMessage.success('设置切卡模式成功')
switchModeDialogVisible.value = false