From 48e4adf3ff403e115e2e8330d7c78842073df2c8 Mon Sep 17 00:00:00 2001 From: luo Date: Mon, 24 Aug 2026 16:33:20 +0800 Subject: [PATCH] fix: ui --- src/types/components.d.ts | 169 ++++++++++++++++++ .../components/BasicInfoCard.vue | 2 +- .../components/PackageListCard.vue | 12 +- .../composables/useAssetFormatters.ts | 2 +- 4 files changed, 180 insertions(+), 5 deletions(-) diff --git a/src/types/components.d.ts b/src/types/components.d.ts index e69de29..2197887 100644 --- a/src/types/components.d.ts +++ b/src/types/components.d.ts @@ -0,0 +1,169 @@ +/* eslint-disable */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +/* prettier-ignore */ +declare module 'vue' { + export interface GlobalComponents { + AgentSelector: typeof import('./../components/business/AgentSelector.vue')['default'] + ArtBackToTop: typeof import('./../components/core/base/ArtBackToTop.vue')['default'] + ArtBarChart: typeof import('./../components/core/charts/ArtBarChart.vue')['default'] + ArtBarChartCard: typeof import('./../components/core/cards/ArtBarChartCard.vue')['default'] + ArtBasicBanner: typeof import('./../components/core/banners/ArtBasicBanner.vue')['default'] + ArtBreadcrumb: typeof import('./../components/core/layouts/art-breadcrumb/index.vue')['default'] + ArtButtonMore: typeof import('./../components/core/forms/ArtButtonMore.vue')['default'] + ArtButtonTable: typeof import('./../components/core/forms/ArtButtonTable.vue')['default'] + ArtChatWindow: typeof import('./../components/core/layouts/art-chat-window/index.vue')['default'] + ArtCutterImg: typeof import('./../components/core/media/ArtCutterImg.vue')['default'] + ArtDataListCard: typeof import('./../components/core/cards/ArtDataListCard.vue')['default'] + ArtDataViewer: typeof import('./../components/core/views/ArtDataViewer.vue')['default'] + ArtDonutChartCard: typeof import('./../components/core/cards/ArtDonutChartCard.vue')['default'] + ArtDragVerify: typeof import('./../components/core/forms/ArtDragVerify.vue')['default'] + ArtDualBarCompareChart: typeof import('./../components/core/charts/ArtDualBarCompareChart.vue')['default'] + ArtExcelExport: typeof import('./../components/core/forms/ArtExcelExport.vue')['default'] + ArtExcelImport: typeof import('./../components/core/forms/ArtExcelImport.vue')['default'] + ArtException: typeof import('./../components/core/views/exception/ArtException.vue')['default'] + ArtFastEnter: typeof import('./../components/core/layouts/art-fast-enter/index.vue')['default'] + ArtFestivalTextScroll: typeof import('./../components/core/text-effect/ArtFestivalTextScroll.vue')['default'] + ArtFireworksEffect: typeof import('./../components/core/layouts/art-fireworks-effect/index.vue')['default'] + ArtGlobalSearch: typeof import('./../components/core/layouts/art-global-search/index.vue')['default'] + ArtHBarChart: typeof import('./../components/core/charts/ArtHBarChart.vue')['default'] + ArtHeaderBar: typeof import('./../components/core/layouts/art-header-bar/index.vue')['default'] + ArtHorizontalMenu: typeof import('./../components/core/layouts/art-menus/art-horizontal-menu/index.vue')['default'] + ArtIconSelector: typeof import('./../components/core/base/ArtIconSelector.vue')['default'] + ArtImageCard: typeof import('./../components/core/cards/ArtImageCard.vue')['default'] + ArtKLineChart: typeof import('./../components/core/charts/ArtKLineChart.vue')['default'] + ArtLayouts: typeof import('./../components/core/layouts/art-layouts/index.vue')['default'] + ArtLineChart: typeof import('./../components/core/charts/ArtLineChart.vue')['default'] + ArtLineChartCard: typeof import('./../components/core/cards/ArtLineChartCard.vue')['default'] + ArtLogo: typeof import('./../components/core/base/ArtLogo.vue')['default'] + ArtMapChart: typeof import('./../components/core/charts/ArtMapChart.vue')['default'] + ArtMenuRight: typeof import('./../components/core/others/ArtMenuRight.vue')['default'] + ArtMixedMenu: typeof import('./../components/core/layouts/art-menus/art-mixed-menu/index.vue')['default'] + ArtNotification: typeof import('./../components/core/layouts/art-notification/index.vue')['default'] + ArtPageContent: typeof import('./../components/core/layouts/art-page-content/index.vue')['default'] + ArtProgressCard: typeof import('./../components/core/cards/ArtProgressCard.vue')['default'] + ArtRadarChart: typeof import('./../components/core/charts/ArtRadarChart.vue')['default'] + ArtResultPage: typeof import('./../components/core/views/result/ArtResultPage.vue')['default'] + ArtRingChart: typeof import('./../components/core/charts/ArtRingChart.vue')['default'] + ArtScatterChart: typeof import('./../components/core/charts/ArtScatterChart.vue')['default'] + ArtScreenLock: typeof import('./../components/core/layouts/art-screen-lock/index.vue')['default'] + ArtSearchBar: typeof import('./../components/core/forms/art-search-bar/index.vue')['default'] + ArtSearchDate: typeof import('./../components/core/forms/art-search-bar/widget/art-search-date/index.vue')['default'] + ArtSearchInput: typeof import('./../components/core/forms/art-search-bar/widget/art-search-input/index.vue')['default'] + ArtSearchRadio: typeof import('./../components/core/forms/art-search-bar/widget/art-search-radio/index.vue')['default'] + ArtSearchSelect: typeof import('./../components/core/forms/art-search-bar/widget/art-search-select/index.vue')['default'] + ArtSearchTreeSelect: typeof import('./../components/core/forms/art-search-bar/widget/art-search-tree-select/index.vue')['default'] + ArtSettingsPanel: typeof import('./../components/core/layouts/art-settings-panel/index.vue')['default'] + ArtSidebarMenu: typeof import('./../components/core/layouts/art-menus/art-sidebar-menu/index.vue')['default'] + ArtStatsCard: typeof import('./../components/core/cards/ArtStatsCard.vue')['default'] + ArtTable: typeof import('./../components/core/tables/ArtTable.vue')['default'] + ArtTableFullScreen: typeof import('./../components/core/tables/ArtTableFullScreen.vue')['default'] + ArtTableHeader: typeof import('./../components/core/tables/ArtTableHeader.vue')['default'] + ArtTextScroll: typeof import('./../components/core/text-effect/ArtTextScroll.vue')['default'] + ArtTimelineListCard: typeof import('./../components/core/cards/ArtTimelineListCard.vue')['default'] + ArtVideoPlayer: typeof import('./../components/core/media/ArtVideoPlayer.vue')['default'] + ArtWangEditor: typeof import('./../components/core/forms/ArtWangEditor.vue')['default'] + ArtWatermark: typeof import('./../components/core/others/ArtWatermark.vue')['default'] + ArtWorkTab: typeof import('./../components/core/layouts/art-work-tab/index.vue')['default'] + AuditDistributionChart: typeof import('./../components/business/audit/AuditDistributionChart.vue')['default'] + AuditEventTable: typeof import('./../components/business/audit/AuditEventTable.vue')['default'] + AuditInvestigationDrawer: typeof import('./../components/business/audit/AuditInvestigationDrawer.vue')['default'] + AuditInvestigationHost: typeof import('./../components/business/audit/AuditInvestigationHost.vue')['default'] + AuditInvestigationLinks: typeof import('./../components/business/audit/AuditInvestigationLinks.vue')['default'] + AuditResourceSearchDialog: typeof import('./../components/business/audit/AuditResourceSearchDialog.vue')['default'] + BasicSettings: typeof import('./../components/core/layouts/art-settings-panel/widget/BasicSettings.vue')['default'] + BatchOperationDialog: typeof import('./../components/business/BatchOperationDialog.vue')['default'] + BatchRealnamePolicyDialog: typeof import('./../components/business/BatchRealnamePolicyDialog.vue')['default'] + BoxStyleSettings: typeof import('./../components/core/layouts/art-settings-panel/widget/BoxStyleSettings.vue')['default'] + CardOperationDialog: typeof import('./../components/business/CardOperationDialog.vue')['default'] + CardStatusTag: typeof import('./../components/business/CardStatusTag.vue')['default'] + ChunkErrorBoundary: typeof import('./../components/core/others/ChunkErrorBoundary.vue')['default'] + CodeGeneratorButton: typeof import('./../components/business/CodeGeneratorButton.vue')['default'] + ColorSettings: typeof import('./../components/core/layouts/art-settings-panel/widget/ColorSettings.vue')['default'] + CommentItem: typeof import('./../components/custom/comment-widget/widget/CommentItem.vue')['default'] + CommentWidget: typeof import('./../components/custom/comment-widget/index.vue')['default'] + CommissionDisplay: typeof import('./../components/business/CommissionDisplay.vue')['default'] + ContainerSettings: typeof import('./../components/core/layouts/art-settings-panel/widget/ContainerSettings.vue')['default'] + CreateRefundDialog: typeof import('./../components/business/CreateRefundDialog.vue')['default'] + CustomerAccountDialog: typeof import('./../components/business/CustomerAccountDialog.vue')['default'] + DetailPage: typeof import('./../components/common/DetailPage.vue')['default'] + ElAlert: typeof import('element-plus/es')['ElAlert'] + ElAvatar: typeof import('element-plus/es')['ElAvatar'] + ElButton: typeof import('element-plus/es')['ElButton'] + ElCard: typeof import('element-plus/es')['ElCard'] + ElCascader: typeof import('element-plus/es')['ElCascader'] + ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] + ElCol: typeof import('element-plus/es')['ElCol'] + ElCollapse: typeof import('element-plus/es')['ElCollapse'] + ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] + ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] + ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDivider: typeof import('element-plus/es')['ElDivider'] + ElDrawer: typeof import('element-plus/es')['ElDrawer'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElEmpty: typeof import('element-plus/es')['ElEmpty'] + ElForm: typeof import('element-plus/es')['ElForm'] + ElFormItem: typeof import('element-plus/es')['ElFormItem'] + ElIcon: typeof import('element-plus/es')['ElIcon'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] + ElMenu: typeof import('element-plus/es')['ElMenu'] + ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElPagination: typeof import('element-plus/es')['ElPagination'] + ElPopover: typeof import('element-plus/es')['ElPopover'] + ElRadio: typeof import('element-plus/es')['ElRadio'] + ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElRow: typeof import('element-plus/es')['ElRow'] + ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTag: typeof import('element-plus/es')['ElTag'] + ElTimeline: typeof import('element-plus/es')['ElTimeline'] + ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] + ElUpload: typeof import('element-plus/es')['ElUpload'] + ElWatermark: typeof import('element-plus/es')['ElWatermark'] + ExportTaskCreateDialog: typeof import('./../components/business/ExportTaskCreateDialog.vue')['default'] + HorizontalSubmenu: typeof import('./../components/core/layouts/art-menus/art-horizontal-menu/widget/HorizontalSubmenu.vue')['default'] + ImportDialog: typeof import('./../components/business/ImportDialog.vue')['default'] + LoginLeftView: typeof import('./../components/core/views/login/LoginLeftView.vue')['default'] + MenuLayoutSettings: typeof import('./../components/core/layouts/art-settings-panel/widget/MenuLayoutSettings.vue')['default'] + MenuStyleSettings: typeof import('./../components/core/layouts/art-settings-panel/widget/MenuStyleSettings.vue')['default'] + OperatorSelect: typeof import('./../components/business/OperatorSelect.vue')['default'] + PackageSelector: typeof import('./../components/business/PackageSelector.vue')['default'] + PaymentVoucherDialog: typeof import('./../components/business/PaymentVoucherDialog.vue')['default'] + RealnamePolicyDialog: typeof import('./../components/device/RealnamePolicyDialog.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + SectionTitle: typeof import('./../components/core/layouts/art-settings-panel/widget/SectionTitle.vue')['default'] + SeriesGrantPackageDialog: typeof import('./../components/business/SeriesGrantPackageDialog.vue')['default'] + SeriesGrantPackageTable: typeof import('./../components/business/SeriesGrantPackageTable.vue')['default'] + SettingDrawer: typeof import('./../components/core/layouts/art-settings-panel/widget/SettingDrawer.vue')['default'] + SettingHeader: typeof import('./../components/core/layouts/art-settings-panel/widget/SettingHeader.vue')['default'] + SettingItem: typeof import('./../components/core/layouts/art-settings-panel/widget/SettingItem.vue')['default'] + ShopCreditLimitDialog: typeof import('./../components/business/ShopCreditLimitDialog.vue')['default'] + SidebarSubmenu: typeof import('./../components/core/layouts/art-menus/art-sidebar-menu/widget/SidebarSubmenu.vue')['default'] + SpeedLimitDialog: typeof import('./../components/device/SpeedLimitDialog.vue')['default'] + SwitchCardDialog: typeof import('./../components/device/SwitchCardDialog.vue')['default'] + TableContextMenuHint: typeof import('./../components/core/others/TableContextMenuHint.vue')['default'] + ThemeSettings: typeof import('./../components/core/layouts/art-settings-panel/widget/ThemeSettings.vue')['default'] + UpdateRealnameStatusDialog: typeof import('./../components/business/UpdateRealnameStatusDialog.vue')['default'] + VoucherUpload: typeof import('./../components/business/VoucherUpload.vue')['default'] + } + export interface ComponentCustomProperties { + vLoading: typeof import('element-plus/es')['ElLoadingDirective'] + } +} diff --git a/src/views/asset-management/asset-information/components/BasicInfoCard.vue b/src/views/asset-management/asset-information/components/BasicInfoCard.vue index a008aa1..847d926 100644 --- a/src/views/asset-management/asset-information/components/BasicInfoCard.vue +++ b/src/views/asset-management/asset-information/components/BasicInfoCard.vue @@ -1452,7 +1452,7 @@ } :deep(.asset-label--bound-device-name::before) { - content: '\e6ef'; + content: '\e7d8'; } :deep(.asset-label--device-name::before) { diff --git a/src/views/asset-management/asset-information/components/PackageListCard.vue b/src/views/asset-management/asset-information/components/PackageListCard.vue index 066ad11..65117b1 100644 --- a/src/views/asset-management/asset-information/components/PackageListCard.vue +++ b/src/views/asset-management/asset-information/components/PackageListCard.vue @@ -319,8 +319,9 @@ v-model="usedDataForm.data_usage" :min="0" :max="usedDataMaxValue" - :precision="3" - :step="0.1" + :precision="0" + :step="1" + step-strictly class="used-data-input__number" placeholder="请输入新的套餐真实已用量" /> @@ -457,7 +458,7 @@ const usedDataMaxValue = computed(() => { const realTotalMb = selectedPackage.value?.real_total_mb ?? 0 - return usedDataForm.unit === 'GB' ? Number((realTotalMb / 1024).toFixed(3)) : realTotalMb + return usedDataForm.unit === 'GB' ? Math.floor(realTotalMb / 1024) : Math.floor(realTotalMb) }) const validateUsedData = ( @@ -471,6 +472,11 @@ return } + if (!Number.isInteger(usedDataForm.data_usage)) { + callback(new Error('新的已用量必须为整数')) + return + } + if (dataUsageMb === undefined || dataUsageMb < 0) { callback(new Error('请输入可换算为非负数字 MB 的已用量')) return diff --git a/src/views/asset-management/asset-information/composables/useAssetFormatters.ts b/src/views/asset-management/asset-information/composables/useAssetFormatters.ts index 7e2a366..39b9537 100644 --- a/src/views/asset-management/asset-information/composables/useAssetFormatters.ts +++ b/src/views/asset-management/asset-information/composables/useAssetFormatters.ts @@ -62,7 +62,7 @@ export function useAssetFormatters() { const getRealNameStatusType = (status?: number): 'info' | 'success' | 'warning' | 'danger' => { if (status === undefined || status === null) return 'info' const map: Record = { - 0: 'info', + 0: 'danger', 1: 'success' } return map[status] || 'info'