feat: 前后端全量开发 v0.2

后端:
- 客户模块 CRUD+搜索 (api/services/repositories 分层)
- 合同模块: FG单号规则/意向单转正式单/订单创建自动快照客户信息
- 优化下料: FFD首递减装箱算法(利用率统计/余料/未排入清单)
前端 (Vue3+TS+Element Plus):
- 7页面: 登录/工作台/订单中心/合同/客户/样板库/优化下料
- 自研二维窗型画布渲染器: 解析drawing_data渲染玻璃区域/外框/
  扇开向标记/尺寸标注, 支持缩放平移复位
- 样板库与订单联动(用此样板下单自动带图纸)
- axios统一envelope拦截/登录守卫/付费墙提示
工程:
- SPA history 回退路由, 构建产物挂载后端
- 全接口回归 6/6 通过
This commit is contained in:
HHY
2026-09-20 08:46:04 -07:00
parent d3e6de585c
commit f7a555dd6c
35 changed files with 3702 additions and 10 deletions
+15 -2
View File
@@ -14,13 +14,26 @@ class OrderService:
self.repo = OrderRepository(db)
async def create_order(self, user: User, payload: OrderCreate) -> Order:
"""创建订单:对齐目标站 {contract_id, drawing_data, pic_url} 契约。"""
"""创建订单:对齐目标站 {contract_id, drawing_data, pic_url} 契约。
指定 contract_id 时自动快照合同客户信息。"""
customer_id = payload.customer_id
customer_name = phone = address = ""
if payload.contract_id:
from huamenchuang.repositories.contract_repo import ContractRepository
contract = await ContractRepository(self.db).get(payload.contract_id, user.company_id)
if contract is None:
raise KeyError("关联合同不存在")
customer_id = contract.customer_id
customer_name, phone, address = contract.customer_name, contract.phone, contract.address
order = Order(
order_no=await self.repo.next_order_no(user.company_id),
contract_id=payload.contract_id,
drawing_data=payload.drawing_data,
pic_url=payload.pic_url,
customer_id=payload.customer_id,
customer_id=customer_id,
customer_name=customer_name,
phone=phone,
address=address,
note=payload.note,
money=payload.money,
count=payload.count,