Remove supervisor.log and update uWSGI configuration paths to reflect new directory structure; enhance filtering options in work order views and improve CSS styles for better UI responsiveness.
This commit is contained in:
@@ -54,7 +54,7 @@
|
||||
<div class="dev-info">
|
||||
<p><strong>联系:</strong>韦矍森</p>
|
||||
<p><strong>电话:</strong>19977899008</p>
|
||||
<p><strong>部门:</strong>大化政企业务交付运营中心</p>
|
||||
<p><strong>部门:</strong>大化云中台</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
+125
-125
@@ -1,125 +1,125 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>大化重点项目工单管理平台</title>
|
||||
<link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon">
|
||||
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/bootstrap.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/styles.css') }}">
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar navbar-expand-lg nav_container">
|
||||
<div class="container-fluid">
|
||||
<a class="nav_brand">
|
||||
{% if request.endpoint == 'dispatch' %}
|
||||
故障派单
|
||||
{% elif request.endpoint == 'receive' %}
|
||||
在途工单
|
||||
{% elif request.endpoint == 'statistics' %}
|
||||
工单统计
|
||||
{% elif request.endpoint == 'history' %}
|
||||
历史工单
|
||||
{% elif request.endpoint == 'manual' %}
|
||||
申报故障
|
||||
{% elif request.endpoint == 'dashboard' %}
|
||||
设备仪表盘
|
||||
{% else %}
|
||||
重点项目工单管理平台
|
||||
{% endif %}
|
||||
</a>
|
||||
<button class="navbar-toggler nav_toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon nav_toggler_icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0 nav_menu">
|
||||
{% if current_user.is_authenticated %}
|
||||
{% if current_user.role == '统计员' %}
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'dashboard' }}" href="{{ url_for('dashboard') }}">仪表盘</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'dispatch' }}" href="{{ url_for('dispatch') }}">派单</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'receive' }}" href="{{ url_for('receive') }}">在途</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'manual' }}" href="{{ url_for('manual') }}">申报</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'statistics' }}" href="{{ url_for('statistics') }}">统计</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'history' }}" href="{{ url_for('history') }}">历史</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'about' }}" href="{{ url_for('about') }}">关于</a>
|
||||
</li>
|
||||
{% elif current_user.role == '装维员' %}
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'dashboard' }}" href="{{ url_for('dashboard') }}">仪表盘</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'receive' }}" href="{{ url_for('receive') }}">在途</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'manual' }}" href="{{ url_for('manual') }}">申报</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'statistics' }}" href="{{ url_for('statistics') }}">统计</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'history' }}" href="{{ url_for('history') }}">历史</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'about' }}" href="{{ url_for('about') }}">关于</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</ul>
|
||||
<ul class="navbar-nav nav_menu">
|
||||
{% if current_user.is_authenticated %}
|
||||
<li class="nav-item">
|
||||
<a class="nav_link" href="{{ url_for('logout') }}">退出</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="container mt-4">
|
||||
{% if not request.endpoint == 'login' %}
|
||||
{% with messages = get_flashed_messages() %}
|
||||
{% if messages %}
|
||||
<div class="modal" id="flashModal" tabindex="-1" style="display: block; background: rgba(0,0,0,0.5);">
|
||||
<div class="modal-dialog modal-dialog-centered" style="z-index: 1060;">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-body">
|
||||
{% for message in messages %}
|
||||
<p class="mb-0">{{ message }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" onclick="closeFlashModal()">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
{% endif %}
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
|
||||
<script src="{{ url_for('static', filename='js/bootstrap.bundle.min.js') }}"></script>
|
||||
<script>
|
||||
function closeFlashModal() {
|
||||
document.getElementById('flashModal').style.display = 'none';
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>大化重点项目工单管理平台</title>
|
||||
<link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon">
|
||||
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/bootstrap.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/styles.css') }}">
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar navbar-expand-lg nav_container">
|
||||
<div class="container-fluid">
|
||||
<a class="nav_brand">
|
||||
{% if request.endpoint == 'dispatch' %}
|
||||
故障派单
|
||||
{% elif request.endpoint == 'receive' %}
|
||||
在途工单
|
||||
{% elif request.endpoint == 'statistics' %}
|
||||
工单统计
|
||||
{% elif request.endpoint == 'history' %}
|
||||
历史工单
|
||||
{% elif request.endpoint == 'manual' %}
|
||||
工单申报
|
||||
{% elif request.endpoint == 'dashboard' %}
|
||||
设备仪表盘
|
||||
{% else %}
|
||||
重点项目工单管理平台
|
||||
{% endif %}
|
||||
</a>
|
||||
<button class="navbar-toggler nav_toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon nav_toggler_icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0 nav_menu">
|
||||
{% if current_user.is_authenticated %}
|
||||
{% if current_user.role == '统计员' %}
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'dashboard' }}" href="{{ url_for('dashboard') }}">仪表盘</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'dispatch' }}" href="{{ url_for('dispatch') }}">派单</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'receive' }}" href="{{ url_for('receive') }}">在途</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'manual' }}" href="{{ url_for('manual') }}">申报</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'statistics' }}" href="{{ url_for('statistics') }}">统计</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'history' }}" href="{{ url_for('history') }}">历史</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'about' }}" href="{{ url_for('about') }}">关于</a>
|
||||
</li>
|
||||
{% elif current_user.role == '装维员' %}
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'dashboard' }}" href="{{ url_for('dashboard') }}">仪表盘</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'receive' }}" href="{{ url_for('receive') }}">在途</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'manual' }}" href="{{ url_for('manual') }}">申报</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'statistics' }}" href="{{ url_for('statistics') }}">统计</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'history' }}" href="{{ url_for('history') }}">历史</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav_link {{ 'active' if request.endpoint == 'about' }}" href="{{ url_for('about') }}">关于</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</ul>
|
||||
<ul class="navbar-nav nav_menu">
|
||||
{% if current_user.is_authenticated %}
|
||||
<li class="nav-item">
|
||||
<a class="nav_link" href="{{ url_for('logout') }}">退出</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="container mt-4">
|
||||
{% if not request.endpoint == 'login' %}
|
||||
{% with messages = get_flashed_messages() %}
|
||||
{% if messages %}
|
||||
<div class="modal" id="flashModal" tabindex="-1" style="display: block; background: rgba(0,0,0,0.5);">
|
||||
<div class="modal-dialog modal-dialog-centered" style="z-index: 1060;">
|
||||
<div class="modal-content">
|
||||
|
||||
<div class="modal-body">
|
||||
{% for message in messages %}
|
||||
<p class="mb-0">{{ message }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" onclick="closeFlashModal()">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
{% endif %}
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
|
||||
<script src="{{ url_for('static', filename='js/bootstrap.bundle.min.js') }}"></script>
|
||||
<script>
|
||||
function closeFlashModal() {
|
||||
document.getElementById('flashModal').style.display = 'none';
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
<p>注意事项</p>
|
||||
<ul>
|
||||
<li>本页面用于填写用户来电申报或者巡检途中发现的故障、移机,申报前请确保在途工单中没有重复故障</li>
|
||||
<li>新装设备、移机等请在申报类型选择“新装”或“移机”</li>
|
||||
<li>现场照片最多可上传5张,支持jpg、jpeg、png</li>
|
||||
<li>距离支局公里数请填写支局办公室到故障地点实际距离</li>
|
||||
<li>带 <span class="required">*</span> 的字段为必填项</li>
|
||||
@@ -44,9 +45,9 @@
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="fault_type">故障类型<span class="required">*</span></label>
|
||||
<label for="fault_type">申报类型<span class="required">*</span></label>
|
||||
<select id="fault_type" name="fault_type" required>
|
||||
<option value="">请选择故障类型</option>
|
||||
<option value="">请选择申报类型</option>
|
||||
<option value="光猫故障">光猫故障</option>
|
||||
<option value="设备故障">设备故障</option>
|
||||
<option value="电源故障">电源故障</option>
|
||||
@@ -55,8 +56,8 @@
|
||||
<option value="皮线故障">皮线故障</option>
|
||||
<option value="数据问题">数据问题</option>
|
||||
<option value="用户欠费">用户欠费</option>
|
||||
<option value="移机">移机</option>
|
||||
<option value="新增">新增</option>
|
||||
<option value="移机">移机申报</option>
|
||||
<option value="新增">新装申报</option>
|
||||
<option value="其他">其他</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
+74
-30
@@ -8,46 +8,90 @@
|
||||
<span class="stats_label">在途工单总数</span>
|
||||
<span class="stats_value">{{ total_orders }}</span>
|
||||
</div>
|
||||
{% if current_user.branch == '交付中心' %}
|
||||
<div class="stats_branches_row">
|
||||
{% for branch, count in branch_stats.items() %}
|
||||
<a href="{{ url_for('receive', branch=branch) }}" class="branch_stat {% if branch == selected_branch %}active{% endif %}">
|
||||
<span class="branch_name">{{ branch }}</span>
|
||||
<span class="branch_count">{{ count }}</span>
|
||||
</a>
|
||||
{% endfor %}
|
||||
|
||||
<!-- 设备类型统计 -->
|
||||
{% if device_type_stats %}
|
||||
<div class="stats_section">
|
||||
<h4 class="stats_section_title">设备类型分布</h4>
|
||||
<div class="stats_grid">
|
||||
{% for device_type, count in device_type_stats.items() %}
|
||||
<a href="{{ url_for('receive', device_type=device_type, branch=selected_branch, per_page=request.args.get('per_page', '50')) }}" class="stats_card device-type-{{ device_type | replace(' ', '-') }} {% if device_type == request.args.get('device_type') %}active{% endif %}">
|
||||
<span class="stats_card_label">{{ device_type }}</span>
|
||||
<span class="stats_card_value">{{ count }}</span>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="receive_actions">
|
||||
<button onclick="recallAllOrders()" class="receive_btn receive_btn_warning">一键追回所有工单</button>
|
||||
{% if selected_branch %}
|
||||
<a href="{{ url_for('receive') }}" class="receive_btn receive_btn_secondary">清除筛选</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<!-- 项目类型统计 -->
|
||||
{% if project_type_stats %}
|
||||
<div class="stats_section">
|
||||
<h4 class="stats_section_title">项目类型分布</h4>
|
||||
<div class="stats_grid">
|
||||
{% for project_type, count in project_type_stats.items() %}
|
||||
<a href="{{ url_for('receive', project_type=project_type, branch=selected_branch, per_page=request.args.get('per_page', '50')) }}" class="stats_card project-type-{{ project_type | replace(' ', '-') }} {% if project_type == request.args.get('project_type') %}active{% endif %}">
|
||||
<span class="stats_card_label">{{ project_type }}</span>
|
||||
<span class="stats_card_value">{{ count }}</span>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<!-- 筛选区域 -->
|
||||
<div class="receive_filter">
|
||||
<div class="filter_header">
|
||||
<h4 class="filter_title">工单筛选</h4>
|
||||
<div class="filter_actions">
|
||||
{% if current_user.branch == '交付中心' %}
|
||||
<button onclick="recallAllOrders()" class="receive_btn receive_btn_warning">一键追回所有工单</button>
|
||||
{% endif %}
|
||||
{% if request.args.get('device_type') or request.args.get('project_type') or selected_branch %}
|
||||
<a href="{{ url_for('receive', per_page=request.args.get('per_page', '50')) }}" class="receive_btn receive_btn_clear">清除所有筛选</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<form method="GET" action="{{ url_for('receive') }}" class="filter_form">
|
||||
<select name="device_type" class="filter_select">
|
||||
<option value="">所有设备类型</option>
|
||||
{% for device_type in device_types %}
|
||||
<option value="{{ device_type }}" {% if device_type == request.args.get('device_type') %}selected{% endif %}>{{ device_type }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<select name="project_type" class="filter_select">
|
||||
<option value="">所有项目类型</option>
|
||||
{% for project_type in project_types %}
|
||||
<option value="{{ project_type }}" {% if project_type == request.args.get('project_type') %}selected{% endif %}>{{ project_type }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<input type="hidden" name="branch" value="{{ selected_branch }}">
|
||||
{% if current_user.branch == '交付中心' %}
|
||||
<div class="filter_group">
|
||||
<label class="filter_label">所属支局</label>
|
||||
<select name="branch" class="filter_select">
|
||||
<option value="">所有支局</option>
|
||||
{% for branch in branches %}
|
||||
<option value="{{ branch }}" {% if branch == selected_branch %}selected{% endif %}>{{ branch }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="filter_group">
|
||||
<label class="filter_label">设备类型</label>
|
||||
<select name="device_type" class="filter_select">
|
||||
<option value="">所有设备类型</option>
|
||||
{% for device_type in device_types %}
|
||||
<option value="{{ device_type }}" {% if device_type == request.args.get('device_type') %}selected{% endif %}>{{ device_type }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="filter_group">
|
||||
<label class="filter_label">项目类型</label>
|
||||
<select name="project_type" class="filter_select">
|
||||
<option value="">所有项目类型</option>
|
||||
{% for project_type in project_types %}
|
||||
<option value="{{ project_type }}" {% if project_type == request.args.get('project_type') %}selected{% endif %}>{{ project_type }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="page" value="1">
|
||||
<input type="hidden" name="per_page" value="{{ request.args.get('per_page', '50') }}">
|
||||
<button type="submit" class="receive_btn receive_btn_primary">筛选</button>
|
||||
{% if request.args.get('device_type') or request.args.get('project_type') %}
|
||||
<a href="{{ url_for('receive', branch=selected_branch, per_page=request.args.get('per_page', '50')) }}" class="receive_btn receive_btn_secondary">清除筛选</a>
|
||||
{% endif %}
|
||||
|
||||
<div class="filter_group">
|
||||
<button type="submit" class="receive_btn receive_btn_primary">应用筛选</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user