| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- import request from '@/config/axios'
- export type WebtopoProjectVO = {
- id: number
- projectName: string
- deptId?: number
- thumbnail?: string
- createTime?: number | string
- linkedDevices?: number[]
- remark?: string
- updateTime?: string
- }
- export type WebtopoProjectDetailVO = WebtopoProjectVO & {
- dataModel?: unknown
- }
- export type WebtopoProjectPageReqVO = {
- deptId?: number
- pageNo: number
- pageSize: number
- projectName?: string
- }
- export type WebtopoProjectCreateReqVO = {
- projectName: string
- linkedDevices?: number[]
- remark?: string
- }
- export type WebtopoProjectUpdateReqVO = WebtopoProjectCreateReqVO & {
- id: number
- thumbnail?: string
- dataModel?: string
- }
- type ApiResult<T> = {
- code?: number
- data?: T
- msg?: string
- }
- const unwrapData = <T>(res: T | ApiResult<T>) => {
- if (res && typeof res === 'object' && 'data' in res) {
- return (res as ApiResult<T>).data as T
- }
- return res as T
- }
- export const parseWebtopoDataModel = (dataModel: unknown) => {
- if (typeof dataModel !== 'string') {
- return dataModel
- }
- const trimmedDataModel = dataModel.trim()
- if (!trimmedDataModel) {
- return undefined
- }
- return JSON.parse(trimmedDataModel)
- }
- export const WebtopoProjectApi = {
- createWebtopoProject: (data: WebtopoProjectCreateReqVO) => {
- return request.post<number | ApiResult<number>>({
- url: '/pms/iot-webtopo-project/create',
- data
- })
- },
- updateWebtopoProject: (data: WebtopoProjectUpdateReqVO) => {
- return request.put({
- url: '/pms/iot-webtopo-project/update',
- data
- })
- },
- getWebtopoProjectPage: (params: WebtopoProjectPageReqVO) => {
- return request.get<WebtopoProjectVO[] | { list: WebtopoProjectVO[]; total: number }>({
- url: '/pms/iot-webtopo-project/page',
- params
- })
- },
- getWebtopoProject: async (id: number) => {
- const res = await request.get<WebtopoProjectDetailVO | ApiResult<WebtopoProjectDetailVO>>({
- url: '/pms/iot-webtopo-project/get',
- params: { id }
- })
- const data = unwrapData<WebtopoProjectDetailVO>(res)
- if (!data) {
- return data
- }
- return {
- ...data,
- dataModel: parseWebtopoDataModel(data?.dataModel)
- }
- }
- }
|