Bladeren bron

Merge remote-tracking branch 'origin/master'

wwj 7 maanden geleden
bovenliggende
commit
b990000639

+ 4 - 3
src/router/modules/remaining.ts

@@ -478,6 +478,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
       }
     ]
   },
+
   {
     path: '/diy',
     name: 'DiyCenter',
@@ -640,15 +641,15 @@ const remainingRouter: AppRouteRecordRaw[] = [
         }
       },
       {
-        path: '/museums/photos/index.vue',
-        component: () => import('@/views/museums/photos/index.vue'),
+        path: '/museums/photogroup/PhotosIndex.vue',
+        component: () => import('@/views/museums/photogroup/PhotosIndex.vue'),
         name: 'ImageDetails',
         meta: {
           noCache: true,
           hidden: true,
           canTo: true,
           title: '查看标本图片详情',
-          activeMenu: '/crm/photo'
+          activeMenu: '/photosmanage/photogroup'
         }
       },
       {

+ 13 - 7
src/views/museums/photogroup/ImageImportForm .vue

@@ -20,7 +20,13 @@
       </el-form-item>
 
       <el-form-item label="照片组简介" prop="groupDescription">
-        <Editor v-model="formData.groupDescription" height="150px" />
+<!--        <Editor v-model="formData.groupDescription" height="150px" />-->
+        <el-input
+          v-model="formData.groupDescription"
+          :rows="3"
+          type="textarea"
+          placeholder="请输入照片组简介"
+        />
       </el-form-item>
       <el-form-item label="照片组上传" prop="uploadPhotos">
           <el-upload
@@ -40,11 +46,11 @@
             <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
             <template #tip>
               <div class="el-upload__tip text-center">
-                <div class="el-upload__tip">
-                  <el-checkbox v-model="updateSupport" />
-                  是否更新已经存在的用户数据
-                </div>
-                <span>仅允许导入 zip格式文件。</span>
+<!--                <div class="el-upload__tip">-->
+<!--                  <el-checkbox v-model="updateSupport" />-->
+<!--                  是否更新已经存在的用户数据-->
+<!--                </div>-->
+                <span>仅允许导入zip格式文件。</span>
               </div>
             </template>
           </el-upload>
@@ -62,7 +68,7 @@
 import { useUpload } from "@/components/UploadFile/src/useUpload";
 import { getAccessToken } from "@/utils/auth";
 const importUrl =
-  import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL + '/photosmanage/photo-group/createe'
+  import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL + '/museums/photo-group/createe'
 defineOptions({ name: 'imageImportForm' })
 const dialogVisible = ref(false) // 弹窗的是否展示
 const dialogTitle = ref('') // 弹窗的标题

+ 10 - 4
src/views/museums/photogroup/PhotoGroupForm.vue

@@ -19,7 +19,13 @@
         />
       </el-form-item>
       <el-form-item label="照片组简介" prop="groupDescription">
-        <Editor v-model="formData.groupDescription" height="150px" />
+<!--        <Editor v-model="formData.groupDescription" height="150px" />-->
+        <el-input
+          v-model="formData.groupDescription"
+          :rows="3"
+          type="textarea"
+          placeholder="请输入照片组简介"
+        />
       </el-form-item>
 <!--      <el-form-item label="创建时间" prop="createdAt">-->
 <!--        <el-date-picker-->
@@ -29,9 +35,9 @@
 <!--          placeholder="选择创建时间"-->
 <!--        />-->
 <!--      </el-form-item>-->
-      <el-form-item label="照片组上传" prop="uploadPhotos">
-        <UploadFile v-model="formData.uploadPhotos" />
-      </el-form-item>
+<!--      <el-form-item label="照片组上传" prop="uploadPhotos">-->
+<!--        <UploadFile v-model="formData.uploadPhotos" />-->
+<!--      </el-form-item>-->
     </el-form>
     <template #footer>
       <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>

+ 18 - 24
src/views/museums/photos/PhotosForm.vue → src/views/museums/photogroup/PhotosForm.vue

@@ -7,20 +7,20 @@
       label-width="100px"
       v-loading="formLoading"
     >
-      <el-form-item label="照片组表id" prop="groupId">
-        <el-input v-model="formData.groupId" placeholder="请输入照片组表id" />
-      </el-form-item>
-      <el-form-item label="照片存储路径" prop="photoUrl">
-        <el-input v-model="formData.photoUrl" placeholder="请输入照片存储路径" />
-      </el-form-item>
-      <el-form-item label="上传时间" prop="createdAt">
-        <el-date-picker
-          v-model="formData.createdAt"
-          type="date"
-          value-format="x"
-          placeholder="选择上传时间"
-        />
+<!--      <el-form-item label="照片组表id" prop="groupId">-->
+<!--        <el-input v-model="formData.groupId" placeholder="请输入照片组表id" />-->
+<!--      </el-form-item>-->
+      <el-form-item label="照片" prop="photoUrl">
+        <UploadImg v-model="formData.photoUrl" />
       </el-form-item>
+<!--      <el-form-item label="上传时间" prop="createdAt">-->
+<!--        <el-date-picker-->
+<!--          v-model="formData.createdAt"-->
+<!--          type="date"-->
+<!--          value-format="x"-->
+<!--          placeholder="选择上传时间"-->
+<!--        />-->
+<!--      </el-form-item>-->
     </el-form>
     <template #footer>
       <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
@@ -52,22 +52,14 @@ const formRules = reactive({
   photoUrl: [{ required: true, message: '照片存储路径不能为空', trigger: 'blur' }]
 })
 const formRef = ref() // 表单 Ref
-
+const zpid=ref()
 /** 打开弹窗 */
 const open = async (type: string, id?: number) => {
   dialogVisible.value = true
   dialogTitle.value = t('action.' + type)
   formType.value = type
+  zpid.value=id
   resetForm()
-  // 修改时,设置数据
-  if (id) {
-    formLoading.value = true
-    try {
-      formData.value = await PhotosApi.getPhotos(id)
-    } finally {
-      formLoading.value = false
-    }
-  }
 }
 defineExpose({ open }) // 提供 open 方法,用于打开弹窗
 
@@ -79,7 +71,9 @@ const submitForm = async () => {
   // 提交请求
   formLoading.value = true
   try {
+    formData.value.groupId=zpid.value
     const data = formData.value as unknown as PhotosVO
+    console.log('zpid.value',zpid.value,'data',data)
     if (formType.value === 'create') {
       await PhotosApi.createPhotos(data)
       message.success(t('common.createSuccess'))
@@ -105,4 +99,4 @@ const resetForm = () => {
   }
   formRef.value?.resetFields()
 }
-</script>
+</script>

+ 11 - 9
src/views/museums/photos/index.vue → src/views/museums/photogroup/PhotosIndex.vue

@@ -53,7 +53,7 @@
         <el-button
           type="primary"
           plain
-          @click="openForm('create')"
+          @click="openForm('create',zuid)"
           v-hasPermi="['museums:photos:create']"
         >
           <Icon icon="ep:plus" class="mr-5px" /> 新增
@@ -134,14 +134,14 @@
       />
       <el-table-column label="操作" align="center" min-width="120px">
         <template #default="scope">
-          <el-button
-            link
-            type="primary"
-            @click="openForm('update', scope.row.id)"
-            v-hasPermi="['museums:photos:update']"
-          >
-            编辑
-          </el-button>
+<!--          <el-button-->
+<!--            link-->
+<!--            type="primary"-->
+<!--            @click="openForm('update', scope.row.id)"-->
+<!--            v-hasPermi="['museums:photos:update']"-->
+<!--          >-->
+<!--            编辑-->
+<!--          </el-button>-->
           <el-button
             link
             type="danger"
@@ -191,6 +191,8 @@ const queryParams = reactive({
   createdAt: undefined,
   createTime: []
 })
+const zuid =ref( queryParams.groupId)
+
 const queryFormRef = ref() // 搜索的表单
 const exportLoading = ref(false) // 导出的加载中
 

+ 7 - 8
src/views/museums/photogroup/index.vue

@@ -15,7 +15,6 @@
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
-
         />
       </el-form-item>
       <el-form-item label="照片组时间" prop="groupDate" label-width="100px">
@@ -84,14 +83,14 @@
   <!-- 列表 -->
   <ContentWrap>
     <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
-      <el-table-column label="序号" align="center" prop="id" />
-      <el-table-column label="照片组名称" align="center" prop="groupName" />
+      <el-table-column label="序号" align="center" prop="id" width="100"/>
+      <el-table-column label="照片组名称" align="center" prop="groupName" width="200"/>
       <el-table-column
         label="照片组时间"
         align="center"
         prop="groupDate"
         :formatter="dateFormatter"
-        width="180px"
+        width="200"
       />
       <el-table-column label="照片组简介" align="center" prop="groupDescription" />
 <!--      <el-table-column-->
@@ -106,9 +105,9 @@
         align="center"
         prop="createTime"
         :formatter="dateFormatter"
-        width="180px"
+        width="300"
       />
-      <el-table-column label="照片组上传" align="center" prop="uploadPhotos" >
+<!--      <el-table-column label="照片组上传" align="center" prop="uploadPhotos" >-->
 <!--        <el-image-->
 <!--        style="width: 40px; height:40px"-->
 <!--        class="h-80px w-80px"-->
@@ -118,8 +117,8 @@
 <!--        preview-teleported-->
 <!--        fit="cover"-->
 <!--      />-->
-        </el-table-column>
-      <el-table-column label="操作" align="center" min-width="120px">
+<!--        </el-table-column>-->
+      <el-table-column label="操作" align="center" width="160" fixed="right">
         <template #default="scope">
           <el-button
             link

+ 39 - 19
src/views/museums/specimeninfo/SpecimenImportForm.vue

@@ -1,28 +1,27 @@
 <template>
   <Dialog v-model="dialogVisible" title="标本信息导入" width="600">
+    <el-alert title="可单独上传xlsx表或者图片压缩包。需确保图片命名规范,不与旧图片命名重复。" type="warning" style="margin-bottom: 10px"/>
     <el-upload
       ref="uploadRef"
       v-model:file-list="fileList"
-      :action="importUrl + '?updateSupport=' + updateSupport"
+      :action="  importUrl + '?updateSupport=' + updateSupport"
       :auto-upload="false"
       :disabled="formLoading"
       :headers="uploadHeaders"
       :limit="1"
       :on-error="submitFormError"
       :on-exceed="handleExceed"
-      :on-success="submitFormSuccess"
-
       accept=".xlsx, .xls"
       drag
     >
       <Icon icon="ep:upload" />
-      <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+      <div class="el-upload__text">将xlsx表拖到此处,或<em>点击上传</em></div>
       <template #tip>
         <div class="el-upload__tip text-center">
-<!--          <div class="el-upload__tip">-->
+          <div class="el-upload__tip">
             <el-checkbox v-model="updateSupport" />
-<!--            是否更新已经存在的标本数据-->
-<!--          </div>-->
+            是否更新已经存在的标本数据
+          </div>
           <span>仅允许导入 xls、xlsx 格式文件。</span>
           <el-link
             :underline="false"
@@ -46,18 +45,18 @@
       :disabled="formLoading"
       :limit="1"
       :on-error="submitFormError"
-      :http-request="httpRequest"
-
+      :headers="uploadHeaders"
+      accept=".zip"
     >
       <el-icon class="el-icon--upload" ><upload-filled /></el-icon>
       <div class="el-upload__text">
-        <em>点击批量上传图片</em>
+        <div class="el-upload__text">将图片压缩包拖到此处,或<em>点击上传</em></div>
       </div>
       <template #tip>
         <div class="el-upload__tip text-center">
-          <el-checkbox v-model="updateSupport" />
+<!--          <el-checkbox v-model="updateSupport" />-->
 <!--          是否更新已经存在的标本图片-->
-        <span>仅允许导入jpg、png、gif 格式文件。</span>
+        <span>仅允许导入 .zip 格式文件。</span>
                 </div>
       </template>
     </el-upload>
@@ -72,6 +71,7 @@
 import download from '@/utils/download'
 import { getAccessToken, getTenantId } from '@/utils/auth'
 import {SpecimenInfoApi} from "@/api/museums/specimeninfo";
+import { ref, nextTick } from 'vue';
 import {UploadFilled} from "@element-plus/icons-vue";
 import {useUpload} from "@/components/UploadFile/src/useUpload";
 
@@ -79,8 +79,10 @@ defineOptions({ name: 'SpecimenImportForm' })
 const dialogVisible = ref(false) // 弹窗的是否展示
 const formLoading = ref(false) // 表单的加载中
 const uploadRef = ref()
+const uploadimageRef = ref()
 // const uploadimageRef = ref()
 const message = useMessage() // 消息弹窗
+import axios from 'axios';
 const updateSupport = ref(0) // 是否更新已经存在的用户数据
 //const updateImageSupport = ref()  //是否更新已经存在的标本图片
 const fileList = ref([]) // 文件列表
@@ -103,7 +105,7 @@ const {  httpRequest } = useUpload()
 
 /** 提交表单 */
 const submitForm = async () => {
-  if (fileList.value.length == 0) {
+  if (fileList.value.length == 0 && imageList.value.length == 0) {
     message.error('请上传文件')
     return
   }
@@ -113,8 +115,26 @@ const submitForm = async () => {
     'tenant-id': getTenantId()
   }
   formLoading.value = true
-  uploadRef.value!.submit()
+  const formData = new FormData()
+  if (fileList.value.length > 0) {
+    formData.append('file', fileList.value[0].raw, fileList.value[0].name)
+  }
+  if (imageList.value.length > 0) {
+    formData.append('imageFile', imageList.value[0].raw, imageList.value[0].name)
+  }
 
+  axios.post(importUrl + '?updateSupport=' + updateSupport.value, formData, {
+    headers: {
+      ...uploadHeaders.value,
+      'Content-Type': 'multipart/form-data'
+    }
+  }).then((response) => {
+    submitFormSuccess(response)
+  }).catch((error) => {
+    submitFormError()
+  }).finally(() => {
+    formLoading.value = false
+  })
 }
 
 /** 文件上传成功 */
@@ -129,13 +149,13 @@ const submitFormSuccess = (response: any) => {
   const data = response.data
   let text = '上传成功数量:' + data.createSpecimenNumbers.length + ';'
   for (let specimenInfodata of data.createSpecimenNumbers) {
-    text += '< ' + specimenInfodata + ' >'
+    text += '标本编号:' + specimenInfodata + '、'
   }
-  text += '更新成功数量:' + data.updateSpecimenNumbers.length + ';'
+  text += '更新成功数量:' + data.updateSpecimenNumbers.length + ';'
   for (const specimenInfodata of data.updateSpecimenNumbers) {
-    text += '< ' + specimenInfodata + ' >'
+    text += '标本编号:' + specimenInfodata + '、'
   }
-  text += '更新失败数量:' + Object.keys(data.failureSpecimenNumbers).length + ';'
+  text += '更新失败数量:' + Object.keys(data.failureSpecimenNumbers).length + ';'
   for (const specimenInfodata in data.failureSpecimenNumbers) {
     text += '< ' + specimenInfodata + ': ' + data.failureSpecimenNumbers[specimenInfodata] + ' >'
   }
@@ -173,6 +193,7 @@ const resetForm = async (): Promise<void> => {
   formLoading.value = false
   await nextTick()
   uploadRef.value?.clearFiles()
+  uploadimageRef.value?.clearFiles()
 }
 
 /** 文件数超出提示 */
@@ -202,5 +223,4 @@ const submitImageSuccess = (response: any) => {
 
 
 
-
 </script>

+ 1 - 1
src/views/museums/specimeninfo/SpecimenInfoForm.vue

@@ -135,7 +135,7 @@
 <!--      <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="imagePath">
 
               <UploadImgs v-model="formData.imagePath" />
 <!--              <el-upload-->

+ 4 - 4
src/views/museums/specimeninfo/index.vue

@@ -315,7 +315,7 @@
           @click="openForm('create')"
           v-hasPermi="['museums:specimen-info:create']"
         >
-          <Icon icon="ep:plus" class="mr-5px" /> 新增
+          <Icon icon="ep:plus" class="mr-5px" /> 单个新增
         </el-button>
         <el-button
           type="warning"
@@ -323,7 +323,7 @@
           @click="handleImport"
           v-hasPermi="['museums:specimen-info:import']"
         >
-          <Icon icon="ep:upload" /> 导入信息
+          <Icon icon="ep:upload" /> 批量导入
         </el-button>
         <el-button
           type="success"
@@ -566,8 +566,8 @@ const handleDelete = async (id: number) => {
   //   await getList()
   // } catch {}
   ElMessageBox.prompt('请输入删除原因', '删除', {
-    confirmButtonText: 'OK',
-    cancelButtonText: 'Cancel',
+    confirmButtonText: '确定',
+    cancelButtonText: '取消',
     inputPattern: /.+/ ,
     inputErrorMessage: '删除原因必填',
   })