运输类型/内件属性改为从API获取:删除field_mapping映射和默认值,界面新增运输类型下拉框(transmode数组填充),结果表格增加运输类型列

This commit is contained in:
2026-05-15 20:45:06 +08:00
parent 34ff957671
commit be6319f697
4 changed files with 38 additions and 50 deletions
+31 -2
View File
@@ -125,6 +125,7 @@ class App:
self.fv_force_sender_name = BooleanVar()
self.fv_sender_addr = StringVar()
self.fv_force_sender_addr = BooleanVar()
self.fv_transport_type = StringVar()
# 搜索基础设施(懒加载)
self._search_bridge = None
@@ -139,6 +140,7 @@ class App:
self._customer_cached_choice = None
self._customer_cached_detail = None
self._sender_realname_cached = None
self._transmode_map = {} # {propertyName: propertyCode}
self._build_ui()
@@ -253,6 +255,15 @@ class App:
Entry(r4, textvariable=self.fv_sender_addr, width=20).pack(side="left", padx=5)
Checkbutton(r4, text="强制覆盖", variable=self.fv_force_sender_addr).pack(side="left", padx=5)
# Row 5: 运输类型 | 下拉框(产品选择后自动填充)
r5 = Frame(fixed_frame)
r5.pack(fill=X, pady=2)
Label(r5, text="运输类型:", width=12, anchor="e").pack(side="left")
self.fv_transport_combo = ttk.Combobox(r5, textvariable=self.fv_transport_type,
state="readonly", width=18)
self.fv_transport_combo.pack(side="left", padx=5)
Label(r5, text="(产品选择后自动填充)", fg="gray", font=("", 8)).pack(side="left")
# ── 进度条 ──
progress_frame = Frame(self.root)
progress_frame.pack(fill=X, padx=10, pady=2)
@@ -267,9 +278,9 @@ class App:
result_frame = LabelFrame(self.root, text="提交结果", padx=10, pady=5)
result_frame.pack(fill="both", expand=True, padx=10, pady=5)
columns = ("单号", "处理状态", "重量", "产品", "客户", "寄达地区划代码", "寄件人姓名", "寄件地址")
columns = ("单号", "处理状态", "重量", "产品", "客户", "运输类型", "寄达地区划代码", "寄件人姓名", "寄件地址")
self.result_tree = ttk.Treeview(result_frame, columns=columns, show="headings", height=8)
col_widths = [140, 80, 60, 110, 110, 110, 80, 160]
col_widths = [140, 80, 60, 100, 100, 70, 100, 80, 140]
for col, width in zip(columns, col_widths):
self.result_tree.heading(col, text=col)
self.result_tree.column(col, width=width, anchor="center")
@@ -411,6 +422,7 @@ class App:
result.get("重量", ""),
result.get("产品", ""),
result.get("客户", ""),
result.get("运输类型", ""),
result.get("寄达地区划代码", ""),
result.get("寄件人姓名", ""),
result.get("寄件地址", ""),
@@ -577,6 +589,18 @@ class App:
biz_no = choice.get("bizProductNo", "")
if biz_id and biz_no and self._search_api:
self._product_cached_detail = self._search_api.select_product(biz_id, biz_no)
# 从产品详情中提取运输类型选项(transmode 数组)
detail = self._product_cached_detail
if isinstance(detail, dict):
transmode = detail.get("transmode", [])
if isinstance(transmode, list) and transmode:
codes = [item["propertyCode"] for item in transmode if "propertyCode" in item]
names = [item["propertyName"] for item in transmode if "propertyName" in item]
self._transmode_map = dict(zip(names, codes))
self.fv_transport_combo["values"] = names
# 默认选中最后一项
if names:
self.fv_transport_type.set(names[-1])
except Exception as e:
self._log(f"[error] 获取产品详情失败: {e}")
self._product_cached_detail = {}
@@ -757,6 +781,9 @@ class App:
_engine._customer_detail = self._customer_cached_detail
if self._sender_realname_cached is not None:
_engine._sender_realname = self._sender_realname_cached
transport_name = self.fv_transport_type.get()
if transport_name and self._transmode_map:
_engine._transport_type = self._transmode_map.get(transport_name, "")
self._update_status("启动中...")
try:
@@ -842,6 +869,8 @@ class App:
self._customer_cached_choice = None
self._customer_cached_detail = None
self._sender_realname_cached = None
self.fv_transport_type.set("")
self._transmode_map = {}
def _pause(self):
global _engine