50 lines
1.8 KiB
TypeScript
50 lines
1.8 KiB
TypeScript
import request from '@/utils/request'
|
|
|
|
export interface PrescriptionAiVisibilityConfig {
|
|
role_ids: number[]
|
|
admin_ids: number[]
|
|
}
|
|
|
|
export interface PrescriptionAiVisibilityOptions {
|
|
roles: { id: number; name: string }[]
|
|
admins: { id: number; name: string; account: string }[]
|
|
}
|
|
|
|
export interface PrescriptionAiCapabilities {
|
|
agreement_visible: boolean
|
|
can_manage_visibility: boolean
|
|
}
|
|
|
|
// A failed or malformed read must never become an empty policy that can be saved.
|
|
function readVisibilityConfig(value: unknown): PrescriptionAiVisibilityConfig {
|
|
const config = value as Partial<PrescriptionAiVisibilityConfig> | null
|
|
const validIds = (ids: unknown): ids is number[] =>
|
|
Array.isArray(ids) && ids.every((id) => Number.isSafeInteger(id) && id > 0)
|
|
if (!config || !validIds(config.role_ids) || !validIds(config.admin_ids)) {
|
|
throw new Error('可见范围配置响应格式不正确')
|
|
}
|
|
return { role_ids: [...config.role_ids], admin_ids: [...config.admin_ids] }
|
|
}
|
|
|
|
export async function getPrescriptionAiVisibilityConfig() {
|
|
const data = await request.get({ url: '/tcm.prescriptionAi/getVisibilityConfig' })
|
|
return readVisibilityConfig(data)
|
|
}
|
|
|
|
export async function setPrescriptionAiVisibilityConfig(params: PrescriptionAiVisibilityConfig) {
|
|
const data = await request.post({ url: '/tcm.prescriptionAi/setVisibilityConfig', params })
|
|
return readVisibilityConfig(data)
|
|
}
|
|
|
|
export function getPrescriptionAiVisibilityOptions() {
|
|
return request.get({
|
|
url: '/tcm.prescriptionAi/visibilityOptions'
|
|
}) as Promise<PrescriptionAiVisibilityOptions>
|
|
}
|
|
|
|
export function getPrescriptionAiCapabilities() {
|
|
return request.get({
|
|
url: '/tcm.prescriptionAi/capabilities'
|
|
}) as Promise<PrescriptionAiCapabilities>
|
|
}
|