运输类型/内件属性改为从API获取:删除field_mapping映射和默认值,界面新增运输类型下拉框(transmode数组填充),结果表格增加运输类型列
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user