Skip to content

Commit 6901132

Browse files
committed
fix: 发布计划详情页显示包名而非包ID + 修复关于弹窗 ElMessageBox 未导入
1 parent 1909582 commit 6901132

7 files changed

Lines changed: 81 additions & 5 deletions

File tree

docs-site/.vitepress/config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export default defineConfig({
1313
{ text: '指南', link: '/guide/' },
1414
{ text: 'API', link: '/api/' },
1515
{ text: '部署', link: '/deploy/' },
16+
{ text: '关于', link: '/about/' },
1617
],
1718
sidebar: {
1819
'/guide/': [

docs-site/about/index.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# 关于 CJRepo
2+
3+
CJRepo 是**仓颉语言包私有仓库服务**,兼容 cjpm 的发布/下载/索引协议。
4+
5+
## 功能特性
6+
7+
- 包发布与下载(兼容 cjpm 二进制协议)
8+
- 索引查询服务
9+
- 用户与组织管理
10+
- 团队权限控制
11+
- 上游源代理与同步
12+
- 发布计划(依赖解析 + 批量发布 + 实时跟踪)
13+
- 管理后台(Vue 3 + Element Plus)
14+
- 完整文档站点
15+
16+
## 技术栈
17+
18+
|| 技术 |
19+
|---|------|
20+
| 后端 | Go + Fiber + XORM |
21+
| 前端 | Vue 3 + Element Plus + Pinia |
22+
| 文档 | VitePress |
23+
| 数据库 | SQLite |
24+
| 协议 | cjpm 二进制协议 |
25+
| 认证 | JWT + Token |
26+
| 部署 | Docker / 二进制发布 |
27+
28+
## 项目链接
29+
30+
- [GitHub 仓库](https://github.com/ystyle/cjrepo)
31+
- [仓颉语言官网](https://cangjie-lang.cn)
32+
- [仓颉语言文档](https://cangjie-lang.cn/docs)
33+
- [问题反馈](https://github.com/ystyle/cjrepo/issues)
34+
35+
## 商业支持
36+
37+
如需托管部署、定制开发或技术支持,请联系:
38+
39+
[lxy5266@live.com](mailto:lxy5266@live.com)
40+
41+
## 开源协议
42+
43+
基于 MIT 协议开源。

frontend/src/api/publish_plan.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ export interface PublishPlanItem {
1414
id: number
1515
plan_id: number
1616
package_id: number
17+
package_name: string
18+
package_organization: string
19+
package_version: string
1720
order: number
1821
category: string
1922
status: string

frontend/src/components/AboutDialog.vue

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,15 @@ defineExpose({ open })
4646

4747
<hr class="divider" />
4848

49+
<div class="links">
50+
<h4>联系方式</h4>
51+
<div class="link-item">
52+
<a href="mailto:lxy5266@live.com">lxy5266@live.com</a>
53+
</div>
54+
</div>
55+
56+
<hr class="divider" />
57+
4958
<div class="links">
5059
<h4>项目链接</h4>
5160
<div class="link-item">

frontend/src/layouts/AdminLayout.vue

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ const goHome = () => {
2222
}
2323
2424
const openAbout = () => {
25-
ElMessageBox.alert('CJRepo - 仓颉私有包仓库服务', '关于', {
26-
confirmButtonText: '确定',
27-
})
25+
aboutDialogRef.value?.open()
2826
}
2927
3028
const openDocs = () => {

frontend/src/views/admin/PublishPlanDetail.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,11 @@ onUnmounted(() => {
203203
<el-table-column label="#" width="50">
204204
<template #default="{ $index }">{{ $index + 1 }}</template>
205205
</el-table-column>
206-
<el-table-column prop="package_id" label="包 ID" width="80" />
206+
<el-table-column label="包名" min-width="180">
207+
<template #default="{ row }">
208+
<span>{{ row.package_organization ? row.package_organization + '::' : '' }}{{ row.package_name }}@{{ row.package_version }}</span>
209+
</template>
210+
</el-table-column>
207211
<el-table-column label="状态" width="110" align="center">
208212
<template #default="{ row }">
209213
<el-tag v-if="row.status !== 'pending'" :type="statusTag(row.status)" size="small">{{ statusLabel(row.status) }}</el-tag>

internal/handlers/publish_plan.go

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,13 @@ func (h *PublishPlanHandler) List(c *fiber.Ctx) error {
160160
}
161161

162162
// Get 计划详情
163+
type itemWithPkg struct {
164+
models.PublishPlanItem
165+
PackageName string `json:"package_name"`
166+
PackageOrganization string `json:"package_organization"`
167+
PackageVersion string `json:"package_version"`
168+
}
169+
163170
func (h *PublishPlanHandler) Get(c *fiber.Ctx) error {
164171
id, err := strconv.ParseInt(c.Params("id"), 10, 64)
165172
if err != nil {
@@ -175,9 +182,20 @@ func (h *PublishPlanHandler) Get(c *fiber.Ctx) error {
175182
var items []models.PublishPlanItem
176183
h.engine.Where("plan_i_d = ?", id).OrderBy("\"order\"").Find(&items)
177184

185+
itemsWithPkg := make([]itemWithPkg, len(items))
186+
for i, item := range items {
187+
itemsWithPkg[i] = itemWithPkg{PublishPlanItem: item}
188+
var pkg models.Package
189+
if ok, _ := h.engine.ID(item.PackageID).Get(&pkg); ok {
190+
itemsWithPkg[i].PackageName = pkg.Name
191+
itemsWithPkg[i].PackageOrganization = pkg.Organization
192+
itemsWithPkg[i].PackageVersion = pkg.Version
193+
}
194+
}
195+
178196
return c.JSON(fiber.Map{
179197
"plan": plan,
180-
"items": items,
198+
"items": itemsWithPkg,
181199
})
182200
}
183201

0 commit comments

Comments
 (0)