Browse Source

Merge remote-tracking branch 'origin/master'

lmm 7 months ago
parent
commit
9a1a159ebc

+ 2 - 1
src/views/museums/specimeninfo/SpecimenImportForm.vue

@@ -1,5 +1,5 @@
 <template>
-  <Dialog v-model="dialogVisible" title="标本信息导入" width="600">
+  <Dialog   loading="loading"  v-model="dialogVisible" title="标本信息导入" width="600">
     <el-alert title="可单独上传xlsx表或者图片压缩包。需确保图片命名规范,不与旧图片命名重复。" type="warning" style="margin-bottom: 10px"/>
     <el-upload
       ref="uploadRef"
@@ -95,6 +95,7 @@ const importUrl =
 //   import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL + '/museums/specimen-info/import-specimen-images'
 /** 打开弹窗 */
 const open = () => {
+  loading.value = true
   dialogVisible.value = true
   updateSupport.value = 0
   fileList.value = []

+ 67 - 68
src/views/museums/specimeninfo/SpecimenInfoForm.vue

@@ -1,5 +1,5 @@
 <template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible" >
+  <Dialog :title="dialogTitle" v-model="dialogVisible">
     <el-form
       ref="formRef"
       :model="formData"
@@ -66,16 +66,17 @@
         <el-input v-model="formData.country" placeholder="请输入国家"/>
       </el-form-item>
       <el-form-item label="省" prop="economize">
-        <el-input v-model="formData.economize" placeholder="请输入国家"/>
+        <el-input v-model="formData.economize" placeholder="请输入"/>
       </el-form-item>
-      <el-form-item label="时代" prop="era">
-        <el-input v-model="formData.era" placeholder="请输入时代"/>
+      <el-form-item label="形成时代" prop="era">
+        <el-input v-model="formData.era" placeholder="请输入形成时代"/>
       </el-form-item>
       <el-form-item label="地质产状或层位" prop="preservedLayer">
         <el-input v-model="formData.preservedLayer" placeholder="请输入地质产状或层位"/>
       </el-form-item>
       <el-form-item label="分类" prop="meteoriteType">
-        <el-input v-model="formData.meteoriteType" placeholder="请输入陨石类型"/>
+        <el-input v-model="formData.meteoriteType"
+                  placeholder="请输入矿物的类型/岩石的类型/化石的类型/陨石的类型"/>
       </el-form-item>
       <el-form-item label="国际命名" prop="internationalName">
         <el-input v-model="formData.internationalName" placeholder="请输入国际命名"/>
@@ -106,11 +107,11 @@
       <el-form-item label="成分/化学式" prop="weight">
         <el-input v-model="formData.composition" placeholder="请输入成分/化学式"/>
       </el-form-item>
-      <el-form-item label="单价" prop="specimenAmount">
-        <el-input v-model="formData.specimenAmount" placeholder="请输入单价"/>
+      <el-form-item label="单价" prop="specimenPrice">
+        <el-input v-model="formData.specimenPrice" placeholder="请输入单价"/>
       </el-form-item>
-      <el-form-item label="数量(件/套)" prop="specimenPrice">
-        <el-input v-model="formData.specimenPrice" placeholder="请输入数量"/>
+      <el-form-item label="数量(件/套)" prop="specimenAmount">
+        <el-input v-model="formData.specimenAmount" placeholder="请输入数量"/>
       </el-form-item>
       <el-form-item label="来源" prop="source">
         <el-select v-model="formData.source" placeholder="请选择来源">
@@ -135,12 +136,12 @@
       </el-form-item>
       <el-form-item label="主要用途" prop="mainPurpose">
         <el-select v-model="formData.mainPurpose" placeholder="请选择主要用途">
-        <el-option
-          v-for="dict in getIntDictOptions(DICT_TYPE.MUSEUMS_SPECIMEN_MAIN_USES)"
-          :key="dict.value"
-          :label="dict.label"
-          :value="dict.value"
-        />
+          <el-option
+            v-for="dict in getIntDictOptions(DICT_TYPE.MUSEUMS_SPECIMEN_MAIN_USES)"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
         </el-select>
       </el-form-item>
       <el-form-item label="具体用途" prop="purpose">
@@ -163,47 +164,47 @@
       <el-form-item label="备注" prop="notes">
         <el-input v-model="formData.notes" placeholder="请输入备注"/>
       </el-form-item>
-<!--      <el-form-item label="图片名称" prop="imageName">-->
-<!--        <el-input v-model="formData.imageName" placeholder="请输入图片名称"/>-->
-<!--      </el-form-item>-->
-            <el-form-item label="图片" prop="imagePath">
+      <!--      <el-form-item label="图片名称" prop="imageName">-->
+      <!--        <el-input v-model="formData.imageName" placeholder="请输入图片名称"/>-->
+      <!--      </el-form-item>-->
+      <el-form-item label="图片" prop="imagePath">
 
-              <UploadImgs v-model="formData.imagePath" />
-<!--              <el-upload-->
-<!--                v-model="formData.imagePath"-->
-<!--                class="upload-demo"-->
-<!--                drag-->
-<!--                :action="importUrl + '?updateSupport=' + updateSupport"-->
-<!--                :on-success="submitFormSuccess"-->
-<!--                style="max-width:250px;max-height: 20vh;margin-left: 20px"-->
-<!--              >-->
-<!--                <el-icon class="el-icon&#45;&#45;upload"><upload-filled /></el-icon>-->
-<!--                <div class="el-upload__text">-->
-<!--                  <em>点击批量上传图片</em>-->
-<!--                </div>-->
-<!--                <template #tip>-->
-<!--                  <div class="el-upload__tip">-->
-<!--                    <el-checkbox v-model="updateSupport" />-->
-<!--                    是否更新已经存在的标本图片-->
-<!--                  </div>-->
-<!--                </template>-->
-<!--              </el-upload>-->
-                    </el-form-item>
+        <UploadImgs v-model="formData.imagePath"/>
+        <!--              <el-upload-->
+        <!--                v-model="formData.imagePath"-->
+        <!--                class="upload-demo"-->
+        <!--                drag-->
+        <!--                :action="importUrl + '?updateSupport=' + updateSupport"-->
+        <!--                :on-success="submitFormSuccess"-->
+        <!--                style="max-width:250px;max-height: 20vh;margin-left: 20px"-->
+        <!--              >-->
+        <!--                <el-icon class="el-icon&#45;&#45;upload"><upload-filled /></el-icon>-->
+        <!--                <div class="el-upload__text">-->
+        <!--                  <em>点击批量上传图片</em>-->
+        <!--                </div>-->
+        <!--                <template #tip>-->
+        <!--                  <div class="el-upload__tip">-->
+        <!--                    <el-checkbox v-model="updateSupport" />-->
+        <!--                    是否更新已经存在的标本图片-->
+        <!--                  </div>-->
+        <!--                </template>-->
+        <!--              </el-upload>-->
+      </el-form-item>
 
-<!--      <el-form-item label="注销原因" prop="deletedReason">-->
-<!--        <el-input v-model="formData.deletedReason" placeholder="请输入注销原因"/>-->
-<!--      </el-form-item>-->
-<!--      <el-form-item label="入库操作员" prop="operator">-->
-<!--        <el-input v-model="formData.operator" placeholder="请输入入库操作员"/>-->
-<!--      </el-form-item>-->
-<!--      <el-form-item label="入库时间" prop="entryDate">-->
-<!--        <el-date-picker-->
-<!--          v-model="formData.entryDate"-->
-<!--          type="date"-->
-<!--          value-format="x"-->
-<!--          placeholder="选择入库时间"-->
-<!--        />-->
-<!--      </el-form-item>-->
+      <!--      <el-form-item label="注销原因" prop="deletedReason">-->
+      <!--        <el-input v-model="formData.deletedReason" placeholder="请输入注销原因"/>-->
+      <!--      </el-form-item>-->
+      <!--      <el-form-item label="入库操作员" prop="operator">-->
+      <!--        <el-input v-model="formData.operator" placeholder="请输入入库操作员"/>-->
+      <!--      </el-form-item>-->
+      <!--      <el-form-item label="入库时间" prop="entryDate">-->
+      <!--        <el-date-picker-->
+      <!--          v-model="formData.entryDate"-->
+      <!--          type="date"-->
+      <!--          value-format="x"-->
+      <!--          placeholder="选择入库时间"-->
+      <!--        />-->
+      <!--      </el-form-item>-->
     </el-form>
     <template #footer>
       <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
@@ -215,8 +216,8 @@
 import {getIntDictOptions, DICT_TYPE} from '@/utils/dict'
 import {SpecimenInfoApi, SpecimenInfoVO} from '@/api/museums/specimeninfo'
 //import type {UploadProps, UploadUserFile} from 'element-plus'
-import { UploadFilled } from '@element-plus/icons-vue'
-import { ref, reactive, defineExpose, defineEmits } from 'vue'
+import {UploadFilled} from '@element-plus/icons-vue'
+import {ref, reactive, defineExpose, defineEmits} from 'vue'
 //import {log} from "echarts/types/src/util/log";
 /** 标本管理 表单 */
 defineOptions({name: 'SpecimenInfoForm'})
@@ -245,8 +246,8 @@ const formData = ref({
   discoveryTime: undefined,
   fallTime: undefined,
   preservationType: undefined,
-  specimenPrice:undefined,
-  specimenAmount:undefined,
+  specimenPrice: undefined,
+  specimenAmount: undefined,
   size: undefined,
   weight: undefined,
   source: undefined,
@@ -261,10 +262,10 @@ const formData = ref({
   deletedReason: undefined,
   operator: undefined,
   entryDate: undefined,
-  mainPurpose:undefined,
-  saveStatus:undefined,
-  country:undefined,
-  economize:undefined
+  mainPurpose: undefined,
+  saveStatus: undefined,
+  country: undefined,
+  economize: undefined
 })
 const formRules = reactive({
   specimenType: [{
@@ -303,7 +304,7 @@ defineExpose({open}) // 提供 open 方法,用于打开弹窗
 /** 提交表单 */
 const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
 const submitForm = async () => {
-  console.log('formData.value',formData.value)
+  console.log('formData.value', formData.value)
   // 校验表单
   await formRef.value.validate()
   // 提交请求
@@ -346,8 +347,6 @@ const submitForm = async () => {
 // }
 
 
-
-
 /** 重置表单 */
 const resetForm = () => {
   formData.value = {
@@ -367,8 +366,8 @@ const resetForm = () => {
     discoveryTime: undefined,
     fallTime: undefined,
     preservationType: undefined,
-    specimenPrice:undefined,
-    specimenAmount:undefined,
+    specimenPrice: undefined,
+    specimenAmount: undefined,
     size: undefined,
     weight: undefined,
     source: undefined,
@@ -379,7 +378,7 @@ const resetForm = () => {
     collectionStatus: undefined,
     notes: undefined,
     imageName: undefined,
-    imagePath:[],
+    imagePath: [],
     deletedReason: undefined,
     operator: undefined,
     entryDate: undefined

+ 318 - 264
src/views/museums/specimeninfo/specimenDetails.vue

@@ -1,271 +1,302 @@
 <template>
   <el-skeleton :loading="loading" animated>
-  <el-row :gutter="8" justify="space-between">
-    <el-col :xl="16" :lg="16" :md="24" :sm="24" :xs="24">
-      <div>
-        <el-row>
-          <el-col :xl="24" :lg="24" :md="24" :sm="24" :xs="24" style="margin-outside: 0px">
-            <el-card style="margin-bottom: 5px" >
-              <template #header>
-                <div class="card-header" style="text-align: center">
-                  <h1 class="text1">标本基本信息</h1>
-                </div>
-              </template>
-              <el-descriptions
-                v-if="specimenData"
-                :column="2"
-                :size="size"
-                border
-              >
-<!--                <el-descriptions-item label-class-name="my-label" label="序号:" label-align="right">{{ specimenData.id }}</el-descriptions-item>-->
-
-                <el-descriptions-item  label-class-name="my-label" label="标本类型:" label-align="right" >{{ specimenTypeText }}
-                </el-descriptions-item>
-                <el-descriptions-item  label-class-name="my-label" label="保存状态:" label-align="right">{{
-                    specimenData.saveStatus
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item  label-class-name="my-label" label="标本编号:" label-align="right">{{
-                    specimenData.specimenNumber
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="资产号:" label-align="right" label-class-name="my-label" >{{
-                    specimenData.assetNumber
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="存放位置:" label-align="right" label-class-name="my-label" >{{
-                    specimenData.storageLocation
-                  }}
-                </el-descriptions-item>
-
-                <el-descriptions-item label="中文名称:" label-align="right" label-class-name="my-label" >{{
-                    specimenData.chineseName
-                  }}
-                </el-descriptions-item>
-
-                <el-descriptions-item label="外文名称:" label-align="right" label-class-name="my-label" >{{
-                    specimenData.englishName
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="国际命名:"  label-align="right" label-class-name="my-label" > {{
-                    specimenData.internationalName
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="国家:" label-align="right" label-class-name="my-label" >{{
-                    specimenData.country
-                  }}
-                </el-descriptions-item>
-                \    <el-descriptions-item label="省:" label-align="right" label-class-name="my-label" >{{
-                  specimenData.economize
-                }}
-              </el-descriptions-item>
-              </el-descriptions>
-
-            </el-card>
-
-            <el-card style="margin-bottom: 5px">
-              <template #header>
-                <div class="card-header" style="text-align: center;">
-                  <h1 class="text1">标本特征</h1>
-                </div>
-              </template>
-              <el-descriptions
-                v-if="specimenData"
-                :column="2"
-                :size="size"
-                border
-              >
+    <el-row :gutter="8" justify="space-between">
+      <el-col :xl="16" :lg="16" :md="24" :sm="24" :xs="24">
+        <div>
+          <el-row>
+            <el-col :xl="24" :lg="24" :md="24" :sm="24" :xs="24" style="margin-outside: 0px">
+              <el-card style="margin-bottom: 5px">
+                <template #header>
+                  <div class="card-header" style="text-align: center">
+                    <h1 class="text1">标本基本信息</h1>
+                  </div>
+                </template>
+                <el-descriptions
+                  v-if="specimenData"
+                  :column="2"
+                  :size="size"
+                  border
+                >
+                  <!--                <el-descriptions-item label-class-name="my-label" label="序号:" label-align="right">{{ specimenData.id }}</el-descriptions-item>-->
+
+                  <el-descriptions-item label-class-name="my-label" label="标本类型:"
+                                        label-align="right">{{ specimenTypeText }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label-class-name="my-label" label="保存状态:"
+                                        label-align="right">{{
+                      saveStatusText
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label-class-name="my-label" label="标本编号:"
+                                        label-align="right">{{
+                      specimenData.specimenNumber
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="资产号:" label-align="right"
+                                        label-class-name="my-label">{{
+                      specimenData.assetNumber
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="存放位置:" label-align="right"
+                                        label-class-name="my-label">{{
+                      specimenData.storageLocation
+                    }}
+                  </el-descriptions-item>
+
+                  <el-descriptions-item label="中文名称:" label-align="right"
+                                        label-class-name="my-label">{{
+                      specimenData.chineseName
+                    }}
+                  </el-descriptions-item>
+
+                  <el-descriptions-item label="外文名称:" label-align="right"
+                                        label-class-name="my-label">{{
+                      specimenData.englishName
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="国际命名:" label-align="right"
+                                        label-class-name="my-label"> {{
+                      specimenData.internationalName
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="国家:" label-align="right"
+                                        label-class-name="my-label">{{
+                      specimenData.country
+                    }}
+                  </el-descriptions-item>
+                  \
+                  <el-descriptions-item label="省:" label-align="right" label-class-name="my-label">
+                    {{
+                      specimenData.economize
+                    }}
+                  </el-descriptions-item>
+                </el-descriptions>
 
-                <el-descriptions-item label="成分/化学式:"  label-align="right" label-class-name="my-label" > {{
-                    specimenData.composition
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="产地/发现地:" label-align="right" label-class-name="my-label" >{{
-                    specimenData.origin
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="时代:" label-align="right" label-class-name="my-label" >{{ specimenData.era }}</el-descriptions-item>
-                <el-descriptions-item label="保存地层:" label-width="100px" label-align="right" label-class-name="my-label" >{{
-                    specimenData.discoveryTime
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="陨石类型:" label-width="100px" label-align="right" label-class-name="my-label" >{{ specimenData.meteoriteType }}
-                </el-descriptions-item>
-                <el-descriptions-item label="形成时代:" label-width="100px" label-align="right" label-class-name="my-label" >{{
-                    specimenData.era
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="地质产状或层位:" label-width="100px" label-align="right" label-class-name="my-label" >{{
-                    specimenData.preservedLayer
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="分类:" label-width="100px" label-align="right" label-class-name="my-label" >{{
-                    specimenData.meteoriteType
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="重量(g):" label-width="100px" label-align="right" label-class-name="my-label" >{{
-                    specimenData.weight
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="规格(cm):" label-align="right" label-class-name="my-label" >{{
-                    specimenData.size
-                  }}
-                </el-descriptions-item>
-              </el-descriptions>
-            </el-card>
-            <el-card style="margin-bottom: 5px">
-              <template #header>
-                <div class="card-header" style="text-align: center">
-                  <h1 class="text1">标本保存与来源</h1>
-                </div>
-              </template>
-              <el-descriptions
-
-                v-if="specimenData"
-                :column="2"
-                :size="size"
-                border
-              >
-                <el-descriptions-item label="保存类型:" label-class-name="my-label" label-align="right">{{ preservationTypeText }}
-                </el-descriptions-item>
-                <el-descriptions-item label="来源:" label-class-name="my-label" label-align="right">{{ sourceText }}</el-descriptions-item>
-                <el-descriptions-item label="单价:" label-class-name="my-label" label-align="right">{{
-                    specimenData.specimenPrice
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="数量(件/套):" label-align="right" label-class-name="my-label" >{{
-                    specimenData.specimenAmount
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="标本提供者:" label-class-name="my-label" label-align="right">{{
-                    specimenData.provider
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="发现时间:" label-class-name="my-label" label-align="right">  {{
-                    specimenData.discoveryTime
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="降落时间:" label-class-name="my-label" label-align="right">{{
-                    specimenData.fallTime
-                  }}
-                </el-descriptions-item>
-              </el-descriptions>
-            </el-card>
-            <el-card style="margin-bottom: 5px">
-              <template #header>
-                <div class="card-header" style="text-align: center">
-                  <h1 class="text1" style="">标本用途与状态</h1>
-                </div>
-              </template>
-              <el-descriptions
-                v-if="specimenData"
-                :column="2"
-                :size="size"
-                border
-              >
-                <el-descriptions-item label="入馆时间:" label-class-name="my-label" label-align="right">{{
-                    specimenData.acquisitionTime
-                  }}
-                </el-descriptions-item>
-<!--                <el-descriptions-item label="文献资料:" label-class-name="my-label" label-align="right">{{-->
-<!--                    specimenData.description-->
-<!--                  }}-->
-<!--                </el-descriptions-item>-->
-                <el-descriptions-item label="主要用途:" label-class-name="my-label" label-align="right">{{
-                    specimenData.mainPurpose
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="具体用途:" label-class-name="my-label" label-align="right">{{
-                    specimenData.purpose
-                  }}
-                </el-descriptions-item>
-                <el-descriptions-item label="备注:" label-class-name="my-label" label-align="right">{{
-                    specimenData.notes
-                  }}
-                </el-descriptions-item>
-              </el-descriptions>
-            </el-card>
-          </el-col>
+              </el-card>
 
-        </el-row>
-
-      </div>
-    </el-col>
-    <el-col :xl="8" :lg="8" :md="24" :sm="24" :xs="24" class="mb-8px">
-      <el-card>
-        <template #header>
-          <div class="card-header" style="text-align: center">
-            <h1>标本图片</h1>
-          </div>
-        </template>
-        <el-col :xl="24" :lg="24" :md="24" :sm="24" :xs="24" class="mb-8px">
-          <div v-if="specimenData.imagePath && specimenData.imagePath.length">
-          <div class="demo-image__preview">
-            <el-image
-              style=" align-items: center"
-              :src="specimenData.imagePath[0]"
-              :zoom-rate="1.2"
-              :max-scale="7"
-              :min-scale="0.2"
-              :preview-src-list="specimenData.imagePath"
-              :initial-index="index"
-              fit="cover"
-            />
-          </div>
-
-          <div>
-            <el-space style="margin-top: 10px" >
-              <div class="demo-image__preview" v-for="(url, index) in specimenData.imagePath"
-                   :key="index">
+              <el-card style="margin-bottom: 5px">
+                <template #header>
+                  <div class="card-header" style="text-align: center;">
+                    <h1 class="text1">标本特征</h1>
+                  </div>
+                </template>
+                <el-descriptions
+                  v-if="specimenData"
+                  :column="2"
+                  :size="size"
+                  border
+                >
+
+                  <el-descriptions-item label="成分/化学式:" label-align="right"
+                                        label-class-name="my-label"> {{
+                      specimenData.composition
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="产地/发现地:" label-align="right"
+                                        label-class-name="my-label">{{
+                      specimenData.origin
+                    }}
+                  </el-descriptions-item>
+
+                  <el-descriptions-item label="保存地层:" label-width="100px" label-align="right"
+                                        label-class-name="my-label">{{
+                      specimenData.preservedLayer
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="陨石类型:" label-width="100px" label-align="right"
+                                        label-class-name="my-label">{{ specimenData.meteoriteType }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="形成时代:" label-width="100px" label-align="right"
+                                        label-class-name="my-label">{{
+                      specimenData.era
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="地质产状或层位:" label-width="100px"
+                                        label-align="right" label-class-name="my-label">{{
+                      specimenData.preservedLayer
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="分类:" label-width="100px" label-align="right"
+                                        label-class-name="my-label">{{
+                      specimenData.meteoriteType
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="重量(g):" label-width="100px" label-align="right"
+                                        label-class-name="my-label">{{
+                      specimenData.weight
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="规格(cm):" label-align="right"
+                                        label-class-name="my-label">{{
+                      specimenData.size
+                    }}
+                  </el-descriptions-item>
+                </el-descriptions>
+              </el-card>
+              <el-card style="margin-bottom: 5px">
+                <template #header>
+                  <div class="card-header" style="text-align: center">
+                    <h1 class="text1">标本保存与来源</h1>
+                  </div>
+                </template>
+                <el-descriptions
+
+                  v-if="specimenData"
+                  :column="2"
+                  :size="size"
+                  border
+                >
+                  <el-descriptions-item label="保存类型:" label-class-name="my-label"
+                                        label-align="right">{{ preservationTypeText }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="来源:" label-class-name="my-label"
+                                        label-align="right">{{ sourceText }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="单价:" label-class-name="my-label"
+                                        label-align="right">{{
+                      specimenData.specimenPrice
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="数量(件/套):" label-align="right"
+                                        label-class-name="my-label">{{
+                      specimenData.specimenAmount
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="标本提供者:" label-class-name="my-label"
+                                        label-align="right">{{
+                      specimenData.provider
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="发现时间:" label-class-name="my-label"
+                                        label-align="right"> {{
+                      specimenData.discoveryTime
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="降落时间:" label-class-name="my-label"
+                                        label-align="right">{{
+                      specimenData.fallTime
+                    }}
+                  </el-descriptions-item>
+                </el-descriptions>
+              </el-card>
+              <el-card style="margin-bottom: 5px">
+                <template #header>
+                  <div class="card-header" style="text-align: center">
+                    <h1 class="text1" style="">标本用途与状态</h1>
+                  </div>
+                </template>
+                <el-descriptions
+                  style="margin-bottom: 30px"
+                  v-if="specimenData"
+                  :column="2"
+                  :size="size"
+                  border
+                >
+                  <el-descriptions-item label="入馆时间:" label-class-name="my-label"
+                                        label-align="right">{{
+                      specimenData.acquisitionTime
+                    }}
+                  </el-descriptions-item>
+                  <!--                <el-descriptions-item label="文献资料:" label-class-name="my-label" label-align="right">{{-->
+                  <!--                    specimenData.description-->
+                  <!--                  }}-->
+                  <!--                </el-descriptions-item>-->
+                  <el-descriptions-item label="主要用途:" label-class-name="my-label"
+                                        label-align="right">{{
+                      specimenData.mainPurpose
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="具体用途:" label-class-name="my-label"
+                                        label-align="right">{{
+                      specimenData.purpose
+                    }}
+                  </el-descriptions-item>
+                  <el-descriptions-item label="备注:" label-class-name="my-label"
+                                        label-align="right">{{
+                      specimenData.notes
+                    }}
+                  </el-descriptions-item>
+                </el-descriptions>
+              </el-card>
+            </el-col>
+
+          </el-row>
+
+        </div>
+      </el-col>
+      <el-col :xl="8" :lg="8" :md="24" :sm="24" :xs="24" class="mb-8px">
+        <el-card>
+          <template #header>
+            <div class="card-header" style="text-align: center">
+              <h1>标本图片</h1>
+            </div>
+          </template>
+          <el-col :xl="24" :lg="24" :md="24" :sm="24" :xs="24" class="mb-8px">
+            <div v-if="specimenData.imagePath && specimenData.imagePath.length">
+              <div class="demo-image__preview">
                 <el-image
-                  style="width: 50px; height: 40px"
-                  :src="url"
+                  style=" align-items: center"
+                  :src="specimenData.imagePath[0]"
                   :zoom-rate="1.2"
                   :max-scale="7"
                   :min-scale="0.2"
-                  :initial-index="4"
-                  :preview-src-list="[url]"
+                  :preview-src-list="specimenData.imagePath"
+                  :initial-index="index"
                   fit="cover"
                 />
               </div>
-            </el-space>
-          </div>
-          </div>
-            <el-empty v-else  description="暂无图片" />
-        </el-col>
-
-
-      </el-card>
-      <el-card style="margin-top: 10px">
-        <template #header>
-          <div class="card-header" >
-            <h1 class="text1" style="margin-bottom: 10px">馆藏状态</h1>
-          </div>
-        </template>
-        <el-scrollbar height="600px">
-          <el-timeline style="max-width: 600px;margin-left: 15px" >
-            <el-timeline-item
-              v-for="(item, index) in stustuss"
-              :key="index"
-              type="primary"
-              :hollow = "true"
-            >
-              <h4>{{formatDate(item.createTime) }}</h4>
-              <el-card>
-                <h4>操作状态:{{item.subType}}</h4>
-                <div style="line-height: 30px">操作人:{{ item.userName}}</div>
-                <div style="line-height: 20px">操作内容:{{item.action}}</div>
-              </el-card>
-            </el-timeline-item>
-          </el-timeline>
-        </el-scrollbar>
-      </el-card>
 
-    </el-col>
-  </el-row>
-  </el-skeleton>
+              <div>
+                <el-space style="margin-top: 10px">
+                  <div class="demo-image__preview" v-for="(url, index) in specimenData.imagePath"
+                       :key="index">
+                    <el-image
+                      style="width: 50px; height: 40px"
+                      :src="url"
+                      :zoom-rate="1.2"
+                      :max-scale="7"
+                      :min-scale="0.2"
+                      :initial-index="4"
+                      :preview-src-list="[url]"
+                      fit="cover"
+                    />
+                  </div>
+                </el-space>
+              </div>
+            </div>
+            <el-empty v-else description="暂无图片"/>
+          </el-col>
 
 
+        </el-card>
+        <el-card style="margin-top: 10px">
+          <template #header>
+            <div class="card-header">
+              <h1 class="text1" style="margin-bottom: 10px">馆藏状态</h1>
+            </div>
+          </template>
+          <el-scrollbar height="600px">
+            <el-timeline style="max-width: 600px;margin-left: 15px">
+              <el-timeline-item
+                v-for="(item, index) in stustuss"
+                :key="index"
+                type="primary"
+                :hollow="true"
+              >
+                <h4>{{ formatDate(item.createTime) }}</h4>
+                <el-card>
+                  <h4>操作状态:{{ item.subType }}</h4>
+                  <div style="line-height: 30px">操作人:{{ item.userName }}</div>
+                  <div style="line-height: 20px">操作内容:{{ item.action }}</div>
+                </el-card>
+              </el-timeline-item>
+            </el-timeline>
+          </el-scrollbar>
+        </el-card>
+
+      </el-col>
+    </el-row>
+  </el-skeleton>
 
 
 </template>
@@ -274,28 +305,26 @@
 
 import {ref, onMounted, computed} from "vue";
 import {useRouter} from 'vue-router';
-import  {SpecimenInfoApi} from "@/api/museums/specimeninfo";
+import {SpecimenInfoApi} from "@/api/museums/specimeninfo";
 import {ElCol, ElImage} from 'element-plus';
+
 const loading = ref(false)
 const router = useRouter() // 路由
 const {query} = useRoute() // 查询参数
 import type {ComponentSize} from 'element-plus'
 import {formatDate} from "@/utils/formatTime";
+
 const stustuss = ref()
 const specimenData = ref({
-  imagePath:[]
+  imagePath: []
 }); // 初始化响应式数据
 const size = ref<ComponentSize>('large')
 
 
-
 const url = ref()
 const srcList = ref([])
 
 
-
-
-
 const fetchData = async () => {
   loading.value = true
   try {
@@ -303,20 +332,19 @@ const fetchData = async () => {
     let res: any = await SpecimenInfoApi.getSpecimenInfo(query.dataId)
     const stutus = await SpecimenInfoApi.getStustusInfo(query.dataId)
     stustuss.value = stutus
-    console.log('stustuss',stustuss.value)
+    console.log('stustuss', stustuss.value)
     console.log(res)
     res.discoveryTime = formatDate(res.discoveryTime)
     res.fallTime = formatDate(res.fallTime)
     res.acquisitionTime = formatDate(res.acquisitionTime)
     specimenData.value = res
     console.log(specimenData.value)
-  }  finally {
+  } finally {
     loading.value = false
   }
 }
 
 
-
 /**标本类型**/
 const specimenTypeText = computed(() => {
   if (specimenData.value === null) {
@@ -335,6 +363,24 @@ const specimenTypeText = computed(() => {
       return '';
   }
 });
+/**保存状态**/
+const saveStatusText = computed(() => {
+  if (specimenData.value === null) {
+    return '';
+  }
+  switch (specimenData.value.saveStatus) {
+    case 0:
+      return '完整';
+    case 1:
+      return '受损';
+    case 2:
+      return '严重受损';
+    case 3:
+      return '无实物';
+    default:
+      return '';
+  }
+});
 /**保存类型**/
 const preservationTypeText = computed(() => {
   if (specimenData.value === null) {
@@ -394,9 +440,11 @@ onMounted(async () => {
   font-weight: bold;
   color: #0f2438;
 }
+
 :deep(.my-label) {
   background: #FAF8F7 !important;
 }
+
 .label {
   display: inline-block;
   text-align: right;
@@ -418,13 +466,19 @@ onMounted(async () => {
   background: var(--el-color-danger-light-9);
   color: var(--el-color-danger);
 }
-.label-width .el-descriptions-item__label  {
+
+.label-width .el-descriptions-item__label {
   width: 90px;
   flex: 1;
 }
+
 .el-descriptions-item {
   margin-bottom: 20px;
   margin-top: 20px;
 }
 
+:deep(.my-label) {
+  background: #FAF8F7 !important;
+  width: 150px;
+}
 </style>

+ 3 - 0
src/views/museums/specimenoutbound/OutboundForm/ApproalDetails.vue

@@ -202,6 +202,9 @@ const fetchData = async () => {
     console.log(res)
     outboundData.value = res
     console.log(outboundData.value)
+    res.startTime = formatDate(res.startTime)
+    res.endTime = formatDate(res.endTime)
+
   }  finally {
   }
 }

+ 14 - 10
src/views/museums/specimenoutbound/OutboundForm/outboundDetail.vue

@@ -39,15 +39,15 @@
                     outboundData.endTime
                   }}
                 </el-descriptions-item>
-                <el-descriptions-item label="一审时间:" label-align="right" label-class-name="my-label">{{
+                <el-descriptions-item label="一时间:" label-align="right" label-class-name="my-label">{{
                     outboundData.approvalTime
                   }}
                 </el-descriptions-item>
-                <el-descriptions-item label="一级审批:" label-align="right"  label-class-name="my-label">{{
+                <el-descriptions-item label="一级审批:" label-align="right"  label-class-name="my-label">{{
                     outboundData.approveUsers
                   }}
                 </el-descriptions-item>
-                <el-descriptions-item label="一级审批建议" label-align="right"  label-class-name="my-label">{{
+                <el-descriptions-item label="一级审批建议:" label-align="right"  label-class-name="my-label">{{
                     outboundData.processInstanceId
                   }}
                 </el-descriptions-item>
@@ -59,11 +59,11 @@
       v-if="outboundData"
       :size="size"
       border>
-      <el-descriptions-item label="二审时间:" label-align="right" label-class-name="my-label">{{
+      <el-descriptions-item label="二时间:" label-align="right" label-class-name="my-label">{{
           outboundData.twoApprovalTime
         }}
       </el-descriptions-item>
-      <el-descriptions-item label="二级审批:" label-align="right"  label-class-name="my-label">{{
+      <el-descriptions-item label="二级审批:" label-align="right"  label-class-name="my-label">{{
           outboundData.twoApproveUsers
         }}
       </el-descriptions-item>
@@ -88,8 +88,6 @@
         }}
       </el-descriptions-item>
 
-
-
       <el-descriptions-item label="回库备注信息:" label-align="right" label-class-name="my-label">{{outboundData.remarks}}
       </el-descriptions-item>
 
@@ -329,8 +327,10 @@ const fetchData = async () => {
     console.log(res)
     outboundData.value = res
     console.log(outboundData.value)
-    res.applicationDate = formatDate(res.applicationDate)
+    res.startTime = formatDate(res.startTime)
+    res.endTime = formatDate(res.endTime)
     res.approvalTime = formatDate(res.approvalTime)
+    res.twoApprovalTime = formatDate(res.twoApprovalTime)
     res.outgoingTime = formatDate(res.outgoingTime)
     res.returnDate = formatDate(res.returnDate)
 
@@ -353,13 +353,17 @@ const statusText = computed(() => {
     case 0:
       return '审批中';
     case 1:
-      return '审批通过';
+      return '一级审批通过';
     case 2:
-      return '审批驳回';
+      return '一级审批驳回';
     case 3:
       return '已出库';
     case 4:
       return '已回库';
+    case 5:
+      return '二级审批通过';
+    case 6:
+      return '二级审批驳回';
     default:
       return '';
   }

+ 6 - 3
src/views/museums/specimenoutbound/SpecimenOutboundForm.vue

@@ -81,7 +81,9 @@
           placeholder="选择项目结束时间"
         />
       </el-form-item>
-
+      <el-form-item label="备注" prop="outboundRemarks" label-width="150px">
+        <el-input v-model="formData.outboundRemarks" placeholder="请输入备注" label-width="150px"/>
+      </el-form-item>
     </el-form>
     <template #footer>
       <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
@@ -130,7 +132,8 @@ const formData = ref({
   startTime: undefined,
   endTime: undefined,
   projectName:undefined,
-  phoneNumber:undefined
+  phoneNumber:undefined,
+  outboundRemarks:undefined
 
 })
 
@@ -140,7 +143,7 @@ const formRules = reactive({
   number: [{required: true, message: '标本编号不能为空', trigger: 'blur'}],
   applicantName: [{required: true, message: '申请人姓名不能为空', trigger: 'blur'}],
   applicationUsage: [{required: true, message: '申请单位不能为空', trigger: 'blur'}],
-  projectName: [{required: true, message: '研究项目名称不能为空', trigger: 'blur'}],
+  // projectName: [{required: true, message: '研究项目名称不能为空', trigger: 'blur'}],
   startTime: [{required: true, message: '项目开始时间不能为空', trigger: 'blur'}],
   endTime: [{required: true, message: '项目结束时间不能为空', trigger: 'blur'}]
 })