mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-10-05 22:38:21 +00:00
Rewrite template/v4/js.go.template (renamed to ts.go.template) to emit
TypeScript matching go-admin-ui's src/api/demo/product.ts: an interface
per row and per query params, typed CRUD functions, and a del{Class}
that takes Id[] like useRemove expects. GoType maps to number for
int/int64/float32/float64 and string otherwise, since go-admin-ui's
request() types the {code,data,msg} envelope rather than the payload.
Preview's response map key changes from template/js.go.template to
template/api.ts.template so its Tab label matches the new content;
NOActionsGen writes the file with a .ts extension.
Verified end to end: generated a real table's output, copied it into
go-admin-ui and ran vue-tsc --noEmit and eslint against it - both clean.
76 lines
1.7 KiB
Plaintext
76 lines
1.7 KiB
Plaintext
import request from '@/utils/request'
|
|
import type { ApiResponse, PageQuery, PageResult, Id } from '@/types/api'
|
|
|
|
export interface {{.ClassName}} {
|
|
{{- range .Columns}}
|
|
{{.JsonField}}?: {{if eq .GoType "int" -}}
|
|
number
|
|
{{- else if eq .GoType "int64" -}}
|
|
number
|
|
{{- else if eq .GoType "float32" -}}
|
|
number
|
|
{{- else if eq .GoType "float64" -}}
|
|
number
|
|
{{- else -}}
|
|
string
|
|
{{- end}}
|
|
{{- end}}
|
|
}
|
|
|
|
export interface {{.ClassName}}Query {
|
|
{{- range .Columns}}
|
|
{{- if eq .IsQuery "1"}}
|
|
{{.JsonField}}?: {{if eq .GoType "int" -}}
|
|
number
|
|
{{- else if eq .GoType "int64" -}}
|
|
number
|
|
{{- else if eq .GoType "float32" -}}
|
|
number
|
|
{{- else if eq .GoType "float64" -}}
|
|
number
|
|
{{- else -}}
|
|
string
|
|
{{- end}}
|
|
{{- end}}
|
|
{{- end}}
|
|
}
|
|
|
|
export function list{{.ClassName}}(query: {{.ClassName}}Query & PageQuery) {
|
|
return request<ApiResponse<PageResult<{{.ClassName}}>>>({
|
|
url: '/api/v1/{{.ModuleName}}',
|
|
method: 'get',
|
|
params: query
|
|
})
|
|
}
|
|
|
|
export function get{{.ClassName}}({{.PkJsonField}}: number) {
|
|
return request<ApiResponse<{{.ClassName}}>>({
|
|
url: '/api/v1/{{.ModuleName}}/' + {{.PkJsonField}},
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
export function add{{.ClassName}}(data: {{.ClassName}}) {
|
|
return request<ApiResponse<{{.ClassName}}>>({
|
|
url: '/api/v1/{{.ModuleName}}',
|
|
method: 'post',
|
|
data
|
|
})
|
|
}
|
|
|
|
export function update{{.ClassName}}(data: {{.ClassName}}) {
|
|
return request<ApiResponse<{{.ClassName}}>>({
|
|
url: '/api/v1/{{.ModuleName}}/' + data.{{.PkJsonField}},
|
|
method: 'put',
|
|
data
|
|
})
|
|
}
|
|
|
|
export function del{{.ClassName}}(ids: Id[]) {
|
|
return request<ApiResponse<null>>({
|
|
url: '/api/v1/{{.ModuleName}}',
|
|
method: 'delete',
|
|
data: { ids: ids.map(Number) }
|
|
})
|
|
}
|