fix: 修改工单bug
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 2m15s

This commit is contained in:
sexygoat
2026-04-22 18:33:52 +08:00
parent fd22dc7ad4
commit a9467e8a0c
8 changed files with 64 additions and 34 deletions

View File

@@ -723,7 +723,7 @@
loading.value = true
try {
const params = {
page: pagination.page,
page: pagination.currentPage,
page_size: pagination.pageSize,
username: formFilters.name || undefined,
phone: formFilters.phone || undefined,

View File

@@ -28,8 +28,7 @@
type="primary"
link
class="package-name-link"
@click="handleShowDailyRecords(scope.row)"
v-permission="'package_usage:daily_records'"
@click="handlePackageNameClick(scope.row)"
>
{{ scope.row.package_name }}
</ElButton>
@@ -105,18 +104,6 @@
{{ formatDateTime(scope.row.expires_at) }}
</template>
</ElTableColumn>
<ElTableColumn label="操作" width="100" fixed="right">
<template #default="scope">
<ElButton
type="primary"
link
@click="handleShowDailyRecords(scope.row)"
v-permission="'package_usage:daily_records'"
>
流量详单
</ElButton>
</template>
</ElTableColumn>
</ElTable>
<ElPagination
v-model:current-page="pagination.page"
@@ -146,10 +133,14 @@
ElEmpty,
ElPagination
} from 'element-plus'
import { ElMessage } from 'element-plus'
import { useAssetFormatters } from '../composables/useAssetFormatters'
import { formatDateTime } from '@/utils/business/format'
import type { AssetPackageUsageRecord } from '@/types/api'
import { useAuth } from '@/composables/useAuth'
const { hasAuth } = useAuth()
// Props 使用 API 类型
type PackageInfo = AssetPackageUsageRecord
@@ -207,6 +198,15 @@
getProgressColorByPercentage
} = useAssetFormatters()
// 套餐名称点击
const handlePackageNameClick = (packageRow: PackageInfo) => {
if (!hasAuth('package_usage:daily_records')) {
ElMessage.warning('您没有查看流量详单的权限')
return
}
emit('showDailyRecords', { packageRow })
}
// 显示流量详单
const handleShowDailyRecords = (packageRow: PackageInfo) => {
emit('showDailyRecords', { packageRow })

View File

@@ -68,11 +68,11 @@
set: (value) => emit('update:modelValue', value)
})
const currentMode = computed(() => props.currentMode ?? 0)
const currentMode = computed(() => Number(props.currentMode) ?? 0)
watch(visible, (newVal) => {
if (newVal) {
form.switch_mode = props.currentMode ?? 0
form.switch_mode = Number(props.currentMode) ?? 0
}
})

View File

@@ -402,7 +402,7 @@
currentCardDetail.iccid
}}</ElDescriptionsItem>
<ElDescriptionsItem label="卡接入号">{{
<ElDescriptionsItem label="MSISDN">{{
currentCardDetail.msisdn || '--'
}}</ElDescriptionsItem>
<ElDescriptionsItem label="运营商">{{
@@ -778,7 +778,10 @@
virtual_no: '',
device_virtual_no: '',
is_distributed: undefined,
is_standalone: undefined
is_standalone: undefined,
is_replaced: undefined,
iccid_start: '',
iccid_end: ''
}
// 搜索表单
@@ -923,12 +926,12 @@
}))
},
{
label: '卡接入号',
label: 'MSISDN',
prop: 'msisdn',
type: 'input',
config: {
clearable: true,
placeholder: '请输入卡接入号'
placeholder: '请输入MSISDN'
}
},
{
@@ -974,13 +977,44 @@
{ label: '是(未绑定设备)', value: true },
{ label: '否(已绑定设备)', value: false }
]
},
{
label: '是否有换卡记录',
prop: 'is_replaced',
type: 'select',
config: {
clearable: true,
placeholder: '全部'
},
options: () => [
{ label: '有换卡记录', value: true },
{ label: '无换卡记录', value: false }
]
},
{
label: 'ICCID起始号',
prop: 'iccid_start',
type: 'input',
config: {
clearable: true,
placeholder: '请输入ICCID起始号'
}
},
{
label: 'ICCID结束号',
prop: 'iccid_end',
type: 'input',
config: {
clearable: true,
placeholder: '请输入ICCID结束号'
}
}
]
// 列配置
const columnOptions = [
{ label: 'ICCID', prop: 'iccid' },
{ label: '卡接入号', prop: 'msisdn' },
{ label: 'MSISDN', prop: 'msisdn' },
{ label: '卡虚拟号', prop: 'virtual_no' },
{ label: '绑定设备虚拟号', prop: 'device_virtual_no' },
{ label: '卡业务类型', prop: 'card_category' },
@@ -1105,7 +1139,7 @@
},
{
prop: 'msisdn',
label: '卡接入号',
label: 'MSISDN',
width: 160
},
{
@@ -1202,7 +1236,8 @@
{
prop: 'data_usage_mb',
label: '累计流量(MB)',
width: 120
width: 120,
formatter: (row: StandaloneIotCard) => row.data_usage_mb?.toLocaleString() || '0'
},
{
prop: 'created_at',

View File

@@ -49,7 +49,6 @@
{
title: '基本信息',
fields: [
{ label: 'ID', prop: 'id' },
{ label: '套餐编码', prop: 'package_code' },
{ label: '套餐名称', prop: 'package_name' },
{ label: '套餐系列', prop: 'series_name' },

View File

@@ -49,7 +49,6 @@
{
title: '基本信息',
fields: [
{ label: 'ID', prop: 'id' },
{ label: '系列编码', prop: 'series_code' },
{ label: '系列名称', prop: 'series_name' },
{
@@ -60,8 +59,7 @@
},
{
label: '描述',
prop: 'description',
fullWidth: true
prop: 'description'
},
{ label: '创建时间', prop: 'created_at', formatter: (value) => formatDateTime(value) },
{ label: '更新时间', prop: 'updated_at', formatter: (value) => formatDateTime(value) }
@@ -110,7 +108,6 @@
},
{
label: '梯度配置',
fullWidth: true,
render: (data) => {
const config = data.one_time_commission_config
if (

View File

@@ -17,8 +17,7 @@
<!-- 基本信息 -->
<div class="info-section">
<div class="section-title">基本信息</div>
<ElDescriptions :column="2" border>
<ElDescriptionsItem label="ID">{{ detailData.id }}</ElDescriptionsItem>
<ElDescriptions :column="3" border>
<ElDescriptionsItem label="系列编码">{{
detailData.series_code || '-'
}}</ElDescriptionsItem>
@@ -47,7 +46,7 @@
<!-- 佣金配置 -->
<div class="info-section">
<div class="section-title">佣金配置</div>
<ElDescriptions :column="2" border label-width="120">
<ElDescriptions :column="3" border label-width="120">
<ElDescriptionsItem label="佣金类型">
<ElTag :type="detailData.commission_type === 'fixed' ? 'success' : 'warning'">
{{ detailData.commission_type === 'fixed' ? '固定佣金' : '梯度佣金' }}
@@ -117,7 +116,7 @@
<!-- 强制充值配置 -->
<div class="info-section">
<div class="section-title">强制充值配置</div>
<ElDescriptions :column="2" border>
<ElDescriptions :column="3" border>
<ElDescriptionsItem label="启用状态">
<ElTag :type="detailData.force_recharge_enabled ? 'warning' : 'info'">
{{ getEnableStatusText(detailData.force_recharge_enabled || false) }}

View File

@@ -729,7 +729,7 @@
loading.value = true
try {
const params = {
page: pagination.page,
page: pagination.currentPage,
page_size: pagination.pageSize,
shop_name: searchForm.shop_name || undefined,
shop_code: searchForm.shop_code || undefined,