mirror of
https://github.com/ngfchl/ptools
synced 2023-07-10 13:41:22 +08:00
根据tracker地址返回站点名称,并实现筛选筛选功能
This commit is contained in:
@@ -97,7 +97,7 @@ def get_downloading(request):
|
|||||||
id = request.GET.get('id')
|
id = request.GET.get('id')
|
||||||
print(id)
|
print(id)
|
||||||
downloader = Downloader.objects.filter(id=id).first()
|
downloader = Downloader.objects.filter(id=id).first()
|
||||||
tracker_filters = Site.objects.all().values('id', 'name', 'tracker')
|
tracker_list = Site.objects.all().values('id', 'name', 'tracker')
|
||||||
qb_client = qbittorrentapi.Client(
|
qb_client = qbittorrentapi.Client(
|
||||||
host=downloader.host,
|
host=downloader.host,
|
||||||
port=downloader.port,
|
port=downloader.port,
|
||||||
@@ -163,7 +163,7 @@ def get_downloading(request):
|
|||||||
print(len(torrents))
|
print(len(torrents))
|
||||||
main_data['torrents'] = torrents
|
main_data['torrents'] = torrents
|
||||||
# print(tracker_filters)
|
# print(tracker_filters)
|
||||||
main_data['tracker_filters'] = list(tracker_filters)
|
main_data['tracker_list'] = list(tracker_list)
|
||||||
# return JsonResponse(CommonResponse.success(data=torrents).to_dict(), safe=False)
|
# return JsonResponse(CommonResponse.success(data=torrents).to_dict(), safe=False)
|
||||||
return JsonResponse(CommonResponse.success(data=main_data).to_dict(), safe=False)
|
return JsonResponse(CommonResponse.success(data=main_data).to_dict(), safe=False)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
@@ -58,7 +58,10 @@
|
|||||||
@click="handleButtonClick(downloader.id)">
|
@click="handleButtonClick(downloader.id)">
|
||||||
<span v-text="downloader.name"></span>
|
<span v-text="downloader.name"></span>
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button size="small" type="danger" icon="el-icon-pause" @click="stopRefresh">停止刷新</el-button>
|
<el-button size="small" type="danger" v-if="refresh" icon="el-icon-pause" @click="stopRefresh">停止刷新
|
||||||
|
</el-button>
|
||||||
|
<el-button size="small" type="success" v-else="refresh" icon="el-icon-pause" @click="stopRefresh">停止刷新
|
||||||
|
</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
<el-dropdown split-button type="primary" size="mini" @command="handleSelected">
|
<el-dropdown split-button type="primary" size="mini" @command="handleSelected">
|
||||||
操作
|
操作
|
||||||
@@ -153,6 +156,13 @@
|
|||||||
:filter-method="filterStateMethod"
|
:filter-method="filterStateMethod"
|
||||||
:filter-multiple="false"
|
:filter-multiple="false"
|
||||||
title="分类"></vxe-table-column>
|
title="分类"></vxe-table-column>
|
||||||
|
<vxe-table-column field="tracker" sortable
|
||||||
|
:filters="[]"
|
||||||
|
:formatter="handleTracker"
|
||||||
|
:filter-method="filterTrackerMethod"
|
||||||
|
:filter-multiple="false"
|
||||||
|
min-width="110"
|
||||||
|
title="Tracker"></vxe-table-column>
|
||||||
<vxe-table-column field="state" sortable width="85" :formatter="handleState" column-key="state"
|
<vxe-table-column field="state" sortable width="85" :formatter="handleState" column-key="state"
|
||||||
:filter-method="filterStateMethod"
|
:filter-method="filterStateMethod"
|
||||||
:filters="stateFilters" :filter-multiple="false" title="状态"></vxe-table-column>
|
:filters="stateFilters" :filter-multiple="false" title="状态"></vxe-table-column>
|
||||||
@@ -198,9 +208,6 @@
|
|||||||
show-header-overflow show-overflow="tooltip"
|
show-header-overflow show-overflow="tooltip"
|
||||||
show-footer-overflow
|
show-footer-overflow
|
||||||
title="添加时间"></vxe-table-column>
|
title="添加时间"></vxe-table-column>
|
||||||
<vxe-table-column field="tracker"
|
|
||||||
title="Tracker"></vxe-table-column>
|
|
||||||
|
|
||||||
<template #empty>
|
<template #empty>
|
||||||
<span style="color: red;">
|
<span style="color: red;">
|
||||||
<img src="https://pic2.zhimg.com/50/v2-f7031359103859e1ed38559715ef5f3f_hd.gif">
|
<img src="https://pic2.zhimg.com/50/v2-f7031359103859e1ed38559715ef5f3f_hd.gif">
|
||||||
@@ -267,6 +274,7 @@
|
|||||||
downloaders: [],
|
downloaders: [],
|
||||||
loading: false,
|
loading: false,
|
||||||
mainData: {},
|
mainData: {},
|
||||||
|
tracker_list: [],
|
||||||
dialogFormVisible: false,
|
dialogFormVisible: false,
|
||||||
timer: {},
|
timer: {},
|
||||||
deleteForm: false,
|
deleteForm: false,
|
||||||
@@ -443,6 +451,11 @@
|
|||||||
clearInterval(this.timer)
|
clearInterval(this.timer)
|
||||||
this.timer = null
|
this.timer = null
|
||||||
},
|
},
|
||||||
|
startRefresh() {
|
||||||
|
this.timer = setInterval(() => {
|
||||||
|
this.get_downloading(this.downloaders[0].id)
|
||||||
|
}, 1500)
|
||||||
|
},
|
||||||
handleButtonClick(id) {
|
handleButtonClick(id) {
|
||||||
const loading = this.$loading({
|
const loading = this.$loading({
|
||||||
lock: true, //lock的修改符--默认是false
|
lock: true, //lock的修改符--默认是false
|
||||||
@@ -494,6 +507,13 @@
|
|||||||
).then(res => {
|
).then(res => {
|
||||||
if (res.data.code === 0) {
|
if (res.data.code === 0) {
|
||||||
this.mainData = res.data.data
|
this.mainData = res.data.data
|
||||||
|
this.tracker_list = this.mainData.tracker_list;
|
||||||
|
const trackerFilter = [{label: '无', value: ''}]
|
||||||
|
this.tracker_list.forEach((value, index, array) => {
|
||||||
|
{#console.log(value, index)#}
|
||||||
|
trackerFilter.push({'label': value.name, 'value': value.tracker})
|
||||||
|
})
|
||||||
|
{#console.log(trackerFilter)#}
|
||||||
// 任务状态过滤器数据
|
// 任务状态过滤器数据
|
||||||
this.categoryFilters = [{label: '未分类', value: ''}]
|
this.categoryFilters = [{label: '未分类', value: ''}]
|
||||||
this.categories = []
|
this.categories = []
|
||||||
@@ -506,13 +526,18 @@
|
|||||||
const $table = this.$refs.dataTable
|
const $table = this.$refs.dataTable
|
||||||
{#console.log($table)#}
|
{#console.log($table)#}
|
||||||
if ($table) {
|
if ($table) {
|
||||||
const nameColumn = $table.getColumnByField('category')
|
const categoryColumn = $table.getColumnByField('category')
|
||||||
{#console.log(nameColumn)#}
|
{#console.log(nameColumn)#}
|
||||||
if (nameColumn) {
|
if (categoryColumn) {
|
||||||
$table.setFilter(nameColumn, this.categoryFilters)
|
$table.setFilter(categoryColumn, this.categoryFilters)
|
||||||
|
}
|
||||||
|
const trackerColumn = $table.getColumnByField('tracker')
|
||||||
|
console.log(trackerColumn)
|
||||||
|
if (trackerColumn) {
|
||||||
|
$table.setFilter(trackerColumn, trackerFilter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(res.data.data.tracker_filters)
|
{#console.log(res.data.data.tracker_filters)#}
|
||||||
this.server_state = res.data.data.server_state
|
this.server_state = res.data.data.server_state
|
||||||
// 获取种子
|
// 获取种子
|
||||||
//this.$message({
|
//this.$message({
|
||||||
@@ -557,6 +582,12 @@
|
|||||||
handleRatio({row, column, cellValue, index}) {
|
handleRatio({row, column, cellValue, index}) {
|
||||||
return cellValue.toFixed(4)
|
return cellValue.toFixed(4)
|
||||||
},
|
},
|
||||||
|
handleTracker({row, column, cellValue, index}) {
|
||||||
|
// 格式化输出tracker所属的站点
|
||||||
|
let site = this.tracker_list.find(site => cellValue.includes(site.tracker))
|
||||||
|
{#console.log(site)#}
|
||||||
|
return site ? site.name : cellValue
|
||||||
|
},
|
||||||
handleState({row, column, cellValue, index}) {
|
handleState({row, column, cellValue, index}) {
|
||||||
return download_state[cellValue]
|
return download_state[cellValue]
|
||||||
},
|
},
|
||||||
@@ -564,6 +595,10 @@
|
|||||||
const property = column['property'];
|
const property = column['property'];
|
||||||
return row[property] === value;
|
return row[property] === value;
|
||||||
},
|
},
|
||||||
|
filterTrackerMethod({value, row, column}) {
|
||||||
|
const property = column['property'];
|
||||||
|
return row[property].includes(value);
|
||||||
|
},
|
||||||
handleSelected(command, category = '', delete_files = false, enable = 'True') {
|
handleSelected(command, category = '', delete_files = false, enable = 'True') {
|
||||||
let ids = []
|
let ids = []
|
||||||
if (this.selected_rows.length <= 0) {
|
if (this.selected_rows.length <= 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user