为了端到端验证 Shrimp 框架,把 hand-admin 前端拷进 examples/basic-admin/web
作为临时演示用前端,@shrimp alias 直接指向同仓 src/,免构建。
修改要点:
- web/vite.config.ts: @shrimp 改成 ../../../src; proxy /admin-api 到 :3100
- web/tsconfig.json: 同步 @shrimp 路径; 删掉 hand-server-2 的 paths
- web/src/locales: 删掉 matter_*/zerobase 业务 key
- web/src/module: 删掉 matter_*/zerobase 业务 vue,只留 user/role/FieldRelativeTime
- examples/basic-admin/index.ts:
- mount 到 /admin-api/* 而不是 /api/*
- 加 /config /login /me 端点 (mock super-admin operator,固定 token)
- DemoShrimp 子类覆盖 getMenuTree 用模块自身 label
- MemoryShrimpCrud 的 getRelatedCrud 手动 wire 到 crudRegistry,
populate 才能跑 (后续 70→90 改进项)
curl 已验证 /config /login /me /product/list 全通,tagIds_label 正确旁挂。
48 lines
991 B
Vue
48 lines
991 B
Vue
<template>
|
|
<el-dropdown v-if="vueAdmin.langCount > 1" trigger="click" @command="setLang">
|
|
<div class="lang-switch">
|
|
<el-icon><Lang /></el-icon>
|
|
</div>
|
|
<template #dropdown>
|
|
<el-dropdown-menu>
|
|
<el-dropdown-item v-for="item in vueAdmin.langList" :key="item.lang" :command="item.lang"
|
|
:class="{ 'is-active': item.lang === vueAdmin.locale }">{{
|
|
item.name }}</el-dropdown-item>
|
|
</el-dropdown-menu>
|
|
</template>
|
|
</el-dropdown>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import { vueAdmin } from "@/VueAdmin";
|
|
import Lang from "@/assets/icons/Lang.vue";
|
|
|
|
function setLang(lang: string) {
|
|
vueAdmin.locale = lang
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.lang-switch {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
cursor: pointer;
|
|
width: 32px;
|
|
height: 32px;
|
|
border-radius: 4px;
|
|
color: #999;
|
|
}
|
|
|
|
.lang-switch .el-icon {
|
|
font-size: 16px;
|
|
}
|
|
</style>
|
|
|
|
<style>
|
|
.el-dropdown-menu .is-active {
|
|
color: var(--el-color-primary) !important;
|
|
font-weight: bold;
|
|
}
|
|
</style>
|