Forráskód Böngészése

优化审批流自定义表单高度,长者轮候流程增加乙肝两对半,认知评估报告等检查报告

xiongxing 1 hete
szülő
commit
dbd58e6060

+ 5 - 1
src/views/bpm/processInstance/detail/ProcessInstanceOperationButton.vue

@@ -25,7 +25,7 @@
           :rules="approveReasonRule"
           label-width="100px"
         >
-          <el-card v-if="runningTask?.formId > 0" class="mb-15px !-mt-10px">
+          <el-card v-if="runningTask?.formId > 0" class="mb-15px !-mt-10px" body-class="process-card-height">
             <template #header>
               <span class="el-icon-picture-outline"> 填写表单【{{ runningTask?.formName }}】 </span>
             </template>
@@ -1045,4 +1045,8 @@ defineExpose({ loadTodoTask })
     }
   }
 }
+:deep(.process-card-height){
+  max-height: 500px;
+  overflow-y: scroll;
+}
 </style>

+ 368 - 2
src/views/elderly/elder/wait-elder/ProcessForm.vue

@@ -204,6 +204,320 @@
         </div>
       </el-form-item>
     </el-col>
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>乙肝两对半</span>
+      <div class="view-files">
+        <div v-if="!form.secondLiverTwoHalfAndHalf.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.secondLiverTwoHalfAndHalf" :key="`slth-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>认知评估报告</span>
+      <div class="view-files">
+        <div v-if="!form.cognitiveAssessmentReport.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.cognitiveAssessmentReport" :key="`cognitiveAssessmentReport-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>梅毒</span>
+      <div class="view-files">
+        <div v-if="!form.syphilis.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.syphilis" :key="`syphilis-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>HIV</span>
+      <div class="view-files">
+        <div v-if="!form.hiv.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.hiv" :key="`hiv-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+  </el-row>
+  <el-row :gutter="40">
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>结核杆菌抗体</span>
+      <div class="view-files">
+        <div v-if="!form.tuberculosisBacillusAntibody.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.tuberculosisBacillusAntibody" :key="`tba-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>丙肝</span>
+      <div class="view-files">
+        <div v-if="!form.hepatitisC.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.hepatitisC" :key="`hc-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>戊肝</span>
+      <div class="view-files">
+        <div v-if="!form.hepatitisE.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.hepatitisE" :key="`he-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+  </el-row>
+  <el-row :gutter="40">
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>血常规</span>
+      <div class="view-files">
+        <div v-if="!form.bloodRoutineExamination.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.bloodRoutineExamination" :key="`bre-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>尿常规</span>
+      <div class="view-files">
+        <div v-if="!form.urineRoutines.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.urineRoutines" :key="`ur-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>粪常规</span>
+      <div class="view-files">
+        <div v-if="!form.fecalRoutine.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.fecalRoutine" :key="`fr-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+  </el-row>
+  <el-row :gutter="40">
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>肝功能</span>
+      <div class="view-files">
+        <div v-if="!form.liverFunction.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.liverFunction" :key="`lf-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>血生化</span>
+      <div class="view-files">
+        <div v-if="!form.bloodBiochemistry.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.bloodBiochemistry" :key="`bb-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>胸片</span>
+      <div class="view-files">
+        <div v-if="!form.rabat.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.rabat" :key="`rabat-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+  </el-row>
+  <el-row :gutter="40">
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>头颅CT</span>
+      <div class="view-files">
+        <div v-if="!form.headCt.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.headCt" :key="`headCt-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>心电图</span>
+      <div class="view-files">
+        <div v-if="!form.ecg.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.ecg" :key="`ecg-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+    <el-col :lg="8" :md="8" :sm="24" :xs="24">
+      <span>骨密度</span>
+      <div class="view-files">
+        <div v-if="!form.bmd.length" class="empty">-</div>
+        <ul v-else>
+          <li v-for="(item, index) in form.bmd" :key="`bmd-${index}`">
+            <template v-if="isImageFile(item)">
+              <el-image :src="getFileUrl(item)" :alt="getFileName(item)" :preview-src-list="[getFileUrl(item)]" class="file-preview-image" fit="cover" />
+            </template>
+            <template v-else-if="isVideoFile(item)">
+              <video :src="getFileUrl(item)" class="file-preview-video" controls preload="metadata"></video>
+            </template>
+            <template v-else>
+              <a :href="getFileUrl(item)" target="_blank" rel="noopener noreferrer" download>{{ getFileName(item) }}</a>
+            </template>
+          </li>
+        </ul>
+      </div>
+    </el-col>
+  </el-row>
+  <el-row :gutter="40">
     <el-col :span="12" :xs="24">
       <el-form-item label="第二医护审核人" prop="auditName">
         <div class="view-value">{{ form.auditName || '-' }}</div>
@@ -243,7 +557,23 @@ const form = reactive({
   auditName:'',
   firstAuditName:'',
   commitRemark:'',
-  medicalCareRemark:''
+  medicalCareRemark:'',
+  secondLiverTwoHalfAndHalf: [] as any[],
+  cognitiveAssessmentReport: [] as any[],
+  syphilis: [] as any[],
+  hiv: [] as any[],
+  tuberculosisBacillusAntibody: [] as any[],
+  hepatitisC: [] as any[],
+  hepatitisE: [] as any[],
+  bloodRoutineExamination: [] as any[],
+  urineRoutines: [] as any[],
+  fecalRoutine: [] as any[],
+  liverFunction: [] as any[],
+  bloodBiochemistry: [] as any[],
+  rabat: [] as any[],
+  headCt: [] as any[],
+  ecg: [] as any[],
+  bmd: [] as any[]
 })
 
 const rules = reactive({})
@@ -252,7 +582,11 @@ const parseFileList = (value: any) => {
   if (!value) return []
   if (Array.isArray(value)) return value
   if (typeof value === 'string') {
-    return value
+    let trimmed = value.trim()
+    if (trimmed.startsWith('[') && trimmed.endsWith(']')) {
+      trimmed = trimmed.slice(1, -1)
+    }
+    return trimmed
       .split(',')
       .map((item) => item.trim())
       .filter(Boolean)
@@ -280,6 +614,22 @@ const mapSourceToForm = (source: Record<string, any> = {}) => {
   form.firstAuditName = source.firstAuditName || ''
   form.commitRemark = source.commitRemark
   form.medicalCareRemark = source.medicalCareRemark
+  form.secondLiverTwoHalfAndHalf = parseFileList(source.secondLiverTwoHalfAndHalf)
+  form.cognitiveAssessmentReport = parseFileList(source.cognitiveAssessmentReport)
+  form.syphilis = parseFileList(source.syphilis)
+  form.hiv = parseFileList(source.hiv)
+  form.tuberculosisBacillusAntibody = parseFileList(source.tuberculosisBacillusAntibody)
+  form.hepatitisC = parseFileList(source.hepatitisC)
+  form.hepatitisE = parseFileList(source.hepatitisE)
+  form.bloodRoutineExamination = parseFileList(source.bloodRoutineExamination)
+  form.urineRoutines = parseFileList(source.urineRoutines)
+  form.fecalRoutine = parseFileList(source.fecalRoutine)
+  form.liverFunction = parseFileList(source.liverFunction)
+  form.bloodBiochemistry = parseFileList(source.bloodBiochemistry)
+  form.rabat = parseFileList(source.rabat)
+  form.headCt = parseFileList(source.headCt)
+  form.ecg = parseFileList(source.ecg)
+  form.bmd = parseFileList(source.bmd)
 }
 
 const getFileUrl = (file: any) => {
@@ -344,6 +694,22 @@ const resetForm = () => {
   form.firstAuditName = ''
   form.commitRemark = ''
   form.medicalCareRemark = ''
+  form.secondLiverTwoHalfAndHalf = []
+  form.cognitiveAssessmentReport = []
+  form.syphilis = []
+  form.hiv = []
+  form.tuberculosisBacillusAntibody = []
+  form.hepatitisC = []
+  form.hepatitisE = []
+  form.bloodRoutineExamination = []
+  form.urineRoutines = []
+  form.fecalRoutine = []
+  form.liverFunction = []
+  form.bloodBiochemistry = []
+  form.rabat = []
+  form.headCt = []
+  form.ecg = []
+  form.bmd = []
   formRef.value?.clearValidate?.()
 }