diff --git a/supplied-admin/src/api/admin.ts b/supplied-admin/src/api/admin.ts index 61e93e6..55460c6 100644 --- a/supplied-admin/src/api/admin.ts +++ b/supplied-admin/src/api/admin.ts @@ -4,6 +4,10 @@ const API_BASE = import.meta.env.VITE_SUPPLIED_ADMIN_API_BASE || 'http://127.0.0 const normalizeBase = (base: string) => base.replace(/\/$/, '') +export const resolveImageUrl = (value: string) => /^\/api\/(?:file|upload-preview)\?/.test(value) + ? `${normalizeBase(API_BASE).replace(/\/api\/admin$/, '')}${value.replace('/api/upload-preview?', '/api/file?')}` + : value + export const postAdmin = async (name: string, body: Record): Promise => { const token = readAdminSession()?.token const response = await fetch(`${normalizeBase(API_BASE)}/${name}`, { diff --git a/supplied-admin/src/components/MerchantAfterSaleTable.vue b/supplied-admin/src/components/MerchantAfterSaleTable.vue index 001c6c8..5ae2217 100644 --- a/supplied-admin/src/components/MerchantAfterSaleTable.vue +++ b/supplied-admin/src/components/MerchantAfterSaleTable.vue @@ -1,23 +1,111 @@ - + diff --git a/supplied-admin/src/layouts/AdminLayout.vue b/supplied-admin/src/layouts/AdminLayout.vue index 4d93cae..6d720fa 100644 --- a/supplied-admin/src/layouts/AdminLayout.vue +++ b/supplied-admin/src/layouts/AdminLayout.vue @@ -3,8 +3,8 @@
供应商管理
- - 订单列表售后审核售后处理售后记录 + 订单对账发票管理 + 订单列表订单售后售后记录
diff --git a/supplied-admin/src/router/index.ts b/supplied-admin/src/router/index.ts index 8505fa9..3d9f190 100644 --- a/supplied-admin/src/router/index.ts +++ b/supplied-admin/src/router/index.ts @@ -6,10 +6,11 @@ import { clearAdminSession, readAdminSession } from '@/utils/auth' const routes: RouteRecordRaw[] = [{ path: '/login', name: 'Login', component: () => import('@/views/login/index.vue'), meta: { title: '登录' } }, { path: '/', component: AdminLayout, redirect: '/reconciliation', children: [ { path: 'reconciliation', name: 'Reconciliation', component: () => import('@/views/reconciliation/index.vue'), meta: { title: '订单对账' } }, + { path: 'invoices', name: 'Invoices', component: () => import('@/views/invoices/index.vue'), meta: { title: '发票管理' } }, { path: 'orders', redirect: '/orders/list' }, { path: 'orders/list', name: 'Orders', component: () => import('@/views/orders/index.vue'), meta: { title: '订单列表' } }, - { path: 'orders/after-sales/audit', name: 'AfterSaleAudit', component: () => import('@/views/after-sales/audit.vue'), meta: { title: '售后审核' } }, - { path: 'orders/after-sales/process', name: 'AfterSaleProcess', component: () => import('@/views/after-sales/process.vue'), meta: { title: '售后处理' } }, + { path: 'orders/after-sales/audit', name: 'AfterSaleAudit', component: () => import('@/views/after-sales/audit.vue'), meta: { title: '订单售后' } }, + { path: 'orders/after-sales/process', name: 'AfterSaleProcess', redirect: '/orders/after-sales/audit' }, { path: 'orders/after-sales/history', name: 'AfterSaleHistory', component: () => import('@/views/after-sales/history.vue'), meta: { title: '售后记录' } }, { path: 'products', name: 'Products', component: () => import('@/views/products/index.vue'), meta: { title: '商品管理' } } ] }] diff --git a/supplied-admin/src/styles/index.scss b/supplied-admin/src/styles/index.scss index 49f57e2..f696884 100644 --- a/supplied-admin/src/styles/index.scss +++ b/supplied-admin/src/styles/index.scss @@ -34,9 +34,9 @@ button, input, textarea { font: inherit; } .page-title h2 { margin: 0 0 8px; color: #202e45; font-size: 22px; font-weight: 600; letter-spacing: .5px; } .page-title p { margin: 0; color: #78859a; font-size: 13px; line-height: 1.7; } .query-form.el-form--inline { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 16px 20px; padding: 20px; margin-bottom: 24px; border: 1px solid #e9eef5; border-radius: 10px; background: #f8fafc; } -.query-form.el-form--inline .el-form-item { display: flex; flex-direction: column; align-items: stretch; margin: 0; } -.query-form .el-form-item__label { justify-content: flex-start; height: auto; padding: 0 0 8px; color: #526078; font-size: 13px; line-height: 18px; } -.query-form .el-form-item__content { min-height: 36px; } +.query-form.el-form--inline .el-form-item { display: flex; flex-direction: row; align-items: center; margin: 0; } +.query-form .el-form-item__label { justify-content: flex-start; flex-shrink: 0; height: 36px; padding: 0 12px 0 0; color: #526078; font-size: 13px; line-height: 36px; white-space: nowrap; } +.query-form .el-form-item__content { min-width: 0; min-height: 36px; } .query-form .el-input, .query-form .el-select { width: 208px; max-width: 100%; } .query-form .el-button { min-width: 76px; height: 36px; } .el-input__wrapper, .el-select__wrapper { min-height: 36px; } @@ -78,7 +78,7 @@ button, input, textarea { font: inherit; } .el-dialog .el-form-item:last-child { margin-bottom: 0; } .el-dialog .el-select, .el-dialog .el-input-number { width: 100%; } .el-dialog__footer .el-button { min-width: 80px; height: 36px; } -.el-message-box { max-width: calc(100vw - 32px); padding: 20px; border-radius: 12px; } +.el-message-box { width: 360px; max-width: calc(100vw - 32px); padding: 20px; border-radius: 12px; } @media (max-width: 1200px) { .page-card { padding: 22px; } diff --git a/supplied-admin/src/views/after-sales/audit.vue b/supplied-admin/src/views/after-sales/audit.vue index 3b32508..ee36c32 100644 --- a/supplied-admin/src/views/after-sales/audit.vue +++ b/supplied-admin/src/views/after-sales/audit.vue @@ -1,2 +1,2 @@ - + diff --git a/supplied-admin/src/views/invoices/index.vue b/supplied-admin/src/views/invoices/index.vue new file mode 100644 index 0000000..188686d --- /dev/null +++ b/supplied-admin/src/views/invoices/index.vue @@ -0,0 +1,88 @@ +