|
|
@@ -1051,12 +1051,37 @@ def suspected_errors():
|
|
|
if 'user_id' not in session:
|
|
|
return redirect(url_for('login'))
|
|
|
|
|
|
+ search_name = request.args.get('name', '').strip()
|
|
|
+ page = request.args.get('page', 1, type=int)
|
|
|
+ per_page = 20
|
|
|
+ offset = (page - 1) * per_page
|
|
|
+
|
|
|
conn = get_db_connection()
|
|
|
try:
|
|
|
with conn.cursor() as cursor:
|
|
|
- # Get members with suspected errors
|
|
|
- query = "SELECT id, name, simplified_name, sex, name_word_generation, birthday, suspected_error FROM family_member_info WHERE suspected_error IS NOT NULL AND suspected_error != '' ORDER BY name"
|
|
|
- cursor.execute(query)
|
|
|
+ # Base query with condition for non-empty suspected_error (using TRIM to remove whitespace)
|
|
|
+ base_query = "SELECT id, name, simplified_name, sex, name_word_generation, birthday, suspected_error FROM family_member_info WHERE suspected_error IS NOT NULL AND TRIM(suspected_error) != ''"
|
|
|
+ count_query = "SELECT COUNT(*) as count FROM family_member_info WHERE suspected_error IS NOT NULL AND TRIM(suspected_error) != ''"
|
|
|
+
|
|
|
+ # Add search condition if provided
|
|
|
+ params = []
|
|
|
+ if search_name:
|
|
|
+ # Support both traditional and simplified name search
|
|
|
+ base_query += " AND (name LIKE %s OR simplified_name LIKE %s)"
|
|
|
+ count_query += " AND (name LIKE %s OR simplified_name LIKE %s)"
|
|
|
+ search_param = f"%{search_name}%"
|
|
|
+ params.extend([search_param, search_param])
|
|
|
+
|
|
|
+ # Get total count
|
|
|
+ cursor.execute(count_query, params)
|
|
|
+ result = cursor.fetchone()
|
|
|
+ total = result['count'] if result else 0
|
|
|
+ total_pages = (total + per_page - 1) // per_page
|
|
|
+
|
|
|
+ # Get members with pagination
|
|
|
+ base_query += " ORDER BY name LIMIT %s OFFSET %s"
|
|
|
+ params.extend([per_page, offset])
|
|
|
+ cursor.execute(base_query, params)
|
|
|
members = cursor.fetchall()
|
|
|
|
|
|
# Format birthday for display
|
|
|
@@ -1069,7 +1094,7 @@ def suspected_errors():
|
|
|
finally:
|
|
|
conn.close()
|
|
|
|
|
|
- return render_template('suspected_errors.html', members=members)
|
|
|
+ return render_template('suspected_errors.html', members=members, search_name=search_name, page=page, total_pages=total_pages, total=total)
|
|
|
|
|
|
@app.route('/manager/tree')
|
|
|
def tree():
|
|
|
@@ -1411,7 +1436,7 @@ def add_member():
|
|
|
'family_rank': request.form.get('family_rank'),
|
|
|
'tags': request.form.get('tags'),
|
|
|
'notes': request.form.get('notes'),
|
|
|
- 'suspected_error': request.form.get('suspected_error') or '',
|
|
|
+ 'suspected_error': request.form.get('suspected_error').strip() if request.form.get('suspected_error') else '',
|
|
|
'source_record_id': request.form.get('source_record_id') or None, # Save source record ID
|
|
|
'create_uid': session['user_id'] # 记录当前操作人
|
|
|
}
|
|
|
@@ -1571,7 +1596,7 @@ def edit_member(member_id):
|
|
|
'family_rank': request.form.get('family_rank'),
|
|
|
'tags': request.form.get('tags'),
|
|
|
'notes': request.form.get('notes'),
|
|
|
- 'suspected_error': request.form.get('suspected_error') or '',
|
|
|
+ 'suspected_error': request.form.get('suspected_error').strip() if request.form.get('suspected_error') else '',
|
|
|
'source_record_id': request.form.get('source_record_id') or None,
|
|
|
'create_uid': session['user_id'] # 记录当前操作人
|
|
|
}
|