$this->renderTableButton(), 'collect_date' => $this->collectDate != '' ? $this->collectDate : '', 'note' => $this->note, 'table' => [ ['type' => 'Text', 'label' => '检查项', 'prop' => 'check_item'], ['type' => 'Input', 'label' => '结果', 'prop' => 'result'], ['type' => 'Input', 'label' => '单位', 'prop' => 'unit'], ['type' => 'Input', 'label' => '最小值', 'prop' => 'min_val'], ['type' => 'Input', 'label' => '最大值', 'prop' => 'max_val'] ], 'until' => [ 'textarea' => call_user_func(function () { $formData = Laminas::$serviceManager->itemForm->fetchOne(['where' => ['id' => $_POST['id']]]); return (bool)Laminas::$serviceManager->dictionaryCheckcategory->fetchOne([ 'where' => ['id' => $formData['checklist_id']] ])['report_type'] ?? 0; }) ] ]; unset($dateType); return $return_data; } return []; } private function renderTableButton(): array { $request = Laminas::$app->getMvcEvent()->getRequest(); $formId = $request->getPost('id'); $itemId = $request->getPost('item_id'); $itemSigId = $request->getPost('itemsig_id'); $formData = Laminas::$serviceManager->itemForm->fetchOne(['where' => ['id' => $formId]]); if (!$formId || !$formData || !$itemId) { throw new InvalidArgumentException("当前组件无法渲染, 因为你的参数不对呀~"); } $checkNameData = Laminas::$serviceManager->itemCheckname->fetchAll([ 'order' => ['checkname_order'], 'where' => [ 'item_id' => $itemId, 'category_id' => $formData['checklist_id'], 'is_del' => 0 ] ]); $tableData = []; $imgTxtDiscernData = Laminas::$serviceManager->itemImgtxtdiscern->fetchOne([ 'where' => [ 'category_id' => $formData['checklist_id'], 'item_sign_id' => $itemSigId, 'is_del' => 0, 'item_id' => $itemId ] ])['check_data'] ?? []; if ($imgTxtDiscernData) { if (!is_array($imgTxtDiscernData)) { $imgTxtDiscernData = Json::decode($imgTxtDiscernData, Json::TYPE_ARRAY); } $imgTxtDiscernData = ArrayHelper::index($imgTxtDiscernData, 'checkname_id'); } foreach ($checkNameData as $k => $checkNameDatum) { $result = $this->getResult($checkNameDatum['id'], $request); $tableData[$k] = array_intersect_key($checkNameDatum, array_flip([ 'id', 'check_type', 'unit', 'max_val', 'min_val' ])); $tableData[$k]['check_item'] = $checkNameDatum['name']; $tableData[$k]['result'] = $result['result'] ?? ''; if (!empty($imgTxtDiscernData[$checkNameDatum['checkname_id']])) { $tableData[$k]['max_val'] = $imgTxtDiscernData[$checkNameDatum['checkname_id']]['max_val']; $tableData[$k]['min_val'] = $imgTxtDiscernData[$checkNameDatum['checkname_id']]['min_val']; $tableData[$k]['unit'] = $imgTxtDiscernData[$checkNameDatum['checkname_id']]['change_unit']; } if(!empty($result)) { $tableData[$k]['max_val'] = $result['reference_range_max']; $tableData[$k]['min_val'] = $result['reference_range_min']; $tableData[$k]['unit'] = $result['unit']; } // 有手动填写的值就用手写的, 没有的话就用配置的 /*$tableData[$k]['max_val'] = $this->handleVal($imgTxtDiscernData['change_name'], $result['reference_range_max'] ?: $checkNameDatum['max_val']); $tableData[$k]['min_val'] = $this->handleVal($imgTxtDiscernData['change_name'], $result['reference_range_min'] ?: $checkNameDatum['min_val']);*/ } return $tableData; } private function handleVal($changeName, $val) { if ($changeName) { return (string)(floatval($changeName) * floatval($val)); } return $val; } /** * 获取 [受试者工作附件表] 结果值 * @param $checkNameId * @param Request $request * @return array */ private function getResult($checkNameId, Request $request): array { $patientFormId = Laminas::$serviceManager->patientForm->fetchOne([ 'where' => [ 'patient_id' => $request->getPost('patient_id'), 'item_id' => $request->getPost('item_id'), 'itemsig_id' => $request->getPost('itemsig_id'), 'checktime_id' => $request->getPost('checktime_id'), 'form_id' => $request->getPost('id'), ] ])['id'] ?? 0; $where = [ // 'is_del' => 0, 'item_checkname_id' => $checkNameId, 'patient_id' => $request->getPost('patient_id'), 'item_id' => $request->getPost('item_id'), 'itemsig_id' => $request->getPost('itemsig_id'), 'checktime_id' => $request->getPost('checktime_id'), ]; if($request->getPost('patientformcontent_id') != 0){ $where['patientformcontent_id'] = $request->getPost('patientformcontent_id'); }else{ $where['patient_form_id'] = $patientFormId; } $hasResult = Laminas::$serviceManager->itemIdentificationresultchange->fetchOne(['where'=>$where]); // 检查日期 if (!$this->collectDate) { $this->collectDate = $hasResult['collect_date'] ?? ''; } // 备注 if (!$this->note) { $this->note = $hasResult['result'] ?? ''; } return $hasResult ?: []; } }