align(店铺密钥/店铺管理): 首列ID改序号(全局行号)、密钥列名紫鸟账号名称、店铺管理列序对齐(序号|分组|店铺名|店铺商城名|自动化账号|账号|密码)并统一表单/筛选/凭据标签文案(对齐 admin.html:5298-5300/5339-5348/6038)

This commit is contained in:
2026-09-05 23:35:38 +08:00
parent d3bbb1a296
commit a2bfb08122
4 changed files with 42 additions and 16 deletions
@@ -126,11 +126,11 @@ onMounted(load)
<el-card shadow="never"> <el-card shadow="never">
<el-table v-loading="loading" :data="rows" stripe border> <el-table v-loading="loading" :data="rows" stripe border>
<el-table-column prop="id" label="ID" width="80" /> <el-table-column type="index" label="序号" width="80" :index="(i: number) => (page - 1) * pageSize + i + 1" />
<el-table-column prop="remarkName" label="备注名" min-width="140"> <el-table-column prop="remarkName" label="备注名" min-width="140">
<template #default="{ row }">{{ (row as ShopKeyItem).remarkName || '—' }}</template> <template #default="{ row }">{{ (row as ShopKeyItem).remarkName || '—' }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="ziniaoAccountName" label="紫鸟账号" min-width="160" /> <el-table-column prop="ziniaoAccountName" label="紫鸟账号名称" min-width="160" />
<el-table-column label="紫鸟令牌" min-width="200"> <el-table-column label="紫鸟令牌" min-width="200">
<template #default="{ row }"> <template #default="{ row }">
<el-tooltip :content="(row as ShopKeyItem).ziniaoToken" placement="top"> <el-tooltip :content="(row as ShopKeyItem).ziniaoToken" placement="top">
@@ -208,7 +208,7 @@ onMounted(() => {
</el-select> </el-select>
</div> </div>
<div class="f-item"> <div class="f-item">
<label>店铺名</label> <label>店铺名</label>
<el-input v-model="filter.shopName" placeholder="模糊搜索店铺名" clearable @keyup.enter="apply" /> <el-input v-model="filter.shopName" placeholder="模糊搜索店铺名" clearable @keyup.enter="apply" />
</div> </div>
<div class="f-item btn-row"> <div class="f-item btn-row">
@@ -220,10 +220,13 @@ onMounted(() => {
<el-card shadow="never"> <el-card shadow="never">
<el-table v-loading="loading" :data="rows" stripe border> <el-table v-loading="loading" :data="rows" stripe border>
<el-table-column prop="id" label="ID" width="80" /> <el-table-column type="index" label="序号" width="80" :index="(i: number) => (page - 1) * pageSize + i + 1" />
<el-table-column prop="shopName" label="店铺名称" min-width="160" />
<el-table-column prop="mallName" label="商城" min-width="120" />
<el-table-column prop="groupName" label="分组" min-width="120" /> <el-table-column prop="groupName" label="分组" min-width="120" />
<el-table-column prop="shopName" label="店铺名" min-width="160" />
<el-table-column prop="mallName" label="店铺商城名" min-width="120" />
<el-table-column prop="znUsername" label="自动化账号" min-width="140">
<template #default="{ row }">{{ (row as ShopSummary).znUsername || '—' }}</template>
</el-table-column>
<el-table-column prop="account" label="账号" min-width="140" /> <el-table-column prop="account" label="账号" min-width="140" />
<el-table-column label="密码" width="170"> <el-table-column label="密码" width="170">
<template #default="{ row }"> <template #default="{ row }">
@@ -239,9 +242,6 @@ onMounted(() => {
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="znUsername" label="自动化账号" min-width="140">
<template #default="{ row }">{{ (row as ShopSummary).znUsername || '—' }}</template>
</el-table-column>
<el-table-column prop="createdAt" label="创建时间" min-width="170"> <el-table-column prop="createdAt" label="创建时间" min-width="170">
<template #default="{ row }">{{ formatDateTime(row.createdAt) }}</template> <template #default="{ row }">{{ formatDateTime(row.createdAt) }}</template>
</el-table-column> </el-table-column>
@@ -269,11 +269,11 @@ onMounted(() => {
<el-option v-for="group in groupOptions" :key="group.id" :label="group.groupName" :value="group.id" /> <el-option v-for="group in groupOptions" :key="group.id" :label="group.groupName" :value="group.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="店铺名" required> <el-form-item label="店铺名" required>
<el-input v-model="form.shopName" placeholder="店铺名" /> <el-input v-model="form.shopName" placeholder="店铺名" />
</el-form-item> </el-form-item>
<el-form-item label="商城名" required> <el-form-item label="店铺商城名" required>
<el-input v-model="form.mallName" placeholder=" amazon" /> <el-input v-model="form.mallName" placeholder="店铺商城名" />
</el-form-item> </el-form-item>
<el-form-item label="账号" required> <el-form-item label="账号" required>
<el-input v-model="form.account" placeholder="登录账号" /> <el-input v-model="form.account" placeholder="登录账号" />
@@ -293,9 +293,9 @@ onMounted(() => {
<el-dialog v-model="credentialVisible" title="店铺明文凭据" width="560px"> <el-dialog v-model="credentialVisible" title="店铺明文凭据" width="560px">
<el-descriptions v-if="credential" :column="1" border> <el-descriptions v-if="credential" :column="1" border>
<el-descriptions-item label="店铺名">{{ credential.shopName }}</el-descriptions-item> <el-descriptions-item label="店铺名">{{ credential.shopName }}</el-descriptions-item>
<el-descriptions-item label="分组">{{ credential.groupName || '—' }}</el-descriptions-item> <el-descriptions-item label="分组">{{ credential.groupName || '—' }}</el-descriptions-item>
<el-descriptions-item label="商城">{{ credential.mallName || '—' }}</el-descriptions-item> <el-descriptions-item label="店铺商城">{{ credential.mallName || '—' }}</el-descriptions-item>
<el-descriptions-item label="账号">{{ credential.account }}</el-descriptions-item> <el-descriptions-item label="账号">{{ credential.account }}</el-descriptions-item>
<el-descriptions-item label="密码"> <el-descriptions-item label="密码">
<code>{{ credential.password }}</code> <code>{{ credential.password }}</code>
@@ -0,0 +1,25 @@
import test from 'node:test'
import assert from 'node:assert/strict'
import { readSource } from './helpers.ts'
/** 对齐 admin.html:5298-5300(店铺密钥 序号/紫鸟账号名称) 与 5339-5348(店铺管理列序与列名)。 */
test('align_shop_keys_columns', () => {
const page = readSource('src/pages/shop/ShopKeysPage.vue')
assert.match(page, /label="序号"/, '首列改序号')
assert.match(page, /type="index"/, '序号列按行号生成')
assert.match(page, /紫鸟账号名称/, '列名对齐「紫鸟账号名称」')
assert.doesNotMatch(page, /label="ID"/, '去掉 ID 列')
})
test('align_shop_manage_columns_order_and_labels', () => {
const page = readSource('src/pages/shop/ShopManagePage.vue')
assert.match(page, /label="序号"/, '首列改序号')
assert.doesNotMatch(page, /label="ID"/, '去掉 ID 列')
// 列序:分组 → 店铺名 → 店铺商城名 → 自动化账号 → 账号 → 密码(对齐 admin.html:5339-5348)。
const table = page.slice(page.indexOf('<el-table'))
const orderMatch = /label="分组"[\s\S]*?label="店铺名"[\s\S]*?label="店铺商城名"[\s\S]*?label="自动化账号"[\s\S]*?label="账号"[\s\S]*?label="密码"/.exec(table)
assert.ok(orderMatch, '店铺管理列序对齐参考')
assert.doesNotMatch(table, /店铺名称/, '列名对齐「店铺名」')
assert.doesNotMatch(table, /label="商城"/, '列名对齐「店铺商城名」')
})
+2 -1
View File
@@ -8,7 +8,8 @@ import { readSource } from './helpers.ts'
test('test_task_263_shop_manage_normal_primary_path', () => { test('test_task_263_shop_manage_normal_primary_path', () => {
const page = readSource('src/pages/shop/ShopManagePage.vue') const page = readSource('src/pages/shop/ShopManagePage.vue')
assert.match(page, /分组/, '需有分组列/分组筛选') assert.match(page, /分组/, '需有分组列/分组筛选')
assert.match(page, /店铺名称/, '需有店铺名称筛选') // 对齐 admin.html:5330/6038 标签名「店铺名」。
assert.match(page, /店铺名/, '筛选标签对齐「店铺名」')
assert.match(page, /shopName/, '店铺名筛选绑定 shopName') assert.match(page, /shopName/, '店铺名筛选绑定 shopName')
}) })