mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-07 00:36:41 +08:00
feat 历史记录批量重新整理
This commit is contained in:
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user