index.ts 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591
  1. import { http } from '@/utils/http/axios';
  2. import type { QueryPageRequest, QueryPageResponse } from '@/types/basic-query';
  3. /**
  4. * 生产安全体系文件基础接口
  5. */
  6. export interface ProductionSafetyFile {
  7. id?: number;
  8. bizType?: string; // 业务模块类型:academy/dual/industry/law/safety
  9. fileCode: string; // 文件编号
  10. fileName: string; // 文件名称
  11. classifyName: string; // 分类名称
  12. fileVersion: string; // 文件版本号
  13. fileFormat: string; // 文件格式:PDF/WORD
  14. releaseDate: string; // 发布日期(格式:yyyy-MM-dd)
  15. fileUrl?: string; // 文件存储路径
  16. content?: string; // 文档内容(富文本)
  17. status?: number; // 启用状态:1-启用,0-禁用
  18. createdAt?: string; // 创建时间
  19. updatedAt?: string; // 更新时间
  20. uploadTime?: string; // 上传时间
  21. }
  22. /**
  23. * 查询参数
  24. */
  25. export interface ProductionSafetyFileQuery {
  26. keyword?: string; // 文件名称/编号(模糊查询)
  27. status?: number; // 状态:1-启用,0-禁用
  28. classifyName?: string; // 分类名称
  29. startDate?: string; // 上传日期范围-开始日期
  30. endDate?: string; // 上传日期范围-结束日期
  31. }
  32. /**
  33. * 分页查询参数(Pageable<T> 格式)
  34. */
  35. export interface ProductionSafetyFilePageQuery {
  36. pageNumber: number; // 页码,从1开始
  37. pageSize: number; // 每页数量
  38. queryParam?: ProductionSafetyFileQuery; // 查询条件对象
  39. }
  40. /**
  41. * 导出参数
  42. */
  43. export interface ProductionSafetyFileExportQuery extends ProductionSafetyFileQuery {}
  44. /**
  45. * 导入响应
  46. */
  47. export interface ImportRes {
  48. successCount: number; // 成功数量
  49. failCount: number; // 失败数量
  50. failMessages: string[]; // 失败信息列表
  51. }
  52. // ==================== 院级文件管理 (academyFile) ====================
  53. /**
  54. * 新增院级文件
  55. */
  56. export function saveAcademyFile(data: ProductionSafetyFile) {
  57. return http.request<number>({
  58. url: '/admin/prod/academyFile/saveAcademyFile',
  59. method: 'post',
  60. data,
  61. });
  62. }
  63. /**
  64. * 编辑院级文件
  65. */
  66. export function updateAcademyFile(data: ProductionSafetyFile & { id: number }) {
  67. return http.request({
  68. url: '/admin/prod/academyFile/updateAcademyFile',
  69. method: 'put',
  70. data,
  71. });
  72. }
  73. /**
  74. * 删除院级文件
  75. */
  76. export function deleteAcademyFile(id: number) {
  77. return http.request({
  78. url: `/admin/prod/academyFile/deleteAcademyFile?id=${id}`,
  79. method: 'delete',
  80. });
  81. }
  82. /**
  83. * 根据ID查询院级文件详情
  84. */
  85. export function queryAcademyFileById(id: number) {
  86. return http.request<ProductionSafetyFile>({
  87. url: `/admin/prod/academyFile/queryAcademyFileById?id=${id}`,
  88. method: 'get',
  89. });
  90. }
  91. /**
  92. * 根据文件编号查询院级文件详情
  93. */
  94. export function queryAcademyFileByCode(fileCode: string) {
  95. return http.request<ProductionSafetyFile>({
  96. url: `/admin/prod/academyFile/queryAcademyFileByCode?fileCode=${fileCode}`,
  97. method: 'get',
  98. });
  99. }
  100. /**
  101. * 查询院级文件列表(不分页)
  102. */
  103. export function queryAcademyFileList(params?: ProductionSafetyFileQuery, classifyName?: string) {
  104. return http.request<ProductionSafetyFile[]>({
  105. url: '/admin/prod/academyFile/queryAcademyFileList',
  106. method: 'post',
  107. data: params,
  108. params: classifyName ? { classifyName } : undefined,
  109. });
  110. }
  111. /**
  112. * 分页查询院级文件
  113. */
  114. export function queryAcademyFilePage(query: ProductionSafetyFilePageQuery, classifyName?: string) {
  115. return http.request<QueryPageResponse<ProductionSafetyFile>>({
  116. url: '/admin/prod/academyFile/queryAcademyFilePage',
  117. method: 'post',
  118. data: query,
  119. params: classifyName ? { classifyName } : undefined,
  120. });
  121. }
  122. /**
  123. * 导出院级文件
  124. */
  125. export function exportAcademyFile(params?: ProductionSafetyFileExportQuery, classifyName?: string) {
  126. return http.request({
  127. url: '/admin/prod/academyFile/exportAcademyFile',
  128. method: 'post',
  129. data: params,
  130. params: classifyName ? { classifyName } : undefined,
  131. responseType: 'blob',
  132. }, {
  133. isTransformResponse: false,
  134. });
  135. }
  136. /**
  137. * 导入院级文件
  138. */
  139. export function importAcademyFile(file: File) {
  140. const formData = new FormData();
  141. formData.append('file', file);
  142. return http.request<ImportRes>({
  143. url: '/admin/prod/academyFile/importAcademyFile',
  144. method: 'post',
  145. data: formData,
  146. headers: {
  147. 'Content-Type': 'multipart/form-data',
  148. },
  149. });
  150. }
  151. // ==================== 双体系建设管理 (dualSystem) ====================
  152. /**
  153. * 新增双体系建设
  154. */
  155. export function saveDualSystem(data: ProductionSafetyFile) {
  156. return http.request<number>({
  157. url: '/admin/prod/dualSystem/saveDualSystem',
  158. method: 'post',
  159. data,
  160. });
  161. }
  162. /**
  163. * 编辑双体系建设
  164. */
  165. export function updateDualSystem(data: ProductionSafetyFile & { id: number }) {
  166. return http.request({
  167. url: '/admin/prod/dualSystem/updateDualSystem',
  168. method: 'put',
  169. data,
  170. });
  171. }
  172. /**
  173. * 删除双体系建设
  174. */
  175. export function deleteDualSystem(id: number) {
  176. return http.request({
  177. url: `/admin/prod/dualSystem/deleteDualSystem?id=${id}`,
  178. method: 'delete',
  179. });
  180. }
  181. /**
  182. * 根据ID查询双体系建设详情
  183. */
  184. export function queryDualSystemById(id: number) {
  185. return http.request<ProductionSafetyFile>({
  186. url: `/admin/prod/dualSystem/queryDualSystemById?id=${id}`,
  187. method: 'get',
  188. });
  189. }
  190. /**
  191. * 根据文件编号查询双体系建设详情
  192. */
  193. export function queryDualSystemByCode(fileCode: string) {
  194. return http.request<ProductionSafetyFile>({
  195. url: `/admin/prod/dualSystem/queryDualSystemByCode?fileCode=${fileCode}`,
  196. method: 'get',
  197. });
  198. }
  199. /**
  200. * 查询双体系建设列表(不分页)
  201. */
  202. export function queryDualSystemList(params?: ProductionSafetyFileQuery, classifyName?: string) {
  203. return http.request<ProductionSafetyFile[]>({
  204. url: '/admin/prod/dualSystem/queryDualSystemList',
  205. method: 'post',
  206. data: params,
  207. params: classifyName ? { classifyName } : undefined,
  208. });
  209. }
  210. /**
  211. * 分页查询双体系建设
  212. */
  213. export function queryDualSystemPage(query: ProductionSafetyFilePageQuery, classifyName?: string) {
  214. return http.request<QueryPageResponse<ProductionSafetyFile>>({
  215. url: '/admin/prod/dualSystem/queryDualSystemPage',
  216. method: 'post',
  217. data: query,
  218. params: classifyName ? { classifyName } : undefined,
  219. });
  220. }
  221. /**
  222. * 导出双体系建设
  223. */
  224. export function exportDualSystem(params?: ProductionSafetyFileExportQuery, classifyName?: string) {
  225. return http.request({
  226. url: '/admin/prod/dualSystem/exportDualSystem',
  227. method: 'post',
  228. data: params,
  229. params: classifyName ? { classifyName } : undefined,
  230. responseType: 'blob',
  231. }, {
  232. isTransformResponse: false,
  233. });
  234. }
  235. /**
  236. * 导入双体系建设
  237. */
  238. export function importDualSystem(file: File) {
  239. const formData = new FormData();
  240. formData.append('file', file);
  241. return http.request<ImportRes>({
  242. url: '/admin/prod/dualSystem/importDualSystem',
  243. method: 'post',
  244. data: formData,
  245. headers: {
  246. 'Content-Type': 'multipart/form-data',
  247. },
  248. });
  249. }
  250. // ==================== 行业标准管理 (industryStandard) ====================
  251. /**
  252. * 新增行业标准
  253. */
  254. export function saveIndustryStandard(data: ProductionSafetyFile) {
  255. return http.request<number>({
  256. url: '/admin/prod/industryStandard/saveIndustryStandard',
  257. method: 'post',
  258. data,
  259. });
  260. }
  261. /**
  262. * 编辑行业标准
  263. */
  264. export function updateIndustryStandard(data: ProductionSafetyFile & { id: number }) {
  265. return http.request({
  266. url: '/admin/prod/industryStandard/updateIndustryStandard',
  267. method: 'put',
  268. data,
  269. });
  270. }
  271. /**
  272. * 删除行业标准
  273. */
  274. export function deleteIndustryStandard(id: number) {
  275. return http.request({
  276. url: `/admin/prod/industryStandard/deleteIndustryStandard?id=${id}`,
  277. method: 'delete',
  278. });
  279. }
  280. /**
  281. * 根据ID查询行业标准详情
  282. */
  283. export function queryIndustryStandardById(id: number) {
  284. return http.request<ProductionSafetyFile>({
  285. url: `/admin/prod/industryStandard/queryIndustryStandardById?id=${id}`,
  286. method: 'get',
  287. });
  288. }
  289. /**
  290. * 根据文件编号查询行业标准详情
  291. */
  292. export function queryIndustryStandardByCode(fileCode: string) {
  293. return http.request<ProductionSafetyFile>({
  294. url: `/admin/prod/industryStandard/queryIndustryStandardByCode?fileCode=${fileCode}`,
  295. method: 'get',
  296. });
  297. }
  298. /**
  299. * 查询行业标准列表(不分页)
  300. */
  301. export function queryIndustryStandardList(params?: ProductionSafetyFileQuery, classifyName?: string) {
  302. return http.request<ProductionSafetyFile[]>({
  303. url: '/admin/prod/industryStandard/queryIndustryStandardList',
  304. method: 'post',
  305. data: params,
  306. params: classifyName ? { classifyName } : undefined,
  307. });
  308. }
  309. /**
  310. * 分页查询行业标准
  311. */
  312. export function queryIndustryStandardPage(query: ProductionSafetyFilePageQuery, classifyName?: string) {
  313. return http.request<QueryPageResponse<ProductionSafetyFile>>({
  314. url: '/admin/prod/industryStandard/queryIndustryStandardPage',
  315. method: 'post',
  316. data: query,
  317. params: classifyName ? { classifyName } : undefined,
  318. });
  319. }
  320. /**
  321. * 导出行业标准
  322. */
  323. export function exportIndustryStandard(params?: ProductionSafetyFileExportQuery, classifyName?: string) {
  324. return http.request({
  325. url: '/admin/prod/industryStandard/exportIndustryStandard',
  326. method: 'post',
  327. data: params,
  328. params: classifyName ? { classifyName } : undefined,
  329. responseType: 'blob',
  330. }, {
  331. isTransformResponse: false,
  332. });
  333. }
  334. /**
  335. * 导入行业标准
  336. */
  337. export function importIndustryStandard(file: File) {
  338. const formData = new FormData();
  339. formData.append('file', file);
  340. return http.request<ImportRes>({
  341. url: '/admin/prod/industryStandard/importIndustryStandard',
  342. method: 'post',
  343. data: formData,
  344. headers: {
  345. 'Content-Type': 'multipart/form-data',
  346. },
  347. });
  348. }
  349. // ==================== 法律法规管理 (lawRegulation) ====================
  350. /**
  351. * 新增法律法规
  352. */
  353. export function saveLawRegulation(data: ProductionSafetyFile) {
  354. return http.request<number>({
  355. url: '/admin/prod/lawRegulation/saveLawRegulation',
  356. method: 'post',
  357. data,
  358. });
  359. }
  360. /**
  361. * 编辑法律法规
  362. */
  363. export function updateLawRegulation(data: ProductionSafetyFile & { id: number }) {
  364. return http.request({
  365. url: '/admin/prod/lawRegulation/updateLawRegulation',
  366. method: 'put',
  367. data,
  368. });
  369. }
  370. /**
  371. * 删除法律法规
  372. */
  373. export function deleteLawRegulation(id: number) {
  374. return http.request({
  375. url: `/admin/prod/lawRegulation/deleteLawRegulation?id=${id}`,
  376. method: 'delete',
  377. });
  378. }
  379. /**
  380. * 根据ID查询法律法规详情
  381. */
  382. export function queryLawRegulationById(id: number) {
  383. return http.request<ProductionSafetyFile>({
  384. url: `/admin/prod/lawRegulation/queryLawRegulationById?id=${id}`,
  385. method: 'get',
  386. });
  387. }
  388. /**
  389. * 根据文件编号查询法律法规详情
  390. */
  391. export function queryLawRegulationByCode(fileCode: string) {
  392. return http.request<ProductionSafetyFile>({
  393. url: `/admin/prod/lawRegulation/queryLawRegulationByCode?fileCode=${fileCode}`,
  394. method: 'get',
  395. });
  396. }
  397. /**
  398. * 查询法律法规列表(不分页)
  399. */
  400. export function queryLawRegulationList(params?: ProductionSafetyFileQuery, classifyName?: string) {
  401. return http.request<ProductionSafetyFile[]>({
  402. url: '/admin/prod/lawRegulation/queryLawRegulationList',
  403. method: 'post',
  404. data: params,
  405. params: classifyName ? { classifyName } : undefined,
  406. });
  407. }
  408. /**
  409. * 分页查询法律法规
  410. */
  411. export function queryLawRegulationPage(query: ProductionSafetyFilePageQuery, classifyName?: string) {
  412. return http.request<QueryPageResponse<ProductionSafetyFile>>({
  413. url: '/admin/prod/lawRegulation/queryLawRegulationPage',
  414. method: 'post',
  415. data: query,
  416. params: classifyName ? { classifyName } : undefined,
  417. });
  418. }
  419. /**
  420. * 导出法律法规
  421. */
  422. export function exportLawRegulation(params?: ProductionSafetyFileExportQuery, classifyName?: string) {
  423. return http.request({
  424. url: '/admin/prod/lawRegulation/exportLawRegulation',
  425. method: 'post',
  426. data: params,
  427. params: classifyName ? { classifyName } : undefined,
  428. responseType: 'blob',
  429. }, {
  430. isTransformResponse: false,
  431. });
  432. }
  433. /**
  434. * 导入法律法规
  435. */
  436. export function importLawRegulation(file: File) {
  437. const formData = new FormData();
  438. formData.append('file', file);
  439. return http.request<ImportRes>({
  440. url: '/admin/prod/lawRegulation/importLawRegulation',
  441. method: 'post',
  442. data: formData,
  443. headers: {
  444. 'Content-Type': 'multipart/form-data',
  445. },
  446. });
  447. }
  448. // ==================== 安全标准化体系建设管理 (safetyStandardization) ====================
  449. /**
  450. * 新增安全标准化体系建设
  451. */
  452. export function saveSafetyStandardization(data: ProductionSafetyFile) {
  453. return http.request<number>({
  454. url: '/admin/prod/safetyStandardization/saveSafetyStandardization',
  455. method: 'post',
  456. data,
  457. });
  458. }
  459. /**
  460. * 编辑安全标准化体系建设
  461. */
  462. export function updateSafetyStandardization(data: ProductionSafetyFile & { id: number }) {
  463. return http.request({
  464. url: '/admin/prod/safetyStandardization/updateSafetyStandardization',
  465. method: 'put',
  466. data,
  467. });
  468. }
  469. /**
  470. * 删除安全标准化体系建设
  471. */
  472. export function deleteSafetyStandardization(id: number) {
  473. return http.request({
  474. url: `/admin/prod/safetyStandardization/deleteSafetyStandardization?id=${id}`,
  475. method: 'delete',
  476. });
  477. }
  478. /**
  479. * 根据ID查询安全标准化体系建设详情
  480. */
  481. export function querySafetyStandardizationById(id: number) {
  482. return http.request<ProductionSafetyFile>({
  483. url: `/admin/prod/safetyStandardization/querySafetyStandardizationById?id=${id}`,
  484. method: 'get',
  485. });
  486. }
  487. /**
  488. * 根据文件编号查询安全标准化体系建设详情
  489. */
  490. export function querySafetyStandardizationByCode(fileCode: string) {
  491. return http.request<ProductionSafetyFile>({
  492. url: `/admin/prod/safetyStandardization/querySafetyStandardizationByCode?fileCode=${fileCode}`,
  493. method: 'get',
  494. });
  495. }
  496. /**
  497. * 查询安全标准化体系建设列表(不分页)
  498. */
  499. export function querySafetyStandardizationList(params?: ProductionSafetyFileQuery, classifyName?: string) {
  500. return http.request<ProductionSafetyFile[]>({
  501. url: '/admin/prod/safetyStandardization/querySafetyStandardizationList',
  502. method: 'post',
  503. data: params,
  504. params: classifyName ? { classifyName } : undefined,
  505. });
  506. }
  507. /**
  508. * 分页查询安全标准化体系建设
  509. */
  510. export function querySafetyStandardizationPage(query: ProductionSafetyFilePageQuery, classifyName?: string) {
  511. return http.request<QueryPageResponse<ProductionSafetyFile>>({
  512. url: '/admin/prod/safetyStandardization/querySafetyStandardizationPage',
  513. method: 'post',
  514. data: query,
  515. params: classifyName ? { classifyName } : undefined,
  516. });
  517. }
  518. /**
  519. * 导出安全标准化体系建设
  520. */
  521. export function exportSafetyStandardization(params?: ProductionSafetyFileExportQuery, classifyName?: string) {
  522. return http.request({
  523. url: '/admin/prod/safetyStandardization/exportSafetyStandardization',
  524. method: 'post',
  525. data: params,
  526. params: classifyName ? { classifyName } : undefined,
  527. responseType: 'blob',
  528. }, {
  529. isTransformResponse: false,
  530. });
  531. }
  532. /**
  533. * 导入安全标准化体系建设
  534. */
  535. export function importSafetyStandardization(file: File) {
  536. const formData = new FormData();
  537. formData.append('file', file);
  538. return http.request<ImportRes>({
  539. url: '/admin/prod/safetyStandardization/importSafetyStandardization',
  540. method: 'post',
  541. data: formData,
  542. headers: {
  543. 'Content-Type': 'multipart/form-data',
  544. },
  545. });
  546. }
  547. // ==================== 检查单模版管理 (checklistTemplate) 接口基础路径: /api/checklistTemplate ====================
  548. /** 检查单模板明细子表 */
  549. export interface ChecklistTemplateItem {
  550. id?: number;
  551. templateId?: number;
  552. checkContent?: string; // 检查内容
  553. checkStandard?: string; // 检查标准
  554. checkResult?: string; // 检查结果:合格/不合格/待检
  555. checkProblem?: string; // 检查发现问题
  556. isDeleted?: number; // 删除标识(0-未删除,>0-已删除)
  557. createdAt?: string;
  558. updatedAt?: string;
  559. }
  560. /** 检查单模版列表项 (ChecklistTemplatePageRes) */
  561. export interface ChecklistTemplatePageItem {
  562. id?: number;
  563. templateName?: string;
  564. moduleName?: string;
  565. status?: number; // 0-禁用,1-启用,2-草稿
  566. categoryName?: string;
  567. categoryCode?: string;
  568. useCount?: number;
  569. remark?: string;
  570. updateUserName?: string;
  571. businessWork?: string;
  572. fillInstruction?: string;
  573. }
  574. /** 检查单模版查询条件 */
  575. export interface ChecklistTemplateQuery {
  576. templateName?: string; // 搜索检查单模版名称
  577. status?: boolean; // true=启用,false=禁用(接口文档为Boolean,实际可传number兼容)
  578. startDate?: string; // 上传日期范围-开始
  579. endDate?: string; // 上传日期范围-结束
  580. }
  581. /** 检查单模版保存/编辑请求 (SaveChecklistTemplateReq) */
  582. export interface SaveChecklistTemplateReq {
  583. id?: number;
  584. templateName: string;
  585. categoryName?: string;
  586. categoryCode?: string;
  587. businessWork: string;
  588. fillInstruction: string;
  589. ChecklistTemplateItem?: ChecklistTemplateItem[];
  590. status?: number; // 0-禁用,1-启用,2-草稿
  591. }
  592. /** 分页查询请求 - 响应含 pageNumber/pageSize/total/totalPage/records */
  593. interface ChecklistTemplatePageQuery {
  594. pageNumber?: number;
  595. pageSize?: number;
  596. queryParam?: ChecklistTemplateQuery;
  597. }
  598. interface ChecklistTemplatePageRes {
  599. pageNumber: number;
  600. pageSize: number;
  601. total: number;
  602. totalPage: number;
  603. records: ChecklistTemplatePageItem[];
  604. }
  605. /** 检查单模版实体(用于名称下拉等场景,后端返回 WebResult<List<ChecklistTemplate>>) */
  606. export type ChecklistTemplate = ChecklistTemplatePageItem;
  607. /** 一、查询检查单模版管理列表 */
  608. export function queryChecklistTemplateList(query: ChecklistTemplatePageQuery) {
  609. return http.request<ChecklistTemplatePageRes>({
  610. url: '/checklistTemplate/queryChecklistTemplateList',
  611. method: 'post',
  612. data: query,
  613. });
  614. }
  615. /** 查询检查单模版名称列表(区域检查计划管理-管理员-详情检查单模版名称下拉) */
  616. export function queryCheckListTemplateNameList() {
  617. // 后端说明:请求体空对象,请求方式 POST,返回 WebResult<List<ChecklistTemplate>>
  618. // 经过 http 拦截器转换后,这里拿到的就是 List<ChecklistTemplate>
  619. return http.request<ChecklistTemplate[]>({
  620. url: `${ADMIN_BASE}/queryCheckListTemplateNameList`,
  621. method: 'post',
  622. data: {},
  623. });
  624. }
  625. /** 二、删除检查单模版管理 */
  626. export function deleteChecklistTemplate(id: number) {
  627. return http.request({
  628. url: `/checklistTemplate/deleteChecklistTemplate?id=${id}`,
  629. method: 'delete',
  630. });
  631. }
  632. /** 三、删除检查单模版明细 */
  633. export function deleteChecklistTemplateItem(id: number) {
  634. return http.request({
  635. url: `/checklistTemplate/deleteChecklistTemplateItem?id=${id}`,
  636. method: 'delete',
  637. });
  638. }
  639. /** 四、编辑检查单模版管理 */
  640. export function updateChecklistTemplate(data: SaveChecklistTemplateReq) {
  641. return http.request<number>({
  642. url: '/checklistTemplate/updateChecklistTemplate',
  643. method: 'put',
  644. data,
  645. });
  646. }
  647. /** 五、新增检查单模版管理 */
  648. export function saveChecklistTemplate(data: Omit<SaveChecklistTemplateReq, 'id'>) {
  649. return http.request({
  650. url: '/checklistTemplate/saveChecklistTemplate',
  651. method: 'post',
  652. data,
  653. });
  654. }
  655. /** 六、查询检查单模版管理详情 */
  656. export function queryChecklistTemplateDetail(id: number) {
  657. return http.request<SaveChecklistTemplateReq>({
  658. url: `/checklistTemplate/queryChecklistTemplateDetail?id=${id}`,
  659. method: 'post',
  660. });
  661. }
  662. /** 七、批量导入检查单模板明细子表 */
  663. export function importChecklistTemplateItem(file: File, id: string | number) {
  664. const formData = new FormData();
  665. formData.append('file', file);
  666. formData.append('id', String(id));
  667. return http.request({
  668. url: '/checklistTemplate/importChecklistTemplateItem',
  669. method: 'post',
  670. data: formData,
  671. headers: {
  672. 'Content-Type': 'multipart/form-data',
  673. },
  674. });
  675. }
  676. // ==================== 区域检查计划管理 areaCheckPlanManage ====================
  677. // 接口基础路径:Admin /api/areaCheckPlanManageAdmin | Dept /api/areaCheckPlanManageDept
  678. /** 区域检查计划状态:0=未开始 1=进行中 2=已完成 3=已终止 */
  679. export type AreaCheckPlanStatus = 0 | 1 | 2 | 3;
  680. /** 检查频次映射:0=每日 1=每周 2=每月 3=每季度 4=每半年 5=每年 */
  681. const FREQUENCY_TO_LABEL: Record<number, string> = {
  682. 0: '每日',
  683. 1: '每周',
  684. 2: '每月',
  685. 3: '每季度',
  686. 4: '每半年',
  687. 5: '每年',
  688. };
  689. const LABEL_TO_FREQUENCY: Record<string, number> = {
  690. 每日: 0,
  691. 每周: 1,
  692. 每月: 2,
  693. 每季度: 3,
  694. 每半年: 4,
  695. 每年: 5,
  696. };
  697. /** 后端 API 返回的区域检查计划记录格式(与接口文档 DTO 对齐:*Name/*Code) */
  698. interface AreaCheckPlanManageApiRecord {
  699. id?: number; // 主键ID
  700. areaCheckPlanName?: string; // 区域检查计划名称
  701. checkPlace?: string; // 检查场所
  702. checkPlaceCategory?: string; // 检查场所所属类别
  703. checkCategory?: string; // 检查类别
  704. status?: number | string; // 状态:0=未开始 1=进行中 2=已完成 3=已终止
  705. /** save/update 请求体使用:主责部门名称 */
  706. primaryResponsibleDeptName?: string;
  707. primaryResponsibleDeptPersonCode?: string;
  708. /** save/update 请求体使用:主责部门 code */
  709. primaryResponsibleDeptCode?: string;
  710. responsibleDeptName?: string; // 主责部门名称(兼容后端返回)
  711. responsibleDeptCode?: string; // 主责部门code(兼容后端返回)
  712. selfCheckFrequency?: number | string; // 自查频次:0=每日 1=每周 2=每月 3=每季度 4=每半年 5=每年
  713. responsibleDeptExecGroupName?: string; // 主责部门执行人所属分组名称
  714. responsibleDeptExecGroupCode?: string; // 主责部门执行人所属分组code
  715. responsibleDeptPersonName?: string; // 主责部门责任人名称
  716. responsibleDeptPersonCode?: string; // 主责部门责任人code
  717. safetyEmergencyDeptName?: string; // 安全应急部门名称
  718. safetyEmergencyDeptCode?: string; // 安全应急部门code
  719. safetyEmergencyCheckFrequency?: number | string; // 安全应急部检查频次
  720. safetyEmergencyExecGroupName?: string; // 安全应急部执行人所属分组名称
  721. safetyEmergencyExecGroupCode?: string; // 安全应急部执行人所属分组code
  722. safetyEmergencyPersonName?: string; // 安全应急部责任人名称
  723. safetyEmergencyPersonCode?: string; // 安全应急部责任人code
  724. hospitalLeaderDeptName?: string; // 院领导部门名称
  725. hospitalLeaderDeptCode?: string; // 院领导部门code
  726. hospitalLeaderCheckFrequency?: number | string; // 院领导检查频次
  727. hospitalLeaderExecGroupName?: string; // 院领导执行人所属分组名称
  728. hospitalLeaderExecGroupCode?: string; // 院领导执行人所属分组code
  729. hospitalLeaderPersonName?: string; // 院领导责任人名称
  730. hospitalLeaderPersonCode?: string; // 院领导责任人code
  731. categoryName?: string; // 检查单模版类别名称
  732. categoryCode?: string; // 检查单模版类别 code
  733. checklistTemplateName?: string; // 检查单模版名称
  734. checkKeyContent?: string; // 检查重点内容
  735. needOverallDesc?: number | string; // 是否需要整体检查情况描述:0=否 1=是
  736. needSigneeSign?: number | string; // 是否需要被检查人签字:0=否 1=是
  737. planStartTime?: string; // 计划开始时间
  738. planEndTime?: string; // 计划结束时间
  739. isDeleted?: number | string; // 软删除:0=未删除,大于0(时间戳)=已删除
  740. createdAt?: string; // 创建时间
  741. updatedAt?: string; // 更新时间
  742. /** 兼容旧字段名 */
  743. responsibleDept?: string;
  744. responsibleDeptExecGroup?: string;
  745. responsibleDeptPerson?: string;
  746. safetyEmergencyDept?: string;
  747. safetyEmergencyExecGroup?: string;
  748. safetyEmergencyPerson?: string;
  749. hospitalLeaderDept?: string;
  750. hospitalLeaderExecGroup?: string;
  751. hospitalLeaderPerson?: string;
  752. [key: string]: unknown;
  753. }
  754. /** UI 使用的区域检查计划记录格式(与表格、表单一致) */
  755. export interface AreaCheckPlanRecord {
  756. id?: number;
  757. checkVenue?: string;
  758. status?: AreaCheckPlanStatus;
  759. venueCategoryName?: string;
  760. planName?: string;
  761. primaryResponsibleDeptName?: string;
  762. primaryResponsibleDeptCode?: string;
  763. selfCheckFrequency?: string;
  764. mainDeptExecutorGroupName?: string;
  765. mainDeptExecGroupCode?: string;
  766. mainDeptResponsiblePerson?: string;
  767. mainDeptResponsiblePersonCode?: string;
  768. safetyEmergencyDeptName?: string;
  769. safetyEmergencyDeptCode?: string;
  770. safetyEmergencyCheckFrequency?: string;
  771. safetyEmergencyExecutorGroupName?: string;
  772. safetyEmergencyExecGroupCode?: string;
  773. safetyEmergencyResponsiblePerson?: string;
  774. safetyEmergencyPersonCode?: string;
  775. hospitalLeaderDeptName?: string;
  776. hospitalLeaderDeptCode?: string;
  777. hospitalLeaderCheckFrequency?: string;
  778. hospitalLeaderExecutorGroupName?: string;
  779. hospitalLeaderExecGroupCode?: string;
  780. hospitalLeaderResponsiblePerson?: string;
  781. hospitalLeaderPersonCode?: string;
  782. checkKeyContent?: string;
  783. categoryName?: string;
  784. categoryCode?: string;
  785. checklistTemplateName?: string;
  786. needOverallDesc?: boolean;
  787. needSigneeSign?: boolean;
  788. planStartTime?: string;
  789. planEndTime?: string;
  790. isDeleted?: number | string;
  791. createdAt?: string;
  792. updatedAt?: string;
  793. [key: string]: unknown;
  794. }
  795. /** 后端返回格式转 UI 格式,供调用方使用(优先 *Name,兼容旧 *Dept/*Person) */
  796. export function mapAreaCheckPlanApiRecordToUi(api: AreaCheckPlanManageApiRecord | null | undefined): AreaCheckPlanRecord {
  797. if (!api) return {};
  798. const toBool = (v: number | string | undefined) => (v === 1 || v === '1' ? true : v === 0 || v === '0' ? false : undefined);
  799. const toFreq = (v: number | string | undefined) => {
  800. if (v === undefined || v === null || v === '') return undefined;
  801. const n = typeof v === 'number' ? v : parseInt(String(v), 10);
  802. return FREQUENCY_TO_LABEL[n] ?? String(v);
  803. };
  804. return {
  805. id: api.id,
  806. planName: api.areaCheckPlanName,
  807. checkVenue: api.checkPlace,
  808. createdPersonName: api.createdPersonName,
  809. venueCategoryName: api.checkPlaceCategory ?? api.checkCategory,
  810. status: api.status as AreaCheckPlanStatus | undefined,
  811. primaryResponsibleDeptName: api.primaryResponsibleDeptName ?? api.responsibleDeptName ?? api.responsibleDept,
  812. primaryResponsibleDeptCode: api.primaryResponsibleDeptCode ?? api.responsibleDeptCode,
  813. selfCheckFrequency: toFreq(api.selfCheckFrequency),
  814. mainDeptExecutorGroupName: api.responsibleDeptExecGroupName ?? api.responsibleDeptExecGroup,
  815. mainDeptExecGroupCode: api.responsibleDeptExecGroupCode,
  816. mainDeptResponsiblePerson: api.responsibleDeptPersonName ?? api.responsibleDeptPerson,
  817. mainDeptResponsiblePersonCode: api.responsibleDeptPersonCode,
  818. safetyEmergencyDeptName: api.safetyEmergencyDeptName ?? api.safetyEmergencyDept,
  819. safetyEmergencyDeptCode: api.safetyEmergencyDeptCode,
  820. safetyEmergencyCheckFrequency: toFreq(api.safetyEmergencyCheckFrequency),
  821. safetyEmergencyExecutorGroupName: api.safetyEmergencyExecGroupName ?? api.safetyEmergencyExecGroup,
  822. safetyEmergencyResponsiblePerson: api.safetyEmergencyPersonName ?? api.safetyEmergencyPerson,
  823. safetyEmergencyExecGroupCode: api.safetyEmergencyExecGroupCode,
  824. safetyEmergencyPersonCode: api.safetyEmergencyPersonCode,
  825. hospitalLeaderDeptName: api.hospitalLeaderDeptName ?? api.hospitalLeaderDept,
  826. hospitalLeaderDeptCode: api.hospitalLeaderDeptCode,
  827. hospitalLeaderCheckFrequency: toFreq(api.hospitalLeaderCheckFrequency),
  828. hospitalLeaderExecutorGroupName: api.hospitalLeaderExecGroupName ?? api.hospitalLeaderExecGroup,
  829. hospitalLeaderResponsiblePerson: api.hospitalLeaderPersonName ?? api.hospitalLeaderPerson,
  830. hospitalLeaderExecGroupCode: api.hospitalLeaderExecGroupCode,
  831. hospitalLeaderPersonCode: api.hospitalLeaderPersonCode,
  832. categoryName: api.categoryName,
  833. categoryCode: api.categoryCode,
  834. checklistTemplateName: api.checklistTemplateName,
  835. checkKeyContent: api.checkKeyContent,
  836. needOverallDesc: toBool(api.needOverallDesc),
  837. needSigneeSign: toBool(api.needSigneeSign),
  838. planStartTime: api.planStartTime,
  839. planEndTime: api.planEndTime,
  840. isDeleted: api.isDeleted,
  841. createdAt: api.createdAt,
  842. updatedAt: api.updatedAt,
  843. primaryResponsibleDeptExecGroupName: api.primaryResponsibleDeptExecGroupName,
  844. primaryResponsibleDeptPersonName: api.primaryResponsibleDeptPersonName,
  845. safetyEmergencyExecGroupName: api.safetyEmergencyExecGroupName,
  846. safetyEmergencyPersonName: api.safetyEmergencyPersonName,
  847. hospitalLeaderExecGroupName: api.hospitalLeaderExecGroupName,
  848. hospitalLeaderPersonName: api.hospitalLeaderPersonName,
  849. businessWork: api.businessWork,
  850. };
  851. }
  852. function uiRecordToApi(ui: AreaCheckPlanRecord & { id?: number }): AreaCheckPlanManageApiRecord {
  853. const toFreqNum = (v: string | undefined) => (v ? LABEL_TO_FREQUENCY[v] ?? undefined : undefined);
  854. const toNum = (v: boolean | undefined) => (v === true ? 1 : v === false ? 0 : undefined);
  855. const code = (ui as Record<string, unknown>);
  856. const primaryResponsibleDeptCode = (code.primaryResponsibleDeptCode as string | undefined)
  857. ?? (code.primaryResponsibleDeptId != null ? String(code.primaryResponsibleDeptId) : undefined);
  858. return {
  859. id: ui.id,
  860. areaCheckPlanName: ui.planName,
  861. checkPlace: ui.checkVenue,
  862. checkPlaceCategory: ui.venueCategoryName,
  863. primaryResponsibleDeptName: ui.primaryResponsibleDeptName,
  864. primaryResponsibleDeptCode,
  865. selfCheckFrequency: toFreqNum(ui.selfCheckFrequency),
  866. responsibleDeptExecGroupName: ui.mainDeptExecutorGroupName,
  867. responsibleDeptExecGroupCode: code.mainDeptExecGroupCode as string | undefined,
  868. responsibleDeptPersonName: ui.mainDeptResponsiblePerson,
  869. responsibleDeptPersonCode: code.mainDeptResponsiblePersonCode as string | undefined,
  870. safetyEmergencyDeptName: ui.safetyEmergencyDeptName,
  871. // 若 safetyEmergencyDeptCode 为空,则回退使用 safetyEmergencyDeptId 作为 code
  872. safetyEmergencyDeptCode: (code.safetyEmergencyDeptCode as string | undefined)
  873. ?? (code.safetyEmergencyDeptId != null ? String(code.safetyEmergencyDeptId) : undefined),
  874. safetyEmergencyCheckFrequency: toFreqNum(ui.safetyEmergencyCheckFrequency),
  875. safetyEmergencyExecGroupName: ui.safetyEmergencyExecutorGroupName,
  876. safetyEmergencyExecGroupCode: code.safetyEmergencyExecGroupCode as string | undefined,
  877. safetyEmergencyPersonName: ui.safetyEmergencyResponsiblePerson,
  878. safetyEmergencyPersonCode: code.safetyEmergencyPersonCode as string | undefined,
  879. hospitalLeaderDeptName: ui.hospitalLeaderDeptName,
  880. // 若 hospitalLeaderDeptCode 为空,则回退使用 hospitalLeaderDeptId 作为 code
  881. hospitalLeaderDeptCode: (code.hospitalLeaderDeptCode as string | undefined)
  882. ?? (code.hospitalLeaderDeptId != null ? String(code.hospitalLeaderDeptId) : undefined),
  883. hospitalLeaderCheckFrequency: toFreqNum(ui.hospitalLeaderCheckFrequency),
  884. hospitalLeaderExecGroupName: ui.hospitalLeaderExecutorGroupName,
  885. hospitalLeaderExecGroupCode: code.hospitalLeaderExecGroupCode as string | undefined,
  886. hospitalLeaderPersonName: ui.hospitalLeaderResponsiblePerson,
  887. hospitalLeaderPersonCode: code.hospitalLeaderPersonCode as string | undefined,
  888. categoryName: ui.categoryName,
  889. categoryCode: code.categoryCode as string | undefined,
  890. checklistTemplateName: ui.checklistTemplateName,
  891. checkKeyContent: ui.checkKeyContent,
  892. needOverallDesc: toNum(ui.needOverallDesc),
  893. needSigneeSign: toNum(ui.needSigneeSign),
  894. planStartTime: ui.planStartTime,
  895. planEndTime: ui.planEndTime,
  896. status: ui.status as number | undefined,
  897. };
  898. }
  899. export interface AreaCheckPlanQuery {
  900. keyword?: string;
  901. /** 与 queryParam.searchKey 一致,搜索检查场所/计划名称 */
  902. searchKey?: string;
  903. areaCheckPlanName?: string;
  904. status?: AreaCheckPlanStatus | '';
  905. venueCategory?: string;
  906. planStartTime?: string;
  907. planEndTime?: string;
  908. /** 计划日期范围-开始,与 queryParam.startDate 一致 */
  909. startDate?: string;
  910. /** 计划日期范围-结束,与 queryParam.endDate 一致 */
  911. endDate?: string;
  912. }
  913. /** 分页查询请求体(后端 queryParam 格式) */
  914. interface AreaCheckPlanManagePageReq {
  915. searchKey?: string;
  916. areaCheckPlanName?: string;
  917. status?: string | number;
  918. checkPlaceCategory?: string;
  919. startDate?: string;
  920. endDate?: string;
  921. }
  922. interface AreaCheckPlanManagePageQuery {
  923. pageNumber: number;
  924. pageSize: number;
  925. queryParam?: AreaCheckPlanManagePageReq;
  926. }
  927. interface AreaCheckPlanManagePageRes {
  928. records?: AreaCheckPlanManageApiRecord[]; // 当前页记录列表
  929. pageNumber?: number; // 页号,默认值为1
  930. pageSize?: number; // 每页数量
  931. maxPageSize?: number; // 最大每页数量
  932. totalPage?: number; // 总页数
  933. totalRow?: number; // 总行数
  934. optimizeCountQuery?: boolean; // 是否优化计数查询
  935. }
  936. function buildPageQuery(uiQuery: { pageNumber: number; pageSize: number; queryParam?: AreaCheckPlanQuery }): AreaCheckPlanManagePageQuery {
  937. const q = uiQuery.queryParam ?? {};
  938. return {
  939. pageNumber: uiQuery.pageNumber ?? 1,
  940. pageSize: uiQuery.pageSize ?? 10,
  941. queryParam: {
  942. searchKey: q.searchKey ?? q.keyword ?? undefined,
  943. areaCheckPlanName: q.areaCheckPlanName ?? undefined,
  944. status: q.status === '' ? undefined : (q.status as number),
  945. checkPlaceCategory: q.venueCategory ?? undefined,
  946. startDate: q.startDate ?? q.planStartTime ?? undefined,
  947. endDate: q.endDate ?? q.planEndTime ?? undefined,
  948. id: q.id ?? undefined,
  949. },
  950. };
  951. }
  952. const ADMIN_BASE = 'areaCheckPlanManageAdmin';
  953. const DEPT_BASE = 'areaCheckPlanManageDept';
  954. /** 分页查询区域检查计划列表(管理员) */
  955. export function queryAreaCheckPlanManagePage(query: { pageNumber: number; pageSize: number; queryParam?: AreaCheckPlanQuery }) {
  956. return http.request<AreaCheckPlanManagePageRes>({
  957. url: `${ADMIN_BASE}/queryAreaCheckPlanManagePage`,
  958. method: 'post',
  959. data: buildPageQuery(query),
  960. });
  961. }
  962. /** 分页查询区域检查计划列表(部门) */
  963. export function queryAreaCheckPlanManageDeptPage(query: Parameters<typeof queryAreaCheckPlanManagePage>[0]) {
  964. return http.request<AreaCheckPlanManagePageRes>({
  965. url: `${DEPT_BASE}/queryAreaCheckPlanManagePage`,
  966. method: 'post',
  967. data: buildPageQuery(query),
  968. });
  969. }
  970. /** 删除区域检查计划(管理员) */
  971. export function deleteAreaCheckPlanManage(id: number) {
  972. return http.request({
  973. url: `${ADMIN_BASE}/deleteAreaCheckPlanManage?id=${id}`,
  974. method: 'delete',
  975. });
  976. }
  977. /** 删除区域检查计划(部门)- 若部门无此接口则复用管理员 */
  978. export function deleteAreaCheckPlanManageDept(id: number) {
  979. return http.request({
  980. url: `${DEPT_BASE}/deleteAreaCheckPlanManage?id=${id}`,
  981. method: 'delete',
  982. });
  983. }
  984. /** 新增区域检查计划(管理员) */
  985. export function saveAreaCheckPlanManage(data: AreaCheckPlanRecord) {
  986. return http.request({
  987. url: `${ADMIN_BASE}/saveAreaCheckPlanManage`,
  988. method: 'post',
  989. data: uiRecordToApi(data),
  990. });
  991. }
  992. /** 更新区域检查计划(管理员) */
  993. export function updateAreaCheckPlanManage(data: AreaCheckPlanRecord & { id: number }) {
  994. return http.request({
  995. url: `${ADMIN_BASE}/updateAreaCheckPlanManage`,
  996. method: 'put',
  997. data: uiRecordToApi(data),
  998. });
  999. }
  1000. /** 新增区域检查计划(部门) */
  1001. export function saveAreaCheckPlanManageDept(data: AreaCheckPlanRecord) {
  1002. return http.request({
  1003. url: `${DEPT_BASE}/saveAreaCheckPlanManage`,
  1004. method: 'post',
  1005. data: uiRecordToApi(data),
  1006. });
  1007. }
  1008. /** 更新区域检查计划(部门) */
  1009. export function updateAreaCheckPlanManageDept(data: AreaCheckPlanRecord & { id: number }) {
  1010. return http.request({
  1011. url: `${DEPT_BASE}/updateAreaCheckPlanManage`,
  1012. method: 'put',
  1013. data: uiRecordToApi(data),
  1014. });
  1015. }
  1016. /** 根据ID查询区域检查计划详情(管理员) */
  1017. export function queryAreaCheckPlanManageDetail(id: number) {
  1018. return http.request<AreaCheckPlanManageApiRecord>({
  1019. url: `${ADMIN_BASE}/queryAreaCheckPlanManageDetail?id=${id}`,
  1020. method: 'post',
  1021. // params: { id },
  1022. });
  1023. }
  1024. /** 根据ID查询区域检查计划详情(部门) */
  1025. export function queryAreaCheckPlanManageDeptDetail(id: number) {
  1026. return http.request<AreaCheckPlanManageApiRecord>({
  1027. url: `${DEPT_BASE}/queryAreaCheckPlanManageDetail?id=${id}`,
  1028. method: 'post',
  1029. // params: { id },
  1030. });
  1031. }
  1032. /** 下发区域检查计划至部门(sandAreaCheckPlanToDep)请求体:责任部门、责任部门人员分组使用指定字段名 */
  1033. export interface SendAreaCheckPlanToDepReq {
  1034. id: number;
  1035. /** 责任部门名称(多选逗号拼接) */
  1036. responsibleDeptName?: string;
  1037. /** 责任部门 code(多选逗号拼接) */
  1038. responsibleDeptCode?: string;
  1039. /** 责任部门人员分组名称 */
  1040. responsibleDeptPersonnelGroupName?: string;
  1041. /** 责任部门人员分组 code */
  1042. responsibleDeptPersonnelGroupCode?: string;
  1043. safetyEmergencyDeptName?: string;
  1044. safetyEmergencyDeptId?: number;
  1045. safetyEmergencyExecutorGroupName?: string;
  1046. safetyEmergencyExecGroupCode?: string;
  1047. hospitalLeaderDeptName?: string;
  1048. hospitalLeaderDeptId?: number;
  1049. hospitalLeaderExecutorGroupName?: string;
  1050. hospitalLeaderExecGroupCode?: string;
  1051. planStartTime?: string;
  1052. planEndTime?: string;
  1053. needOverallDesc?: boolean;
  1054. needInspectedSign?: boolean;
  1055. [key: string]: unknown;
  1056. }
  1057. /** 下发区域检查计划至部门(管理员) */
  1058. export function sendAreaCheckPlanToDep(data: SendAreaCheckPlanToDepReq) {
  1059. return http.request({
  1060. url: `areaCheckPlanManageAdmin/sandAreaCheckPlanToDep`,
  1061. method: 'post',
  1062. data,
  1063. });
  1064. }
  1065. /** 区域检查计划管理(管理员) - 检查记录下入账至隐患台账 */
  1066. export interface SandAreaCheckRecordToHiddenDangerReq {
  1067. /** 主键ID,自增 */
  1068. id?: number;
  1069. /** 区域检查记录ID(与 sourceRefId 一致,用于显式标记来源记录) */
  1070. areaCheckRecordId: number;
  1071. /** 数据来源:1员工上报 2台账新增 3台账导入 4区域检查 */
  1072. sourceType: number;
  1073. /** 来源记录ID,例如员工上报ID/导入批次ID/检查记录ID */
  1074. sourceRefId: number;
  1075. /** 隐患编号 */
  1076. dangerCode?: string;
  1077. /** 隐患问题类别ID */
  1078. typeId?: number;
  1079. /** 部门ID列表(扣分部门选择),逗号分隔 */
  1080. departmentIds?: string;
  1081. /** 隐患问题 */
  1082. dangerProblem: string;
  1083. /** 隐患原因ID */
  1084. reasonId?: number;
  1085. /** 任务来源 */
  1086. taskSource?: string;
  1087. /** 整改要求 */
  1088. rectificationRequirement?: string;
  1089. /** 整改期限(yyyy-MM-dd) */
  1090. rectificationDeadline?: string;
  1091. /** 整改责任部门ID列表,逗号分隔 */
  1092. rectificationDepartmentIds?: string;
  1093. /** 整改负责人 */
  1094. rectificationResponsiblePerson?: string;
  1095. /** 整改负责人ID,逗号分隔 */
  1096. rectificationResponsibleIds?: string;
  1097. /** 复查人员所属部门ID */
  1098. reviewDepartmentId?: number;
  1099. /** 复查人员ID */
  1100. reviewPersonId?: number;
  1101. /** 复查人员姓名 */
  1102. reviewPersonName?: string;
  1103. /** 举一反三是否推送,1-是,0-否 */
  1104. isDrawLessonsPush?: number;
  1105. /** 举一反三内容 */
  1106. drawLessonsContent?: string;
  1107. /** 举一反三责任部门ID列表,逗号分隔 */
  1108. drawLessonsDepartmentIds?: string;
  1109. /** 举一反三时限(yyyy-MM-dd) */
  1110. drawLessonsDeadline?: string;
  1111. /** 举一反三记录ID */
  1112. associationOtId?: number;
  1113. /** 隐患状态ID */
  1114. statusId?: number;
  1115. /** 当前流程节点 */
  1116. currentNode?: string;
  1117. /** 创建人ID */
  1118. creatorId?: number;
  1119. /** 创建人名称 */
  1120. creatorName?: string;
  1121. /** 创建时间(yyyy-MM-dd HH:mm:ss) */
  1122. createdAt?: string;
  1123. /** 更新时间(yyyy-MM-dd HH:mm:ss) */
  1124. updatedAt?: string;
  1125. /** 整改完成情况 */
  1126. rectificationCompletionStatus?: string;
  1127. /** 整改完成时间(yyyy-MM-dd) */
  1128. rectificationCompletionTime?: string;
  1129. /** 附件,通常为URL/ID列表,逗号分隔 */
  1130. attachments?: string;
  1131. /** 软删除:0-未删除,大于0(时间戳)-已删除 */
  1132. isDeleted?: number;
  1133. }
  1134. export function sandAreaCheckRecordToProductionHiddenDanger(data: SandAreaCheckRecordToHiddenDangerReq) {
  1135. return http.request({
  1136. url: `${ADMIN_BASE}/sandAreaCheckRecordToProductionHiddenDanger`,
  1137. method: 'post',
  1138. data,
  1139. });
  1140. }
  1141. /** 作废接口(管理员):/areaCheckPlanManageAdmin/updateStatusAreaCheckPlanManage POST,仅需传 id */
  1142. export function cancelAreaCheckPlanManage(id: number) {
  1143. return http.request({
  1144. url: `${ADMIN_BASE}/updateStatusAreaCheckPlanManage?id=${id}`,
  1145. method: 'delete',
  1146. });
  1147. }
  1148. /** 查询区域检查计划关联的检查记录分页(管理员)- 与接口文档 DTO 对齐 */
  1149. export interface AreaCheckPlanDetailRecord {
  1150. id?: number;
  1151. areaPlanId?: number;
  1152. checkTime?: string;
  1153. checkPersonName?: string;
  1154. checkPersonCode?: string;
  1155. checkPerson?: string;
  1156. checkPlaceCategory?: string;
  1157. checkPlaceCategoryCode?: string;
  1158. checkPlace?: string;
  1159. checkAddress?: string;
  1160. checkItemTotal?: number;
  1161. qualifiedItemNum?: number;
  1162. unqualifiedItemNum?: number;
  1163. checkedCompanyName?: string;
  1164. checkedCompanyCode?: string;
  1165. checkedCompany?: string;
  1166. overallCheckDesc?: string;
  1167. checkedPersonSign?: string;
  1168. }
  1169. export function queryAreaCheckPlanDetailPage(planId: number, query: { pageNumber: number; pageSize: number; queryParam?: AreaCheckPlanQuery }) {
  1170. const body = buildPageQuery(query);
  1171. return http.request<AreaCheckPlanManagePageRes & { records?: AreaCheckPlanDetailRecord[] }>({
  1172. url: `${ADMIN_BASE}/queryAreaCheckPlanDetailPage`,
  1173. method: 'post',
  1174. params: { id: planId },
  1175. data: body,
  1176. });
  1177. }
  1178. /** 查询区域检查计划关联的检查记录分页(部门) */
  1179. export function queryAreaCheckPlanDetailDeptPage(planId: number, query: Parameters<typeof queryAreaCheckPlanDetailPage>[1]) {
  1180. const body = buildPageQuery(query);
  1181. return http.request({
  1182. url: `${DEPT_BASE}/queryAreaCheckPlanDetailPage`,
  1183. method: 'post',
  1184. params: { id: planId },
  1185. data: body,
  1186. });
  1187. }
  1188. /** 删除区域检查计划记录(管理员) */
  1189. export function deleteAreaCheckPlanDetail(id: number) {
  1190. return http.request({
  1191. url: `${ADMIN_BASE}/deleteAreaCheckPlanDetail?id=${id}`,
  1192. method: 'delete',
  1193. });
  1194. }
  1195. /** 删除区域检查计划记录(部门) */
  1196. export function deleteAreaCheckPlanDetailDept(id: number) {
  1197. return http.request({
  1198. url: `${DEPT_BASE}/deleteAreaCheckPlanDetail?id=${id}`,
  1199. method: 'delete',
  1200. });
  1201. }
  1202. /** 查看区域检查计划记录详情(含 areaCheckRecords 子项,与接口文档 AreaCheckPlanDetailRes 对齐) */
  1203. export interface AreaCheckRecordDetail {
  1204. id?: number;
  1205. areaPlanId?: number;
  1206. checkTime?: string;
  1207. checkPersonName?: string;
  1208. checkPersonCode?: string;
  1209. checkPerson?: string;
  1210. checkPlaceCategory?: string;
  1211. checkPlaceCategoryCode?: string;
  1212. checkPlace?: string;
  1213. checkAddress?: string;
  1214. checkItemTotal?: number;
  1215. qualifiedItemNum?: number;
  1216. unqualifiedItemNum?: number;
  1217. checkedCompanyName?: string;
  1218. checkedCompanyCode?: string;
  1219. checkedCompany?: string;
  1220. overallCheckDesc?: string;
  1221. checkedPersonSign?: string;
  1222. areaCheckRecords?: Array<{
  1223. id?: number;
  1224. checkPlanId?: number;
  1225. checkContent?: string;
  1226. checkStandard?: string;
  1227. checkResult?: string;
  1228. checkProblem?: string;
  1229. isDeleted?: number;
  1230. createdAt?: string;
  1231. updatedAt?: string;
  1232. }>;
  1233. isDeleted?: number;
  1234. createdAt?: string;
  1235. updatedAt?: string;
  1236. }
  1237. export function queryAreaCheckRecord(id: number) {
  1238. return http.request<AreaCheckRecordDetail>({
  1239. url: `${ADMIN_BASE}/queryAreaCheckRecord?id=${id}`,
  1240. method: 'post',
  1241. // params: { id },
  1242. });
  1243. }
  1244. /** 查看区域检查计划记录详情(部门) */
  1245. export function queryAreaCheckRecordDept(id: number) {
  1246. return http.request<AreaCheckRecordDetail>({
  1247. url: `${DEPT_BASE}/queryAreaCheckRecord?id=${id}`,
  1248. method: 'post',
  1249. // params: { id },
  1250. });
  1251. }
  1252. /** 区域检查计划管理(部门) - 新增检查日志时的检查明细模板 item */
  1253. export interface AreaCheckRecordTemplateItem {
  1254. id?: number; // 主键ID,自增
  1255. checkPlanId?: number; // 关联检查计划ID(外键,对应 area_check_plan_detail.id)
  1256. checkContent?: string; // 检查内容
  1257. checkStandard?: string; // 检查标准
  1258. checkResult?: string; // 检查结果:合格/不合格
  1259. checkProblem?: string; // 检查发现问题:目前不存在问题/隐患问题未整改到位
  1260. isSand?: number; // 0-未入账,1-已入账
  1261. isDeleted?: number; // 0-未删除,大于0(时间戳)-已删除
  1262. createdAt?: string; // 创建时间
  1263. updatedAt?: string; // 更新时间
  1264. }
  1265. /** 区域检查计划管理(部门) - 新增检查日志的检查明细模板列表 */
  1266. export function queryAreaCheckRecordTemplateDept(id: number) {
  1267. return http.request<AreaCheckRecordTemplateItem[]>({
  1268. url: `${DEPT_BASE}/queryAreaCheckRecordTemplate?id=${id}`,
  1269. method: 'post',
  1270. });
  1271. }
  1272. /** 区域检查计划管理(部门) - 新增检查日志提交体 */
  1273. export interface SaveAreaCheckPlanDetailDeptReq {
  1274. areaPlanId: number; // 关联区域计划ID(外键对应 area_check_plan_manage.id)
  1275. checkTime: string; // 检查时间
  1276. checkPersonName: string; // 检查人员名称
  1277. checkPersonCode?: string; // 检查人员code
  1278. checkAddress: string; // 检查地点
  1279. overallCheckDesc: string; // 整体检查情况描述(300字)
  1280. checkedPersonSign?: string; // 被检查人签字(PDF文件地址/KEY)
  1281. areaCheckRecords: Array<{
  1282. id?: number;
  1283. checkPlanId?: number;
  1284. checkContent?: string;
  1285. checkStandard?: string;
  1286. checkResult?: string;
  1287. checkProblem?: string;
  1288. isSand?: number;
  1289. isDeleted?: number;
  1290. createdAt?: string;
  1291. updatedAt?: string;
  1292. }>;
  1293. }
  1294. /** 区域检查计划管理(部门) - 新增检查日志提交 */
  1295. export function saveAreaCheckPlanDetailDept(data: SaveAreaCheckPlanDetailDeptReq) {
  1296. return http.request({
  1297. url: `${DEPT_BASE}/saveAreaCheckPlanDetailDept`,
  1298. method: 'post',
  1299. data,
  1300. });
  1301. }
  1302. /** 不合格项分页查询请求 queryParam(与接口文档 UnqualifiedItemNumPageReq 对齐) */
  1303. export interface UnqualifiedItemNumPageQuery {
  1304. id?: number;
  1305. checkPlace?: string;
  1306. checkProblem?: string;
  1307. checkTime?: string;
  1308. }
  1309. /** 不合格项分页查询单条记录 */
  1310. export interface UnqualifiedItemNumRecord {
  1311. id?: number;
  1312. checkPlace?: string;
  1313. checkProblem?: string;
  1314. checkTime?: string;
  1315. isSand?: number; // 0-未入账 1-已入账
  1316. }
  1317. /** 分页查询记录不合格数据(管理员) */
  1318. export function queryUnqualifiedItemNumPage(query: {
  1319. pageNumber: number;
  1320. pageSize: number;
  1321. queryParam?: UnqualifiedItemNumPageQuery;
  1322. }) {
  1323. return http.request<{
  1324. records?: UnqualifiedItemNumRecord[];
  1325. totalRow?: number;
  1326. totalPage?: number;
  1327. pageNumber?: number;
  1328. pageSize?: number;
  1329. }>({
  1330. url: `${ADMIN_BASE}/queryUnqualifiedItemNumPage`,
  1331. method: 'post',
  1332. data: {
  1333. pageNumber: query.pageNumber ?? 1,
  1334. pageSize: query.pageSize ?? 10,
  1335. queryParam: query.queryParam ?? {},
  1336. },
  1337. });
  1338. }
  1339. /** 分页查询记录不合格数据(部门) */
  1340. export function queryUnqualifiedItemNumDeptPage(query: Parameters<typeof queryUnqualifiedItemNumPage>[0]) {
  1341. return http.request<{
  1342. records?: UnqualifiedItemNumRecord[];
  1343. totalRow?: number;
  1344. totalPage?: number;
  1345. pageNumber?: number;
  1346. pageSize?: number;
  1347. }>({
  1348. url: `${DEPT_BASE}/queryUnqualifiedItemNumPage`,
  1349. method: 'post',
  1350. data: {
  1351. pageNumber: query.pageNumber ?? 1,
  1352. pageSize: query.pageSize ?? 10,
  1353. queryParam: query.queryParam ?? {},
  1354. },
  1355. });
  1356. }
  1357. /** 兼容旧命名 - 分页查询 */
  1358. export function queryAreaCheckPlanPage(query: Parameters<typeof queryAreaCheckPlanManagePage>[0]) {
  1359. return queryAreaCheckPlanManagePage(query);
  1360. }
  1361. /** 兼容旧命名 */
  1362. export function deleteAreaCheckPlan(id: number) {
  1363. return deleteAreaCheckPlanManage(id);
  1364. }
  1365. /** 兼容旧命名 - 下发(新接口为 sendAreaCheckPlanToDep,需传入完整计划数据) */
  1366. export function issueAreaCheckPlan(data: { planId?: number; id?: number } & Partial<AreaCheckPlanRecord>) {
  1367. const id = data.id ?? data.planId;
  1368. if (!id) throw new Error('计划ID必填');
  1369. return sendAreaCheckPlanToDep({ ...data, id } as AreaCheckPlanRecord & { id: number });
  1370. }
  1371. /** 兼容旧命名:内部直接调用新的作废接口 */
  1372. export function cancelAreaCheckPlan(id: number) {
  1373. return cancelAreaCheckPlanManage(id);
  1374. }
  1375. /** 兼容旧命名 */
  1376. export function queryAreaCheckPlanById(id: number) {
  1377. return queryAreaCheckPlanManageDetail(id);
  1378. }
  1379. /** 兼容旧命名 */
  1380. export function saveAreaCheckPlan(data: AreaCheckPlanRecord) {
  1381. return saveAreaCheckPlanManage(data);
  1382. }
  1383. /** 兼容旧命名 */
  1384. export function updateAreaCheckPlan(data: AreaCheckPlanRecord & { id: number }) {
  1385. return updateAreaCheckPlanManage(data);
  1386. }
  1387. /**
  1388. * 导出区域检查计划清单
  1389. * @returns Promise<any> 导出的区域检查计划清单数据
  1390. */
  1391. export function exportAreaCheckPlanList (params: AreaCheckPlanQuery) {
  1392. return http.request({
  1393. url: '/areaCheckPlanManageDept/exportAreaCheckPlan',
  1394. method: 'post',
  1395. responseType: 'blob',
  1396. data: params,
  1397. }, {
  1398. isTransformResponse: false,
  1399. });
  1400. }
  1401. /**
  1402. * 导出区域检查计划清单
  1403. * @returns Promise<any> 导出的区域检查计划清单数据
  1404. */
  1405. export function exportAreaCheckInspectionRecord (params: AreaCheckPlanQuery) {
  1406. return http.request({
  1407. url: '/areaCheckPlanManageDept/exportAreaCheckPlanDetail',
  1408. method: 'post',
  1409. responseType: 'blob',
  1410. data: params,
  1411. }, {
  1412. isTransformResponse: false,
  1413. });
  1414. }
  1415. /**
  1416. * 导出区域检查计划管理
  1417. * @returns Promise<any> 导出的区域检查计划管理数据
  1418. */
  1419. export function exportAreaCheckPlanAdministration (params: AreaCheckPlanQuery) {
  1420. return http.request({
  1421. url: '/areaCheckPlanManageAdmin/exportAreaCheckPlan',
  1422. method: 'post',
  1423. responseType: 'blob',
  1424. data: params,
  1425. }, {
  1426. isTransformResponse: false,
  1427. });
  1428. }
  1429. /**
  1430. * 导出区域检查计划管理
  1431. * @returns Promise<any> 导出的区域检查计划管理数据
  1432. */
  1433. export function exportInspectionRecordTow (params: AreaCheckPlanQuery) {
  1434. return http.request({
  1435. url: '/areaCheckPlanManageAdmin/exportAreaCheckPlanLog',
  1436. method: 'post',
  1437. responseType: 'blob',
  1438. data: params,
  1439. }, {
  1440. isTransformResponse: false,
  1441. });
  1442. }
  1443. /** 检查模板下载 */
  1444. export function checklistTemplateDownload () {
  1445. return http.request({
  1446. url: '/areaCheckPlanManageAdmin/exportimportCheckListTemplate',
  1447. method: 'get',
  1448. responseType: 'blob',
  1449. }, {
  1450. isTransformResponse: false,
  1451. });
  1452. }
  1453. /** 检查模板导出 */
  1454. export function checklistHandleeTemplateDownload (id: number) {
  1455. return http.request({
  1456. url: '/areaCheckPlanManageAdmin/exportCheckList?id=' + id,
  1457. method: 'get',
  1458. responseType: 'blob',
  1459. }, {
  1460. isTransformResponse: false,
  1461. });
  1462. }