camera-preview.ts 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. /** 相机预览的接口 */
  2. // cameraPreview/getList
  3. import { http } from '@/utils/http/axios';
  4. import qs from 'qs';
  5. /** 相机树的结点类型 */
  6. export enum CameraTreeNodeType {
  7. /** 公司 */
  8. company = 'company',
  9. /** 车间 */
  10. workshop = 'workshop',
  11. /** 工位 */
  12. workspace = 'workspace',
  13. /** 相机 */
  14. camera = 'camera',
  15. }
  16. export interface CameraTree {
  17. id: number;
  18. name: string;
  19. code: string;
  20. children: CameraTree[];
  21. nodeType: CameraTreeNodeType;
  22. }
  23. /** 获取摄像头所在的树状结构 */
  24. export const getCameraTree = () => {
  25. return http.request<CameraTree[]>({
  26. url: '/cameraPreview/getList',
  27. method: 'get',
  28. });
  29. };
  30. export enum AlgoStatus {
  31. enabled = 1,
  32. disabled = 0,
  33. }
  34. interface AlgoItem {
  35. id: number;
  36. name: string;
  37. code: string;
  38. showName: string;
  39. remark: string;
  40. url: string;
  41. pushStatement: string;
  42. pushLinkPrompt: string;
  43. status: AlgoStatus;
  44. createdAt: string;
  45. updatedAt: string;
  46. }
  47. /** 查询所有的算法 */
  48. export const getAllAlgosApi = () => {
  49. return http.request<AlgoItem[]>({
  50. url: '/cameraPreview/getAlgoList',
  51. method: 'get',
  52. });
  53. };
  54. /** 相机关联的算法信息 */
  55. export interface CameraAlgoItem {
  56. id?: number;
  57. algoId: number;
  58. cameraId?: number;
  59. code: string;
  60. name: string;
  61. detectionFrequency: number;
  62. detectionTime: string;
  63. electronicFence: number;
  64. status: AlgoStatus;
  65. algoInfo: AlgoItem;
  66. }
  67. /** 查询某个camera下的所有算法 */
  68. export const getCameraAlgoListApi = (cameraId: number) => {
  69. return http.request<CameraAlgoItem[]>({
  70. url: '/cameraPreview/getAlgo',
  71. method: 'get',
  72. params: { cameraId },
  73. });
  74. };
  75. interface SaveCameraAlgoParam {
  76. algoId: number;
  77. cameraId: number;
  78. detectionFrequency: number;
  79. detectionTime: string;
  80. electronicFence: string;
  81. status: 0 | 1;
  82. }
  83. /** 保存相机的某个算法 */
  84. export const createCameraAlgoApi = (param: SaveCameraAlgoParam) => {
  85. return http.request({
  86. url: '/cameraPreview/saveAlgo',
  87. data: param,
  88. method: 'post',
  89. });
  90. };
  91. /** 更新相机的某个算法 */
  92. export const updateCameraAlgoApi = (param: SaveCameraAlgoParam & { id: number }) => {
  93. return http.request({
  94. url: '/cameraPreview/updateAlgo',
  95. data: param,
  96. method: 'put',
  97. });
  98. };
  99. /** 删除相机的某个算法 */
  100. export const deleteCameraAlgoApi = (params: { cameraId: number; algoId: number }) => {
  101. const paramString = qs.stringify(params);
  102. return http.request({
  103. url: '/cameraPreview/deleteAlgo?' + paramString,
  104. method: 'delete',
  105. });
  106. };
  107. export interface GetFenceParams {
  108. algoId: number;
  109. cameraId: number;
  110. presetToken: string;
  111. }
  112. /** 查询电子围栏 */
  113. export const getFenceApi = (
  114. params: GetFenceParams,
  115. ): Promise<{ id: number; electronicFencePolygon: string }> => {
  116. return http.request({
  117. url: '/cameraPreview/getFence',
  118. method: 'GET',
  119. params,
  120. });
  121. };
  122. export interface SaveFenceParams {
  123. algoId: number;
  124. cameraId: number;
  125. electronicFencePolygon: string;
  126. presetToken: string;
  127. }
  128. /** 添加电子围栏 */
  129. export const saveFenceApi = (data: SaveFenceParams) => {
  130. return http.request({
  131. url: '/cameraPreview/saveFence',
  132. method: 'post',
  133. data,
  134. });
  135. };
  136. interface UpdateFenceParams {
  137. algoId: number;
  138. cameraId: number;
  139. electronicFencePolygon: string;
  140. id: number;
  141. presetToken: string;
  142. }
  143. /** 编辑电子围栏 */
  144. export const editFenceApi = (data: UpdateFenceParams) => {
  145. return http.request({
  146. url: '/cameraPreview/updateFence',
  147. method: 'put',
  148. data,
  149. });
  150. };
  151. /** 删除电子围栏 */
  152. export const deleteFenceApi = (cameraAlgoPresetRelId: number) => {
  153. return http.request({
  154. url: `/cameraPreview/deleteFence?cameraAlgoPresetRelId=${cameraAlgoPresetRelId}`,
  155. method: 'delete',
  156. });
  157. };
  158. interface CreatePresetParam {
  159. presetName: string;
  160. cameraId: number;
  161. }
  162. /** 创建预置位 */
  163. export const createPresetApi = (data: CreatePresetParam) => {
  164. return http.request({
  165. url: `/camera/createPreset`,
  166. method: 'post',
  167. data,
  168. });
  169. };
  170. interface UpdatePresetNameParam {
  171. presetToken: string;
  172. presetName: string;
  173. cameraId: number;
  174. }
  175. /** 修改预置位名称 */
  176. export const changePresetNameApi = (data: UpdatePresetNameParam) => {
  177. return http.request({
  178. url: `/camera/changePresetName`,
  179. method: 'post',
  180. data,
  181. });
  182. };
  183. /** 删除预置位 */
  184. export const deletePresetApi = (data: { presetToken: string; cameraId: number }) => {
  185. return http.request({
  186. url: `/camera/deletePreset`,
  187. method: 'post',
  188. data,
  189. });
  190. };
  191. interface PresetDetailItem {
  192. name: string;
  193. token: string;
  194. ptzposition: {
  195. panTilt: {
  196. x: number;
  197. y: number;
  198. space: null;
  199. };
  200. zoom: {
  201. x: number;
  202. space: null;
  203. };
  204. };
  205. }
  206. /** 获取预置位列表 */
  207. export const getPresetListApi = (cameraId: number) => {
  208. return http.request<PresetDetailItem[]>({
  209. url: `/camera/getPresets`,
  210. method: 'get',
  211. params: { cameraId },
  212. });
  213. };
  214. /** 跳转到对应的预置位 */
  215. export const goToPresetApi = (data: { presetToken: string; cameraId: number }) => {
  216. return http.request({
  217. url: `/camera/gotoPreset`,
  218. method: 'post',
  219. data,
  220. });
  221. };
  222. interface CameraMoveParam {
  223. cameraId: number;
  224. x: number;
  225. zoom: number;
  226. y: number;
  227. }
  228. /** 移动相机 */
  229. export const cameraMoveApi = (data: CameraMoveParam) => {
  230. return http.request({
  231. url: `/camera/move`,
  232. method: 'post',
  233. data,
  234. });
  235. };