@xtalpi/agentic-lab-skills 0.0.9 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +14 -14
- package/skills/lab-flow-designer/SKILL.md +612 -593
- package/skills/lab-flow-designer/embedded-template/SKILL.md +103 -88
- package/skills/lab-flow-designer/embedded-template/pools//345/205/245/345/217/243/346/261/240.md +21 -12
- package/skills/lab-flow-designer/embedded-template/pools//345/207/272/345/217/243/346/261/240.md +21 -12
- package/skills/lab-flow-designer/embedded-template/scripts//347/244/272/344/276/213/346/225/260/346/215/256/344/270/216/346/240/241/351/252/214/351/227/250/346/216/247.js +142 -142
- package/skills/lab-flow-designer/embedded-template/valves//347/244/272/344/276/213/346/225/260/346/215/256/344/270/216/346/240/241/351/252/214/351/227/250/346/216/247.md +114 -99
- package/skills/lab-flow-designer/references/agentic-lab-processer.md +122 -78
- package/skills/lab-flow-designer/references/agentic-lab-sdk.md +534 -361
- package/skills/lab-flow-designer/references/rhea-api/README.md +7 -7
- package/skills/lab-flow-designer/references/rhea-api/execute_process_batch.md +58 -58
- package/skills/lab-flow-designer/references/skill-package-layout.md +268 -204
- package/skills/lab-flow-designer/references//344/270/232/345/212/241/346/265/201/347/250/213/346/226/207/346/241/243/346/240/207/345/207/206.md +216 -208
- package/skills/lab-flow-designer/templates//344/270/232/345/212/241/346/265/201/347/250/213/346/226/207/346/241/243/346/250/241/346/235/277.md +192 -169
- package/skills/lab-flow-designer/templates//344/270/232/345/212/241/346/265/201/347/250/213/346/226/207/346/241/243/347/244/272/344/276/213.md +207 -197
- package/skills/lab-flow-designer/testing/test-processer.mjs +1240 -1075
- package/skills/lab-nocobase-flow-generator/SKILL.md +164 -164
- package/skills/lab-nocobase-flow-generator/examples/setting/350/241/250/350/216/267/345/217/226/345/244/226/351/203/250/346/234/215/345/212/241.js +70 -70
- package/skills/lab-nocobase-flow-generator/examples//346/237/245/350/257/242/345/214/226/345/255/246/345/223/201/344/277/241/346/201/257.js +30 -30
- package/skills/lab-nocobase-flow-generator/references/doc-standard.md +84 -84
- package/skills/lab-nocobase-flow-generator/references/runtime-api.md +224 -224
- package/skills/lab-nocobase-flow-generator/templates//350/204/232/346/234/254/351/200/273/350/276/221/346/226/207/346/241/243/346/250/241/346/235/277.md +121 -121
- package/skills/lab-nocobase-flow-generator/templates//350/204/232/346/234/254/351/200/273/350/276/221/346/226/207/346/241/243/347/244/272/344/276/213.md +67 -67
- package/skills/lab-orbit-component-builder/SKILL.md +353 -353
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/.env.local.example +27 -27
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/.eslintignore +7 -7
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/.eslintrc.cjs +88 -88
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/.nvmrc +1 -1
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/AgenticAppAPI.md +268 -268
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/Jenkinsfile +106 -106
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/OrbitAPI.md +453 -453
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/README.md +176 -176
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/public/index.html +12 -12
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/App.vue +151 -151
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/components/DevOpenerLauncher.vue +143 -143
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/global.d.ts +77 -77
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/main.ts +308 -308
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/mockXNBBitable.ts +119 -119
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/shims-vue.d.ts +6 -6
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/dev/src/utils/devOpenerHost.ts +75 -75
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/index.html +13 -13
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/package.json +60 -60
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/api/agenticlabTickets.ts +110 -110
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/entries/bitable.ts +4 -4
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/entries/custom-page.ts +4 -4
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/index.ts +1 -1
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/styles/orbit-quasar-host.scss +19 -19
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/types/context.ts +15 -15
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/types/xnb-context.ts +70 -70
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useBitablePage.ts +189 -189
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useSuperCellDemo.ts +257 -257
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/use/useSuperTableBitableLifecycle.ts +555 -555
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/openerInitParams.ts +158 -158
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/openerTicketIds.ts +32 -32
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/orbitHttpClient.ts +110 -110
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/utils/request.ts +92 -92
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/views/bitable.vue +67 -67
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/views/custom-page.vue +140 -140
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/tsconfig.json +45 -45
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/vite.config.ts +170 -170
- package/skills/lab-orbit-component-builder/examples/xnb-component-template/vite.dev.config.ts +58 -58
- package/skills/lab-orbit-component-builder/references/flow-document-human-ui.md +65 -65
- package/skills/lab-orbit-component-builder/references/orbit-vue-conventions.md +133 -133
- package/skills/lab-orbit-component-builder/references/pool-schema-to-columns.md +67 -67
- package/skills/lab-orbit-component-builder/references/vue-template-checklist.md +179 -179
- package/skills/lab-orbit-component-builder/references/xnb-context-vue-props.md +49 -49
- package/skills/lab-orbit-component-builder/references/xnbitable-vue-parity.md +32 -32
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AgenticLab App:Ticket 列表 HTTP。
|
|
3
|
-
* 请求走 **`orbitRequestJson`**(`src/utils/orbitHttpClient.ts`),优先 **`window.xnb.http.client.request`**,见 **OrbitAPI.md** §6.3。
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { orbitRequestJson } from '@/utils/orbitHttpClient'
|
|
7
|
-
|
|
8
|
-
export interface FetchAgenticlabTicketListParams {
|
|
9
|
-
/** 无尾部斜杠亦可,如 `https://agenticlab.example.com`;嵌入 Orbit 且仅用 http.client 时仍建议填写以便回退 fetch */
|
|
10
|
-
baseUrl: string
|
|
11
|
-
/**
|
|
12
|
-
* 可选静态 Bearer;为空时依次尝试:
|
|
13
|
-
* `await window.xnb.choreo.getUserToken()`(无参)、`VITE_DEV_TOKEN`。
|
|
14
|
-
*/
|
|
15
|
-
token?: string
|
|
16
|
-
/** 业务工单号列表,对应 query `ticket_id__in`(多值逗号拼接) */
|
|
17
|
-
ticketIds: string[]
|
|
18
|
-
limit?: number
|
|
19
|
-
offset?: number
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
function joinBaseAndPath (baseUrl: string, path: string): string {
|
|
23
|
-
const trimmed = baseUrl.replace(/\/+$/, '')
|
|
24
|
-
const p = path.startsWith('/') ? path : `/${path}`
|
|
25
|
-
return `${trimmed}${p}`
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
async function resolveBearerToken (opts: { token?: string }): Promise<string | undefined> {
|
|
29
|
-
if (opts.token != null && opts.token !== '') return opts.token
|
|
30
|
-
const w = window as Window & { xnb?: { choreo?: { getUserToken?: () => Promise<string> } } }
|
|
31
|
-
const getToken = w.xnb?.choreo?.getUserToken
|
|
32
|
-
if (getToken != null) {
|
|
33
|
-
try {
|
|
34
|
-
return await getToken()
|
|
35
|
-
} catch {
|
|
36
|
-
return undefined
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
const env = import.meta.env.VITE_DEV_TOKEN
|
|
40
|
-
return env != null && env !== '' ? env : undefined
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* `GET /api/ticket/list`,`ticket_id__in` 为逗号拼接的 ticket 业务号(与 `detail.ticket_id` 对应)。
|
|
45
|
-
*/
|
|
46
|
-
export async function fetchAgenticlabTicketList (params: FetchAgenticlabTicketListParams): Promise<unknown[]> {
|
|
47
|
-
const { baseUrl, token, ticketIds, limit = 999999, offset = 0 } = params
|
|
48
|
-
if (!baseUrl || ticketIds.length === 0) return []
|
|
49
|
-
|
|
50
|
-
const url = joinBaseAndPath(baseUrl, '/api/ticket/list')
|
|
51
|
-
const bearer = await resolveBearerToken({ token })
|
|
52
|
-
const headers: Record<string, string> = { Accept: 'application/json' }
|
|
53
|
-
if (bearer != null && bearer !== '') {
|
|
54
|
-
headers.Authorization = `Bearer ${bearer}`
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const raw = await orbitRequestJson({
|
|
58
|
-
method: 'get',
|
|
59
|
-
url,
|
|
60
|
-
headers,
|
|
61
|
-
query: {
|
|
62
|
-
limit,
|
|
63
|
-
offset,
|
|
64
|
-
ticket_id__in: ticketIds.join(',')
|
|
65
|
-
}
|
|
66
|
-
})
|
|
67
|
-
const body = raw as { code?: number; msg?: string; data?: { list?: unknown[] } }
|
|
68
|
-
if (body.code !== 200) {
|
|
69
|
-
throw new Error(body.msg != null && body.msg !== '' ? String(body.msg) : `业务 code ${String(body.code)}`)
|
|
70
|
-
}
|
|
71
|
-
return body.data?.list ?? []
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export interface PostAgenticlabExecutionCompleteParams {
|
|
75
|
-
baseUrl: string
|
|
76
|
-
token?: string
|
|
77
|
-
/** 门控 / 执行实例标识,与后端约定一致;缺省可由 opener 或环境变量提供 */
|
|
78
|
-
valveId: number
|
|
79
|
-
/** 与列表项结构一致的工单对象数组,字段须与 `GET /api/ticket/list` 的 `list[]` 项对齐(含编辑后的 `detail` 等) */
|
|
80
|
-
tickets: Record<string, unknown>[]
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* `POST /api/execution/complete`:提交编辑后的Ticket列表,由后端完成执行闭环。
|
|
85
|
-
*/
|
|
86
|
-
export async function postAgenticlabExecutionComplete (params: PostAgenticlabExecutionCompleteParams): Promise<void> {
|
|
87
|
-
const { baseUrl, token, valveId, tickets } = params
|
|
88
|
-
if (!baseUrl) throw new Error('缺少 AgenticLab baseUrl')
|
|
89
|
-
|
|
90
|
-
const url = joinBaseAndPath(baseUrl, '/api/execution/complete')
|
|
91
|
-
const bearer = await resolveBearerToken({ token })
|
|
92
|
-
const headers: Record<string, string> = {
|
|
93
|
-
Accept: 'application/json',
|
|
94
|
-
'Content-Type': 'application/json; charset=utf-8'
|
|
95
|
-
}
|
|
96
|
-
if (bearer != null && bearer !== '') {
|
|
97
|
-
headers.Authorization = `Bearer ${bearer}`
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
const raw = await orbitRequestJson({
|
|
101
|
-
method: 'post',
|
|
102
|
-
url,
|
|
103
|
-
headers,
|
|
104
|
-
jsonBody: { valve_id: valveId, tickets }
|
|
105
|
-
})
|
|
106
|
-
const body = raw as { code?: number; msg?: string }
|
|
107
|
-
if (body.code !== 200) {
|
|
108
|
-
throw new Error(body.msg != null && body.msg !== '' ? String(body.msg) : `业务 code ${String(body.code)}`)
|
|
109
|
-
}
|
|
110
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* AgenticLab App:Ticket 列表 HTTP。
|
|
3
|
+
* 请求走 **`orbitRequestJson`**(`src/utils/orbitHttpClient.ts`),优先 **`window.xnb.http.client.request`**,见 **OrbitAPI.md** §6.3。
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { orbitRequestJson } from '@/utils/orbitHttpClient'
|
|
7
|
+
|
|
8
|
+
export interface FetchAgenticlabTicketListParams {
|
|
9
|
+
/** 无尾部斜杠亦可,如 `https://agenticlab.example.com`;嵌入 Orbit 且仅用 http.client 时仍建议填写以便回退 fetch */
|
|
10
|
+
baseUrl: string
|
|
11
|
+
/**
|
|
12
|
+
* 可选静态 Bearer;为空时依次尝试:
|
|
13
|
+
* `await window.xnb.choreo.getUserToken()`(无参)、`VITE_DEV_TOKEN`。
|
|
14
|
+
*/
|
|
15
|
+
token?: string
|
|
16
|
+
/** 业务工单号列表,对应 query `ticket_id__in`(多值逗号拼接) */
|
|
17
|
+
ticketIds: string[]
|
|
18
|
+
limit?: number
|
|
19
|
+
offset?: number
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function joinBaseAndPath (baseUrl: string, path: string): string {
|
|
23
|
+
const trimmed = baseUrl.replace(/\/+$/, '')
|
|
24
|
+
const p = path.startsWith('/') ? path : `/${path}`
|
|
25
|
+
return `${trimmed}${p}`
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async function resolveBearerToken (opts: { token?: string }): Promise<string | undefined> {
|
|
29
|
+
if (opts.token != null && opts.token !== '') return opts.token
|
|
30
|
+
const w = window as Window & { xnb?: { choreo?: { getUserToken?: () => Promise<string> } } }
|
|
31
|
+
const getToken = w.xnb?.choreo?.getUserToken
|
|
32
|
+
if (getToken != null) {
|
|
33
|
+
try {
|
|
34
|
+
return await getToken()
|
|
35
|
+
} catch {
|
|
36
|
+
return undefined
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const env = import.meta.env.VITE_DEV_TOKEN
|
|
40
|
+
return env != null && env !== '' ? env : undefined
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* `GET /api/ticket/list`,`ticket_id__in` 为逗号拼接的 ticket 业务号(与 `detail.ticket_id` 对应)。
|
|
45
|
+
*/
|
|
46
|
+
export async function fetchAgenticlabTicketList (params: FetchAgenticlabTicketListParams): Promise<unknown[]> {
|
|
47
|
+
const { baseUrl, token, ticketIds, limit = 999999, offset = 0 } = params
|
|
48
|
+
if (!baseUrl || ticketIds.length === 0) return []
|
|
49
|
+
|
|
50
|
+
const url = joinBaseAndPath(baseUrl, '/api/ticket/list')
|
|
51
|
+
const bearer = await resolveBearerToken({ token })
|
|
52
|
+
const headers: Record<string, string> = { Accept: 'application/json' }
|
|
53
|
+
if (bearer != null && bearer !== '') {
|
|
54
|
+
headers.Authorization = `Bearer ${bearer}`
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const raw = await orbitRequestJson({
|
|
58
|
+
method: 'get',
|
|
59
|
+
url,
|
|
60
|
+
headers,
|
|
61
|
+
query: {
|
|
62
|
+
limit,
|
|
63
|
+
offset,
|
|
64
|
+
ticket_id__in: ticketIds.join(',')
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
const body = raw as { code?: number; msg?: string; data?: { list?: unknown[] } }
|
|
68
|
+
if (body.code !== 200) {
|
|
69
|
+
throw new Error(body.msg != null && body.msg !== '' ? String(body.msg) : `业务 code ${String(body.code)}`)
|
|
70
|
+
}
|
|
71
|
+
return body.data?.list ?? []
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface PostAgenticlabExecutionCompleteParams {
|
|
75
|
+
baseUrl: string
|
|
76
|
+
token?: string
|
|
77
|
+
/** 门控 / 执行实例标识,与后端约定一致;缺省可由 opener 或环境变量提供 */
|
|
78
|
+
valveId: number
|
|
79
|
+
/** 与列表项结构一致的工单对象数组,字段须与 `GET /api/ticket/list` 的 `list[]` 项对齐(含编辑后的 `detail` 等) */
|
|
80
|
+
tickets: Record<string, unknown>[]
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* `POST /api/execution/complete`:提交编辑后的Ticket列表,由后端完成执行闭环。
|
|
85
|
+
*/
|
|
86
|
+
export async function postAgenticlabExecutionComplete (params: PostAgenticlabExecutionCompleteParams): Promise<void> {
|
|
87
|
+
const { baseUrl, token, valveId, tickets } = params
|
|
88
|
+
if (!baseUrl) throw new Error('缺少 AgenticLab baseUrl')
|
|
89
|
+
|
|
90
|
+
const url = joinBaseAndPath(baseUrl, '/api/execution/complete')
|
|
91
|
+
const bearer = await resolveBearerToken({ token })
|
|
92
|
+
const headers: Record<string, string> = {
|
|
93
|
+
Accept: 'application/json',
|
|
94
|
+
'Content-Type': 'application/json; charset=utf-8'
|
|
95
|
+
}
|
|
96
|
+
if (bearer != null && bearer !== '') {
|
|
97
|
+
headers.Authorization = `Bearer ${bearer}`
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const raw = await orbitRequestJson({
|
|
101
|
+
method: 'post',
|
|
102
|
+
url,
|
|
103
|
+
headers,
|
|
104
|
+
jsonBody: { valve_id: valveId, tickets }
|
|
105
|
+
})
|
|
106
|
+
const body = raw as { code?: number; msg?: string }
|
|
107
|
+
if (body.code !== 200) {
|
|
108
|
+
throw new Error(body.msg != null && body.msg !== '' ? String(body.msg) : `业务 code ${String(body.code)}`)
|
|
109
|
+
}
|
|
110
|
+
}
|
package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/entries/bitable.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import View from '../views/bitable.vue'
|
|
2
|
-
import packageData from '../../package.json'
|
|
3
|
-
|
|
4
|
-
export { View, packageData }
|
|
1
|
+
import View from '../views/bitable.vue'
|
|
2
|
+
import packageData from '../../package.json'
|
|
3
|
+
|
|
4
|
+
export { View, packageData }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import View from '../views/custom-page.vue'
|
|
2
|
-
import packageData from '../../package.json'
|
|
3
|
-
|
|
4
|
-
export { View, packageData }
|
|
1
|
+
import View from '../views/custom-page.vue'
|
|
2
|
+
import packageData from '../../package.json'
|
|
3
|
+
|
|
4
|
+
export { View, packageData }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { View, packageData } from './entries/bitable'
|
|
1
|
+
export { View, packageData } from './entries/bitable'
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Orbit Cell 内 Quasar 子树:根节点加 `class="orbit-quasar-host"` 后,本节点以下生效。
|
|
3
|
-
* - 主色:`color="primary"` / `.bg-primary` → `var(--q-primary)`
|
|
4
|
-
* - `q-btn`:紧凑内边距;关闭默认全大写
|
|
5
|
-
*
|
|
6
|
-
* 复用:在 SFC 的 `<style scoped lang="scss">` 内首行 `@import '@/styles/orbit-quasar-host.scss';`
|
|
7
|
-
* (须 scoped + `:deep(.q-btn)`,否则子组件 DOM 无法命中)
|
|
8
|
-
* 主题调整:新增/修改主色或全局 `q-btn` 表现请只改本文件;页面结构见 `src/views/bitable.vue`。
|
|
9
|
-
* 按钮分工:`primary` 仅提交等持久化写回;`outline` 仅刷新/检查等页面数据交互(见 lab-orbit-component-builder SKILL 规则 2)。
|
|
10
|
-
*/
|
|
11
|
-
.orbit-quasar-host {
|
|
12
|
-
--orbit-primary: #123aff;
|
|
13
|
-
--q-primary: var(--orbit-primary);
|
|
14
|
-
|
|
15
|
-
:deep(.q-btn) {
|
|
16
|
-
padding: 0 10px;
|
|
17
|
-
text-transform: none;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Orbit Cell 内 Quasar 子树:根节点加 `class="orbit-quasar-host"` 后,本节点以下生效。
|
|
3
|
+
* - 主色:`color="primary"` / `.bg-primary` → `var(--q-primary)`
|
|
4
|
+
* - `q-btn`:紧凑内边距;关闭默认全大写
|
|
5
|
+
*
|
|
6
|
+
* 复用:在 SFC 的 `<style scoped lang="scss">` 内首行 `@import '@/styles/orbit-quasar-host.scss';`
|
|
7
|
+
* (须 scoped + `:deep(.q-btn)`,否则子组件 DOM 无法命中)
|
|
8
|
+
* 主题调整:新增/修改主色或全局 `q-btn` 表现请只改本文件;页面结构见 `src/views/bitable.vue`。
|
|
9
|
+
* 按钮分工:`primary` 仅提交等持久化写回;`outline` 仅刷新/检查等页面数据交互(见 lab-orbit-component-builder SKILL 规则 2)。
|
|
10
|
+
*/
|
|
11
|
+
.orbit-quasar-host {
|
|
12
|
+
--orbit-primary: #123aff;
|
|
13
|
+
--q-primary: var(--orbit-primary);
|
|
14
|
+
|
|
15
|
+
:deep(.q-btn) {
|
|
16
|
+
padding: 0 10px;
|
|
17
|
+
text-transform: none;
|
|
18
|
+
}
|
|
19
|
+
}
|
package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/types/context.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export interface XnbContext {
|
|
2
|
-
bookPath: string
|
|
3
|
-
cellUid: string
|
|
4
|
-
notifySuccess: (msg: string) => void
|
|
5
|
-
notifyError: (msg: any) => void
|
|
6
|
-
loadingShow: (opts?: any) => void
|
|
7
|
-
loadingHide: () => void
|
|
8
|
-
userData: Record<string, any>
|
|
9
|
-
getUserData: () => Record<string, any>
|
|
10
|
-
updateUserData: (data: any) => void
|
|
11
|
-
mergeUserData: (data: any) => void
|
|
12
|
-
getInstanceById: (id: string) => any
|
|
13
|
-
getInstanceValueById: (id: string) => any
|
|
14
|
-
setInstanceValueById: (id: string, value: any) => void
|
|
15
|
-
}
|
|
1
|
+
export interface XnbContext {
|
|
2
|
+
bookPath: string
|
|
3
|
+
cellUid: string
|
|
4
|
+
notifySuccess: (msg: string) => void
|
|
5
|
+
notifyError: (msg: any) => void
|
|
6
|
+
loadingShow: (opts?: any) => void
|
|
7
|
+
loadingHide: () => void
|
|
8
|
+
userData: Record<string, any>
|
|
9
|
+
getUserData: () => Record<string, any>
|
|
10
|
+
updateUserData: (data: any) => void
|
|
11
|
+
mergeUserData: (data: any) => void
|
|
12
|
+
getInstanceById: (id: string) => any
|
|
13
|
+
getInstanceValueById: (id: string) => any
|
|
14
|
+
setInstanceValueById: (id: string, value: any) => void
|
|
15
|
+
}
|
package/skills/lab-orbit-component-builder/examples/xnb-component-template/src/types/xnb-context.ts
CHANGED
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 与「超级表格 / 子 Cell」协作相关的 xnbContext 形状(精简版,便于本模板内类型对齐)。
|
|
3
|
-
* 完整类型定义以你们宿主或正式项目中的 `Types/context` 等为准;本处仅保留模板示例所需字段。
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* 单张子表在 XNBBitable 侧的常见形状(`getSubBitable` / `getAllSubBitable` 返回值对齐用)。
|
|
8
|
-
* 宿主实现字段可能更多;此处保留示例所需最小集。
|
|
9
|
-
*/
|
|
10
|
-
export interface DemoBitableSheet {
|
|
11
|
-
index?: string
|
|
12
|
-
name?: string
|
|
13
|
-
row?: number
|
|
14
|
-
items: unknown[]
|
|
15
|
-
data_columns: unknown[]
|
|
16
|
-
config?: unknown
|
|
17
|
-
[key: string]: unknown
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/** 子表创建时单张 bitable 的配置骨架(创建前常补全 items / data_columns / config) */
|
|
21
|
-
export interface DemoSubBitableOption {
|
|
22
|
-
index?: string
|
|
23
|
-
name?: string
|
|
24
|
-
rowFocus?: number
|
|
25
|
-
columnFocus?: number
|
|
26
|
-
items?: unknown[]
|
|
27
|
-
data_columns?: unknown[]
|
|
28
|
-
config?: unknown[]
|
|
29
|
-
[key: string]: unknown
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/** 宿主注入的 XNBBitable 构造函数(典型用法:`new XNBBitable({ bookPath, cellUid })`) */
|
|
33
|
-
export interface XNBBitableChoreo {
|
|
34
|
-
getSubCell (): Promise<string | null>
|
|
35
|
-
createSubBitable (bitables: unknown[], sheetName: string): Promise<string>
|
|
36
|
-
/** 多子表时用于按 `index` 命中目标子表;单表场景常返回长度为 1 的数组 */
|
|
37
|
-
getAllSubBitable (refresh?: boolean): Promise<DemoBitableSheet[]>
|
|
38
|
-
getSubBitable (refresh?: boolean): Promise<DemoBitableSheet>
|
|
39
|
-
/**
|
|
40
|
-
* 为子表追加列定义(常见签名第三参为 `[]`)。
|
|
41
|
-
* 与 `bitable-list-lifecycle.js` 一致:重建列前常先清空 `bitable.data_columns` 再调用。
|
|
42
|
-
*/
|
|
43
|
-
addColumns (bitable: Record<string, unknown>, dataColumns: unknown[], extra: unknown[]): Promise<void>
|
|
44
|
-
updateSubBitable (bitables: unknown[], opts?: Record<string, unknown>): Promise<void>
|
|
45
|
-
delay (ms: number): Promise<void>
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export type XNBBitableConstructor = new (opts: { bookPath: string; cellUid: string }) => XNBBitableChoreo
|
|
49
|
-
|
|
50
|
-
/** window.xnb.event 最小形状(仅示例里 on/off/emit) */
|
|
51
|
-
export interface XnbEventBus {
|
|
52
|
-
on: (channel: string, handler: (...args: unknown[]) => void) => void
|
|
53
|
-
off: (channel: string, handler: (...args: unknown[]) => void) => void
|
|
54
|
-
emit: (channel: string, ...args: unknown[]) => void
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/** 超级表格 Cell 场景下 xnbContext 常用字段(宿主注入上下文 + XNBBitable 类) */
|
|
58
|
-
export interface XnbSuperCellContext {
|
|
59
|
-
bookPath: string
|
|
60
|
-
cellUid: string
|
|
61
|
-
/** 类本身,由宿主注入;dev 环境见 dev/src/mockXNBBitable.ts */
|
|
62
|
-
XNBBitable?: XNBBitableConstructor
|
|
63
|
-
loadingShow?: (opts?: unknown) => void
|
|
64
|
-
loadingHide?: () => void
|
|
65
|
-
notifySuccess?: (msg: string) => void
|
|
66
|
-
notifyError?: (msg: unknown, ...rest: unknown[]) => void
|
|
67
|
-
getUserData?: () => Record<string, unknown>
|
|
68
|
-
updateUserData?: (data: Record<string, unknown>) => Promise<void> | void
|
|
69
|
-
[key: string]: unknown
|
|
70
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 与「超级表格 / 子 Cell」协作相关的 xnbContext 形状(精简版,便于本模板内类型对齐)。
|
|
3
|
+
* 完整类型定义以你们宿主或正式项目中的 `Types/context` 等为准;本处仅保留模板示例所需字段。
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 单张子表在 XNBBitable 侧的常见形状(`getSubBitable` / `getAllSubBitable` 返回值对齐用)。
|
|
8
|
+
* 宿主实现字段可能更多;此处保留示例所需最小集。
|
|
9
|
+
*/
|
|
10
|
+
export interface DemoBitableSheet {
|
|
11
|
+
index?: string
|
|
12
|
+
name?: string
|
|
13
|
+
row?: number
|
|
14
|
+
items: unknown[]
|
|
15
|
+
data_columns: unknown[]
|
|
16
|
+
config?: unknown
|
|
17
|
+
[key: string]: unknown
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** 子表创建时单张 bitable 的配置骨架(创建前常补全 items / data_columns / config) */
|
|
21
|
+
export interface DemoSubBitableOption {
|
|
22
|
+
index?: string
|
|
23
|
+
name?: string
|
|
24
|
+
rowFocus?: number
|
|
25
|
+
columnFocus?: number
|
|
26
|
+
items?: unknown[]
|
|
27
|
+
data_columns?: unknown[]
|
|
28
|
+
config?: unknown[]
|
|
29
|
+
[key: string]: unknown
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** 宿主注入的 XNBBitable 构造函数(典型用法:`new XNBBitable({ bookPath, cellUid })`) */
|
|
33
|
+
export interface XNBBitableChoreo {
|
|
34
|
+
getSubCell (): Promise<string | null>
|
|
35
|
+
createSubBitable (bitables: unknown[], sheetName: string): Promise<string>
|
|
36
|
+
/** 多子表时用于按 `index` 命中目标子表;单表场景常返回长度为 1 的数组 */
|
|
37
|
+
getAllSubBitable (refresh?: boolean): Promise<DemoBitableSheet[]>
|
|
38
|
+
getSubBitable (refresh?: boolean): Promise<DemoBitableSheet>
|
|
39
|
+
/**
|
|
40
|
+
* 为子表追加列定义(常见签名第三参为 `[]`)。
|
|
41
|
+
* 与 `bitable-list-lifecycle.js` 一致:重建列前常先清空 `bitable.data_columns` 再调用。
|
|
42
|
+
*/
|
|
43
|
+
addColumns (bitable: Record<string, unknown>, dataColumns: unknown[], extra: unknown[]): Promise<void>
|
|
44
|
+
updateSubBitable (bitables: unknown[], opts?: Record<string, unknown>): Promise<void>
|
|
45
|
+
delay (ms: number): Promise<void>
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export type XNBBitableConstructor = new (opts: { bookPath: string; cellUid: string }) => XNBBitableChoreo
|
|
49
|
+
|
|
50
|
+
/** window.xnb.event 最小形状(仅示例里 on/off/emit) */
|
|
51
|
+
export interface XnbEventBus {
|
|
52
|
+
on: (channel: string, handler: (...args: unknown[]) => void) => void
|
|
53
|
+
off: (channel: string, handler: (...args: unknown[]) => void) => void
|
|
54
|
+
emit: (channel: string, ...args: unknown[]) => void
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** 超级表格 Cell 场景下 xnbContext 常用字段(宿主注入上下文 + XNBBitable 类) */
|
|
58
|
+
export interface XnbSuperCellContext {
|
|
59
|
+
bookPath: string
|
|
60
|
+
cellUid: string
|
|
61
|
+
/** 类本身,由宿主注入;dev 环境见 dev/src/mockXNBBitable.ts */
|
|
62
|
+
XNBBitable?: XNBBitableConstructor
|
|
63
|
+
loadingShow?: (opts?: unknown) => void
|
|
64
|
+
loadingHide?: () => void
|
|
65
|
+
notifySuccess?: (msg: string) => void
|
|
66
|
+
notifyError?: (msg: unknown, ...rest: unknown[]) => void
|
|
67
|
+
getUserData?: () => Record<string, unknown>
|
|
68
|
+
updateUserData?: (data: Record<string, unknown>) => Promise<void> | void
|
|
69
|
+
[key: string]: unknown
|
|
70
|
+
}
|