点击已签到按钮可查看签到历史

This commit is contained in:
ngfchl
2022-12-22 01:42:57 +08:00
parent c6a55ea189
commit b664efeee9
4 changed files with 109 additions and 9 deletions

View File

@@ -27,6 +27,7 @@ urlpatterns = [
path(r'sign_in_api', views.sign_in_api, name='sign_in_api'),
path(r'update_site_api', views.update_site_api, name='update_site_api'),
path(r'edit_site_api', views.edit_site_api, name='edit_site_api'),
path(r'show_sign_api', views.show_sign_api, name='show_sign_api'),
path(r'site_sort_api', views.site_sort_api, name='site_sort_api'),
path(r'get_log_list', views.get_log_list, name='get_log_list'),
path(r'show_log_list', views.show_log_list, name='show_log_list'),

View File

@@ -768,7 +768,6 @@ def site_data_api(request):
# } for diff in diff_list]
return JsonResponse(data=CommonResponse.success(
# msg='全站数据展示功能还未完成,敬请期待!'
data={
'date_list': date_list,
'diff': diff_list
@@ -826,6 +825,7 @@ def sign_in_api(request):
).to_dict(), safe=False)
my_site = MySite.objects.filter(id=my_site_id).first()
sign_state = pt_spider.sign_in(my_site)
logger.info(sign_state)
# if sign_state.code == StatusCodeEnum.OK.code:
# return JsonResponse(data=CommonResponse.success(
# msg=sign_state.msg
@@ -895,6 +895,39 @@ def edit_site_api(request):
).to_dict(), safe=False)
def show_sign_api(request):
try:
my_site_id = request.GET.get('id')
logger.info(f'ID值{my_site_id}')
my_site = MySite.objects.filter(id=my_site_id).first()
sign_in_list = my_site.signin_set.all().order_by('-pk')
sign_in_list = [
{'created_at': sign_in.created_at.strftime('%Y-%m-%d %H:%M:%S'), 'sign_in_info': sign_in.sign_in_info}
for sign_in in sign_in_list]
site = {
'id': my_site.id,
'name': my_site.site.name,
'icon': my_site.site.logo,
'url': my_site.site.url,
# 'class': my_site.my_level,
# 'seeding': my_site.seed,
# 'leeching': my_site.leech,
'last_active': datetime.strftime(my_site.updated_at, '%Y年%m月%d%H:%M:%S'),
}
return JsonResponse(data=CommonResponse.success(
data={
'site': site,
'sign_in_list': sign_in_list
}
).to_dict(), safe=False)
except Exception as e:
logger.error(f'签到历史数据获取失败:{e}')
logger.error(traceback.format_exc(limit=3))
return JsonResponse(data=CommonResponse.error(
msg=f'签到历史数据获取失败:{e}'
).to_dict(), safe=False)
def get_log_list(request):
path = os.path.join(BASE_DIR, 'db')
logger.info(path)

View File

@@ -811,7 +811,7 @@ class PtSpider:
logger.info(resp.text)
return CommonResponse.success(
status=StatusCodeEnum.OK,
msg=resp.text.encode('utf8')
msg=resp.content.decode('utf8')
)
except Exception as e:
# 打印异常详细信息

View File

@@ -245,8 +245,8 @@
</el-button>
<el-tooltip class="item" effect="dark" v-if="site.sign_in_state" content="已签到"
placement="top">
<el-button type="success" icon="el-icon-success" plain size="mini">
{# <span style="font-size: 5px;">已签到</span>#}
<el-button type="success" icon="el-icon-success" plain size="mini"
@click="showSignIn(site.id)">
</el-button>
</el-tooltip>
@@ -347,7 +347,6 @@
</div>
<charts ref="charts" style="height: 700px;margin-top: 5px;" :option="option"></charts>
</div>
</div>
</el-card>
@@ -358,11 +357,45 @@
append-to-body
style="background-color: rgba(227, 229, 229, 0.6);">
<div slot="title" style="text-align: center;line-height: 35px;">
<h3><span v-text="site.name"></span>--历史数据</h3>
<h3><span v-text="site.name"></span></h3>
</div>
<div style="width: 95%;text-align: center;margin: 10px auto;">
<div v-if="showSignList" style="width: 90%;margin: auto;">
<el-timeline>
<el-timeline-item
v-for="(signIn, index) in signInList"
:key="index"
{# :icon="activity.icon" #}
{# :type="activity.type" #}
color="#0bbd87"
{# :size="activity.size" #}
placement="top"
:timestamp="signIn.created_at">
<el-card shadow="hover">
<p v-html="signIn.sign_in_info">
</p>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
<div v-if="showSignList" style="width: 90%;margin: auto;">
<el-timeline>
<el-timeline-item
v-for="(signIn, index) in signInList"
:key="index"
{# :icon="activity.icon" #}
{# :type="activity.type" #}
color="#0bbd87"
{# :size="activity.size" #}
placement="top"
:timestamp="signIn.created_at">
<el-card shadow="hover">
<p v-html="signIn.sign_in_info">
</p>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
<div v-else="showSignList" style="width: 95%;text-align: center;margin: 10px auto;">
<div style="margin-bottom: 5px;">
<el-radio-group v-model="dataLength" size="mini"
{# @change="showAllIncrementHistory">#}
@@ -402,6 +435,7 @@
</el-col>
</el-row>
</div>
</el-drawer>
</div>
@@ -432,6 +466,8 @@
showAllHistory: false,
incrementData: {},
dataLength: -7,
showSignList: false,
signInList: [],
}
},
beforeMount() {
@@ -523,6 +559,35 @@
});
})
},
showSignIn(id) {
axios.get(
"{% url 'show_sign_api' %}" + `?id=${id}`
).then(res => {
console.log('获取数据成功', res.data.data)
if (res.data.code === 0) {
this.signInList = res.data.data.sign_in_list
this.site = res.data.data.site
this.showSiteChart = true
this.showSignList = true
this.$message({
type: 'success',
message: res.data.msg
});
} else {
this.$message({
type: 'warning',
message: res.data.msg
});
}
}).catch(res => {
console.log('签到失败', res)
this.$message({
type: 'warning',
message: '签到失败!' + res
});
})
},
updateSite(id) {
axios.get(
"{% url 'update_site_api' %}" + '?id=' + id
@@ -592,6 +657,7 @@
{#this.setPie()#}
{#this.setCard()#}
this.incrementData = res.data.data
this.showSignList = false
id == 0 ? this.showAllIncrementHistory() : this.setLine()
} else {
this.$message({