index.ts 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337
  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. }
  591. /** 分页查询请求 - 响应含 pageNumber/pageSize/total/totalPage/records */
  592. interface ChecklistTemplatePageQuery {
  593. pageNumber?: number;
  594. pageSize?: number;
  595. queryParam?: ChecklistTemplateQuery;
  596. }
  597. interface ChecklistTemplatePageRes {
  598. pageNumber: number;
  599. pageSize: number;
  600. total: number;
  601. totalPage: number;
  602. records: ChecklistTemplatePageItem[];
  603. }
  604. /** 检查单模版实体(用于名称下拉等场景,后端返回 WebResult<List<ChecklistTemplate>>) */
  605. export type ChecklistTemplate = ChecklistTemplatePageItem;
  606. /** 一、查询检查单模版管理列表 */
  607. export function queryChecklistTemplateList(query: ChecklistTemplatePageQuery) {
  608. return http.request<ChecklistTemplatePageRes>({
  609. url: '/checklistTemplate/queryChecklistTemplateList',
  610. method: 'post',
  611. data: query,
  612. });
  613. }
  614. /** 查询检查单模版名称列表(区域检查计划管理-管理员-详情检查单模版名称下拉) */
  615. export function queryCheckListTemplateNameList() {
  616. // 后端说明:请求体空对象,请求方式 POST,返回 WebResult<List<ChecklistTemplate>>
  617. // 经过 http 拦截器转换后,这里拿到的就是 List<ChecklistTemplate>
  618. return http.request<ChecklistTemplate[]>({
  619. url: `${ADMIN_BASE}/queryCheckListTemplateNameList`,
  620. method: 'post',
  621. data: {},
  622. });
  623. }
  624. /** 二、删除检查单模版管理 */
  625. export function deleteChecklistTemplate(id: number) {
  626. return http.request({
  627. url: `/checklistTemplate/deleteChecklistTemplate?id=${id}`,
  628. method: 'delete',
  629. });
  630. }
  631. /** 三、删除检查单模版明细 */
  632. export function deleteChecklistTemplateItem(id: number) {
  633. return http.request({
  634. url: `/checklistTemplate/deleteChecklistTemplateItem?id=${id}`,
  635. method: 'delete',
  636. });
  637. }
  638. /** 四、编辑检查单模版管理 */
  639. export function updateChecklistTemplate(data: SaveChecklistTemplateReq) {
  640. return http.request<number>({
  641. url: '/checklistTemplate/updateChecklistTemplate',
  642. method: 'put',
  643. data,
  644. });
  645. }
  646. /** 五、新增检查单模版管理 */
  647. export function saveChecklistTemplate(data: Omit<SaveChecklistTemplateReq, 'id'>) {
  648. return http.request({
  649. url: '/checklistTemplate/saveChecklistTemplate',
  650. method: 'post',
  651. data,
  652. });
  653. }
  654. /** 六、查询检查单模版管理详情 */
  655. export function queryChecklistTemplateDetail(id: number) {
  656. return http.request<SaveChecklistTemplateReq>({
  657. url: `/checklistTemplate/queryChecklistTemplateDetail?id=${id}`,
  658. method: 'post',
  659. });
  660. }
  661. /** 七、批量导入检查单模板明细子表 */
  662. export function importChecklistTemplateItem(file: File, id: string | number) {
  663. const formData = new FormData();
  664. formData.append('file', file);
  665. formData.append('id', String(id));
  666. return http.request({
  667. url: '/checklistTemplate/importChecklistTemplateItem',
  668. method: 'post',
  669. data: formData,
  670. headers: {
  671. 'Content-Type': 'multipart/form-data',
  672. },
  673. });
  674. }
  675. // ==================== 区域检查计划管理 areaCheckPlanManage ====================
  676. // 接口基础路径:Admin /api/areaCheckPlanManageAdmin | Dept /api/areaCheckPlanManageDept
  677. /** 区域检查计划状态:0=未开始 1=进行中 2=已完成 3=已终止 */
  678. export type AreaCheckPlanStatus = 0 | 1 | 2 | 3;
  679. /** 检查频次映射:0=每日 1=每周 2=每月 3=每季度 4=每半年 5=每年 */
  680. const FREQUENCY_TO_LABEL: Record<number, string> = {
  681. 0: '每日',
  682. 1: '每周',
  683. 2: '每月',
  684. 3: '每季度',
  685. 4: '每半年',
  686. 5: '每年',
  687. };
  688. const LABEL_TO_FREQUENCY: Record<string, number> = {
  689. 每日: 0,
  690. 每周: 1,
  691. 每月: 2,
  692. 每季度: 3,
  693. 每半年: 4,
  694. 每年: 5,
  695. };
  696. /** 后端 API 返回的区域检查计划记录格式(与接口文档 DTO 对齐:*Name/*Code) */
  697. interface AreaCheckPlanManageApiRecord {
  698. id?: number; // 主键ID
  699. areaCheckPlanName?: string; // 区域检查计划名称
  700. checkPlace?: string; // 检查场所
  701. checkPlaceCategory?: string; // 检查场所所属类别
  702. checkCategory?: string; // 检查类别
  703. status?: number | string; // 状态:0=未开始 1=进行中 2=已完成 3=已终止
  704. responsibleDeptName?: string; // 主责部门名称
  705. responsibleDeptCode?: string; // 主责部门code
  706. selfCheckFrequency?: number | string; // 自查频次:0=每日 1=每周 2=每月 3=每季度 4=每半年 5=每年
  707. responsibleDeptExecGroupName?: string; // 主责部门执行人所属分组名称
  708. responsibleDeptExecGroupCode?: string; // 主责部门执行人所属分组code
  709. responsibleDeptPersonName?: string; // 主责部门责任人名称
  710. responsibleDeptPersonCode?: string; // 主责部门责任人code
  711. safetyEmergencyDeptName?: string; // 安全应急部门名称
  712. safetyEmergencyDeptCode?: string; // 安全应急部门code
  713. safetyEmergencyCheckFrequency?: number | string; // 安全应急部检查频次
  714. safetyEmergencyExecGroupName?: string; // 安全应急部执行人所属分组名称
  715. safetyEmergencyExecGroupCode?: string; // 安全应急部执行人所属分组code
  716. safetyEmergencyPersonName?: string; // 安全应急部责任人名称
  717. safetyEmergencyPersonCode?: string; // 安全应急部责任人code
  718. hospitalLeaderDeptName?: string; // 院领导部门名称
  719. hospitalLeaderDeptCode?: string; // 院领导部门code
  720. hospitalLeaderCheckFrequency?: number | string; // 院领导检查频次
  721. hospitalLeaderExecGroupName?: string; // 院领导执行人所属分组名称
  722. hospitalLeaderExecGroupCode?: string; // 院领导执行人所属分组code
  723. hospitalLeaderPersonName?: string; // 院领导责任人名称
  724. hospitalLeaderPersonCode?: string; // 院领导责任人code
  725. categoryName?: string; // 检查单模版类别名称
  726. categoryCode?: string; // 检查单模版类别 code
  727. checklistTemplateName?: string; // 检查单模版名称
  728. checkKeyContent?: string; // 检查重点内容
  729. needOverallDesc?: number | string; // 是否需要整体检查情况描述:0=否 1=是
  730. needSigneeSign?: number | string; // 是否需要被检查人签字:0=否 1=是
  731. planStartTime?: string; // 计划开始时间
  732. planEndTime?: string; // 计划结束时间
  733. isDeleted?: number | string; // 软删除:0=未删除,大于0(时间戳)=已删除
  734. createdAt?: string; // 创建时间
  735. updatedAt?: string; // 更新时间
  736. /** 兼容旧字段名 */
  737. responsibleDept?: string;
  738. responsibleDeptExecGroup?: string;
  739. responsibleDeptPerson?: string;
  740. safetyEmergencyDept?: string;
  741. safetyEmergencyExecGroup?: string;
  742. safetyEmergencyPerson?: string;
  743. hospitalLeaderDept?: string;
  744. hospitalLeaderExecGroup?: string;
  745. hospitalLeaderPerson?: string;
  746. [key: string]: unknown;
  747. }
  748. /** UI 使用的区域检查计划记录格式(与表格、表单一致) */
  749. export interface AreaCheckPlanRecord {
  750. id?: number;
  751. checkVenue?: string;
  752. status?: AreaCheckPlanStatus;
  753. venueCategoryName?: string;
  754. planName?: string;
  755. mainDeptName?: string;
  756. mainDeptCode?: string;
  757. selfCheckFrequency?: string;
  758. mainDeptExecutorGroupName?: string;
  759. mainDeptExecGroupCode?: string;
  760. mainDeptResponsiblePerson?: string;
  761. mainDeptResponsiblePersonCode?: string;
  762. safetyEmergencyDeptName?: string;
  763. safetyEmergencyDeptCode?: string;
  764. safetyEmergencyCheckFrequency?: string;
  765. safetyEmergencyExecutorGroupName?: string;
  766. safetyEmergencyExecGroupCode?: string;
  767. safetyEmergencyResponsiblePerson?: string;
  768. safetyEmergencyPersonCode?: string;
  769. hospitalLeaderDeptName?: string;
  770. hospitalLeaderDeptCode?: string;
  771. hospitalLeaderCheckFrequency?: string;
  772. hospitalLeaderExecutorGroupName?: string;
  773. hospitalLeaderExecGroupCode?: string;
  774. hospitalLeaderResponsiblePerson?: string;
  775. hospitalLeaderPersonCode?: string;
  776. checkKeyContent?: string;
  777. categoryName?: string;
  778. categoryCode?: string;
  779. checklistTemplateName?: string;
  780. needOverallDesc?: boolean;
  781. needInspectedSign?: boolean;
  782. planStartTime?: string;
  783. planEndTime?: string;
  784. isDeleted?: number | string;
  785. createdAt?: string;
  786. updatedAt?: string;
  787. [key: string]: unknown;
  788. }
  789. /** 后端返回格式转 UI 格式,供调用方使用(优先 *Name,兼容旧 *Dept/*Person) */
  790. export function mapAreaCheckPlanApiRecordToUi(api: AreaCheckPlanManageApiRecord | null | undefined): AreaCheckPlanRecord {
  791. if (!api) return {};
  792. const toBool = (v: number | string | undefined) => (v === 1 || v === '1' ? true : v === 0 || v === '0' ? false : undefined);
  793. const toFreq = (v: number | string | undefined) => {
  794. if (v === undefined || v === null || v === '') return undefined;
  795. const n = typeof v === 'number' ? v : parseInt(String(v), 10);
  796. return FREQUENCY_TO_LABEL[n] ?? String(v);
  797. };
  798. return {
  799. id: api.id,
  800. planName: api.areaCheckPlanName,
  801. checkVenue: api.checkPlace,
  802. venueCategoryName: api.checkPlaceCategory ?? api.checkCategory,
  803. status: api.status as AreaCheckPlanStatus | undefined,
  804. mainDeptName: api.responsibleDeptName ?? api.responsibleDept,
  805. mainDeptCode: api.responsibleDeptCode,
  806. selfCheckFrequency: toFreq(api.selfCheckFrequency),
  807. mainDeptExecutorGroupName: api.responsibleDeptExecGroupName ?? api.responsibleDeptExecGroup,
  808. mainDeptExecGroupCode: api.responsibleDeptExecGroupCode,
  809. mainDeptResponsiblePerson: api.responsibleDeptPersonName ?? api.responsibleDeptPerson,
  810. mainDeptResponsiblePersonCode: api.responsibleDeptPersonCode,
  811. safetyEmergencyDeptName: api.safetyEmergencyDeptName ?? api.safetyEmergencyDept,
  812. safetyEmergencyDeptCode: api.safetyEmergencyDeptCode,
  813. safetyEmergencyCheckFrequency: toFreq(api.safetyEmergencyCheckFrequency),
  814. safetyEmergencyExecutorGroupName: api.safetyEmergencyExecGroupName ?? api.safetyEmergencyExecGroup,
  815. safetyEmergencyResponsiblePerson: api.safetyEmergencyPersonName ?? api.safetyEmergencyPerson,
  816. safetyEmergencyExecGroupCode: api.safetyEmergencyExecGroupCode,
  817. safetyEmergencyPersonCode: api.safetyEmergencyPersonCode,
  818. hospitalLeaderDeptName: api.hospitalLeaderDeptName ?? api.hospitalLeaderDept,
  819. hospitalLeaderDeptCode: api.hospitalLeaderDeptCode,
  820. hospitalLeaderCheckFrequency: toFreq(api.hospitalLeaderCheckFrequency),
  821. hospitalLeaderExecutorGroupName: api.hospitalLeaderExecGroupName ?? api.hospitalLeaderExecGroup,
  822. hospitalLeaderResponsiblePerson: api.hospitalLeaderPersonName ?? api.hospitalLeaderPerson,
  823. hospitalLeaderExecGroupCode: api.hospitalLeaderExecGroupCode,
  824. hospitalLeaderPersonCode: api.hospitalLeaderPersonCode,
  825. categoryName: api.categoryName,
  826. categoryCode: api.categoryCode,
  827. checklistTemplateName: api.checklistTemplateName,
  828. checkKeyContent: api.checkKeyContent,
  829. needOverallDesc: toBool(api.needOverallDesc),
  830. needInspectedSign: toBool(api.needSigneeSign),
  831. planStartTime: api.planStartTime,
  832. planEndTime: api.planEndTime,
  833. isDeleted: api.isDeleted,
  834. createdAt: api.createdAt,
  835. updatedAt: api.updatedAt,
  836. };
  837. }
  838. function uiRecordToApi(ui: AreaCheckPlanRecord & { id?: number }): AreaCheckPlanManageApiRecord {
  839. const toFreqNum = (v: string | undefined) => (v ? LABEL_TO_FREQUENCY[v] ?? undefined : undefined);
  840. const toNum = (v: boolean | undefined) => (v === true ? 1 : v === false ? 0 : undefined);
  841. const code = (ui as Record<string, unknown>);
  842. return {
  843. id: ui.id,
  844. areaCheckPlanName: ui.planName,
  845. checkPlace: ui.checkVenue,
  846. checkPlaceCategory: ui.venueCategoryName,
  847. responsibleDeptName: ui.mainDeptName,
  848. // 若 mainDeptCode 为空,则回退使用 mainDeptId 作为 code
  849. responsibleDeptCode: (code.mainDeptCode as string | undefined)
  850. ?? (code.mainDeptId != null ? String(code.mainDeptId) : undefined),
  851. selfCheckFrequency: toFreqNum(ui.selfCheckFrequency),
  852. responsibleDeptExecGroupName: ui.mainDeptExecutorGroupName,
  853. responsibleDeptExecGroupCode: code.mainDeptExecGroupCode as string | undefined,
  854. responsibleDeptPersonName: ui.mainDeptResponsiblePerson,
  855. responsibleDeptPersonCode: code.mainDeptResponsiblePersonCode as string | undefined,
  856. safetyEmergencyDeptName: ui.safetyEmergencyDeptName,
  857. // 若 safetyEmergencyDeptCode 为空,则回退使用 safetyEmergencyDeptId 作为 code
  858. safetyEmergencyDeptCode: (code.safetyEmergencyDeptCode as string | undefined)
  859. ?? (code.safetyEmergencyDeptId != null ? String(code.safetyEmergencyDeptId) : undefined),
  860. safetyEmergencyCheckFrequency: toFreqNum(ui.safetyEmergencyCheckFrequency),
  861. safetyEmergencyExecGroupName: ui.safetyEmergencyExecutorGroupName,
  862. safetyEmergencyExecGroupCode: code.safetyEmergencyExecGroupCode as string | undefined,
  863. safetyEmergencyPersonName: ui.safetyEmergencyResponsiblePerson,
  864. safetyEmergencyPersonCode: code.safetyEmergencyPersonCode as string | undefined,
  865. hospitalLeaderDeptName: ui.hospitalLeaderDeptName,
  866. // 若 hospitalLeaderDeptCode 为空,则回退使用 hospitalLeaderDeptId 作为 code
  867. hospitalLeaderDeptCode: (code.hospitalLeaderDeptCode as string | undefined)
  868. ?? (code.hospitalLeaderDeptId != null ? String(code.hospitalLeaderDeptId) : undefined),
  869. hospitalLeaderCheckFrequency: toFreqNum(ui.hospitalLeaderCheckFrequency),
  870. hospitalLeaderExecGroupName: ui.hospitalLeaderExecutorGroupName,
  871. hospitalLeaderExecGroupCode: code.hospitalLeaderExecGroupCode as string | undefined,
  872. hospitalLeaderPersonName: ui.hospitalLeaderResponsiblePerson,
  873. hospitalLeaderPersonCode: code.hospitalLeaderPersonCode as string | undefined,
  874. categoryName: ui.categoryName,
  875. categoryCode: code.categoryCode as string | undefined,
  876. checklistTemplateName: ui.checklistTemplateName,
  877. checkKeyContent: ui.checkKeyContent,
  878. needOverallDesc: toNum(ui.needOverallDesc),
  879. needSigneeSign: toNum(ui.needInspectedSign),
  880. planStartTime: ui.planStartTime,
  881. planEndTime: ui.planEndTime,
  882. status: ui.status as number | undefined,
  883. };
  884. }
  885. export interface AreaCheckPlanQuery {
  886. keyword?: string;
  887. /** 与 queryParam.searchKey 一致,搜索检查场所/计划名称 */
  888. searchKey?: string;
  889. areaCheckPlanName?: string;
  890. status?: AreaCheckPlanStatus | '';
  891. venueCategory?: string;
  892. planStartTime?: string;
  893. planEndTime?: string;
  894. /** 计划日期范围-开始,与 queryParam.startDate 一致 */
  895. startDate?: string;
  896. /** 计划日期范围-结束,与 queryParam.endDate 一致 */
  897. endDate?: string;
  898. }
  899. /** 分页查询请求体(后端 queryParam 格式) */
  900. interface AreaCheckPlanManagePageReq {
  901. searchKey?: string;
  902. areaCheckPlanName?: string;
  903. status?: string | number;
  904. checkPlaceCategory?: string;
  905. startDate?: string;
  906. endDate?: string;
  907. }
  908. interface AreaCheckPlanManagePageQuery {
  909. pageNumber: number;
  910. pageSize: number;
  911. queryParam?: AreaCheckPlanManagePageReq;
  912. }
  913. interface AreaCheckPlanManagePageRes {
  914. records?: AreaCheckPlanManageApiRecord[]; // 当前页记录列表
  915. pageNumber?: number; // 页号,默认值为1
  916. pageSize?: number; // 每页数量
  917. maxPageSize?: number; // 最大每页数量
  918. totalPage?: number; // 总页数
  919. totalRow?: number; // 总行数
  920. optimizeCountQuery?: boolean; // 是否优化计数查询
  921. }
  922. function buildPageQuery(uiQuery: { pageNumber: number; pageSize: number; queryParam?: AreaCheckPlanQuery }): AreaCheckPlanManagePageQuery {
  923. const q = uiQuery.queryParam ?? {};
  924. return {
  925. pageNumber: uiQuery.pageNumber ?? 1,
  926. pageSize: uiQuery.pageSize ?? 10,
  927. queryParam: {
  928. searchKey: q.searchKey ?? q.keyword ?? undefined,
  929. areaCheckPlanName: q.areaCheckPlanName ?? undefined,
  930. status: q.status === '' ? undefined : (q.status as number),
  931. checkPlaceCategory: q.venueCategory ?? undefined,
  932. startDate: q.startDate ?? q.planStartTime ?? undefined,
  933. endDate: q.endDate ?? q.planEndTime ?? undefined,
  934. },
  935. };
  936. }
  937. const ADMIN_BASE = 'areaCheckPlanManageAdmin';
  938. const DEPT_BASE = 'areaCheckPlanManageDept';
  939. /** 分页查询区域检查计划列表(管理员) */
  940. export function queryAreaCheckPlanManagePage(query: { pageNumber: number; pageSize: number; queryParam?: AreaCheckPlanQuery }) {
  941. return http.request<AreaCheckPlanManagePageRes>({
  942. url: `${ADMIN_BASE}/queryAreaCheckPlanManagePage`,
  943. method: 'post',
  944. data: buildPageQuery(query),
  945. });
  946. }
  947. /** 分页查询区域检查计划列表(部门) */
  948. export function queryAreaCheckPlanManageDeptPage(query: Parameters<typeof queryAreaCheckPlanManagePage>[0]) {
  949. return http.request<AreaCheckPlanManagePageRes>({
  950. url: `${DEPT_BASE}/queryAreaCheckPlanManagePage`,
  951. method: 'post',
  952. data: buildPageQuery(query),
  953. });
  954. }
  955. /** 删除区域检查计划(管理员) */
  956. export function deleteAreaCheckPlanManage(id: number) {
  957. return http.request({
  958. url: `${ADMIN_BASE}/deleteAreaCheckPlanManage?id=${id}`,
  959. method: 'delete',
  960. });
  961. }
  962. /** 删除区域检查计划(部门)- 若部门无此接口则复用管理员 */
  963. export function deleteAreaCheckPlanManageDept(id: number) {
  964. return http.request({
  965. url: `${DEPT_BASE}/deleteAreaCheckPlanManage?id=${id}`,
  966. method: 'delete',
  967. });
  968. }
  969. /** 新增区域检查计划(管理员) */
  970. export function saveAreaCheckPlanManage(data: AreaCheckPlanRecord) {
  971. return http.request({
  972. url: `${ADMIN_BASE}/saveAreaCheckPlanManage`,
  973. method: 'post',
  974. data: uiRecordToApi(data),
  975. });
  976. }
  977. /** 更新区域检查计划(管理员) */
  978. export function updateAreaCheckPlanManage(data: AreaCheckPlanRecord & { id: number }) {
  979. return http.request({
  980. url: `${ADMIN_BASE}/updateAreaCheckPlanManage`,
  981. method: 'put',
  982. data: uiRecordToApi(data),
  983. });
  984. }
  985. /** 新增区域检查计划(部门) */
  986. export function saveAreaCheckPlanManageDept(data: AreaCheckPlanRecord) {
  987. return http.request({
  988. url: `${DEPT_BASE}/saveAreaCheckPlanManage`,
  989. method: 'post',
  990. data: uiRecordToApi(data),
  991. });
  992. }
  993. /** 更新区域检查计划(部门) */
  994. export function updateAreaCheckPlanManageDept(data: AreaCheckPlanRecord & { id: number }) {
  995. return http.request({
  996. url: `${DEPT_BASE}/updateAreaCheckPlanManage`,
  997. method: 'put',
  998. data: uiRecordToApi(data),
  999. });
  1000. }
  1001. /** 根据ID查询区域检查计划详情(管理员) */
  1002. export function queryAreaCheckPlanManageDetail(id: number) {
  1003. return http.request<AreaCheckPlanManageApiRecord>({
  1004. url: `${ADMIN_BASE}/queryAreaCheckPlanManageDetail?id=${id}`,
  1005. method: 'post',
  1006. // params: { id },
  1007. });
  1008. }
  1009. /** 根据ID查询区域检查计划详情(部门) */
  1010. export function queryAreaCheckPlanManageDeptDetail(id: number) {
  1011. return http.request<AreaCheckPlanManageApiRecord>({
  1012. url: `${DEPT_BASE}/queryAreaCheckPlanManageDetail?id=${id}`,
  1013. method: 'post',
  1014. // params: { id },
  1015. });
  1016. }
  1017. /** 下发区域检查计划至部门(管理员) */
  1018. export function sendAreaCheckPlanToDep(data: AreaCheckPlanRecord & { id: number }) {
  1019. return http.request({
  1020. url: `${ADMIN_BASE}/sendAreaCheckPlanToDep`,
  1021. method: 'put',
  1022. data: uiRecordToApi(data),
  1023. });
  1024. }
  1025. /** 作废:通过更新状态为3实现 */
  1026. export function cancelAreaCheckPlanManage(id: number, plan: AreaCheckPlanRecord) {
  1027. return updateAreaCheckPlanManage({ ...plan, id, status: 3 });
  1028. }
  1029. /** 查询区域检查计划关联的检查记录分页(管理员)- 与接口文档 DTO 对齐 */
  1030. export interface AreaCheckPlanDetailRecord {
  1031. id?: number;
  1032. areaPlanId?: number;
  1033. checkTime?: string;
  1034. checkPersonName?: string;
  1035. checkPersonCode?: string;
  1036. checkPerson?: string;
  1037. checkPlaceCategory?: string;
  1038. checkPlaceCategoryCode?: string;
  1039. checkPlace?: string;
  1040. checkAddress?: string;
  1041. checkItemTotal?: number;
  1042. qualifiedItemNum?: number;
  1043. unqualifiedItemNum?: number;
  1044. checkedCompanyName?: string;
  1045. checkedCompanyCode?: string;
  1046. checkedCompany?: string;
  1047. overallCheckDesc?: string;
  1048. checkedPersonSign?: string;
  1049. }
  1050. export function queryAreaCheckPlanDetailPage(planId: number, query: { pageNumber: number; pageSize: number; queryParam?: AreaCheckPlanQuery }) {
  1051. const body = buildPageQuery(query);
  1052. return http.request<AreaCheckPlanManagePageRes & { records?: AreaCheckPlanDetailRecord[] }>({
  1053. url: `${ADMIN_BASE}/queryAreaCheckPlanDetailPage`,
  1054. method: 'post',
  1055. params: { id: planId },
  1056. data: body,
  1057. });
  1058. }
  1059. /** 查询区域检查计划关联的检查记录分页(部门) */
  1060. export function queryAreaCheckPlanDetailDeptPage(planId: number, query: Parameters<typeof queryAreaCheckPlanDetailPage>[1]) {
  1061. const body = buildPageQuery(query);
  1062. return http.request({
  1063. url: `${DEPT_BASE}/queryAreaCheckPlanDetailPage`,
  1064. method: 'post',
  1065. params: { id: planId },
  1066. data: body,
  1067. });
  1068. }
  1069. /** 删除区域检查计划记录(管理员) */
  1070. export function deleteAreaCheckPlanDetail(id: number) {
  1071. return http.request({
  1072. url: `${ADMIN_BASE}/deleteAreaCheckPlanDetail`,
  1073. method: 'delete',
  1074. params: { id },
  1075. });
  1076. }
  1077. /** 删除区域检查计划记录(部门) */
  1078. export function deleteAreaCheckPlanDetailDept(id: number) {
  1079. return http.request({
  1080. url: `${DEPT_BASE}/deleteAreaCheckPlanDetail`,
  1081. method: 'delete',
  1082. params: { id },
  1083. });
  1084. }
  1085. /** 查看区域检查计划记录详情(含 areaCheckRecords 子项,与接口文档 AreaCheckPlanDetailRes 对齐) */
  1086. export interface AreaCheckRecordDetail {
  1087. id?: number;
  1088. areaPlanId?: number;
  1089. checkTime?: string;
  1090. checkPersonName?: string;
  1091. checkPersonCode?: string;
  1092. checkPerson?: string;
  1093. checkPlaceCategory?: string;
  1094. checkPlaceCategoryCode?: string;
  1095. checkPlace?: string;
  1096. checkAddress?: string;
  1097. checkItemTotal?: number;
  1098. qualifiedItemNum?: number;
  1099. unqualifiedItemNum?: number;
  1100. checkedCompanyName?: string;
  1101. checkedCompanyCode?: string;
  1102. checkedCompany?: string;
  1103. overallCheckDesc?: string;
  1104. checkedPersonSign?: string;
  1105. areaCheckRecords?: Array<{
  1106. id?: number;
  1107. checkPlanId?: number;
  1108. checkContent?: string;
  1109. checkStandard?: string;
  1110. checkResult?: string;
  1111. checkProblem?: string;
  1112. isDeleted?: number;
  1113. createdAt?: string;
  1114. updatedAt?: string;
  1115. }>;
  1116. isDeleted?: number;
  1117. createdAt?: string;
  1118. updatedAt?: string;
  1119. }
  1120. export function queryAreaCheckRecord(id: number) {
  1121. return http.request<AreaCheckRecordDetail>({
  1122. url: `${ADMIN_BASE}/queryAreaCheckRecord`,
  1123. method: 'post',
  1124. params: { id },
  1125. });
  1126. }
  1127. /** 查看区域检查计划记录详情(部门) */
  1128. export function queryAreaCheckRecordDept(id: number) {
  1129. return http.request<AreaCheckRecordDetail>({
  1130. url: `${DEPT_BASE}/queryAreaCheckRecord`,
  1131. method: 'post',
  1132. params: { id },
  1133. });
  1134. }
  1135. /** 不合格项分页查询请求 queryParam(与接口文档 UnqualifiedItemNumPageReq 对齐) */
  1136. export interface UnqualifiedItemNumPageQuery {
  1137. id?: number;
  1138. checkPlace?: string;
  1139. checkProblem?: string;
  1140. checkTime?: string;
  1141. }
  1142. /** 不合格项分页查询单条记录 */
  1143. export interface UnqualifiedItemNumRecord {
  1144. id?: number;
  1145. checkPlace?: string;
  1146. checkProblem?: string;
  1147. checkTime?: string;
  1148. }
  1149. /** 分页查询记录不合格数据(管理员) */
  1150. export function queryUnqualifiedItemNumPage(query: {
  1151. pageNumber: number;
  1152. pageSize: number;
  1153. queryParam?: UnqualifiedItemNumPageQuery;
  1154. }) {
  1155. return http.request<{
  1156. records?: UnqualifiedItemNumRecord[];
  1157. totalRow?: number;
  1158. totalPage?: number;
  1159. pageNumber?: number;
  1160. pageSize?: number;
  1161. }>({
  1162. url: `${ADMIN_BASE}/queryUnqualifiedItemNumPage`,
  1163. method: 'post',
  1164. data: {
  1165. pageNumber: query.pageNumber ?? 1,
  1166. pageSize: query.pageSize ?? 10,
  1167. queryParam: query.queryParam ?? {},
  1168. },
  1169. });
  1170. }
  1171. /** 分页查询记录不合格数据(部门) */
  1172. export function queryUnqualifiedItemNumDeptPage(query: Parameters<typeof queryUnqualifiedItemNumPage>[0]) {
  1173. return http.request<{
  1174. records?: UnqualifiedItemNumRecord[];
  1175. totalRow?: number;
  1176. totalPage?: number;
  1177. pageNumber?: number;
  1178. pageSize?: number;
  1179. }>({
  1180. url: `${DEPT_BASE}/queryUnqualifiedItemNumPage`,
  1181. method: 'post',
  1182. data: {
  1183. pageNumber: query.pageNumber ?? 1,
  1184. pageSize: query.pageSize ?? 10,
  1185. queryParam: query.queryParam ?? {},
  1186. },
  1187. });
  1188. }
  1189. /** 兼容旧命名 - 分页查询 */
  1190. export function queryAreaCheckPlanPage(query: Parameters<typeof queryAreaCheckPlanManagePage>[0]) {
  1191. return queryAreaCheckPlanManagePage(query);
  1192. }
  1193. /** 兼容旧命名 */
  1194. export function deleteAreaCheckPlan(id: number) {
  1195. return deleteAreaCheckPlanManage(id);
  1196. }
  1197. /** 兼容旧命名 - 下发(新接口为 sendAreaCheckPlanToDep,需传入完整计划数据) */
  1198. export function issueAreaCheckPlan(data: { planId?: number; id?: number } & Partial<AreaCheckPlanRecord>) {
  1199. const id = data.id ?? data.planId;
  1200. if (!id) throw new Error('计划ID必填');
  1201. return sendAreaCheckPlanToDep({ ...data, id } as AreaCheckPlanRecord & { id: number });
  1202. }
  1203. /** 兼容旧命名 */
  1204. export async function cancelAreaCheckPlan(id: number) {
  1205. const plan = await queryAreaCheckPlanManageDetail(id);
  1206. const data = (plan as { data?: AreaCheckPlanManageApiRecord })?.data ?? plan;
  1207. return cancelAreaCheckPlanManage(id, mapAreaCheckPlanApiRecordToUi(data));
  1208. }
  1209. /** 兼容旧命名 */
  1210. export function queryAreaCheckPlanById(id: number) {
  1211. return queryAreaCheckPlanManageDetail(id);
  1212. }
  1213. /** 兼容旧命名 */
  1214. export function saveAreaCheckPlan(data: AreaCheckPlanRecord) {
  1215. return saveAreaCheckPlanManage(data);
  1216. }
  1217. /** 兼容旧命名 */
  1218. export function updateAreaCheckPlan(data: AreaCheckPlanRecord & { id: number }) {
  1219. return updateAreaCheckPlanManage(data);
  1220. }