feat 历史记录批量重新整理

This commit is contained in:
jxxghp
2023-09-27 08:45:55 +08:00
parent 7197034eda
commit 745f99e52e
+42 -18
View File
@@ -1,7 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue' import { ref } from 'vue'
import { useToast } from 'vue-toast-notification' import { useToast } from 'vue-toast-notification'
import { numberValidator, requiredValidator } from '@/@validators' import { numberValidator } from '@/@validators'
import api from '@/api' import api from '@/api'
import type { TransferHistory } from '@/api/types' import type { TransferHistory } from '@/api/types'
import TmdbSelectorCard from '@/components/cards/TmdbSelectorCard.vue' import TmdbSelectorCard from '@/components/cards/TmdbSelectorCard.vue'
@@ -20,6 +20,7 @@ const redoType = ref('电影')
// 类型下拉框:电影、电视剧 // 类型下拉框:电影、电视剧
const redoTypeItems = ref([ const redoTypeItems = ref([
{ title: '自动', value: '' },
{ title: '电影', value: '电影' }, { title: '电影', value: '电影' },
{ title: '电视剧', value: '电视剧' }, { title: '电视剧', value: '电视剧' },
]) ])
@@ -216,27 +217,24 @@ async function removeHistoryBatch() {
deleteConfirmDialog.value = true deleteConfirmDialog.value = true
} }
// 重新整理 // 批量重新整理
async function rehandleHistory() { async function retransferBatch() {
if (selected.value.length === 0)
return
for (const item of selected.value)
await retransfer(item)
}
// 调API重新整理
async function retransfer(item: TransferHistory, redoType = '', redoTmdbId = 0) {
try { try {
if (!redoTmdbId.value || !redoType.value)
return
redoDialog.value = false
$toast.info(`正在重新整理 ${currentHistory.value?.title} ...`)
// 调用API接口重新转移
const requestData = {
...currentHistory.value,
}
const result: { [key: string]: any } = await api.post( const result: { [key: string]: any } = await api.post(
'history/transfer', 'history/transfer',
requestData, item,
{ {
params: { params: {
mtype: redoType.value, mtype: redoType,
new_tmdbid: parseInt(redoTmdbId.value), new_tmdbid: redoTmdbId,
}, },
}, },
) )
@@ -256,6 +254,23 @@ async function rehandleHistory() {
} }
} }
// 重新整理
async function rehandleHistory() {
try {
redoDialog.value = false
if (!redoTmdbId.value)
redoTmdbId.value = '0'
$toast.info(`正在重新整理 ${currentHistory.value?.title} ...`)
// 调用API接口重新转移
await retransfer(currentHistory.value as TransferHistory, redoType.value, parseInt(redoTmdbId.value))
}
catch (e) {
console.log(e)
}
}
// 弹出菜单 // 弹出菜单
const dropdownItems = ref([ const dropdownItems = ref([
{ {
@@ -264,6 +279,8 @@ const dropdownItems = ref([
props: { props: {
prependIcon: 'mdi-redo-variant', prependIcon: 'mdi-redo-variant',
click: (item: TransferHistory) => { click: (item: TransferHistory) => {
redoTmdbId.value = ''
redoType.value = ''
redoDialog.value = true redoDialog.value = true
currentHistory.value = item currentHistory.value = item
}, },
@@ -404,7 +421,6 @@ const dropdownItems = ref([
<VSelect <VSelect
v-model="redoType" v-model="redoType"
label="类型" label="类型"
:rules="[requiredValidator]"
:items="redoTypeItems" :items="redoTypeItems"
/> />
</VCol> </VCol>
@@ -412,6 +428,7 @@ const dropdownItems = ref([
<VTextField <VTextField
v-model="redoTmdbId" v-model="redoTmdbId"
label="TMDB编号" label="TMDB编号"
placeholder="留空自动识别"
:rules="[numberValidator]" :rules="[numberValidator]"
append-inner-icon="mdi-magnify" append-inner-icon="mdi-magnify"
@click:append-inner.stop="tmdbSelectorDialog = true" @click:append-inner.stop="tmdbSelectorDialog = true"
@@ -432,6 +449,13 @@ const dropdownItems = ref([
</VCard> </VCard>
</VDialog> </VDialog>
<span v-if="selected.length > 0" class="fixed right-5 bottom-5"> <span v-if="selected.length > 0" class="fixed right-5 bottom-5">
<VBtn
icon="mdi-redo-variant"
class="me-2"
color="primary"
size="x-large"
@click="retransferBatch"
/>
<VBtn <VBtn
icon="mdi-trash-can-outline" icon="mdi-trash-can-outline"
color="error" color="error"