重构固定值区域:新增重量强制覆盖,寄达地/寄件人/寄件地址有值即强制覆盖,寄达地区划代码改为下拉框(config读取映射)
This commit is contained in:
@@ -8,6 +8,11 @@
|
||||
"field_mapping": {
|
||||
"_comment": "仅需在此配置与内置映射不同的自定义列名,默认使用内置映射"
|
||||
},
|
||||
"district_codes": {
|
||||
"广东省": "440000",
|
||||
"山东省": "370000",
|
||||
"河北省": "130000"
|
||||
},
|
||||
"fixed_values": {
|
||||
"客户名称": {"value": "", "force": false},
|
||||
"寄件人": {"value": "", "force": false},
|
||||
|
||||
@@ -118,14 +118,12 @@ class App:
|
||||
self.fv_product = StringVar()
|
||||
self.fv_customer = StringVar()
|
||||
self.fv_destination = StringVar()
|
||||
self.fv_force_destination = BooleanVar()
|
||||
self.fv_district_code = StringVar()
|
||||
self.fv_force_district = BooleanVar()
|
||||
self.fv_sender_name = StringVar()
|
||||
self.fv_force_sender_name = BooleanVar()
|
||||
self.fv_sender_addr = StringVar()
|
||||
self.fv_force_sender_addr = BooleanVar()
|
||||
self.fv_transport_type = StringVar()
|
||||
self.fv_weight = StringVar()
|
||||
|
||||
# 搜索基础设施(懒加载)
|
||||
self._search_bridge = None
|
||||
@@ -141,6 +139,7 @@ class App:
|
||||
self._customer_cached_detail = None
|
||||
self._sender_realname_cached = None
|
||||
self._transmode_map = {} # {propertyName: propertyCode}
|
||||
self._district_codes = {} # {中文名: 区划代码}
|
||||
|
||||
self._build_ui()
|
||||
|
||||
@@ -219,50 +218,45 @@ class App:
|
||||
r0 = Frame(fixed_frame)
|
||||
r0.pack(fill=X, pady=2)
|
||||
Label(r0, text="产品:", width=10, anchor="e").pack(side="left")
|
||||
self.fv_product_entry = Entry(r0, textvariable=self.fv_product, width=20)
|
||||
self.fv_product_entry = Entry(r0, textvariable=self.fv_product, width=18)
|
||||
self.fv_product_entry.pack(side="left", padx=5)
|
||||
Label(r0, text="客户:", width=10, anchor="e").pack(side="left", padx=(30, 0))
|
||||
self.fv_customer_entry = Entry(r0, textvariable=self.fv_customer, width=20)
|
||||
Label(r0, text="客户:", width=10, anchor="e").pack(side="left", padx=(20, 0))
|
||||
self.fv_customer_entry = Entry(r0, textvariable=self.fv_customer, width=18)
|
||||
self.fv_customer_entry.pack(side="left", padx=5)
|
||||
|
||||
# Row 1: 寄达地 | 无影响
|
||||
# Row 1: 运输类型 | 重量
|
||||
r1 = Frame(fixed_frame)
|
||||
r1.pack(fill=X, pady=2)
|
||||
Label(r1, text="寄达地:", width=10, anchor="e").pack(side="left")
|
||||
Entry(r1, textvariable=self.fv_destination, width=20).pack(side="left", padx=5)
|
||||
Checkbutton(r1, text="强制覆盖", variable=self.fv_force_destination).pack(side="left", padx=5)
|
||||
Label(r1, text="无影响", fg="gray", font=("", 8)).pack(side="left")
|
||||
Label(r1, text="运输类型:", width=10, anchor="e").pack(side="left")
|
||||
self.fv_transport_combo = ttk.Combobox(r1, textvariable=self.fv_transport_type,
|
||||
state="readonly", width=16)
|
||||
self.fv_transport_combo.pack(side="left", padx=5)
|
||||
Label(r1, text="(产品选择后填充)", fg="gray", font=("", 8)).pack(side="left")
|
||||
Label(r1, text="重量:", width=8, anchor="e").pack(side="left", padx=(10, 0))
|
||||
Entry(r1, textvariable=self.fv_weight, width=10).pack(side="left", padx=5)
|
||||
Label(r1, text="(有值即强制覆盖)", fg="gray", font=("", 8)).pack(side="left")
|
||||
|
||||
# Row 2: 寄达地区划代码 | 强制覆盖 | 直接决定寄达地
|
||||
# Row 2: 寄达地 | 寄达地区划代码
|
||||
r2 = Frame(fixed_frame)
|
||||
r2.pack(fill=X, pady=2)
|
||||
Label(r2, text="寄达地区划代码:", width=12, anchor="e").pack(side="left")
|
||||
Entry(r2, textvariable=self.fv_district_code, width=20).pack(side="left", padx=5)
|
||||
Checkbutton(r2, text="强制覆盖", variable=self.fv_force_district).pack(side="left", padx=5)
|
||||
Label(r2, text="(直接决定寄达地)", fg="gray", font=("", 8)).pack(side="left")
|
||||
Label(r2, text="寄达地:", width=10, anchor="e").pack(side="left")
|
||||
Entry(r2, textvariable=self.fv_destination, width=18).pack(side="left", padx=5)
|
||||
Label(r2, text="(有值即强制覆盖)", fg="gray", font=("", 8)).pack(side="left")
|
||||
Label(r2, text="区划代码:", width=10, anchor="e").pack(side="left", padx=(10, 0))
|
||||
self.fv_district_combo = ttk.Combobox(r2, textvariable=self.fv_district_code,
|
||||
state="readonly", width=12)
|
||||
self.fv_district_combo.pack(side="left", padx=5)
|
||||
Checkbutton(r2, text="强制覆盖", variable=self.fv_force_district).pack(side="left", padx=2)
|
||||
|
||||
# Row 3: 寄件人姓名 | 强制覆盖
|
||||
# Row 3: 寄件人姓名 | 寄件地址
|
||||
r3 = Frame(fixed_frame)
|
||||
r3.pack(fill=X, pady=2)
|
||||
Label(r3, text="寄件人姓名:", width=12, anchor="e").pack(side="left")
|
||||
Entry(r3, textvariable=self.fv_sender_name, width=20).pack(side="left", padx=5)
|
||||
Checkbutton(r3, text="强制覆盖", variable=self.fv_force_sender_name).pack(side="left", padx=5)
|
||||
|
||||
# Row 4: 寄件地址 | 强制覆盖
|
||||
r4 = Frame(fixed_frame)
|
||||
r4.pack(fill=X, pady=2)
|
||||
Label(r4, text="寄件地址:", width=12, anchor="e").pack(side="left")
|
||||
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")
|
||||
Label(r3, text="寄件人姓名:", width=10, anchor="e").pack(side="left")
|
||||
Entry(r3, textvariable=self.fv_sender_name, width=18).pack(side="left", padx=5)
|
||||
Label(r3, text="(有值即强制覆盖)", fg="gray", font=("", 8)).pack(side="left")
|
||||
Label(r3, text="寄件地址:", width=10, anchor="e").pack(side="left", padx=(10, 0))
|
||||
Entry(r3, textvariable=self.fv_sender_addr, width=18).pack(side="left", padx=5)
|
||||
Label(r3, text="(有值即强制覆盖)", fg="gray", font=("", 8)).pack(side="left")
|
||||
|
||||
# ── 进度条 ──
|
||||
progress_frame = Frame(self.root)
|
||||
@@ -363,13 +357,18 @@ class App:
|
||||
self.fv_product.set(fv.get("产品名称", {}).get("value", ""))
|
||||
self.fv_customer.set(fv.get("客户名称", {}).get("value", ""))
|
||||
self.fv_destination.set(fv.get("寄达地", {}).get("value", ""))
|
||||
self.fv_force_destination.set(fv.get("寄达地", {}).get("force", False))
|
||||
self.fv_district_code.set(fv.get("寄达地区划", {}).get("value", ""))
|
||||
self.fv_force_district.set(fv.get("寄达地区划", {}).get("force", False))
|
||||
self.fv_sender_name.set(fv.get("寄件人", {}).get("value", ""))
|
||||
self.fv_force_sender_name.set(fv.get("寄件人", {}).get("force", False))
|
||||
self.fv_sender_addr.set(fv.get("寄件地址", {}).get("value", ""))
|
||||
self.fv_force_sender_addr.set(fv.get("寄件地址", {}).get("force", False))
|
||||
self.fv_weight.set(fv.get("重量", {}).get("value", ""))
|
||||
|
||||
# 加载区划代码下拉选项
|
||||
dc = self.config.get("district_codes", {})
|
||||
self._district_codes = dc
|
||||
names = list(dc.keys())
|
||||
self.fv_district_combo["values"] = names
|
||||
|
||||
self._loading_config = False
|
||||
|
||||
# 检查已保存的登录会话
|
||||
@@ -397,13 +396,22 @@ class App:
|
||||
|
||||
def _save_fixed_from_entries(self):
|
||||
"""从编辑框保存固定值到 config.json。"""
|
||||
dest_val = self.fv_destination.get().strip()
|
||||
sender_val = self.fv_sender_name.get().strip()
|
||||
addr_val = self.fv_sender_addr.get().strip()
|
||||
weight_val = self.fv_weight.get().strip()
|
||||
# 区划代码:Combobox 显示中文名,实际存 propertyCode
|
||||
dist_name = self.fv_district_code.get()
|
||||
dist_code = self._district_codes.get(dist_name, dist_name) if self._district_codes else dist_name
|
||||
|
||||
new_fixed = {
|
||||
"产品名称": {"value": self.fv_product.get().strip(), "force": False},
|
||||
"客户名称": {"value": self.fv_customer.get().strip(), "force": False},
|
||||
"寄达地": {"value": self.fv_destination.get().strip(), "force": self.fv_force_destination.get()},
|
||||
"寄达地区划": {"value": self.fv_district_code.get().strip(), "force": self.fv_force_district.get()},
|
||||
"寄件人": {"value": self.fv_sender_name.get().strip(), "force": self.fv_force_sender_name.get()},
|
||||
"寄件地址": {"value": self.fv_sender_addr.get().strip(), "force": self.fv_force_sender_addr.get()},
|
||||
"寄达地": {"value": dest_val, "force": bool(dest_val)},
|
||||
"寄达地区划": {"value": dist_code, "force": self.fv_force_district.get()},
|
||||
"寄件人": {"value": sender_val, "force": bool(sender_val)},
|
||||
"寄件地址": {"value": addr_val, "force": bool(addr_val)},
|
||||
"重量": {"value": weight_val, "force": bool(weight_val)},
|
||||
}
|
||||
self.config["fixed_values"] = new_fixed
|
||||
|
||||
@@ -870,6 +878,7 @@ class App:
|
||||
self._customer_cached_detail = None
|
||||
self._sender_realname_cached = None
|
||||
self.fv_transport_type.set("")
|
||||
self.fv_weight.set("")
|
||||
self._transmode_map = {}
|
||||
|
||||
def _pause(self):
|
||||
|
||||
Reference in New Issue
Block a user