merge: fix/swagger-proxy-dev into develop (local only, not pushed)

This commit is contained in:
yeuimu
2026-08-28 17:43:41 +08:00
2 changed files with 59 additions and 52 deletions
@@ -692,58 +692,6 @@ async function handleDeleteGood() {
<el-option v-for="c in editFamilyCandidates" :key="c.id" :label="c.goodName" :value="String(c.id)" <el-option v-for="c in editFamilyCandidates" :key="c.id" :label="c.goodName" :value="String(c.id)"
@click="addFamilyMember(c)" /> @click="addFamilyMember(c)" />
</el-select> </el-select>
<el-tabs v-if="editFamilyId && editFamilyLoaded" class="family-detail-tabs">
<el-tab-pane :label="`尺码表 (${familySizeRows.length})`">
<el-table :data="familySizeRows" border size="small" max-height="260">
<el-table-column prop="sizeName" label="尺码" width="100" fixed />
<el-table-column
v-for="column in familySizeColumns"
:key="column.key"
:prop="column.key"
:label="`${column.name} (cm)`"
min-width="110"
/>
</el-table>
</el-tab-pane>
<el-tab-pane :label="`包装规格 (${familyPackageRows.length})`">
<el-table :data="familyPackageRows" border size="small" max-height="260">
<el-table-column prop="sizeName" label="尺码" width="90" fixed />
<el-table-column label="包装尺寸 (cm)" min-width="150">
<template #default="{ row }">
{{ row.dimensionsCm ? `${row.dimensionsCm.length}×${row.dimensionsCm.width}×${row.dimensionsCm.height}` : '-' }}
</template>
</el-table-column>
<el-table-column prop="volumeCm3" label="体积 (cm³)" width="110" />
<el-table-column prop="grossWeightG" label="含包装重量 (g)" width="140" />
</el-table>
</el-tab-pane>
<el-tab-pane :label="`SKU (${familySkuRows.length})`">
<el-table :data="familySkuRows" border size="small" max-height="260">
<el-table-column label="物流" width="110">
<template #default="{ row }">{{ row.logistics || '-' }}</template>
</el-table-column>
<el-table-column label="工艺" width="100">
<template #default="{ row }">{{ row.craft || '-' }}</template>
</el-table-column>
<el-table-column label="印花数量" width="100">
<template #default="{ row }">{{ row.craft?.includes('双面印花') ? '双面印花' : row.craft?.includes('单面印花') ? '单面印花' : '-' }}</template>
</el-table-column>
<el-table-column prop="sizeName" label="尺码" width="90" />
<el-table-column prop="colorName" label="颜色" min-width="110" />
<el-table-column label="价格" width="100">
<template #default="{ row }">{{ row.price }}</template>
</el-table-column>
<el-table-column label="链接数" width="80">
<template #default="{ row }">{{ row.sourceCount || 1 }}</template>
</el-table-column>
<el-table-column label="状态" width="90">
<template #default="{ row }">
<el-tag :type="row.manual ? 'warning' : 'success'" size="small">{{ row.manual ? '人工价' : '推导价' }}</el-tag>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
</div> </div>
<el-form v-loading="editDetailLoading" label-width="80px" style="margin-top: 16px"> <el-form v-loading="editDetailLoading" label-width="80px" style="margin-top: 16px">
<el-form-item label="名称"><el-input v-model="editForm.goodName" /></el-form-item> <el-form-item label="名称"><el-input v-model="editForm.goodName" /></el-form-item>
@@ -819,6 +767,60 @@ async function handleDeleteGood() {
</el-table> </el-table>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<!-- 族级并集视图弹窗最底部尺码表/包装规格为族并集SKU 为价格矩阵动态合并 -->
<el-tabs v-if="!editIsCustom && editFamilyId && editFamilyLoaded" class="detail-tabs">
<el-tab-pane :label="`尺码表 (${familySizeRows.length})`">
<el-table :data="familySizeRows" border size="small" max-height="260">
<el-table-column prop="sizeName" label="尺码" width="100" fixed />
<el-table-column
v-for="column in familySizeColumns"
:key="column.key"
:prop="column.key"
:label="`${column.name} (cm)`"
min-width="110"
/>
</el-table>
</el-tab-pane>
<el-tab-pane :label="`包装规格 (${familyPackageRows.length})`">
<el-table :data="familyPackageRows" border size="small" max-height="260">
<el-table-column prop="sizeName" label="尺码" width="90" fixed />
<el-table-column label="包装尺寸 (cm)" min-width="150">
<template #default="{ row }">
{{ row.dimensionsCm ? `${row.dimensionsCm.length}×${row.dimensionsCm.width}×${row.dimensionsCm.height}` : '-' }}
</template>
</el-table-column>
<el-table-column prop="volumeCm3" label="体积 (cm³)" width="110" />
<el-table-column prop="grossWeightG" label="含包装重量 (g)" width="140" />
</el-table>
</el-tab-pane>
<el-tab-pane :label="`SKU (${familySkuRows.length})`">
<el-table :data="familySkuRows" border size="small" max-height="260">
<el-table-column label="物流" width="110">
<template #default="{ row }">{{ row.logistics || '-' }}</template>
</el-table-column>
<el-table-column label="工艺" width="100">
<template #default="{ row }">{{ row.craft || '-' }}</template>
</el-table-column>
<el-table-column label="印花数量" width="100">
<template #default="{ row }">{{ row.craft?.includes('双面印花') ? '双面印花' : row.craft?.includes('单面印花') ? '单面印花' : '-' }}</template>
</el-table-column>
<el-table-column prop="sizeName" label="尺码" width="90" />
<el-table-column prop="colorName" label="颜色" min-width="110" />
<el-table-column label="价格" width="100">
<template #default="{ row }">{{ row.price }}</template>
</el-table-column>
<el-table-column label="链接数" width="80">
<template #default="{ row }">{{ row.sourceCount || 1 }}</template>
</el-table-column>
<el-table-column label="状态" width="90">
<template #default="{ row }">
<el-tag :type="row.manual ? 'warning' : 'success'" size="small">{{ row.manual ? '人工价' : '推导价' }}</el-tag>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
<template #footer> <template #footer>
<el-button type="danger" @click="handleDeleteGood">删除</el-button> <el-button type="danger" @click="handleDeleteGood">删除</el-button>
<el-button @click="emit('update:visible', false)">取消</el-button> <el-button @click="emit('update:visible', false)">取消</el-button>
+5
View File
@@ -31,6 +31,11 @@ export default defineConfig({
// 端口被占时直接报错退出,而不是静默换端口导致浏览器看到旧实例 // 端口被占时直接报错退出,而不是静默换端口导致浏览器看到旧实例
strictPort: true, strictPort: true,
proxy: { proxy: {
// Swagger 挂载在后端 /api/docs(不走去掉 /api 前缀的改写),需放在 '/api' 之前
'/api/docs': {
target: 'http://127.0.0.1:3001',
changeOrigin: true,
},
'/api': { '/api': {
target: 'http://127.0.0.1:3001', target: 'http://127.0.0.1:3001',
changeOrigin: true, changeOrigin: true,