|
|
@@ -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()
|