Ver código fonte

笼位申请问题修复

xukai 4 meses atrás
pai
commit
b4a0564933
2 arquivos alterados com 142 adições e 47 exclusões
  1. 136 45
      src/view/animal/application/index.vue
  2. 6 2
      src/view/home/index.vue

+ 136 - 45
src/view/animal/application/index.vue

@@ -1,10 +1,27 @@
 <template>
   <div class="entry-container">
-    <div class="search-wrap" ref="searchWrapRef">
-      <el-form :model="state.queryParams" ref="queryRef">
+    <div
+      class="search-wrap"
+      ref="searchWrapRef"
+    >
+      <el-form
+        :model="state.queryParams"
+        ref="queryRef"
+      >
         <el-form-item prop="serialNo">
-          <el-select v-model="state.queryParams.approveStatus" style="width: 100%" placeholder="审批状态" clearable @change="search">
-            <el-option v-for="item in ApproveStatusList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+          <el-select
+            v-model="state.queryParams.approveStatus"
+            style="width: 100%"
+            placeholder="审批状态"
+            clearable
+            @change="search"
+          >
+            <el-option
+              v-for="item in ApproveStatusList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
           </el-select>
         </el-form-item>
         <el-form-item prop="serialNo">
@@ -18,30 +35,81 @@
             @change="search"
           />
         </el-form-item>
-        <el-form-item prop="serialNo">
-          <el-select v-model="state.queryParams.isMyself" placeholder="申请人" clearable @change="search">
-            <el-option label="我申请的" :value="1"></el-option>
-            <el-option label="全部" :value="0"></el-option>
+        <!-- <el-form-item prop="serialNo">
+          <el-select
+            v-model="state.queryParams.isMyself"
+            placeholder="申请人"
+            clearable
+            @change="search"
+          >
+            <el-option
+              label="我申请的"
+              :value="1"
+            ></el-option>
+            <el-option
+              label="全部"
+              :value="0"
+            ></el-option>
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
       </el-form>
       <div style="text-align: right">
-        <el-button @click="handleExport" style="height: 25px" type="primary">导出</el-button>
+        <el-button
+          @click="handleExport"
+          style="height: 25px"
+          type="primary"
+        >
+          导出
+        </el-button>
       </div>
     </div>
 
     <div class="list-container">
-      <van-list v-model:loading="state.loading" :finished="state.finished" finished-text="没有更多了" @load="onLoad">
-        <van-cell v-for="item in state.list" :key="item" @click="handleCheckDetail(item)">
+      <van-list
+        v-model:loading="state.loading"
+        :finished="state.finished"
+        finished-text="没有更多了"
+        @load="onLoad"
+      >
+        <van-cell
+          v-for="item in state.list"
+          :key="item"
+          @click="handleCheckDetail(item)"
+        >
           <template #default>
             <div class="list">
               <header class="flex justify-between">
                 <strong class="title">{{ `${item.userName}的笼位申请` }}</strong>
-                <van-tag v-if="item.approveStatus == ApproveStatus.WAIT_SUBMIT" type="warning">待提交</van-tag>
-                <van-tag v-else-if="item.approveStatus == ApproveStatus.APPROVING" type="primary">审核中</van-tag>
-                <van-tag v-else-if="item.approveStatus == ApproveStatus.PASS" type="success">通过</van-tag>
-                <van-tag v-else-if="item.approveStatus == ApproveStatus.REVOKE" type="success">撤销</van-tag>
-                <van-tag v-else-if="item.approveStatus == ApproveStatus.REFUSE" type="danger">拒绝</van-tag>
+                <van-tag
+                  v-if="item.approveStatus == ApproveStatus.WAIT_SUBMIT"
+                  type="warning"
+                >
+                  待提交
+                </van-tag>
+                <van-tag
+                  v-else-if="item.approveStatus == ApproveStatus.APPROVING"
+                  type="primary"
+                >
+                  审核中
+                </van-tag>
+                <van-tag
+                  v-else-if="item.approveStatus == ApproveStatus.PASS"
+                  type="success"
+                >
+                  通过
+                </van-tag>
+                <van-tag
+                  v-else-if="item.approveStatus == ApproveStatus.REVOKE"
+                  type="success"
+                >
+                  撤销
+                </van-tag>
+                <van-tag
+                  v-else-if="item.approveStatus == ApproveStatus.REFUSE"
+                  type="danger"
+                >
+                  拒绝
+                </van-tag>
               </header>
               <p class="inst-title">
                 <span>课题名称</span>
@@ -106,8 +174,9 @@
                     style="height: 25px"
                     type="primary"
                     @click="handleRefundable(item)"
-                    >退还</el-button
                   >
+                    退还
+                  </el-button>
                 </span>
                 <span class="time">{{ formatDate(new Date(item.createdTime), 'YYYY-mm-dd') }}</span>
               </footer>
@@ -117,11 +186,28 @@
       </van-list>
     </div>
 
-    <ApplicationModal ref="cageApplicationModalRef" @refresh="handleRefresh" />
-    <DetailModal :showDialog="showDetailDialog" :isReturnCageList="false" ref="detailModalRef" @close="() => (showDetailDialog = false)" />
-    <ReturnCageDialog ref="returnCageDialogRef" :currentRefundableItemNumber="currentRefundableItemNumber" :getTableData="handleRefresh" />
+    <ApplicationModal
+      ref="cageApplicationModalRef"
+      @refresh="handleRefresh"
+    />
+    <DetailModal
+      :showDialog="showDetailDialog"
+      :isReturnCageList="false"
+      ref="detailModalRef"
+      @close="() => (showDetailDialog = false)"
+    />
+    <ReturnCageDialog
+      ref="returnCageDialogRef"
+      :currentRefundableItemNumber="currentRefundableItemNumber"
+      :getTableData="handleRefresh"
+    />
 
-    <van-floating-bubble v-model:offset="offset" icon="plus" @click="handleApplication" axis="y" />
+    <van-floating-bubble
+      v-model:offset="offset"
+      icon="plus"
+      @click="handleApplication"
+      axis="y"
+    />
   </div>
 </template>
 
@@ -129,22 +215,22 @@
   import { ref, reactive, onMounted, defineAsyncComponent } from 'vue'
   import to from 'await-to-js'
   import dayjs from 'dayjs'
-  import { storeToRefs } from 'pinia'
   import { useRouter, useRoute } from 'vue-router'
 
   import { formatDate } from '/@/utils/formatTime'
-  import { useUserInfo } from '/@/stores/userInfo'
   import { usePlatAnimalCageApplicationApi } from '/@/api/platform/animal'
   import { ApproveStatus, ReturnStatus, LeavelList, ApproveStatusList } from '/@/constants/pageConstants'
+  import { useUserInfos } from '/@/hooks/useUserInfos'
 
   const ApplicationModal = defineAsyncComponent(() => import('/@/view/animal/application/components/Application.vue'))
   const DetailModal = defineAsyncComponent(() => import('/@/view/animal/application/components/Detail.vue'))
-  const ReturnCageDialog = defineAsyncComponent(() => import('/@/view/animal/application/components/ReturnCageDialog.vue'))
+  const ReturnCageDialog = defineAsyncComponent(
+    () => import('/@/view/animal/application/components/ReturnCageDialog.vue'),
+  )
 
   const platAnimalCageApplicationApi = usePlatAnimalCageApplicationApi()
-  const stores = useUserInfo()
-  const { userInfos } = storeToRefs(stores)
 
+  const { userInfos } = useUserInfos()
   const router = useRouter()
   const route = useRoute()
 
@@ -166,11 +252,11 @@
       startDate: '',
       endDate: '',
       approveStatus: '',
-      isMyself: 0
+      isMyself: userInfos.value.userRoles === 'project_group_member' ? 1 : 0,
     },
     finished: false,
     loading: true,
-    list: [] as any[]
+    list: [] as any[],
   })
   const currentRefundableItemNumber = ref<number>(0)
 
@@ -186,7 +272,7 @@
       startDate: '',
       endDate: '',
       approveStatus: '',
-      isMyself: 0
+      isMyself: userInfos.value.userRoles === 'project_group_member' ? 1 : 0,
     }
     ;(state.finished = false), (state.loading = true), (state.list = [] as any[])
   }
@@ -194,7 +280,7 @@
   const setListPayload = (isExport?: boolean) => {
     const payload = {
       ...state.queryParams,
-      pageSize: isExport ? 99999 : state.queryParams.pageSize
+      pageSize: isExport ? 99999 : state.queryParams.pageSize,
     }
 
     if (dateTime.value && dateTime.value[0]) {
@@ -231,23 +317,26 @@
     const [err, res]: ToResponse = await to(
       platAnimalCageApplicationApi.getList({
         ...setListPayload(),
-        pageNum: isSearch ? 1 : state.queryParams.pageNum
-      })
+        pageNum: isSearch ? 1 : state.queryParams.pageNum,
+      }),
     )
     if (err) return
-    const list = res?.data?.list || []
-    state.loading = false
 
-    if (!isSearch) {
-      for (const item of list) {
-        state.list.push(item)
-      }
-      state.queryParams.pageNum++
-      if (list.length < state.queryParams.pageSize) {
-        state.finished = true
+    if (res && res.data && res.data.list) {
+      const list = res.data.list || []
+      state.loading = false
+
+      if (!isSearch) {
+        for (const item of list) {
+          state.list.push(item)
+        }
+        state.queryParams.pageNum++
+        if (list.length < state.queryParams.pageSize) {
+          state.finished = true
+        }
+      } else {
+        state.list = list
       }
-    } else {
-      state.list = list
     }
   }
 
@@ -275,7 +364,9 @@
   }
 
   const handleExport = async () => {
-    const [err, res]: ToResponse = await to(platAnimalCageApplicationApi.getApplicationListExport({ ...setListPayload(true), base64Enable: 1 }))
+    const [err, res]: ToResponse = await to(
+      platAnimalCageApplicationApi.getApplicationListExport({ ...setListPayload(true), base64Enable: 1 }),
+    )
 
     if (err) return
 

+ 6 - 2
src/view/home/index.vue

@@ -55,11 +55,11 @@
           <img src="../../assets/img/更多应用.png" alt="" />
           <p>更多应用</p>
         </li> -->
-        <li @click="onRouterPush('/inst/repairReport/home')">
+        <li @click="onRouterPush('/inst/repairReport/home')" v-if="userInfos.userRoles !== 'project_group_member'">
           <img src="../../assets/img/更多应用.png" alt="" />
           <p>仪器报修</p>
         </li>
-        <li @click="onRouterPush('/lab/inspection/home')">
+        <li @click="onRouterPush('/lab/inspection/home')" v-if="userInfos.userRoles !== 'project_group_member'">
           <img src="../../assets/img/更多应用.png" alt="" />
           <p>巡检任务</p>
         </li>
@@ -123,6 +123,10 @@
   import { useNewsApi } from '/@/api/system/news'
   import { useTrainingApi } from '/@/api/training'
   import { useRouter } from 'vue-router'
+
+  import { useUserInfos } from '/@/hooks/useUserInfos'
+
+  const { userInfos } = useUserInfos()
   const newsApi = useNewsApi()
   const dictApi = useDictApi()
   const proApi = useProApi()