feat(task-buttons): 外链按钮新增「打开方式」(新窗口/当前窗口)
按钮管理(/page/strategy/admin/task-buttons)的 url 外链按钮可配置打开方式: - blank=新窗口(默认,window.open(_blank),行为同改前) - self=当前窗口(window.location.assign,嵌入态即当前 iframe) 新增 TaskButton.openMode 字段贯通前后端:前端 task-buttons.ts 类型+种子+ runTaskButton 打开逻辑、api 客户端 snake⇄camel 映射、TaskButtonsPage 下拉; 后端 router schema + ORM open_mode 列(可空默认 blank,启动自动 ALTER 补列, 无需手动迁移)+ sql/memory store 归一化。仅 url 类型生效。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
e906a911b2
commit
a9f01bec79
7 files changed
+41
-1
No files matched your search
@@ -104,6 +104,7 @@ export default function TaskButtonsPage() {
|
||||
appendTaskId: true,
|
||||
idParam: "id",
|
||||
idKind: "task",
|
||||
openMode: "blank",
|
||||
enabled: true,
|
||||
sortOrder: maxSort + 1,
|
||||
},
|
||||
@@ -305,6 +306,19 @@ export default function TaskButtonsPage() {
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
<label className="text-muted-foreground ml-2 shrink-0 text-xs">打开方式</label>
|
||||
<Select
|
||||
value={r.openMode}
|
||||
onValueChange={(v) => update(r.id, { openMode: v as TaskButton["openMode"] })}
|
||||
>
|
||||
<SelectTrigger className="h-8 w-32" title="外链打开方式">
|
||||
<SelectValue />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectItem value="blank">新窗口</SelectItem>
|
||||
<SelectItem value="self">当前窗口</SelectItem>
|
||||
</SelectContent>
|
||||
</Select>
|
||||
</>
|
||||
) : (
|
||||
<Select value={r.target} onValueChange={(v) => update(r.id, { target: v })}>
|
||||
|
||||
Reference in new issue
Block a user