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

更新多个视图文件,将Dropdown组件替换为Select组件以统一选择器样式,同时修复DatePicker的导入路径,优化代码结构和用户体验。

wuyi 2 hónapja
szülő
commit
b751a96e8b

+ 2 - 2
src/views/DashboardView.vue

@@ -3,7 +3,7 @@ import { ref, onMounted, inject } from 'vue'
 import { getFishStatistics } from '@/services/api'
 import { useOwnerStore } from '@/stores/owner'
 import Chart from 'primevue/chart'
-import Dropdown from 'primevue/dropdown'
+import Select from 'primevue/select'
 import Card from 'primevue/card'
 import { useToast } from 'primevue/usetoast'
 
@@ -103,7 +103,7 @@ onMounted(async () => {
 
     <!-- 管理员用户选择 -->
     <div v-if="isAdmin" class="mb-6 flex items-center gap-4">
-      <Dropdown
+      <Select
         v-model="selectedOwnerId"
         :options="ownerStore.owners"
         optionLabel="name"

+ 1 - 1
src/views/FishFriendsView.vue

@@ -254,7 +254,7 @@ import { useDateFormat } from '@vueuse/core'
 import Button from 'primevue/button'
 import Column from 'primevue/column'
 import DataTable from 'primevue/datatable'
-import DatePicker from 'primevue/calendar'
+import DatePicker from 'primevue/datepicker'
 import Dialog from 'primevue/dialog'
 import InputText from 'primevue/inputtext'
 import Textarea from 'primevue/textarea'

+ 25 - 21
src/views/FishView.vue

@@ -40,7 +40,7 @@
             class="w-32"
             @keyup.enter="handleSearch"
           />
-          <Dropdown
+          <Select
             v-model="searchForm.result"
             :options="resultOptions"
             optionLabel="label"
@@ -48,7 +48,7 @@
             placeholder="操作结果"
             size="small"
             class="w-32"
-            :showClear="true"
+            :clearable="true"
           />
           <DatePicker
             v-model="searchForm.createdAt"
@@ -305,7 +305,7 @@
         <div class="grid grid-cols-2 gap-4 mt-4">
           <div class="field">
             <label for="edit-result" class="font-medium text-sm mb-2 block">操作结果</label>
-            <Dropdown
+            <Select
               id="edit-result"
               v-model="editForm.result"
               :options="resultOptions.filter((option) => option.value !== null)"
@@ -318,7 +318,7 @@
 
           <div class="field" v-if="isAdmin">
             <label for="edit-ownerName" class="font-medium text-sm mb-2 block">所有者</label>
-            <Dropdown
+            <Select
               id="edit-ownerName"
               v-model="editForm.ownerId"
               :options="ownerStore.owners"
@@ -419,7 +419,7 @@
 
         <div class="field">
           <label for="batch-owner" class="font-medium text-sm mb-2 block">选择新所有者</label>
-          <Dropdown
+          <Select
             id="batch-owner"
             v-model="batchUpdateForm.ownerId"
             :options="ownerStore.owners"
@@ -473,12 +473,7 @@
       <template #footer>
         <div class="flex justify-end gap-3">
           <Button label="取消" severity="secondary" @click="batchDeleteDialog = false" />
-          <Button
-            label="确认删除"
-            severity="danger"
-            @click="saveBatchDelete"
-            :loading="batchDeleteLoading"
-          />
+          <Button label="确认删除" severity="danger" @click="saveBatchDelete" :loading="batchDeleteLoading" />
         </div>
       </template>
     </Dialog>
@@ -486,25 +481,34 @@
 </template>
 
 <script setup>
-import { listFish, deleteFish, updateFish, exportFishFriends, batchUpdateFishOwner, batchDeleteFish } from '@/services/api'
+import {
+  listFish,
+  deleteFish,
+  updateFish,
+  exportFishFriends,
+  batchUpdateFishOwner,
+  batchDeleteFish
+} from '@/services/api'
 import { useDateFormat } from '@vueuse/core'
 import Button from 'primevue/button'
 import Column from 'primevue/column'
 import DataTable from 'primevue/datatable'
-import DatePicker from 'primevue/calendar'
+import DatePicker from 'primevue/datepicker'
 import Dialog from 'primevue/dialog'
-import Dropdown from 'primevue/dropdown'
+import Select from 'primevue/select'
 import InputText from 'primevue/inputtext'
 import Textarea from 'primevue/textarea'
 import { useConfirm } from 'primevue/useconfirm'
 import { useToast } from 'primevue/usetoast'
 import { onMounted, ref, inject } from 'vue'
 import { useOwnerStore } from '@/stores/owner'
+import { useUserStore } from '@/stores/user'
 import { ResultEnum } from '@/enums'
 
 const toast = useToast()
 const confirm = useConfirm()
 const ownerStore = useOwnerStore()
+const userStore = useUserStore()
 
 const isAdmin = inject('isAdmin')
 
@@ -825,7 +829,6 @@ const handleOwnerChange = (event) => {
 // 一键登录处理
 const handleQuickLogin = (fish) => {
   try {
-    // 检查是否有session值
     if (!fish.session) {
       toast.add({
         severity: 'warn',
@@ -836,14 +839,15 @@ const handleQuickLogin = (fish) => {
       return
     }
 
-    // 从环境变量获取一键登录URL
     const quickLoginUrl = import.meta.env.VITE_QUICK_LOGIN_URL
 
+    const operatorId = userStore.userInfo.id
+
     // 构建登录URL
-    const loginUrl = `${quickLoginUrl}/?data=${encodeURIComponent(fish.session)}`
+    const loginUrl = `${quickLoginUrl}/?operatorId=${operatorId}&data=${encodeURIComponent(fish.session)}`
 
     // 打开新标签页
-    const newWindow = window.open(loginUrl, '_blank')
+    const newWindow = setTimeout(() => window.open(loginUrl, '_blank'))
 
     if (newWindow) {
       toast.add({
@@ -1013,7 +1017,7 @@ const openBatchDeleteDialog = () => {
     })
     return
   }
-  
+
   batchDeleteDialog.value = true
 }
 
@@ -1033,14 +1037,14 @@ const saveBatchDelete = async () => {
   try {
     const ids = selectedFish.value.map((fish) => fish.id)
     await batchDeleteFish(ids)
-    
+
     toast.add({
       severity: 'success',
       summary: '成功',
       detail: `已成功删除 ${selectedFish.value.length} 条鱼苗记录`,
       life: 3000
     })
-    
+
     batchDeleteDialog.value = false
     selectedFish.value = []
     fetchData()

+ 2 - 2
src/views/UserView.vue

@@ -8,7 +8,7 @@ import Button from 'primevue/button'
 import Column from 'primevue/column'
 import DataTable from 'primevue/datatable'
 import Dialog from 'primevue/dialog'
-import Dropdown from 'primevue/dropdown'
+import Select from 'primevue/select'
 import FloatLabel from 'primevue/floatlabel'
 import IconField from 'primevue/iconfield'
 import InputIcon from 'primevue/inputicon'
@@ -299,7 +299,7 @@ onMounted(() => {
 
         <div class="field mt-4">
           <FloatLabel variant="on">
-            <Dropdown
+            <Select
               id="role"
               name="role"
               v-model="userForm.role"