This commit is contained in:
2026-10-20 23:34:11 +08:00
parent f155976f52
commit 13e4aa56ec
321 changed files with 6756 additions and 2110 deletions
@@ -1,4 +1,5 @@
<script setup lang="ts">
import '@/styles/adminWorkbench.css'
import '@/styles/adminDensity.css'
import { computed, onMounted, reactive, ref, watch } from 'vue'
import { ElMessage, ElMessageBox, type FormInstance, type FormRules } from 'element-plus'
@@ -328,7 +329,7 @@ async function toggleStatus(row: PlatformPartnerResource) {
await ElMessageBox.confirm(
`${action}后${nextStatus === 'ACTIVE' ? '可继续用于新业务' : '不再用于新业务,历史数据不受影响'}。`,
`${action}“${row.partnerName}”`,
{ customClass: 'admin-density-confirm', type: nextStatus === 'ACTIVE' ? 'success' : 'warning', confirmButtonText: action, cancelButtonText: '取消' },
{ customClass: 'admin-density-confirm admin-workbench', type: nextStatus === 'ACTIVE' ? 'success' : 'warning', confirmButtonText: action, cancelButtonText: '取消' },
)
} catch {
return
@@ -371,13 +372,13 @@ onMounted(() => {
</script>
<template>
<AdminPage as="div" class="partners-page admin-density" spacing="normal">
<AdminPage as="div" class="partners-page admin-density admin-workbench" spacing="normal">
<ListPageLayout aria-label="往来单位管理">
<section :aria-busy="loading"><DataTable appearance="integrated" :stripe="false" column-settings-mode="show" :results-visible="!loadError"
<section class="workbench-table is-page-surface" :aria-busy="loading"><DataTable appearance="integrated" :stripe="false" column-settings-mode="show" :results-visible="!loadError"
v-model:page="page"
v-model:page-size="pageSize"
:data="rows"
@@ -424,7 +425,7 @@ onMounted(() => {
v-model="editorOpen"
:title="editorLabel"
size="min(680px, 94vw)"
class="editor-drawer admin-density admin-density-drawer"
class="editor-drawer admin-density admin-density-drawer admin-workbench is-drawer"
:confirm-loading="saving"
>
<el-form ref="formRef" :model="form" :rules="rules" label-position="top" class="density-form" :disabled="saving">
@@ -457,7 +458,7 @@ onMounted(() => {
</template>
</AppDrawer>
<AppDrawer v-model="detailOpen" title="往来单位详情" size="min(680px, 94vw)" class="detail-drawer admin-density admin-density-drawer" :loading="detailLoading" :show-footer="false">
<AppDrawer v-model="detailOpen" title="往来单位详情" size="min(680px, 94vw)" class="detail-drawer admin-density admin-density-drawer admin-workbench is-drawer" :loading="detailLoading" :show-footer="false">
<div class="partner-detail">
<DetailPageLayout class="partner-detail-layout" v-if="detail" aria-label="往来单位详情">
<FormSection class="density-form-section" title="单位信息"><dl class="detail-grid density-fields">
@@ -480,7 +481,7 @@ onMounted(() => {
</div>
</AppDrawer>
<BatchImportDialog class="admin-density-dialog"
<BatchImportDialog class="admin-density-dialog admin-workbench is-dialog"
v-model="importOpen"
title="批量导入往来单位"
entity-label="往来单位"
@@ -497,11 +498,11 @@ onMounted(() => {
.partners-page { min-width: 0; }
.partners-primary-actions, .partner-types { display: flex; flex-wrap: wrap; gap: var(--admin-space-3); }
.partner-cell { display: flex; align-items: center; gap: var(--admin-space-4); }
.partner-cell > span { display: grid; width: 34px; height: 34px; flex: 0 0 34px; place-items: center; border-radius: var(--admin-radius); background: #eef3fa; color: var(--cc-primary); }
.partner-cell > span { display: grid; width: 34px; height: 34px; flex: 0 0 34px; place-items: center; border-radius: var(--admin-radius); background: var(--workbench-surface-soft); color: var(--workbench-primary); }
.partner-cell > div { display: flex; min-width: 0; flex-direction: column; gap: 3px; }
.partner-cell :deep(.line-clamp-text) { width: 100%; }
.partner-address { display: flex; align-items: flex-start; gap: 7px; line-height: 1.55; overflow-wrap: anywhere; }
.partner-address svg { flex: 0 0 15px; margin-top: 3px; color: var(--cc-muted); }
.partner-address svg { flex: 0 0 15px; margin-top: 3px; color: var(--workbench-muted); }
.partner-detail { min-width: 0; }
.partner-detail .detail-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.detail-grid .detail-span { grid-column: 1 / -1; }
@@ -1,4 +1,5 @@
<script setup lang="ts">
import '@/styles/adminWorkbench.css'
import InlineHelp from '@/shared/components/InlineHelp.vue'
import '@/styles/adminDensity.css'
import { computed, onMounted, reactive, ref, watch } from 'vue'
@@ -252,7 +253,7 @@ async function toggleStatus(row: PlatformExpressCompanyResource) {
await ElMessageBox.confirm(
`确定${action}“${row.companyName}”吗?${nextStatus === 'INACTIVE' ? '停用后不会再作为可用快递公司。' : ''}`,
`${action}快递公司`,
{ customClass: 'admin-density-confirm', type: nextStatus === 'ACTIVE' ? 'success' : 'warning', confirmButtonText: `确认${action}`, cancelButtonText: '取消' },
{ customClass: 'admin-density-confirm admin-workbench', type: nextStatus === 'ACTIVE' ? 'success' : 'warning', confirmButtonText: `确认${action}`, cancelButtonText: '取消' },
)
} catch {
return
@@ -282,13 +283,13 @@ onMounted(() => {
</script>
<template>
<AdminPage class="admin-density">
<AdminPage class="admin-density admin-workbench">
<div class="business-page express-company-page">
<ListPageLayout ariaLabel="快递公司列表">
<section><DataTable appearance="integrated" :stripe="false" column-settings-mode="show" :results-visible="!loadError"
<section class="workbench-table is-page-surface"><DataTable appearance="integrated" :stripe="false" column-settings-mode="show" :results-visible="!loadError"
v-model:page="page"
v-model:page-size="pageSize"
:data="rows"
@@ -354,7 +355,7 @@ onMounted(() => {
</DataTable></section>
</ListPageLayout>
<BatchImportDialog class="admin-density-dialog"
<BatchImportDialog class="admin-density-dialog admin-workbench is-dialog"
v-model="importOpen"
title="批量导入快递公司"
entity-label="快递公司"
@@ -366,7 +367,7 @@ onMounted(() => {
@success="loadExpressCompanies"
/>
<el-drawer v-model="editorOpen" :title="editorTitle" size="580px" class="editor-drawer admin-density admin-density-drawer" :close-on-click-modal="false">
<el-drawer v-model="editorOpen" :title="editorTitle" size="580px" class="editor-drawer admin-density admin-density-drawer admin-workbench is-drawer" :close-on-click-modal="false">
<el-form ref="formRef" :model="form" :rules="rules" label-position="top" class="density-form" :disabled="saving">
<FormSection class="density-form-section" title="基础信息">
<div class="form-grid two-cols">
@@ -396,14 +397,14 @@ onMounted(() => {
.state-alert p { margin: var(--admin-space-2) 0 0; line-height: 1.55; }
.state-alert .el-button { margin-top: var(--admin-space-4); }
.express-company-cell { display: flex; min-width: 0; align-items: center; gap: var(--admin-space-4); }
.express-company-cell > span { display: grid; width: 34px; height: 34px; flex: 0 0 34px; place-items: center; border: 1px solid var(--cc-border); border-radius: var(--admin-radius); background: #f8fafc; color: var(--cc-primary); }
.express-company-cell > span { display: grid; width: 34px; height: 34px; flex: 0 0 34px; place-items: center; border: 1px solid var(--workbench-border); border-radius: var(--admin-radius); background: var(--workbench-surface-soft); color: var(--workbench-primary); }
.express-company-cell > div { display: flex; min-width: 0; flex-direction: column; gap: 3px; }
.express-company-cell strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.external-link { display: inline-flex; align-items: center; gap: 5px; color: var(--cc-primary); font-size: var(--admin-font-caption); text-decoration: none; }
.external-link { display: inline-flex; align-items: center; gap: 5px; color: var(--workbench-primary); font-size: var(--admin-font-caption); text-decoration: none; }
.external-link:hover { text-decoration: underline; }
.tracking-template { display: block; max-width: 100%; color: #475467; font-family: "Cascadia Code", Consolas, monospace; font-size: var(--admin-font-caption); overflow-wrap: anywhere; }
.tracking-template { display: block; max-width: 100%; color: var(--workbench-text); font-family: "Cascadia Code", Consolas, monospace; font-size: var(--admin-font-caption); overflow-wrap: anywhere; }
.remark-cell { display: -webkit-box; overflow: hidden; line-height: 1.5; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.form-help code { color: #475467; font-family: "Cascadia Code", Consolas, monospace; }
.form-help code { color: var(--workbench-text); font-family: "Cascadia Code", Consolas, monospace; }
.panel-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--admin-space-3); }
.panel-actions .el-button { margin-left: 0; }
@media (max-width: 720px) {