UNPKG

@ithinkdt/cloud

Version:

iThinkDT Cloud

111 lines (97 loc) 3.72 kB
import { HttpError } from '@ithinkdt/common' import { $fetch } from '@ithinkdt/core' import { CTX, setSourceApp } from './ctx' import { getAuthApi, getDictApi, loadFrontConfig, _token } from './api' import { file } from './file' import { icon } from './icon' export function cloud(appCode, api, context, sourceApp = appCode) { Object.assign(CTX, context) setSourceApp(sourceApp) CTX._BASE = api for (const k of Object.keys(CTX)) { if (!CTX[k].endsWith('/')) { CTX[k] = CTX[k] + '/' } if (CTX[k].startsWith('/')) { CTX[k] = CTX[k].slice(1) } } if (!/^http(s?):\/\//.test(CTX._BASE)) { CTX._BASE = '/' + CTX._BASE } return { loadConfig: (apps) => loadFrontConfig(appCode, CTX, apps), auth: { ...getAuthApi(appCode, CTX.SYS, CTX._BASE), loadMessages({ status, pageSize, currentPage }) { return $fetch .post(`${CTX.MC}cli/mc/msgInternal/page`, { status: status === 'read' ? 1 : status === 'unread' ? 0 : undefined, pageSize, pageNumber: currentPage, }) .then((page) => { for (const msg of page.records) { msg.time = msg.createDate msg.status = msg.status === 1 ? 'read' : 'unread' msg.action = msg.link } return page }) }, readMessages(ids) { return $fetch.post(`${CTX.MC}cli/mc/msgInternal/read`, ids) }, deleteMessages(ids) { return $fetch.post(`${CTX.MC}cli/mc/msgInternal/deletes`, ids) }, }, dict: getDictApi(CTX.DICT), lang: { headerField: 'Lang', localeFormatter: (locale) => locale.replace('-', '_'), }, page: { ...file(CTX, () => _token), transformListParams(query, sort, pagin) { return { ...query, sortName: sort?.name, sortOrder: sort?.order, ...(pagin ? { pageNumber: pagin.currentPage, pageSize: pagin.pageSize, } : {}), } }, getUsers(usernames) { return $fetch .get(`${CTX.UC}cli/user/name`, { usernames: usernames.join(',') }) .then((data) => Object.entries(data).map(([username, nickname]) => ({ username, nickname }))) }, getDepts(depts) { return $fetch .get(`${CTX.UC}cli/org/name`, { codes: depts.join(',') }) .then((data) => Object.entries(data).map(([code, name]) => ({ code, name }))) }, }, icon: icon(CTX), msgi: (req, next) => { return next(req).catch((error) => { if (error instanceof HttpError && error.code === 501) { const m = error?.resp?.data?.[0] error.message = `${error.message}${m?.fieldLabel || ''} ${m?.msg}` } throw error }) }, } } export function getServerDate() { return $fetch.get(`${CTX.BPM}cli/bpm/task/timestamp`, {}, { alert: false }).catch(() => Date.now()) } export function refreshAuthrization() { return $fetch.get(`${CTX.SYS}cli/login/refresh`) }