index.ts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. import { http } from '@/utils/http/axios';
  2. import type { QueryPageRequest, QueryPageResponse } from '@/types/basic-query';
  3. /**
  4. * ==================== 员工上报隐患管理 employeeHazardReport ====================
  5. */
  6. // 员工上报隐患数据对象(详情 / 列表返回)
  7. export interface EmployeeHazardReportDTO {
  8. id: number;
  9. hazardNo: string; // 隐患编号
  10. categoryId: number; // 隐患类别 ID
  11. categoryName: string; // 隐患类别名称
  12. hazardDesc: string; // 隐患问题描述
  13. location: string; // 隐患地点
  14. reportTime: string; // 上报时间
  15. sourceType: number; // 提交类型:1-员工,2-供应商,3-第三方
  16. sourceTypeName: string; // 提交类型名称
  17. taskSource: string; // 任务来源
  18. reporterName: string; // 上报人姓名
  19. reporterJobNo: string; // 上报人工号
  20. reporterMobile: string; // 联系电话
  21. attachment: string; // 附件 JSON
  22. status: number; // 状态:1-待审核,2-需求部门通过,3-需求部门驳回,4-安全部门通过,5-安全部门驳回,6-已入账,7-已关闭
  23. statusName: string; // 状态名称
  24. statusType?: number; // 状态类型:1-待审核,2-审核通过,3-审核不通过
  25. canApprove?: boolean; // 可审核
  26. canAccount?: boolean; // 可入账
  27. canView?: boolean; // 可查看
  28. isRewardApplied?: number; // 是否申请奖品:1-是,0-否
  29. createdById?: number; // 创建人 ID
  30. createdByName?: string; // 创建人姓名
  31. createdAt: string; // 创建时间
  32. updatedAt: string; // 更新时间
  33. approvalOrder?: number; // 审核顺序
  34. }
  35. // 新增员工上报隐患
  36. export interface SaveEmployeeHazardReportReq {
  37. categoryId: number; // 隐患类别 ID
  38. hazardDesc: string; // 隐患问题描述
  39. location: string; // 隐患地点
  40. reportTime: string; // 上报时间
  41. sourceType: number; // 提交类型:1-员工,2-供应商,3-第三方
  42. taskSource: string; // 任务来源
  43. reporterName: string; // 上报人姓名
  44. reporterJobNo: string; // 上报人工号
  45. reporterMobile: string; // 联系电话
  46. attachment?: string; // 附件 JSON,格式 [{file_name, url}]
  47. }
  48. // 编辑员工上报隐患
  49. export interface UpdateEmployeeHazardReportReq {
  50. id: number; // 主键 ID
  51. categoryId?: number; // 隐患类别 ID
  52. hazardDesc?: string; // 隐患问题描述
  53. location?: string; // 隐患地点
  54. reportTime?: string; // 上报时间
  55. sourceType?: number; // 提交类型:1-员工,2-供应商,3-第三方
  56. taskSource?: string; // 任务来源
  57. reporterName?: string; // 上报人姓名
  58. reporterJobNo?: string; // 上报人工号
  59. reporterMobile?: string; // 联系电话
  60. attachment?: string; // 附件 JSON
  61. }
  62. // 查询条件
  63. export interface QueryEmployeeHazardReportReq {
  64. keyword?: string; // 搜索隐患问题(支持全部非格式化字段关键词:隐患问题描述、隐患地点、姓名、工号、联系电话)
  65. statusType?: number; // 隐患状态下拉:0或null=全部,1=待审核,2=审核通过,3=审核不通过
  66. status?: number; // 状态精确值(1~7),与 statusType 二选一
  67. sourceTypeName?: string; // 搜索任务来源(模糊查询)
  68. startDate?: string; // 上报时间范围-开始日期(格式:YYYY-MM-DD)
  69. endDate?: string; // 上报时间范围-结束日期(格式:YYYY-MM-DD)
  70. categoryId?: number; // 隐患类别 ID
  71. reporterJobNo?: string; // 上报人工号
  72. hazardDesc?: string; // 仅按隐患问题描述查询(兼容用,建议使用 keyword)
  73. }
  74. // 审核员工上报隐患
  75. export interface ApproveEmployeeHazardReportReq {
  76. hazardId: number; // 隐患主表 ID
  77. node: number; // 审批节点:1-需求部门,2-安全部门
  78. approvalStatus: number; // 审批状态:2-通过,3-驳回
  79. approvalContent?: string; // 审批意见
  80. approvalOrder?: number; // 审核顺序
  81. }
  82. // 兼容旧接口名称(向后兼容)
  83. export type HiddenDanger = EmployeeHazardReportDTO;
  84. export type SaveHiddenDangerReq = SaveEmployeeHazardReportReq;
  85. export type UpdateHiddenDangerReq = UpdateEmployeeHazardReportReq;
  86. export type QueryHiddenDangerReq = QueryEmployeeHazardReportReq;
  87. // 新增员工上报隐患
  88. export function saveEmployeeHazardReport(data: SaveEmployeeHazardReportReq) {
  89. return http.request<number>({
  90. url: '/employeeHazardReport/saveEmployeeHazardReport',
  91. method: 'post',
  92. data,
  93. });
  94. }
  95. // 编辑员工上报隐患
  96. export function updateEmployeeHazardReport(data: UpdateEmployeeHazardReportReq) {
  97. return http.request({
  98. url: '/employeeHazardReport/updateEmployeeHazardReport',
  99. method: 'put',
  100. data,
  101. });
  102. }
  103. // 删除员工上报隐患
  104. export function deleteEmployeeHazardReport(id: number) {
  105. return http.request({
  106. url: `/employeeHazardReport/deleteEmployeeHazardReport?id=${id}`,
  107. method: 'delete',
  108. });
  109. }
  110. // 根据 ID 查询员工上报隐患详情
  111. export function queryEmployeeHazardReportById(id: number) {
  112. return http.request<EmployeeHazardReportDTO>({
  113. url: `/employeeHazardReport/queryEmployeeHazardReportById?id=${id}`,
  114. method: 'get',
  115. });
  116. }
  117. // 获取templateID
  118. export function queryTemplateID() {
  119. return http.request({
  120. url: `/employeeHazardReport/queryReportHazardApprovalFlowId`,
  121. method: 'get',
  122. });
  123. }
  124. // 查看员工上报隐患列表(不分页)
  125. export function queryEmployeeHazardReportList(params?: QueryEmployeeHazardReportReq) {
  126. return http.request<EmployeeHazardReportDTO[]>({
  127. url: '/employeeHazardReport/queryEmployeeHazardReportList',
  128. method: 'post',
  129. data: params || {},
  130. });
  131. }
  132. // 分页查询员工上报隐患
  133. export function queryEmployeeHazardReportPage(query: QueryPageRequest<QueryEmployeeHazardReportReq>) {
  134. return http.request<QueryPageResponse<EmployeeHazardReportDTO>>({
  135. url: '/employeeHazardReport/queryEmployeeHazardReportPage',
  136. method: 'post',
  137. data: query,
  138. });
  139. }
  140. // 分页查询员工上报隐患(管理员审核列表)
  141. export function queryEmployeeHazardReportPendingPage(query: QueryPageRequest<QueryEmployeeHazardReportReq>) {
  142. return http.request<QueryPageResponse<EmployeeHazardReportDTO>>({
  143. url: '/employeeHazardReport/queryEmployeeHazardReportPendingPage',
  144. method: 'post',
  145. data: query,
  146. });
  147. }
  148. // 审核员工上报隐患
  149. export function approveEmployeeHazardReport(data: ApproveEmployeeHazardReportReq) {
  150. return http.request({
  151. url: '/employeeHazardReport/approveEmployeeHazardReport',
  152. method: 'post',
  153. data,
  154. });
  155. }
  156. // 入账员工上报隐患
  157. export function accountEmployeeHazardReport(hazardId: number) {
  158. return http.request({
  159. url: `/employeeHazardReport/accountEmployeeHazardReport`,
  160. method: 'post',
  161. data: {
  162. hazardId,
  163. },
  164. });
  165. }
  166. // 导出员工上报隐患
  167. export function exportEmployeeHazardReport(params?: QueryEmployeeHazardReportReq) {
  168. return http.request(
  169. {
  170. url: '/employeeHazardReport/exportEmployeeHazardReport',
  171. method: 'post',
  172. data: params || {},
  173. responseType: 'blob',
  174. },
  175. {
  176. isTransformResponse: false,
  177. },
  178. );
  179. }
  180. // 导入结果
  181. export interface ImportRes {
  182. successCount: number;
  183. failCount: number;
  184. failInfoList?: Array<{
  185. rowNum: number;
  186. failReason: string;
  187. }>;
  188. failMessages?: string[]; // 兼容旧版本
  189. }
  190. // 向后兼容的接口函数(使用旧接口名称)
  191. export const saveHiddenDanger = saveEmployeeHazardReport;
  192. export const updateHiddenDanger = updateEmployeeHazardReport;
  193. export const deleteHiddenDanger = deleteEmployeeHazardReport;
  194. export const queryHiddenDangerById = queryEmployeeHazardReportById;
  195. export const queryHiddenDangerList = queryEmployeeHazardReportList;
  196. export const queryHiddenDangerPage = queryEmployeeHazardReportPage;
  197. export const exportHiddenDanger = exportEmployeeHazardReport;
  198. /**
  199. * ==================== 隐患类别管理 hazardCategory ====================
  200. */
  201. export interface HazardCategoryDTO {
  202. id: number;
  203. categoryName: string; // 类别名称
  204. description: string; // 类别描述
  205. status: number; // 状态:1-启用,0-禁用
  206. parentId: number; // 父级 ID,一级为 0
  207. sortOrder: number; // 排序
  208. createdAt: string; // 创建时间
  209. updatedAt: string; // 更新时间
  210. }
  211. export interface SaveHazardCategoryReq {
  212. categoryName: string; // 类别名称
  213. description?: string; // 类别描述,最多 300 字
  214. status: number; // 启用状态:1-启用,0-禁用
  215. }
  216. export interface UpdateHazardCategoryReq {
  217. id: number; // 主键 ID
  218. categoryName?: string; // 类别名称
  219. description?: string; // 类别描述,最多 300 字
  220. status?: number; // 启用状态:1-启用,0-禁用
  221. }
  222. export interface QueryHazardCategoryReq {
  223. keyword?: string; // 关键词,模糊查询类别名称、描述等
  224. status?: number; // 状态:1-启用,0-禁用
  225. startDate?: string; // 创建时间范围-开始
  226. endDate?: string; // 创建时间范围-结束
  227. }
  228. // 兼容旧接口名称(向后兼容)
  229. export type DangerType = HazardCategoryDTO;
  230. export type SaveDangerTypeReq = SaveHazardCategoryReq;
  231. export type UpdateDangerTypeReq = UpdateHazardCategoryReq;
  232. export type QueryDangerTypeReq = QueryHazardCategoryReq;
  233. // 新增隐患类别
  234. export function saveHazardCategory(data: SaveHazardCategoryReq) {
  235. return http.request<number>({
  236. url: '/hazardCategory/saveHazardCategory',
  237. method: 'post',
  238. data,
  239. });
  240. }
  241. // 编辑隐患类别
  242. export function updateHazardCategory(data: UpdateHazardCategoryReq) {
  243. return http.request({
  244. url: '/hazardCategory/updateHazardCategory',
  245. method: 'put',
  246. data,
  247. });
  248. }
  249. // 删除隐患类别
  250. export function deleteHazardCategory(id: number) {
  251. return http.request({
  252. url: `/hazardCategory/deleteHazardCategory?id=${id}`,
  253. method: 'delete',
  254. });
  255. }
  256. // 根据 ID 查询隐患类别详情
  257. export function queryHazardCategoryById(id: number) {
  258. return http.request<HazardCategoryDTO>({
  259. url: `/hazardCategory/queryHazardCategoryById?id=${id}`,
  260. method: 'get',
  261. });
  262. }
  263. // 查看隐患类别列表(不分页)
  264. export function queryHazardCategoryList(params?: QueryHazardCategoryReq) {
  265. return http.request<HazardCategoryDTO[]>({
  266. url: '/hazardCategory/queryHazardCategoryList',
  267. method: 'post',
  268. data: params || {},
  269. });
  270. }
  271. // 分页查询隐患类别
  272. export function queryHazardCategoryPage(query: QueryPageRequest<QueryHazardCategoryReq>) {
  273. return http.request<QueryPageResponse<HazardCategoryDTO>>({
  274. url: '/hazardCategory/queryHazardCategoryPage',
  275. method: 'post',
  276. data: query,
  277. });
  278. }
  279. // 导出隐患类别
  280. export function exportHazardCategory(params?: QueryHazardCategoryReq) {
  281. return http.request(
  282. {
  283. url: '/hazardCategory/exportHazardCategory',
  284. method: 'post',
  285. data: params || {},
  286. responseType: 'blob',
  287. },
  288. {
  289. isTransformResponse: false,
  290. },
  291. );
  292. }
  293. // 导入隐患类别
  294. export function importHazardCategory(file: File) {
  295. const formData = new FormData();
  296. formData.append('file', file);
  297. return http.request<ImportRes>({
  298. url: '/hazardCategory/importHazardCategory',
  299. method: 'post',
  300. data: formData,
  301. headers: {
  302. 'Content-Type': 'multipart/form-data',
  303. },
  304. });
  305. }
  306. // 向后兼容的接口函数(使用旧接口名称)
  307. export const saveDangerType = saveHazardCategory;
  308. export const updateDangerType = updateHazardCategory;
  309. export const deleteDangerType = deleteHazardCategory;
  310. export const queryDangerTypeById = queryHazardCategoryById;
  311. export const queryDangerTypeList = queryHazardCategoryList;
  312. export const queryDangerTypePage = queryHazardCategoryPage;
  313. export const exportDangerType = exportHazardCategory;
  314. export const importDangerType = importHazardCategory;