Browse Source

Merge remote-tracking branch 'origin/master'

lmm 4 months ago
parent
commit
b23cfb0530

BIN
src/assets/svgs/login.3.jpg


+ 33 - 24
src/views/Login/Login.vue

@@ -2,37 +2,35 @@
   <div
     :class="prefixCls"
     class="relative h-[100%] lt-md:px-10px lt-sm:px-10px lt-xl:px-10px lt-xl:px-10px"
-  >
+   >
+
     <div class="relative mx-auto h-full flex">
-      <div
-        :class="`${prefixCls}__left flex-1 bg-gray-500 bg-opacity-20 relative p-30px lt-xl:hidden overflow-x-hidden overflow-y-auto`"
-      >
+<!--      <div-->
+<!--        :class="`${prefixCls}__left flex-1 bg-gray-500 bg-opacity-20 relative p-30px lt-xl:hidden overflow-x-hidden overflow-y-auto`"-->
+<!--       >-->
 
-        <!-- 左边的背景图 + 欢迎语 -->
-        <div class="h-[calc(100%-60px)] flex items-center justify-center">
+<!--         左边的背景图 + 欢迎语 -->
+<!--        <div class="h-[calc(100%-60px)] flex items-center justify-center">-->
 <!--          <TransitionGroup-->
 <!--            appear-->
 <!--            enter-active-class="animate__animated animate__bounceInLeft"-->
 <!--            tag="div"-->
 <!--          >-->
-            <!-- 背景图 -->
-            <img key="1" alt="" class="w-350px" style="width:800px" src="../../assets/svgs/login.1.jpg" />
+<!--             背景图-->
+<!--            <img key="1" alt="" class="w-350px" style="width:800px" src="../../assets/svgs/login.1.jpg" />-->
             <!-- 欢迎语 -->
-            <div key="2" class="text-3xl text-white">{{ t('login.welcome') }}</div>
-            <!-- 消息 -->
-<!--            <div key="3" class="mt-5 text-14px font-normal text-white">-->
-<!--              {{ t('login.message') }}-->
-<!--            </div>-->
+<!--            <div key="2" class="text-3xl text-white">{{ t('login.welcome') }}</div>-->
+
 <!--          </TransitionGroup>-->
-        </div>
-      </div>
+<!--        </div>-->
+<!--      </div>-->
       <div
         class="relative flex-1 p-30px dark:bg-[var(--login-bg-color)] lt-sm:p-10px overflow-x-hidden overflow-y-auto"
       >
         <!-- 右上角的主题、语言选择 -->
         <div
           class="flex items-center justify-between at-2xl:justify-end at-xl:justify-end"
-          style="color: var(--el-text-color-primary);"
+
         >
           <div class="flex items-center at-2xl:hidden at-xl:hidden">
             <img alt="" class="mr-10px h-48px w-48px" src="@/assets/imgs/logo.png" />
@@ -43,21 +41,19 @@
             <LocaleDropdown />
           </div>
         </div>
+
         <!-- 右边的登录界面 -->
         <Transition appear enter-active-class="animate__animated animate__bounceInRight">
+
           <div
             class="m-auto h-[calc(100%-60px)] w-[100%] flex items-center at-2xl:max-w-500px at-lg:max-w-500px at-md:max-w-500px at-xl:max-w-500px"
           >
+
             <!-- 账号登录 -->
             <LoginForm class="m-auto h-auto p-20px lt-xl:(rounded-3xl light:bg-white)" />
-            <!-- 手机登录 -->
-<!--            <MobileForm class="m-auto h-auto p-20px lt-xl:(rounded-3xl light:bg-white)" />-->
-<!--            &lt;!&ndash; 二维码登录 &ndash;&gt;-->
-<!--            <QrCodeForm class="m-auto h-auto p-20px lt-xl:(rounded-3xl light:bg-white)" />-->
             <!-- 注册 -->
             <RegisterForm class="m-auto h-auto p-20px lt-xl:(rounded-3xl light:bg-white)" />
-            <!-- 三方登录 -->
-<!--            <SSOLoginVue class="m-auto h-auto p-20px lt-xl:(rounded-3xl light:bg-white)" />-->
+
           </div>
         </Transition>
       </div>
@@ -87,22 +83,35 @@ $prefix-cls: #{$namespace}-login;
 
 .#{$prefix-cls} {
   overflow: auto;
+  min-height: 100vh; /* 使容器至少占据整个视口的高度 */
+  justify-content: center;
+  align-items: center;
+  position: relative; /* 确保伪元素相对于此元素定位 */
 
-  &__left {
     &::before {
       position: absolute;
       top: 0;
       left: 0;
+      right: 0;
+      bottom: 0;
       z-index: -1;
       width: 100%;
       height: 100%;
-      background-image: url('@/assets/svgs/login-bg.svg');
+      background-image: url('@/assets/svgs/login.3.jpg');
       background-position: center;
       background-repeat: no-repeat;
+      background-size: cover; /* 背景图片覆盖整个容器 */
       content: '';
     }
   }
+// 登录表单的背景颜色
+.login-form {
+  background-color: rgba(255, 255, 255, 0.75); // 半透明白色背景,可以根据需要调整透明度
+  border-radius: 5px; // 圆角边框
+  backdrop-filter: blur(10px); // 背景模糊效果,增强层次感
+  padding: 35px; // 内边距
 }
+
 </style>
 
 <style lang="scss">

+ 6 - 3
src/views/Login/components/LoginForm.vue

@@ -11,9 +11,12 @@
   >
     <el-row style="margin-right: -10px; margin-left: -10px">
       <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
-        <el-form-item>
-          <LoginFormTitle style="width: 100%" />
-        </el-form-item>
+        <div >
+        <h1 class="text-3xl font-semibold text-center mb-60px mt-40px">地质博物馆标本管理系统</h1>
+        </div>
+<!--        <el-form-item>-->
+<!--          <LoginFormTitle style="width: 100%" />-->
+<!--        </el-form-item>-->
       </el-col>
       <el-col :span="24" style="padding-right: 10px; padding-left: 10px">
 <!--        <el-form-item v-if="loginData.tenantEnable === 'true'" prop="tenantName">-->

+ 10 - 26
src/views/museums/specimenoutbound/OutboundApplication.vue

@@ -8,28 +8,21 @@
         ref="queryFormRef"
         :inline="true"
         label-width="68px">
-        <el-form-item label="标本ID" prop="infoId">
-          <el-input
-            v-model="queryParams.infoId"
-            placeholder="标本ID"
-            clearable
-            @keyup.enter="handleQuery"
-            class="!w-240px"
-          />
-        </el-form-item>
-        <el-form-item label="中文名称" prop="chineseName">
+
+        <el-form-item label="申请人姓名" prop="applicantName" label-width="85px">
           <el-input
-            v-model="queryParams.chineseName"
-            placeholder="请输入中文名称"
+            v-model="queryParams.applicantName"
+            placeholder="请输入申请人姓名"
             clearable
             @keyup.enter="handleQuery"
             class="!w-240px"
           />
         </el-form-item>
-        <el-form-item label="标本编号" prop="specimenNumber">
+
+        <el-form-item label="研究项目名称" prop="projectName" label-width="100px">
           <el-input
-            v-model="queryParams.specimenNumber"
-            placeholder="请输入申请出库的标本编号"
+            v-model="queryParams.projectName"
+            placeholder="请输入研究项目名称"
             clearable
             @keyup.enter="handleQuery"
             class="!w-240px"
@@ -60,16 +53,7 @@
               :value="dict.value"/>
           </el-select>
         </el-form-item>
-        <el-form-item label="标本状态" prop="sampleStatus">
-          <el-select
-            v-model="queryParams.sampleStatus"
-            placeholder="请选择标本状态"
-            clearable
-            class="!w-240px"
-          >
-            <el-option label="请选择字典生成" value=""/>
-          </el-select>
-        </el-form-item>
+
         <el-form-item>
           <el-button @click="handleQuery">
             <Icon icon="ep:search" class="mr-5px"/>
@@ -106,7 +90,7 @@
     <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="id"/>-->
         <el-table-column label="申请人姓名" align="center" width="120px" prop="applicantName" />
         <el-table-column label="申请单位" align="center" width="120px" prop="applicationUsage" />
         <el-table-column label="研究项目名称" align="center" prop="projectName" />

+ 26 - 25
src/views/museums/specimenoutbound/OutboundManagement.vue

@@ -9,34 +9,34 @@
       ref="queryFormRef"
       :inline="true"
       label-width="68px">
-      <el-form-item label="标本ID" prop="infoId">
-        <el-input
-          v-model="queryParams.infoId"
-          placeholder="标本ID"
-          clearable
-          @keyup.enter="handleQuery"
-          class="!w-240px"
-        />
-      </el-form-item>
-      <el-form-item label="中文名称" prop="chineseName">
+<!--      <el-form-item label="标本ID" prop="infoId">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.infoId"-->
+<!--          placeholder="标本ID"-->
+<!--          clearable-->
+<!--          @keyup.enter="handleQuery"-->
+<!--          class="!w-240px"-->
+<!--        />-->
+<!--      </el-form-item>-->
+      <el-form-item label="申请人姓名" prop="applicantName" label-width="100px">
         <el-input
-          v-model="queryParams.chineseName"
-          placeholder="请输入中文名称"
+          v-model="queryParams.applicantName"
+          placeholder="请输入申请人姓名"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="标本编号" prop="specimenNumber">
+      <el-form-item label="研究项目名称" prop="projectName" label-width="100px">
         <el-input
-          v-model="queryParams.specimenNumber"
-          placeholder="请输入申请出库的标本编号"
+          v-model="queryParams.projectName"
+          placeholder="请输入研究项目名称"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
         />
       </el-form-item>
-      <el-form-item label="申请日期" prop="applicationDate">
+      <el-form-item label="申请日期" prop="createTime">
         <el-date-picker
           v-model="queryParams.applicationDate"
           value-format="YYYY-MM-DD HH:mm:ss"
@@ -92,17 +92,17 @@
   <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="id" />-->
       <el-table-column label="申请人姓名" align="center" width="120px" prop="applicantName" />
       <el-table-column label="申请单位" align="center" width="120px" prop="applicationUsage" />
       <el-table-column label="研究项目名称" align="center" prop="projectName" />
-      <el-table-column
-        label="申请日期"
-        align="center"
-        prop="applicationDate"
-        :formatter="dateFormatter"
-        width="180px"
-      />
+<!--      <el-table-column-->
+<!--        label="申请日期"-->
+<!--        align="center"-->
+<!--        prop="createTime"-->
+<!--        :formatter="dateFormatter"-->
+<!--        width="180px"-->
+<!--      />-->
       <el-table-column label="审批状态" align="center" prop="status"  >
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.MUSEUMS_APPROAL_STATUS" :value="scope.row.status" />
@@ -202,7 +202,8 @@ const queryParams = reactive({
   returnDate: [],
   specimenCondition: undefined,
   createTime: [],
-  sampleStatus: undefined
+  sampleStatus: undefined,
+  projectName:undefined
 })
 const queryFormRef = ref() // 搜索的表单
 const exportLoading = ref(false) // 导出的加载中

+ 31 - 16
src/views/museums/specimenoutbound/SpecimenOutboundForm.vue

@@ -19,26 +19,29 @@
       <div>
       <el-button type="primary"
                  style="float: right ;margin-left: 5px; padding: 5px 10px; font-size: 12px;"
-                 @click="removeSpecimenNumber">-</el-button>
+                 @click="removeSpecimenNumber"
+                >-</el-button>
       <el-button type="primary"
                  style="float: right; padding: 5px 10px; font-size: 12px;"
                  @click="addSpecimenNumber">+</el-button>
          </div>
-      <el-form-item label="标本编号"  prop="number" label-width="150px">
-        <el-input v-model="formData.number[0]" placeholder="请输入标本编号" label-width="150px"/>
-      </el-form-item>
+<!--      <el-form-item label="标本编号"  prop="number" label-width="150px">-->
+<!--        <el-input v-model="formData.number" placeholder="请输入标本编号" label-width="150px"/>-->
+<!--      </el-form-item>-->
       <template v-if="formData.number && formData.number.length > 1">
         <el-form-item
-          v-for="(item, index) in formData.number.slice(1)"
-          :key="index + 1"
-          :label="`标本编号 ${index + 2}`"
+          v-for="item in numberArray"
+          :key="item"
+          :label="`标本编号 ${item + 1}`"
           prop="number"
           label-width="150px"
         >
-          <el-input v-model="formData.number[index + 1]" placeholder="请输入标本编号" />
+          <el-input v-model="formData.number[item]" placeholder="请输入标本编号" />
         </el-form-item>
       </template>
-
+<!--      <el-form-item label="标本编号" prop="number" label-width="150px" v-for="(item, index) in formData.number" :key="index">-->
+<!--        <el-input v-model="formData.number[index]" placeholder="请输入标本编号" label-width="150px" />-->
+<!--      </el-form-item>-->
       <el-form-item label="申请人姓名"  prop="applicantName" label-width="150px">
         <el-input v-model="formData.applicantName" placeholder="请输入申请人姓名" label-width="150px"/>
       </el-form-item>
@@ -93,7 +96,7 @@
 
 import {SpecimenOutboundApi, SpecimenOutboundVO} from '@/api/museums/specimenoutbound'
 //import { UploadFilled } from '@element-plus/icons-vue'
-import {ref, reactive, defineEmits} from "vue";
+import {ref, reactive, defineEmits,computed} from "vue";
 
 /** 标本出库回库信息 表单 */
 defineOptions({name: 'SpecimenOutboundForm'})
@@ -111,7 +114,7 @@ const formData = ref({
   id: undefined,
   infoId: [],
   chineseName: undefined,// 确保初始值为数组
-  number: [''],// 确保初始值为数组
+  number:[''] ,// 确保初始值为数组
   applicantName: undefined,
   applicationDate: undefined,
   applicationUsage: undefined,
@@ -144,6 +147,18 @@ const formRules = reactive({
 })
 const formRef = ref() // 表单 Ref
 /**增减标本编号**/
+
+// 将字符串解析为数组的计算属性
+const numberArray = computed(() => {
+  try {
+    // 尝试解析字符串为数组
+    return ref(JSON.parse(numberStr.value));
+  } catch (error) {
+    // 如果解析失败,返回一个包含空字符串的数组
+    console.error("解析标本编号失败", error);
+    return ref(['']);
+  }
+});
 const addSpecimenNumber = () => {
   formData.value.number.push(''); // 向数组中添加一个新的空字符串
 };
@@ -168,11 +183,11 @@ const open = async (type: string, id?: number) => {
       // if (!formData.value.number || !Array.isArray(formData.value.number) || formData.value.number.length === 0) {
       //   formData.value.number = ['']; // 如果不是数组或为空,则初始化为包含一个空字符串的数组
       // }
-      if (!Array.isArray(formData.value.number)) {
-        formData.value.number = [];// 如果不是数组,则转换为包含该数据的数组
-      } else if (formData.value.number.length === 0) {
-        formData.value.number = ['']; // 如果数组为空,则初始化为包含一个空字符串的数组
-      }
+      // if (!Array.isArray(formData.value.number)) {
+      //   formData.value.number = [];// 如果不是数组,则转换为包含该数据的数组
+      // } else if (formData.value.number.length === 0) {
+      //   formData.value.number = ['']; // 如果数组为空,则初始化为包含一个空字符串的数组
+      // }
 
     } finally {
       formLoading.value = false