feat(crm): support datetime column sort on quote list.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
wuzilongandCursor committed 2026-09-08 21:41:05 +08:00
1 parent 72a8f97bd1
commit 8f63430881
2 files changed
+16 -1

No files matched your search

+14 -1
View File
@@ -35,6 +35,7 @@ from app.crud.crm.supplier_info import get_supplier_info
from app.models.crm_models import CrmContract, CrmCustomer, CrmQuote, CrmQuoteApproval
from app.models.models import SysUser
from app.services.crm_quote_pdf import generate_quote_pdf
from app.services.crm.list_sort import resolve_datetime_order_by
from app.crud.crm.data_scope_helpers import apply_crm_owner_scope, ensure_crm_owner_row_in_scope
_FMT = "%Y-%m-%d %H:%M:%S"
@@ -350,7 +351,19 @@ def _build_quote_filters(
)
)
return q.order_by(CrmQuote.create_time.desc())
default_order = CrmQuote.create_time.desc()
whitelist = {
"quoteDate": CrmQuote.quote_date,
"expireDate": CrmQuote.expire_date,
"lastViewTime": CrmQuote.last_view_time,
"createTime": CrmQuote.create_time,
"updateTime": CrmQuote.update_time,
}
sort_field = _get_field(filters, "sort_field", "sortField")
sort_order = _get_field(filters, "sort_order", "sortOrder")
return q.order_by(
resolve_datetime_order_by(sort_field, sort_order, whitelist, default_order)
)
def _fill_contract_linked_count(db: Session, rows: List[Dict[str, Any]]) -> None:
+2
View File
@@ -58,6 +58,8 @@ class QuoteListBody(BaseModel):
endTime: Optional[str] = None
approvedByUserId: Optional[str] = None
pendingApprovalUserId: Optional[str] = None
sortField: Optional[str] = None
sortOrder: Optional[str] = None
ids: Optional[List[str]] = Field(default=None, description="导出指定ID列表")
columns: Optional[List[str]] = Field(default=None, description="导出列(前端 visibleColumns)")