index.ts 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. import { http } from '@/utils/http/axios';
  2. import type { QueryPageRequest, QueryPageResponse } from '@/types/basic-query';
  3. /**
  4. * ==================== 员工上报隐患管理 hiddenDanger ====================
  5. */
  6. // 隐患上报数据对象(详情 / 列表返回)
  7. export interface HiddenDanger {
  8. id: number;
  9. dangerName: string;
  10. dangerType: number;
  11. dangerTypeName?: string;
  12. dangerLevel: number;
  13. dangerLevelName?: string;
  14. location: string;
  15. description: string;
  16. reporterName: string;
  17. reporterPhone: string;
  18. reporterDept: string;
  19. reportTime: string;
  20. images?: string[];
  21. status: number;
  22. statusName?: string;
  23. handlerName?: string;
  24. handleTime?: string;
  25. handleResult?: string;
  26. createdAt?: string;
  27. updatedAt?: string;
  28. }
  29. // 新增隐患上报
  30. export interface SaveHiddenDangerReq {
  31. dangerName: string;
  32. dangerType: number;
  33. dangerLevel: number;
  34. location: string;
  35. description: string;
  36. reporterName: string;
  37. reporterPhone: string;
  38. reporterDept: string;
  39. reportTime: string;
  40. images?: string[];
  41. status?: number;
  42. }
  43. // 编辑隐患上报
  44. export interface UpdateHiddenDangerReq extends SaveHiddenDangerReq {
  45. id: number;
  46. }
  47. // 查询条件
  48. export interface QueryHiddenDangerReq {
  49. keyword?: string;
  50. dangerType?: number;
  51. dangerLevel?: number;
  52. status?: number;
  53. startDate?: string;
  54. endDate?: string;
  55. }
  56. // 处理隐患
  57. export interface HandleHiddenDangerReq {
  58. id: number;
  59. status: number;
  60. handlerName: string;
  61. handleTime: string;
  62. handleResult?: string;
  63. }
  64. // 新增隐患上报
  65. export function saveHiddenDanger(data: SaveHiddenDangerReq) {
  66. return http.request<number>({
  67. url: '/admin/prod/hiddenDanger/saveHiddenDanger',
  68. method: 'post',
  69. data,
  70. });
  71. }
  72. // 编辑隐患上报
  73. export function updateHiddenDanger(data: UpdateHiddenDangerReq) {
  74. return http.request({
  75. url: '/admin/prod/hiddenDanger/updateHiddenDanger',
  76. method: 'put',
  77. data,
  78. });
  79. }
  80. // 删除隐患上报
  81. export function deleteHiddenDanger(id: number) {
  82. return http.request({
  83. url: `/admin/prod/hiddenDanger/deleteHiddenDanger?id=${id}`,
  84. method: 'delete',
  85. });
  86. }
  87. // 根据 ID 查询隐患详情
  88. export function queryHiddenDangerById(id: number) {
  89. return http.request<HiddenDanger>({
  90. url: `/admin/prod/hiddenDanger/queryHiddenDangerById?id=${id}`,
  91. method: 'get',
  92. });
  93. }
  94. // 查询隐患上报列表(不分页)
  95. export function queryHiddenDangerList(params?: QueryHiddenDangerReq) {
  96. return http.request<HiddenDanger[]>({
  97. url: '/admin/prod/hiddenDanger/queryHiddenDangerList',
  98. method: 'post',
  99. data: params,
  100. });
  101. }
  102. // 分页查询隐患上报
  103. export function queryHiddenDangerPage(query: QueryPageRequest<QueryHiddenDangerReq>) {
  104. return http.request<QueryPageResponse<HiddenDanger>>({
  105. url: '/admin/prod/hiddenDanger/queryHiddenDangerPage',
  106. method: 'post',
  107. data: query,
  108. });
  109. }
  110. // 导出隐患上报
  111. export function exportHiddenDanger(params?: QueryHiddenDangerReq) {
  112. return http.request(
  113. {
  114. url: '/admin/prod/hiddenDanger/exportHiddenDanger',
  115. method: 'post',
  116. data: params,
  117. responseType: 'blob',
  118. },
  119. {
  120. isTransformResponse: false,
  121. },
  122. );
  123. }
  124. // 导入隐患上报
  125. export interface ImportRes {
  126. successCount: number;
  127. failCount: number;
  128. failMessages: string[];
  129. }
  130. export function importHiddenDanger(file: File) {
  131. const formData = new FormData();
  132. formData.append('file', file);
  133. return http.request<ImportRes>({
  134. url: '/admin/prod/hiddenDanger/importHiddenDanger',
  135. method: 'post',
  136. data: formData,
  137. headers: {
  138. 'Content-Type': 'multipart/form-data',
  139. },
  140. });
  141. }
  142. // 处理隐患
  143. export function handleHiddenDanger(data: HandleHiddenDangerReq) {
  144. return http.request({
  145. url: '/admin/prod/hiddenDanger/handleHiddenDanger',
  146. method: 'put',
  147. data,
  148. });
  149. }
  150. /**
  151. * ==================== 隐患类别管理 dangerType ====================
  152. */
  153. export interface DangerType {
  154. id: number;
  155. typeName: string;
  156. parentId: number | null;
  157. parentName?: string | null;
  158. sort?: number;
  159. status: number;
  160. statusName?: string;
  161. createdAt?: string;
  162. updatedAt?: string;
  163. children?: DangerType[];
  164. }
  165. export interface SaveDangerTypeReq {
  166. typeName: string;
  167. parentId?: number | null;
  168. sort?: number;
  169. status?: number;
  170. }
  171. export interface UpdateDangerTypeReq extends SaveDangerTypeReq {
  172. id: number;
  173. }
  174. export interface QueryDangerTypeReq {
  175. keyword?: string;
  176. parentId?: number | null;
  177. status?: number;
  178. }
  179. // 新增隐患类别
  180. export function saveDangerType(data: SaveDangerTypeReq) {
  181. return http.request<number>({
  182. url: '/admin/prod/dangerType/saveDangerType',
  183. method: 'post',
  184. data,
  185. });
  186. }
  187. // 编辑隐患类别
  188. export function updateDangerType(data: UpdateDangerTypeReq) {
  189. return http.request({
  190. url: '/admin/prod/dangerType/updateDangerType',
  191. method: 'put',
  192. data,
  193. });
  194. }
  195. // 删除隐患类别
  196. export function deleteDangerType(id: number) {
  197. return http.request({
  198. url: `/admin/prod/dangerType/deleteDangerType?id=${id}`,
  199. method: 'delete',
  200. });
  201. }
  202. // 根据 ID 查询隐患类别详情
  203. export function queryDangerTypeById(id: number) {
  204. return http.request<DangerType>({
  205. url: `/admin/prod/dangerType/queryDangerTypeById?id=${id}`,
  206. method: 'get',
  207. });
  208. }
  209. // 查询隐患类别列表(不分页)
  210. export function queryDangerTypeList(params?: QueryDangerTypeReq) {
  211. return http.request<DangerType[]>({
  212. url: '/admin/prod/dangerType/queryDangerTypeList',
  213. method: 'post',
  214. data: params,
  215. });
  216. }
  217. // 分页查询隐患类别
  218. export function queryDangerTypePage(query: QueryPageRequest<QueryDangerTypeReq>) {
  219. return http.request<QueryPageResponse<DangerType>>({
  220. url: '/admin/prod/dangerType/queryDangerTypePage',
  221. method: 'post',
  222. data: query,
  223. });
  224. }
  225. // 获取隐患类别树形结构
  226. export function getDangerTypeTree(status?: number) {
  227. return http.request<DangerType[]>({
  228. url: '/admin/prod/dangerType/getDangerTypeTree',
  229. method: 'get',
  230. params: typeof status === 'number' ? { status } : undefined,
  231. });
  232. }
  233. // 导出隐患类别
  234. export function exportDangerType(params?: QueryDangerTypeReq) {
  235. return http.request(
  236. {
  237. url: '/admin/prod/dangerType/exportDangerType',
  238. method: 'post',
  239. data: params,
  240. responseType: 'blob',
  241. },
  242. {
  243. isTransformResponse: false,
  244. },
  245. );
  246. }
  247. // 导入隐患类别
  248. export function importDangerType(file: File) {
  249. const formData = new FormData();
  250. formData.append('file', file);
  251. return http.request<ImportRes>({
  252. url: '/admin/prod/dangerType/importDangerType',
  253. method: 'post',
  254. data: formData,
  255. headers: {
  256. 'Content-Type': 'multipart/form-data',
  257. },
  258. });
  259. }