From 75f293f877fd200806d71a8c97146b37ee448394 Mon Sep 17 00:00:00 2001
From: wintsa <770775984@qq.com>
Date: Thu, 5 Mar 2026 17:58:38 +0800
Subject: [PATCH] =?UTF-8?q?'20260305=E4=BF=AE=E5=A4=8Dbug'?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
AGENTS.md | 19 +
index.html | 1 +
public/vite.svg | 1 -
src/components/common/CommonAgGrid.vue | 49 -
src/components/common/XmFactorGrid.vue | 11 +-
src/components/common/xmCommonAgGrid.vue | 244 +++
src/components/views/Ht.vue | 10 +-
.../views/ServiceCheckboxSelector.vue | 2 +-
src/components/views/Xm.vue | 43 +-
src/components/views/XmMajorFactor.vue | 16 +-
src/components/views/htInfo.vue | 234 +--
src/components/views/info.vue | 44 +-
.../InvestmentScalePricingPane.vue | 47 +-
.../pricingView/LandScalePricingPane.vue | 46 +-
src/components/views/xmInfo.vue | 305 +---
src/components/views/zxFw.vue | 13 +-
src/layout/tab.vue | 3 +-
src/lib/pricingMethodTotals.ts | 30 +-
src/lib/xmFactorDefaults.ts | 12 +-
src/sql.ts | 1437 ++++++++---------
20 files changed, 1167 insertions(+), 1400 deletions(-)
create mode 100644 AGENTS.md
delete mode 100644 public/vite.svg
delete mode 100644 src/components/common/CommonAgGrid.vue
create mode 100644 src/components/common/xmCommonAgGrid.vue
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..7c06ddf
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,19 @@
+# AGENTS.md — Encoding & Chinese Safety Rules
+
+## Absolute rules (must follow)
+1. Never corrupt non-ASCII text (Chinese, emoji, etc.). Preserve exact Unicode characters.
+2. NEVER rewrite entire files when only small edits are needed. Always apply minimal diffs/patches.
+3. If a file contains Chinese characters, do not “normalize”, “escape”, “re-encode”, or “replace” them.
+4. When reading/writing files via scripts/tools, always use UTF-8 explicitly (no platform default encoding).
+
+## Windows / PowerShell rules
+- If you need to run PowerShell, force UTF-8 output/input:
+ - Use: `[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()`
+ - Prefer `Set-Content -Encoding utf8` / `Out-File -Encoding utf8`
+- Avoid commands that may round-trip through ANSI/CP936/CP1252 without explicit encoding.
+
+## Workflow
+- Before editing: inspect the target lines only.
+- Apply changes as a patch (line-level edits), not full-file regeneration.
+- After editing: verify the edited lines still show correct Chinese.
+- If uncertain: stop and ask rather than guessing and corrupting text.
\ No newline at end of file
diff --git a/index.html b/index.html
index cf2bef4..e76de1c 100644
--- a/index.html
+++ b/index.html
@@ -9,6 +9,7 @@
-
-
-
-
diff --git a/src/components/common/XmFactorGrid.vue b/src/components/common/XmFactorGrid.vue
index 1707f7a..04dce77 100644
--- a/src/components/common/XmFactorGrid.vue
+++ b/src/components/common/XmFactorGrid.vue
@@ -13,6 +13,7 @@ interface DictItem {
defCoe: number | null
desc?: string | null
notshowByzxflxs?: boolean
+ order?: number | null
}
interface FactorRow {
@@ -61,10 +62,12 @@ const sortedDictEntries = () =>
return true
})
.sort((a, b) => {
- const aNum = Number(a[0])
- const bNum = Number(b[0])
- if (Number.isFinite(aNum) && Number.isFinite(bNum)) return aNum - bNum
- return String(a[0]).localeCompare(String(b[0]))
+ const aOrder = Number(a[1]?.order)
+ const bOrder = Number(b[1]?.order)
+ if (Number.isFinite(aOrder) && Number.isFinite(bOrder) && aOrder !== bOrder) return aOrder - bOrder
+ if (Number.isFinite(aOrder) && !Number.isFinite(bOrder)) return -1
+ if (!Number.isFinite(aOrder) && Number.isFinite(bOrder)) return 1
+ return String(a[1]?.code || a[0]).localeCompare(String(b[1]?.code || b[0]))
})
const buildCodePath = (code: string, selfId: string, codeIdMap: Map) => {
diff --git a/src/components/common/xmCommonAgGrid.vue b/src/components/common/xmCommonAgGrid.vue
new file mode 100644
index 0000000..8862673
--- /dev/null
+++ b/src/components/common/xmCommonAgGrid.vue
@@ -0,0 +1,244 @@
+
+
+
+
+
diff --git a/src/components/views/Ht.vue b/src/components/views/Ht.vue
index 79ccf8c..3848438 100644
--- a/src/components/views/Ht.vue
+++ b/src/components/views/Ht.vue
@@ -9,7 +9,7 @@ import { TooltipContent, TooltipProvider, TooltipRoot, TooltipTrigger } from '@/
import { useTabStore } from '@/pinia/tab'
import { ArrowUp, Edit3, GripVertical, MoreHorizontal, Plus, Trash2, X } from 'lucide-vue-next'
import { decodeZwArchive, encodeZwArchive } from '@/lib/zwArchive'
-import { majorList } from '@/sql'
+import { industryTypeList } from '@/sql'
import {
AlertDialogAction,
AlertDialogCancel,
@@ -90,7 +90,7 @@ const contractListViewportRef = ref(null)
const showScrollTopFab = ref(false)
const isDraggingContracts = ref(false)
const cardMotionState = ref<'enter' | 'ready'>('ready')
-const canManageContracts = ref(false)
+const canManageContracts = ref(true)
let contractAutoScrollRaf = 0
let dragPointerClientY: number | null = null
let cardEnterTimer: ReturnType | null = null
@@ -196,10 +196,8 @@ const formatExportTimestamp = (date: Date): string => {
const industryNameByCode = (() => {
const map = new Map()
- for (const item of Object.values(majorList as Record)) {
- if (!item?.code || !item?.name) continue
- if (item.code.includes('-')) continue
- map.set(item.code, item.name)
+ for (const item of industryTypeList) {
+ map.set(item.id, item.name)
}
return map
})()
diff --git a/src/components/views/ServiceCheckboxSelector.vue b/src/components/views/ServiceCheckboxSelector.vue
index 84d4cb1..4caa947 100644
--- a/src/components/views/ServiceCheckboxSelector.vue
+++ b/src/components/views/ServiceCheckboxSelector.vue
@@ -36,7 +36,7 @@ const clearAll = () => {