updated to scan module
This commit is contained in:
Binary file not shown.
@@ -7,7 +7,6 @@ from .models import User
|
|||||||
from . import db
|
from . import db
|
||||||
from reportlab.lib.pagesizes import letter
|
from reportlab.lib.pagesizes import letter
|
||||||
from reportlab.pdfgen import canvas
|
from reportlab.pdfgen import canvas
|
||||||
from flask import Blueprint, render_template, request, redirect, url_for, flash
|
|
||||||
import csv
|
import csv
|
||||||
from .warehouse import add_location
|
from .warehouse import add_location
|
||||||
from app.settings import (
|
from app.settings import (
|
||||||
@@ -27,6 +26,12 @@ from .print_module import get_unprinted_orders_data
|
|||||||
bp = Blueprint('main', __name__)
|
bp = Blueprint('main', __name__)
|
||||||
warehouse_bp = Blueprint('warehouse', __name__)
|
warehouse_bp = Blueprint('warehouse', __name__)
|
||||||
|
|
||||||
|
@bp.route('/main_scan')
|
||||||
|
def main_scan():
|
||||||
|
if 'role' not in session or session['role'] not in ['superadmin', 'admin', 'administrator', 'scan']:
|
||||||
|
flash('Access denied: Scan users only.')
|
||||||
|
return redirect(url_for('main.dashboard'))
|
||||||
|
return render_template('main_page_scan.html')
|
||||||
|
|
||||||
@bp.route('/', methods=['GET', 'POST'])
|
@bp.route('/', methods=['GET', 'POST'])
|
||||||
def login():
|
def login():
|
||||||
@@ -1143,8 +1148,6 @@ For support, contact your system administrator.
|
|||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error creating extension package: {e}")
|
print(f"Error creating extension package: {e}")
|
||||||
import traceback
|
|
||||||
traceback.print_exc()
|
|
||||||
return jsonify({
|
return jsonify({
|
||||||
'success': False,
|
'success': False,
|
||||||
'error': str(e)
|
'error': str(e)
|
||||||
@@ -1365,7 +1368,6 @@ Installation Time: ~5 minutes
|
|||||||
Maintenance Required: Zero (auto-starts with Windows)
|
Maintenance Required: Zero (auto-starts with Windows)
|
||||||
|
|
||||||
Ready to use immediately after installation!"""
|
Ready to use immediately after installation!"""
|
||||||
|
|
||||||
zipf.writestr('INSTALLATION_README.txt', installation_readme)
|
zipf.writestr('INSTALLATION_README.txt', installation_readme)
|
||||||
files_added += 1
|
files_added += 1
|
||||||
|
|
||||||
@@ -1715,6 +1717,9 @@ This package contains EVERYTHING needed to run the Quality Print Service:
|
|||||||
Quality Web App → Chrome Extension → Windows Service → Printer
|
Quality Web App → Chrome Extension → Windows Service → Printer
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Printing Methods (automatic fallback):**
|
||||||
|
1. Adobe Reader (silent printing)
|
||||||
|
|
||||||
**Printing Methods (automatic fallback):**
|
**Printing Methods (automatic fallback):**
|
||||||
1. Adobe Reader (silent printing)
|
1. Adobe Reader (silent printing)
|
||||||
2. SumatraPDF (if Adobe unavailable)
|
2. SumatraPDF (if Adobe unavailable)
|
||||||
|
|||||||
50
py_app/app/static/css/scan.css
Normal file
50
py_app/app/static/css/scan.css
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
/* Scan Module Specific Styles */
|
||||||
|
|
||||||
|
.scan-form-card {
|
||||||
|
width: 380px;
|
||||||
|
max-width: 380px;
|
||||||
|
margin: 0 auto 20px auto;
|
||||||
|
max-height: 660px;
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 18px 18px 12px 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-form-card form {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-form-card label {
|
||||||
|
font-weight: 500;
|
||||||
|
margin-bottom: 1px;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-form-card input[type="text"] {
|
||||||
|
padding: 5px 10px;
|
||||||
|
font-size: 13px;
|
||||||
|
margin-bottom: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-table-card {
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin-top: 20px;
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-table th, .scan-table td {
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
padding: 8px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scan-table th {
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
@@ -367,32 +367,6 @@ html, body {
|
|||||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.scan-form-card {
|
|
||||||
max-width: 600px;
|
|
||||||
margin: 0 auto 20px auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scan-table-card {
|
|
||||||
overflow-x: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scan-table {
|
|
||||||
width: 100%;
|
|
||||||
border-collapse: collapse;
|
|
||||||
margin-top: 20px;
|
|
||||||
font-size: 11px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scan-table th, .scan-table td {
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
padding: 8px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scan-table th {
|
|
||||||
background-color: #f4f4f4;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Location row selection styles */
|
/* Location row selection styles */
|
||||||
.location-row {
|
.location-row {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
<div class="dashboard-card">
|
<div class="dashboard-card">
|
||||||
<h3>Access Scanning Module</h3>
|
<h3>Access Scanning Module</h3>
|
||||||
<p>Final scanning module for production orders</p>
|
<p>Final scanning module for production orders</p>
|
||||||
<a href="{{ url_for('main.scan') }}" class="btn">Launch Scanning Module</a>
|
<a href="{{ url_for('main.main_scan') }}" class="btn">Launch Scanning Module</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="dashboard-card">
|
<div class="dashboard-card">
|
||||||
|
|||||||
25
py_app/app/templates/main_page_scan.html
Normal file
25
py_app/app/templates/main_page_scan.html
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}Main Scanning Module{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="etichete-container">
|
||||||
|
<h1>Main Scanning Module</h1>
|
||||||
|
<p>This is the main page for accessing scanning features.</p>
|
||||||
|
|
||||||
|
<div class="dashboard-container">
|
||||||
|
<!-- Card 1: Finish goods scanning -->
|
||||||
|
<div class="dashboard-card">
|
||||||
|
<h3>Finish goods scanning</h3>
|
||||||
|
<p>Access the scanning module for production orders.</p>
|
||||||
|
<a href="{{ url_for('main.scan') }}" class="btn">Finish goods scanning</a>
|
||||||
|
</div>
|
||||||
|
<!-- Card 2: View Scan History -->
|
||||||
|
<div class="dashboard-card">
|
||||||
|
<h3>View Scan History</h3>
|
||||||
|
<p>Review previous scan records and results.</p>
|
||||||
|
<a href="#" class="btn" disabled>Coming Soon</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% block title %}Scan Module{% endblock %}
|
{% block title %}Scan Module{% endblock %}
|
||||||
|
{% block head %}
|
||||||
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/scan.css') }}">
|
||||||
|
{% endblock %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="scan-container">
|
<div class="scan-container">
|
||||||
<!-- Input Form Card -->
|
<!-- Input Form Card -->
|
||||||
|
|||||||
Reference in New Issue
Block a user