{{ formattedUnreadCount }}
diff --git a/src/types/auto-imports.d.ts b/src/types/auto-imports.d.ts
index 5d1eb79..66ef040 100644
--- a/src/types/auto-imports.d.ts
+++ b/src/types/auto-imports.d.ts
@@ -8,8 +8,8 @@ export {}
declare global {
const EffectScope: typeof import('vue')['EffectScope']
const ElButton: (typeof import('element-plus/es'))['ElButton']
- const ElMessage: typeof import('element-plus/es')['ElMessage']
- const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
+ const ElMessage: (typeof import('element-plus/es'))['ElMessage']
+ const ElMessageBox: (typeof import('element-plus/es'))['ElMessageBox']
const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
diff --git a/src/utils/business/apiError.ts b/src/utils/business/apiError.ts
index bbb0129..3e3a27c 100644
--- a/src/utils/business/apiError.ts
+++ b/src/utils/business/apiError.ts
@@ -1,6 +1,13 @@
import axios from 'axios'
-export type ApiErrorKind = 'auth' | 'forbidden' | 'validation' | 'conflict' | 'timeout' | 'server' | 'unknown'
+export type ApiErrorKind =
+ | 'auth'
+ | 'forbidden'
+ | 'validation'
+ | 'conflict'
+ | 'timeout'
+ | 'server'
+ | 'unknown'
export interface NormalizedApiError {
kind: ApiErrorKind
@@ -20,12 +27,59 @@ export const normalizeApiError = (error: unknown): NormalizedApiError => {
const timeout = axios.isAxiosError(error) && error.code === 'ECONNABORTED'
if (timeout) {
- return { kind: 'timeout', status, code, message: '请求超时,结果可能未知,请刷新确认', unknownResult: true }
+ return {
+ kind: 'timeout',
+ status,
+ code,
+ message: '请求超时,结果可能未知,请刷新确认',
+ unknownResult: true
+ }
+ }
+ if (status === 401 || code === 401)
+ return {
+ kind: 'auth',
+ status,
+ code,
+ message: '登录状态已失效,请重新登录',
+ unknownResult: false
+ }
+ if (status === 403)
+ return {
+ kind: 'forbidden',
+ status,
+ code,
+ message: '没有执行此操作的权限',
+ unknownResult: false
+ }
+ if (status === 400)
+ return {
+ kind: 'validation',
+ status,
+ code,
+ message: backendMessage || '请求参数或业务条件不符合要求',
+ unknownResult: false
+ }
+ if (status === 409)
+ return {
+ kind: 'conflict',
+ status,
+ code,
+ message: backendMessage || '数据已发生变化,请刷新后重试',
+ unknownResult: false
+ }
+ if (status && status >= 500)
+ return {
+ kind: 'server',
+ status,
+ code,
+ message: '服务器处理失败,请稍后重试',
+ unknownResult: false
+ }
+ return {
+ kind: 'unknown',
+ status,
+ code,
+ message: backendMessage || '操作失败,请稍后重试',
+ unknownResult: false
}
- if (status === 401 || code === 401) return { kind: 'auth', status, code, message: '登录状态已失效,请重新登录', unknownResult: false }
- if (status === 403) return { kind: 'forbidden', status, code, message: '没有执行此操作的权限', unknownResult: false }
- if (status === 400) return { kind: 'validation', status, code, message: backendMessage || '请求参数或业务条件不符合要求', unknownResult: false }
- if (status === 409) return { kind: 'conflict', status, code, message: backendMessage || '数据已发生变化,请刷新后重试', unknownResult: false }
- if (status && status >= 500) return { kind: 'server', status, code, message: '服务器处理失败,请稍后重试', unknownResult: false }
- return { kind: 'unknown', status, code, message: backendMessage || '操作失败,请稍后重试', unknownResult: false }
}
diff --git a/src/utils/business/approvalSummary.ts b/src/utils/business/approvalSummary.ts
index 075bc29..97f8711 100644
--- a/src/utils/business/approvalSummary.ts
+++ b/src/utils/business/approvalSummary.ts
@@ -17,7 +17,9 @@ export const getApprovalStatusText = (summary: ApprovalSummary): string => {
summary.approval_provider === 'wecom' ||
summary.approval_instance_id
) {
- return summary.approval_status_name || approvalStatusNames[Number(summary.approval_status)] || '-'
+ return (
+ summary.approval_status_name || approvalStatusNames[Number(summary.approval_status)] || '-'
+ )
}
return '-'
}
@@ -27,7 +29,8 @@ export const getCurrentApproverSummaryText = (summary: ApprovalSummary): string
summary.approval_source !== 'wecom' &&
summary.approval_provider !== 'wecom' &&
!summary.approval_instance_id
- ) return '-'
+ )
+ return '-'
return summary.current_approver_summary || '-'
}
diff --git a/src/utils/business/paymentConfig.ts b/src/utils/business/paymentConfig.ts
index 8ef49f2..31a664f 100644
--- a/src/utils/business/paymentConfig.ts
+++ b/src/utils/business/paymentConfig.ts
@@ -25,7 +25,10 @@ export const getPaymentMerchantId = (
}
export const getPaymentNotifyUrl = (
- config: Pick
+ config: Pick<
+ PaymentSettings,
+ 'provider_type' | 'wx_notify_url' | 'fy_notify_url' | 'ali_notify_url'
+ >
): string => {
if (config.provider_type === 'wechat' || config.provider_type === 'wechat_v2') {
return config.wx_notify_url || '-'
diff --git a/src/views/account-management/account/index.vue b/src/views/account-management/account/index.vue
index b9294d2..f0841c4 100644
--- a/src/views/account-management/account/index.vue
+++ b/src/views/account-management/account/index.vue
@@ -1,3 +1,4 @@
+
diff --git a/src/views/account-management/enterprise-customer/index.vue b/src/views/account-management/enterprise-customer/index.vue
index 0d707ad..59de110 100644
--- a/src/views/account-management/enterprise-customer/index.vue
+++ b/src/views/account-management/enterprise-customer/index.vue
@@ -18,6 +18,7 @@
@refresh="handleRefresh"
>
+
新增企业客户
@@ -807,7 +808,7 @@
dialogVisible.value = false
formEl.resetFields()
- getTableData()
+ await getTableData()
} catch (error) {
console.error(error)
} finally {
diff --git a/src/views/asset-management/asset-information/components/BasicInfoCard.vue b/src/views/asset-management/asset-information/components/BasicInfoCard.vue
index 3a5821b..49ad52b 100644
--- a/src/views/asset-management/asset-information/components/BasicInfoCard.vue
+++ b/src/views/asset-management/asset-information/components/BasicInfoCard.vue
@@ -515,6 +515,7 @@
+
-
+
{{ scope.row.reference_no }}
@@ -444,7 +444,6 @@
}
.wallet-table {
-
:deep(.el-table__header) {
th {
font-weight: 600;
diff --git a/src/views/asset-management/exchange-management/index.vue b/src/views/asset-management/exchange-management/index.vue
index b1d663d..68b7362 100644
--- a/src/views/asset-management/exchange-management/index.vue
+++ b/src/views/asset-management/exchange-management/index.vue
@@ -1828,9 +1828,9 @@
.exchange-field-error {
width: 100%;
margin-top: 4px;
- color: var(--el-color-danger);
font-size: 12px;
line-height: 1.2;
+ color: var(--el-color-danger);
}
}
diff --git a/src/views/asset-management/task-management/bulk-purchase/detail.vue b/src/views/asset-management/task-management/bulk-purchase/detail.vue
index ced3ce4..051030e 100644
--- a/src/views/asset-management/task-management/bulk-purchase/detail.vue
+++ b/src/views/asset-management/task-management/bulk-purchase/detail.vue
@@ -310,8 +310,8 @@
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
- vertical-align: bottom;
white-space: nowrap;
+ vertical-align: bottom;
}
.task-error {
diff --git a/src/views/asset-management/task-management/bulk-purchase/index.vue b/src/views/asset-management/task-management/bulk-purchase/index.vue
index 6c64746..ffa431b 100644
--- a/src/views/asset-management/task-management/bulk-purchase/index.vue
+++ b/src/views/asset-management/task-management/bulk-purchase/index.vue
@@ -623,9 +623,9 @@
.bulk-purchase-page {
.task-list-header {
display: flex;
+ gap: 12px;
align-items: center;
justify-content: space-between;
- gap: 12px;
}
.task-list-toolbar {
@@ -670,10 +670,10 @@
margin-top: 16px;
}
- @media (max-width: 768px) {
+ @media (width <= 768px) {
.task-list-header {
- align-items: flex-start;
flex-direction: column;
+ align-items: flex-start;
}
.task-list-toolbar {
diff --git a/src/views/asset-management/task-management/device-batch-allocation/index.vue b/src/views/asset-management/task-management/device-batch-allocation/index.vue
index 8ff84f0..32aeb41 100644
--- a/src/views/asset-management/task-management/device-batch-allocation/index.vue
+++ b/src/views/asset-management/task-management/device-batch-allocation/index.vue
@@ -546,16 +546,16 @@
.device-batch-allocation-page {
.task-list-header {
display: flex;
+ gap: 16px;
align-items: center;
justify-content: space-between;
- gap: 16px;
}
.task-list-toolbar {
display: flex;
flex-wrap: wrap;
- justify-content: flex-end;
gap: 10px;
+ justify-content: flex-end;
}
.pagination-wrapper {
@@ -566,14 +566,14 @@
.drawer-footer {
display: flex;
- justify-content: flex-end;
gap: 12px;
+ justify-content: flex-end;
}
- @media (max-width: 900px) {
+ @media (width <= 900px) {
.task-list-header {
- align-items: flex-start;
flex-direction: column;
+ align-items: flex-start;
}
.task-list-toolbar {
diff --git a/src/views/asset-management/task-management/device-task/index.vue b/src/views/asset-management/task-management/device-task/index.vue
index e86559a..9226e5b 100644
--- a/src/views/asset-management/task-management/device-task/index.vue
+++ b/src/views/asset-management/task-management/device-task/index.vue
@@ -620,8 +620,8 @@
.device-task-page {
.task-polling-error {
display: flex;
- align-items: center;
gap: 12px;
+ align-items: center;
margin-bottom: 12px;
}
diff --git a/src/views/asset-management/task-management/order-package-invalidate-task/index.vue b/src/views/asset-management/task-management/order-package-invalidate-task/index.vue
index d58d07a..b5d5b06 100644
--- a/src/views/asset-management/task-management/order-package-invalidate-task/index.vue
+++ b/src/views/asset-management/task-management/order-package-invalidate-task/index.vue
@@ -452,7 +452,7 @@
diff --git a/src/views/asset-management/task-management/task-detail/index.vue b/src/views/asset-management/task-management/task-detail/index.vue
index aa6a6a6..6deb027 100644
--- a/src/views/asset-management/task-management/task-detail/index.vue
+++ b/src/views/asset-management/task-management/task-detail/index.vue
@@ -355,8 +355,8 @@
.task-detail-page {
.detail-header {
display: flex;
- align-items: center;
gap: 16px;
+ align-items: center;
padding-bottom: 16px;
.detail-title {
diff --git a/src/views/audit/events/detail.vue b/src/views/audit/events/detail.vue
index 48b9a63..f1ea788 100644
--- a/src/views/audit/events/detail.vue
+++ b/src/views/audit/events/detail.vue
@@ -329,8 +329,8 @@
.resource-snapshot-diff {
display: grid;
- grid-column: 1 / -1;
grid-template-columns: repeat(2, minmax(0, 1fr));
+ grid-column: 1 / -1;
gap: 16px;
}
diff --git a/src/views/commission-management/my-commission/index.vue b/src/views/commission-management/my-commission/index.vue
index d1b4f8b..ab8633b 100644
--- a/src/views/commission-management/my-commission/index.vue
+++ b/src/views/commission-management/my-commission/index.vue
@@ -979,15 +979,15 @@
diff --git a/src/views/package-management/series-grants/index.vue b/src/views/package-management/series-grants/index.vue
index fbfb594..9ebacbd 100644
--- a/src/views/package-management/series-grants/index.vue
+++ b/src/views/package-management/series-grants/index.vue
@@ -2011,20 +2011,20 @@
}
.package-name {
- grid-column: 1 / 3;
grid-row: 1;
+ grid-column: 1 / 3;
min-width: 0;
padding-bottom: 8px;
- border-bottom: 1px solid var(--el-border-color-lighter);
font-size: 14px;
color: var(--el-text-color-regular);
+ border-bottom: 1px solid var(--el-border-color-lighter);
}
.cost-price-input-wrapper {
- grid-column: 1;
- grid-row: 2;
display: flex;
flex-direction: column;
+ grid-row: 2;
+ grid-column: 1;
gap: 6px;
align-items: flex-start;
width: 100%;
@@ -2041,20 +2041,20 @@
.min-cost-hint {
font-size: 12px;
- color: var(--el-text-color-secondary);
line-height: 1.4;
+ color: var(--el-text-color-secondary);
}
}
.expiry-base-input-wrapper {
- grid-column: 2;
- grid-row: 2;
display: flex;
flex-direction: column;
+ grid-row: 2;
+ grid-column: 2;
gap: 8px;
- min-width: 0;
- width: 100%;
align-self: start;
+ width: 100%;
+ min-width: 0;
.expiry-base-label {
font-size: 13px;
@@ -2069,10 +2069,9 @@
}
:deep(.el-button) {
- grid-column: 3;
grid-row: 1;
- align-self: start;
- justify-self: end;
+ grid-column: 3;
+ place-self: start end;
width: 56px;
padding-right: 8px;
padding-left: 8px;
@@ -2090,18 +2089,18 @@
grid-template-columns: 1fr;
.expiry-base-input-wrapper {
- grid-column: 1 / -1;
grid-row: 3;
+ grid-column: 1 / -1;
}
.cost-price-input-wrapper {
- grid-column: 1 / -1;
grid-row: 2;
+ grid-column: 1 / -1;
}
:deep(.el-button) {
- grid-column: 3;
grid-row: 1;
+ grid-column: 3;
justify-self: start;
}
}
diff --git a/src/views/settings/wecom/applications/components/WecomApplicationFormDialog.vue b/src/views/settings/wecom/applications/components/WecomApplicationFormDialog.vue
index 38fc998..eb548c5 100644
--- a/src/views/settings/wecom/applications/components/WecomApplicationFormDialog.vue
+++ b/src/views/settings/wecom/applications/components/WecomApplicationFormDialog.vue
@@ -207,8 +207,8 @@
diff --git a/src/views/settings/wecom/members/index.vue b/src/views/settings/wecom/members/index.vue
index 366ea07..c83fd85 100644
--- a/src/views/settings/wecom/members/index.vue
+++ b/src/views/settings/wecom/members/index.vue
@@ -267,8 +267,8 @@
:deep(> .el-card__body) {
box-sizing: border-box;
min-height: 0;
- overflow-y: auto;
padding-bottom: 24px;
+ overflow-y: auto;
}
}
@@ -303,10 +303,10 @@
:deep(.el-card__body) {
display: flex;
- height: auto;
flex-direction: column;
- justify-content: space-between;
gap: 10px;
+ justify-content: space-between;
+ height: auto;
overflow: visible;
}
}
@@ -318,41 +318,41 @@
}
.member-card__header {
- justify-content: space-between;
gap: 12px;
+ justify-content: space-between;
}
.member-card__identity {
display: flex;
- min-width: 0;
flex: 1;
- align-items: center;
gap: 10px;
+ align-items: center;
+ min-width: 0;
}
.member-card__avatar {
flex-shrink: 0;
+ font-weight: 600;
color: var(--el-color-primary);
background: var(--el-color-primary-light-9);
- font-weight: 600;
}
.member-card__name {
- min-width: 0;
flex: 1;
+ min-width: 0;
overflow: hidden;
- color: var(--el-text-color-primary);
font-size: 16px;
font-weight: 600;
+ color: var(--el-text-color-primary);
text-overflow: ellipsis;
white-space: nowrap;
}
.member-card__info {
- justify-content: space-between;
gap: 16px;
- color: var(--el-text-color-regular);
+ justify-content: space-between;
font-size: 13px;
+ color: var(--el-text-color-regular);
span:last-child {
min-width: 0;
@@ -381,19 +381,19 @@
margin-top: 20px;
}
- @media (max-width: 1400px) {
+ @media (width <= 1400px) {
.member-grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
- @media (max-width: 1024px) {
+ @media (width <= 1024px) {
.member-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
- @media (max-width: 640px) {
+ @media (width <= 640px) {
.member-grid {
grid-template-columns: 1fr;
}
diff --git a/src/views/settings/wecom/scenes/index.vue b/src/views/settings/wecom/scenes/index.vue
index a321da8..bccf48b 100644
--- a/src/views/settings/wecom/scenes/index.vue
+++ b/src/views/settings/wecom/scenes/index.vue
@@ -502,9 +502,9 @@
.dialog-section {
padding: 18px 20px;
+ background: var(--el-fill-color-blank);
border: 1px solid var(--el-border-color-lighter);
border-radius: 8px;
- background: var(--el-fill-color-blank);
}
.dialog-section + .dialog-section {
@@ -513,22 +513,22 @@
.dialog-section__header {
display: flex;
+ gap: 16px;
align-items: flex-start;
justify-content: space-between;
- gap: 16px;
margin-bottom: 16px;
}
.dialog-section__title {
- color: var(--el-text-color-primary);
font-size: 15px;
font-weight: 600;
+ color: var(--el-text-color-primary);
}
.dialog-section__description {
margin-top: 4px;
- color: var(--el-text-color-secondary);
font-size: 12px;
+ color: var(--el-text-color-secondary);
}
.mapping-tip {
@@ -540,8 +540,8 @@
.template-name {
margin-top: 6px;
overflow: hidden;
- color: var(--el-text-color-secondary);
font-size: 12px;
+ color: var(--el-text-color-secondary);
text-overflow: ellipsis;
white-space: nowrap;
}
@@ -556,19 +556,19 @@
.mapping-list {
display: flex;
- max-height: 420px;
flex-direction: column;
gap: 12px;
- overflow-y: auto;
+ max-height: 420px;
padding: 0 4px 4px;
+ overflow-y: auto;
}
.mapping-row {
padding: 14px;
- border: 1px solid var(--el-border-color-lighter);
- border-radius: 6px;
margin-top: 6px;
background: var(--el-fill-color-blank);
+ border: 1px solid var(--el-border-color-lighter);
+ border-radius: 6px;
}
.mapping-row__grid {
@@ -579,31 +579,31 @@
.mapping-field {
display: flex;
- min-width: 0;
flex-direction: column;
gap: 6px;
+ min-width: 0;
}
.mapping-field__label {
- color: var(--el-text-color-secondary);
font-size: 12px;
+ color: var(--el-text-color-secondary);
}
.dialog-footer {
display: flex;
- justify-content: flex-end;
gap: 12px;
+ justify-content: flex-end;
}
- @media (max-width: 768px) {
+ @media (width <= 768px) {
.dialog-section {
padding: 14px;
}
.dialog-section__header {
- align-items: stretch;
flex-direction: column;
gap: 8px;
+ align-items: stretch;
}
.mapping-tip {
@@ -617,13 +617,13 @@
}
}
- @media (max-width: 1200px) {
+ @media (width <= 1200px) {
.mapping-row__grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
- @media (max-width: 768px) {
+ @media (width <= 768px) {
:deep(.wecom-scene-dialog) {
width: calc(100vw - 32px) !important;
}
diff --git a/src/views/shop-management/detail/index.vue b/src/views/shop-management/detail/index.vue
index 702d1e1..c998672 100644
--- a/src/views/shop-management/detail/index.vue
+++ b/src/views/shop-management/detail/index.vue
@@ -16,20 +16,30 @@
{{ shop.shop_name || '-' }}
{{ shop.shop_code || '-' }}
{{ shop.level }}
- {{ shop.parent_shop_name || '-' }}
+ {{
+ shop.parent_shop_name || '-'
+ }}
{{ shop.contact_name || '-' }}
{{ shop.contact_phone || '-' }}
{{ formatBusinessOwner(shop) }}
- {{ shop.business_owner_account_id ? (shop.business_owner_available ? '可用' : '已停用') : '-' }}
+ {{
+ shop.business_owner_account_id
+ ? shop.business_owner_available
+ ? '可用'
+ : '已停用'
+ : '-'
+ }}
{{ shop.province || '-' }}
{{ shop.city || '-' }}
{{ shop.district || '-' }}
{{ shop.address || '-' }}
- {{ shop.status_name || shop.status }}
+ {{
+ shop.status_name || shop.status
+ }}
{{ shop.created_at || '-' }}
{{ shop.updated_at || '-' }}
diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue
index 37a60e7..84deadd 100644
--- a/src/views/system/role/index.vue
+++ b/src/views/system/role/index.vue
@@ -88,7 +88,6 @@
/>
- 单位:元
- 修改后不会影响已有店铺
+ 单位:元,修改后不会影响已有店铺