306 lines
17 KiB
HTML
306 lines
17 KiB
HTML
{% extends 'base.html' %}
|
||
{% load custom_filters %}
|
||
|
||
{% block content %}
|
||
<div class="w-full max-w-4xl mx-auto p-6">
|
||
<div class="relative">
|
||
<!-- 时间线 -->
|
||
<div class="absolute top-1/2 left-0 right-0 h-0.5 bg-blue-500 transform -translate-y-1/2"></div>
|
||
|
||
<div class="relative z-10 flex justify-between items-center">
|
||
<!-- 第一个卡片 -->
|
||
<div class="w-[calc(50%-2rem)] bg-white rounded-lg shadow-lg overflow-hidden transition-all duration-300 hover:shadow-xl">
|
||
<div class="p-6 flex flex-col h-full">
|
||
<div class="flex-grow">
|
||
<div class="text-xs font-semibold text-blue-600 mb-2">最初活动</div>
|
||
<h3 class="text-xl font-bold mb-3 text-gray-800">{{ earliest_act.branch }}{{ earliest_act.name }}</h3>
|
||
<p class="text-sm text-gray-600 mb-4">
|
||
{{ earliest_act.description }}
|
||
</p>
|
||
</div>
|
||
<div class="flex justify-end">
|
||
<span class="inline-flex items-center rounded-full bg-blue-100 px-3 py-1 text-xs font-medium text-blue-800 whitespace-nowrap">
|
||
<svg xmlns="http://www.w3.org/2000/svg" class="mr-1.5 h-3 w-3" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||
</svg>
|
||
{{ earliest_act.start_time|format_chinese_full_date }}
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 中间的箭头 -->
|
||
<div class="bg-white rounded-full p-3 shadow-md z-20">
|
||
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-blue-500" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5l7 7m0 0l-7 7m7-7H3" />
|
||
</svg>
|
||
</div>
|
||
|
||
<!-- 第二个卡片 -->
|
||
<div class="w-[calc(50%-2rem)] bg-white rounded-lg shadow-lg overflow-hidden transition-all duration-300 hover:shadow-xl">
|
||
<div class="p-6 flex flex-col h-full">
|
||
<div class="flex-grow">
|
||
<div class="text-xs font-semibold text-blue-600 mb-2">最后活动</div>
|
||
<h3 class="text-xl font-bold mb-3 text-gray-800">{{ latest_act.branch }}{{ latest_act.name }}</h3>
|
||
<p class="text-sm text-gray-600 mb-4">
|
||
{{ latest_act.description }}
|
||
</p>
|
||
</div>
|
||
<div class="flex justify-end">
|
||
<span class="inline-flex items-center rounded-full bg-blue-100 px-3 py-1 text-xs font-medium text-blue-800 whitespace-nowrap">
|
||
<svg xmlns="http://www.w3.org/2000/svg" class="mr-1.5 h-3 w-3" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||
</svg>
|
||
{{ latest_act.start_time|format_chinese_full_date }} </span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 装饰元素 -->
|
||
<div class="absolute top-1/2 left-0 w-4 h-4 bg-blue-500 rounded-full transform -translate-y-1/2 border-4 border-white"></div>
|
||
<div class="absolute top-1/2 right-0 w-4 h-4 bg-blue-500 rounded-full transform -translate-y-1/2 border-4 border-white"></div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<table class="items-center bg-transparent w-full border-collapse ">
|
||
<thead>
|
||
<tr class="bg-gray-100">
|
||
<th class="px-6 bg-blueGray-50 text-blueGray-500 align-middle border border-solid border-blueGray-100 py-3 text-base uppercase border-l-0 border-r-0 whitespace-nowrap font-semibold text-left">
|
||
分支机构名称
|
||
<br>
|
||
新建-搬迁-装修
|
||
</th>
|
||
<th class="px-6 bg-blueGray-50 text-blueGray-500 align-middle border border-solid border-blueGray-100 py-3 text-base uppercase border-l-0 border-r-0 whitespace-nowrap font-semibold text-right">
|
||
活动的总数量
|
||
</th>
|
||
<th class="px-6 bg-blueGray-50 text-blueGray-500 align-middle border border-solid border-blueGray-100 py-3 text-base uppercase border-l-0 border-r-0 whitespace-nowrap font-semibold text-right">
|
||
活动进行中的数量
|
||
</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for item in branches %}
|
||
<!-- 这里是其他行的处理逻辑 -->
|
||
<tr class="{% if forloop.counter|divisibleby:2 %}bg-gray-100{% else %}bg-white{% endif %}">
|
||
<td class="px-6 py-4 whitespace-no-wrap text-left border-b border-gray-200">
|
||
<a href="{% url 'branch-detail' item.branch.pk %}"
|
||
class="bg-transparent hover:bg-blue-900 hover:text-white p-2 rounded-md">
|
||
{{ item.branch.name }}
|
||
</a>
|
||
</td>
|
||
<td class="px-6 py-4 whitespace-no-wrap border-b border-gray-200 text-right">
|
||
{{ item.total_count }}
|
||
</td>
|
||
<td class="px-6 py-4 whitespace-no-wrap border-b border-gray-200 text-right">
|
||
{{ item.onging_count }}
|
||
</td>
|
||
|
||
</tr>
|
||
{% endfor %}
|
||
<!-- 这里是最后一行的处理逻辑 -->
|
||
<tr>
|
||
<td class="px-6 py-4 whitespace-no-wrap text-left border-b border-gray-200 font-bold text-center">
|
||
总计: {{ total_branch_count }}
|
||
</td>
|
||
<td class="px-6 py-4 whitespace-no-wrap border-b border-gray-200 text-right">
|
||
{{ total_activities }}
|
||
</td>
|
||
<td class="px-6 py-4 whitespace-no-wrap border-b border-gray-200 text-right">
|
||
{{ ongoing_activities_count }}
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<hr class="h-px my-8 bg-red-500 border-1 dark:bg-red-700">
|
||
|
||
|
||
<!--插入事件-->
|
||
<div class="p-5 border border-gray-100 rounded-lg bg-gray-50 dark:bg-gray-800 dark:border-gray-700">
|
||
<time class="text-lg font-semibold text-gray-900 dark:text-white">事件</time>
|
||
<ol class="mt-3 divide-y divider-gray-200 dark:divide-gray-700">
|
||
{% for event in ongoing_events %}
|
||
<li>
|
||
<div href="#" class="items-center block p-3 sm:flex hover:bg-gray-100 dark:hover:bg-gray-700">
|
||
<div class="text-gray-600 dark:text-gray-400">
|
||
<span class="inline-flex items-center text-xs font-normal text-gray-400 dark:text-gray-400">
|
||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
|
||
class="w-2.5 h-2.5 text-blue-800 dark:text-blue-300">
|
||
<path stroke-linecap="round" stroke-linejoin="round"
|
||
d="M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0 3-3m0 0-3-3m3 3H9"/>
|
||
</svg>
|
||
开始时间 {{ event.start_time| date:"Y年m月d日" }}
|
||
</span>
|
||
<div class="text-base font-normal">
|
||
<span class="font-medium text-gray-900 dark:text-white">
|
||
{% if not event.end_time %}
|
||
<span class="text-lg font-semibold text-red-900 dark:text-white">
|
||
{{ event.name }}-未完成
|
||
</span>
|
||
{% else %}
|
||
<span class="text-lg font-semibold text-blue-900 dark:text-white">
|
||
{{ event.name }}
|
||
</span>
|
||
{% endif %}
|
||
</span>
|
||
</div>
|
||
<div class="text-sm font-normal">
|
||
{{ event.description }}
|
||
</div>
|
||
<div class="text-sm font-normal">
|
||
{% with branch_count=event.branches.count %}
|
||
{% if branch_count == all_branch_count %}
|
||
涉及分支机构:全辖分支机构
|
||
{% elif branch_count == 1 %}
|
||
涉及分支机构:{{ event.branches.first.name }}
|
||
{% elif branch_count > 1 %}
|
||
涉及分支机构:{{ event.branches.all.0.name }}、{{ event.branches.all.1.name }}等{{ branch_count }}个营业部
|
||
{% else %}
|
||
涉及分支机构:暂无
|
||
{% endif %}
|
||
{% endwith %}
|
||
</div>
|
||
<span class="inline-flex items-center text-xs font-normal text-gray-400 dark:text-gray-400">
|
||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
|
||
class="w-2.5 h-2.5 text-blue-800 dark:text-blue-300">
|
||
<path stroke-linecap="round" stroke-linejoin="round"
|
||
d="M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0 3-3m0 0-3-3m3 3H9"/>
|
||
</svg>
|
||
结束时间 {{ event.end_time| date:"Y年m月d日" }}
|
||
</span>
|
||
</div>
|
||
</div>
|
||
|
||
</li>
|
||
{% endfor %}
|
||
</ol>
|
||
</div>
|
||
|
||
<hr class="h-px my-8 bg-red-500 border-1 dark:bg-red-700">
|
||
|
||
|
||
<div class="p-5 border border-gray-100 rounded-lg bg-gray-50 dark:bg-gray-800 dark:border-gray-700">
|
||
<time class="text-lg font-semibold text-gray-900 dark:text-white">活动中的</time>
|
||
<ol class="mt-3 divide-y divider-gray-200 dark:divide-gray-700">
|
||
{% for huodong in ongoing_activities %}
|
||
<li>
|
||
<div href="#" class="items-center block p-3 sm:flex hover:bg-gray-100 dark:hover:bg-gray-700">
|
||
<div class="text-gray-600 dark:text-gray-400">
|
||
<span class="inline-flex items-center text-xs font-normal text-gray-400 dark:text-gray-400">
|
||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
|
||
class="w-2.5 h-2.5 text-blue-800 dark:text-blue-300">
|
||
<path stroke-linecap="round" stroke-linejoin="round"
|
||
d="M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0 3-3m0 0-3-3m3 3H9"/>
|
||
</svg>
|
||
开始时间 {{ huodong.start_time| date:"Y年m月d日" }}
|
||
</span>
|
||
<div class="text-base font-normal">
|
||
<span class="font-medium text-gray-900 dark:text-white">
|
||
{% if not huodong.end_time %}
|
||
<span class="text-lg font-semibold text-red-900 dark:text-white">
|
||
<a href="{% url 'branch-detail' huodong.branch.pk %}"
|
||
class="bg-transparent hover:bg-blue-900 hover:text-white p-2 rounded-md">
|
||
{{ huodong.branch }}
|
||
</a>
|
||
{{ huodong.name }}-未完成
|
||
</span>
|
||
{% endif %}
|
||
</span>
|
||
</div>
|
||
<div class="text-sm font-normal">
|
||
{{ huodong.description }}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
{% endfor %}
|
||
</ol>
|
||
</div>
|
||
|
||
<hr class="h-px my-8 bg-gray-200 border-0 dark:bg-gray-700">
|
||
|
||
{% for scope, scope_data in grouped_activities.items %}
|
||
<div class="p-5 border border-gray-100 rounded-lg dark:bg-gray-800 dark:border-gray-700">
|
||
<time class="text-lg font-semibold text-gray-900 dark:text-white">今年的{{ scope }}(共{{ scope_data.branch_count }}个分支机构)</time>
|
||
<ol class="mt-3 divide-y divider-gray-200 dark:divide-gray-700">
|
||
{% for activity in scope_data.activities %}
|
||
<li style= "background-color: {{ activity.branch.background_color }};" >
|
||
<div class="items-center block p-3 sm:flex hover:bg-gray-100 dark:hover:bg-gray-700">
|
||
<div class="text-gray-600 dark:text-gray-400">
|
||
<span class="inline-flex items-center text-xs font-normal text-gray-400 dark:text-gray-400">
|
||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
||
stroke="currentColor"
|
||
class="w-2.5 h-2.5 text-blue-800 dark:text-blue-300">
|
||
<path stroke-linecap="round" stroke-linejoin="round"
|
||
d="M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0 3-3m0 0-3-3m3 3H9"/>
|
||
</svg>
|
||
开始时间 {{ activity.start_time| date:"Y年m月d日" }}
|
||
</span>
|
||
<div class="text-base font-normal">
|
||
<span class="font-medium text-gray-900 dark:text-white">
|
||
{% if not activity.end_time %}
|
||
<span class="text-lg font-semibold text-red-900 dark:text-white">
|
||
<a href="{% url 'branch-detail' activity.branch.pk %}"
|
||
class="bg-transparent hover:bg-blue-900 hover:text-white p-2 rounded-md">
|
||
{{ activity.branch }}
|
||
</a>
|
||
{{ activity.name }}-未完成
|
||
</span>
|
||
{% else %}
|
||
<span class="text-lg font-semibold text-gray-900 dark:text-white">
|
||
<a href="{% url 'branch-detail' activity.branch.pk %}"
|
||
class="bg-transparent hover:bg-blue-900 hover:text-white p-2 rounded-md">
|
||
{{ activity.branch }}
|
||
</a>
|
||
{{ activity.name }}
|
||
</span>
|
||
{% endif %}
|
||
</span>
|
||
</div>
|
||
<div class="text-sm font-normal">
|
||
{{ activity.description }}
|
||
</div>
|
||
<span class="inline-flex items-center text-xs font-normal text-gray-400 dark:text-gray-400">
|
||
<svg class="w-2.5 h-2.5 text-blue-800 dark:text-blue-300" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"
|
||
fill="currentColor" viewBox="0 0 20 20">
|
||
<path d="M20 4a2 2 0 0 0-2-2h-2V1a1 1 0 0 0-2 0v1h-3V1a1 1 0 0 0-2 0v1H6V1a1 1 0 0 0-2 0v1H2a2 2 0 0 0-2 2v2h20V4ZM0 18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8H0v10Zm5-8h10a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2Z"/>
|
||
</svg>
|
||
结束时间 {{ activity.end_time| date:"Y年m月d日" }}
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</li>
|
||
{% endfor %}
|
||
</ol>
|
||
</div>
|
||
<hr class="h-px my-8 bg-gray-200 border-0 dark:bg-gray-700">
|
||
{% endfor %}
|
||
|
||
<time class="text-lg font-semibold text-gray-900 dark:text-white">
|
||
今年的
|
||
{% for scope, scope_data in grouped_activities.items %}
|
||
{{ scope }}{{ scope_data.branch_count }}个{% if forloop.last %}。{% else %},{% endif %}
|
||
{% endfor %}
|
||
</time>
|
||
<hr class="h-px my-8 bg-gray-200 border-0 dark:bg-gray-700">
|
||
|
||
<!-- 历年活动统计 -->
|
||
{% for year in historical_years %}
|
||
{% with year_data=historical_grouped_activities|get_item:year %}
|
||
{% if year_data %}
|
||
<time class="text-lg font-semibold text-gray-900 dark:text-white">
|
||
{{ year }}年的
|
||
{% for scope, scope_data in year_data.items %}
|
||
{{ scope }}{{ scope_data.branch_count }}个{% if forloop.last %}。{% else %},{% endif %}
|
||
{% endfor %}
|
||
</time>
|
||
<hr class="h-px my-8 bg-gray-200 border-0 dark:bg-gray-700">
|
||
{% endif %}
|
||
{% endwith %}
|
||
{% endfor %}
|
||
|
||
|
||
{% endblock %}
|