import { EquipmentType } from '@/utils/dictMap' import { getTaskConfirmList, getTaskEquipmentList, getCheckerEquipmentDetailById, confirmTaskOrder, confirmTaskClaim, cancelClaim, } from '@/api/task' import { getPipeTaskConfirmPage, getPipeTaskEquipmentList, getPipeCheckerEquipmentDetailById, confirmPipeTaskOrder, confirmPipeEquipmentClaim, cancelPipeEquipmentClaim, } from '@/api/pipe/pipeTaskOrder' import { getBoilerTaskConfirmPage, getBoilerTaskEquipmentList, getBoilerCheckerEquipmentDetailById, confirmBoilerTaskOrder, confirmBoilerEquipmentClaim, cancelBoilerEquipmentClaim, getBoilerTaskItemListByOrderId, } from '@/api/boiler/boilerTaskOrder' type Adapter = { inputAdapter: (data: any) => any reqFunction: (params: any) => any outputAdapter: (data: any) => any } export enum TaskOrderFuncName { ConfirmList, TaskEquipList, CheckEquipTaskList, TaskConfirm, TaskOrderzTaskItemList, EquipmentConfirmClaim, EquipmentCancelClaim, } // 接口注册表(按接口、设备类型调用对应接口) const map = { [TaskOrderFuncName.ConfirmList]: { [EquipmentType.BOILER]: { inputAdapter: null, reqFunction: getBoilerTaskConfirmPage, outputAdapter: null, }, [EquipmentType.PIPE]: { inputAdapter: null, reqFunction: getPipeTaskConfirmPage, outputAdapter: null, }, [EquipmentType.CONTAINER]: { inputAdapter: null, reqFunction: getTaskConfirmList, outputAdapter: null, }, }, [TaskOrderFuncName.TaskEquipList]: { [EquipmentType.BOILER]: { inputAdapter: null, reqFunction: getBoilerTaskEquipmentList, outputAdapter: null, }, [EquipmentType.PIPE]: { inputAdapter: null, reqFunction: getPipeTaskEquipmentList, outputAdapter: null, }, [EquipmentType.CONTAINER]: { inputAdapter: null, reqFunction: getTaskEquipmentList, outputAdapter: null, }, }, [TaskOrderFuncName.CheckEquipTaskList]: { [EquipmentType.BOILER]: { inputAdapter: null, reqFunction: getBoilerCheckerEquipmentDetailById, outputAdapter: null, }, [EquipmentType.PIPE]: { inputAdapter: null, reqFunction: getPipeCheckerEquipmentDetailById, outputAdapter: null, }, [EquipmentType.CONTAINER]: { inputAdapter: null, reqFunction: getCheckerEquipmentDetailById, outputAdapter: null, }, }, [TaskOrderFuncName.TaskConfirm]: { [EquipmentType.BOILER]: { inputAdapter: null, reqFunction: confirmBoilerTaskOrder, outputAdapter: null, }, [EquipmentType.PIPE]: { inputAdapter: null, reqFunction: confirmPipeTaskOrder, outputAdapter: null, }, [EquipmentType.CONTAINER]: { inputAdapter: null, reqFunction: confirmTaskOrder, outputAdapter: null, }, }, [TaskOrderFuncName.EquipmentConfirmClaim]: { [EquipmentType.BOILER]: { inputAdapter: null, reqFunction: confirmBoilerEquipmentClaim, outputAdapter: null, }, [EquipmentType.PIPE]: { inputAdapter: null, reqFunction: confirmPipeEquipmentClaim, outputAdapter: null, }, [EquipmentType.CONTAINER]: { inputAdapter: null, reqFunction: confirmTaskClaim, outputAdapter: null, }, }, [TaskOrderFuncName.EquipmentCancelClaim]: { [EquipmentType.BOILER]: { inputAdapter: null, reqFunction: cancelBoilerEquipmentClaim, outputAdapter: null, }, [EquipmentType.PIPE]: { inputAdapter: null, reqFunction: cancelPipeEquipmentClaim, outputAdapter: null, }, [EquipmentType.CONTAINER]: { inputAdapter: null, reqFunction: cancelClaim, outputAdapter: null, }, }, [TaskOrderFuncName.TaskOrderzTaskItemList]: { [EquipmentType.BOILER]: { inputAdapter: null, reqFunction: getBoilerTaskItemListByOrderId, outputAdapter: null, }, [EquipmentType.PIPE]: { inputAdapter: null, reqFunction: getBoilerTaskItemListByOrderId, outputAdapter: null, }, [EquipmentType.CONTAINER]: { inputAdapter: null, reqFunction: getBoilerTaskItemListByOrderId, outputAdapter: null, }, }, } export const requestFunc = (funcName: TaskOrderFuncName, equipType: EquipmentType, params: any) => { const funMap = map[funcName] const adapter = funMap[equipType] console.log('adapter.....', adapter) // 1. input adapter let reqParams = params if (adapter.inputAdapter != null) { reqParams = adapter.inputAdapter(params) } if (adapter.reqFunction == null) { throw new Error('api for send is not exists') } // 2. send req const respData = adapter.reqFunction(params) // 3. output adapter let adaptedRespData = respData if (adapter.outputAdapter != null) { adaptedRespData = adaptedRespData = adapter.outputAdapter(respData) } return adaptedRespData }