production-work-order.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. import request from '@/utils/http'
  2. import type {
  3. QcWorkOrderReceptionDetail,
  4. OutboundQcDetailApplication,
  5. OutboundQcDetailPatient,
  6. OutboundQcDetailInfusionPlan,
  7. OutboundQcDetailInfusionSchedule,
  8. OutboundQcDetailProduct,
  9. QcProtocolPaymentSummary,
  10. QcBasicExperimentFeeSummary
  11. } from '@/api/qc-work-order'
  12. export interface ProductionWorkOrderItem {
  13. id: string
  14. workOrderNo: string
  15. workOrderType?: string
  16. protocolNo?: string
  17. sampleCode?: string
  18. receptionSource?: string
  19. receptionSourceLabel?: string
  20. sampleTypeName?: string
  21. handlerName?: string
  22. receptionTime?: string
  23. workOrderStatus: string
  24. createTime?: string
  25. remark?: string
  26. labStorageCode?: string
  27. protocolStatus?: string
  28. bizType?: string
  29. bizTypeLabel?: string
  30. /** 出库工单:关联申请单号 */
  31. applicationNo?: string
  32. applicationName?: string
  33. channelName?: string
  34. /** 出库工单:患者/用户姓名 */
  35. patientName?: string
  36. /** 出库工单:当前为第几次输注计划 */
  37. sortNo?: number | null
  38. /** 出库工单:输注计划总次数 */
  39. totalCourseCount?: number | null
  40. infusionTime?: string
  41. /** 基础实验出库:课题名称(列表 enrich) */
  42. projectTitle?: string
  43. /** 基础实验出库:客户名称(列表 enrich) */
  44. customerName?: string
  45. /** 出库工单:输注计划细胞类型(列表 enrich,无产品明细时兜底) */
  46. cellType?: string
  47. /** 出库工单:输注计划规格(列表 enrich,无产品明细时兜底) */
  48. specText?: string
  49. /** 出库工单:输注计划关联细胞产品明细(列表 enrich) */
  50. products?: OutboundQcDetailProduct[]
  51. paymentSummary?: QcProtocolPaymentSummary | null
  52. feeSummary?: QcBasicExperimentFeeSummary | null
  53. }
  54. export type ProductionWorkOrderDetail = ProductionWorkOrderItem & {
  55. reception?: QcWorkOrderReceptionDetail
  56. bizType?: string
  57. bizTypeLabel?: string
  58. /** 临床应用出库:简要申请单 */
  59. pilotApplication?: {
  60. applicationNo?: string
  61. applicationName?: string
  62. applicationStatus?: string
  63. applicationStatusLabel?: string
  64. }
  65. /** 临床应用出库:简要输注计划 */
  66. infusionSchedule?: {
  67. cellType?: string
  68. specText?: string
  69. infusionTime?: string
  70. infusionLocation?: string
  71. infusionMethod?: string
  72. scheduleStatus?: string
  73. }
  74. /** 中试服务出库:与出库质检工单查看弹窗一致 */
  75. application?: OutboundQcDetailApplication
  76. patient?: OutboundQcDetailPatient
  77. infusionPlan?: OutboundQcDetailInfusionPlan
  78. products?: OutboundQcDetailProduct[]
  79. }
  80. export function fetchProductionWorkOrderList(params?: {
  81. page?: number
  82. pageSize?: number
  83. keyword?: string
  84. workOrderStatus?: string
  85. workOrderType?: string
  86. receptionSource?: string
  87. bizType?: string
  88. createTimeStart?: string
  89. createTimeEnd?: string
  90. infusionTimeStart?: string
  91. infusionTimeEnd?: string
  92. }) {
  93. return request.get<{
  94. list: ProductionWorkOrderItem[]
  95. total: number
  96. page: number
  97. pageSize: number
  98. totalPages: number
  99. }>({ url: '/web/admin/production-work-orders', params })
  100. }
  101. export function fetchProductionWorkOrderDetail(id: string) {
  102. return request.get<ProductionWorkOrderDetail>({ url: `/web/admin/production-work-orders/${id}` })
  103. }
  104. export function fetchCompleteProductionWorkOrder(id: string, data: Record<string, any>) {
  105. return request.put({ url: `/web/admin/production-work-orders/${id}/complete`, params: data })
  106. }
  107. export function fetchCreateProductionWorkOrder(data: {
  108. workOrderType?: string
  109. protocolNo?: string
  110. sampleCode?: string
  111. receptionSource?: string
  112. remark?: string
  113. }) {
  114. return request.post<ProductionWorkOrderItem>({
  115. url: '/web/admin/production-work-orders',
  116. data
  117. })
  118. }
  119. export function fetchConfigureProductionWorkOrder(
  120. id: string,
  121. data: {
  122. taskName?: string
  123. taskType?: string
  124. routeId?: string
  125. description?: string
  126. remark?: string
  127. }
  128. ) {
  129. return request.post<ProductionWorkOrderItem>({
  130. url: `/web/admin/production-work-orders/${id}/configure`,
  131. data
  132. })
  133. }
  134. export function fetchUpdateProductionWorkOrder(id: string, data: { remark?: string }) {
  135. return request.put<ProductionWorkOrderItem>({
  136. url: `/web/admin/production-work-orders/${id}`,
  137. data
  138. })
  139. }
  140. export function fetchDeleteProductionWorkOrder(id: string) {
  141. return request.del({ url: `/web/admin/production-work-orders/${id}` })
  142. }
  143. export interface ProductionCellProductOption {
  144. id: string
  145. cellProductId?: string
  146. productCode?: string
  147. productName?: string
  148. productTypeName?: string
  149. passage?: string
  150. storageSlotName?: string
  151. taskId?: string
  152. taskNo?: string
  153. }
  154. export function fetchProductionWorkOrderCellProductOptions(workOrderId: string) {
  155. return request.get<ProductionCellProductOption[]>({
  156. url: `/web/admin/production-work-orders/${workOrderId}/cell-product-options`
  157. })
  158. }
  159. export function fetchCreateQcFromProduction(
  160. workOrderId: string,
  161. data: { cellProductId: string; productionTaskId?: string; remark?: string }
  162. ) {
  163. return request.post({
  164. url: `/web/admin/production-work-orders/${workOrderId}/qc-work-orders`,
  165. data
  166. })
  167. }