mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-07-06 23:11:43 +08:00
feat(settings): AccountSettingSearch
- 增加 整合多名称资源搜索结果、下载站点字幕、交互式搜索自动下载用户
This commit is contained in:
@@ -16,6 +16,18 @@ const allSites = ref<Site[]>([])
|
|||||||
// 选中订阅站点
|
// 选中订阅站点
|
||||||
const selectedSites = ref<number[]>([])
|
const selectedSites = ref<number[]>([])
|
||||||
|
|
||||||
|
// 系统设置
|
||||||
|
const SystemSettings = ref<any>({
|
||||||
|
Basis: {
|
||||||
|
|
||||||
|
},
|
||||||
|
Advanced: {
|
||||||
|
SEARCH_MULTIPLE_NAME: false,
|
||||||
|
DOWNLOAD_SUBTITLE: false,
|
||||||
|
AUTO_DOWNLOAD_USER: '',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
// 媒体信息数据源字典
|
// 媒体信息数据源字典
|
||||||
const mediaSourcesDict = [
|
const mediaSourcesDict = [
|
||||||
{
|
{
|
||||||
@@ -95,7 +107,7 @@ const saveSelectedSites = debounce(async () => {
|
|||||||
}
|
}
|
||||||
}, debounceTime)
|
}, debounceTime)
|
||||||
|
|
||||||
// 调用API查询下载器设置
|
// 调用API查询设置
|
||||||
async function loadSearchSetting() {
|
async function loadSearchSetting() {
|
||||||
try {
|
try {
|
||||||
const result1: { [key: string]: any } = await api.get('system/setting/SEARCH_SOURCE')
|
const result1: { [key: string]: any } = await api.get('system/setting/SEARCH_SOURCE')
|
||||||
@@ -121,20 +133,76 @@ const saveSearchSetting = debounce(async () => {
|
|||||||
)
|
)
|
||||||
|
|
||||||
if (result1.success && result2.success) {
|
if (result1.success && result2.success) {
|
||||||
$toast.success('保存媒体数据源设置成功')
|
$toast.success('保存设置成功')
|
||||||
|
await reloadSystem()
|
||||||
} else {
|
} else {
|
||||||
$toast.error('保存媒体数据源设置失败!')
|
$toast.error('保存设置失败!')
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error)
|
console.log(error)
|
||||||
}
|
}
|
||||||
}, debounceTime)
|
}, debounceTime)
|
||||||
|
|
||||||
|
// 加载系统设置
|
||||||
|
async function loadSystemSettings() {
|
||||||
|
try {
|
||||||
|
const result: { [key: string]: any } = await api.get('system/env')
|
||||||
|
if (result.success) {
|
||||||
|
// 将API返回的值赋值给SystemSettings
|
||||||
|
for (const sectionKey of Object.keys(SystemSettings.value) as Array<keyof typeof SystemSettings.value>) {
|
||||||
|
Object.keys(SystemSettings.value[sectionKey]).forEach((key: string) => {
|
||||||
|
let v: any
|
||||||
|
if (result.data.hasOwnProperty(key)) {
|
||||||
|
v = result.data[key]
|
||||||
|
// 空字符串转为null,避免空字符串导致前端显示问题
|
||||||
|
if (v === '') {
|
||||||
|
v = null
|
||||||
|
}
|
||||||
|
(SystemSettings.value[sectionKey] as any)[key] = v
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else $toast.error('加载设置失败!')
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 保存设置
|
||||||
|
const saveSystemSettings = debounce(async (value: any) => {
|
||||||
|
try {
|
||||||
|
const result: { [key: string]: any } = await api.post('system/env', value)
|
||||||
|
if (result.success) {
|
||||||
|
$toast.success('保存设置成功')
|
||||||
|
await reloadSystem()
|
||||||
|
await loadSystemSettings()
|
||||||
|
} else {
|
||||||
|
$toast.error('保存设置失败!')
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
|
}, debounceTime)
|
||||||
|
|
||||||
|
// 重载系统生效配置
|
||||||
|
async function reloadSystem() {
|
||||||
|
try {
|
||||||
|
const result: { [key: string]: any } = await api.get('system/reload')
|
||||||
|
if (result.success) {
|
||||||
|
$toast.success('系统配置已生效')
|
||||||
|
await loadSystemSettings()
|
||||||
|
} else $toast.error('重载系统失败!')
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
querySites()
|
querySites()
|
||||||
queryFilterRuleGroups()
|
queryFilterRuleGroups()
|
||||||
querySelectedSites()
|
querySelectedSites()
|
||||||
loadSearchSetting()
|
loadSearchSetting()
|
||||||
|
loadSystemSettings()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -155,7 +223,7 @@ onMounted(() => {
|
|||||||
clearable
|
clearable
|
||||||
chips
|
chips
|
||||||
:items="mediaSourcesDict"
|
:items="mediaSourcesDict"
|
||||||
label="媒体数据源"
|
label="媒体搜索数据源"
|
||||||
hint="搜索媒体信息时使用的数据源以及排序"
|
hint="搜索媒体信息时使用的数据源以及排序"
|
||||||
persistent-hint
|
persistent-hint
|
||||||
/>
|
/>
|
||||||
@@ -215,4 +283,49 @@ onMounted(() => {
|
|||||||
</VCard>
|
</VCard>
|
||||||
</VCol>
|
</VCol>
|
||||||
</VRow>
|
</VRow>
|
||||||
|
<VRow>
|
||||||
|
<VCol cols="12">
|
||||||
|
<VCard>
|
||||||
|
<VCardItem>
|
||||||
|
<VCardTitle>高级设置</VCardTitle>
|
||||||
|
<VCardSubtitle>设置交互搜索自动下载用户ID、字幕。</VCardSubtitle>
|
||||||
|
</VCardItem>
|
||||||
|
<VCardText>
|
||||||
|
<VRow>
|
||||||
|
<VCol cols="12" md="6">
|
||||||
|
<VSwitch
|
||||||
|
v-model="SystemSettings.Advanced.SEARCH_MULTIPLE_NAME"
|
||||||
|
label="整合多名称资源搜索结果"
|
||||||
|
hint="搜索多个名称的资源时,整合多名称的结果"
|
||||||
|
persistent-hint
|
||||||
|
/>
|
||||||
|
</VCol>
|
||||||
|
<VCol cols="12" md="6">
|
||||||
|
<VSwitch
|
||||||
|
v-model="SystemSettings.Advanced.DOWNLOAD_SUBTITLE"
|
||||||
|
label="下载站点字幕"
|
||||||
|
hint="当选定的资源所在站点中,存在字幕文件时,同步自动下载"
|
||||||
|
persistent-hint
|
||||||
|
/>
|
||||||
|
</VCol>
|
||||||
|
<VCol cols="12">
|
||||||
|
<VCombobox
|
||||||
|
v-model="SystemSettings.Advanced.AUTO_DOWNLOAD_USER"
|
||||||
|
label="交互式搜索自动下载用户"
|
||||||
|
hint="针对使用tg、微信等第三方交互的特化功能。使用逗号分割,设置为 all 代表所有用户自动择优下载,未设置时,需要用户手动选择资源 或 回复 ` 0 ` 才自动择优下载"
|
||||||
|
persistent-hint
|
||||||
|
/>
|
||||||
|
</VCol>
|
||||||
|
</VRow>
|
||||||
|
</VCardText>
|
||||||
|
<VCardText>
|
||||||
|
<VForm @submit.prevent="() => {}">
|
||||||
|
<div class="d-flex flex-wrap gap-4 mt-4">
|
||||||
|
<VBtn type="submit" @click="saveSystemSettings(SystemSettings.Advanced)"> 保存 </VBtn>
|
||||||
|
</div>
|
||||||
|
</VForm>
|
||||||
|
</VCardText>
|
||||||
|
</VCard>
|
||||||
|
</VCol>
|
||||||
|
</VRow>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
Reference in New Issue
Block a user