diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..4c27dbb --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,15 @@ +{ + "permissions": { + "allow": [ + "Skill(update-config)", + "Bash(mv views/Ht.vue views/htCard.vue views/htInfo.vue views/HtAdditionalWorkFee.vue views/HtConsultCategoryFactor.vue views/HtFeeRateMethodForm.vue views/HtMajorFactor.vue views/HtReserveFee.vue ht/)", + "Bash(mv views/xmCard.vue views/xmInfo.vue views/info.vue views/XmMajorFactor.vue views/XmConsultCategoryFactor.vue xm/)", + "Bash(mv views/pricingView/HourlyPricingPane.vue views/pricingView/InvestmentScalePricingPane.vue views/pricingView/LandScalePricingPane.vue views/pricingView/WorkloadPricingPane.vue pricing/)", + "Bash(mv common/HourlyFeeGrid.vue common/HtFeeGrid.vue common/HtFeeMethodGrid.vue common/MethodUnavailableNotice.vue common/XmFactorGrid.vue common/xmCommonAgGrid.vue views/ServiceCheckboxSelector.vue views/WorkContentGrid.vue shared/)", + "Bash(rmdir views/pricingView common)", + "Bash(cd:*)", + "Bash(bun run:*)", + "Bash(grep:*)" + ] + } +} diff --git a/.codex-import-smoke.zw b/.codex-import-smoke.zw deleted file mode 100644 index 8e1be18..0000000 --- a/.codex-import-smoke.zw +++ /dev/null @@ -1,2 +0,0 @@ -JGJSZW #WgtK_G;wf)Au:퇼!PY2Z[B[ߺ mFSs;eQqd;gf}DF`4ѼI{K1Nr|[jȄ(YX9?2Hv^0dL6gNvZ~?mq^#ʎIm ,Hu?[. P5BM8PG.dgP>fl: +ql -:ՠ#TZ8]X((WVgI\?ۣsQ k X6鴦?אi+\pcLX;ҹw,q2$ą< ^A Sc\>rp-Ap7F@8jco Hڱa9 5u ^da-̡.% N~δIݳtIVnpIikcJ>vMp`) everywhere. +- No Vue Router — use `useTabStore.openTab()` to navigate. +- Numeric calculations always go through `src/lib/decimal.ts` helpers to avoid floating-point errors. +- Storage keys follow patterns like `zxFW-{contractId}`, `tzGMF-{contractId}-{serviceId}`, `htExtraFee-{contractId}-{feeType}`. diff --git a/XUQIU.md b/XUQIU.md new file mode 100644 index 0000000..e69de29 diff --git a/et --hard 9c11604 b/et --hard 9c11604 deleted file mode 100644 index 96b020f..0000000 --- a/et --hard 9c11604 +++ /dev/null @@ -1,54 +0,0 @@ -d3695c8 (HEAD -> main, origin/main, origin/HEAD) HEAD@{0}: reset: moving to HEAD^ -9c11604 HEAD@{1}: checkout: moving from 9c11604ba744feb874018575a6a679700971e548 to main -9c11604 HEAD@{2}: checkout: moving from main to 9c11604ba744feb874018575a6a679700971e548 -9c11604 HEAD@{3}: reset: moving to 9c11604ba744feb874018575a6a679700971e548 -9c11604 HEAD@{4}: commit: 首页 -d3695c8 (HEAD -> main, origin/main, origin/HEAD) HEAD@{5}: pull -f: Fast-forward -1c600e6 HEAD@{6}: commit: fix -f4f6e5c HEAD@{7}: commit: final -398fca9 HEAD@{8}: pull: Fast-forward -f4c768d HEAD@{9}: commit: fix -cd10760 HEAD@{10}: commit: 1 -0f71fff HEAD@{11}: commit: fix -3d26b0b HEAD@{12}: commit: fix,去掉大部分indexdb的逻辑 -9a045cf HEAD@{13}: commit: 大改,使用pinia传值,indexdb做持久化 -3ad7bae HEAD@{14}: commit: 调整存储的逻辑 -bbc8777 HEAD@{15}: commit: fix -5614e31 HEAD@{16}: commit: 修复bug -5bb6609 HEAD@{17}: commit: fix bug -1910f15 HEAD@{18}: pull: Fast-forward -2a2c0fe HEAD@{19}: commit: 1 -f79e8e0 HEAD@{20}: commit: merge -ab310b4 HEAD@{21}: commit: 1 -d1dda7f HEAD@{22}: pull: Fast-forward -8a15587 HEAD@{23}: reset: moving to HEAD -8a15587 HEAD@{24}: commit: 备份 -fc26a87 HEAD@{25}: commit: 系数字段修改 -21d3f03 HEAD@{26}: pull: Fast-forward -303f54b HEAD@{27}: commit: if -043e1fc HEAD@{28}: commit: fix -ad4e9cd HEAD@{29}: commit: fix someone -c482faa HEAD@{30}: commit: fix -626513b HEAD@{31}: commit: fix -d8f8b62 HEAD@{32}: commit: fix -75f293f HEAD@{33}: commit: '20260305修复bug' -53c1b2c HEAD@{34}: commit: 1 -75d5066 HEAD@{35}: commit: 1 -e4a2b53 HEAD@{36}: commit: 1 -42fd6e4 HEAD@{37}: commit: 重构 -33913c2 HEAD@{38}: commit: 1 -62546bc HEAD@{39}: commit: 1 -a10359f HEAD@{40}: commit: 优化 -3950057 HEAD@{41}: commit: fix -757de9a HEAD@{42}: commit: 1 -ea6a244 HEAD@{43}: commit: fix -13b03e0 HEAD@{44}: commit: 完成大部分 -e97707a HEAD@{45}: commit: fix -9849801 HEAD@{46}: commit: fix all -badf131 HEAD@{47}: commit: fix -57a2029 HEAD@{48}: commit: fix 拖动流畅度 -37f4a99 HEAD@{49}: commit: fix bug -1609f19 HEAD@{50}: commit: fix more -5734cfa HEAD@{51}: commit: fix more -f121aa2 HEAD@{52}: commit: fix all -6ba08da HEAD@{53}: clone: from https://git.zwgczx.com/zwgczx/JGJS2026.git diff --git a/src/App.vue b/src/App.vue index 2bca678..3d8960f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,7 +1,30 @@ diff --git a/src/components/views/Ht.vue b/src/components/ht/Ht.vue similarity index 100% rename from src/components/views/Ht.vue rename to src/components/ht/Ht.vue diff --git a/src/components/views/HtAdditionalWorkFee.vue b/src/components/ht/HtAdditionalWorkFee.vue similarity index 90% rename from src/components/views/HtAdditionalWorkFee.vue rename to src/components/ht/HtAdditionalWorkFee.vue index d3e3671..bf305fd 100644 --- a/src/components/views/HtAdditionalWorkFee.vue +++ b/src/components/ht/HtAdditionalWorkFee.vue @@ -1,6 +1,6 @@ + + + + diff --git a/src/components/common/XmFactorGrid.vue b/src/components/shared/XmFactorGrid.vue similarity index 100% rename from src/components/common/XmFactorGrid.vue rename to src/components/shared/XmFactorGrid.vue diff --git a/src/components/common/xmCommonAgGrid.vue b/src/components/shared/xmCommonAgGrid.vue similarity index 100% rename from src/components/common/xmCommonAgGrid.vue rename to src/components/shared/xmCommonAgGrid.vue diff --git a/src/components/views/HomeEntryView.vue b/src/components/views/HomeEntryView.vue index cf6d7b9..0746dac 100644 --- a/src/components/views/HomeEntryView.vue +++ b/src/components/views/HomeEntryView.vue @@ -4,7 +4,15 @@ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/com import { Button } from '@/components/ui/button' import { useTabStore } from '@/pinia/tab' import { useKvStore } from '@/pinia/kv' -import { Calculator, Check, ChevronDown, Download, FolderKanban, X, Zap } from 'lucide-vue-next' +import { + Calculator, + Check, + ChevronDown, + Download, + FolderKanban, + X, + Zap +} from 'lucide-vue-next' import { industryTypeList } from '@/sql' import { initializeProjectFactorStates } from '@/lib/projectWorkspace' import { @@ -57,7 +65,7 @@ interface ProjectInfoState { const PROJECT_INFO_KEY = 'xm-base-info-v1' const PROJECT_CONSULT_CATEGORY_FACTOR_KEY = 'xm-consult-category-factor-v1' const PROJECT_MAJOR_FACTOR_KEY = 'xm-major-factor-v1' -const DEFAULT_PROJECT_NAME = 'xxx造价咨询服务' +const DEFAULT_PROJECT_NAME = 'xxx 造价咨询服务' const PROJECT_INIT_CHANGED_EVENT = 'xm-project-init-changed' const tabStore = useTabStore() @@ -69,6 +77,10 @@ const quickDialogOpen = ref(false) const quickIndustry = ref(String(industryTypeList[0]?.id || '')) const quickContractName = ref(QUICK_CONTRACT_FALLBACK_NAME) const quickSubmitting = ref(false) +const homeImportInputRef = ref(null) +const projectIconAvailable = ref(false) +const quickIconAvailable = ref(false) +const importIconAvailable = ref(false) const getTodayDateString = () => { const now = new Date() @@ -83,8 +95,9 @@ const enterProjectCalc = () => { tabStore.enterWorkspace({ id: PROJECT_TAB_ID, title: '项目计算', - componentName: PROJECT_TAB_ID + componentName: 'XmView' }) + tabStore.hasCompletedSetup = true } const loadProjectDefaults = async () => { @@ -187,7 +200,6 @@ const confirmQuickCalc = async () => { QUICK_MAJOR_FACTOR_KEY ) - writeWorkspaceMode('quick') tabStore.enterWorkspace({ id: `contract-${QUICK_CONTRACT_ID}`, title: contractName, @@ -201,6 +213,7 @@ const confirmQuickCalc = async () => { projectMajorFactorKey: QUICK_MAJOR_FACTOR_KEY } }) + tabStore.hasCompletedSetup = true } finally { quickSubmitting.value = false quickDialogOpen.value = false @@ -219,6 +232,10 @@ const handleHomeImportChange = (event: Event) => { input.value = '' } +const openHomeImport = () => { + homeImportInputRef.value?.click() +} + onMounted(() => { void loadProjectDefaults() void loadQuickDefaults() @@ -226,104 +243,133 @@ onMounted(() => { diff --git a/src/components/views/ProjectWorkspaceView.vue b/src/components/views/ProjectWorkspaceView.vue index f17f060..dfe9b26 100644 --- a/src/components/views/ProjectWorkspaceView.vue +++ b/src/components/views/ProjectWorkspaceView.vue @@ -1,6 +1,6 @@ diff --git a/src/components/views/XmConsultCategoryFactor.vue b/src/components/xm/XmConsultCategoryFactor.vue similarity index 96% rename from src/components/views/XmConsultCategoryFactor.vue rename to src/components/xm/XmConsultCategoryFactor.vue index 60aa25d..7244fd6 100644 --- a/src/components/views/XmConsultCategoryFactor.vue +++ b/src/components/xm/XmConsultCategoryFactor.vue @@ -1,7 +1,7 @@