index.ts 52 KB

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