diff --git a/.gitignore b/.gitignore index c3e478b..83071a9 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,8 @@ dist dist-ssr *.local *.exe +~$* +tsconfig.tsbuildinfo # Editor directories and files .vscode/* !.vscode/extensions.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index a7cea0b..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["Vue.volar"] -} diff --git a/33/background.png b/33/background.png new file mode 100644 index 0000000..849942d Binary files /dev/null and b/33/background.png differ diff --git a/33/bg-home.png b/33/bg-home.png new file mode 100644 index 0000000..7edcc2a --- /dev/null +++ b/33/bg-home.png @@ -0,0 +1 @@ +iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADl8HLGAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4SU \ No newline at end of file diff --git a/33/favicon.ico b/33/favicon.ico new file mode 100644 index 0000000..0b5169c Binary files /dev/null and b/33/favicon.ico differ diff --git a/33/index.html b/33/index.html new file mode 100644 index 0000000..21eb5fc --- /dev/null +++ b/33/index.html @@ -0,0 +1,58 @@ + + + + + + + + 联众咨询 + + + + + + + + + + + + + + + + + +
+ + + diff --git a/33/logo.jpg b/33/logo.jpg new file mode 100644 index 0000000..0b5169c Binary files /dev/null and b/33/logo.jpg differ diff --git a/33/static/css/HourlyFeeGrid-B40FytkG.css b/33/static/css/HourlyFeeGrid-B40FytkG.css new file mode 100644 index 0000000..00e527b --- /dev/null +++ b/33/static/css/HourlyFeeGrid-B40FytkG.css @@ -0,0 +1 @@ +[data-v-ec557cf6] .hourly-fee-name-cell.ag-cell-auto-height{align-items:center;display:flex}[data-v-ec557cf6] .hourly-fee-name-cell.ag-cell-auto-height .ag-cell-wrapper,[data-v-ec557cf6] .hourly-fee-name-cell.ag-cell-auto-height .ag-cell-value{white-space:normal;align-items:center;width:100%;display:flex} diff --git a/33/static/css/Ht-vPX37589.css b/33/static/css/Ht-vPX37589.css new file mode 100644 index 0000000..1d2bbdc --- /dev/null +++ b/33/static/css/Ht-vPX37589.css @@ -0,0 +1 @@ +.ht-contract-scroll-area[data-v-01c49185] [data-slot=scroll-area-viewport]{overscroll-behavior:contain;scroll-snap-type:y mandatory;padding-top:6px}.ht-contract-scroll-area.is-dragging[data-v-01c49185] [data-slot=scroll-area-viewport]{scroll-snap-type:none}.ht-contract-scroll-area[data-v-01c49185] .ht-sortable-ghost{opacity:.35}.ht-contract-scroll-area[data-v-01c49185] .ht-sortable-chosen,.ht-contract-scroll-area[data-v-01c49185] .ht-sortable-drag{will-change:transform, opacity;backface-visibility:hidden;transform:translateZ(0)}.ht-contract-card[data-v-01c49185]{will-change:transform, opacity;backface-visibility:hidden;isolation:isolate;z-index:0;box-shadow:0 1px 2px hsl(var(--foreground) / .04), 0 6px 16px hsl(var(--foreground) / .06);transition:transform .22s cubic-bezier(.22,.61,.36,1),box-shadow .22s cubic-bezier(.22,.61,.36,1),border-color .18s;overflow:visible;transform:translate(0,0)}.ht-contract-card[data-v-01c49185]:before{content:"";border-radius:inherit;pointer-events:none;background:linear-gradient(130deg, hsl(var(--primary) / .42) 0%, hsl(var(--primary) / .22) 36%, hsl(var(--foreground) / .09) 70%, transparent 100%);opacity:0;transition:opacity .22s cubic-bezier(.22,.61,.36,1);position:absolute;inset:-4px}.ht-contract-card[data-v-01c49185]:after{content:"";pointer-events:none;background:radial-gradient(ellipse at center, hsl(var(--primary) / .42) 0%, hsl(var(--primary) / .24) 34%, hsl(var(--foreground) / .2) 58%, transparent 86%);filter:blur(18px);opacity:0;border-radius:999px;height:52px;transition:opacity .22s cubic-bezier(.22,.61,.36,1),transform .22s cubic-bezier(.22,.61,.36,1);position:absolute;bottom:-30px;left:6px;right:6px;transform:translateY(4px)}.ht-contract-card[data-v-01c49185]:hover{z-index:14;box-shadow:0 0 0 1.5px hsl(var(--primary) / .62), 0 0 28px hsl(var(--primary) / .34), 0 0 56px hsl(var(--primary) / .22), 0 16px 34px hsl(var(--foreground) / .22), 0 32px 60px hsl(var(--foreground) / .18);border-color:hsl(var(--primary) / .72);transform:translateY(-5px)}.ht-contract-card[data-v-01c49185]:hover:before{opacity:1}.ht-contract-card[data-v-01c49185]:hover:after{opacity:.95;transform:translateY(0)}.ht-contract-card[data-v-01c49185]:active{box-shadow:0 5px 12px hsl(var(--foreground) / .1), 0 10px 20px hsl(var(--foreground) / .1);transform:translateY(-2px)}.ht-contract-card--ready[data-v-01c49185]{opacity:1;transform:translate(0,0)}.ht-contract-card--enter[data-v-01c49185]{animation:.56s cubic-bezier(.22,.61,.36,1) both ht-card-slide-in-01c49185;animation-delay:var(--ht-card-enter-delay,0s)}.ht-contract-card--selecting[data-v-01c49185]{transform-origin:50% 100%;animation:2.2s linear infinite both ht-card-select-wave-01c49185;animation-delay:var(--ht-card-select-delay,0s)}.ht-contract-card--selecting[data-v-01c49185]:hover{animation-play-state:paused}.ht-contract-card--selecting.ht-contract-card--selected[data-v-01c49185]{animation:none;transform:translate(0,0)rotate(0)}.ht-contract-card--selected[data-v-01c49185]{border-color:hsl(var(--primary));box-shadow:0 0 0 1px hsl(var(--primary) / .34), 0 12px 24px hsl(var(--primary) / .18), 0 22px 36px hsl(var(--foreground) / .1);transform:translateY(-4px)}.ht-contract-card--selected[data-v-01c49185]:before{opacity:1}.ht-contract-card--selected[data-v-01c49185]:after{opacity:1;transform:translateY(0)}@keyframes ht-card-slide-in-01c49185{0%{opacity:0;transform:translate(44px)}to{opacity:1;transform:translate(0,0)}}@keyframes ht-card-select-wave-01c49185{0%,to{transform:translate(0,0)rotate(0)}11%{transform:translate(-.4px)rotate(-.7deg)}22%{transform:translate(-.9px)rotate(-1.6deg)}34%{transform:translate(-1.2px)rotate(-2.3deg)}48%{transform:translate(-.2px)rotate(-.4deg)}62%{transform:translate(.8px)rotate(1.5deg)}76%{transform:translate(1.25px)rotate(2.35deg)}88%{transform:translate(.35px)rotate(.65deg)}}@media (prefers-reduced-motion:reduce){.ht-contract-card--enter[data-v-01c49185],.ht-contract-card--selecting[data-v-01c49185]{opacity:1;animation:none;transform:none}.ht-contract-card[data-v-01c49185],.ht-contract-card[data-v-01c49185]:hover,.ht-contract-card[data-v-01c49185]:active,.ht-contract-card--selected[data-v-01c49185]{transition:none;transform:none}.ht-contract-card[data-v-01c49185]:before,.ht-contract-card[data-v-01c49185]:after{transition:none}} diff --git a/33/static/css/HtContractSummary-oEzQmM2a.css b/33/static/css/HtContractSummary-oEzQmM2a.css new file mode 100644 index 0000000..c5c8fa5 --- /dev/null +++ b/33/static/css/HtContractSummary-oEzQmM2a.css @@ -0,0 +1 @@ +[data-v-174cd11a] .ag-layout-auto-height .ag-center-cols-viewport,[data-v-174cd11a] .ag-layout-auto-height .ag-center-cols-container{min-height:0!important}[data-v-174cd11a] .ht-summary-fee-row .ag-cell{background:color-mix(in oklab, var(--muted) 45%, transparent)} diff --git a/33/static/css/HtFeeMethodTypeLineView-DQeFn_Ta.css b/33/static/css/HtFeeMethodTypeLineView-DQeFn_Ta.css new file mode 100644 index 0000000..406788f --- /dev/null +++ b/33/static/css/HtFeeMethodTypeLineView-DQeFn_Ta.css @@ -0,0 +1 @@ +[data-v-6c6d44a3] .rate-input{text-align:left!important} diff --git a/33/static/css/OtherService-poy4GwCf.css b/33/static/css/OtherService-poy4GwCf.css new file mode 100644 index 0000000..ebd7332 --- /dev/null +++ b/33/static/css/OtherService-poy4GwCf.css @@ -0,0 +1 @@ +[data-v-fbf19b52] .hourly-fee-name-cell.ag-cell-auto-height{align-items:center;display:flex}[data-v-fbf19b52] .hourly-fee-name-cell.ag-cell-auto-height .ag-cell-wrapper,[data-v-fbf19b52] .hourly-fee-name-cell.ag-cell-auto-height .ag-cell-value{white-space:normal;align-items:center;width:100%;display:flex} diff --git a/33/static/css/QuickCalcWorkbenchView-C1jyxPFF.css b/33/static/css/QuickCalcWorkbenchView-C1jyxPFF.css new file mode 100644 index 0000000..3925d3d --- /dev/null +++ b/33/static/css/QuickCalcWorkbenchView-C1jyxPFF.css @@ -0,0 +1 @@ +.quick-calc-shell[data-v-3aadb39f]{--qc-surface:color-mix(in srgb, var(--card) 96%, var(--background));--qc-surface-muted:color-mix(in srgb, var(--muted) 82%, var(--card));--qc-surface-strong:color-mix(in srgb, var(--foreground) 8%, var(--card));--qc-border:color-mix(in srgb, var(--foreground) 14%, transparent);--qc-border-strong:color-mix(in srgb, var(--foreground) 28%, transparent);--qc-text:var(--foreground);--qc-muted:var(--muted-foreground);--qc-accent:hsl(var(--destructive));--qc-accent-soft:color-mix(in srgb, hsl(var(--destructive)) 10%, transparent);--qc-shadow:0 18px 40px color-mix(in srgb, var(--foreground) 8%, transparent);background:radial-gradient(circle at top left, color-mix(in srgb, hsl(var(--destructive)) 8%, transparent) 0%, transparent 34%), linear-gradient(180deg, color-mix(in srgb, var(--background) 96%, var(--muted)) 0%, var(--background) 100%);padding:8px}.quick-calc-layout[data-v-3aadb39f]{grid-template-columns:minmax(0,1.45fr) minmax(340px,.95fr);gap:10px;height:100%;min-height:0;display:grid}.quick-calc-panel[data-v-3aadb39f]{border:1px solid var(--qc-border);background:var(--qc-surface);min-height:0;box-shadow:var(--qc-shadow);border-radius:18px;flex-direction:column;display:flex;overflow:hidden}.quick-calc-panel__header[data-v-3aadb39f]{border-bottom:1px solid var(--qc-border);background:linear-gradient(90deg, color-mix(in srgb, hsl(var(--destructive)) 10%, transparent) 0%, transparent 24%), linear-gradient(180deg, #fff3 0%, transparent 100%);justify-content:space-between;align-items:flex-start;gap:10px;padding:10px 12px 8px;display:flex}.quick-calc-toolbar[data-v-3aadb39f]{border-bottom:1px solid var(--qc-border);background:color-mix(in srgb, var(--qc-surface-muted) 72%, transparent);align-items:stretch;gap:12px;padding:12px;display:flex}.quick-calc-toolbar__section[data-v-3aadb39f]{flex:1;min-width:min(280px,100%)}.quick-calc-industry-grid[data-v-3aadb39f]{grid-template-columns:repeat(auto-fit,minmax(136px,1fr));gap:8px;display:grid}.quick-calc-industry-card[data-v-3aadb39f]{border:1px solid var(--qc-border);background:color-mix(in srgb, var(--background) 92%, var(--card));min-width:0;min-height:42px;color:var(--qc-text);cursor:pointer;border-radius:12px;align-items:center;gap:10px;padding:0 12px;transition:transform .16s,border-color .16s,background .16s,box-shadow .16s;display:flex;position:relative}.quick-calc-industry-card[data-v-3aadb39f]:hover{border-color:var(--qc-border-strong);transform:translateY(-1px)}.quick-calc-industry-card[data-v-3aadb39f]:focus-visible{border-color:color-mix(in srgb, hsl(var(--destructive)) 42%, var(--qc-border));box-shadow:0 0 0 3px color-mix(in srgb, hsl(var(--destructive)) 10%, transparent);outline:none}.quick-calc-industry-card.is-selected[data-v-3aadb39f]{border-color:color-mix(in srgb, hsl(var(--destructive)) 42%, var(--qc-border));background:color-mix(in srgb, hsl(var(--destructive)) 7%, white);box-shadow:0 0 0 3px color-mix(in srgb, hsl(var(--destructive)) 10%, transparent)}.quick-calc-industry-card__icon[data-v-3aadb39f]{width:14px;height:14px;color:color-mix(in srgb, var(--foreground) 44%, transparent);flex:0 0 14px;justify-content:center;align-items:center;transition:color .14s,transform .14s;display:inline-flex}.quick-calc-industry-card__icon.is-selected[data-v-3aadb39f]{color:hsl(var(--destructive));transform:scale(1.02)}.quick-calc-industry-card__text[data-v-3aadb39f]{min-width:0;font-size:14px;line-height:1.3}.quick-calc-toolbar__meta[data-v-3aadb39f]{color:var(--qc-muted);justify-content:flex-end}.quick-calc-empty-state[data-v-3aadb39f]{border:1px dashed var(--qc-border-strong);color:var(--qc-muted);background:color-mix(in srgb, var(--qc-surface-muted) 60%, transparent);border-radius:14px;margin:12px 12px 0;padding:14px 16px}.quick-calc-panel__title-wrap[data-v-3aadb39f]{gap:4px;display:grid}.quick-calc-panel__eyebrow[data-v-3aadb39f],.quick-calc-group__eyebrow[data-v-3aadb39f],.quick-calc-field__label[data-v-3aadb39f]{letter-spacing:.16em;text-transform:uppercase;font-size:10px;font-weight:700}.quick-calc-panel__eyebrow[data-v-3aadb39f],.quick-calc-group__eyebrow[data-v-3aadb39f]{color:var(--qc-accent)}.quick-calc-panel__title[data-v-3aadb39f],.quick-calc-group__title[data-v-3aadb39f]{color:var(--qc-text);margin:0;font-size:clamp(1.06rem,1.36vw,1.3rem);font-weight:700;line-height:1.08}.quick-calc-group__title--multiline[data-v-3aadb39f]{white-space:pre-line;line-height:1.2}.quick-calc-status[data-v-3aadb39f]{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.quick-calc-status--stack[data-v-3aadb39f]{max-width:180px}.quick-calc-status__item[data-v-3aadb39f]{background:var(--qc-surface-muted);min-height:24px;color:var(--qc-muted);white-space:nowrap;border-radius:999px;align-items:center;padding:0 8px;font-size:10px;display:inline-flex}.quick-calc-catalog[data-v-3aadb39f],.quick-calc-form[data-v-3aadb39f]{min-height:0;padding:10px;overflow:auto}.quick-calc-hint-banner[data-v-3aadb39f]{border:1px solid var(--qc-border);background:color-mix(in srgb, var(--background) 92%, var(--card));border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin:8px 10px 0;padding:8px 10px;display:flex}.quick-calc-hint-banner__content[data-v-3aadb39f]{gap:2px;min-width:0;display:grid}.quick-calc-hint-banner__title[data-v-3aadb39f]{color:var(--qc-text);font-size:12px;font-weight:700}.quick-calc-hint-banner__text[data-v-3aadb39f]{color:var(--qc-muted);font-size:10px;line-height:1.3}.quick-calc-hint-banner__action[data-v-3aadb39f]{border:1px solid color-mix(in srgb, var(--qc-accent) 32%, var(--qc-border));background:color-mix(in srgb, hsl(var(--destructive)) 8%, white);width:26px;height:26px;color:hsl(var(--destructive));cursor:pointer;border-radius:999px;flex:0 0 26px;justify-content:center;align-items:center;gap:6px;transition:transform .18s,background .18s,border-color .18s,color .18s;display:inline-flex;box-shadow:inset 0 1px #ffffff94}.quick-calc-hint-banner__action[data-v-3aadb39f]:hover{border-color:hsl(var(--destructive));background:color-mix(in srgb, hsl(var(--destructive)) 14%, white);transform:translateY(-1px)scale(1.03)}.quick-calc-hint-enter-active[data-v-3aadb39f],.quick-calc-hint-leave-active[data-v-3aadb39f]{transition:opacity .22s,transform .22s,max-height .22s,margin .22s,padding .22s;overflow:hidden}.quick-calc-hint-enter-from[data-v-3aadb39f],.quick-calc-hint-leave-to[data-v-3aadb39f]{opacity:0;max-height:0;margin-top:0;padding-top:0;padding-bottom:0;transform:translateY(-8px)}.quick-calc-catalog[data-v-3aadb39f]{align-content:start;gap:12px;display:grid}.quick-calc-group[data-v-3aadb39f]{border:1px solid var(--qc-border);background:linear-gradient(180deg, #ffffff38 0%, transparent 100%), color-mix(in srgb, var(--card) 94%, var(--muted));border-radius:14px}.quick-calc-group--major .quick-calc-group__eyebrow[data-v-3aadb39f]{color:color-mix(in srgb, var(--qc-text) 58%, var(--qc-accent))}.quick-calc-group--table[data-v-3aadb39f]{grid-template-columns:172px minmax(0,1fr);display:grid;overflow:hidden}.quick-calc-group__side[data-v-3aadb39f]{border-right:1px solid var(--qc-border);background:linear-gradient(180deg, color-mix(in srgb, var(--qc-surface-strong) 92%, white) 0%, color-mix(in srgb, var(--qc-surface-muted) 86%, transparent) 100%);align-content:center;gap:6px;padding:14px 14px 14px 16px;display:grid;position:relative}.quick-calc-group__side[data-v-3aadb39f]:after{content:"";background:linear-gradient(90deg, var(--qc-accent) 0%, color-mix(in srgb, var(--qc-accent) 34%, transparent) 55%, transparent 100%);opacity:.72;height:2px;position:absolute;top:10px;left:16px;right:16px}.quick-calc-group__eyebrow[data-v-3aadb39f]{letter-spacing:.18em;margin-top:4px;margin-bottom:0;font-size:11px}.quick-calc-group__count[data-v-3aadb39f]{border:1px solid var(--qc-border);background:color-mix(in srgb, white 40%, var(--qc-surface-muted));min-width:36px;height:24px;color:var(--qc-text);border-radius:999px;justify-content:center;justify-self:start;align-items:center;font-size:11px;font-weight:700;display:inline-flex}.quick-calc-group__rows[data-v-3aadb39f]{background:linear-gradient(#ffffff2e 0%,#0000 100%);grid-auto-rows:minmax(46px,auto);display:grid}.quick-calc-group__rows[data-v-3aadb39f]:has(.quick-calc-selection-row:only-child){grid-auto-rows:minmax(46px,auto)}:is(.quick-calc-group--general .quick-calc-group__rows[data-v-3aadb39f],.quick-calc-group--general .quick-calc-group__rows[data-v-3aadb39f]:has(.quick-calc-selection-row:only-child)){grid-auto-rows:minmax(38px,auto)}.quick-calc-selection-row[data-v-3aadb39f]{border-bottom:1px solid var(--qc-border);flex-wrap:wrap;align-items:center;gap:8px 16px;min-height:48px;padding:10px 16px;display:flex;position:relative}.quick-calc-selection-row[data-v-3aadb39f]:last-child{border-bottom:none}.quick-calc-group--general .quick-calc-selection-row[data-v-3aadb39f]{min-height:38px;padding-top:7px;padding-bottom:7px}.quick-calc-selection-row[data-v-3aadb39f]:before{content:"";background:linear-gradient(180deg, color-mix(in srgb, var(--qc-accent) 72%, transparent) 0%, transparent 100%);opacity:.18;width:3px;position:absolute;top:0;bottom:0;left:0}.quick-calc-option__input[data-v-3aadb39f],.quick-calc-segment__item input[data-v-3aadb39f]{opacity:0;pointer-events:none;position:absolute}.quick-calc-inline-option[data-v-3aadb39f]{cursor:pointer;min-width:0;color:var(--qc-text);align-items:center;gap:7px;padding:2px 4px 2px 0;transition:color .14s,transform .14s,opacity .14s;display:inline-flex;position:relative}.quick-calc-inline-option[data-v-3aadb39f]:hover{transform:translate(1px)}.quick-calc-inline-option__icon[data-v-3aadb39f]{width:14px;height:14px;color:color-mix(in srgb, var(--foreground) 44%, transparent);flex:0 0 14px;justify-content:center;align-items:center;transition:color .14s,transform .14s;display:inline-flex}.quick-calc-inline-option__icon.is-selected[data-v-3aadb39f]{color:hsl(var(--destructive));transform:scale(1.02)}.quick-calc-inline-option__text[data-v-3aadb39f]{white-space:nowrap;font-size:14px;line-height:1.3;transition:color .14s,opacity .14s}.quick-calc-inline-option.is-selected[data-v-3aadb39f]{background:color-mix(in srgb, hsl(var(--destructive)) 7%, transparent);border-radius:6px;padding-left:4px;padding-right:6px}.quick-calc-inline-option__text.is-selected[data-v-3aadb39f]{color:hsl(var(--destructive));font-weight:700}.quick-calc-selection-row__blank[data-v-3aadb39f]{width:100%;min-height:20px}.quick-calc-form-stack[data-v-3aadb39f]{align-content:start;gap:8px;display:grid}.quick-calc-panel--form .quick-calc-panel__header[data-v-3aadb39f]{padding:8px 10px 6px}.quick-calc-panel--form .quick-calc-panel__title-wrap[data-v-3aadb39f]{gap:2px}.quick-calc-panel--form .quick-calc-panel__title[data-v-3aadb39f],.quick-calc-panel--form .quick-calc-panel__eyebrow[data-v-3aadb39f]{font-size:14px}.quick-calc-panel--form .quick-calc-status__item[data-v-3aadb39f]{min-height:20px;padding:0 6px;font-size:14px}.quick-calc-panel--form .quick-calc-form[data-v-3aadb39f]{padding:8px;font-size:14px;overflow:auto}.quick-calc-panel--form .quick-calc-form-stack[data-v-3aadb39f]{gap:6px}.quick-calc-form-section[data-v-3aadb39f]{border:1px solid var(--qc-border);background:linear-gradient(180deg, #ffffff3d 0%, transparent 100%), color-mix(in srgb, var(--card) 96%, var(--muted));border-radius:14px;gap:8px;padding:10px 12px;display:grid}.quick-calc-form-section--summary[data-v-3aadb39f]{background:linear-gradient(180deg, color-mix(in srgb, hsl(var(--destructive)) 5%, transparent) 0%, transparent 100%), color-mix(in srgb, var(--card) 96%, var(--muted))}.quick-calc-panel--form .quick-calc-form-section[data-v-3aadb39f]{border-radius:12px;gap:6px;padding:8px 10px}.quick-calc-form-section__header[data-v-3aadb39f]{gap:2px;display:grid}.quick-calc-form-section__eyebrow[data-v-3aadb39f]{color:var(--qc-accent);letter-spacing:.16em;text-transform:uppercase;font-size:10px;font-weight:700}.quick-calc-form-section__title[data-v-3aadb39f]{color:var(--qc-text);margin:0;font-size:14px;font-weight:700}.quick-calc-panel--form .quick-calc-form-section__eyebrow[data-v-3aadb39f]{letter-spacing:0;text-transform:none;font-size:14px}.quick-calc-panel--form .quick-calc-form-section__title[data-v-3aadb39f]{font-size:14px}.quick-calc-form-grid[data-v-3aadb39f]{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 10px;display:grid}.quick-calc-panel--form .quick-calc-form-grid[data-v-3aadb39f]{gap:6px 8px}.quick-calc-form-grid--summary[data-v-3aadb39f]{grid-template-columns:minmax(0,7fr) minmax(0,3fr)}.quick-calc-field[data-v-3aadb39f]{gap:5px;min-width:0;display:grid}.quick-calc-panel--form .quick-calc-field[data-v-3aadb39f]{gap:4px}.quick-calc-field--wide[data-v-3aadb39f]{grid-column:span 2}.quick-calc-field__label[data-v-3aadb39f]{color:var(--qc-muted)}.quick-calc-field__input[data-v-3aadb39f],.quick-calc-field__readonly[data-v-3aadb39f]{border:1px solid var(--qc-border);background:color-mix(in srgb, var(--background) 92%, var(--card));width:100%;min-width:0;min-height:38px;color:var(--qc-text);border-radius:10px;align-items:center;padding:0 10px;font-size:13px;line-height:1.4;display:flex}.quick-calc-panel--form .quick-calc-field__label[data-v-3aadb39f]{letter-spacing:0;text-transform:none;font-size:14px;font-weight:600}.quick-calc-panel--form .quick-calc-field__input[data-v-3aadb39f],.quick-calc-panel--form .quick-calc-field__readonly[data-v-3aadb39f]{border-radius:9px;min-height:32px;padding:0 8px;font-size:14px}.quick-calc-field__input[data-v-3aadb39f]{outline:none;transition:border-color .16s,box-shadow .16s,background .16s}.quick-calc-field__input.is-disabled[data-v-3aadb39f],.quick-calc-field__input[data-v-3aadb39f]:disabled{cursor:not-allowed;color:var(--qc-muted);background:color-mix(in srgb, var(--muted) 72%, var(--card))}.quick-calc-field__input[data-v-3aadb39f]:focus{border-color:color-mix(in srgb, var(--qc-accent) 42%, var(--qc-border));background:color-mix(in srgb, hsl(var(--destructive)) 4%, white);box-shadow:0 0 0 3px color-mix(in srgb, hsl(var(--destructive)) 10%, transparent)}.quick-calc-field__readonly[data-v-3aadb39f]{color:color-mix(in srgb, var(--qc-text) 58%, var(--qc-muted));border-color:color-mix(in srgb, var(--foreground) 10%, transparent);background:color-mix(in srgb, var(--muted) 72%, var(--card))}.quick-calc-field__readonly--multiline[data-v-3aadb39f]{align-items:flex-start;min-height:52px;padding-top:8px;padding-bottom:8px}.quick-calc-panel--form .quick-calc-field__readonly--multiline[data-v-3aadb39f]{min-height:40px;padding-top:6px;padding-bottom:6px;line-height:1.25}.quick-calc-field__readonly--emphasis[data-v-3aadb39f]{letter-spacing:.01em;font-size:16px;font-weight:700}.quick-calc-panel--form .quick-calc-field__readonly--emphasis[data-v-3aadb39f]{font-size:14px}.quick-calc-form-hint[data-v-3aadb39f]{color:var(--qc-muted);font-size:10px;line-height:1.35}.quick-calc-panel--form .quick-calc-form-hint[data-v-3aadb39f]{font-size:14px;line-height:1.35}.quick-calc-segment[data-v-3aadb39f]{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:inline-grid}.quick-calc-segment__item[data-v-3aadb39f]{border:1px solid var(--qc-border);background:color-mix(in srgb, var(--background) 88%, var(--card));min-height:32px;color:var(--qc-text);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;font-size:12px;font-weight:600;transition:border-color .16s,background .16s,box-shadow .16s;display:inline-flex;position:relative}.quick-calc-segment__item.is-active[data-v-3aadb39f]{border-color:color-mix(in srgb, var(--foreground) 24%, transparent);background:color-mix(in srgb, var(--muted) 82%, var(--card));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--foreground) 12%, transparent)}@media (width<=980px){.quick-calc-shell[data-v-3aadb39f]{padding:8px}.quick-calc-toolbar[data-v-3aadb39f]{flex-direction:column;align-items:stretch}.quick-calc-toolbar__meta[data-v-3aadb39f]{justify-content:flex-start}.quick-calc-layout[data-v-3aadb39f]{grid-template-columns:1fr}.quick-calc-catalog[data-v-3aadb39f],.quick-calc-form[data-v-3aadb39f]{max-height:none}.quick-calc-status[data-v-3aadb39f]{justify-content:flex-start}.quick-calc-group--table[data-v-3aadb39f]{grid-template-columns:1fr}.quick-calc-group__side[data-v-3aadb39f]{border-right:none;border-bottom:1px solid var(--qc-border)}.quick-calc-group__rows[data-v-3aadb39f]{grid-template-rows:none}.quick-calc-form-grid[data-v-3aadb39f],.quick-calc-form-grid--summary[data-v-3aadb39f]{grid-template-columns:1fr}.quick-calc-hint-banner[data-v-3aadb39f]{flex-direction:column;align-items:flex-start}}@media (width<=720px){.quick-calc-selection-row[data-v-3aadb39f]{gap:8px 12px}.quick-calc-inline-option__text[data-v-3aadb39f]{white-space:normal;font-size:13px}.quick-calc-form-section[data-v-3aadb39f]{padding:10px}.quick-calc-field--wide[data-v-3aadb39f]{grid-column:auto}} diff --git a/33/static/css/Summary--MyM5xaL.css b/33/static/css/Summary--MyM5xaL.css new file mode 100644 index 0000000..67aab59 --- /dev/null +++ b/33/static/css/Summary--MyM5xaL.css @@ -0,0 +1 @@ +[data-v-375aa45f] .xmMx .ag-header-cell-label{justify-content:center}[data-v-375aa45f] .xmMx .ag-header-cell-text{text-align:center}[data-v-375aa45f] .zxfw-process-header .ag-header-cell-label{justify-content:center}[data-v-375aa45f] .zxfw-process-header .ag-header-cell-text{text-align:center}[data-v-375aa45f] .ag-cell:not(.ag-cell-auto-height){align-items:center;display:flex}[data-v-375aa45f] .zxfw-number-cell{text-align:right;justify-content:flex-end}[data-v-375aa45f] .zxfw-name-cell.ag-cell-auto-height{align-items:center;display:flex}[data-v-375aa45f] .zxfw-name-cell.ag-cell-auto-height .ag-cell-wrapper,[data-v-375aa45f] .zxfw-name-cell.ag-cell-auto-height .ag-cell-value{white-space:normal;align-items:center;width:100%;display:flex}[data-v-375aa45f] .zxfw-name-wrap{white-space:normal;word-break:break-word;overflow-wrap:anywhere;align-items:center;width:100%;line-height:1.6;display:flex}[data-v-375aa45f] .zxfw-process-cell{justify-content:center;align-items:center;gap:12px;width:100%;font-size:12px;display:flex}[data-v-375aa45f] .zxfw-process-cell--en{flex-direction:column;align-items:flex-start;gap:4px;padding:2px 0}[data-v-375aa45f] .zxfw-process-option{cursor:pointer;white-space:nowrap;align-items:center;gap:6px;display:inline-flex}[data-v-375aa45f] .zxfw-process-option--en{width:100%} diff --git a/33/static/css/WorkContentGrid-B4nOYGuK.css b/33/static/css/WorkContentGrid-B4nOYGuK.css new file mode 100644 index 0000000..718d40f --- /dev/null +++ b/33/static/css/WorkContentGrid-B4nOYGuK.css @@ -0,0 +1 @@ +[data-v-2dd31a50] .ag-cell{align-items:center;display:flex}[data-v-2dd31a50] .ag-cell .ag-cell-wrapper{width:100%}[data-v-2dd31a50] .ag-cell .ag-cell-value{align-items:center;width:100%;display:flex}[data-v-2dd31a50] .work-content-placeholder{color:var(--muted-foreground);flex:1;min-width:0;font-style:italic}[data-v-2dd31a50] .work-content-cell{align-items:center;gap:8px;width:100%;display:flex}[data-v-2dd31a50] .work-content-text{white-space:normal;word-break:break-word;flex:1;min-width:0;line-height:1.5}[data-v-2dd31a50] .work-content-check{cursor:pointer;width:14px;height:14px}[data-v-2dd31a50] .work-content-group-row{align-items:center;gap:8px;display:flex}[data-v-2dd31a50] .work-content-group-check{cursor:pointer;width:14px;height:14px}[data-v-2dd31a50] .work-content-group-check:disabled{cursor:not-allowed;opacity:.5}[data-v-2dd31a50] .work-content-group-label{word-break:break-word;min-width:0}[data-v-2dd31a50] .work-content-main-cell.ag-cell-auto-height,[data-v-2dd31a50] .remark-wrap-cell.ag-cell-auto-height{align-items:center;display:flex}[data-v-2dd31a50] .work-content-main-cell.ag-cell-auto-height .ag-cell-wrapper,[data-v-2dd31a50] .work-content-main-cell.ag-cell-auto-height .ag-cell-value,[data-v-2dd31a50] .remark-wrap-cell.ag-cell-auto-height .ag-cell-wrapper,[data-v-2dd31a50] .remark-wrap-cell.ag-cell-auto-height .ag-cell-value{align-items:center;width:100%;display:flex} diff --git a/33/static/css/index-CI_Unp5q.css b/33/static/css/index-CI_Unp5q.css new file mode 100644 index 0000000..a97f13c --- /dev/null +++ b/33/static/css/index-CI_Unp5q.css @@ -0,0 +1 @@ +.home-hero[data-v-70c281cf]{animation:none}.home-card-base[data-v-70c281cf]{min-height:248px}.home-title[data-v-70c281cf]{background-image:radial-gradient(80% 60% at 50% -10%,#3b82f60f,#0000 70%);border:1px solid #94a3b842;border-radius:20px;max-width:760px;margin:0 auto;padding:18px 24px;animation:.45s cubic-bezier(.22,1,.36,1) .15s both fade-up-70c281cf;box-shadow:0 10px 30px #0f172a0d}.home-entry-item[data-v-70c281cf]{animation:.45s cubic-bezier(.22,1,.36,1) both fade-up-70c281cf}.home-entry-item--1[data-v-70c281cf]{animation-delay:.2s}.home-entry-item--2[data-v-70c281cf]{animation-delay:.3s}.home-entry-item--3[data-v-70c281cf]{animation-delay:.4s}.home-entry-item--4[data-v-70c281cf]{animation-delay:.5s}.home-entry-item--5[data-v-70c281cf]{animation-delay:.6s}@keyframes hero-in-70c281cf{0%{opacity:0;transform:translate(-20px)scale(.97)}to{opacity:1;transform:translate(0)scale(1)}}.home-hero-meteor[data-v-70c281cf]{pointer-events:none;opacity:0;filter:drop-shadow(0 0 6px #ffffff73);background:linear-gradient(90deg,#fff0,#ffffffa6,#fff0);width:120px;height:1px;animation:3.8s linear infinite hero-meteor-70c281cf;position:absolute;transform:rotate(-28deg)}.home-hero-meteor--1[data-v-70c281cf]{animation-delay:0s;top:16%;right:-30%}.home-hero-meteor--2[data-v-70c281cf]{animation-delay:1.2s;top:38%;right:-40%}.home-hero-meteor--3[data-v-70c281cf]{animation-delay:2.2s;top:62%;right:-35%}.home-hero-meteor--4[data-v-70c281cf]{animation-delay:.6s;top:24%;right:-45%}.home-hero-meteor--5[data-v-70c281cf]{animation-delay:1.7s;top:50%;right:-28%}.home-hero-meteor--6[data-v-70c281cf]{animation-delay:2.8s;top:74%;right:-42%}.home-hero-meteor--7[data-v-70c281cf]{animation-delay:.35s;top:10%;right:-48%}.home-hero-meteor--8[data-v-70c281cf]{animation-delay:1.05s;top:31%;right:-26%}.home-hero-meteor--9[data-v-70c281cf]{animation-delay:2.45s;top:56%;right:-50%}.home-hero-meteor--10[data-v-70c281cf]{animation-delay:3.15s;top:82%;right:-30%}@keyframes hero-meteor-70c281cf{0%{opacity:0;transform:translate(0,0)rotate(-28deg)}8%{opacity:.9}34%{opacity:.9}42%{opacity:0}to{opacity:0;transform:translate(-340px,220px)rotate(-28deg)}}@keyframes fade-up-70c281cf{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}[data-v-aa6f0e61] .scrollArea-full>*{height:100%}.tab-strip-sortable>.tab-item[data-v-48df5250]{transition:transform .26s cubic-bezier(.22,1,.36,1)}.tab-strip-sortable.is-dragging>.tab-item[data-v-48df5250]{will-change:transform}.tab-drag-ghost[data-v-48df5250]{opacity:.32}.tab-drag-chosen[data-v-48df5250]{transform:scale(1.015);box-shadow:0 10px 24px #0000002e}.tab-drag-active[data-v-48df5250]{cursor:grabbing}.tab-strip-scroll-area[data-v-48df5250] [data-slot=scroll-area-viewport]{scrollbar-width:none;overflow-y:hidden!important}.tab-strip-scroll-area[data-v-48df5250] [data-slot=scroll-area-viewport]::-webkit-scrollbar{display:none}.tab-strip-scroll-area[data-v-48df5250] [data-slot=scroll-area-scrollbar][data-orientation=vertical],.tab-strip-scroll-area[data-v-48df5250] [data-slot=scroll-area-corner]{display:none!important}.toolbar-dropdown-enter-active[data-v-48df5250],.toolbar-dropdown-leave-active[data-v-48df5250]{transform-origin:100% 0;transition:opacity .18s,transform .18s}.toolbar-dropdown-enter-from[data-v-48df5250],.toolbar-dropdown-leave-to[data-v-48df5250]{opacity:0;transform:translateY(-6px)scale(.98)}.slide-in-left-enter-active[data-v-48df5250],.slide-in-left-leave-active[data-v-48df5250]{transition:transform .3s cubic-bezier(.4,0,.2,1)}.slide-in-left-enter-from[data-v-48df5250],.slide-in-left-leave-to[data-v-48df5250]{transform:translate(100%)}.fade-enter-active[data-v-48df5250],.fade-leave-active[data-v-48df5250]{transition:opacity .3s}.fade-enter-from[data-v-48df5250],.fade-leave-to[data-v-48df5250]{opacity:0}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-600:oklch(66.6% .179 58.318);--color-lime-50:oklch(98.6% .031 120.757);--color-lime-100:oklch(96.7% .067 122.328);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-600:oklch(59.6% .145 163.225);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-700:oklch(37.3% .034 259.733);--color-neutral-900:oklch(20.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--leading-tight:1.25;--radius-2xl:1rem;--radius-3xl:1.5rem;--animate-spin:spin 1s linear infinite;--blur-sm:8px;--blur-xl:24px;--blur-2xl:40px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}*{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}body{background-color:var(--background);color:var(--foreground);margin:0}input,textarea,[contenteditable=true]{-webkit-user-select:text;user-select:text}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.-top-16{top:calc(var(--spacing) * -16)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-12{top:calc(var(--spacing) * 12)}.top-full{top:100%}.-right-20{right:calc(var(--spacing) * -20)}.right-0{right:calc(var(--spacing) * 0)}.right-3{right:calc(var(--spacing) * 3)}.right-5{right:calc(var(--spacing) * 5)}.right-8{right:calc(var(--spacing) * 8)}.-bottom-10{bottom:calc(var(--spacing) * -10)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-5{bottom:calc(var(--spacing) * 5)}.bottom-8{bottom:calc(var(--spacing) * 8)}.-left-10{left:calc(var(--spacing) * -10)}.left-1{left:calc(var(--spacing) * 1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-6{left:calc(var(--spacing) * 6)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[70\]{z-index:70}.z-\[80\]{z-index:80}.z-\[85\]{z-index:85}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.z-\[110\]{z-index:110}.z-\[120\]{z-index:120}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.-ml-px{margin-left:-1px}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-full{width:100%;height:100%}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-15{height:calc(var(--spacing) * 15)}.h-40{height:calc(var(--spacing) * 40)}.h-56{height:calc(var(--spacing) * 56)}.h-\[calc\(3\.50rem\)\]{height:3.5rem}.h-\[calc\(100\%-56px\)\]{height:calc(100% - 56px)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-52{max-height:calc(var(--spacing) * 52)}.max-h-80{max-height:calc(var(--spacing) * 80)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-28{width:calc(var(--spacing) * 28)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-\[1\.5px\]{width:1.5px}.w-\[22rem\]{width:22rem}.w-\[92vw\]{width:92vw}.w-\[360px\]{width:360px}.w-\[380px\]{width:380px}.w-\[420px\]{width:420px}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[92vw\]{max-width:92vw}.max-w-\[220px\]{max-width:220px}.max-w-\[480px\]{max-width:480px}.max-w-\[1240px\]{max-width:1240px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[120px\]{min-width:120px}.flex-1{flex:1}.flex-none{flex:none}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-3{--tw-translate-y:calc(var(--spacing) * 3);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-0{rotate:none}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-spin{animation:var(--animate-spin)}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.snap-start{scroll-snap-align:start}.snap-always{scroll-snap-stop:always}.scroll-mt-3{scroll-margin-top:calc(var(--spacing) * 3)}.list-disc{list-style-type:disc}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-\[1px\]{gap:1px}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.self-center{align-self:center}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-t-md{border-top-left-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.\!border-b-0{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:0!important}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.\!border-border{border-color:var(--border)!important}.border-\[\#1a1a1a\]{border-color:#1a1a1a}.border-amber-100{border-color:var(--color-amber-100)}.border-black\/15{border-color:#00000026}@supports (color:color-mix(in lab, red, red)){.border-black\/15{border-color:color-mix(in oklab, var(--color-black) 15%, transparent)}}.border-blue-100{border-color:var(--color-blue-100)}.border-blue-500{border-color:var(--color-blue-500)}.border-blue-600{border-color:var(--color-blue-600)}.border-border,.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-border\/80{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/80{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.border-emerald-100{border-color:var(--color-emerald-100)}.border-gray-300{border-color:var(--color-gray-300)}.border-lime-100{border-color:var(--color-lime-100)}.border-muted-foreground\/30{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.border-muted-foreground\/30{border-color:color-mix(in oklab, var(--muted-foreground) 30%, transparent)}}.border-primary,.border-primary\/30{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/30{border-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.border-red-200{border-color:var(--color-red-200)}.border-red-300\/85{border-color:#ffa3a3d9}@supports (color:color-mix(in lab, red, red)){.border-red-300\/85{border-color:color-mix(in oklab, var(--color-red-300) 85%, transparent)}}.border-red-600{border-color:var(--color-red-600)}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-200\/60{border-color:#e2e8f099}@supports (color:color-mix(in lab, red, red)){.border-slate-200\/60{border-color:color-mix(in oklab, var(--color-slate-200) 60%, transparent)}}.border-slate-200\/80{border-color:#e2e8f0cc}@supports (color:color-mix(in lab, red, red)){.border-slate-200\/80{border-color:color-mix(in oklab, var(--color-slate-200) 80%, transparent)}}.border-slate-300{border-color:var(--color-slate-300)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\[\#1a1a1a\]{background-color:#1a1a1a}.bg-\[\#dc2626\]{background-color:#dc2626}.bg-\[\#fafafa\]{background-color:#fafafa}.bg-amber-50\/80{background-color:#fffbebcc}@supports (color:color-mix(in lab, red, red)){.bg-amber-50\/80{background-color:color-mix(in oklab, var(--color-amber-50) 80%, transparent)}}.bg-background,.bg-background\/90{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/90{background-color:color-mix(in oklab, var(--background) 90%, transparent)}}.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab, var(--background) 95%, transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-black\/45{background-color:#00000073}@supports (color:color-mix(in lab, red, red)){.bg-black\/45{background-color:color-mix(in oklab, var(--color-black) 45%, transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-50\/80{background-color:#eff6ffcc}@supports (color:color-mix(in lab, red, red)){.bg-blue-50\/80{background-color:color-mix(in oklab, var(--color-blue-50) 80%, transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-border,.bg-border\/60{background-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.bg-border\/60{background-color:color-mix(in oklab, var(--border) 60%, transparent)}}.bg-card,.bg-card\/90{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/90{background-color:color-mix(in oklab, var(--card) 90%, transparent)}}.bg-card\/95{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/95{background-color:color-mix(in oklab, var(--card) 95%, transparent)}}.bg-destructive{background-color:var(--destructive)}.bg-emerald-50\/80{background-color:#ecfdf5cc}@supports (color:color-mix(in lab, red, red)){.bg-emerald-50\/80{background-color:color-mix(in oklab, var(--color-emerald-50) 80%, transparent)}}.bg-foreground,.bg-foreground\/70{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/70{background-color:color-mix(in oklab, var(--foreground) 70%, transparent)}}.bg-lime-50\/80{background-color:#f7fee7cc}@supports (color:color-mix(in lab, red, red)){.bg-lime-50\/80{background-color:color-mix(in oklab, var(--color-lime-50) 80%, transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/35{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/35{background-color:color-mix(in oklab, var(--muted-foreground) 35%, transparent)}}.bg-muted\/10{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/10{background-color:color-mix(in oklab, var(--muted) 10%, transparent)}}.bg-muted\/25{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/25{background-color:color-mix(in oklab, var(--muted) 25%, transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.bg-muted\/35{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/35{background-color:color-mix(in oklab, var(--muted) 35%, transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/40{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-secondary{background-color:var(--secondary)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/8{background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.bg-white\/8{background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.bg-white\/12{background-color:#ffffff1f}@supports (color:color-mix(in lab, red, red)){.bg-white\/12{background-color:color-mix(in oklab, var(--color-white) 12%, transparent)}}.bg-white\/15{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.bg-white\/15{background-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.bg-white\/78{background-color:#ffffffc7}@supports (color:color-mix(in lab, red, red)){.bg-white\/78{background-color:color-mix(in oklab, var(--color-white) 78%, transparent)}}.bg-white\/85{background-color:#ffffffd9}@supports (color:color-mix(in lab, red, red)){.bg-white\/85{background-color:color-mix(in oklab, var(--color-white) 85%, transparent)}}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-white\/90{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.bg-white\/95{background-color:#fffffff2}@supports (color:color-mix(in lab, red, red)){.bg-white\/95{background-color:color-mix(in oklab, var(--color-white) 95%, transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[radial-gradient\(circle_at_top\,_rgba\(220\,38\,38\,0\.18\)\,rgba\(0\,0\,0\,0\.03\)_46\%\,transparent_72\%\)\]{background-image:radial-gradient(circle at top,#dc26262e,#00000008 46%,#0000 72%)}.bg-\[radial-gradient\(ellipse_80\%_60\%_at_50\%_-10\%\,rgba\(59\,130\,246\,0\.08\)\,transparent_70\%\)\]{background-image:radial-gradient(80% 60% at 50% -10%,#3b82f614,#0000 70%)}.from-primary\/5{--tw-gradient-from:var(--primary)}@supports (color:color-mix(in lab, red, red)){.from-primary\/5{--tw-gradient-from:color-mix(in oklab, var(--primary) 5%, transparent)}}.from-primary\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-background{--tw-gradient-via:var(--background);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-muted\/30{--tw-gradient-to:var(--muted)}@supports (color:color-mix(in lab, red, red)){.to-muted\/30{--tw-gradient-to:color-mix(in oklab, var(--muted) 30%, transparent)}}.to-muted\/30{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-cover{background-size:cover}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.fill-border{fill:var(--border)}.fill-popover{fill:var(--popover)}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-7{padding:calc(var(--spacing) * 7)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.p-px{padding:1px}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.\!text-\[brown\]{color:brown!important}.text-\[\#1a1a1a\]{color:#1a1a1a}.text-\[\#333\]{color:#333}.text-\[\#666\]{color:#666}.text-\[\#888\]{color:#888}.text-\[\#1976d2\]{color:#1976d2}.text-amber-600{color:var(--color-amber-600)}.text-black{color:var(--color-black)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-emerald-600{color:var(--color-emerald-600)}.text-foreground,.text-foreground\/80{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/80{color:color-mix(in oklab, var(--foreground) 80%, transparent)}}.text-foreground\/85{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/85{color:color-mix(in oklab, var(--foreground) 85%, transparent)}}.text-gray-400{color:var(--color-gray-400)}.text-gray-700{color:var(--color-gray-700)}.text-muted-foreground,.text-muted-foreground\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/70{color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.text-muted-foreground\/90{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/90{color:color-mix(in oklab, var(--muted-foreground) 90%, transparent)}}.text-neutral-900{color:var(--color-neutral-900)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-200\/80{color:#ffcacacc}@supports (color:color-mix(in lab, red, red)){.text-red-200\/80{color:color-mix(in oklab, var(--color-red-200) 80%, transparent)}}.text-red-200\/90{color:#ffcacae6}@supports (color:color-mix(in lab, red, red)){.text-red-200\/90{color:color-mix(in oklab, var(--color-red-200) 90%, transparent)}}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-900{color:var(--color-slate-900)}.text-white{color:var(--color-white)}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline-offset-4{text-underline-offset:4px}.accent-primary{accent-color:var(--primary)}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_4px_20px_rgba\(15\,23\,42\,0\.06\)\]{--tw-shadow:0 4px 20px var(--tw-shadow-color,#0f172a0f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_10px_24px_rgba\(0\,0\,0\,0\.16\)\]{--tw-shadow:0 10px 24px var(--tw-shadow-color,#00000029);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_18px_38px_-22px_rgba\(153\,27\,27\,0\.6\)\]{--tw-shadow:0 18px 38px -22px var(--tw-shadow-color,#991b1b99);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_24px_60px_rgba\(153\,27\,27\,0\.35\)\]{--tw-shadow:0 24px 60px var(--tw-shadow-color,#991b1b59);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-black\/5{--tw-ring-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.ring-black\/5{--tw-ring-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.ring-white\/35{--tw-ring-color:#ffffff59}@supports (color:color-mix(in lab, red, red)){.ring-white\/35{--tw-ring-color:color-mix(in oklab, var(--color-white) 35%, transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur-2xl{--tw-blur:blur(var(--blur-2xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background-color\,border-color\,color\,box-shadow\,transform\]{transition-property:background-color,border-color,color,box-shadow,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.will-change-transform{will-change:transform}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.fade-in{--tw-enter-opacity:0}.running{animation-play-state:running}@media (hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:border-slate-400:is(:where(.group):hover *){border-color:var(--color-slate-400)}.group-hover\:text-slate-600:is(:where(.group):hover *){color:var(--color-slate-600)}.group-hover\:text-slate-700:is(:where(.group):hover *){color:var(--color-slate-700)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\:text-muted-foreground\/70::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-muted-foreground\/70::placeholder{color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.first\:ml-0:first-child{margin-left:calc(var(--spacing) * 0)}.focus-within\:border-primary\/60:focus-within{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.focus-within\:border-primary\/60:focus-within{border-color:color-mix(in oklab, var(--primary) 60%, transparent)}}.focus-within\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\:ring-ring:focus-within{--tw-ring-color:var(--ring)}@media (hover:hover){.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-black\/30:hover{border-color:#0000004d}@supports (color:color-mix(in lab, red, red)){.hover\:border-black\/30:hover{border-color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.hover\:border-border\/70:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.hover\:border-border\/70:hover{border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.hover\:border-foreground\/40:hover{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:border-foreground\/40:hover{border-color:color-mix(in oklab, var(--foreground) 40%, transparent)}}.hover\:border-primary:hover{border-color:var(--primary)}.hover\:border-slate-200:hover{border-color:var(--color-slate-200)}.hover\:border-slate-300:hover{border-color:var(--color-slate-300)}.hover\:bg-\[\#1a1a1a\]\/90:hover{background-color:oklab(21.7786% 1.49012e-8 1.49012e-8/.9)}.hover\:bg-\[\#2a2a2a\]:hover{background-color:#2a2a2a}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-black:hover{background-color:var(--color-black)}.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-destructive:hover,.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-muted:hover,.hover\:bg-muted\/40:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/40:hover{background-color:color-mix(in oklab, var(--muted) 40%, transparent)}}.hover\:bg-muted\/55:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/55:hover{background-color:color-mix(in oklab, var(--muted) 55%, transparent)}}.hover\:bg-muted\/60:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/60:hover{background-color:color-mix(in oklab, var(--muted) 60%, transparent)}}.hover\:bg-muted\/80:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/80:hover{background-color:color-mix(in oklab, var(--muted) 80%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-red-600:hover{color:var(--color-red-600)}.hover\:text-slate-600:hover{color:var(--color-slate-600)}.hover\:text-slate-700:hover{color:var(--color-slate-700)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-\[0_12px_32px_rgba\(15\,23\,42\,0\.12\)\]:hover{--tw-shadow:0 12px 32px var(--tw-shadow-color,#0f172a1f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-gray-400:focus{--tw-ring-color:var(--color-gray-400)}.focus\:ring-primary\/30:focus{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-primary\/30:focus{--tw-ring-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-primary\/60:focus-visible{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:border-primary\/60:focus-visible{border-color:color-mix(in oklab, var(--primary) 60%, transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-blue-200:focus-visible{--tw-ring-color:var(--color-blue-200)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing) * 2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing) * 3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing) * 4)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[disabled\]\:opacity-40[data-disabled]{opacity:.4}.data-\[outside-view\]\:text-muted-foreground\/40[data-outside-view]{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.data-\[outside-view\]\:text-muted-foreground\/40[data-outside-view]{color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.data-\[selected\]\:border-primary[data-selected]{border-color:var(--primary)}.data-\[selected\]\:bg-transparent[data-selected]{background-color:#0000}.data-\[selected\]\:text-foreground[data-selected]{color:var(--foreground)}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:fade-in[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:slide-in-from-bottom-2[data-state=open]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[unavailable\]\:text-muted-foreground\/40[data-unavailable]{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.data-\[unavailable\]\:text-muted-foreground\/40[data-unavailable]{color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-\[backdrop-filter\]\:bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.supports-\[backdrop-filter\]\:bg-background\/80{background-color:color-mix(in oklab, var(--background) 80%, transparent)}}}@media (width>=40rem){.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}}@media (width>=48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:ml-auto{margin-left:auto}.md\:max-w-md{max-width:var(--container-md)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:p-5{padding:calc(var(--spacing) * 5)}}@media (width>=64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:py-10{padding-block:calc(var(--spacing) * 10)}.lg\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}@media (width>=80rem){.xl\:col-span-4{grid-column:span 4/span 4}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab, var(--destructive) 60%, transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}@media (hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing) * 6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing) * 6)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}#app{height:100dvh}html{font-size:16px}:root{--app-toolbar-btn-h:2.25rem;--app-toolbar-btn-px:.75rem;--app-toolbar-btn-font:.875rem;--app-grid-header-h:3rem;--app-grid-row-h:2.25rem;--app-grid-font-size:.875rem;--app-typeline-side-w:12.5rem;--app-typeline-gap:.75rem;--app-typeline-label-font:.8125rem;--app-typeline-label-line:1rem;--app-typeline-dot:1.25rem;--app-typeline-dot-inner:.375rem;--app-typeline-line-left:.5625rem;--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.6% 0 0)}.ag-horizontal-left-spacer{overflow-x:auto}.ag-body-viewport{overflow-y:scroll!important}input[type=number],input[inputmode=decimal],input[inputmode=numeric]{text-align:right}.ag-theme-quartz .ag-cell.ag-right-aligned-cell{text-align:right;justify-content:flex-end}.ag-theme-quartz .ag-cell.ag-right-aligned-cell .ag-cell-wrapper{justify-content:flex-end;width:100%}.ag-theme-quartz .ag-cell.ag-right-aligned-cell .ag-cell-value{text-align:right;justify-content:flex-end;width:100%;display:flex}.ag-theme-quartz .ag-header-cell-label,.ag-theme-quartz .ag-header-group-cell-label{justify-content:center}.ag-theme-quartz .ag-header-cell-text,.ag-theme-quartz .ag-header-group-text{text-align:center}.app-toolbar-btn{height:var(--app-toolbar-btn-h)!important;min-height:var(--app-toolbar-btn-h)!important;padding-left:var(--app-toolbar-btn-px)!important;padding-right:var(--app-toolbar-btn-px)!important;font-size:var(--app-toolbar-btn-font)!important;line-height:1!important}.ag-theme-quartz{--ag-font-size:var(--app-grid-font-size);--ag-row-height:var(--app-grid-row-h);--ag-background-color:var(--card);--ag-foreground-color:var(--foreground);--ag-data-color:var(--foreground);--ag-header-background-color:var(--muted);--ag-header-foreground-color:var(--foreground);--ag-border-color:var(--border);--ag-row-border-color:var(--border);--ag-secondary-border-color:var(--border);--ag-input-text-color:var(--foreground)}.xmMx .ag-row .ag-cell:not(.ag-cell-auto-height) .ag-cell-wrapper.ag-row-group{align-items:center}.ag-theme-quartz .ag-header-cell-wrap-text .ag-header-cell-text,.ag-theme-quartz .ag-header-group-cell-label .ag-header-group-text{white-space:normal;word-break:break-word;line-height:1.25}.zxfw-action-wrap{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.ag-theme-quartz .ag-cell:not(.ag-cell-auto-height),.ag-theme-quartz .ag-cell.ag-cell-auto-height,.ag-theme-quartz .ag-cell .ag-cell-wrapper,.ag-theme-quartz .ag-cell .ag-cell-value{align-items:center;display:flex}.zxfw-action-group{white-space:nowrap;align-items:center;display:inline-flex}.ag-theme-quartz .zxfw-action-btn{height:24px;box-shadow:inset 0 0 0 1px var(--border);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;border-radius:0;align-items:center;gap:4px;padding:0 7px;font-size:11px;line-height:1.1;transition:background-color .12s,border-color .12s,color .12s,transform 90ms;display:inline-flex;position:relative;border:1px solid var(--border)!important;background:var(--background)!important;color:var(--foreground)!important}.zxfw-action-group .zxfw-action-btn+.zxfw-action-btn{margin-left:-1px}.zxfw-action-group .zxfw-action-btn:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}.zxfw-action-group .zxfw-action-btn:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}.ag-theme-quartz .zxfw-action-btn:hover{color:var(--foreground)!important;border-color:var(--muted-foreground)!important}@supports (color:color-mix(in lab, red, red)){.ag-theme-quartz .zxfw-action-btn:hover{border-color:color-mix(in srgb, var(--muted-foreground) 45%, transparent)!important}}.ag-theme-quartz .zxfw-action-btn:hover{box-shadow:inset 0 0 0 1px var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.ag-theme-quartz .zxfw-action-btn:hover{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--muted-foreground) 45%, transparent)}}.ag-theme-quartz .zxfw-action-btn:hover{background:var(--muted)!important}@supports (color:color-mix(in lab, red, red)){.ag-theme-quartz .zxfw-action-btn:hover{background:color-mix(in srgb, var(--muted) 55%, transparent)!important}}.ag-theme-quartz .zxfw-action-btn:hover{z-index:1}.ag-theme-quartz .zxfw-action-btn:active{transform:translateY(1px);border-color:var(--foreground)!important}@supports (color:color-mix(in lab, red, red)){.ag-theme-quartz .zxfw-action-btn:active{border-color:color-mix(in srgb, var(--foreground) 35%, transparent)!important}}.ag-theme-quartz .zxfw-action-btn:active{box-shadow:inset 0 0 0 1px var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ag-theme-quartz .zxfw-action-btn:active{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--foreground) 35%, transparent)}}.ag-theme-quartz .zxfw-action-btn:active{background:var(--muted)!important}.ag-theme-quartz .zxfw-action-btn:focus-visible{outline:2px solid var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ag-theme-quartz .zxfw-action-btn:focus-visible{outline:2px solid color-mix(in srgb, var(--foreground) 25%, transparent)}}.ag-theme-quartz .zxfw-action-btn:focus-visible{outline-offset:1px;z-index:2}.ag-theme-quartz .zxfw-action-btn--danger{color:var(--destructive)!important}.ag-theme-quartz .zxfw-action-btn--danger:hover{color:var(--destructive)!important;border-color:var(--destructive)!important}@supports (color:color-mix(in lab, red, red)){.ag-theme-quartz .zxfw-action-btn--danger:hover{border-color:color-mix(in srgb, var(--destructive) 45%, transparent)!important}}.ag-theme-quartz .zxfw-action-btn--danger:hover{box-shadow:inset 0 0 0 1px var(--destructive)}@supports (color:color-mix(in lab, red, red)){.ag-theme-quartz .zxfw-action-btn--danger:hover{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--destructive) 45%, transparent)}}.ag-theme-quartz .zxfw-action-btn--danger:hover{background:var(--destructive)!important}@supports (color:color-mix(in lab, red, red)){.ag-theme-quartz .zxfw-action-btn--danger:hover{background:color-mix(in srgb, var(--destructive) 10%, transparent)!important}}.ag-theme-quartz .zxfw-action-btn--danger:active{border-color:var(--destructive)!important}@supports (color:color-mix(in lab, red, red)){.ag-theme-quartz .zxfw-action-btn--danger:active{border-color:color-mix(in srgb, var(--destructive) 65%, transparent)!important}}.ag-theme-quartz .zxfw-action-btn--danger:active{box-shadow:inset 0 0 0 1px var(--destructive)}@supports (color:color-mix(in lab, red, red)){.ag-theme-quartz .zxfw-action-btn--danger:active{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--destructive) 65%, transparent)}}.ag-theme-quartz .zxfw-action-btn--danger:active{background:var(--destructive)!important}@supports (color:color-mix(in lab, red, red)){.ag-theme-quartz .zxfw-action-btn--danger:active{background:color-mix(in srgb, var(--destructive) 18%, transparent)!important}}.picker-item-clickable{transition:transform .12s,border-color .12s,box-shadow .12s}.picker-item-selected{background:#0ea5e914;border-color:#0ea5e9bf;transform:translateY(-1px);box-shadow:inset 0 0 0 1px #0ea5e94d}.picker-item-selected-drag{box-shadow:inset 0 0 0 2px #0ea5e959,0 0 0 1px #0ea5e940}.picker-item-clickable:not(.picker-item-dragging):active{border-color:#0ea5e9cc;transform:translateY(1px)scale(.985);box-shadow:inset 0 0 0 2px #0ea5e938}.xmMx .editable-cell-line .ag-cell-value{border-bottom:1px solid var(--border);min-width:84%;padding:2px 4px;display:inline-block}.xmMx .remark-wrap-cell .ag-cell-value{white-space:normal;min-width:0;line-height:1.4;display:block;border-bottom:none!important}.xmMx .ag-cell.editable-cell-empty.remark-wrap-cell .ag-cell-value{align-items:center;display:flex}.xmMx .editable-cell-line.ag-cell-focus .ag-cell-value,.xmMx .editable-cell-line:hover .ag-cell-value{border-bottom-color:#2563eb}.xmMx .editable-cell-empty .ag-cell-value{font-style:italic;color:var(--muted-foreground)!important;opacity:1!important;border-bottom:none!important}.xmMx .ag-cell.editable-cell-empty,.xmMx .ag-cell.editable-cell-empty .ag-cell-wrapper,.xmMx .ag-cell.editable-cell-empty .ag-cell-value,.xmMx .ag-cell.editable-cell-empty .ag-cell-value *{--ag-data-color:var(--muted-foreground);height:100%;font-style:italic;color:var(--muted-foreground)!important}.xmMx .ag-cell.ag-right-aligned-cell.editable-cell-empty .ag-cell-wrapper{justify-content:flex-end}.xmMx .ag-cell.ag-right-aligned-cell.editable-cell-empty .ag-cell-value{text-align:right!important}@media (width<=1024px){html{font-size:14px}:root{--app-toolbar-btn-h:2.125rem;--app-toolbar-btn-px:.625rem;--app-toolbar-btn-font:.8125rem;--app-grid-header-h:2.5rem;--app-grid-row-h:2.125rem;--app-grid-font-size:.8125rem;--app-typeline-side-w:11.5rem;--app-typeline-gap:.625rem;--app-typeline-label-font:.75rem;--app-typeline-label-line:.95rem;--app-typeline-dot:1.125rem;--app-typeline-dot-inner:.3125rem;--app-typeline-line-left:.5rem}}@media (width>=1025px) and (width<=1440px){html{font-size:15px}:root{--app-toolbar-btn-h:2.25rem;--app-toolbar-btn-px:.75rem;--app-toolbar-btn-font:.875rem;--app-grid-header-h:2.75rem;--app-grid-row-h:2.25rem;--app-grid-font-size:.875rem;--app-typeline-side-w:12rem;--app-typeline-gap:.6875rem;--app-typeline-label-font:.8125rem;--app-typeline-label-line:1rem;--app-typeline-dot:1.1875rem;--app-typeline-dot-inner:.375rem;--app-typeline-line-left:.5625rem}}@media (width>=1441px) and (width<=1919px){html{font-size:16px}:root{--app-toolbar-btn-h:2.25rem;--app-toolbar-btn-px:.75rem;--app-toolbar-btn-font:.875rem;--app-grid-header-h:3rem;--app-grid-row-h:2.25rem;--app-grid-font-size:.875rem;--app-typeline-side-w:12.5rem;--app-typeline-gap:.75rem;--app-typeline-label-font:.875rem;--app-typeline-label-line:1.1rem;--app-typeline-dot:1.25rem;--app-typeline-dot-inner:.4375rem;--app-typeline-line-left:.625rem}}@media (width>=1920px) and (width<=2559px){html{font-size:17px}:root{--app-toolbar-btn-h:2.5rem;--app-toolbar-btn-px:.875rem;--app-toolbar-btn-font:.9375rem;--app-grid-header-h:3.125rem;--app-grid-row-h:2.5rem;--app-grid-font-size:.9375rem;--app-typeline-side-w:13rem;--app-typeline-gap:.8125rem;--app-typeline-label-font:.9375rem;--app-typeline-label-line:1.2rem;--app-typeline-dot:1.375rem;--app-typeline-dot-inner:.5rem;--app-typeline-line-left:.6875rem}}@media (width>=2560px) and (width<=3839px){html{font-size:18px}:root{--app-toolbar-btn-h:2.625rem;--app-toolbar-btn-px:1rem;--app-toolbar-btn-font:1rem;--app-grid-header-h:3.25rem;--app-grid-row-h:2.625rem;--app-grid-font-size:1rem;--app-typeline-side-w:13.5rem;--app-typeline-gap:.875rem;--app-typeline-label-font:1rem;--app-typeline-label-line:1.25rem;--app-typeline-dot:1.5rem;--app-typeline-dot-inner:.5625rem;--app-typeline-line-left:.75rem}}@media (width>=3840px){html{font-size:20px}:root{--app-toolbar-btn-h:2.875rem;--app-toolbar-btn-px:1.125rem;--app-toolbar-btn-font:1.0625rem;--app-grid-header-h:3.5rem;--app-grid-row-h:2.875rem;--app-grid-font-size:1.0625rem;--app-typeline-side-w:14.5rem;--app-typeline-gap:1rem;--app-typeline-label-font:1.0625rem;--app-typeline-label-line:1.35rem;--app-typeline-dot:1.625rem;--app-typeline-dot-inner:.625rem;--app-typeline-line-left:.8125rem}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}} diff --git a/33/static/css/typeLine-oowuebrQ.css b/33/static/css/typeLine-oowuebrQ.css new file mode 100644 index 0000000..3a7f8df --- /dev/null +++ b/33/static/css/typeLine-oowuebrQ.css @@ -0,0 +1 @@ +[data-v-9beb2dbb] .rightMain>div>div{box-sizing:border-box;height:100%;min-height:0}.title-ellipsis-2[data-v-9beb2dbb]{-webkit-line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.hide[data-v-9beb2dbb]{height:300px;overflow:hidden auto} diff --git a/33/static/css/zxFw-DDsbfp-i.css b/33/static/css/zxFw-DDsbfp-i.css new file mode 100644 index 0000000..cec70fc --- /dev/null +++ b/33/static/css/zxFw-DDsbfp-i.css @@ -0,0 +1 @@ +.hide{height:150px;overflow:hidden auto}[data-v-fc012628] .xmMx .ag-header-cell-label{justify-content:center}[data-v-fc012628] .xmMx .ag-header-cell-text{text-align:center}[data-v-fc012628] .zxfw-process-header .ag-header-cell-label{justify-content:center}[data-v-fc012628] .zxfw-process-header .ag-header-cell-text{text-align:center}[data-v-fc012628] .ag-cell:not(.ag-cell-auto-height){align-items:center;display:flex}[data-v-fc012628] .zxfw-number-cell{text-align:right;justify-content:flex-end}[data-v-fc012628] .zxfw-name-cell.ag-cell-auto-height{align-items:center;display:flex}[data-v-fc012628] .zxfw-name-cell.ag-cell-auto-height .ag-cell-wrapper,[data-v-fc012628] .zxfw-name-cell.ag-cell-auto-height .ag-cell-value{white-space:normal;align-items:center;width:100%;display:flex}[data-v-fc012628] .zxfw-name-wrap{white-space:normal;word-break:break-word;overflow-wrap:anywhere;align-items:center;width:100%;line-height:1.6;display:flex}[data-v-fc012628] .zxfw-process-cell{justify-content:center;align-items:center;gap:12px;width:100%;font-size:12px;display:flex}[data-v-fc012628] .zxfw-process-cell--en{flex-direction:column;align-items:flex-start;gap:4px;padding:2px 0}[data-v-fc012628] .zxfw-process-option{cursor:pointer;white-space:nowrap;align-items:center;gap:6px;display:inline-flex}[data-v-fc012628] .zxfw-process-option--en{width:100%} diff --git a/33/static/js/HourlyFeeGrid-DixkKG6W.js b/33/static/js/HourlyFeeGrid-DixkKG6W.js new file mode 100644 index 0000000..7c75c3c --- /dev/null +++ b/33/static/js/HourlyFeeGrid-DixkKG6W.js @@ -0,0 +1 @@ +import{$ as e,At as t,Bt as n,Cr as r,Dt as i,Er as a,H as o,K as s,Mt as c,Ot as l,Pt as u,U as d,Wn as f,er as p,mn as m,tt as h,xr as ee}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as te}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import{D as g}from"./workspace-DxKKyh8w.js";import{a as _,i as v,o as y,s as b}from"./decimal-D3bp1pbs.js";import{r as x}from"./numberFormat-jhZZmX17.js";import{n as S}from"./sql-C69Jo4HU.js";import{t as C}from"./_plugin-vue_export-helper-DUFB50Ey.js";import{C as ne,n as w}from"./index-CAPJG_im.js";import{t as re}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as ie,i as ae,o as T,r as E,t as D}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";var O={class:`h-full min-h-0 flex flex-col`},k={class:`rounded-lg border bg-card xmMx flex min-h-0 flex-1 flex-col`},oe={class:`flex items-center justify-between border-b px-4 py-3`},se={class:`text-sm font-semibold text-foreground`},A=C(h({__name:`HourlyFeeGrid`,props:{storageKey:{},title:{default:void 0},contractId:{},serviceId:{},enableZxFwSync:{type:Boolean,default:!1},syncField:{default:`hourly`},htMainStorageKey:{},htRowId:{},htMethodType:{}},setup(h){let C=h;ne();let{t:A,locale:j}=g(),M=f([]),N=f(null),ce=o(()=>C.syncField===`investScale`?`investScale`:C.syncField===`landScale`?`landScale`:C.syncField===`workload`?`workload`:C.syncField===`hourly`?`hourly`:null);o(()=>!!(C.enableZxFwSync&&C.contractId&&C.serviceId!=null&&ce.value)),o(()=>!!(C.htMainStorageKey&&C.htRowId&&C.htMethodType));let P=o({get:()=>M.value,set:e=>{M.value=e}}),F=e=>e?String(j.value).toLowerCase().startsWith(`en`)&&e.nameEn||e.name:``;Object.entries(S).sort((e,t)=>Number(e[0])-Number(t[0])).filter(e=>{let t=e[1];return!!(t?.code&&t?.name)});let I=(e,t)=>{let n=typeof e==`number`&&Number.isFinite(e),r=typeof t==`number`&&Number.isFinite(t);return n&&r?`${e}-${t}`:n?String(e):r?String(t):``},L=e=>typeof e.manageCoe!=`number`||!Number.isFinite(e.manageCoe)?``:I(typeof e.minPrice==`number`&&Number.isFinite(e.minPrice)?v(b(e.minPrice).mul(e.manageCoe),2):null,typeof e.maxPrice==`number`&&Number.isFinite(e.maxPrice)?v(b(e.maxPrice).mul(e.manageCoe),2):null),R=e=>typeof e.defPrice!=`number`||!Number.isFinite(e.defPrice)||typeof e.manageCoe!=`number`||!Number.isFinite(e.manageCoe)?null:v(b(e.defPrice).mul(e.manageCoe),2),z=async()=>{let e=[],t=await w().query([{field:`type`,value:`${C.contractId}-zxFw`,operator:`eq`}]);for(let n of t){if(n.typel.workDay==0)continue;let t=n.id||n._id,r=`${C.contractId}-hourly-${t}`;e.push({id:r,type:`${C.contractId}-hourly`,expertCode:n.code,expertName:F(n),laborBudgetUnitPrice:I(n.minPrice,n.maxPrice),compositeBudgetUnitPrice:L(n),adoptedBudgetUnitPrice:R(n),personnelCount:null,workdayCount:null,serviceBudget:null,unitPrice2:1600,unitPrice3:2400,unitPrice4:3200,unitPrice5:4e3,workdayCount2:1,workdayCount3:1,workdayCount4:1,workdayCount5:1,feeSubtotal2:1600,feeSubtotal3:2400,feeSubtotal4:3200,feeSubtotal5:4e3,remark:``,path:[r]})}return e},B=e=>{if(e===``||e==null)return null;let t=x(e,{sanitize:!0,precision:0});return t==null||!Number.isSafeInteger(t)||t<0?null:t},V=e=>{let t=e?.adoptedBudgetUnitPrice,n=e?.personnelCount,r=e?.workdayCount;return typeof t!=`number`||!Number.isFinite(t)||typeof n!=`number`||!Number.isFinite(n)||typeof r!=`number`||!Number.isFinite(r)?null:v(b(t).mul(n).mul(r),2)},H=()=>{for(let e of P.value){let t=Number(e.workdayCount2)||0,n=Number(e.workdayCount3)||0,r=Number(e.workdayCount4)||0,i=Number(e.workdayCount5)||0,a=Number(e.unitPrice2)||0,o=Number(e.unitPrice3)||0,s=Number(e.unitPrice4)||0,c=Number(e.unitPrice5)||0;e.feeSubtotal2=Math.round(a*t),e.feeSubtotal3=Math.round(o*n),e.feeSubtotal4=Math.round(s*r),e.feeSubtotal5=Math.round(c*i),e.workdayCount6=t+n+r+i,e.feeSubtotal6=Math.round(a*t+o*n+s*r+c*i);let l=e.workdayCount6;e.avgUnitPrice=l>0?Math.round(e.feeSubtotal6/l):0}};function U(e,t,n={}){let{decimals:r=0,aggFunc:i=`sum`}=n;return{width:100,field:e,headerName:t,editable:!0,cellDataType:`number`,valueFormatter:e=>{if(e.node?.rowPinned===`bottom`)return`/`;let t=e.value;return t==null?`0.00`:Number(t).toFixed(2)},aggFunc:i}}function W(e,t,n={}){let{decimals:r=0,aggFunc:i=`sum`}=n;return{width:100,field:e,headerName:t,editable:!0,cellDataType:`number`,valueParser:e=>{let t=e.newValue?.trim();if(!t)return null;let n=parseFloat(t);return isNaN(n)||n<0?null:n},valueFormatter:e=>{let t=e.value;return t==null?0:r===0?Math.round(t).toString():t},aggFunc:i}}function G(e,t,n=`unitPrice`,r=`workdayCount`){return{width:100,field:e,headerName:t,editable:!1,cellDataType:`number`,valueGetter:e=>{let t=(e.data?.[n]??0)*(e.data?.[r]??0);if(e.node?.rowPinned===`bottom`){let e=M.value.reduce((e,t)=>e+(t[n]||0)*(t[r]||0),0);return Math.round(e)}return Math.round(t)},valueFormatter:e=>{if(e.node?.rowPinned===`bottom`)return`/`;let t=e.value;return t==null?`0.00`:Number(t).toFixed(2)},aggFunc:`sum`}}function le(e,t,n){let{decimals:r=0,aggFunc:i=`sum`}=n;return{width:100,field:e,headerName:t,editable:!1,cellDataType:`number`,valueGetter:e=>{let t=e.data?.workdayCount??0,n=e.data?.workdayCount2??0,r=e.data?.workdayCount3??0,i=e.data?.workdayCount4??0,a=e.data?.workdayCount5??0;return t+n+r+i+a},valueFormatter:e=>{let t=e.value;return t==null?``:r===0?Math.round(t).toString():Number(t).toFixed(0)}}}function ue(e,t,n){let{decimals:r=0,aggFunc:i=`sum`}=n;return{width:100,field:e,headerName:t,editable:!1,cellDataType:`number`,valueFormatter:e=>{if(e.node?.rowPinned===`bottom`)return`/`;let t=e.data?.avgUnitPrice;return(Number.isFinite(Number(t))?Number(t):0).toFixed(2)}}}function de(e,t,n){let{decimals:r=0,aggFunc:i=`sum`}=n;return{width:100,field:e,headerName:t,editable:!1,cellDataType:`number`,valueFormatter:e=>{let t=e.value;return t==null?``:Number(t).toFixed(2)}}}let fe=[{headerName:A(`hourlyFeeGrid.columns.code`),field:`expertCode`,minWidth:90,width:100,pinned:`left`,colSpan:e=>e.node?.rowPinned?2:1,valueFormatter:e=>e.node?.rowPinned?A(`hourlyFeeGrid.total`):e.value||0},{headerName:A(`hourlyFeeGrid.columns.name`),field:`expertName`,minWidth:210,width:230,pinned:`left`,tooltipField:`expertName`,wrapText:!0,autoHeight:!0,cellClass:`hourly-fee-name-cell`,cellStyle:{whiteSpace:`normal`,lineHeight:`1.2`},valueFormatter:e=>e.node?.rowPinned?``:e.value||``},{headerName:A(`hourlyFeeGrid.columns.assistantEngineer`),marryChildren:!0,children:[U(`unitPrice2`,A(`hourlyFeeGrid.columns.unitPrice`),{decimals:0}),W(`workdayCount2`,A(`hourlyFeeGrid.columns.workdayCount`),{decimals:1}),G(`feeSubtotal2`,A(`hourlyFeeGrid.columns.subtotal`),`unitPrice2`,`workdayCount2`)]},{headerName:A(`hourlyFeeGrid.columns.midEngineer`),marryChildren:!0,children:[U(`unitPrice3`,A(`hourlyFeeGrid.columns.unitPrice`),{decimals:0}),W(`workdayCount3`,A(`hourlyFeeGrid.columns.workdayCount`),{decimals:1}),G(`feeSubtotal3`,A(`hourlyFeeGrid.columns.subtotal`),`unitPrice3`,`workdayCount3`)]},{headerName:A(`hourlyFeeGrid.columns.seniorEngineer`),marryChildren:!0,children:[U(`unitPrice4`,A(`hourlyFeeGrid.columns.unitPrice`),{decimals:0}),W(`workdayCount4`,A(`hourlyFeeGrid.columns.workdayCount`),{decimals:1}),G(`feeSubtotal4`,A(`hourlyFeeGrid.columns.subtotal`),`unitPrice4`,`workdayCount4`)]},{headerName:A(`hourlyFeeGrid.columns.profSeniorEngineer`),marryChildren:!0,children:[U(`unitPrice5`,A(`hourlyFeeGrid.columns.unitPrice`),{decimals:0}),W(`workdayCount5`,A(`hourlyFeeGrid.columns.workdayCount`),{decimals:1}),G(`feeSubtotal5`,A(`hourlyFeeGrid.columns.subtotal`),`unitPrice5`,`workdayCount5`)]},{headerName:A(`hourlyFeeGrid.columns.total`),marryChildren:!0,children:[le(`workdayCount6`,A(`hourlyFeeGrid.columns.workdayCount`),{decimals:1}),de(`feeSubtotal6`,A(`hourlyFeeGrid.columns.subtotal`),{decimals:0}),ue(`avgUnitPrice`,A(`hourlyFeeGrid.columns.avgUnitPrice`),{decimals:0})]},{headerName:A(`hourlyFeeGrid.columns.remark`),field:`remark`,minWidth:120,flex:1,cellEditor:`agLargeTextCellEditor`,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},editable:e=>!e.node?.group&&!e.node?.rowPinned,valueFormatter:e=>!e.node?.group&&!e.node?.rowPinned&&!e.value?A(`hourlyFeeGrid.clickToInput`):e.value||``,cellClass:e=>!e.node?.group&&!e.node?.rowPinned?` remark-wrap-cell`:``,cellClassRules:{"editable-cell-empty":e=>!e.node?.group&&!e.node?.rowPinned&&(e.value==null||e.value===``)}}],pe=o(()=>D(fe)),me=o(()=>_(P.value,e=>e.workdayCount)),he=o(()=>_(P.value,e=>e.workdayCount2)),ge=o(()=>_(P.value,e=>e.workdayCount3)),K=o(()=>_(P.value,e=>e.workdayCount4)),_e=o(()=>_(P.value,e=>e.workdayCount5));o(()=>_(P.value,e=>e.feeSubtotal));let ve=o(()=>_(P.value,e=>e.feeSubtotal2)),ye=o(()=>_(P.value,e=>e.feeSubtotal3)),be=o(()=>_(P.value,e=>e.feeSubtotal4)),xe=o(()=>_(P.value,e=>e.feeSubtotal5)),Se=o(()=>P.value.reduce((e,t)=>e+(Number(t.feeSubtotal6)||0),0)),Ce=o(()=>_(P.value,e=>e.avgUnitPrice));o(()=>_(P.value,e=>e.personnelCount));let we=o(()=>y(P.value.map(e=>V(e)))),Te=o(()=>[{id:`pinned-total-row`,expertCode:A(`hourlyFeeGrid.total`),expertName:``,laborBudgetUnitPrice:``,compositeBudgetUnitPrice:``,adoptedBudgetUnitPrice:null,unitPrice:`/`,workdayCount:me.value,workdayCount2:he.value,workdayCount3:ge.value,workdayCount4:K.value,workdayCount5:_e.value,avgUnitPrice:Ce.value,feeSubtotal2:ve.value,feeSubtotal3:ye.value,feeSubtotal4:be.value,feeSubtotal5:xe.value,feeSubtotal6:Se.value,serviceBudget:we.value,remark:``,path:[`TOTAL`]}]),q=async()=>{try{H();let e=P.value.filter(e=>e.id!==`pinned-total-row`).map(e=>({...e}));await w().upsertBatch(e)}catch(e){console.error(`save error`,e)}},J=async()=>{try{let e=await z(),t=(await w().query([{field:`type`,value:`${C.contractId}-hourly`,operator:`eq`}])).map(e=>({id:String(e.id||``),expertCode:String(e.expertCode||``),expertName:String(e.expertName||``),laborBudgetUnitPrice:String(e.laborBudgetUnitPrice||``),compositeBudgetUnitPrice:String(e.compositeBudgetUnitPrice||``),adoptedBudgetUnitPrice:e.adoptedBudgetUnitPrice==null?null:Number(e.adoptedBudgetUnitPrice),personnelCount:e.personnelCount==null?null:Number(e.personnelCount),workdayCount:e.workdayCount==null?null:Number(e.workdayCount),serviceBudget:e.serviceBudget==null?null:Number(e.serviceBudget),remark:String(e.remark||``),path:Array.isArray(e.path)?e.path:[],unitPrice2:e.unitPrice2==null?1600:Number(e.unitPrice2),workdayCount2:e.workdayCount2==null?null:Number(e.workdayCount2),feeSubtotal2:e.feeSubtotal2==null?null:Number(e.feeSubtotal2),unitPrice3:e.unitPrice3==null?2400:Number(e.unitPrice3),workdayCount3:e.workdayCount3==null?null:Number(e.workdayCount3),feeSubtotal3:e.feeSubtotal3==null?null:Number(e.feeSubtotal3),unitPrice4:e.unitPrice4==null?3200:Number(e.unitPrice4),workdayCount4:e.workdayCount4==null?null:Number(e.workdayCount4),feeSubtotal4:e.feeSubtotal4==null?null:Number(e.feeSubtotal4),unitPrice5:e.unitPrice5==null?4e3:Number(e.unitPrice5),workdayCount5:e.workdayCount5==null?null:Number(e.workdayCount5),feeSubtotal5:e.feeSubtotal5==null?null:Number(e.feeSubtotal5),workdayCount6:e.workdayCount6==null?null:Number(e.workdayCount6),feeSubtotal6:e.feeSubtotal6==null?null:Number(e.feeSubtotal6),avgUnitPrice:e.avgUnitPrice==null?null:Number(e.avgUnitPrice)})),n=new Map;t.forEach(e=>n.set(e.expertCode,e)),M.value=e.map(e=>{let t=n.get(e.expertCode);return t?{...e,personnelCount:t.personnelCount,workdayCount:t.workdayCount,serviceBudget:t.serviceBudget,adoptedBudgetUnitPrice:t.adoptedBudgetUnitPrice,unitPrice2:t.unitPrice2,workdayCount2:t.workdayCount2,feeSubtotal2:t.feeSubtotal2,unitPrice3:t.unitPrice3,workdayCount3:t.workdayCount3,feeSubtotal3:t.feeSubtotal3,unitPrice4:t.unitPrice4,workdayCount4:t.workdayCount4,feeSubtotal4:t.feeSubtotal4,unitPrice5:t.unitPrice5,workdayCount5:t.workdayCount5,feeSubtotal5:t.feeSubtotal5,workdayCount6:t.workdayCount6,feeSubtotal6:t.feeSubtotal6,avgUnitPrice:t.avgUnitPrice,remark:t.remark}:e}),console.log(`✅ 按专家编码智能加载:保留用户数据 + 同步最新结构`)}catch(e){console.error(`❌ 加载失败`,e),M.value=await z()}},Ee=async()=>{if(P.value.length===0)return;let e=!1;P.value=P.value.map(t=>{let n=String(t.id||``).match(/^expert-(\d+)$/);if(!n)return t;let r=S[n[1]];if(!r)return t;let i=F(r);return t.expertName===i?t:(e=!0,{...t,expertName:i})}),N.value?.refreshCells({force:!0}),e&&await q()},De=e=>{q(),H(),N.value?.refreshCells()},Y=()=>{},X=e=>{},Oe=e=>{N.value=e.api,$()},Z=null,Q=e=>!!(e&&!e.isDestroyed?.()),ke=()=>{setTimeout(()=>{let e=N.value;Q(e)&&(e.refreshCells({force:!0}),e.redrawRows())},16)},Ae=async()=>{await i();let e=N.value;Q(e)&&(e.onRowHeightChanged(),e.refreshCells({force:!0}),e.redrawRows(),ke())},$=()=>{Z&&clearTimeout(Z),Z=setTimeout(()=>{Z=null,Q(N.value)&&Ae()},0)},je=()=>{$()},Me=()=>{$()},Ne=e=>{$()},Pe=e=>{$()},Fe=e=>Array.isArray(e.value)?JSON.stringify(e.value):e.value,Ie=e=>{let t=String(e.column?.getColDef?.().field||``);if(t===`personnelCount`)return B(e.value);if(t===`adoptedBudgetUnitPrice`||t===`workdayCount`)return x(e.value,{precision:3});try{let t=JSON.parse(e.value);if(Array.isArray(t))return t}catch{return e.value}return e.value};return u(async()=>{console.log(`🚀 组件挂载`),await J(),$()}),l(async()=>{console.log(`🔙 组件激活`),await J(),$()}),m(()=>w().items,async e=>{Object.keys(e).length>0&&J()},{immediate:!0,deep:!0}),m(()=>C.storageKey,()=>{J(),$()}),m(()=>P.value.length,()=>{$()}),m(()=>j.value,()=>{Ee()}),c(()=>{console.log(`🔄 组件失活,保存数据`),N.value?.stopEditing(),q()}),t(()=>{console.log(`💔 组件卸载,保存数据`),N.value?.stopEditing(),N.value=null,Z&&=(clearTimeout(Z),null),q()}),(t,i)=>(n(),s(`div`,O,[d(`div`,k,[d(`div`,oe,[d(`h3`,se,a(C.title||p(A)(`hourlyFeeGrid.title`)),1),i[0]||=d(`div`,{class:`text-xs text-muted-foreground`},null,-1)]),d(`div`,{class:ee(p(ae))},[e(p(te),{style:r(p(E)),rowData:P.value,pinnedBottomRowData:Te.value,columnDefs:pe.value,gridOptions:p(ie),theme:p(T),animateRows:!0,treeData:!1,onCellValueChanged:De,onPasteStart:Y,onPasteEnd:X,onFillStart:Y,onFillEnd:X,suppressColumnVirtualisation:!0,suppressRowVirtualisation:!0,cellSelection:{handle:{mode:`range`}},enableClipboard:!0,localeText:p(re),tooltipShowDelay:500,headerHeight:50,processCellForClipboard:Fe,processCellFromClipboard:Ie,undoRedoCellEditing:!0,undoRedoCellEditingLimit:20,onGridReady:Oe,onFirstDataRendered:Ne,onRowDataUpdated:Pe,onGridSizeChanged:je,onColumnResized:Me},null,8,[`style`,`rowData`,`pinnedBottomRowData`,`columnDefs`,`gridOptions`,`theme`,`localeText`])],2)])]))}}),[[`__scopeId`,`data-v-ec557cf6`]]);export{A as t}; \ No newline at end of file diff --git a/33/static/js/HourlyPricingPane-WkG9QINp.js b/33/static/js/HourlyPricingPane-WkG9QINp.js new file mode 100644 index 0000000..50e4dee --- /dev/null +++ b/33/static/js/HourlyPricingPane-WkG9QINp.js @@ -0,0 +1 @@ +import{Bt as e,H as t,W as n,er as r,tt as i}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as a}from"./workspace-DxKKyh8w.js";import"./decimal-D3bp1pbs.js";import"./numberFormat-jhZZmX17.js";import"./sql-C69Jo4HU.js";import"./agGridReadonlyAutoHeight-BpRhYCq1.js";import"./pricingPersistControl-DVG_7RF1.js";import{t as o}from"./HourlyFeeGrid-DixkKG6W.js";var s=i({__name:`HourlyPricingPane`,props:{contractId:{},serviceId:{}},setup(i){let s=i,c=t(()=>`hourlyPricing-${s.contractId}-${s.serviceId}`),{t:l}=a();return(t,i)=>(e(),n(o,{title:r(l)(`hourlyFeeGrid.title`),"storage-key":c.value,"contract-id":s.contractId,"service-id":s.serviceId,"enable-zx-fw-sync":!0,"sync-field":`hourly`},null,8,[`title`,`storage-key`,`contract-id`,`service-id`]))}});export{s as default}; \ No newline at end of file diff --git a/33/static/js/Ht-CCtU3LPH.js b/33/static/js/Ht-CCtU3LPH.js new file mode 100644 index 0000000..d6ecdb3 --- /dev/null +++ b/33/static/js/Ht-CCtU3LPH.js @@ -0,0 +1 @@ +import{o as e}from"./rolldown-runtime-fVNAxIxX.js";import{$ as t,At as n,Bt as r,C as i,Cr as a,Dt as o,E as s,Er as c,G as l,H as u,K as d,Kt as ee,M as f,Ot as te,Pt as ne,Q as p,T as re,U as m,W as ie,Wn as h,er as g,mn as ae,qt as _,tt as v,xn as oe,xr as y,yn as b}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as se}from"./workspace-DxKKyh8w.js";import{c as x,d as ce,i as S,o as le}from"./decimal-D3bp1pbs.js";import{n as C}from"./utils-DFe0HVk9.js";import{A as ue,D as de,M as fe,O as pe,T as me,b as he,dt as ge,f as _e,ft as ve,gt as ye,ht as be,i as xe,j as Se,k as Ce,lt as we,mt as Te,n as Ee,o as De,pt as Oe,t as ke,u as Ae,ut as je,w,x as T}from"./vendor-ui-B4V4Cf1T.js";import{t as Me}from"./numberFormat-jhZZmX17.js";import{_ as Ne,a as Pe}from"./sql-C69Jo4HU.js";import{t as Fe}from"./_plugin-vue_export-helper-DUFB50Ey.js";import{A as Ie,C as Le,D as Re,E,S as ze,T as Be,_ as Ve,a as He,b as Ue,c as We,d as Ge,f as Ke,g as D,h as qe,k as O,l as Je,m as Ye,o as Xe,p as Ze,s as Qe,u as k,v as $e,w as et,x as A,y as tt}from"./index-CAPJG_im.js";var nt=e(E(),1),rt=v({__name:`Card`,props:{class:{}},setup(e){let t=e;return(e,n)=>(r(),d(`div`,{"data-slot":`card`,class:y(g(C)(`bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm`,t.class))},[_(e.$slots,`default`)],2))}}),it=v({__name:`CardHeader`,props:{class:{}},setup(e){let t=e;return(e,n)=>(r(),d(`div`,{"data-slot":`card-header`,class:y(g(C)(`@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6`,t.class))},[_(e.$slots,`default`)],2))}}),at=v({__name:`CardTitle`,props:{class:{}},setup(e){let t=e;return(e,n)=>(r(),d(`h3`,{"data-slot":`card-title`,class:y(g(C)(`leading-none font-semibold`,t.class))},[_(e.$slots,`default`)],2))}});const ot=e=>e.map((e,t)=>({...e,order:t,createdAt:e.createdAt||new Date().toISOString()})),st=e=>{if(!e)return`-`;let t=new Date(e);if(Number.isNaN(t.getTime()))return`-`;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`},ct=e=>Array.isArray(e)?e.filter(e=>e&&typeof e==`object`).map((e,t)=>{let n=e,r=typeof n.name==`string`?n.name.trim():``,i=typeof n.createdAt==`string`?n.createdAt:new Date().toISOString();return{id:typeof n.id==`string`?n.id:`import-contract-${t}`,name:r||`导入合同段-${t+1}`,order:t,createdAt:i}}):[],lt=(e,t,n)=>{for(let r of t)if(n(e,r))return!0;return!1},ut=async(e,t)=>{let n=new Set(t.map(e=>String(e||``).trim()).filter(Boolean)),r={contracts:{},servicePricingStates:{},htFeeMainStates:{},htFeeMethodStates:{}};if(n.size===0)return r;await Promise.all(Array.from(n).map(t=>e.loadContract(t)));for(let t of n){let n=e.getContractState(t);n&&(r.contracts[t]=k(n));let i=e.servicePricingStates[t];D(i)&&(r.servicePricingStates[t]=k(i));let a=`htExtraFee-${t}-`;for(let[t,n]of Object.entries(e.htFeeMainStates))t.startsWith(a)&&(r.htFeeMainStates[t]=k(n));for(let[t,n]of Object.entries(e.htFeeMethodStates))t.startsWith(a)&&(r.htFeeMethodStates[t]=k(n))}return r},dt=async(e,t,n)=>{if(!D(t))return;let r=D(t.zxFwPricing)?t.zxFwPricing:null;if(!r)return;let i=D(r.contracts)?r.contracts:{},a=D(r.servicePricingStates)?r.servicePricingStates:{},o=D(r.htFeeMainStates)?r.htFeeMainStates:{},s=D(r.htFeeMethodStates)?r.htFeeMethodStates:{};for(let[t,r]of n.entries()){let n=i[t];D(n)&&Array.isArray(n.detailRows)&&await e.setContractState(r,n);let c=a[t];if(D(c)){for(let[t,n]of Object.entries(c))if(D(n))for(let i of Je){let a=n[i];!D(a)||!Array.isArray(a.detailRows)||e.setServicePricingMethodState(r,t,i,a,{force:!0})}}let l=`htExtraFee-${t}-`,u=`htExtraFee-${r}-`;for(let[t,n]of Object.entries(o)){if(!t.startsWith(l)||!D(n)||!Array.isArray(n.detailRows))continue;let r=t.replace(l,u);e.setHtFeeMainState(r,n,{force:!0})}for(let[t,n]of Object.entries(s)){if(!t.startsWith(l)||!D(n))continue;let r=t.replace(l,u);for(let[t,i]of Object.entries(n)){if(!D(i))continue;let n=i[`rate-fee`],a=i[`hourly-fee`],o=i[`quantity-unit-price-fee`];n!=null&&e.setHtFeeMethodState(r,t,`rate-fee`,k(n),{force:!0}),a!=null&&e.setHtFeeMethodState(r,t,`hourly-fee`,k(a),{force:!0}),o!=null&&e.setHtFeeMethodState(r,t,`quantity-unit-price-fee`,k(o),{force:!0})}}}},ft=async(e,t)=>{let n=await e.keys(),r=new Set(t),i=n.filter(e=>{for(let t of r)if(Ze(e,t))return!0;return!1});return Promise.all(i.map(async t=>({key:t,value:await e.getItem(t)})))},pt=(e,t)=>{let n=new Set(t.map(e=>String(e||``).trim()).filter(Boolean));return Object.entries(e.keyedStates).filter(([e])=>{for(let t of n)if(Ye(e,t))return!0;return!1}).map(([e,t])=>({key:e,value:k(t)}))};var mt={class:`flex h-full min-h-0 flex-col overflow-hidden`},ht={class:`relative z-30 shrink-0 overflow-visible border-b bg-background/95 px-1 pb-4 backdrop-blur supports-[backdrop-filter]:bg-background/80`},gt={class:`mb-6 flex items-center justify-between pt-1`},_t={class:`space-y-1`},vt={class:`text-lg font-bold`},yt={class:`text-xs text-muted-foreground`},bt={class:`flex items-center gap-2`},xt={class:`text-xs text-muted-foreground`},St={key:0,class:`absolute right-0 top-full z-[80] mt-1 w-max rounded-md border bg-background p-1 shadow-md`},Ct=[`disabled`],wt=[`disabled`],Tt=[`disabled`],Et={class:`flex flex-col gap-2 md:flex-row md:items-start`},Dt={class:`w-full md:max-w-md`},Ot={class:`flex items-center gap-2`},kt=[`placeholder`],At={key:0,class:`mt-1 text-xs text-muted-foreground`},jt={key:1,class:`mt-1 text-xs text-muted-foreground`},Mt={key:2,class:`mt-1 text-xs text-muted-foreground`},Nt={class:`flex flex-wrap items-center gap-2 md:ml-auto`},Pt={class:`inline-flex cursor-pointer items-center gap-2 text-xs text-muted-foreground select-none`},Ft=[`aria-checked`],It=[`checked`,`onChange`],Lt={class:`min-w-0 shrink text-[11px] leading-none font-normal text-muted-foreground truncate`},Rt={class:`shrink-0 text-[11px] leading-none font-normal text-muted-foreground`},zt={class:`shrink-0 text-[11px] leading-none font-normal text-muted-foreground`},Bt={key:1,class:y([`px-6 text-xs text-muted-foreground`,`space-y-1 pb-1`])},Vt={class:`break-all`},Ht={key:1,class:`mx-2 mb-4 rounded-2xl border border-dashed border-primary/30 bg-gradient-to-br from-primary/5 via-background to-muted/30 p-10 text-center shadow-sm`},Ut={class:`text-lg font-semibold tracking-wide text-foreground`},Wt={class:`mt-2 text-sm text-muted-foreground`},Gt=[`checked`,`onChange`],Kt={class:`min-w-0 shrink text-[11px] leading-none font-normal text-muted-foreground truncate`},qt={class:`shrink-0 text-[11px] leading-none font-normal text-muted-foreground`},Jt={class:`shrink-0 text-[11px] leading-none font-normal text-muted-foreground`},Yt={key:1,class:y([`px-6 text-xs text-muted-foreground`,`space-y-1 pb-4`])},Xt={class:`break-all`},Zt={key:0,class:`col-span-full rounded-lg border border-dashed p-8 text-center text-sm text-muted-foreground`},Qt=[`aria-label`],$t={key:0,class:`fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4`},en={class:`text-base font-semibold`},tn={class:`space-y-2 px-5 py-4`},nn={class:`block text-sm font-medium text-foreground`},rn=[`placeholder`],an={class:`flex items-center justify-end gap-2 px-5 py-3`},on={class:`mt-4 flex items-center justify-end gap-2`},sn={class:`mt-4 flex items-center justify-end gap-2`},cn={class:`mt-4 flex items-center justify-end gap-2`},ln={class:`grid gap-1`},un=`ht-card-v1`,dn=58,fn=560,pn=24,mn=220,j=Fe(v({__name:`Ht`,setup(e){let _=Ie(),v=Le(),C=Be(),Fe=et(),E=ce(),{t:D,locale:Je}=se(),j=h([]),M=h(``),N=h(!1),P=h(!1),hn=h(null),gn=h(null),F=h(`none`),I=h([]),_n=h(!1),L=h(``),R=h(null),vn=h(!1),yn=h(D(`ht.toastSuccessTitle`)),bn=h(``),xn=h(!1),z=h(null),Sn=h(!1),Cn=h(``),wn=h(``),Tn=h(!1),B=h({x:0,y:0}),En=0,Dn=0,On=0,kn=0,An=h(null),jn=h(null),Mn=h(!1),V=h(!1),H=h(`ready`),U=h(!0),W=h({}),Nn=h(!1),Pn=0,G=0,Fn=null,K=null,q=null,In=null,Ln=fn+dn*pn+80,Rn=()=>[],zn=u(()=>M.value.trim().toLowerCase()),J=u(()=>F.value!==`none`),Bn=u(()=>I.value.length),Y=u(()=>j.value.length>0),Vn=u(()=>zn.value?j.value.filter(e=>{let t=e.name.toLowerCase(),n=e.id.toLowerCase();return t.includes(zn.value)||n.includes(zn.value)}):j.value),Hn=u(()=>!!zn.value),Un=u(()=>{let e=!1,t=0;for(let n of j.value){let r=W.value[n.id];typeof r!=`number`||!Number.isFinite(r)||(t+=r,e=!0)}return e?S(t,2):null}),Wn=u(()=>{let e=j.value.map(e=>String(e.id||``).trim()).filter(Boolean);return e.length===0?``:e.map(e=>{let t=`htExtraFee-${e}-additional-work`,n=`htExtraFee-${e}-reserve`,r=v.contracts[e]||null,i=v.htFeeMainStates[t]||null,a=v.htFeeMainStates[n]||null,o=v.htFeeMethodStates[t]||null,s=v.htFeeMethodStates[n]||null;return JSON.stringify({id:e,contractState:r,addMain:i,reserveMain:a,addMethods:o,reserveMethods:s})}).join(`|`)}),X=e=>{yn.value=D(`ht.toastSuccessTitle`),bn.value=e,vn.value=!1,requestAnimationFrame(()=>{vn.value=!0})},Z=(e,t)=>{Cn.value=e,wn.value=t,Sn.value=!0},Gn=u(()=>z.value?j.value.find(e=>e.id===z.value)?.name||z.value:``),Kn=u(()=>{let e=new Set(I.value);return j.value.filter(t=>e.has(t.id)).length}),qn=e=>{xn.value=e},Jn=e=>{z.value=e,xn.value=!0},Yn=async()=>{let e=z.value;e&&(await Fr(e),xn.value=!1,z.value=null)},Xn=()=>{P.value=!1},Zn=async()=>{try{let e=await E.getItem(Qe);U.value=!!(typeof e?.projectIndustry==`string`&&e.projectIndustry.trim())}catch(e){console.error(`load project base state failed:`,e),U.value=!1}},Qn=async()=>{let e=await E.getItem(Qe);return typeof e?.projectIndustry==`string`?e.projectIndustry.trim():``},$n=e=>typeof e==`number`&&Number.isFinite(e)?`${Me(e,2)} ${D(`htCard.currencySuffix`)}`:`--`,er=e=>{let t=Array.isArray(e?.detailRows)?e.detailRows:[];if(t.length===0)return null;let n=!1,r=0;for(let e of t){let t=x(e?.serviceBudget);if(t!=null){r+=t,n=!0;continue}let i=x(e?.adoptedBudgetUnitPrice),a=x(e?.personnelCount),o=x(e?.workdayCount);i==null||a==null||o==null||(r+=i*a*o,n=!0)}return n?S(r,2):null},tr=e=>{let t=Array.isArray(e?.detailRows)?e.detailRows:[];if(t.length===0)return null;let n=x(t.find(e=>String(e?.id||``)===`fee-subtotal-fixed`)?.budgetFee);if(n!=null)return S(n,2);let r=!1,i=0;for(let e of t){if(String(e?.id||``)===`fee-subtotal-fixed`)continue;let t=x(e?.budgetFee);if(t!=null){i+=t,r=!0;continue}let n=x(e?.quantity),a=x(e?.unitPrice);n==null||a==null||(i+=n*a,r=!0)}return r?S(i,2):null},nr=async(e,t)=>{let[n,r,i]=await Promise.all([v.loadHtFeeMethodState(e,t,`rate-fee`),v.loadHtFeeMethodState(e,t,`hourly-fee`),v.loadHtFeeMethodState(e,t,`quantity-unit-price-fee`)]),a=le([x(n?.budgetFee),er(r),tr(i)]);return a==null?null:S(a,2)},rr=async e=>{let t=await v.loadHtFeeMainState(e),n=(Array.isArray(t?.detailRows)?t.detailRows:[]).map(e=>String(e?.id||``).trim()).filter(Boolean);if(n.length===0)return null;let r=le(await Promise.all(n.map(t=>nr(e,t))));return r==null?null:S(r,2)},ir=async e=>{await v.loadContract(e);let t=v.getBaseSubtotal(e),[n,r]=await Promise.all([rr(`htExtraFee-${e}-additional-work`),rr(`htExtraFee-${e}-reserve`)]),i=le([t,n,r]);return i==null?null:S(i,2)},Q=async()=>{let e=++Pn,t=j.value.map(e=>String(e.id||``).trim()).filter(Boolean);if(t.length===0){W.value={},Nn.value=!1;return}Nn.value=!0;try{let n=await Promise.all(t.map(async e=>[e,await ir(e)]));if(e!==Pn)return;W.value=Object.fromEntries(n)}catch(e){console.error(`refresh contract budgets failed:`,e)}finally{e===Pn&&(Nn.value=!1)}},ar=()=>{In&&clearTimeout(In),In=setTimeout(()=>{Q()},80)},or=e=>{let t=e.trim(),n=Ne.find(e=>String(e.id||``).trim()===t),r=n?Pe(n.id,Je.value):``;return r?`${t} ${r}`:t},sr=e=>I.value.includes(e),cr=e=>{if(J.value){if(sr(e)){I.value=I.value.filter(t=>t!==e);return}I.value=[...I.value,e]}},lr=()=>{F.value=`none`,I.value=[]},ur=()=>{Y.value&&(Xn(),F.value=`export`,I.value=[])},dr=()=>{Y.value&&(Xn(),F.value=`delete`,I.value=[])},fr=()=>{U.value&&(Xn(),gn.value?.click())},pr=()=>{let e=An.value?.querySelector(`[data-slot="scroll-area-viewport"]`)||null;return jn.value=e,e},mr=(e=`smooth`)=>{let t=pr();t&&t.scrollTo({top:t.scrollHeight,behavior:e})},hr=(e=`smooth`)=>{let t=pr();t&&t.scrollTo({top:0,behavior:e})},gr=()=>{let e=jn.value;Mn.value=!!(e&&e.scrollTop>mn)},_r=()=>{gr()},vr=()=>{let e=pr();if(q===e){gr();return}if(q&&=(q.removeEventListener(`scroll`,_r),null),!e){Mn.value=!1;return}q=e,q.addEventListener(`scroll`,_r,{passive:!0}),gr()},yr=()=>{q&&=(q.removeEventListener(`scroll`,_r),null),Mn.value=!1},br=()=>{K&&=(clearTimeout(K),null),H.value=`enter`,K=setTimeout(()=>{H.value=`ready`,K=null},Ln)},xr=e=>({"--ht-card-enter-delay":`${Math.min(e,pn)*dn}ms`}),Sr=e=>({"--ht-card-select-delay":`${e%10*70}ms`}),Cr=e=>{if(J.value)return Sr(e);if(H.value===`enter`)return xr(e)},$=async()=>{try{j.value=ot(j.value),await E.setItem(un,JSON.parse(JSON.stringify(j.value)))}catch(e){console.error(`save contracts failed:`,e)}},wr=async e=>{let[t,n]=await Promise.all([E.getItem(We),E.getItem(Qe)]),r=typeof n?.projectIndustry==`string`?n.projectIndustry.trim():``,i=r?Re(r,t):{detailRows:Array.isArray(t?.detailRows)?k(t.detailRows):[],roughCalcEnabled:!!t?.roughCalcEnabled,totalAmount:typeof t?.totalAmount==`number`&&Number.isFinite(t.totalAmount)?t.totalAmount:null};await E.setItem(`${He}${e}`,i)},Tr=async()=>{if(I.value.length===0){Z(D(`ht.tipTitle`),D(`ht.selectAtLeastOne`));return}try{let e=new Set(I.value),t=j.value.filter(t=>e.has(t.id)).map((e,t)=>({...e,order:t})),n=await ft(E,t.map(e=>e.id)),r=pt(v,t.map(e=>e.id)),i=await ut(v,t.map(e=>e.id)),a=await Qn();if(!a){Z(D(`ht.exportFailedTitle`),D(`ht.industryMissingForExport`));return}let o=new Date,s=await Ue({version:3,packageType:`contract-segments`,exportedAt:o.toISOString(),project:{industry:a},contracts:t,storage:{localforageEntries:n,keyedEntries:r},pinia:{zxFwPricing:i}}),c=new Uint8Array(s.length);c.set(s);let l=new Blob([c],{type:`application/octet-stream`}),u=URL.createObjectURL(l),d=document.createElement(`a`);d.href=u,d.download=`contract-segments-${Ge(o)}${Xe}`,document.body.appendChild(d),d.click(),document.body.removeChild(d),URL.revokeObjectURL(u),X(D(`ht.exportSuccess`,{count:t.length})),lr()}catch(e){console.error(`export selected contracts failed:`,e),Z(D(`ht.exportFailedTitle`),D(`ht.retry`))}},Er=async e=>{let t=e.target,n=t.files?.[0];if(n)try{let e=n.name.toLowerCase();if(!e.endsWith(`.htzw`)&&!e.endsWith(`.zw`))throw Error(`INVALID_FILE_EXTENSION`);let t=await tt(await n.arrayBuffer());if(!qe(t))throw Error(`INVALID_CONTRACT_SEGMENT_PAYLOAD`);let r=Ve(t),i=await Qn();if(!i)throw Error(`CURRENT_PROJECT_INDUSTRY_MISSING`);if(!r.projectIndustry)throw Error(`IMPORT_PACKAGE_INDUSTRY_MISSING`);if(r.projectIndustry!==i)throw Error(`PROJECT_INDUSTRY_MISMATCH:${r.projectIndustry}:${i}`);let a=ct(t.contracts);if(a.length===0)throw Error(`EMPTY_CONTRACTS`);let s=r.localforageEntries,c=r.keyedEntries,l=new Set(a.map(e=>String(e.id||``).trim()).filter(Boolean)),u=s.filter(e=>lt(e.key,l,Ze)),d=c.filter(e=>lt(e.key,l,Ye)),ee=new Set(j.value.map(e=>e.id)),f=new Map,te=a.map((e,t)=>{let n=Ke(ee);return f.set(e.id,n),{...e,id:n,order:j.value.length+t,createdAt:e.createdAt||new Date().toISOString()}}),ne=u.map(e=>{let t=e.key;for(let[e,n]of f.entries())t.includes(e)&&(t=$e(t,e,n));return{key:t,value:e.value}}),p=d.map(e=>{let t=e.key;for(let[e,n]of f.entries())t.includes(e)&&(t=$e(t,e,n));return{key:t,value:e.value}});await Promise.all(ne.map(e=>E.setItem(e.key,e.value)));for(let e of p)v.setKeyState(e.key,k(e.value),{force:!0});await dt(v,r.piniaState,f),j.value=[...j.value,...te],await $(),await Promise.all([v.$persistNow?.(),C.$persistNow?.(),Fe.$persistNow?.()]),await Q(),X(D(`ht.importSuccess`,{count:te.length})),await o(),mr()}catch(e){console.error(`import contract segments failed:`,e);let t=e instanceof Error?e.message:``;if(t.startsWith(`PROJECT_INDUSTRY_MISMATCH:`)){let[,e=``,n=``]=t.split(`:`);Z(D(`ht.importFailedTitle`),D(`ht.importIndustryMismatch`,{importIndustry:or(e),currentIndustry:or(n)}))}else t===`CURRENT_PROJECT_INDUSTRY_MISSING`?Z(D(`ht.importFailedTitle`),D(`ht.importCurrentIndustryMissing`)):t===`IMPORT_PACKAGE_INDUSTRY_MISSING`?Z(D(`ht.importFailedTitle`),D(`ht.importPackageIndustryMissing`)):t===`ZW_CRYPTO_UNAVAILABLE`?Z(D(`ht.importFailedTitle`),D(`ht.importCryptoUnavailable`)):Z(D(`ht.importFailedTitle`),D(`ht.importFileInvalid`))}finally{t.value=``}},Dr=async(e,t)=>{try{let n=(await e.keys()).filter(e=>e.includes(t));await Promise.all(n.map(t=>e.removeItem(t)))}catch(e){console.error(`remove forage keys by contract id failed:`,t,e)}},Or=e=>{let t=_.tabs.filter(t=>{let n=t?.props?.contractId;return t.id===`contract-${e}`||t.id.startsWith(`zxfw-edit-${e}-`)||n===e}).map(e=>e.id);for(let e of t)_.removeTab(e)},kr=async e=>{v.removeContractData(e),await Promise.all([Dr(E,e)]),await Promise.all([v.$persistNow?.(),C.$persistNow?.(),Fe.$persistNow?.()])},Ar=async()=>{try{let e=await E.getItem(un);if(!e||e.length===0){j.value=Rn(),await $();return}j.value=ot([...e].sort((e,t)=>(e.order??0)-(t.order??0)))}catch(e){console.error(`load contracts failed:`,e),j.value=Rn()}},jr=()=>{U.value&&(Xn(),R.value=null,L.value=``,B.value={x:0,y:0},_n.value=!0)},Mr=e=>{Xn(),R.value=e.id,L.value=e.name,B.value={x:0,y:0},_n.value=!0},Nr=()=>{_n.value=!1,R.value=null,L.value=``,B.value={x:0,y:0}},Pr=async()=>{let e=L.value.trim();if(!e)return;if(R.value){let t=j.value.find(e=>e.id===R.value);if(!t)return;if(t.name===e){Nr();return}j.value=j.value.map(t=>t.id===R.value?{...t,name:e}:t),await $(),X(D(`ht.editSuccess`)),Nr();return}let t={id:`ct-${Date.now()}-${Math.random().toString(16).slice(2,6)}`,name:e,order:j.value.length,createdAt:new Date().toISOString()};j.value=[...j.value,t],await $();try{await wr(t.id)}catch(e){console.error(`initialize contract scale failed:`,e)}await Q(),X(D(`ht.createSuccess`)),Nr(),await o(),mr()},Fr=async e=>{Or(e),await o(),await kr(e),await new Promise(e=>setTimeout(e,80)),await kr(e),j.value=j.value.filter(t=>t.id!==e),I.value=I.value.filter(t=>t!==e),await $(),await Q(),X(D(`ht.deleteSuccess`))},Ir=async()=>{if(I.value.length===0){Z(D(`ht.tipTitle`),D(`ht.selectAtLeastOne`));return}let e=new Set(I.value);if(j.value.filter(t=>e.has(t.id)).length===0){Z(D(`ht.tipTitle`),D(`ht.noContractsToDelete`));return}Tn.value=!0},Lr=async()=>{let e=new Set(I.value),t=j.value.filter(t=>e.has(t.id));if(t.length===0){Tn.value=!1,Z(D(`ht.tipTitle`),D(`ht.noContractsToDelete`));return}try{let n=t.map(e=>e.id);for(let e of n)Or(e);await o();for(let e of n)await kr(e);await new Promise(e=>setTimeout(e,80));for(let e of n)await kr(e);j.value=j.value.filter(t=>!e.has(t.id)),I.value=I.value.filter(t=>!e.has(t)),await $(),await Q(),X(D(`ht.deleteBatchSuccess`,{count:n.length})),lr()}catch(e){console.error(`delete selected contracts failed:`,e),Z(D(`ht.batchDeleteFailedTitle`),D(`ht.retry`))}finally{Tn.value=!1}},Rr=async e=>{Hr(),!(e.oldIndex==null||e.newIndex==null||e.oldIndex===e.newIndex)&&(await $(),X(D(`ht.sortDone`)))},zr=e=>{V.value&&(Fn=e.clientY)},Br=()=>{if(!V.value){G=0;return}let e=jn.value||pr(),t=Fn;if(e&&t!=null){let n=e.getBoundingClientRect(),r=0;if(tn.bottom-88){let e=Math.max(0,Math.min(1,(t-(n.bottom-88))/88));r=Math.ceil(22*e)}r!==0&&(e.scrollTop=Math.max(0,Math.min(e.scrollTop+r,e.scrollHeight-e.clientHeight)))}G=window.requestAnimationFrame(Br)},Vr=()=>{K&&=(clearTimeout(K),null),H.value=`ready`,pr(),V.value=!0,Fn=null,window.addEventListener(`pointermove`,zr,{passive:!0}),window.addEventListener(`dragover`,zr,{passive:!0}),G&&cancelAnimationFrame(G),G=window.requestAnimationFrame(Br)},Hr=()=>{V.value=!1,Fn=null,window.removeEventListener(`pointermove`,zr),window.removeEventListener(`dragover`,zr),G&&=(cancelAnimationFrame(G),0)},Ur=e=>{if(J.value){cr(e.id);return}_.openTab({id:`contract-${e.id}`,title:D(`ht.contractTabTitle`,{name:e.name}),componentName:`QuickCalcView`,props:{contractId:e.id,contractName:e.name}})},Wr=e=>{B.value={x:On+(e.clientX-En),y:kn+(e.clientY-Dn)}},Gr=()=>{window.removeEventListener(`mousemove`,Wr),window.removeEventListener(`mouseup`,Gr)},Kr=e=>{En=e.clientX,Dn=e.clientY,On=B.value.x,kn=B.value.y,window.addEventListener(`mousemove`,Wr),window.addEventListener(`mouseup`,Gr)},qr=e=>{if(!P.value||!hn.value)return;let t=e.target;hn.value.contains(t)||(P.value=!1)};return ne(async()=>{await Zn(),await Ar(),await Q(),br(),await o(),vr(),window.addEventListener(`mousedown`,qr)}),te(()=>{Zn(),Q(),br(),o(()=>{vr()})}),n(()=>{Gr(),Hr(),In&&clearTimeout(In),yr(),window.removeEventListener(`mousedown`,qr),K&&clearTimeout(K),$()}),ae(Wn,(e,t)=>{e!==t&&ar()}),(e,n)=>(r(),ie(g(fe),null,{default:b(()=>[t(g(me),null,{default:b(()=>[m(`div`,mt,[m(`div`,ht,[m(`div`,gt,[m(`div`,_t,[m(`h3`,vt,c(g(D)(`ht.title`)),1),m(`div`,yt,c(g(D)(`ht.projectTotalBudget`,{amount:Nn.value?g(D)(`ht.budgetLoading`):$n(Un.value)})),1)]),m(`div`,bt,[J.value?(r(),d(f,{key:0},[m(`div`,xt,c(g(D)(`ht.selectedCount`,{count:Bn.value})),1),t(g(O),{variant:`outline`,disabled:Bn.value===0,onClick:n[0]||=e=>F.value===`export`?Tr():Ir()},{default:b(()=>[p(c(F.value===`export`?g(D)(`ht.exportSelected`):g(D)(`ht.deleteSelected`)),1)]),_:1},8,[`disabled`]),t(g(O),{variant:`ghost`,onClick:lr},{default:b(()=>[p(c(g(D)(`ht.cancelSelect`)),1)]),_:1})],64)):(r(),d(f,{key:1},[t(g(O),{class:`whitespace-nowrap`,disabled:!U.value,onClick:jr},{default:b(()=>[t(g(xe),{class:`mr-2 h-4 w-4`}),p(` `+c(g(D)(`ht.addContract`)),1)]),_:1},8,[`disabled`]),m(`div`,{ref_key:`contractDataMenuRef`,ref:hn,class:`relative`},[t(g(O),{variant:`outline`,size:`icon`,class:`h-10 w-10`,onClick:n[1]||=e=>P.value=!P.value},{default:b(()=>[t(g(_e),{class:`h-4 w-4`})]),_:1}),P.value?(r(),d(`div`,St,[m(`button`,{class:y([`block whitespace-nowrap rounded px-3 py-1.5 text-left text-sm`,Y.value?`cursor-pointer hover:bg-muted`:`cursor-not-allowed text-muted-foreground`]),disabled:!Y.value,onClick:dr},c(g(D)(`ht.batchDelete`)),11,Ct),m(`button`,{class:y([`block whitespace-nowrap rounded px-3 py-1.5 text-left text-sm`,Y.value?`cursor-pointer hover:bg-muted`:`cursor-not-allowed text-muted-foreground`]),disabled:!Y.value,onClick:ur},c(g(D)(`ht.exportContracts`)),11,wt),m(`button`,{class:y([`block whitespace-nowrap rounded px-3 py-1.5 text-left text-sm`,U.value?`cursor-pointer hover:bg-muted`:`cursor-not-allowed text-muted-foreground`]),disabled:!U.value,onClick:fr},c(g(D)(`ht.importContracts`)),11,Tt)])):l(``,!0),m(`input`,{ref_key:`contractImportFileRef`,ref:gn,type:`file`,class:`hidden`,accept:`.htzw,.zw`,onChange:Er},null,544)],512)],64))])]),m(`div`,Et,[m(`div`,Dt,[m(`div`,Ot,[oe(m(`input`,{"onUpdate:modelValue":n[2]||=e=>M.value=e,type:`text`,placeholder:g(D)(`ht.searchPlaceholder`),class:`h-10 w-full rounded-md border bg-background px-3 text-sm outline-none transition focus-visible:ring-2 focus-visible:ring-ring`},null,8,kt),[[i,M.value]]),M.value?(r(),ie(g(O),{key:0,variant:`outline`,size:`sm`,class:`h-10 shrink-0 px-3`,onClick:n[3]||=e=>M.value=``},{default:b(()=>[p(c(g(D)(`ht.clearFilter`)),1)]),_:1})):l(``,!0)]),Hn.value?(r(),d(`div`,At,c(g(D)(`ht.searchingHint`,{filtered:Vn.value.length,total:j.value.length})),1)):l(``,!0),J.value?(r(),d(`div`,jt,c(F.value===`export`?g(D)(`ht.selectModeExportHint`):g(D)(`ht.selectModeDeleteHint`)),1)):l(``,!0),U.value?l(``,!0):(r(),d(`div`,Mt,c(g(D)(`ht.setupRequiredHint`)),1))]),m(`div`,Nt,[m(`label`,Pt,[m(`span`,null,c(N.value?g(D)(`ht.listLayout`):g(D)(`ht.gridLayout`)),1),m(`button`,{type:`button`,role:`switch`,"aria-checked":N.value,class:y([`relative h-6 w-11 cursor-pointer rounded-full border transition-colors active:scale-95`,N.value?`bg-primary border-primary`:`bg-muted border-border`]),onClick:n[4]||=e=>N.value=!N.value},[m(`span`,{class:y([`pointer-events-none absolute top-1/2 h-4 w-4 -translate-y-1/2 rounded-full bg-background shadow-sm transition-all`,N.value?`left-6`:`left-1`])},null,2)],10,Ft)])])])]),m(`div`,{ref_key:`contractListScrollWrapRef`,ref:An,class:`mt-4 flex-1 min-h-0`},[t(g(ze),{class:y([`ht-contract-scroll-area h-full`,V.value&&`is-dragging`])},{default:b(()=>[!Hn.value&&Vn.value.length>0?(r(),ie(g(nt.default),{key:`contracts-${N.value?`list`:`grid`}`,modelValue:j.value,"onUpdate:modelValue":n[7]||=e=>j.value=e,"item-key":`id`,disabled:J.value,handle:`.contract-drag-handle`,"ghost-class":`ht-sortable-ghost`,"chosen-class":`ht-sortable-chosen`,"drag-class":`ht-sortable-drag`,class:y([`grid grid-cols-1 pb-4 pr-4 pt-3`,N.value?`gap-2`:`gap-4`,!N.value&&`md:grid-cols-2 lg:grid-cols-3`]),animation:`200`,onStart:Vr,onEnd:Rr},{item:b(({element:e,index:i})=>[t(g(rt),{class:y([`group relative cursor-pointer snap-start snap-always transition-colors hover:border-primary ht-contract-card`,J.value?`ht-contract-card--selecting`:H.value===`enter`&&!V.value?`ht-contract-card--enter`:`ht-contract-card--ready`,sr(e.id)&&`ht-contract-card--selected`,N.value&&`gap-0 py-0`]),style:a(Cr(i)),onClick:t=>Ur(e)},{default:b(()=>[J.value?(r(),d(`label`,{key:0,class:`absolute left-2 top-2 z-10 inline-flex cursor-pointer items-center rounded bg-background/90 p-0.5 shadow-sm`,onClick:n[5]||=s(()=>{},[`stop`])},[m(`input`,{type:`checkbox`,class:`h-4 w-4 cursor-pointer`,checked:sr(e.id),onChange:s(t=>cr(e.id),[`stop`])},null,40,It)])):l(``,!0),t(g(it),{class:y([`flex flex-row items-center justify-between gap-0 space-y-0`,N.value?`px-3 py-2`:`pb-4`])},{default:b(()=>[t(g(at),{class:y([`text-sm font-medium`,N.value&&`mr-1.5 flex min-w-0 flex-1 items-center gap-1.5`])},{default:b(()=>[m(`span`,{class:y(N.value?`min-w-0 truncate`:``)},c(e.name),3),N.value?(r(),d(f,{key:0},[m(`span`,Lt,` ID: `+c(e.id),1),m(`span`,Rt,c(g(D)(`ht.contractBudget`,{amount:$n(W.value[e.id])})),1),m(`span`,zt,c(g(D)(`ht.createdAt`,{time:g(st)(e.createdAt)})),1)],64)):l(``,!0)]),_:2},1032,[`class`]),J.value?l(``,!0):(r(),d(`div`,{key:0,class:y([`flex shrink-0 opacity-0 transition-opacity group-hover:opacity-100`,N.value?`gap-0.5`:`gap-1`])},[t(g(w),null,{default:b(()=>[t(g(T),{"as-child":``},{default:b(()=>[m(`button`,{type:`button`,class:y([`contract-drag-handle inline-flex cursor-grab items-center justify-center rounded-md text-muted-foreground hover:bg-muted active:cursor-grabbing`,N.value?`h-6 w-6`:`h-7 w-7`]),onClick:n[6]||=s(()=>{},[`stop`])},[t(g(Ae),{class:y(N.value?`h-3.5 w-3.5`:`h-4 w-4`)},null,8,[`class`])],2)]),_:1}),t(g(A),{side:`top`},{default:b(()=>[p(c(g(D)(`ht.dragSort`)),1)]),_:1})]),_:1}),t(g(w),null,{default:b(()=>[t(g(T),{"as-child":``},{default:b(()=>[t(g(O),{variant:`ghost`,size:`icon`,class:y(N.value?`h-6 w-6`:`h-7 w-7`),onClick:s(t=>Mr(e),[`stop`])},{default:b(()=>[t(g(De),{class:y(N.value?`h-3.5 w-3.5`:`h-4 w-4`)},null,8,[`class`])]),_:1},8,[`class`,`onClick`])]),_:2},1024),t(g(A),{side:`top`},{default:b(()=>[p(c(g(D)(`ht.edit`)),1)]),_:1})]),_:2},1024),t(g(w),null,{default:b(()=>[t(g(T),{"as-child":``},{default:b(()=>[t(g(O),{variant:`ghost`,size:`icon`,class:y([N.value?`h-6 w-6`:`h-7 w-7`,`text-destructive`]),onClick:s(t=>Jn(e.id),[`stop`])},{default:b(()=>[t(g(Ee),{class:y(N.value?`h-3.5 w-3.5`:`h-4 w-4`)},null,8,[`class`])]),_:1},8,[`class`,`onClick`])]),_:2},1024),t(g(A),{side:`top`},{default:b(()=>[p(c(g(D)(`ht.remove`)),1)]),_:1})]),_:2},1024)],2))]),_:2},1032,[`class`]),N.value?l(``,!0):(r(),d(`div`,Bt,[m(`div`,Vt,c(g(D)(`ht.idLabel`,{id:e.id})),1),m(`div`,null,c(g(D)(`ht.contractBudgetLine`,{amount:$n(W.value[e.id])})),1),m(`div`,null,c(g(D)(`ht.createdAt`,{time:g(st)(e.createdAt)})),1)]))]),_:2},1032,[`class`,`style`,`onClick`])]),_:1},8,[`modelValue`,`disabled`,`class`])):!Hn.value&&Vn.value.length===0?(r(),d(`div`,Ht,[m(`div`,Ut,c(g(D)(`ht.emptyTitle`)),1),m(`div`,Wt,c(g(D)(`ht.emptyDesc`)),1)])):(r(),d(`div`,{key:`contracts-search-${N.value?`list`:`grid`}`,class:y([`grid grid-cols-1 pb-4 pr-4 pt-3`,N.value?`gap-2`:`gap-4`,!N.value&&`md:grid-cols-2 lg:grid-cols-3`])},[(r(!0),d(f,null,ee(Vn.value,(e,i)=>(r(),ie(g(rt),{key:e.id,class:y([`group relative cursor-pointer snap-start snap-always transition-colors hover:border-primary ht-contract-card`,J.value?`ht-contract-card--selecting`:H.value===`enter`&&!V.value?`ht-contract-card--enter`:`ht-contract-card--ready`,sr(e.id)&&`ht-contract-card--selected`,N.value&&`gap-0 py-0`]),style:a(Cr(i)),onClick:t=>Ur(e)},{default:b(()=>[J.value?(r(),d(`label`,{key:0,class:`absolute left-2 top-2 z-10 inline-flex cursor-pointer items-center rounded bg-background/90 p-0.5 shadow-sm`,onClick:n[8]||=s(()=>{},[`stop`])},[m(`input`,{type:`checkbox`,class:`h-4 w-4 cursor-pointer`,checked:sr(e.id),onChange:s(t=>cr(e.id),[`stop`])},null,40,Gt)])):l(``,!0),t(g(it),{class:y([`flex flex-row items-center justify-between gap-0 space-y-0`,N.value?`px-3 py-2`:`pb-2`])},{default:b(()=>[t(g(at),{class:y([`text-sm font-medium`,N.value&&`mr-1.5 flex min-w-0 flex-1 items-center gap-1.5`])},{default:b(()=>[m(`span`,{class:y(N.value?`min-w-0 truncate`:``)},c(e.name),3),N.value?(r(),d(f,{key:0},[m(`span`,Kt,` ID: `+c(e.id),1),m(`span`,qt,c(g(D)(`ht.contractBudget`,{amount:$n(W.value[e.id])})),1),m(`span`,Jt,c(g(D)(`ht.createdAt`,{time:g(st)(e.createdAt)})),1)],64)):l(``,!0)]),_:2},1032,[`class`]),J.value?l(``,!0):(r(),d(`div`,{key:0,class:y([`flex shrink-0 opacity-0 transition-opacity group-hover:opacity-100`,N.value?`gap-0.5`:`gap-1`])},[t(g(w),null,{default:b(()=>[t(g(T),{"as-child":``},{default:b(()=>[m(`span`,{class:y([`inline-flex items-center justify-center rounded-md text-muted-foreground`,N.value?`h-6 w-6`:`h-7 w-7`])},[t(g(Ae),{class:y(N.value?`h-3.5 w-3.5`:`h-4 w-4`)},null,8,[`class`])],2)]),_:1}),t(g(A),{side:`top`},{default:b(()=>[p(c(g(D)(`ht.dragSortSearchOff`)),1)]),_:1})]),_:1}),t(g(w),null,{default:b(()=>[t(g(T),{"as-child":``},{default:b(()=>[t(g(O),{variant:`ghost`,size:`icon`,class:y(N.value?`h-6 w-6`:`h-7 w-7`),onClick:s(t=>Mr(e),[`stop`])},{default:b(()=>[t(g(De),{class:y(N.value?`h-3.5 w-3.5`:`h-4 w-4`)},null,8,[`class`])]),_:1},8,[`class`,`onClick`])]),_:2},1024),t(g(A),{side:`top`},{default:b(()=>[p(c(g(D)(`ht.edit`)),1)]),_:1})]),_:2},1024),t(g(w),null,{default:b(()=>[t(g(T),{"as-child":``},{default:b(()=>[t(g(O),{variant:`ghost`,size:`icon`,class:y([N.value?`h-6 w-6`:`h-7 w-7`,`text-destructive`]),onClick:s(t=>Jn(e.id),[`stop`])},{default:b(()=>[t(g(Ee),{class:y(N.value?`h-3.5 w-3.5`:`h-4 w-4`)},null,8,[`class`])]),_:1},8,[`class`,`onClick`])]),_:2},1024),t(g(A),{side:`top`},{default:b(()=>[p(c(g(D)(`ht.remove`)),1)]),_:1})]),_:2},1024)],2))]),_:2},1032,[`class`]),N.value?l(``,!0):(r(),d(`div`,Yt,[m(`div`,Xt,c(g(D)(`ht.idLabel`,{id:e.id})),1),m(`div`,null,c(g(D)(`ht.contractBudgetLine`,{amount:$n(W.value[e.id])})),1),m(`div`,null,c(g(D)(`ht.createdAt`,{time:g(st)(e.createdAt)})),1)]))]),_:2},1032,[`class`,`style`,`onClick`]))),128)),Vn.value.length===0?(r(),d(`div`,Zt,c(g(D)(`ht.notFound`)),1)):l(``,!0)],2))]),_:1},8,[`class`])],512),t(g(w),null,{default:b(()=>[t(g(T),{"as-child":``},{default:b(()=>[m(`button`,{type:`button`,"aria-label":g(D)(`ht.backToTop`),class:y([`fixed bottom-8 right-8 z-40 inline-flex h-11 w-11 cursor-pointer items-center justify-center rounded-full border border-black/15 bg-white text-black shadow-[0_10px_24px_rgba(0,0,0,0.16)] transition-all duration-300 hover:scale-105 hover:border-black/30 hover:bg-black hover:text-white`,Mn.value?`translate-y-0 opacity-100`:`pointer-events-none translate-y-3 opacity-0`]),onClick:n[9]||=e=>hr()},[t(g(he),{class:`h-5 w-5`})],10,Qt)]),_:1}),t(g(A),{side:`left`},{default:b(()=>[p(c(g(D)(`ht.backToTop`)),1)]),_:1})]),_:1}),_n.value?(r(),d(`div`,$t,[m(`div`,{class:`w-full max-w-md rounded-lg border bg-background shadow-xl`,style:a({transform:`translate(${B.value.x}px, ${B.value.y}px)`})},[m(`div`,{class:`flex items-center justify-between border-b px-5 py-4 cursor-move select-none`,onMousedown:s(Kr,[`prevent`])},[m(`h4`,en,c(R.value?g(D)(`ht.editContract`):g(D)(`ht.createContract`)),1),t(g(O),{variant:`ghost`,size:`icon`,class:`h-8 w-8`,onClick:Nr},{default:b(()=>[t(g(ke),{class:`h-4 w-4`})]),_:1})],32),m(`div`,tn,[m(`label`,nn,c(g(D)(`ht.contractName`)),1),oe(m(`input`,{"onUpdate:modelValue":n[10]||=e=>L.value=e,type:`text`,placeholder:g(D)(`ht.contractNamePlaceholder`),class:`h-10 w-full rounded-md border bg-background px-3 text-sm outline-none transition focus-visible:ring-2 focus-visible:ring-ring`,onKeydown:re(Pr,[`enter`])},null,40,rn),[[i,L.value]])]),m(`div`,an,[t(g(O),{variant:`outline`,onClick:Nr},{default:b(()=>[p(c(g(D)(`common.cancel`)),1)]),_:1}),t(g(O),{disabled:!L.value.trim(),onClick:Pr},{default:b(()=>[p(c(R.value?g(D)(`ht.save`):g(D)(`ht.ok`)),1)]),_:1},8,[`disabled`])])],4)])):l(``,!0)]),t(g(je),{open:xn.value,"onUpdate:open":qn},{default:b(()=>[t(g(ge),null,{default:b(()=>[t(g(ve),{class:`fixed inset-0 z-50 bg-black/45`}),t(g(be),{class:`fixed left-1/2 top-1/2 z-[70] w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:b(()=>[t(g(we),{class:`text-base font-semibold`},{default:b(()=>[p(c(g(D)(`ht.deleteSingleTitle`)),1)]),_:1}),t(g(Oe),{class:`mt-2 text-sm text-muted-foreground`},{default:b(()=>[p(c(g(D)(`ht.deleteSingleDesc`,{name:Gn.value})),1)]),_:1}),m(`div`,on,[t(g(Te),{"as-child":``},{default:b(()=>[t(g(O),{variant:`outline`,onClick:n[11]||=e=>z.value=null},{default:b(()=>[p(c(g(D)(`common.cancel`)),1)]),_:1})]),_:1}),t(g(ye),{"as-child":``},{default:b(()=>[t(g(O),{variant:`destructive`,onClick:Yn},{default:b(()=>[p(c(g(D)(`common.confirm`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`]),t(g(je),{open:Tn.value,"onUpdate:open":n[12]||=e=>Tn.value=e},{default:b(()=>[t(g(ge),null,{default:b(()=>[t(g(ve),{class:`fixed inset-0 z-50 bg-black/45`}),t(g(be),{class:`fixed left-1/2 top-1/2 z-[70] w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:b(()=>[t(g(we),{class:`text-base font-semibold`},{default:b(()=>[p(c(g(D)(`ht.deleteBatchTitle`)),1)]),_:1}),t(g(Oe),{class:`mt-2 text-sm text-muted-foreground`},{default:b(()=>[p(c(g(D)(`ht.deleteBatchDesc`,{count:Kn.value})),1)]),_:1}),m(`div`,sn,[t(g(Te),{"as-child":``},{default:b(()=>[t(g(O),{variant:`outline`},{default:b(()=>[p(c(g(D)(`common.cancel`)),1)]),_:1})]),_:1}),t(g(ye),{"as-child":``},{default:b(()=>[t(g(O),{variant:`destructive`,onClick:Lr},{default:b(()=>[p(c(g(D)(`common.confirm`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`]),t(g(je),{open:Sn.value,"onUpdate:open":n[14]||=e=>Sn.value=e},{default:b(()=>[t(g(ge),null,{default:b(()=>[t(g(ve),{class:`fixed inset-0 z-50 bg-black/45`}),t(g(be),{class:`fixed left-1/2 top-1/2 z-[70] w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:b(()=>[t(g(we),{class:`text-base font-semibold`},{default:b(()=>[p(c(Cn.value),1)]),_:1}),t(g(Oe),{class:`mt-2 text-sm text-muted-foreground`},{default:b(()=>[p(c(wn.value),1)]),_:1}),m(`div`,cn,[t(g(ye),{"as-child":``},{default:b(()=>[t(g(O),{onClick:n[13]||=e=>Sn.value=!1},{default:b(()=>[p(c(g(D)(`tab.dialog.iKnow`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`]),t(g(Ce),{open:vn.value,"onUpdate:open":n[16]||=e=>vn.value=e,duration:1800,class:`group pointer-events-auto flex items-center gap-3 rounded-xl border border-border bg-card px-4 py-3 text-foreground shadow-lg`},{default:b(()=>[m(`div`,ln,[t(g(pe),{class:`text-sm font-semibold text-foreground`},{default:b(()=>[p(c(yn.value),1)]),_:1}),t(g(ue),{class:`text-xs text-muted-foreground`},{default:b(()=>[p(c(bn.value),1)]),_:1})]),t(g(Se),{"alt-text":g(D)(`tab.dialog.iKnow`),class:`ml-auto cursor-pointer inline-flex h-7 items-center rounded-md border border-border bg-muted px-2 text-xs text-foreground hover:bg-muted/80`,onClick:n[15]||=e=>vn.value=!1},{default:b(()=>[p(c(g(D)(`tab.dialog.iKnow`)),1)]),_:1},8,[`alt-text`])]),_:1},8,[`open`]),t(g(de),{class:`fixed bottom-5 right-5 z-[85] flex w-[380px] max-w-[92vw] flex-col gap-2 outline-none`})]),_:1})]),_:1}))}}),[[`__scopeId`,`data-v-01c49185`]]);export{j as default}; \ No newline at end of file diff --git a/33/static/js/HtAdditionalWorkFee-D3Q2A_Au.js b/33/static/js/HtAdditionalWorkFee-D3Q2A_Au.js new file mode 100644 index 0000000..5550151 --- /dev/null +++ b/33/static/js/HtAdditionalWorkFee-D3Q2A_Au.js @@ -0,0 +1 @@ +import{Bt as e,H as t,W as n,er as r,tt as i}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as a}from"./workspace-DxKKyh8w.js";import"./decimal-D3bp1pbs.js";import"./vendor-ui-B4V4Cf1T.js";import"./numberFormat-jhZZmX17.js";import{r as o}from"./sql-C69Jo4HU.js";import"./agGridReadonlyAutoHeight-BpRhYCq1.js";import{t as s}from"./HtFeeMethodGrid-BpYIiL-T.js";var c=i({__name:`HtAdditionalWorkFee`,props:{contractId:{},contractName:{}},setup(i){let c=i,{t:l,locale:u}=a(),d=t(()=>`htExtraFee-${c.contractId}-additional-work`),f=t(()=>o(u.value).map(e=>({id:e?.id,name:e?.name})));return(t,i)=>(e(),n(s,{title:r(l)(`htFee.additionalTitle`),storageKey:d.value,"contract-id":c.contractId,"contract-name":c.contractName,"fixed-names":f.value},null,8,[`title`,`storageKey`,`contract-id`,`contract-name`,`fixed-names`]))}});export{c as default}; \ No newline at end of file diff --git a/33/static/js/HtBaseInfo-BIDe7GmZ.js b/33/static/js/HtBaseInfo-BIDe7GmZ.js new file mode 100644 index 0000000..936a9a4 --- /dev/null +++ b/33/static/js/HtBaseInfo-BIDe7GmZ.js @@ -0,0 +1 @@ +import{At as e,Bt as t,C as n,Er as r,K as i,Pt as a,U as o,Wn as s,er as c,mn as l,tt as u,xn as d}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as f}from"./workspace-DxKKyh8w.js";import"./decimal-D3bp1pbs.js";import{C as p,n as m}from"./index-CAPJG_im.js";var h={class:`h-full min-h-0 flex flex-col`},g={class:`rounded-lg border bg-card p-5`},_={class:`mb-4 border-b pb-3`},v={class:`text-sm font-semibold text-foreground`},y={class:`grid grid-cols-1 gap-5`},b={class:`space-y-1.5`},x={class:`text-xs font-medium text-muted-foreground`},S=[`placeholder`],C={class:`space-y-1.5`},w={class:`text-xs font-medium text-muted-foreground`},T=[`placeholder`],E=``,D=u({__name:`HtBaseInfo`,props:{contractId:{}},setup(u){let{t:D}=f(),O=D(`htBaseInfo.defaultQuality`),k=u,A=p(),j=()=>`ht-base-info-${k.contractId}`,M=s(O),N=s(``),P=s(``),F=async(e=!1)=>{let t={quality:M.value,duration:N.value},n=JSON.stringify(t);if(!e&&n===P.value)return;A.setKeyState(j(),t);let r=[];t.id=k.contractId,r.push(t);let i=r.map(e=>({...e,type:`${k.contractId}-Htbaseinfo`}));await m().upsertBatch(i),P.value=n},I=async()=>{let e=await A.loadKeyState(j()),t=!!(e&&(Object.prototype.hasOwnProperty.call(e,`quality`)||Object.prototype.hasOwnProperty.call(e,`duration`)));M.value=typeof e?.quality==`string`&&e.quality?e.quality:O,N.value=typeof e?.duration==`string`?e.duration:t?``:E,P.value=JSON.stringify({quality:M.value,duration:N.value}),t||F(!0)};return l([M,N],()=>{F()}),a(()=>{I()}),e(()=>{F(!0)}),(e,a)=>(t(),i(`div`,h,[o(`div`,g,[o(`div`,_,[o(`h3`,v,r(c(D)(`htBaseInfo.title`)),1)]),o(`div`,y,[o(`label`,b,[o(`div`,x,r(c(D)(`htBaseInfo.qualityLabel`)),1),d(o(`textarea`,{"onUpdate:modelValue":a[0]||=e=>M.value=e,rows:`5`,placeholder:c(D)(`htBaseInfo.qualityPlaceholder`),class:`w-full rounded-md border bg-background px-3 py-2 text-sm text-foreground outline-none focus:ring-2 focus:ring-primary/30 resize-none`},null,8,S),[[n,M.value]])]),o(`label`,C,[o(`div`,w,r(c(D)(`htBaseInfo.durationLabel`)),1),d(o(`textarea`,{"onUpdate:modelValue":a[1]||=e=>N.value=e,rows:`5`,placeholder:c(D)(`htBaseInfo.durationPlaceholder`),class:`w-full rounded-md border bg-background px-3 py-2 text-sm text-foreground outline-none focus:ring-2 focus:ring-primary/30 resize-none`},null,8,T),[[n,N.value]])])])])]))}});export{D as default}; \ No newline at end of file diff --git a/33/static/js/HtConsultCategoryFactor-BL-_RuEP.js b/33/static/js/HtConsultCategoryFactor-BL-_RuEP.js new file mode 100644 index 0000000..1589c60 --- /dev/null +++ b/33/static/js/HtConsultCategoryFactor-BL-_RuEP.js @@ -0,0 +1 @@ +import{Bt as e,H as t,Ot as n,Pt as r,W as i,Wn as a,er as o,tt as s}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as c}from"./workspace-DxKKyh8w.js";import{d as l}from"./decimal-D3bp1pbs.js";import"./numberFormat-jhZZmX17.js";import{m as u,o as d,v as f}from"./sql-C69Jo4HU.js";import"./agGridReadonlyAutoHeight-BpRhYCq1.js";import"./pricingScaleDetail-CuzzWQVd.js";import"./pricingMethodTotals-DHJf6v89.js";import"./pricingScaleLink-BNsm4Fxd.js";import"./xmFactorDefaults-yPGPQ25R.js";import"./zxFwPricingSync-PWsfNukj.js";import{t as p}from"./XmFactorGrid-DLfcqkt0.js";var m=s({__name:`HtConsultCategoryFactor`,props:{contractId:{},projectInfoKey:{},parentStorageKey:{}},setup(s){let m=s,h=t(()=>m.projectInfoKey||`xm-base-info-v1`),g=a(``),_=l(),{t:v}=c(),y=async()=>{try{let e=await _.getItem(h.value);g.value=typeof e?.projectIndustry==`string`?e.projectIndustry.trim():``}catch(e){console.error(`loadProjectIndustry failed:`,e),g.value=``}},b=t(()=>{let e=g.value;if(!e)return{};let t=u().filter(({item:t})=>f(t,d(e))).map(({id:e,item:t})=>[e,t]);return Object.fromEntries(t)});return r(()=>{y()}),n(()=>{y()}),(t,n)=>(e(),i(p,{title:o(v)(`htFactors.consultCategoryTitle`),"storage-key":`ht-consult-category-factor-v1-${m.contractId}`,"parent-storage-key":m.parentStorageKey||`xm-consult-category-factor-v1`,dict:b.value,"disable-budget-edit-when-standard-null":!0,"exclude-notshow-by-zxflxs":!0,"init-budget-value-from-standard":!0},null,8,[`title`,`storage-key`,`parent-storage-key`,`dict`]))}});export{m as default}; \ No newline at end of file diff --git a/33/static/js/HtContractSummary-DUViaUv0.js b/33/static/js/HtContractSummary-DUViaUv0.js new file mode 100644 index 0000000..30789f6 --- /dev/null +++ b/33/static/js/HtContractSummary-DUViaUv0.js @@ -0,0 +1,2 @@ +import{$ as e,At as t,Bt as n,Dt as r,Er as i,H as a,K as o,Ot as s,Pt as c,U as l,Wn as u,er as d,ft as f,mn as p,qn as m,tt as h}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as g}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as _}from"./workspace-DxKKyh8w.js";import{i as v,l as y}from"./decimal-D3bp1pbs.js";import{n as b,t as x}from"./numberFormat-jhZZmX17.js";import{t as S,x as C}from"./sql-C69Jo4HU.js";import{t as w}from"./_plugin-vue_export-helper-DUFB50Ey.js";import{C as T}from"./index-CAPJG_im.js";import{t as E}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as D,o as O,t as k}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";var ee={class:`flex flex-col gap-3`},te={class:`rounded-lg border bg-card xmMx flex flex-col overflow-hidden`},ne={class:`flex items-center justify-between border-b px-3 py-2`},A={class:`text-xs font-semibold text-foreground leading-none`},j={class:`ag-theme-quartz w-full`},M={class:`rounded-lg border bg-card p-3 space-y-2`},N={class:`text-xs font-semibold text-foreground`},P=[`value`,`placeholder`],F=w(h({__name:`HtContractSummary`,props:{contractId:{}},setup(w){let F=w,{t:I}=_(),L=T(),R=m(null),z=u([]),B=u(``),V=null,H=e=>{let t=e.filter(e=>y(e)!=null);return t.length===0?null:v(t.reduce((e,t)=>e+t,0),3)},U=e=>{let t=Array.isArray(e?.detailRows)?e.detailRows:[];if(t.length===0)return null;let n=0,r=!1;for(let e of t){let t=y(e?.serviceBudget);if(t!=null){n+=t,r=!0;continue}let i=y(e?.adoptedBudgetUnitPrice),a=y(e?.personnelCount),o=y(e?.workdayCount);i==null||a==null||o==null||(n+=i*a*o,r=!0)}return r?v(n,3):null},W=e=>{let t=Array.isArray(e?.detailRows)?e.detailRows:[];if(t.length===0)return null;let n=0,r=!1;for(let e of t){if(String(e?.id||``)===`fee-subtotal-fixed`)continue;let t=y(e?.budgetFee);if(t!=null){n+=t,r=!0;continue}let i=y(e?.quantity),a=y(e?.unitPrice);i==null||a==null||(n+=i*a,r=!0)}return r?v(n,3):null},G=async(e,t)=>{let[n,r,i]=await Promise.all([L.loadHtFeeMethodState(e,t,`rate-fee`),L.loadHtFeeMethodState(e,t,`hourly-fee`),L.loadHtFeeMethodState(e,t,`quantity-unit-price-fee`)]),a=y(n?.budgetFee),o=y(n?.rate),s=U(r),c=W(i);return{subtotal:H([a,s,c]),m0:a==null?null:{coe:o==null?`--`:String(o),fee:v(a,2)},m4:s==null?null:{fee:v(s,2)},m5:c==null?null:{fee:v(c,2)}}},K=async(e,t)=>{let n=`htExtraFee-${F.contractId}-${e===`additional`?`additional-work`:`reserve`}`;await L.loadHtFeeMainState(n);let r=await Promise.all(t.map(async t=>{let r=await G(n,String(t.id)),i=[];r.m0&&i.push(I(`htSummary.explainByRate`,{rate:r.m0.coe,fee:r.m0.fee})),r.m4&&i.push(I(`htSummary.explainByHourly`,{fee:r.m4.fee})),r.m5&&i.push(I(`htSummary.explainByQuantity`,{fee:r.m5.fee}));let a=I(e===`additional`?`htSummary.additionalPrefix`:`htSummary.reservePrefix`),o=i.length>0?`${a}-${t.name}:${i.join(`;`)}`:``;return{row:{id:`${e}-${t.id}`,rowType:e,code:t.code,name:t.name,investScale:null,landScale:null,workload:null,hourly:null,subtotal:r.subtotal,finalFee:r.subtotal},explainLine:o}}));return{rows:r.map(e=>e.row).filter(e=>e.subtotal!=null),explainLines:r.filter(e=>e.row.subtotal!=null&&e.explainLine).map(e=>e.explainLine)}},q=()=>{let e=L.getContractState(F.contractId),t=new Set((e?.selectedIds||[]).map(e=>String(e)));return(Array.isArray(e?.detailRows)?e.detailRows:[]).filter(e=>String(e.id)!==`fixed-budget-c`&&t.has(String(e.id))).map(e=>({id:`service-${e.id}`,rowType:`service`,code:e.code||``,name:e.name||``,investScale:y(e.investScale),landScale:y(e.landScale),workload:y(e.workload),hourly:y(e.hourly),subtotal:y(e.subtotal),finalFee:y(e.finalFee)??y(e.subtotal)}))},J=async()=>{await L.loadContract(F.contractId);let[e,t]=await Promise.all([K(`additional`,S.map(e=>({id:e.id,name:e.name,code:e.code}))),K(`reserve`,C.map(e=>({id:e.id,name:e.name,code:e.code})))]);z.value=[...q(),...e.rows,...t.rows],B.value=[...e.explainLines,...t.explainLines].join(` +`)},Y=()=>{V&&clearTimeout(V),V=setTimeout(()=>{J()},80)},X=a(()=>{let e=`htExtraFee-${F.contractId}-additional-work`,t=`htExtraFee-${F.contractId}-reserve`;return JSON.stringify({contract:L.contracts[F.contractId]||null,addMain:L.htFeeMainStates[e]||null,reserveMain:L.htFeeMainStates[t]||null,addMethods:L.htFeeMethodStates[e]||null,reserveMethods:L.htFeeMethodStates[t]||null})}),re=a(()=>{let e=e=>H(z.value.map(e));return{id:`summary-total-row`,rowType:`total`,code:``,name:I(`htSummary.total`),investScale:e(e=>e.investScale),landScale:e(e=>e.landScale),workload:e(e=>e.workload),hourly:e(e=>e.hourly),subtotal:null,finalFee:e(e=>e.finalFee)}}),ie=h({name:`RichCodeRenderer`,props:{params:{type:Object,required:!0}},setup(e){return()=>{if(e.params.data?.rowType===`total`)return f(`span`,e.params.data.name||I(`htSummary.total`));let t=e.params.value;return!t||typeof t==`string`?f(`span`,t||``):f(`span`,{class:`inline-flex items-baseline gap-[1px]`},(Array.isArray(t.richText)?t.richText:[]).map((e,t)=>f(`span`,{key:`${t}-${e.text||``}`,style:{fontStyle:e?.font?.italic?`italic`:`normal`,verticalAlign:e?.font?.vertAlign===`subscript`?`sub`:e?.font?.vertAlign===`superscript`?`super`:`baseline`,fontSize:e?.font?.vertAlign?`0.85em`:`1em`}},e?.text||``)))}}}),ae=[{headerName:I(`htSummary.columns.code`),field:`code`,minWidth:90,maxWidth:140,colSpan:e=>e.data?.rowType===`total`?2:1,valueFormatter:e=>e.data?.rowType===`total`?e.data.name||I(`htSummary.total`):typeof e.value==`string`?e.value:``,cellRenderer:ie},{headerName:I(`htSummary.columns.name`),field:`name`,minWidth:220,flex:2,wrapText:!0,autoHeight:!0,cellStyle:{"line-height":1.6}},{headerName:I(`htSummary.columns.investScale`),field:`investScale`,minWidth:120,flex:1.2,headerClass:`ag-right-aligned-header`,cellClassRules:{"ag-right-aligned-cell":()=>!0},colSpan:e=>e.data&&(e.data.rowType===`total`||e.data.rowType===`additional`||e.data.rowType===`reserve`)?5:1,valueFormatter:e=>e.data?.rowType===`total`||e.value==null?``:b(e.value,3)},{headerName:I(`htSummary.columns.landScale`),field:`landScale`,minWidth:120,flex:1.2,headerClass:`ag-right-aligned-header`,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueFormatter:e=>e.data?.rowType===`total`||e.value==null?``:b(e.value,3)},{headerName:I(`htSummary.columns.workload`),field:`workload`,minWidth:110,flex:1.2,headerClass:`ag-right-aligned-header`,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueFormatter:e=>e.data?.rowType===`total`||e.value==null?``:b(e.value,3)},{headerName:I(`htSummary.columns.hourly`),field:`hourly`,minWidth:110,flex:1.2,headerClass:`ag-right-aligned-header`,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueFormatter:e=>e.data?.rowType===`total`||e.value==null?``:b(e.value,3)},{headerName:I(`htSummary.columns.subtotal`),field:`subtotal`,minWidth:120,flex:1.2,headerClass:`ag-right-aligned-header`,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueFormatter:e=>e.value==null?``:x(e.value,2)},{headerName:I(`htSummary.columns.finalFee`),field:`finalFee`,minWidth:120,flex:1.2,headerClass:`ag-right-aligned-header`,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueFormatter:e=>e.value==null?``:x(e.value,2)}],oe=a(()=>k(ae)),se={...D,treeData:!1,getDataPath:void 0,domLayout:`autoHeight`,suppressNoRowsOverlay:!0,rowSelection:{mode:`singleRow`,checkboxes:!1,enableClickSelection:!1},getRowId:e=>e.data.id,getRowClass:e=>e.data?.rowType===`additional`||e.data?.rowType===`reserve`?`ht-summary-fee-row`:``},ce=e=>{R.value=e.api,Q()},Z=e=>!!(e&&!e.isDestroyed?.()),Q=async()=>{await r();let e=R.value;Z(e)&&(e.onRowHeightChanged(),e.refreshCells({force:!0}))},le=e=>{Q()},$=e=>{Q()};return p(X,(e,t)=>{e!==t&&Y()}),p(()=>z.value.length,()=>{Q()}),c(()=>{J()}),s(()=>{J()}),t(()=>{Z(R.value)&&R.value.stopEditing(),R.value=null}),(t,r)=>(n(),o(`div`,ee,[l(`div`,te,[l(`div`,ne,[l(`h3`,A,i(d(I)(`htSummary.title`)),1)]),l(`div`,j,[e(d(g),{style:{width:`100%`},rowData:z.value,pinnedBottomRowData:[re.value],columnDefs:oe.value,gridOptions:se,theme:d(O),animateRows:!0,localeText:d(E),onGridReady:ce,onFirstDataRendered:le,onRowDataUpdated:$},null,8,[`rowData`,`pinnedBottomRowData`,`columnDefs`,`theme`,`localeText`])])]),l(`form`,M,[l(`div`,N,i(d(I)(`htSummary.remark`)),1),l(`textarea`,{value:B.value,rows:`3`,placeholder:d(I)(`htSummary.placeholder`),readonly:``,class:`w-full rounded-md border bg-muted/40 px-3 py-2 text-sm text-foreground outline-none`},null,8,P)])]))}}),[[`__scopeId`,`data-v-174cd11a`]]);export{F as default}; \ No newline at end of file diff --git a/33/static/js/HtFeeMethodGrid-BpYIiL-T.js b/33/static/js/HtFeeMethodGrid-BpYIiL-T.js new file mode 100644 index 0000000..0a903c0 --- /dev/null +++ b/33/static/js/HtFeeMethodGrid-BpYIiL-T.js @@ -0,0 +1 @@ +import{$ as e,At as t,Bt as n,Cr as r,Dt as i,Er as a,G as o,H as s,K as c,M as l,Ot as ee,Pt as te,Q as u,U as d,W as ne,Wn as f,er as p,ft as m,mn as h,tt as g,xr as re,yn as _}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as ie}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import{D as ae}from"./workspace-DxKKyh8w.js";import{c as v,i as y,o as b,u as oe}from"./decimal-D3bp1pbs.js";import{a as se,d as ce,dt as le,ft as ue,gt as de,ht as fe,lt as pe,mt as me,pt as he,ut as ge}from"./vendor-ui-B4V4Cf1T.js";import{n as _e,r as ve}from"./numberFormat-jhZZmX17.js";import{A as ye,C as be,k as x}from"./index-CAPJG_im.js";import{t as xe}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as Se,i as Ce,o as we,r as Te,t as Ee}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";var De={class:`h-full min-h-0 flex flex-col`},Oe={class:`rounded-lg border bg-card xmMx flex min-h-0 flex-1 flex-col`},ke={class:`flex items-center justify-between border-b px-4 py-3`},Ae={class:`text-sm font-semibold text-foreground`},je={class:`mt-4 flex items-center justify-end gap-2`},S=`fee-method-summary`,C=g({__name:`HtFeeMethodGrid`,props:{title:{},storageKey:{},contractId:{},contractName:{},fixedNames:{}},setup(C){let w=C,{t:T}=ae(),E=ye(),D=be(),O=()=>`fee-method-${Date.now()}-${Math.random().toString(16).slice(2,8)}`,k=(e=``)=>({id:O(),name:e,rateFee:null,hourlyFee:null,quantityUnitPriceFee:null}),A=e=>e?.id===S,j=e=>String(e||``).includes(`-reserve`),M=(e,t)=>{let n=b(e.map(e=>t(e)));return n==null?null:y(n,3)},N=e=>{if(!e)return null;let t=b([e.rateFee,e.hourlyFee,e.quantityUnitPriceFee]);return t==null?null:y(t,3)},Me=e=>!Array.isArray(e)||e.length===0?null:M(e,e=>N(e)),Ne=async e=>{try{let t=`htExtraFee-${e}-additional-work`;return Me((await D.loadHtFeeMainState(t))?.detailRows)}catch(e){return console.error(`loadAdditionalWorkFeeTotal failed:`,e),null}},Pe=async()=>{let e=String(w.contractId||``).trim();if(!e)return null;try{await D.loadContract(e);let t=D.getBaseSubtotal(e);if(!j(w.storageKey))return t==null?null:y(t,3);let n=await Ne(e);return t!=null||n!=null?y(oe(t)+oe(n),3):null}catch(e){return console.error(`loadContractServiceFeeBase failed:`,e),null}},Fe=e=>{let t=e?.detailRows?e?.detailRows?.filter(e=>e.serviceBudget!==null):[];if(t.length===0)return null;let n=0,r=!1;for(let e of t){let t=v(e?.serviceBudget);if(t!=null){n+=t,r=!0;continue}let i=v(e?.adoptedBudgetUnitPrice),a=v(e?.personnelCount),o=v(e?.workdayCount);i==null||a==null||o==null||(n+=i*a*o,r=!0)}return r?y(n,3):null},Ie=e=>{let t=e?.detailRows?e?.detailRows?.filter(e=>e.budgetFee!==null):[];if(t.length===0)return null;let n=0,r=!1;for(let e of t){if(String(e?.id||``)===`fee-subtotal-fixed`)continue;let t=v(e?.budgetFee);if(t!=null){n+=t,r=!0;continue}let i=v(e?.quantity),a=v(e?.unitPrice);i==null||a==null||(n+=i*a,r=!0)}return r?y(n,3):null},P=async e=>{if(!Array.isArray(e)||e.length===0)return e;let t=await Pe();return await Promise.all(e.map(async e=>{if(!e?.id)return e;let[n,r,i]=await Promise.all([D.loadHtFeeMethodState(w.storageKey,e.id,`rate-fee`),D.loadHtFeeMethodState(w.storageKey,e.id,`hourly-fee`),D.loadHtFeeMethodState(w.storageKey,e.id,`quantity-unit-price-fee`)]),a=v(n?.budgetFee),o=v(n?.rate),s=t!=null&&o!=null?y(t*o/100,2):a==null?null:y(a,2),c=Fe(r),l=Ie(i);return{...e,rateFee:s,hourlyFee:c,quantityUnitPriceFee:l}}))},F=s(()=>Array.isArray(w.fixedNames)?w.fixedNames.map(e=>({name:e.name,id:e.id})):[]),I=s(()=>F.value.length>0),Le=s(()=>JSON.stringify(F.value.map(e=>({id:String(e?.id||``),name:String(e?.name||``)})))),L=s({get:()=>{let e=D.getHtFeeMainState(w.storageKey)?.detailRows;return Array.isArray(e)?e:[]},set:e=>{D.setHtFeeMainState(w.storageKey,{detailRows:e})}}),Re=s(()=>{let e=M(L.value,e=>e.rateFee),t=M(L.value,e=>e.hourlyFee),n=M(L.value,e=>e.quantityUnitPriceFee),r={id:S,name:T(`htFeeGrid.subtotal`),rateFee:e,hourlyFee:t,quantityUnitPriceFee:n};return r.subtotal=N(r),r}),ze=s(()=>[...L.value,Re.value]),R=f(null),z=f(!1),B=f(null),V=f(``),Be=f(``),H=(e,t)=>{B.value=e,V.value=String(t||``).trim()||T(`htFeeGrid.currentRow`),z.value=!0},Ve=e=>{z.value=e},He=async()=>{let e=B.value;e&&(await q(e),z.value=!1,B.value=null,V.value=``)},Ue=e=>e.value==null||e.value===``?(A(e.data),``):String(e.value),U=e=>e.value==null||e.value===``?(A(e.data),``):_e(e.value,3),W=e=>ve(e,{precision:3}),We=e=>typeof e.budgetFee==`number`&&Number.isFinite(e.budgetFee)?e.budgetFee:typeof e.quantity==`number`&&Number.isFinite(e.quantity)&&typeof e.unitPrice==`number`&&Number.isFinite(e.unitPrice)?y(e.quantity*e.unitPrice,2):null,G=e=>{let t=(Array.isArray(e)?e:[]).filter(e=>e?.id!==S).map(e=>{let t=e;return{id:typeof t.id==`string`&&t.id?t.id:O(),name:typeof t.name==`string`?t.name:typeof t.feeItem==`string`?t.feeItem:``,rateFee:typeof t.rateFee==`number`?t.rateFee:null,hourlyFee:typeof t.hourlyFee==`number`?t.hourlyFee:null,quantityUnitPriceFee:typeof t.quantityUnitPriceFee==`number`?t.quantityUnitPriceFee:We(t)}});if(I.value){let e=new Map(t.map(e=>[String(e.id||``),e])),n=new Map(t.map(e=>[e.name,e]));return F.value.map((t,r)=>{let i=String(t?.id||`fee-method-fixed-${r}`),a=e.get(i)||n.get(t.name);return{id:i,name:t.name,rateFee:a?.rateFee??null,hourlyFee:a?.hourlyFee??null,quantityUnitPriceFee:a?.quantityUnitPriceFee??null}})}return t.length>0?t:[k()]},Ge=()=>L.value.map(e=>({...e})),K=async(e=!1)=>{try{let t={detailRows:JSON.parse(JSON.stringify(Ge()))},n=JSON.stringify(t.detailRows);if(!e&&n===Be.value)return;D.setHtFeeMainState(w.storageKey,t,{force:e}),Be.value=n}catch(e){console.error(`saveToIndexedDB failed:`,e)}},Ke=async()=>{try{L.value=await P(G((await D.loadHtFeeMainState(w.storageKey))?.detailRows)),await K(!0)}catch(e){console.error(`loadFromIndexedDB failed:`,e),L.value=await P(G([])),await K(!0)}},qe=()=>{L.value=[...L.value,k()],K()},q=async e=>{E.removeTab(`ht-fee-edit-${w.storageKey}-${e}`),await i(),D.removeHtFeeMethodState(w.storageKey,e,`rate-fee`),D.removeHtFeeMethodState(w.storageKey,e,`hourly-fee`),D.removeHtFeeMethodState(w.storageKey,e,`quantity-unit-price-fee`),L.value=L.value.map(t=>t.id===e?{...t,rateFee:null,hourlyFee:null,quantityUnitPriceFee:null}:t),await K()},J=e=>{let t=L.value.find(t=>t.id===e);t&&E.openTab({id:`ht-fee-edit-${w.storageKey}-${e}`,title:T(`htFeeGrid.editTabTitle`,{name:t.name||T(`htFeeGrid.unnamed`)}),componentName:`HtFeeMethodTypeLineView`,props:{sourceTitle:w.title,storageKey:w.storageKey,rowId:e,rowName:t.name||``,contractId:w.contractId,contractName:w.contractName}})},Je=g({name:`HtFeeMethodActionCellRenderer`,props:{params:{type:Object,required:!0}},setup(e){return()=>{if(A(e.params.data))return null;let t=t=>n=>{n.preventDefault(),n.stopPropagation();let r=String(e.params.data?.id||``).trim();if(r){if(t===`edit`){e.params.context?.onActionEdit?.(r);return}e.params.context?.onActionRequestClear?.(r,String(e.params.data?.name||``))}};return m(`div`,{class:`zxfw-action-wrap`},[m(`div`,{class:`zxfw-action-group`},[m(`button`,{class:`zxfw-action-btn`,"data-action":`edit`,type:`button`,onClick:t(`edit`)},[m(se,{size:13,"aria-hidden":`true`}),m(`span`,T(`htFeeGrid.edit`))]),m(`button`,{class:`zxfw-action-btn zxfw-action-btn--danger`,"data-action":`clear`,type:`button`,onClick:t(`clear`)},[m(ce,{size:13,"aria-hidden":`true`}),m(`span`,T(`htFeeGrid.clear`))])])])}}}),Ye=[{headerName:T(`htFeeGrid.columns.name`),field:`name`,minWidth:180,flex:1.8,editable:!1,valueFormatter:Ue,cellClass:e=>e.context?.fixedNames===!0||A(e.data)?``:`editable-cell-line`,cellClassRules:{"editable-cell-empty":e=>e.value==null||e.value===``}},{headerName:T(`htFeeGrid.columns.rateFee`),field:`rateFee`,minWidth:130,flex:1.2,editable:!1,headerClass:`ag-right-aligned-header`,valueParser:e=>W(e.newValue),valueFormatter:U,cellClassRules:{"ag-right-aligned-cell":()=>!0,"editable-cell-empty":e=>e.value==null||e.value===``}},{headerName:T(`htFeeGrid.columns.hourlyFee`),field:`hourlyFee`,minWidth:130,flex:1.2,editable:!1,headerClass:`ag-right-aligned-header`,valueParser:e=>W(e.newValue),valueFormatter:U,cellClassRules:{"ag-right-aligned-cell":()=>!0,"editable-cell-empty":e=>e.value==null||e.value===``}},{headerName:T(`htFeeGrid.columns.quantityUnitPriceFee`),field:`quantityUnitPriceFee`,minWidth:130,flex:1.2,editable:!1,headerClass:`ag-right-aligned-header`,valueParser:e=>W(e.newValue),valueFormatter:U,cellClassRules:{"ag-right-aligned-cell":()=>!0,"editable-cell-empty":e=>e.value==null||e.value===``}},{headerName:T(`htFeeGrid.columns.subtotal`),field:`subtotal`,minWidth:140,flex:1.2,editable:!1,headerClass:`ag-right-aligned-header`,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueGetter:e=>N(e.data),valueFormatter:U},{headerName:T(`htFeeGrid.columns.actions`),field:`actions`,minWidth:220,flex:1.6,maxWidth:260,editable:!1,sortable:!1,filter:!1,suppressMovable:!0,cellRenderer:Je}],Xe=s(()=>Ee(Ye)),Y={...Se,treeData:!1,getDataPath:void 0,context:{fixedNames:I.value,onActionEdit:J,onActionClear:q,onActionRequestClear:H},onCellClicked:e=>{if(e.colDef.field!==`actions`||!e.data||A(e.data))return;let t=((e.event?.target)?.closest(`button[data-action]`))?.dataset.action;if(t===`edit`){J(e.data.id);return}if(t===`clear`){H(e.data.id,e.data.name);return}}},X=null,Z=()=>{X&&clearTimeout(X),X=setTimeout(()=>{Ke()},80)},Ze=e=>{R.value=e.api},Q=!1,Qe=()=>{K()},$e=e=>{Q||A(e.data)||Qe()},et=()=>{Q=!0},$=()=>{Q=!1,Qe()};te(async()=>{await Ke()}),ee(()=>{Z()});let tt=s(()=>w.storageKey),nt=s(()=>{if(!j(w.storageKey))return``;let e=String(w.contractId||``).trim();if(!e)return``;let t=`htExtraFee-${e}-additional-work`;return JSON.stringify(D.htFeeMainStates[t]||null)});return h(tt,()=>{Z()}),h(()=>JSON.stringify(D.htFeeMethodStates[w.storageKey]||null),(e,t)=>{!e&&!t||e!==t&&Z()}),h(()=>{let e=String(w.contractId||``).trim();return e?JSON.stringify(D.contracts[e]||null):``},(e,t)=>{e!==t&&Z()}),h(nt,(e,t)=>{e!==t&&Z()}),h([I],()=>{Y.context&&(Y.context.fixedNames=I.value,Y.context.onActionEdit=J,Y.context.onActionClear=q,Y.context.onActionRequestClear=H,R.value?.refreshCells({force:!0}))}),h(Le,async(e,t)=>{if(!I.value||!e||e===t)return;let n=G(L.value);JSON.stringify(n)!==JSON.stringify(L.value)&&(L.value=n,await K(!0),R.value?.refreshCells({force:!0}))}),t(()=>{X&&clearTimeout(X),R.value=null,K(!0)}),(t,i)=>(n(),c(l,null,[d(`div`,De,[d(`div`,Oe,[d(`div`,ke,[d(`h3`,Ae,a(C.title),1),I.value?o(``,!0):(n(),ne(p(x),{key:0,type:`button`,variant:`outline`,size:`sm`,onClick:qe},{default:_(()=>[u(a(p(T)(`htFeeGrid.add`)),1)]),_:1}))]),d(`div`,{class:re(p(Ce))},[e(p(ie),{style:r(p(Te)),rowData:ze.value,columnDefs:Xe.value,gridOptions:Y,theme:p(we),animateRows:!0,treeData:!1,localeText:p(xe),tooltipShowDelay:500,headerHeight:50,suppressColumnVirtualisation:!0,suppressRowVirtualisation:!0,cellSelection:{handle:{mode:`range`}},enableClipboard:!0,undoRedoCellEditing:!0,undoRedoCellEditingLimit:20,onGridReady:Ze,onCellValueChanged:$e,onPasteStart:et,onPasteEnd:$,onFillStart:et,onFillEnd:$},null,8,[`style`,`rowData`,`columnDefs`,`theme`,`localeText`])],2)])]),e(p(ge),{open:z.value,"onUpdate:open":Ve},{default:_(()=>[e(p(le),null,{default:_(()=>[e(p(ue),{class:`fixed inset-0 z-50 bg-black/45`}),e(p(fe),{class:`fixed left-1/2 top-1/2 z-[70] w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:_(()=>[e(p(pe),{class:`text-base font-semibold`},{default:_(()=>[u(a(p(T)(`htFeeGrid.dialog.clearTitle`)),1)]),_:1}),e(p(he),{class:`mt-2 text-sm text-muted-foreground`},{default:_(()=>[u(a(p(T)(`htFeeGrid.dialog.clearDesc`,{name:V.value})),1)]),_:1}),d(`div`,je,[e(p(me),{"as-child":``},{default:_(()=>[e(p(x),{variant:`outline`},{default:_(()=>[u(a(p(T)(`common.cancel`)),1)]),_:1})]),_:1}),e(p(de),{"as-child":``},{default:_(()=>[e(p(x),{variant:`destructive`,onClick:He},{default:_(()=>[u(a(p(T)(`htFeeGrid.dialog.confirmClear`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`])],64))}});export{C as t}; \ No newline at end of file diff --git a/33/static/js/HtFeeMethodTypeLineView-DmQ8lS0u.js b/33/static/js/HtFeeMethodTypeLineView-DmQ8lS0u.js new file mode 100644 index 0000000..5ab95af --- /dev/null +++ b/33/static/js/HtFeeMethodTypeLineView-DmQ8lS0u.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./WorkContentGrid-nNmx9oMr.js","./_plugin-vue_export-helper-DUFB50Ey.js","./index-CAPJG_im.js","./rolldown-runtime-fVNAxIxX.js","./vendor-ui-B4V4Cf1T.js","./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js","./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js","./vendor-ag-grid~index~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeL~h29xz5eu-CW8VCi7z.js","./workspace-DxKKyh8w.js","./vendor-vue-CSlAvuUs.js","./sql-C69Jo4HU.js","./decimal-D3bp1pbs.js","./numberFormat-jhZZmX17.js","./vendor-ag-grid~index-Ch1jbN8D.js","./utils-DFe0HVk9.js","../css/index-CI_Unp5q.css","./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js","./agGridReadonlyAutoHeight-BpRhYCq1.js","../css/WorkContentGrid-B4nOYGuK.css"])))=>i.map(i=>d[i]); +import{$ as e,At as t,Bt as n,C as r,Cr as i,E as a,Er as o,H as s,K as c,M as l,Ot as u,Pt as d,Q as f,Rn as p,T as m,U as h,W as g,Wn as _,er as v,et as y,ft as b,mn as x,tt as S,xn as C,xr as w,yn as T}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as E}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D}from"./workspace-DxKKyh8w.js";import{i as O,s as k}from"./decimal-D3bp1pbs.js";import{dt as ee,ft as te,gt as A,ht as ne,lt as j,mt as M,n as N,pt as P,ut as re}from"./vendor-ui-B4V4Cf1T.js";import{n as F,r as I}from"./numberFormat-jhZZmX17.js";import"./sql-C69Jo4HU.js";import{t as L}from"./_plugin-vue_export-helper-DUFB50Ey.js";import{C as ie,k as R,t as z}from"./index-CAPJG_im.js";import{t as ae}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as oe,i as se,o as ce,r as le,t as ue}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";import"./pricingPersistControl-DVG_7RF1.js";import{t as B}from"./typeLine-BCKblICF.js";import{t as V}from"./HourlyFeeGrid-DixkKG6W.js";var de={class:`h-full min-h-0 flex flex-col`},fe={class:`rounded-lg border bg-card xmMx flex min-h-0 flex-1 flex-col`},pe={class:`flex items-center justify-between border-b px-4 py-3`},me={class:`text-sm font-semibold text-foreground`},he={class:`mt-4 flex items-center justify-end gap-2`},H=`fee-subtotal-fixed`,U=S({__name:`HtFeeGrid`,props:{title:{},storageKey:{},htMainStorageKey:{},htRowId:{},htMethodType:{}},setup(r){let a=r,p=ie(),{t:m}=D(),g=()=>`fee-${Date.now()}-${Math.random().toString(16).slice(2,8)}`,y=()=>({id:g(),feeItem:``,unit:``,quantity:null,unitPrice:null,budgetFee:null,remark:``}),C=()=>({id:H,feeItem:m(`htFeeDetail.subtotal`),unit:``,quantity:null,unitPrice:null,budgetFee:0,remark:``}),L=e=>e?.id===H,z=e=>{let t=e.filter(e=>!L(e));return t.length===0?[]:[...t,C()]},B=_([]),V=_(null),U=_(!1),W=_(null),G=_(``),K=s(()=>!!(a.htMainStorageKey&&a.htRowId&&a.htMethodType)),q=s({get:()=>{if(!K.value)return B.value;let e=p.getHtFeeMethodState(a.htMainStorageKey,a.htRowId,a.htMethodType)?.detailRows;return Array.isArray(e)?e:[]},set:e=>{if(!K.value){B.value=e;return}p.setHtFeeMethodState(a.htMainStorageKey,a.htRowId,a.htMethodType,{detailRows:e})}}),ge=()=>{q.value=z([...q.value.filter(e=>!L(e)),y()]),Y(),X()},_e=e=>{q.value=z(q.value.filter(t=>!L(t)&&t.id!==e)),Y(),X()},ve=(e,t)=>{W.value=e,G.value=String(t||``).trim()||m(`htFeeDetail.currentRow`),U.value=!0},ye=e=>{U.value=e},be=()=>{let e=W.value;e&&(_e(e),U.value=!1,W.value=null,G.value=``)},J=e=>L(e.data)?``:e.value==null||e.value===``?m(`htFeeDetail.clickToInput`):String(e.value),xe=e=>L(e.data)?``:e.value==null||e.value===``?m(`htFeeDetail.clickToInput`):F(e.value,3),Se=e=>L(e.data)?``:e.value==null||e.value===``?m(`htFeeDetail.clickToInput`):F(e.value,3),Ce=e=>e.value==null||e.value===``?``:F(e.value,3),Y=()=>{let e=0,t=!1;for(let n of q.value){if(L(n))continue;let r=typeof n.feeItem==`string`&&n.feeItem.trim()!==``,i=typeof n.unit==`string`&&n.unit.trim()!==``,a=typeof n.quantity==`number`&&Number.isFinite(n.quantity)?n.quantity:null,o=typeof n.unitPrice==`number`&&Number.isFinite(n.unitPrice)?n.unitPrice:null;if(!r||!i||a==null||o==null){n.budgetFee=null;continue}n.budgetFee=O(k(a).mul(o),2),typeof n.budgetFee==`number`&&Number.isFinite(n.budgetFee)&&(t=!0,e=O(k(e).add(n.budgetFee),2))}let n=q.value.find(e=>L(e));n&&(n.feeItem=m(`htFeeDetail.subtotal`),n.unit=``,n.quantity=null,n.unitPrice=null,n.budgetFee=t?e:null,n.remark=``)},we=e=>!Array.isArray(e)||e.length===0?[]:z(e.map(e=>{let t=e;return{id:typeof t.id==`string`&&t.id?t.id:g(),feeItem:typeof t.feeItem==`string`?t.feeItem:``,unit:typeof t.unit==`string`?t.unit:``,quantity:typeof t.quantity==`number`?t.quantity:null,unitPrice:typeof t.unitPrice==`number`?t.unitPrice:null,budgetFee:typeof t.budgetFee==`number`?t.budgetFee:null,remark:typeof t.remark==`string`?t.remark:``}})),Te=()=>(Y(),q.value.map(e=>({...e}))),X=async()=>{try{let e={detailRows:JSON.parse(JSON.stringify(Te()))};K.value?p.setHtFeeMethodState(a.htMainStorageKey,a.htRowId,a.htMethodType,e,{force:!0}):p.setKeyState(a.storageKey,e)}catch(e){console.error(`saveToIndexedDB failed:`,e)}},Z=async()=>{try{q.value=we((K.value?await p.loadHtFeeMethodState(a.htMainStorageKey,a.htRowId,a.htMethodType):await p.loadKeyState(a.storageKey))?.detailRows),Y()}catch(e){console.error(`loadFromIndexedDB failed:`,e),q.value=[],Y()}},Ee=[{headerName:m(`htFeeDetail.columns.no`),colId:`rowNo`,minWidth:68,maxWidth:80,flex:.6,editable:!1,sortable:!1,filter:!1,cellStyle:{textAlign:`center`},valueGetter:e=>e.node?.rowPinned?``:L(e.data)?m(`htFeeDetail.subtotal`):typeof e.node?.rowIndex==`number`?e.node.rowIndex+1:``,colSpan:e=>L(e.data)?2:1},{headerName:m(`htFeeDetail.columns.feeItem`),field:`feeItem`,minWidth:140,flex:1.4,editable:e=>!L(e.data),valueGetter:e=>L(e.data)?``:e.data?.feeItem??``,valueFormatter:J,cellClass:e=>L(e.data)?``:`editable-cell-line`,cellClassRules:{"editable-cell-empty":e=>e.value==null||e.value===``}},{headerName:m(`htFeeDetail.columns.unit`),field:`unit`,minWidth:90,flex:.9,editable:e=>!L(e.data),valueFormatter:J,cellClass:`editable-cell-line`,cellClassRules:{"editable-cell-empty":e=>e.value==null||e.value===``}},{headerName:m(`htFeeDetail.columns.quantity`),field:`quantity`,minWidth:100,flex:1,headerClass:`ag-right-aligned-header`,cellClass:`editable-cell-line`,editable:e=>!L(e.data),valueParser:e=>I(e.newValue,{precision:3}),valueFormatter:xe,cellClassRules:{"ag-right-aligned-cell":()=>!0,"editable-cell-empty":e=>e.value==null||e.value===``}},{headerName:m(`htFeeDetail.columns.unitPrice`),field:`unitPrice`,minWidth:120,flex:1.1,headerClass:`ag-right-aligned-header`,cellClass:`editable-cell-line`,editable:e=>!L(e.data),valueParser:e=>I(e.newValue,{precision:2}),valueFormatter:Se,cellClassRules:{"ag-right-aligned-cell":()=>!0,"editable-cell-empty":e=>e.value==null||e.value===``}},{headerName:m(`htFeeDetail.columns.budgetFee`),field:`budgetFee`,minWidth:130,flex:1.2,headerClass:`ag-right-aligned-header`,editable:!1,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueFormatter:Ce},{headerName:m(`htFeeDetail.columns.remark`),field:`remark`,minWidth:170,flex:2,editable:e=>!L(e.data),cellEditor:`agLargeTextCellEditor`,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:J,cellClass:` remark-wrap-cell`,cellClassRules:{"editable-cell-empty":e=>e.value==null||e.value===``}},{headerName:m(`htFeeDetail.columns.actions`),field:`actions`,minWidth:92,maxWidth:110,flex:.8,editable:!1,sortable:!1,filter:!1,suppressMovable:!0,cellRenderer:S({name:`HtFeeGridActionCellRenderer`,props:{params:{type:Object,required:!0}},setup(e){return()=>{let t=e.params.data;return!t||L(t)?null:b(`button`,{type:`button`,class:`inline-flex cursor-pointer items-center gap-1 rounded border border-red-200 px-2 py-1 text-xs text-red-600 hover:bg-red-50`,onClick:e=>{e.preventDefault(),e.stopPropagation(),ve(t.id,t.feeItem)}},[b(N,{size:12,"aria-hidden":`true`}),b(`span`,m(`common.delete`))])}}})}],De=s(()=>ue(Ee)),Oe={...oe,treeData:!1},ke=e=>{V.value=e.api},Q=!1,Ae=()=>{Y(),V.value?.refreshCells({force:!0}),X()},je=()=>{Q||Ae()},Me=()=>{Q=!0},$=()=>{Q=!1,Ae()},Ne=e=>Array.isArray(e.value)?JSON.stringify(e.value):e.value,Pe=e=>{let t=String(e.column?.getColDef?.().field||``);if(t===`quantity`)return I(e.value,{precision:3});if(t===`unitPrice`)return I(e.value,{precision:2});try{let t=JSON.parse(e.value);if(Array.isArray(t))return t}catch{return e.value}return e.value};return d(async()=>{await Z()}),u(()=>{Z()}),x(()=>a.storageKey,()=>{Z()}),t(()=>{V.value?.stopEditing(),V.value=null,X()}),(t,a)=>(n(),c(l,null,[h(`div`,de,[h(`div`,fe,[h(`div`,pe,[h(`h3`,me,o(r.title),1),e(v(R),{type:`button`,variant:`outline`,size:`sm`,onClick:ge},{default:T(()=>[f(o(v(m)(`htFeeDetail.addRow`)),1)]),_:1})]),h(`div`,{class:w(v(se))},[e(v(E),{style:i(v(le)),rowData:q.value,columnDefs:De.value,gridOptions:Oe,theme:v(ce),animateRows:!0,treeData:!1,localeText:v(ae),tooltipShowDelay:500,headerHeight:50,suppressColumnVirtualisation:!0,suppressRowVirtualisation:!0,cellSelection:{handle:{mode:`range`}},enableClipboard:!0,processCellForClipboard:Ne,processCellFromClipboard:Pe,undoRedoCellEditing:!0,undoRedoCellEditingLimit:20,onGridReady:ke,onCellValueChanged:je,onPasteStart:Me,onPasteEnd:$,onFillStart:Me,onFillEnd:$},null,8,[`style`,`rowData`,`columnDefs`,`theme`,`localeText`])],2)])]),e(v(re),{open:U.value,"onUpdate:open":ye},{default:T(()=>[e(v(ee),null,{default:T(()=>[e(v(te),{class:`fixed inset-0 z-50 bg-black/45`}),e(v(ne),{class:`fixed left-1/2 top-1/2 z-[70] w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:T(()=>[e(v(j),{class:`text-base font-semibold`},{default:T(()=>[f(o(v(m)(`htFeeDetail.dialog.deleteTitle`)),1)]),_:1}),e(v(P),{class:`mt-2 text-sm text-muted-foreground`},{default:T(()=>[f(o(v(m)(`htFeeDetail.dialog.deleteDesc`,{name:G.value})),1)]),_:1}),h(`div`,he,[e(v(M),{"as-child":``},{default:T(()=>[e(v(R),{variant:`outline`},{default:T(()=>[f(o(v(m)(`common.cancel`)),1)]),_:1})]),_:1}),e(v(A),{"as-child":``},{default:T(()=>[e(v(R),{variant:`destructive`,onClick:be},{default:T(()=>[f(o(v(m)(`common.delete`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`])],64))}}),W={class:`h-full min-h-0 flex flex-col`},G={class:`rounded-lg border bg-card p-4`},K={class:`grid grid-cols-1 gap-4 md:grid-cols-2`},q={class:`space-y-1.5`},ge={class:`text-xs text-muted-foreground`},_e=[`value`],ve={class:`space-y-1.5`},ye={class:`text-xs text-muted-foreground`},be=[`placeholder`,`onKeydown`],J={class:`space-y-1.5`},xe={class:`text-xs text-muted-foreground`},Se=[`value`],Ce={class:`space-y-1.5 md:col-span-2`},Y={class:`text-xs text-muted-foreground`},we=[`placeholder`],Te=L(S({__name:`HtFeeRateMethodForm`,props:{storageKey:{},contractId:{},htMainStorageKey:{},htRowId:{},htMethodType:{}},setup(e){let i=e,l=ie(),{t:f}=D(),p=_(null),g=_(``),y=_(``),b=_(null),S=_(``),w=s(()=>!!(i.htMainStorageKey&&i.htRowId&&i.htMethodType)),T=s(()=>String(i.contractId||``).trim()),E=s(()=>{let e=String(i.htMainStorageKey||``).trim();return e?e.endsWith(`-reserve`):String(i.storageKey||``).includes(`-reserve`)}),k=s(()=>{let e=T.value;return e?JSON.stringify(l.contracts[e]||null):``}),ee=s(()=>{if(!E.value)return``;let e=T.value;if(!e)return``;let t=`htExtraFee-${e}-additional-work`;return JSON.stringify(l.htFeeMainStates[t]||null)}),te=s(()=>E.value?f(`htFeeRate.reserveBaseLabel`):f(`htFeeRate.baseLabel`)),A=s(()=>b.value==null||p.value==null?null:O(b.value*p.value/100,2)),ne=e=>e==null?``:F(e,3),j=async()=>{let e=T.value;if(e)try{await l.loadContract(e);let t=l.getBaseSubtotal(e);if(!E.value){b.value=t==null?null:O(t,3);return}let n=`htExtraFee-${e}-additional-work`,r=((await l.loadHtFeeMainState(n))?.detailRows||[]).reduce((e,t)=>{let n=Number(t?.rateFee),r=Number(t?.hourlyFee),i=Number(t?.quantityUnitPriceFee),a=Number.isFinite(n)?n:0,o=Number.isFinite(r)?r:0,s=Number.isFinite(i)?i:0;return e+a+o+s},0);b.value=t!=null||r!==0?O((typeof t==`number`&&Number.isFinite(t)?t:0)+r,3):null}catch(e){console.error(`load contract for rate base failed:`,e),b.value=null}},M=async()=>{try{let e=w.value?await l.loadHtFeeMethodState(i.htMainStorageKey,i.htRowId,i.htMethodType):await l.loadKeyState(i.storageKey);p.value=typeof e?.rate==`number`?e.rate:null,g.value=typeof e?.remark==`string`?e.remark:``,y.value=p.value==null?``:String(p.value);let t={rate:p.value,budgetFee:A.value,remark:g.value};S.value=JSON.stringify(t)}catch(e){console.error(`load rate form failed:`,e),p.value=null,g.value=``,y.value=``,S.value=``}},N=async(e=!1)=>{try{let t={rate:p.value,budgetFee:A.value,remark:g.value},n=JSON.stringify(t);if(!e&&n===S.value)return;w.value?l.setHtFeeMethodState(i.htMainStorageKey,i.htRowId,i.htMethodType,t,{force:e}):l.setKeyState(i.storageKey,t,{force:e}),S.value=n}catch(e){console.error(`save rate form failed:`,e)}},P=()=>{let e=I(y.value,{sanitize:!0,precision:2});p.value=e,y.value=e==null?``:String(e)};return x([p,g,A],()=>{N()}),x(()=>i.storageKey,()=>{M()}),x(()=>T.value,()=>{j()}),x(()=>[i.storageKey,i.htMainStorageKey,i.htRowId,i.htMethodType],()=>{j()}),x([k,ee],([e,t],[n,r])=>{e===n&&t===r||j()}),d(async()=>{await Promise.all([j(),M()])}),u(async()=>{await Promise.all([j(),M()])}),t(()=>{N(!0)}),(e,t)=>(n(),c(`div`,W,[h(`div`,G,[h(`div`,K,[h(`label`,q,[h(`div`,ge,o(te.value),1),h(`input`,{type:`text`,value:b.value,readonly:``,disabled:``,tabindex:`-1`,class:`h-9 w-full cursor-not-allowed rounded-md border bg-muted/40 px-3 text-sm text-foreground select-none`},null,8,_e)]),h(`label`,ve,[h(`div`,ye,o(v(f)(`htFeeRate.rateLabel`)),1),C(h(`input`,{"onUpdate:modelValue":t[0]||=e=>y.value=e,type:`text`,inputmode:`decimal`,placeholder:v(f)(`htFeeRate.ratePlaceholder`),class:`rate-input h-9 w-full rounded-md border bg-background px-3 text-sm text-foreground outline-none focus:ring-2 focus:ring-primary/30`,onBlur:P,onKeydown:m(a(P,[`prevent`]),[`enter`])},null,40,be),[[r,y.value]])]),h(`label`,J,[h(`div`,xe,o(v(f)(`htFeeRate.budgetFeeLabel`)),1),h(`input`,{type:`text`,value:ne(A.value),readonly:``,disabled:``,tabindex:`-1`,class:`h-9 w-full cursor-not-allowed rounded-md border bg-muted/40 px-3 text-sm text-foreground select-none`},null,8,Se)]),h(`label`,Ce,[h(`div`,Y,o(v(f)(`htFeeRate.remarkLabel`)),1),C(h(`textarea`,{"onUpdate:modelValue":t[1]||=e=>g.value=e,rows:`4`,placeholder:v(f)(`htFeeRate.remarkPlaceholder`),class:`w-full rounded-md border bg-background px-3 py-2 text-sm text-foreground outline-none focus:ring-2 focus:ring-primary/30`},null,8,we),[[r,g.value]])])])])]))}}),[[`__scopeId`,`data-v-6c6d44a3`]]),X=S({__name:`HtFeeMethodTypeLineView`,props:{sourceTitle:{},storageKey:{},rowId:{},rowName:{},contractId:{},contractName:{}},setup(e){let t=e,{t:r}=D(),i=s(()=>t.sourceTitle||r(`htFeeMethodTypeLine.feeDetail`)),a=s(()=>t.rowName||r(`htFeeMethodTypeLine.unnamed`)),o=s(()=>String(t.rowId||``).trim()),c=s(()=>String(t.contractId||``).trim()),l=s(()=>String(t.contractName||``).trim()||c.value||`-`),u=s(()=>r(`htFeeMethodTypeLine.title`,{contractName:l.value,rowName:a.value||i.value})),d=s(()=>`ht-fee-type-active-cat-${t.storageKey}-${o.value}`),f=e=>`${t.storageKey}-${o.value}-${e}`,m=p(S({name:`HtFeeGrid`,setup(){let e=s(()=>f(`quantity-unit-price-fee`));return()=>b(U,{title:r(`htFeeMethodTypeLine.quantityUnitPrice`),storageKey:e.value,htMainStorageKey:t.storageKey,htRowId:o.value,htMethodType:`quantity-unit-price-fee`})}})),h=p(S({name:`HtFeeMethodTypePane-rate-fee`,setup(){let e=s(()=>f(`rate-fee`));return()=>b(Te,{storageKey:e.value,contractId:t.contractId,htMainStorageKey:t.storageKey,htRowId:o.value,htMethodType:`rate-fee`})}})),_=p(S({name:`HtFeeMethodTypePane-hourly-fee`,setup(){let e=s(()=>f(`hourly-fee`));return()=>b(V,{title:r(`hourlyFeeGrid.title`),storageKey:e.value,htMainStorageKey:t.storageKey,htRowId:o.value,htMethodType:`hourly-fee`})}})),x=s(()=>t.sourceTitle===r(`htSummary.reservePrefix`)),C=s(()=>!x.value),w=p(S({name:`WorkContentPane`,setup(){let e=y({loader:()=>z(()=>import(`./WorkContentGrid-nNmx9oMr.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]),import.meta.url),onError:e=>{console.error(`加载 WorkContentGrid 组件失败:`,e)}});return()=>b(e,{title:r(`workContent.title`),storageKey:`work-content-${t.storageKey}-${o.value}`,dictMode:`additional`})}})),T=s(()=>{let e=[{key:`rate-fee`,label:r(`htFeeGrid.columns.rateFee`),component:h},{key:`hourly-fee`,label:r(`htFeeGrid.columns.hourlyFee`),component:_},{key:`quantity-unit-price-fee`,label:r(`htFeeGrid.columns.quantityUnitPriceFee`),component:m}];return C.value&&e.push({key:`work-content`,label:r(`workContent.title`),component:w}),e});return(e,t)=>(n(),g(B,{scene:`ht-fee-method-type-line`,title:u.value,subtitle:v(r)(`htFeeMethodTypeLine.contractId`,{id:c.value}),"copy-text":c.value,"storage-key":d.value,"default-category":`rate-fee`,categories:T.value},null,8,[`title`,`subtitle`,`copy-text`,`storage-key`,`categories`]))}});export{X as default}; \ No newline at end of file diff --git a/33/static/js/HtMajorFactor-BGiZtv7N.js b/33/static/js/HtMajorFactor-BGiZtv7N.js new file mode 100644 index 0000000..86ca003 --- /dev/null +++ b/33/static/js/HtMajorFactor-BGiZtv7N.js @@ -0,0 +1 @@ +import{Bt as e,H as t,Ot as n,Pt as r,W as i,Wn as a,er as o,tt as s}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as c}from"./workspace-DxKKyh8w.js";import{d as l}from"./decimal-D3bp1pbs.js";import"./numberFormat-jhZZmX17.js";import{c as u,y as d}from"./sql-C69Jo4HU.js";import"./agGridReadonlyAutoHeight-BpRhYCq1.js";import"./pricingScaleDetail-CuzzWQVd.js";import"./pricingMethodTotals-DHJf6v89.js";import"./pricingScaleLink-BNsm4Fxd.js";import"./xmFactorDefaults-yPGPQ25R.js";import"./zxFwPricingSync-PWsfNukj.js";import{t as f}from"./XmFactorGrid-DLfcqkt0.js";var p=s({__name:`HtMajorFactor`,props:{contractId:{},projectInfoKey:{},parentStorageKey:{}},setup(s){let p=s,m=t(()=>p.projectInfoKey||`xm-base-info-v1`),h=a(``),g=l(),{t:_}=c(),v=async()=>{try{let e=await g.getItem(m.value);h.value=typeof e?.projectIndustry==`string`?e.projectIndustry.trim():``}catch(e){console.error(`loadProjectIndustry failed:`,e),h.value=``}},y=t(()=>{let e=h.value;if(!e)return{};let t=u().filter(({id:t})=>d(t,e)).map(({id:e,item:t})=>[e,t]);return Object.fromEntries(t)});return r(()=>{v()}),n(()=>{v()}),(t,n)=>(e(),i(f,{title:o(_)(`htFactors.majorTitle`),"storage-key":`ht-major-factor-v1-${p.contractId}`,"parent-storage-key":p.parentStorageKey||`xm-major-factor-v1`,dict:y.value,"disable-budget-edit-when-standard-null":!0,"exclude-notshow-by-zxflxs":!0,"init-budget-value-from-standard":!0},null,8,[`title`,`storage-key`,`parent-storage-key`,`dict`]))}});export{p as default}; \ No newline at end of file diff --git a/33/static/js/HtReserveFee-CYFWEZzy.js b/33/static/js/HtReserveFee-CYFWEZzy.js new file mode 100644 index 0000000..3b2f8bf --- /dev/null +++ b/33/static/js/HtReserveFee-CYFWEZzy.js @@ -0,0 +1 @@ +import{Bt as e,H as t,W as n,er as r,tt as i}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as a}from"./workspace-DxKKyh8w.js";import"./decimal-D3bp1pbs.js";import"./vendor-ui-B4V4Cf1T.js";import"./numberFormat-jhZZmX17.js";import{f as o}from"./sql-C69Jo4HU.js";import"./agGridReadonlyAutoHeight-BpRhYCq1.js";import{t as s}from"./HtFeeMethodGrid-BpYIiL-T.js";var c=i({__name:`HtReserveFee`,props:{contractId:{},contractName:{}},setup(i){let c=i,{t:l,locale:u}=a(),d=t(()=>`htExtraFee-${c.contractId}-reserve`),f=t(()=>o(u.value).map(e=>({name:e.name,id:e.id})));return(t,i)=>(e(),n(s,{title:r(l)(`htFee.reserveTitle`),storageKey:d.value,"contract-id":c.contractId,"contract-name":c.contractName,"fixed-names":f.value},null,8,[`title`,`storageKey`,`contract-id`,`contract-name`,`fixed-names`]))}});export{c as default}; \ No newline at end of file diff --git a/33/static/js/InvestmentScalePricingPane-CSaa1AOt.js b/33/static/js/InvestmentScalePricingPane-CSaa1AOt.js new file mode 100644 index 0000000..ce78962 --- /dev/null +++ b/33/static/js/InvestmentScalePricingPane-CSaa1AOt.js @@ -0,0 +1 @@ +import{$ as e,Bt as t,Cr as n,Dt as r,Er as i,G as a,H as o,K as s,Pt as c,Q as l,U as u,Wn as d,er as f,ft as p,mn as ee,tt as m,xr as te,yn as h}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as ne}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as re}from"./workspace-DxKKyh8w.js";import{a as ie,d as ae,n as oe}from"./decimal-D3bp1pbs.js";import{B as se,R as ce,V as le,ct as ue,dt as de,ft as fe,gt as pe,ht as me,lt as g,mt as he,pt as ge,ut as _e,z as ve}from"./vendor-ui-B4V4Cf1T.js";import{r as _}from"./numberFormat-jhZZmX17.js";import{a as ye,c as be,h as v,y as xe}from"./sql-C69Jo4HU.js";import{C as Se,k as y,n as b}from"./index-CAPJG_im.js";import{t as Ce}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as we,i as Te,o as Ee,r as De,t as Oe}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";import{n as ke,o as Ae}from"./pricingScaleDetail-CuzzWQVd.js";import{l as x,o as S,u as C}from"./pricingScaleLink-BNsm4Fxd.js";import"./xmFactorDefaults-yPGPQ25R.js";import"./pricingPersistControl-DVG_7RF1.js";import{a as je,n as w,o as Me,r as Ne,t as Pe}from"./pricingScaleGrid-BCsr0Q1x.js";import{n as T}from"./pricingScaleCalc-CxdG8IMv.js";import{t as Fe}from"./pricingScalePaneLifecycle-CUGyrg3j.js";import{a as Ie,i as Le,n as Re,o as ze,r as Be,t as Ve}from"./pricingScaleProject-DnXeytCB.js";var He={class:`h-full min-h-0 flex flex-col`},Ue={class:`rounded-lg border bg-card xmMx flex min-h-0 flex-1 flex-col`},We={class:`flex items-center justify-between border-b px-4 py-3`},Ge={class:`flex items-center gap-3`},Ke={class:`text-sm font-semibold text-foreground`},qe={key:0,class:`flex items-center gap-2`},Je={class:`text-xs text-muted-foreground`},Ye={class:`flex items-center gap-2`},Xe={class:`mt-4 flex items-center justify-end gap-2`},Ze={class:`mt-4 flex items-center justify-end gap-2`},E=`__only-cost-scale-total__`,D=m({__name:`InvestmentScalePricingPane`,props:{contractId:{},serviceId:{},projectInfoKey:{}},setup(D){let O=D,k=Se(),{t:A,locale:j}=re(),M=ae();o(()=>`tzGMF-${O.contractId}-${O.serviceId}`);let Qe=o(()=>`ht-info-v3-${O.contractId}`),N=o(()=>`ht-info-scale-change-v1-${O.contractId}`),$e=o(()=>`ht-consult-category-factor-v1-${O.contractId}`),et=o(()=>`ht-major-factor-v1-${O.contractId}`),P=o(()=>`${$e.value}-change`),F=o(()=>`${et.value}-change`);o(()=>O.projectInfoKey||`xm-base-info-v1`);let I=d(``),tt=d(new Map),nt=d(new Map),L=d(null);d(0),d(0);let rt=()=>tt.value.get(String(O.serviceId))??null,R=o(()=>v(O.serviceId)?.onlyCostScale===!0),z=o(()=>v(O.serviceId)?.mutiple===!0),B=d(1),V=Ie,it=()=>z.value?V(B.value):1,at=e=>Ve(e),H=(e,t)=>Re(z.value,e,t),ot=e=>Le(e,z.value),st=o(()=>{if(R.value){let e=v(O.serviceId);return`${e?.code||``} ${e?.name||``}`.trim()}let e=ye(I.value.trim(),j.value);return e?A(`pricingScale.totalInvestmentByIndustry`,{industryName:e}):A(`pricingScale.totalInvestment`)}),U=d(null),ct=async()=>{try{let e=await M.getItem(Qe.value);if(typeof e?.totalAmount==`number`&&e.totalAmount>0){U.value=e.totalAmount;return}let t=await M.getItem(`xm-info-v3`);U.value=typeof t?.totalAmount==`number`?t.totalAmount:null}catch{U.value=null}},lt={"F1*":[{limit:200,rate:.0327,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0273,baseAmount:6.54,base:`201~500万`},{limit:2e3,rate:.0216,baseAmount:14.73,base:`501~2000万`},{limit:5e3,rate:.017,baseAmount:47.13,base:`2001~5000万`},{limit:1e4,rate:.0151,baseAmount:98.13,base:`5001~10000万`},{limit:3e4,rate:.0118,baseAmount:173.63,base:`10001~30000万`},{limit:1/0,rate:.009,baseAmount:409.63,base:`30000万以上`}],"F2-1*":[{limit:200,rate:.0087,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0073,baseAmount:1.74,base:`201~500万`},{limit:2e3,rate:.0056,baseAmount:3.93,base:`501~2000万`},{limit:5e3,rate:.0046,baseAmount:12.33,base:`2001~5000万`},{limit:1e4,rate:.0037,baseAmount:26.13,base:`5001~10000万`},{limit:3e4,rate:.0028,baseAmount:44.63,base:`10001~30000万`},{limit:1/0,rate:.0018,baseAmount:100.63,base:`30000万以上`}],"F2-2*":[{limit:200,rate:.024,baseAmount:0,base:`F≤200万`},{limit:500,rate:.02,baseAmount:4.8,base:`201~500万`},{limit:2e3,rate:.016,baseAmount:10.8,base:`501~2000万`},{limit:5e3,rate:.0126,baseAmount:34.8,base:`2001~5000万`},{limit:1e4,rate:.0114,baseAmount:72.6,base:`5001~10000万`},{limit:3e4,rate:.009,baseAmount:129.6,base:`10001~30000万`},{limit:1/0,rate:.0072,baseAmount:309.6,base:`30000万以上`}],"F2-3":[{limit:200,rate:.021,baseAmount:0,base:`F≤200万`},{limit:500,rate:.017,baseAmount:4.2,base:`201~500万`},{limit:2e3,rate:.013,baseAmount:9.3,base:`501~2000万`},{limit:5e3,rate:.0096,baseAmount:28.8,base:`2001~5000万`},{limit:1e4,rate:.0084,baseAmount:57.6,base:`5001~10000万`},{limit:3e4,rate:.006,baseAmount:99.6,base:`10001~30000万`},{limit:1/0,rate:.0042,baseAmount:219.6,base:`30000万以上`}],"F2-4":[{limit:200,rate:.018,baseAmount:0,base:`F≤200万`},{limit:500,rate:.014,baseAmount:3.6,base:`201~500万`},{limit:2e3,rate:.011,baseAmount:7.8,base:`501~2000万`},{limit:5e3,rate:.008,baseAmount:24.3,base:`2001~5000万`},{limit:1e4,rate:.007,baseAmount:48.3,base:`5001~10000万`},{limit:3e4,rate:.005,baseAmount:83.3,base:`10001~30000万`},{limit:1/0,rate:.0035,baseAmount:183.3,base:`30000万以上`}],"F3-1-1":[{limit:200,rate:.0011,baseAmount:0,base:`F≤200万`},{limit:500,rate:.001,baseAmount:.22,base:`201~500万`},{limit:2e3,rate:8e-4,baseAmount:.52,base:`501~2000万`},{limit:5e3,rate:7e-4,baseAmount:1.72,base:`2001~5000万`},{limit:1e4,rate:6e-4,baseAmount:3.82,base:`5001~10000万`},{limit:3e4,rate:5e-4,baseAmount:6.82,base:`10001~30000万`},{limit:1/0,rate:4e-4,baseAmount:16.82,base:`30000万以上`}],"F3-1-2":[{limit:200,rate:9e-4,baseAmount:0,base:`F≤200万`},{limit:500,rate:8e-4,baseAmount:.18,base:`201~500万`},{limit:2e3,rate:7e-4,baseAmount:.42,base:`501~2000万`},{limit:5e3,rate:6e-4,baseAmount:1.47,base:`2001~5000万`},{limit:1e4,rate:5e-4,baseAmount:3.27,base:`5001~10000万`},{limit:3e4,rate:4e-4,baseAmount:5.77,base:`10001~30000万`},{limit:1/0,rate:3e-4,baseAmount:13.77,base:`30000万以上`}],"F3-2-2":[{limit:200,rate:.0022,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0019,baseAmount:.44,base:`201~500万`},{limit:2e3,rate:.0015,baseAmount:1.01,base:`501~2000万`},{limit:5e3,rate:.0013,baseAmount:3.26,base:`2001~5000万`},{limit:1e4,rate:.001,baseAmount:7.16,base:`5001~10000万`},{limit:3e4,rate:8e-4,baseAmount:12.16,base:`10001~30000万`},{limit:1/0,rate:5e-4,baseAmount:28.16,base:`30000万以上`}],"F3-3-10":[{limit:200,rate:.0056,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0046,baseAmount:1.12,base:`201~500万`},{limit:2e3,rate:.0034,baseAmount:2.5,base:`501~2000万`},{limit:5e3,rate:.0027,baseAmount:7.6,base:`2001~5000万`},{limit:1e4,rate:.0022,baseAmount:15.7,base:`5001~10000万`},{limit:3e4,rate:.0016,baseAmount:26.7,base:`10001~30000万`},{limit:1/0,rate:.001,baseAmount:58.7,base:`30000万以上`}],"F3-3-11":[{limit:200,rate:.0016,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0014,baseAmount:.32,base:`201~500万`},{limit:2e3,rate:.001,baseAmount:.74,base:`501~2000万`},{limit:5e3,rate:8e-4,baseAmount:2.24,base:`2001~5000万`},{limit:1e4,rate:6e-4,baseAmount:4.64,base:`5001~10000万`},{limit:3e4,rate:5e-4,baseAmount:7.64,base:`10001~30000万`},{limit:1/0,rate:3e-4,baseAmount:17.64,base:`30000万以上`}],"F3-3-12":[{limit:200,rate:.0016,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0014,baseAmount:.32,base:`201~500万`},{limit:2e3,rate:.001,baseAmount:.74,base:`501~2000万`},{limit:5e3,rate:8e-4,baseAmount:2.24,base:`2001~5000万`},{limit:1e4,rate:6e-4,baseAmount:4.64,base:`5001~10000万`},{limit:3e4,rate:5e-4,baseAmount:7.64,base:`10001~30000万`},{limit:1/0,rate:3e-4,baseAmount:17.64,base:`30000万以上`}],"F3-4-1":[{limit:200,rate:.008,baseAmount:0,base:`F≤200万`},{limit:500,rate:.007,baseAmount:1.6,base:`201~500万`},{limit:2e3,rate:.006,baseAmount:3.7,base:`501~2000万`},{limit:5e3,rate:.005,baseAmount:12.7,base:`2001~5000万`},{limit:1e4,rate:.004,baseAmount:27.7,base:`5001~10000万`},{limit:3e4,rate:.003,baseAmount:47.7,base:`10001~30000万`},{limit:1/0,rate:.002,baseAmount:107.7,base:`30000万以上`}],"F3-4-2":[{limit:200,rate:.012,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0105,baseAmount:2.4,base:`201~500万`},{limit:2e3,rate:.009,baseAmount:5.55,base:`501~2000万`},{limit:5e3,rate:.0075,baseAmount:19.05,base:`2001~5000万`},{limit:1e4,rate:.006,baseAmount:41.55,base:`5001~10000万`},{limit:3e4,rate:.0045,baseAmount:71.55,base:`10001~30000万`},{limit:1/0,rate:.003,baseAmount:161.55,base:`30000万以上`}],"F3-4-3":[{limit:1/0,rate:.003,baseAmount:0,base:`无区间`}],"F3-4-4":[{limit:1/0,rate:.003,baseAmount:0,base:`无区间`}],"F3-4-5":[{limit:200,rate:.006,baseAmount:0,base:`F≤200万`},{limit:500,rate:.005,baseAmount:1.2,base:`201~500万`},{limit:2e3,rate:.004,baseAmount:2.7,base:`501~2000万`},{limit:5e3,rate:.003,baseAmount:8.7,base:`2001~5000万`},{limit:1e4,rate:.002,baseAmount:17.7,base:`5001~10000万`},{limit:3e4,rate:.0013,baseAmount:27.7,base:`10001~30000万`},{limit:1/0,rate:8e-4,baseAmount:53.7,base:`30000万以上`}],"F3-5":[{limit:1/0,rate:.008,baseAmount:0,base:`无区间`}],"F3-6-2":[{limit:100,rate:0,baseAmount:0,base:`≤100万`},{limit:500,rate:25e-5,baseAmount:.7,base:`101~500万`},{limit:1e3,rate:15e-5,baseAmount:.8,base:`501~1000万`},{limit:3e3,rate:1e-4,baseAmount:.875,base:`1001~3000万`},{limit:8e3,rate:5e-5,baseAmount:.975,base:`3001~8000万`},{limit:15e3,rate:3e-5,baseAmount:1.025,base:`8001~15000万`},{limit:1/0,rate:2e-5,baseAmount:1.046,base:`15000万以上`}]},ut=(e,t)=>{if(e==`F3-6-2`&&t<=100)return{formula:`固定值`,amount:7e3,base:`<100万`};if(e==`F3-6-1`)return t<=100?{formula:`固定值`,amount:2e3,base:`F<100万`}:{formula:`固定值`,amount:4e3,base:`F>100万`};if(t==null||t<0)return{formula:``,amount:0,base:``};let n=lt[e];if(!n)return{formula:`无对应规则`,amount:0,base:``};let r=0;for(let e=0;e{let t=typeof e.budgetFee==`number`?e.budgetFee:0,n=typeof e.workStageFactor==`number`?e.workStageFactor:1,r=typeof e.workRatio==`number`?e.workRatio:1;return t===null?null:Math.round(t*n*r)},ft=()=>{for(let e of W.value)e.serviceFee=dt(e)},W=d([]),G=o({get:()=>W.value,set:e=>{Q(),W.value=e}}),K=[],q=[],pt=new Map,mt=()=>{let e=be().map(({id:e,item:t})=>[e,t]);K.splice(0,K.length,...e);let t=je(K,({hasCost:e,hasArea:t})=>e&&!t);q.splice(0,q.length,...t);let n=Me(t);pt.clear(),n.forEach((e,t)=>{pt.set(t,e)})};mt();let J=async()=>{let e=[],t=await b().query([{field:`type`,value:`${O.contractId}-zxFw`,operator:`eq`}]);for(let n of t){if(!n.typel?.scale)continue;let t=`${O.contractId}-${n.id||n._id}-${Date.now()}`.slice(0,64),r=n.code||``,i=U.value,a=i!=null&&i>0,{formula:o,amount:s,base:c}=a?ut(r,i):{formula:``,amount:0,base:``};e.push({id:t,projectIndex:1,majorDictId:n.id||``,groupCode:r,groupName:n.name||``,majorCode:r,majorName:n.name||``,hasCost:!0,hasArea:!1,amount:null,benchmarkBudget:a?s:null,benchmarkBudgetBasic:a?s:null,benchmarkBudgetOptional:a?0:null,benchmarkBudgetBasicChecked:!0,benchmarkBudgetOptionalChecked:!1,basicFormula:a?`C0建设项目总费用`:``,optionalFormula:a?o:``,consultCategoryFactor:null,majorFactor:null,workStageFactor:1,workRatio:1,budgetFee:a?s:null,budgetFeeBasic:a?s:null,budgetFeeOptional:a?0:null,serviceFee:a?Math.round(s*1*100/100):null,remark:n.remark||``,path:[r,n.id||``],base:c,majortype:0,computbase:0,basetype:0})}return e},ht=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;let n=(e||[]).find(e=>e?.isGroupRow===!0);return typeof n?.amount==`number`&&Number.isFinite(n.amount)?n.amount:ie(e||[],e=>typeof e?.amount==`number`?e.amount:null)},Y=()=>{let e=String(I.value||``).trim();if(!e)return null;let t=K.find(([,t])=>String(t?.industryId??``).trim()===e&&!String(t?.code||``).includes(`-`));if(!t)return null;let[n,r]=t;return{id:n,item:r}},gt=()=>{let e=Y();if(!e)return 1;let t=e.id,n=e.item,r=nt.value.get(String(t));return typeof r==`number`&&Number.isFinite(r)?r:typeof n?.defCoe==`number`&&Number.isFinite(n.defCoe)?n.defCoe:1},_t=(e,t,n)=>{let r=v(O.serviceId),i=r?.code||`D1`,a=r?.name||`全过程造价咨询`;return{id:H(t,Y()?.id||E),projectIndex:t,majorDictId:Y()?.id||E,groupCode:i,groupName:a,majorCode:i,majorName:a,hasCost:!0,hasArea:!1,amount:e,benchmarkBudget:null,benchmarkBudgetBasic:null,benchmarkBudgetOptional:null,benchmarkBudgetBasicChecked:typeof n?.benchmarkBudgetBasicChecked==`boolean`?n.benchmarkBudgetBasicChecked:!0,benchmarkBudgetOptionalChecked:typeof n?.benchmarkBudgetOptionalChecked==`boolean`?n.benchmarkBudgetOptionalChecked:!0,basicFormula:``,optionalFormula:``,consultCategoryFactor:typeof n?.consultCategoryFactor==`number`?n.consultCategoryFactor:rt(),majorFactor:typeof n?.majorFactor==`number`?n.majorFactor:gt(),workStageFactor:typeof n?.workStageFactor==`number`?n.workStageFactor:1,workRatio:typeof n?.workRatio==`number`?n.workRatio:100,budgetFee:null,budgetFeeBasic:null,budgetFeeOptional:null,remark:typeof n?.remark==`string`?n.remark:``,path:z.value?[at(t),H(t,Y()?.id||E)]:[H(t,Y()?.id||E)]}},vt=(e,t)=>{let n=V(t?.projectCount??it()),r=Y()?.id||E,i=t?.preferSummaryAmountWhenSingleRow?ht(e,t.totalAmount):null,a=new Map;for(let t of e||[]){let e=C(t),n=x(t)||r;a.set(S(e,n),t),String(t.id||``)===E&&!a.has(S(e,r))&&a.set(S(e,r),t)}let o=[];for(let s=1;s<=n;s++){let n=S(s,r),c=S(1,r),l=a.get(n)||(t?.cloneFromProjectOne&&s>1?a.get(c):void 0),u=t?.cloneFromProjectOne&&s>1&&l==null?ht(e,t.totalAmount):null;o.push(_t(i??(typeof l?.amount==`number`?l.amount:u),s,l))}return o},yt=async e=>{let t=new Map;for(let n of e)t.set(n.id,n);return(await J()).map(e=>{let n=t.get(e.id);return n?{...e,serviceFee:typeof n.serviceFee==`number`?n.serviceFee:null,consultCategoryFactor:typeof n.consultCategoryFactor==`number`?n.consultCategoryFactor:null,majorFactor:typeof n.majorFactor==`number`?n.majorFactor:null,workStageFactor:typeof n.workStageFactor==`number`?n.workStageFactor:1,workRatio:typeof n.workRatio==`number`?n.workRatio:100,remark:typeof n.remark==`string`?n.remark:``}:e})};Pe(()=>G.value,()=>Qt());let bt=e=>ke(e,`cost`),xt=o(()=>O.projectInfoKey||`xm-base-info-v1`),X=d(``),St=async()=>{try{let e=await M.getItem(xt.value);X.value=typeof e?.projectIndustry==`string`?e.projectIndustry.trim():``}catch(e){console.error(`loadProjectIndustry failed:`,e),X.value=``}},Ct=o(()=>{let e=X.value;if(!e)return{};let t=be().filter(({id:t})=>xe(t,e)).map(({id:e,item:t})=>[e,t]);return Object.fromEntries(t)}),wt=[],Tt=m({name:`selecttypeCellRenderer`,props:{params:{type:Object,required:!0}},setup(e){return()=>{if(e.params.node.rowPinned===`bottom`)return`/`;let t=d([]);(async()=>{let n=e.params.context.contractId;t.value=await b().query([{field:`type`,value:`ht-major-factor-v1-${n}-factor`,operator:`eq`}])})();let n=e.params.data,r=e=>{let r=e.target.value,i=t.value.find((e,t)=>t===Number(r));n.majortype=r,n.workStageFactor=i?.budgetValue??null,console.log(n),Q()};return p(`div`,{style:{height:`100%`,width:`100%`}},[p(`select`,{style:{height:`100%`,width:`100%`,padding:`0 10px`,border:`none`,borderRadius:`4px`,backgroundColor:`#f9fafb`,fontSize:`13px`,color:`#333`,outline:`none`,cursor:`pointer`,transition:`all 0.2s`},onChange:e=>{r(e)},onFocus:e=>{let t=e.target;t.style.backgroundColor=`#eff6ff`,t.style.boxShadow=`0 0 0 1px #3b82f6`},onBlur:e=>{let t=e.target;t.style.backgroundColor=`#f9fafb`,t.style.boxShadow=`none`},onMouseover:e=>{let t=e.target;t.style.backgroundColor=`#f3f4f6`},onMouseout:e=>{let t=e.target;t.style.backgroundColor=`#f9fafb`},value:n.majortype??0},Object.entries(wt).map(([e,t])=>p(`option`,{value:e},t.name)))])}}}),Et=m({name:`Selectcomputbase`,props:{params:{type:Object,required:!0}},setup(e){return()=>{if(e.params.node.rowPinned===`bottom`)return`/`;let t=e.params?.data||{},n=[{label:A(`pricingScale.columns.computbaseoption.a`),value:`0`},{label:A(`pricingScale.columns.computbaseoption.b`),value:`1`},{label:A(`pricingScale.columns.computbaseoption.c`),value:`2`},{label:A(`pricingScale.columns.computbaseoption.d`),value:`3`},{label:A(`pricingScale.columns.computbaseoption.e`),value:`4`}];function r(e){t.computbase=e,Q()}return p(`div`,{style:{height:`100%`,width:`100%`,display:`flex`,alignItems:`center`,padding:`0 10px`,gap:`14px`,flexWrap:`wrap`}},[...n.map(e=>p(`label`,{style:{display:`inline-flex`,alignItems:`center`,fontSize:`10px`,color:`#333`}},[p(`input`,{type:`radio`,name:`computbase-${t.id}`,style:{width:`16px`,height:`16px`,marginRight:`6px`,accentColor:`#1677ff`,cursor:`default`},value:e.value,checked:t.computbase==Number(e.value),onInput:()=>r(e.value)}),e.label]))])}}}),Dt=m({name:`Selectbasetype`,props:{params:{type:Object,required:!0}},setup(e){return()=>{if(e.params.node.rowPinned===`bottom`)return`/`;let t=e.params?.data||{},n=[{label:A(`pricingScale.columns.basetypeoption.a`),value:`0`},{label:A(`pricingScale.columns.basetypeoption.b`),value:`1`},{label:A(`pricingScale.columns.basetypeoption.c`),value:`2`},{label:A(`pricingScale.columns.basetypeoption.d`),value:`3`},{label:A(`pricingScale.columns.basetypeoption.e`),value:`4`},{label:A(`pricingScale.columns.basetypeoption.f`),value:`5`},{label:A(`pricingScale.columns.basetypeoption.g`),value:`6`},{label:A(`pricingScale.columns.basetypeoption.h`),value:`7`}];function r(e){t.basetype=e,Q()}return p(`div`,{style:{height:`100%`,width:`100%`,display:`flex`,alignItems:`center`,padding:`0 10px`,gap:`14px`,flexWrap:`wrap`}},[...n.map(e=>p(`label`,{style:{display:`inline-flex`,alignItems:`center`,fontSize:`10px`,color:`#333`}},[p(`input`,{type:`radio`,name:`basetype-${t.id}`,style:{width:`16px`,height:`16px`,marginRight:`6px`,accentColor:`#1677ff`,cursor:`default`},value:e.value,checked:t.basetype==Number(e.value),onInput:()=>r(e.value)}),e.label]))])}}}),Ot=[{headerName:A(`pricingScale.columns.name`),field:`majorName`,minWidth:150,flex:1.5,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:e=>e.node?.rowPinned?``:e.value||``},{headerName:A(`pricingScale.columns.projecttype`),minWidth:200,flex:1.9,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},cellRenderer:Tt},{headerName:A(`pricingScale.columns.base`),field:`amount`,minWidth:120,flex:1,editable:!0,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:e=>e.value||A(`pricingScale.columns.enterdata`),cellClass:` remark-wrap-cell`,cellClassRules:{"editable-cell-empty":e=>e.value==null||e.value===``}},{headerName:A(`pricingScale.columns.computbase`),field:`computbase`,headerClass:`ag-right-aligned-header`,minWidth:372,cellRenderer:Et},{headerName:A(`pricingScale.columns.basetype`),field:`basetype`,headerClass:`ag-right-aligned-header`,minWidth:372,cellRenderer:Dt},{headerName:A(`pricingScale.columns.formula`),field:`optionalFormula`,minWidth:200,flex:1.5,editable:!1,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:e=>e.value||``},{headerName:A(`pricingScale.columns.calculationAmount`),field:`budgetFee`,headerClass:`ag-right-aligned-header`,minWidth:120,flex:1,editable:!1,cellClassRules:{"ag-right-aligned-cell":()=>!0}},{headerName:A(`pricingScale.columns.calculation`),marryChildren:!0,children:[{headerName:A(`pricingScale.columns.workStageFactor`),field:`workStageFactor`,headerClass:`ag-right-aligned-header`,minWidth:80,flex:1,editable:!1,valueFormatter:e=>e.node?.rowPinned===`bottom`?`/`:w(e)},{headerName:A(`pricingScale.columns.workRatio`),field:`workRatio`,headerClass:`ag-right-aligned-header`,minWidth:80,flex:1,editable:e=>!e.node?.group&&!e.node?.rowPinned,cellClass:e=>!e.node?.group&&!e.node?.rowPinned?`editable-cell-line`:``,cellClassRules:{"ag-right-aligned-cell":()=>!0,"editable-cell-empty":e=>!e.node?.group&&!e.node?.rowPinned&&(e.value==null||e.value===``)},valueParser:e=>_(e.newValue,{precision:2}),valueFormatter:e=>e.node?.rowPinned===`bottom`?`/`:w(e,2)},{headerName:A(`pricingScale.columns.serviceFee`),field:`serviceFee`,colId:`serviceFeeTotal`,headerClass:`ag-right-aligned-header`,minWidth:120,flex:1,aggFunc:oe,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueGetter:e=>{let t=e.data?.workStageFactor??0,n=e.data?.workRatio??0,r=e.data?.budgetFee??0,i=n*t*r;if(e.node?.rowPinned===`bottom`){let e=W.value.reduce((e,t)=>e+(t.workStageFactor||0)*(t.workRatio||0)*(t.budgetFee||0),0);return Math.round(e)}return Math.round(i)},valueFormatter:Ne}]},{headerName:A(`pricingScale.columns.remark`),field:`remark`,minWidth:100,flex:1.2,cellEditor:`agLargeTextCellEditor`,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},editable:e=>!e.node?.group&&!e.node?.rowPinned,valueFormatter:e=>!e.node?.group&&!e.node?.rowPinned&&!e.value?A(`pricingScale.clickToInput`):e.value||``,cellClass:e=>!e.node?.group&&!e.node?.rowPinned?` remark-wrap-cell`:``,cellClassRules:{"editable-cell-empty":e=>!e.node?.group&&!e.node?.rowPinned&&(e.value==null||e.value===``)}}],kt=o(()=>Oe(Ot)),At={headerName:A(`pricingScale.columns.number`),minWidth:80,flex:2,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},cellRenderer:void 0,colSpan:e=>e.node?.rowPinned||e.data?.id===`pinned-total-row`?2:1,valueFormatter:e=>{if(e.node?.rowPinned)return`小计`;let t=e.data;return t?.majorCode?`${t.majorCode}`:e.value||``},tooltipValueGetter:e=>{if(e.node?.rowPinned)return st.value;let t=e.data;return t?.majorCode&&t?.majorName?`${t.majorCode} ${t.majorName}`:e.value||``}},jt=o(()=>T(G.value,e=>e.budgetFee)),Mt=o(()=>T(G.value,e=>bt(e)?.basic)),Nt=o(()=>T(G.value,e=>bt(e)?.optional)),Pt=o(()=>T(G.value,e=>e.serviceFee*1e4)),Ft=o(()=>[{id:`pinned-total-row`,groupCode:``,groupName:``,majorCode:``,majorName:st.value,base:`/`,hasCost:!1,hasArea:!1,amount:`/`,benchmarkBudget:null,benchmarkBudgetBasic:null,benchmarkBudgetOptional:null,benchmarkBudgetBasicChecked:!0,benchmarkBudgetOptionalChecked:!0,basicFormula:`/`,optionalFormula:`/`,workStageFactor:`/`,workRatio:`/`,consultCategoryFactor:null,majorFactor:null,budgetFee:jt.value,budgetFeeBasic:Mt.value,budgetFeeOptional:Nt.value,serviceFee:Pt.value,remark:``,path:[`TOTAL`]}]),Z=()=>{Ae(G.value,`cost`)},Q=async e=>{let t=W.value.map(e=>({...e,type:`${O.contractId}-investment`})),n=await b().upsertBatch(t);console.log(`💾 数据保存成功:`,n)},It=async()=>{},Lt=async e=>{},Rt=e=>String(e.data?.id||``),zt={...we,getRowId:Rt,groupDefaultExpanded:-1,groupHideOpenParents:!0},Bt=o(()=>JSON.stringify({consultFactorChange:k.keyedStates[P.value]??M.entries[P.value]??null,majorFactorChange:k.keyedStates[F.value]??M.entries[F.value]??null})),Vt=o(()=>JSON.stringify(M.entries[N.value]??null)),Ht=async e=>[],Ut=e=>{G.value=e.map(e=>({...e,benchmarkBudgetBasicChecked:typeof e.benchmarkBudgetBasicChecked==`boolean`?e.benchmarkBudgetBasicChecked:!0,benchmarkBudgetOptionalChecked:typeof e.benchmarkBudgetOptionalChecked==`boolean`?e.benchmarkBudgetOptionalChecked:!0}))},Wt=async()=>{if(mt(),G.value.length===0){L.value?.refreshCells({force:!0});return}let e=new Map;for(let t of q){e.set(t.id,{groupCode:t.code,groupName:t.name,majorCode:t.code,majorName:t.name});for(let n of t.children)e.set(n.id,{groupCode:t.code,groupName:t.name,majorCode:n.code,majorName:n.name})}let t=!1;G.value=G.value.map(n=>{let r=e.get(x(n));return!r||n.groupCode===r.groupCode&&n.groupName===r.groupName&&n.majorCode===r.majorCode&&n.majorName===r.majorName?n:(t=!0,{...n,groupCode:r.groupCode,groupName:r.groupName,majorCode:r.majorCode,majorName:r.majorName})}),L.value?.refreshCells({force:!0}),t&&(Z(),await Q({skipComputedSync:!0}))},Gt=(e,t)=>({...e,...t,id:e.id,projectIndex:e.projectIndex,majorDictId:e.majorDictId,groupCode:e.groupCode,groupName:e.groupName,majorCode:e.majorCode,majorName:e.majorName,hasCost:e.hasCost,hasArea:e.hasArea,path:e.path}),Kt=async()=>{Z(),await Q({skipComputedSync:!0})},qt=async e=>{await ze({nextValue:e,setProjectCount:e=>{B.value=e},isMutipleService:z.value,currentRows:G.value,cloneRows:e=>e.map(e=>({...e})),normalizeProjectCount:V,inferProjectCountFromRows:e=>ot(e),buildRowsForReducedCount:(e,t)=>R.value?vt(e,{projectCount:t}):yt(e,{projectCount:t}),buildRowsFromImportDefaultSource:Ht,getRowKey:e=>Be(e),getRowProjectIndex:e=>C(e),mergeExistingRow:Gt,applyRows:Ut,afterApplyRows:Kt})},Jt=async()=>{await ct();try{let e=await b().query([{field:`type`,value:`${O.contractId}-investment`,operator:`eq`}]),t=await J();if(e&&e.length>0){let n=new Map(e.map(e=>[e.majorCode,{id:String(e.id||``),projectIndex:e.projectIndex==null?void 0:Number(e.projectIndex),majorDictId:e.majorDictId==null?void 0:String(e.majorDictId),groupCode:String(e.groupCode||``),groupName:String(e.groupName||``),majorCode:String(e.majorCode||``),majorName:String(e.majorName||``),hasCost:!!e.hasCost,hasArea:!!e.hasArea,amount:e.amount==null?null:Number(e.amount),benchmarkBudget:e.benchmarkBudget==null?null:Number(e.benchmarkBudget),benchmarkBudgetBasic:e.benchmarkBudgetBasic==null?null:Number(e.benchmarkBudgetBasic),benchmarkBudgetOptional:e.benchmarkBudgetOptional==null?null:Number(e.benchmarkBudgetOptional),benchmarkBudgetBasicChecked:!!e.benchmarkBudgetBasicChecked,benchmarkBudgetOptionalChecked:!!e.benchmarkBudgetOptionalChecked,basicFormula:e.basicFormula==null?null:String(e.basicFormula),optionalFormula:e.optionalFormula==null?null:String(e.optionalFormula),consultCategoryFactor:e.consultCategoryFactor==null?null:Number(e.consultCategoryFactor),majorFactor:e.majorFactor==null?null:Number(e.majorFactor),workStageFactor:e.workStageFactor,workRatio:e.workRatio,budgetFee:e.budgetFee==null?null:Number(e.budgetFee),budgetFeeBasic:e.budgetFeeBasic==null?null:Number(e.budgetFeeBasic),budgetFeeOptional:e.budgetFeeOptional==null?null:Number(e.budgetFeeOptional),serviceFee:e.serviceFee==null?0:Number(e.serviceFee),remark:String(e.remark||``),path:Array.isArray(e.path)?e.path:[],base:String(e.base||``),majortype:Number(e.majortype||``),computbase:Number(e.computbase||``),basetype:Number(e.basetype||``)}])),r=t.map(e=>{let t=n.get(e.majorCode);return t?{...t,majorName:e.majorName}:e});W.value=r,console.log(`✅ 从数据库加载数据(保持默认顺序)`,r);return}console.log(`🆕 首次进入,加载默认数据`),W.value=t}catch(e){console.error(`loadFromIndexedDB error:`,e),W.value=await J()}},Yt=async()=>{try{let e=b(),t=await e.query([{field:`type`,value:`${O.contractId}-investment`,operator:`eq`}]);t.length&&await e.deleteBatch(t.map(e=>e.id));let n=await J();await e.upsertBatch(n),W.value=n,console.log(`✅ 成功覆盖默认数据`)}catch(e){console.error(`❌ 覆盖默认数据失败`,e)}},Xt=async()=>{try{let e=(await b().query([{field:`type`,value:`${O.contractId}-investment`,operator:`eq`}])).map(e=>e.id);await b().deleteBatch(e),W.value=await J(),console.log(`✅ 清空成功!`)}catch(e){console.error(`❌ 清空失败`,e)}},Zt=async e=>{await r(),Z(),L.value?.refreshHeader(),L.value?.refreshCells({force:!0}),await Q({skipComputedSync:!0}),await r(),L.value?.refreshHeader(),L.value?.refreshCells({force:!0})},Qt=e=>{let t=e.data;if((e.column?.getColId()||e.column?.getColDef().field)&&t){let n=Number(e.newValue)||0,r=t.groupCode||t.majorCode||``;if(r&&n>0){let{formula:e,amount:i,base:a}=ut(r,n);t.optionalFormula=e,t.budgetFee=i,t.base=a,t.serviceFee=dt(t)}else t.optionalFormula=``,t.budgetFee=0,t.base=``,t.serviceFee=0;e.api.applyTransaction({update:[t]}),ft(),Q()}Q()},$t=()=>{},$=e=>{Zt(e?.type||`bulk-end`)},en=e=>{L.value=e.api};Fe({gridApi:L,loadFromIndexedDB:Jt,syncLinkedFields:It,linkedSourceSignature:Bt,linkedSecondarySignature:Vt,syncSecondaryLinkedFields:()=>Lt((M.entries[N.value]??void 0)?.changedRowIds),saveToIndexedDB:()=>Q()}),ee(()=>j.value,()=>{Wt()}),ee(()=>b().items,async e=>{Object.keys(e).length>0&&Jt()},{immediate:!0,deep:!0});let tn=e=>Array.isArray(e.value)?JSON.stringify(e.value):e.value,nn=e=>{let t=String(e.column?.getColDef?.().field||``);if(t===`amount`||t===`consultCategoryFactor`||t===`majorFactor`||t===`workStageFactor`)return _(e.value,{precision:3});if(t===`workRatio`)return _(e.value,{precision:2});try{let t=JSON.parse(e.value);if(Array.isArray(t))return t}catch{}return e.value};return c(async()=>{await St(),wt=Ct.value}),(r,o)=>(t(),s(`div`,He,[u(`div`,Ue,[u(`div`,We,[u(`div`,Ge,[u(`h3`,Ke,i(f(A)(`pricingPane.investment.title`)),1),z.value?(t(),s(`div`,qe,[u(`span`,Je,i(f(A)(`pricingPane.projectCount`)),1),e(f(le),{modelValue:B.value,"onUpdate:modelValue":[o[0]||=e=>B.value=e,o[1]||=e=>void qt(e)],min:1,step:1,class:`inline-flex items-center rounded-md border bg-background`},{default:h(()=>[e(f(se),{class:`cursor-pointer px-2 py-1 text-xs text-muted-foreground hover:bg-muted`},{default:h(()=>[...o[2]||=[l(`-`,-1)]]),_:1}),e(f(ce),{class:`h-7 w-14 border-x bg-transparent px-2 text-center text-xs outline-none`}),e(f(ve),{class:`cursor-pointer px-2 py-1 text-xs text-muted-foreground hover:bg-muted`},{default:h(()=>[...o[3]||=[l(`+`,-1)]]),_:1})]),_:1},8,[`modelValue`])])):a(``,!0)]),u(`div`,Ye,[e(f(_e),null,{default:h(()=>[e(f(de),null,{default:h(()=>[e(f(fe),{class:`fixed inset-0 z-50 bg-black/45`}),e(f(me),{class:`fixed left-1/2 top-1/2 z-50 w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:h(()=>[e(f(g),{class:`text-base font-semibold`},{default:h(()=>[l(i(f(A)(`pricingPane.clearTitle`)),1)]),_:1}),e(f(ge),{class:`mt-2 text-sm text-muted-foreground`},{default:h(()=>[l(i(f(A)(`pricingPane.investment.clearDesc`)),1)]),_:1}),u(`div`,Xe,[e(f(he),{"as-child":``},{default:h(()=>[e(f(y),{variant:`outline`},{default:h(()=>[l(i(f(A)(`common.cancel`)),1)]),_:1})]),_:1}),e(f(pe),{"as-child":``},{default:h(()=>[e(f(y),{variant:`destructive`,onClick:Yt},{default:h(()=>[l(i(f(A)(`pricingPane.confirmClear`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1}),e(f(_e),null,{default:h(()=>[e(f(ue),{"as-child":``},{default:h(()=>[e(f(y),{type:`button`,variant:`outline`,size:`sm`},{default:h(()=>[l(i(f(A)(`pricingPane.useDefault`)),1)]),_:1})]),_:1}),e(f(de),null,{default:h(()=>[e(f(fe),{class:`fixed inset-0 z-50 bg-black/45`}),e(f(me),{class:`fixed left-1/2 top-1/2 z-50 w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:h(()=>[e(f(g),{class:`text-base font-semibold`},{default:h(()=>[l(i(f(A)(`pricingPane.overrideTitle`)),1)]),_:1}),e(f(ge),{class:`mt-2 text-sm text-muted-foreground`},{default:h(()=>[l(i(f(A)(`pricingPane.investment.overrideDesc`)),1)]),_:1}),u(`div`,Ze,[e(f(he),{"as-child":``},{default:h(()=>[e(f(y),{variant:`outline`},{default:h(()=>[l(i(f(A)(`common.cancel`)),1)]),_:1})]),_:1}),e(f(pe),{"as-child":``},{default:h(()=>[e(f(y),{onClick:Xt},{default:h(()=>[l(i(f(A)(`pricingPane.confirmOverride`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1})])]),u(`div`,{class:te(f(Te))},[e(f(ne),{style:n(f(De)),rowData:G.value,pinnedBottomRowData:Ft.value,columnDefs:kt.value,autoGroupColumnDef:At,gridOptions:zt,theme:f(Ee),animateRows:!0,context:{contractId:O.contractId},onGridReady:en,onCellValueChanged:Qt,suppressColumnVirtualisation:!0,onPasteStart:$t,onPasteEnd:$,onFillStart:$t,onFillEnd:$,suppressRowVirtualisation:!0,cellSelection:{handle:{mode:`range`}},enableClipboard:!0,localeText:f(Ce),tooltipShowDelay:500,headerHeight:50,processCellForClipboard:tn,processCellFromClipboard:nn,undoRedoCellEditing:!0,undoRedoCellEditingLimit:20},null,8,[`style`,`rowData`,`pinnedBottomRowData`,`columnDefs`,`theme`,`context`,`localeText`])],2)])]))}});export{D as default}; \ No newline at end of file diff --git a/33/static/js/LandScalePricingPane-DgT-hiGV.js b/33/static/js/LandScalePricingPane-DgT-hiGV.js new file mode 100644 index 0000000..7112053 --- /dev/null +++ b/33/static/js/LandScalePricingPane-DgT-hiGV.js @@ -0,0 +1 @@ +import{$ as e,Bt as t,Cr as n,Dt as r,Er as i,G as a,H as o,K as s,Q as c,U as l,Wn as u,er as d,ft as f,mn as p,tt as m,xr as ee,yn as h}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as te}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as ne}from"./workspace-DxKKyh8w.js";import{a as re,d as ie}from"./decimal-D3bp1pbs.js";import{B as ae,R as oe,V as se,z as ce}from"./vendor-ui-B4V4Cf1T.js";import{r as g}from"./numberFormat-jhZZmX17.js";import{a as le,c as ue,h as _}from"./sql-C69Jo4HU.js";import{C as de,n as v}from"./index-CAPJG_im.js";import{t as fe}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as pe,i as me,o as he,r as ge,t as _e}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";import{n as ve,o as ye}from"./pricingScaleDetail-CuzzWQVd.js";import{l as y,o as b,u as x}from"./pricingScaleLink-BNsm4Fxd.js";import"./xmFactorDefaults-yPGPQ25R.js";import{a as be,o as xe,t as Se}from"./pricingScaleGrid-BCsr0Q1x.js";import{n as S}from"./pricingScaleCalc-CxdG8IMv.js";import{t as Ce}from"./pricingScalePaneLifecycle-CUGyrg3j.js";import{a as we,i as Te,n as Ee,o as De,r as Oe,t as ke}from"./pricingScaleProject-DnXeytCB.js";var Ae={class:`h-full min-h-0 flex flex-col`},je={class:`rounded-lg border bg-card xmMx flex min-h-0 flex-1 flex-col`},Me={class:`flex items-center justify-between border-b px-4 py-3`},Ne={class:`flex items-center gap-3`},Pe={class:`text-sm font-semibold text-foreground`},Fe={key:0,class:`flex items-center gap-2`},Ie={class:`text-xs text-muted-foreground`},C=`__only-cost-scale-total__`,w=m({__name:`LandScalePricingPane`,props:{contractId:{},serviceId:{},projectInfoKey:{}},setup(w){let T=w,E=de(),{t:D,locale:O}=ne(),k=ie();o(()=>`tzGMF-${T.contractId}-${T.serviceId}`);let Le=o(()=>`ht-info-v3-${T.contractId}`),A=o(()=>`ht-info-scale-change-v1-${T.contractId}`),Re=o(()=>`ht-consult-category-factor-v1-${T.contractId}`),ze=o(()=>`ht-major-factor-v1-${T.contractId}`),j=o(()=>`${Re.value}-change`),M=o(()=>`${ze.value}-change`);o(()=>T.projectInfoKey||`xm-base-info-v1`);let N=u(``),Be=u(new Map),Ve=u(new Map),P=u(null),He=()=>Be.value.get(String(T.serviceId))??null,F=o(()=>_(T.serviceId)?.onlyCostScale===!0),I=o(()=>_(T.serviceId)?.mutiple===!0),L=u(1),R=we,Ue=()=>I.value?R(L.value):1,We=e=>ke(e),z=(e,t)=>Ee(I.value,e,t),Ge=e=>Te(e,I.value),B=o(()=>{if(F.value){let e=_(T.serviceId);return`${e?.code||``} ${e?.name||``}`.trim()}let e=le(N.value.trim(),O.value);return e?D(`pricingScale.totalInvestmentByIndustry`,{industryName:e}):D(`pricingScale.totalInvestment`)}),V=u(null),Ke=async()=>{try{let e=await k.getItem(Le.value);if(typeof e?.totalAmount==`number`&&e.totalAmount>0){V.value=e.totalAmount;return}let t=await k.getItem(`xm-info-v3`);V.value=typeof t?.totalAmount==`number`?t.totalAmount:null}catch{V.value=null}},qe={"F1*":[{limit:200,rate:.0327,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0273,baseAmount:6540,base:`201~500万`},{limit:2e3,rate:.0216,baseAmount:14760,base:`501~2000万`},{limit:5e3,rate:.017,baseAmount:47160,base:`2001~5000万`},{limit:1e4,rate:.0151,baseAmount:98160,base:`5001~10000万`},{limit:3e4,rate:.0118,baseAmount:173660,base:`10001~30000万`},{limit:1/0,rate:.009,baseAmount:409660,base:`30000万以上`}],"F2-1*":[{limit:200,rate:.0087,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0073,baseAmount:1.74,base:`201~500万`},{limit:2e3,rate:.0056,baseAmount:3.93,base:`501~2000万`},{limit:5e3,rate:.0046,baseAmount:12.33,base:`2001~5000万`},{limit:1e4,rate:.0037,baseAmount:26.13,base:`5001~10000万`},{limit:3e4,rate:.0028,baseAmount:44.63,base:`10001~30000万`},{limit:1/0,rate:.0018,baseAmount:100.63,base:`30000万以上`}],"F2-2*":[{limit:200,rate:.024,baseAmount:0,base:`F≤200万`},{limit:500,rate:.02,baseAmount:4.8,base:`201~500万`},{limit:2e3,rate:.016,baseAmount:10.8,base:`501~2000万`},{limit:5e3,rate:.0126,baseAmount:34.8,base:`2001~5000万`},{limit:1e4,rate:.0114,baseAmount:72.6,base:`5001~10000万`},{limit:3e4,rate:.009,baseAmount:129.6,base:`10001~30000万`},{limit:1/0,rate:.0072,baseAmount:309.6,base:`30000万以上`}],"F2-3":[{limit:200,rate:.021,baseAmount:0,base:`F≤200万`},{limit:500,rate:.017,baseAmount:4.2,base:`201~500万`},{limit:2e3,rate:.013,baseAmount:9.3,base:`501~2000万`},{limit:5e3,rate:.0096,baseAmount:28.8,base:`2001~5000万`},{limit:1e4,rate:.0084,baseAmount:57.6,base:`5001~10000万`},{limit:3e4,rate:.006,baseAmount:99.6,base:`10001~30000万`},{limit:1/0,rate:.0042,baseAmount:219.6,base:`30000万以上`}],"F2-4":[{limit:200,rate:.018,baseAmount:0,base:`F≤200万`},{limit:500,rate:.014,baseAmount:3.6,base:`201~500万`},{limit:2e3,rate:.011,baseAmount:7.8,base:`501~2000万`},{limit:5e3,rate:.008,baseAmount:24.3,base:`2001~5000万`},{limit:1e4,rate:.007,baseAmount:48.3,base:`5001~10000万`},{limit:3e4,rate:.005,baseAmount:83.3,base:`10001~30000万`},{limit:1/0,rate:.0035,baseAmount:183.3,base:`30000万以上`}],"F3-1-1":[{limit:200,rate:.0011,baseAmount:0,base:`F≤200万`},{limit:500,rate:.001,baseAmount:.22,base:`201~500万`},{limit:2e3,rate:8e-4,baseAmount:.52,base:`501~2000万`},{limit:5e3,rate:7e-4,baseAmount:1.72,base:`2001~5000万`},{limit:1e4,rate:6e-4,baseAmount:3.82,base:`5001~10000万`},{limit:3e4,rate:5e-4,baseAmount:6.82,base:`10001~30000万`},{limit:1/0,rate:4e-4,baseAmount:16.82,base:`30000万以上`}],"F3-1-2":[{limit:200,rate:9e-4,baseAmount:0,base:`F≤200万`},{limit:500,rate:8e-4,baseAmount:.18,base:`201~500万`},{limit:2e3,rate:7e-4,baseAmount:.42,base:`501~2000万`},{limit:5e3,rate:6e-4,baseAmount:1.47,base:`2001~5000万`},{limit:1e4,rate:5e-4,baseAmount:3.27,base:`5001~10000万`},{limit:3e4,rate:4e-4,baseAmount:5.77,base:`10001~30000万`},{limit:1/0,rate:3e-4,baseAmount:13.77,base:`30000万以上`}],"F3-2-2":[{limit:200,rate:.0022,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0019,baseAmount:.44,base:`201~500万`},{limit:2e3,rate:.0015,baseAmount:1.01,base:`501~2000万`},{limit:5e3,rate:.0013,baseAmount:3.26,base:`2001~5000万`},{limit:1e4,rate:.001,baseAmount:7.16,base:`5001~10000万`},{limit:3e4,rate:8e-4,baseAmount:12.16,base:`10001~30000万`},{limit:1/0,rate:5e-4,baseAmount:28.16,base:`30000万以上`}],"F3-3-10":[{limit:200,rate:.0056,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0046,baseAmount:1.12,base:`201~500万`},{limit:2e3,rate:.0034,baseAmount:2.5,base:`501~2000万`},{limit:5e3,rate:.0027,baseAmount:7.6,base:`2001~5000万`},{limit:1e4,rate:.0022,baseAmount:15.7,base:`5001~10000万`},{limit:3e4,rate:.0016,baseAmount:26.7,base:`10001~30000万`},{limit:1/0,rate:.001,baseAmount:58.7,base:`30000万以上`}],"F3-3-11":[{limit:200,rate:.0016,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0014,baseAmount:.32,base:`201~500万`},{limit:2e3,rate:.001,baseAmount:.74,base:`501~2000万`},{limit:5e3,rate:8e-4,baseAmount:2.24,base:`2001~5000万`},{limit:1e4,rate:6e-4,baseAmount:4.64,base:`5001~10000万`},{limit:3e4,rate:5e-4,baseAmount:7.64,base:`10001~30000万`},{limit:1/0,rate:3e-4,baseAmount:17.64,base:`30000万以上`}],"F3-3-12":[{limit:200,rate:.0016,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0014,baseAmount:.32,base:`201~500万`},{limit:2e3,rate:.001,baseAmount:.74,base:`501~2000万`},{limit:5e3,rate:8e-4,baseAmount:2.24,base:`2001~5000万`},{limit:1e4,rate:6e-4,baseAmount:4.64,base:`5001~10000万`},{limit:3e4,rate:5e-4,baseAmount:7.64,base:`10001~30000万`},{limit:1/0,rate:3e-4,baseAmount:17.64,base:`30000万以上`}],"F3-4-1":[{limit:200,rate:.008,baseAmount:0,base:`F≤200万`},{limit:500,rate:.007,baseAmount:1.6,base:`201~500万`},{limit:2e3,rate:.006,baseAmount:3.7,base:`501~2000万`},{limit:5e3,rate:.005,baseAmount:12.7,base:`2001~5000万`},{limit:1e4,rate:.004,baseAmount:27.7,base:`5001~10000万`},{limit:3e4,rate:.003,baseAmount:47.7,base:`10001~30000万`},{limit:1/0,rate:.002,baseAmount:107.7,base:`30000万以上`}],"F3-4-2":[{limit:200,rate:.012,baseAmount:0,base:`F≤200万`},{limit:500,rate:.0105,baseAmount:2.4,base:`201~500万`},{limit:2e3,rate:.009,baseAmount:5.55,base:`501~2000万`},{limit:5e3,rate:.0075,baseAmount:19.05,base:`2001~5000万`},{limit:1e4,rate:.006,baseAmount:41.55,base:`5001~10000万`},{limit:3e4,rate:.0045,baseAmount:71.55,base:`10001~30000万`},{limit:1/0,rate:.003,baseAmount:161.55,base:`30000万以上`}],"F3-4-3":[{limit:1/0,rate:.003,baseAmount:0,base:`无区间`}],"F3-4-4":[{limit:1/0,rate:.003,baseAmount:0,base:`无区间`}],"F3-4-5":[{limit:200,rate:.006,baseAmount:0,base:`F≤200万`},{limit:500,rate:.005,baseAmount:1.2,base:`201~500万`},{limit:2e3,rate:.004,baseAmount:2.7,base:`501~2000万`},{limit:5e3,rate:.003,baseAmount:8.7,base:`2001~5000万`},{limit:1e4,rate:.002,baseAmount:17.7,base:`5001~10000万`},{limit:3e4,rate:.0013,baseAmount:27.7,base:`10001~30000万`},{limit:1/0,rate:8e-4,baseAmount:53.7,base:`30000万以上`}],"F3-5":[{limit:1/0,rate:.008,baseAmount:0,base:`无区间`}],"F3-6-2":[{limit:100,rate:0,baseAmount:0,base:`≤100万`},{limit:500,rate:.25,baseAmount:0,base:`101~500万`},{limit:1e3,rate:.15,baseAmount:1e3,base:`501~1000万`},{limit:3e3,rate:.1,baseAmount:1750,base:`1001~3000万`},{limit:8e3,rate:.05,baseAmount:3750,base:`3001~8000万`},{limit:15e3,rate:.03,baseAmount:6250,base:`8001~15000万`},{limit:1/0,rate:.02,baseAmount:8350,base:`15000万以上`}]},Je=(e,t)=>{if(t==null||t<0)return{formula:``,amount:0,base:``};let n=qe[e];if(!n)return{formula:`无对应规则`,amount:0,base:``};let r=0;for(let e=0;e{let t=typeof e.budgetFee==`number`?e.budgetFee:0,n=typeof e.workStageFactor==`number`?e.workStageFactor:1,r=typeof e.workRatio==`number`?e.workRatio:1;return t===null?null:Math.round(t*n*r)},Xe=()=>{for(let e of H.value)e.serviceFee=Ye(e)},H=u([]),U=o({get:()=>H.value,set:e=>{$(),H.value=e}}),W=[],G=[],K=new Map,q=()=>{let e=ue().map(({id:e,item:t})=>[e,t]);W.splice(0,W.length,...e);let t=be(W,({hasCost:e,hasArea:t})=>e&&!t);G.splice(0,G.length,...t);let n=xe(t);K.clear(),n.forEach((e,t)=>{K.set(t,e)})};q();let J=async()=>{let e=[],t=await v().query([{field:`type`,value:`${T.contractId}-zxFw`,operator:`eq`}]);for(let n of t){if(!n.typel?.onlyCostScale)continue;let t=`${T.contractId}-${n.id||n._id}-${Date.now()}`.slice(0,64),r=n.code||``,i=V.value,a=i!=null&&i>0,{formula:o,amount:s,base:c}=a?Je(r,i):{formula:``,amount:0,base:``};e.push({id:t,majorCode:r,majorName:n.name||``,hasCost:!0,hasArea:!1,amount:null,benchmarkBudget:a?s:null,benchmarkBudgetBasic:a?s:null,benchmarkBudgetOptional:a?0:null,benchmarkBudgetBasicChecked:!0,benchmarkBudgetOptionalChecked:!1,basicFormula:a?`C0建设项目总费用`:``,optionalFormula:a?o:``,consultCategoryFactor:null,majorFactor:null,workStageFactor:1,workRatio:1,budgetFee:a?s:null,budgetFeeBasic:a?s:null,budgetFeeOptional:a?0:null,serviceFee:a?Math.round(s*1*100/100):null,remark:n.remark||``,path:[r,n.id||``],base:c,majortype:0,UnitPrice:r===`F3-7-1`?12:18,QuantityBasis:0,ProjectQuantityPhase:0})}return e},Y=(e,t)=>{if(typeof t==`number`&&Number.isFinite(t))return t;let n=(e||[]).find(e=>e?.isGroupRow===!0);return typeof n?.amount==`number`&&Number.isFinite(n.amount)?n.amount:re(e||[],e=>typeof e?.amount==`number`?e.amount:null)},X=()=>{let e=String(N.value||``).trim();if(!e)return null;let t=W.find(([,t])=>String(t?.industryId??``).trim()===e&&!String(t?.code||``).includes(`-`));if(!t)return null;let[n,r]=t;return{id:n,item:r}},Ze=()=>{let e=X();if(!e)return 1;let t=e.id,n=e.item,r=Ve.value.get(String(t));return typeof r==`number`&&Number.isFinite(r)?r:typeof n?.defCoe==`number`&&Number.isFinite(n.defCoe)?n.defCoe:1},Qe=(e,t,n)=>{let r=_(T.serviceId),i=r?.code||`D1`,a=r?.name||`全过程造价咨询`;return{id:z(t,X()?.id||C),majorCode:i,majorName:a,hasCost:!0,hasArea:!1,amount:e,benchmarkBudget:null,benchmarkBudgetBasic:null,benchmarkBudgetOptional:null,benchmarkBudgetBasicChecked:typeof n?.benchmarkBudgetBasicChecked==`boolean`?n.benchmarkBudgetBasicChecked:!0,benchmarkBudgetOptionalChecked:typeof n?.benchmarkBudgetOptionalChecked==`boolean`?n.benchmarkBudgetOptionalChecked:!0,basicFormula:``,optionalFormula:``,consultCategoryFactor:typeof n?.consultCategoryFactor==`number`?n.consultCategoryFactor:He(),majorFactor:typeof n?.majorFactor==`number`?n.majorFactor:Ze(),workStageFactor:typeof n?.workStageFactor==`number`?n.workStageFactor:1,workRatio:typeof n?.workRatio==`number`?n.workRatio:100,budgetFee:null,budgetFeeBasic:null,budgetFeeOptional:null,remark:typeof n?.remark==`string`?n.remark:``,path:I.value?[We(t),z(t,X()?.id||C)]:[z(t,X()?.id||C)]}},$e=(e,t)=>{let n=R(t?.projectCount??Ue()),r=X()?.id||C,i=t?.preferSummaryAmountWhenSingleRow?Y(e,t.totalAmount):null,a=new Map;for(let t of e||[]){let e=x(t),n=y(t)||r;a.set(b(e,n),t),String(t.id||``)===C&&!a.has(b(e,r))&&a.set(b(e,r),t)}let o=[];for(let s=1;s<=n;s++){let n=b(s,r),c=b(1,r),l=a.get(n)||(t?.cloneFromProjectOne&&s>1?a.get(c):void 0),u=t?.cloneFromProjectOne&&s>1&&l==null?Y(e,t.totalAmount):null;o.push(Qe(i??(typeof l?.amount==`number`?l.amount:u),s,l))}return o},et=async e=>{let t=new Map;for(let n of e)t.set(n.id,n);return(await J()).map(e=>{let n=t.get(e.id);return n?{...e,serviceFee:typeof n.serviceFee==`number`?n.serviceFee:null,consultCategoryFactor:typeof n.consultCategoryFactor==`number`?n.consultCategoryFactor:null,majorFactor:typeof n.majorFactor==`number`?n.majorFactor:null,workStageFactor:typeof n.workStageFactor==`number`?n.workStageFactor:1,workRatio:typeof n.workRatio==`number`?n.workRatio:100,remark:typeof n.remark==`string`?n.remark:``}:e})};Se(()=>U.value,()=>Tt());let Z=e=>ve(e,`cost`),tt=m({name:`SelectQuantityBasis`,props:{params:{type:Object,required:!0}},setup(e){return()=>{if(e.params.node.rowPinned===`bottom`)return`/`;let t=e.params?.data||{},n=[{label:D(`pricingPane.land.columns.projectquantityoption.a`),value:`0`},{label:D(`pricingPane.land.columns.projectquantityoption.b`),value:`1`},{label:D(`pricingPane.land.columns.projectquantityoption.c`),value:`2`},{label:D(`pricingPane.land.columns.projectquantityoption.d`),value:`3`},{label:D(`pricingPane.land.columns.projectquantityoption.e`),value:`4`},{label:D(`pricingPane.land.columns.projectquantityoption.f`),value:`5`},{label:D(`pricingPane.land.columns.projectquantityoption.g`),value:`6`},{label:D(`pricingPane.land.columns.projectquantityoption.h`),value:`7`}];function r(e){t.QuantityBasis=e,$()}return f(`div`,{style:{height:`100%`,width:`100%`,display:`flex`,alignItems:`center`,padding:`0 10px`,gap:`14px`,flexWrap:`wrap`}},[...n.map(e=>f(`label`,{style:{display:`inline-flex`,alignItems:`center`,fontSize:`13px`,color:`#333`}},[f(`input`,{type:`radio`,name:`QuantityBasis-${t.id}`,style:{width:`16px`,height:`16px`,marginRight:`6px`,accentColor:`#1677ff`,cursor:`default`},value:e.value,checked:t.QuantityBasis==Number(e.value),onInput:()=>r(e.value)}),e.label]))])}}}),nt=m({name:`SelectProjectQuantityPhase`,props:{params:{type:Object,required:!0}},setup(e){return()=>{if(e.params.node.rowPinned===`bottom`)return`/`;let t=e.params?.data||{},n=[{label:D(`pricingPane.land.columns.ProjectSectionoption.a`),value:`0`},{label:D(`pricingPane.land.columns.ProjectSectionoption.b`),value:`1`},{label:D(`pricingPane.land.columns.ProjectSectionoption.c`),value:`2`},{label:D(`pricingPane.land.columns.ProjectSectionoption.d`),value:`3`},{label:D(`pricingPane.land.columns.ProjectSectionoption.e`),value:`4`}];function r(e){t.ProjectQuantityPhase=e,$()}return f(`div`,{style:{height:`100%`,width:`100%`,display:`flex`,alignItems:`center`,padding:`0 10px`,gap:`14px`,flexWrap:`wrap`}},[...n.map(e=>f(`label`,{style:{display:`inline-flex`,alignItems:`center`,fontSize:`13px`,color:`#333`}},[f(`input`,{type:`radio`,name:`ProjectQuantityPhase-${t.id}`,style:{width:`16px`,height:`16px`,marginRight:`6px`,accentColor:`#1677ff`,cursor:`default`},value:e.value,checked:t.ProjectQuantityPhase==Number(e.value),onInput:()=>r(e.value)}),e.label]))])}}}),rt=[{headerName:D(`pricingPane.land.columns.name`),field:`majorName`,minWidth:150,flex:1.5,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:e=>e.node?.rowPinned?``:e.value||``},{headerName:D(`pricingPane.land.columns.countbase`),minWidth:200,flex:1.9,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:e=>e.node?.rowPinned===`bottom`?`/`:D(`pricingPane.land.columns.countbasevalue`)},{headerName:D(`pricingPane.land.columns.base`),field:`amount`,minWidth:120,flex:1,editable:!0,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:e=>e.value||D(`pricingPane.land.columns.basetip`),cellClass:` remark-wrap-cell`,cellClassRules:{"editable-cell-empty":e=>e.value==null||e.value===``}},{headerName:D(`pricingPane.land.columns.UnitPrice`),field:`UnitPrice`,minWidth:100,flex:1.5,editable:!1,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueFormatter:e=>e.value?e.value:``},{headerName:D(`pricingPane.land.columns.calculationAmount`),field:`budgetFee`,headerClass:`ag-right-aligned-header`,minWidth:120,flex:1,editable:!1,cellClassRules:{"ag-right-aligned-cell":()=>!0}},{headerName:D(`pricingPane.land.columns.calculation`),field:`serviceFee`,headerClass:`ag-right-aligned-header`,minWidth:120,flex:1,editable:!0,cellClassRules:{"ag-right-aligned-cell":()=>!0}},{headerName:D(`pricingPane.land.columns.projectquantity`),field:`QuantityBasis`,headerClass:`ag-right-aligned-header`,minWidth:372,cellRenderer:tt},{headerName:D(`pricingPane.land.columns.ProjectSection`),field:`ProjectQuantityPhase`,headerClass:`ag-right-aligned-header`,minWidth:240,cellRenderer:nt},{headerName:D(`pricingScale.columns.remark`),field:`remark`,minWidth:100,flex:1.2,cellEditor:`agLargeTextCellEditor`,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},editable:e=>!e.node?.group&&!e.node?.rowPinned,valueFormatter:e=>!e.node?.group&&!e.node?.rowPinned&&!e.value?D(`pricingScale.clickToInput`):e.value||``,cellClass:e=>!e.node?.group&&!e.node?.rowPinned?` remark-wrap-cell`:``,cellClassRules:{"editable-cell-empty":e=>!e.node?.group&&!e.node?.rowPinned&&(e.value==null||e.value===``)}}],it=o(()=>_e(rt)),at={headerName:D(`pricingScale.columns.number`),minWidth:80,flex:2,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},cellRenderer:void 0,colSpan:e=>e.node?.rowPinned||e.data?.id===`pinned-total-row`?2:1,valueFormatter:e=>{if(e.node?.rowPinned)return`小计`;let t=e.data;return t?.majorCode?`${t.majorCode}`:e.value||``},tooltipValueGetter:e=>{if(e.node?.rowPinned)return B.value;let t=e.data;return t?.majorCode&&t?.majorName?`${t.majorCode} ${t.majorName}`:e.value||``}},ot=o(()=>S(U.value,e=>e.budgetFee)),st=o(()=>S(U.value,e=>Z(e)?.basic)),ct=o(()=>S(U.value,e=>Z(e)?.optional)),lt=o(()=>S(U.value,e=>e.serviceFee*1e4)),ut=o(()=>[{id:`pinned-total-row`,groupCode:``,groupName:``,majorCode:``,majorName:B.value,base:`/`,hasCost:!1,hasArea:!1,amount:`/`,benchmarkBudget:null,benchmarkBudgetBasic:null,benchmarkBudgetOptional:null,benchmarkBudgetBasicChecked:!0,benchmarkBudgetOptionalChecked:!0,basicFormula:`/`,optionalFormula:`/`,workStageFactor:`/`,workRatio:`/`,consultCategoryFactor:null,majorFactor:null,budgetFee:ot.value,budgetFeeBasic:st.value,budgetFeeOptional:ct.value,serviceFee:lt.value,remark:``,path:[`TOTAL`]}]),Q=()=>{ye(U.value,`cost`)},$=async e=>{let t=H.value.map(e=>({...e,type:`${T.contractId}-Quantityofwork`})),n=await v().upsertBatch(t);console.log(`💾 数据保存成功:`,n)},dt=async()=>{},ft=async e=>{},pt=e=>String(e.data?.id||``),mt={...pe,getRowId:pt,groupDefaultExpanded:-1,groupHideOpenParents:!0},ht=o(()=>JSON.stringify({consultFactorChange:E.keyedStates[j.value]??k.entries[j.value]??null,majorFactorChange:E.keyedStates[M.value]??k.entries[M.value]??null})),gt=o(()=>JSON.stringify(k.entries[A.value]??null)),_t=async e=>[],vt=e=>{U.value=e.map(e=>({...e,benchmarkBudgetBasicChecked:typeof e.benchmarkBudgetBasicChecked==`boolean`?e.benchmarkBudgetBasicChecked:!0,benchmarkBudgetOptionalChecked:typeof e.benchmarkBudgetOptionalChecked==`boolean`?e.benchmarkBudgetOptionalChecked:!0}))},yt=async()=>{if(q(),U.value.length===0){P.value?.refreshCells({force:!0});return}let e=new Map;for(let t of G){e.set(t.id,{majorCode:t.code,majorName:t.name});for(let n of t.children)e.set(n.id,{majorCode:n.code,majorName:n.name})}let t=!1;U.value=U.value.map(n=>{let r=e.get(y(n));return!r||n.majorCode===r.majorCode&&n.majorName===r.majorName?n:(t=!0,{...n,majorCode:r.majorCode,majorName:r.majorName})}),P.value?.refreshCells({force:!0}),t&&(Q(),await $({skipComputedSync:!0}))},bt=(e,t)=>({...e,...t,id:e.id,majorCode:e.majorCode,majorName:e.majorName,hasCost:e.hasCost,hasArea:e.hasArea,path:e.path}),xt=async()=>{Q(),await $({skipComputedSync:!0})},St=async e=>{await De({nextValue:e,setProjectCount:e=>{L.value=e},isMutipleService:I.value,currentRows:U.value,cloneRows:e=>e.map(e=>({...e})),normalizeProjectCount:R,inferProjectCountFromRows:e=>Ge(e),buildRowsForReducedCount:(e,t)=>F.value?$e(e,{projectCount:t}):et(e,{projectCount:t}),buildRowsFromImportDefaultSource:_t,getRowKey:e=>Oe(e),getRowProjectIndex:e=>x(e),mergeExistingRow:bt,applyRows:vt,afterApplyRows:xt})},Ct=async()=>{await Ke();try{let e=await J(),t=(await v().query([{field:`type`,value:`${T.contractId}-Quantityofwork`,operator:`eq`}])).map(e=>({id:String(e.id||``),projectIndex:e.projectIndex==null?void 0:Number(e.projectIndex),majorDictId:e.majorDictId==null?void 0:String(e.majorDictId),groupCode:String(e.groupCode||``),groupName:String(e.groupName||``),majorCode:String(e.majorCode||``),majorName:String(e.majorName||``),hasCost:!!e.hasCost,hasArea:!!e.hasArea,amount:e.amount==null?null:Number(e.amount),benchmarkBudget:e.benchmarkBudget==null?null:Number(e.benchmarkBudget),benchmarkBudgetBasic:e.benchmarkBudgetBasic==null?null:Number(e.benchmarkBudgetBasic),benchmarkBudgetOptional:e.benchmarkBudgetOptional==null?null:Number(e.benchmarkBudgetOptional),benchmarkBudgetBasicChecked:!!e.benchmarkBudgetBasicChecked,benchmarkBudgetOptionalChecked:!!e.benchmarkBudgetOptionalChecked,basicFormula:e.basicFormula==null?null:String(e.basicFormula),optionalFormula:e.optionalFormula==null?null:String(e.optionalFormula),consultCategoryFactor:e.consultCategoryFactor==null?null:Number(e.consultCategoryFactor),majorFactor:e.majorFactor==null?null:Number(e.majorFactor),workStageFactor:e.workStageFactor,workRatio:e.workRatio,budgetFee:e.budgetFee==null?null:Number(e.budgetFee),budgetFeeBasic:e.budgetFeeBasic==null?null:Number(e.budgetFeeBasic),budgetFeeOptional:e.budgetFeeOptional==null?null:Number(e.budgetFeeOptional),serviceFee:e.serviceFee==null?0:Number(e.serviceFee),remark:String(e.remark||``),path:Array.isArray(e.path)?e.path:[],base:String(e.base||``),majortype:Number(e.majortype||``),UnitPrice:Number(e.UnitPrice||``),QuantityBasis:Number(e.QuantityBasis||``),ProjectQuantityPhase:Number(e.ProjectQuantityPhase||``)})),n=new Map;t.forEach(e=>n.set(e.majorCode,e)),H.value=e.map(e=>{let t=n.get(e.majorCode);return t?{...t,majorName:e.majorName}:e}),console.log(`✅ 智能加载完成:保留用户数据 + 同步最新结构`)}catch(e){console.error(`❌ 加载失败`,e),H.value=await J()}},wt=async e=>{await r(),Q(),P.value?.refreshHeader(),P.value?.refreshCells({force:!0}),await $({skipComputedSync:!0}),await r(),P.value?.refreshHeader(),P.value?.refreshCells({force:!0})},Tt=e=>{let t=e.data;if((e.column?.getColId()||e.column?.getColDef().field)===`amount`&&t){let n=Number(e.newValue)||0;(t.groupCode||t.majorCode)&&n>0?t.budgetFee=n*t.UnitPrice:t.budgetFee=0,e.api.applyTransaction({update:[t]}),Xe(),$()}$()},Et=()=>{},Dt=e=>{wt(e?.type||`bulk-end`)},Ot=e=>{P.value=e.api};Ce({gridApi:P,loadFromIndexedDB:Ct,syncLinkedFields:dt,linkedSourceSignature:ht,linkedSecondarySignature:gt,syncSecondaryLinkedFields:()=>ft((k.entries[A.value]??void 0)?.changedRowIds),saveToIndexedDB:()=>$()}),p(()=>O.value,()=>{yt()}),p(()=>v().items,async e=>{Object.keys(e).length>0&&Ct()},{immediate:!0,deep:!0});let kt=e=>Array.isArray(e.value)?JSON.stringify(e.value):e.value,At=e=>{let t=String(e.column?.getColDef?.().field||``);if(t===`amount`||t===`consultCategoryFactor`||t===`majorFactor`||t===`workStageFactor`)return g(e.value,{precision:3});if(t===`workRatio`)return g(e.value,{precision:2});try{let t=JSON.parse(e.value);if(Array.isArray(t))return t}catch{}return e.value};return(r,o)=>(t(),s(`div`,Ae,[l(`div`,je,[l(`div`,Me,[l(`div`,Ne,[l(`h3`,Pe,i(d(D)(`pricingPane.land.title`)),1),I.value?(t(),s(`div`,Fe,[l(`span`,Ie,i(d(D)(`pricingPane.projectCount`)),1),e(d(se),{modelValue:L.value,"onUpdate:modelValue":[o[0]||=e=>L.value=e,o[1]||=e=>void St(e)],min:1,step:1,class:`inline-flex items-center rounded-md border bg-background`},{default:h(()=>[e(d(ae),{class:`cursor-pointer px-2 py-1 text-xs text-muted-foreground hover:bg-muted`},{default:h(()=>[...o[2]||=[c(`-`,-1)]]),_:1}),e(d(oe),{class:`h-7 w-14 border-x bg-transparent px-2 text-center text-xs outline-none`}),e(d(ce),{class:`cursor-pointer px-2 py-1 text-xs text-muted-foreground hover:bg-muted`},{default:h(()=>[...o[3]||=[c(`+`,-1)]]),_:1})]),_:1},8,[`modelValue`])])):a(``,!0)])]),l(`div`,{class:ee(d(me))},[e(d(te),{style:n(d(ge)),rowData:U.value,pinnedBottomRowData:ut.value,columnDefs:it.value,autoGroupColumnDef:at,gridOptions:mt,theme:d(he),animateRows:!0,onGridReady:Ot,onCellValueChanged:Tt,suppressColumnVirtualisation:!0,onPasteStart:Et,onPasteEnd:Dt,onFillStart:Et,onFillEnd:Dt,suppressRowVirtualisation:!0,cellSelection:{handle:{mode:`range`}},enableClipboard:!0,localeText:d(fe),tooltipShowDelay:500,headerHeight:50,processCellForClipboard:kt,processCellFromClipboard:At,undoRedoCellEditing:!0,undoRedoCellEditingLimit:20},null,8,[`style`,`rowData`,`pinnedBottomRowData`,`columnDefs`,`theme`,`localeText`])],2)])]))}});export{w as default}; \ No newline at end of file diff --git a/33/static/js/MethodUnavailableNotice-Cx7GLj7Z.js b/33/static/js/MethodUnavailableNotice-Cx7GLj7Z.js new file mode 100644 index 0000000..628ccdb --- /dev/null +++ b/33/static/js/MethodUnavailableNotice-Cx7GLj7Z.js @@ -0,0 +1 @@ +import{Bt as e,Er as t,K as n,U as r,er as i,tt as a}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{D as o}from"./workspace-DxKKyh8w.js";var s={class:`flex h-full min-h-0 w-full flex-1 items-center justify-center bg-[radial-gradient(circle_at_top,_rgba(220,38,38,0.18),rgba(0,0,0,0.03)_46%,transparent_72%)] p-6`},c={class:`w-full max-w-xl rounded-2xl border border-red-300/85 bg-white/90 px-8 py-10 text-center shadow-[0_18px_38px_-22px_rgba(153,27,27,0.6)] backdrop-blur`},l={class:`text-lg font-semibold tracking-wide text-neutral-900`},u={class:`mt-2 text-sm leading-6 text-red-700`},d=a({__name:`MethodUnavailableNotice`,props:{title:{default:void 0},message:{}},setup(a){let{t:d}=o(),f=a;return(a,o)=>(e(),n(`div`,s,[r(`div`,c,[r(`p`,l,t(f.title||i(d)(`methodUnavailable.defaultTitle`)),1),r(`p`,u,t(f.message),1)])]))}});export{d as t}; \ No newline at end of file diff --git a/33/static/js/OtherService-I-FCHt--.js b/33/static/js/OtherService-I-FCHt--.js new file mode 100644 index 0000000..cfe9c28 --- /dev/null +++ b/33/static/js/OtherService-I-FCHt--.js @@ -0,0 +1 @@ +import{$ as e,At as t,Bt as n,Cr as r,Dt as i,Er as a,G as o,H as s,Jt as c,K as ee,M as te,Mt as l,Ot as u,Pt as d,Q as f,U as p,W as m,Wn as h,er as g,ft as _,mn as v,tt as y,xr as ne,yn as b}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as x}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as S}from"./workspace-DxKKyh8w.js";import{a as C}from"./decimal-D3bp1pbs.js";import{d as w,n as T}from"./vendor-ui-B4V4Cf1T.js";import{r as E}from"./numberFormat-jhZZmX17.js";import{n as D}from"./sql-C69Jo4HU.js";import{t as O}from"./_plugin-vue_export-helper-DUFB50Ey.js";import{C as k,n as A}from"./index-CAPJG_im.js";import{t as j}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as re,i as ie,o as ae,r as oe,t as se}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";import"./pricingPersistControl-DVG_7RF1.js";var ce={class:`h-full min-h-0 flex flex-col`},le={class:`rounded-lg border bg-card xmMx flex min-h-0 flex-1 flex-col`},ue={class:`flex items-center justify-between border-b px-4 py-3`},de={class:`text-sm font-semibold text-foreground`},fe={class:`px-6 py-4 border-b bg-slate-50 flex items-center justify-between shrink-0`},pe={class:`font-bold text-base`},me={class:`flex gap-3`},he={class:`mt-4 flex items-center justify-end gap-2`},ge={class:`mt-4 flex items-center justify-end gap-2`},M=O(y({__name:`OtherService`,props:{storageKey:{},title:{default:void 0},contractId:{},serviceId:{},enableZxFwSync:{type:Boolean,default:!1},syncField:{default:`hourly`},htMainStorageKey:{},htRowId:{},htMethodType:{}},setup(O){let M=O;k();let{t:N,locale:P}=S(),F=h([]),I=h(null),L=s(()=>M.syncField===`investScale`?`investScale`:M.syncField===`landScale`?`landScale`:M.syncField===`workload`?`workload`:M.syncField===`hourly`?`hourly`:null);s(()=>!!(M.enableZxFwSync&&M.contractId&&M.serviceId!=null&&L.value)),s(()=>!!(M.htMainStorageKey&&M.htRowId&&M.htMethodType));let R=s({get:()=>F.value,set:e=>{F.value=e}}),z=h(!1),B=h(!1),V=h(null),H=h(null);s(()=>{if(!V.value)return``;let e=R.value.find(e=>e.id===V.value);return e?`${e.feeItem}`:V.value}),s(()=>{if(!H.value)return``;let e=R.value.find(e=>e.id===H.value);return e?`${e.feeItem}`:H.value});let _e=e=>e?String(P.value).toLowerCase().startsWith(`en`)&&e.nameEn||e.name:``;Object.entries(D).sort((e,t)=>Number(e[0])-Number(t[0])).filter(e=>{let t=e[1];return!!(t?.code&&t?.name)});let U=async()=>{},ve=async e=>{let t=[];if(e.length>0){for(let n of e||[])t.push({...n});return t}return await U()},ye=e=>{if(e===``||e==null)return null;let t=E(e,{sanitize:!0,precision:0});return t==null||!Number.isSafeInteger(t)||t<0?null:t},be=()=>{for(let e of R.value)e.serviceFee=(e.unitPrice??0)*(e.quantity??0)},xe=y({name:`ActionCellRenderer`,props:{params:{type:Object,required:!0}},setup(e){return()=>e.params.node?.rowPinned===`bottom`?null:_(`div`,{class:`zxfw-action-wrap`},[_(`div`,{class:`zxfw-action-group`},[_(`button`,{class:`zxfw-action-btn`,"data-action":`clear`,type:`button`},[_(w,{size:13,"aria-hidden":`true`}),_(`span`,N(`htZxFw.resetDefault`))]),_(`button`,{class:`zxfw-action-btn zxfw-action-btn--danger`,"data-action":`delete`,type:`button`},[_(T,{size:13,"aria-hidden":`true`}),_(`span`,N(`htZxFw.delete`))])])])}}),Se=[{headerName:N(`otherService.columns.num`),minWidth:90,width:100,editable:!1,colSpan:e=>e.node?.rowPinned?2:1,valueGetter:e=>e.node?.rowPinned===`bottom`?`/`:String(e.node.rowIndex+1),cellClass:[`text-center`,`font-mono`],filter:!1,valueFormatter:e=>e.node?.rowPinned?N(`hourlyFeeGrid.total`):e.value||0},{headerName:N(`otherService.columns.feeItem`),field:`feeItem`,flex:2,minWidth:200,wrapText:!0,autoHeight:!0,editable:!0,cellEditor:`agTextCellEditor`,valueFormatter:e=>e.node?.rowPinned===`bottom`?`/`:e.value?e.value||``:N(`otherService.clickToInput`),valueParser:e=>e.newValue?.trim()||``,cellClassRules:{"editable-cell-empty":e=>e.node?.rowPinned!==`bottom`&&(e.value==null||e.value===``||e.value===0)}},{headerName:N(`otherService.columns.unit`),field:`unit`,width:150,cellEditor:`agTextCellEditor`,editable:e=>e.node?.rowPinned!==`bottom`,valueFormatter:e=>e.node?.rowPinned===`bottom`?`/`:e.value?e.value||``:N(`otherService.clickToInput`),cellClassRules:{"editable-cell-empty":e=>!e.node?.group&&!e.node?.rowPinned&&(e.value==null||e.value===``)}},{headerName:N(`otherService.columns.unitPrice`),field:`unitPrice`,width:150,cellEditor:`agTextCellEditor`,editable:e=>e.node?.rowPinned!==`bottom`,valueFormatter:e=>e.node?.rowPinned===`bottom`?`/`:e.value?e.value||``:N(`otherService.clickToInput`),valueParser:e=>E(e.newValue,{precision:2}),cellClassRules:{"editable-cell-empty":e=>e.node?.rowPinned!==`bottom`&&(e.value==null||e.value===``||e.value===0)}},{headerName:N(`otherService.columns.quantity`),field:`quantity`,width:150,editable:e=>e.node?.rowPinned!==`bottom`,cellClass:`hourly-fee-name-cell`,valueFormatter:e=>e.node?.rowPinned===`bottom`?`/`:e.value?e.value||0:N(`otherService.clickToInput`),valueParser:e=>E(e.newValue,{precision:2}),cellClassRules:{"editable-cell-empty":e=>e.node?.rowPinned!==`bottom`&&(e.value==null||e.value===``||e.value===0)}},{headerName:N(`otherService.columns.serviceFee`),field:`serviceFee`,minWidth:210,width:230,tooltipField:`serviceFee`,wrapText:!0,autoHeight:!0,cellClass:`hourly-fee-name-cell`,cellStyle:{whiteSpace:`normal`,lineHeight:`1.2`},valueFormatter:e=>e.value||0},{headerName:N(`otherService.columns.remark`),field:`remark`,minWidth:120,flex:1,cellEditor:`agLargeTextCellEditor`,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},editable:e=>e.node?.rowPinned!==`bottom`,valueFormatter:e=>e.node?.rowPinned===`bottom`?`/`:e.value?e.value||``:N(`otherService.clickToInput`),cellClassRules:{"editable-cell-empty":e=>!e.node?.group&&!e.node?.rowPinned&&(e.value==null||e.value===``)}},{headerName:N(`otherService.columns.actions`),field:`actions`,minWidth:210,width:230,tooltipField:`actions`,wrapText:!0,autoHeight:!0,cellClass:`hourly-fee-name-cell`,cellStyle:{whiteSpace:`normal`,lineHeight:`1.2`},cellRenderer:xe,valueFormatter:e=>e.node?.rowPinned?``:e.value||``}],Ce=async e=>{let t={...(await U())[0],id:e.id,path:e.path,type:e.type},n=R.value.findIndex(t=>t.id===e.id);n!==-1&&(R.value[n]=t,await i(),I.value?.refreshCells({force:!0}),await K())},we=async e=>{let t=R.value.findIndex(t=>t.id===e.id);if(t!==-1){R.value.splice(t,1),await i(),I.value?.refreshCells({force:!0});try{await A().deleteItem(e.id),console.log(`🗑️ 已从数据库删除: ${e.id}`)}catch(e){console.error(`❌ 从数据库删除失败:`,e)}}},Te=s(()=>{}),Ee=s(()=>{}),De=e=>{z.value=e},Oe=e=>{B.value=e},W=e=>{V.value=e.id,z.value=!0},ke=()=>{z.value=!1,V.value=null},Ae=async()=>{if(!V.value)return;let e=R.value.find(e=>e.id===V.value);e&&await Ce(e),z.value=!1,V.value=null},G=e=>{H.value=e.id,B.value=!0},je=()=>{B.value=!1,H.value=null},Me=async()=>{if(!H.value)return;let e=R.value.find(e=>e.id===H.value);e&&await we(e),B.value=!1,H.value=null},Ne={...re,treeData:!1,getDataPath:void 0,context:{onCellClicked:async e=>{if(e.colDef.field!==`actions`||!e.data)return;let t=((e.event?.target)?.closest(`button[data-action]`))?.dataset.action;if(t===`clear`){W(e.data);return}t===`delete`&&G(e.data)}}},Pe=s(()=>se(Se));s(()=>C(R.value,e=>e.workdayCount)),s(()=>C(R.value,e=>e.workdayCount2)),s(()=>C(R.value,e=>e.workdayCount3)),s(()=>C(R.value,e=>e.workdayCount4)),s(()=>C(R.value,e=>e.workdayCount5)),s(()=>C(R.value,e=>e.feeSubtotal)),s(()=>C(R.value,e=>e.feeSubtotal2)),s(()=>C(R.value,e=>e.feeSubtotal3)),s(()=>C(R.value,e=>e.feeSubtotal4)),s(()=>C(R.value,e=>e.feeSubtotal5)),s(()=>(F.value,0)),s(()=>C(R.value,e=>e.avgUnitPrice)),s(()=>C(R.value,e=>e.personnelCount));let Fe=s(()=>(R.value||[]).reduce((e,t)=>e+(Number(t?.serviceFee)||0),0)),Ie=s(()=>[{id:`pinned-total-row`,expertCode:N(`otherService.total`),expertName:``,laborBudgetUnitPrice:``,compositeBudgetUnitPrice:``,adoptedBudgetUnitPrice:null,unitPrice:`/`,unit:`/`,serviceFee:Fe.value,remark:``,path:[`TOTAL`]}]),Le=()=>{let e=`${M.contractId}-other-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;R.value.push({id:e,type:`${M.contractId}-other`,feeItem:``,unit:``,quantity:null,unitPrice:null,serviceFee:null,remark:``,path:[e]}),K()},K=async()=>{try{be();let e=R.value.map(e=>({...e,type:`${M.contractId}-otherservice`})),t=await A().upsertBatch(e);console.log(`💾 数据保存成功:`,t)}catch(e){console.error(`❌ saveToIndexedDB 失败:`,e)}},q=async()=>{try{let e=(await A().query([{field:`type`,value:`${M.contractId}-otherservice`,operator:`eq`}])).map((e,t)=>({num:t+1,id:String(e.id||``),type:String(e.type||``),expertCode:String(e.expertCode||``),expertName:String(e.expertName||``),remark:String(e.remark||``),path:Array.isArray(e.path)?e.path:[],feeItem:e.feeItem??0,unit:e.unit,quantity:e.quantity??0,unitPrice:e.unitPrice??0,serviceFee:e.serviceFee??0}));F.value=await ve(e),console.log(`✅ 转换后的 DetailRow 数据:`,e)}catch{R.value=await U()}},Re=async()=>{if(R.value.length===0)return;let e=!1;R.value=R.value.map(t=>{let n=String(t.id||``).match(/^expert-(\d+)$/);if(!n)return t;let r=D[n[1]];if(!r)return t;let i=_e(r);return t.expertName===i?t:(e=!0,{...t,expertName:i})}),I.value?.refreshCells({force:!0}),e&&await K()},ze=e=>{K()},J=()=>{},Y=e=>{},Be=e=>{I.value=e.api,Q()},X=null,Z=e=>!!(e&&!e.isDestroyed?.()),Ve=()=>{setTimeout(()=>{let e=I.value;Z(e)&&(e.refreshCells({force:!0}),e.redrawRows())},16)},He=async()=>{await i();let e=I.value;Z(e)&&(e.onRowHeightChanged(),e.refreshCells({force:!0}),e.redrawRows(),Ve())},Q=()=>{X&&clearTimeout(X),X=setTimeout(()=>{X=null,Z(I.value)&&He()},0)},Ue=()=>{Q()},We=()=>{Q()},Ge=e=>{Q()},$=e=>{Q()},Ke=e=>Array.isArray(e.value)?JSON.stringify(e.value):e.value,qe=e=>{let t=String(e.column?.getColDef?.().field||``);if(t===`personnelCount`)return ye(e.value);if(t===`adoptedBudgetUnitPrice`||t===`workdayCount`)return E(e.value,{precision:3});try{let t=JSON.parse(e.value);if(Array.isArray(t))return t}catch{return e.value}return e.value},Je=e=>{if(e.colDef.field!==`actions`||!e.data)return;let t=((e.event?.target)?.closest(`button[data-action]`))?.dataset.action;if(t===`clear`){W(e.data);return}t===`delete`&&G(e.data)};return d(async()=>{console.log(`🚀 组件挂载`),await q(),Q()}),u(async()=>{console.log(`🔙 组件激活`),await q(),Q()}),v(()=>A().items,async e=>{Object.keys(e).length>0&&q()},{immediate:!0,deep:!0}),v(()=>M.storageKey,()=>{q(),Q()}),v(()=>P.value,()=>{Re()}),l(()=>{console.log(`🔄 组件失活,保存数据`),I.value?.stopEditing(),K()}),t(()=>{console.log(`💔 组件卸载,保存数据`),I.value?.stopEditing(),I.value=null,X&&=(clearTimeout(X),null),K()}),(t,i)=>{let s=c(`AlertDialogOverlay`),l=c(`AlertDialogTitle`),u=c(`AlertDialogDescription`),d=c(`Button`),h=c(`AlertDialogCancel`),_=c(`AlertDialogAction`),v=c(`AlertDialogContent`),y=c(`AlertDialogPortal`),S=c(`AlertDialogRoot`);return n(),ee(te,null,[p(`div`,ce,[p(`div`,le,[p(`div`,ue,[p(`h3`,de,a(M.title||g(N)(`otherService.title`)),1),i[0]||=p(`div`,{class:`text-xs text-muted-foreground`},null,-1)]),p(`div`,fe,[p(`h3`,pe,a(O.title||`费用明细`),1),p(`div`,me,[p(`button`,{onClick:Le,class:`inline-flex items-center justify-center px-4 py-2 text-sm font-medium text-white transition-colors bg-blue-600 rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500`},[i[1]||=p(`span`,{class:`mr-2 text-xl leading-none`},`+`,-1),f(` `+a(g(N)(`otherService.addnew`)),1)])])]),p(`div`,{class:ne(g(ie))},[e(g(x),{gridOptions:Ne,style:r(g(oe)),rowData:R.value,pinnedBottomRowData:Ie.value,columnDefs:Pe.value,theme:g(ae),animateRows:!0,treeData:!1,onCellValueChanged:ze,onPasteStart:J,onPasteEnd:Y,onFillStart:J,onFillEnd:Y,suppressColumnVirtualisation:!0,suppressRowVirtualisation:!0,cellSelection:{handle:{mode:`range`}},enableClipboard:!0,localeText:g(j),tooltipShowDelay:500,headerHeight:50,processCellForClipboard:Ke,processCellFromClipboard:qe,undoRedoCellEditing:!0,undoRedoCellEditingLimit:20,onCellClicked:Je,onGridReady:Be,onFirstDataRendered:Ge,onRowDataUpdated:$,onGridSizeChanged:Ue,onColumnResized:We},null,8,[`style`,`rowData`,`pinnedBottomRowData`,`columnDefs`,`theme`,`localeText`])],2)])]),z.value?(n(),m(S,{key:0,open:z.value,"onUpdate:open":De},{default:b(()=>[e(y,null,{default:b(()=>[e(s,{class:`fixed inset-0 z-50 bg-black/45`}),e(v,{class:`fixed left-1/2 top-1/2 z-[70] w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:b(()=>[e(l,{class:`text-base font-semibold`},{default:b(()=>[f(a(g(N)(`htZxFw.dialog.resetTitle`)),1)]),_:1}),e(u,{class:`mt-2 text-sm text-muted-foreground`},{default:b(()=>[f(a(g(N)(`htZxFw.dialog.resetDesc`,{name:Te.value})),1)]),_:1}),p(`div`,he,[e(h,{"as-child":``},{default:b(()=>[e(d,{variant:`outline`,class:`px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-400`,onClick:ke},{default:b(()=>[f(a(g(N)(`common.cancel`)),1)]),_:1})]),_:1}),e(_,{"as-child":``},{default:b(()=>[e(d,{variant:`destructive`,class:`px-4 py-2 text-sm font-medium text-white bg-red-600 border border-red-600 rounded-md hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500`,onClick:Ae},{default:b(()=>[f(a(g(N)(`htZxFw.dialog.confirmReset`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`])):o(``,!0),B.value?(n(),m(S,{key:1,open:B.value,"onUpdate:open":Oe},{default:b(()=>[e(y,null,{default:b(()=>[e(s,{class:`fixed inset-0 z-50 bg-black/45`}),e(v,{class:`fixed left-1/2 top-1/2 z-[70] w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:b(()=>[e(l,{class:`text-base font-semibold`},{default:b(()=>[f(a(g(N)(`htZxFw.dialog.deleteTitle`)),1)]),_:1}),e(u,{class:`mt-2 text-sm text-muted-foreground`},{default:b(()=>[f(a(g(N)(`htZxFw.dialog.deleteDesc`,{name:Ee.value})),1)]),_:1}),p(`div`,ge,[e(h,{"as-child":``},{default:b(()=>[e(d,{variant:`outline`,class:`px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-400`,onClick:je},{default:b(()=>[f(a(g(N)(`common.cancel`)),1)]),_:1})]),_:1}),e(_,{"as-child":``},{default:b(()=>[e(d,{variant:`destructive`,class:`px-4 py-2 text-sm font-medium text-white bg-red-600 border border-red-600 rounded-md hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500`,onClick:Me},{default:b(()=>[f(a(g(N)(`common.delete`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`])):o(``,!0)],64)}}}),[[`__scopeId`,`data-v-fbf19b52`]]);export{M as default}; \ No newline at end of file diff --git a/33/static/js/QuickCalcWorkbenchView-bCXV4JQ3.js b/33/static/js/QuickCalcWorkbenchView-bCXV4JQ3.js new file mode 100644 index 0000000..c9d5adb --- /dev/null +++ b/33/static/js/QuickCalcWorkbenchView-bCXV4JQ3.js @@ -0,0 +1,2 @@ +import{Bt as e,C as t,E as n,Er as r,G as i,H as a,K as o,Kt as s,M as c,Ot as l,Pt as ee,T as u,U as d,W as f,Wn as p,er as m,mn as h,tt as te,xn as g,xr as _}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as ne,u as v}from"./workspace-DxKKyh8w.js";import{d as re,i as ie}from"./decimal-D3bp1pbs.js";import{h as y,p as ae}from"./vendor-ui-B4V4Cf1T.js";import{r as b}from"./numberFormat-jhZZmX17.js";import{_ as oe,a as se,d as ce,h as le,l as ue}from"./sql-C69Jo4HU.js";import{t as x}from"./_plugin-vue_export-helper-DUFB50Ey.js";import{O as de,i as fe,r as pe}from"./index-CAPJG_im.js";import{n as me,t as he}from"./xmFactorDefaults-yPGPQ25R.js";import{t as ge}from"./pricingScaleCalc-CxdG8IMv.js";var _e={class:`quick-calc-shell h-full min-h-0`},ve={class:`quick-calc-layout`},ye={class:`quick-calc-panel quick-calc-panel--catalog`},be={class:`quick-calc-toolbar`},xe={class:`quick-calc-form-section quick-calc-toolbar__section`},Se={class:`quick-calc-field quick-calc-field--wide`},Ce={class:`quick-calc-field__label`},we=[`aria-label`],Te=[`aria-checked`,`onClick`,`onKeydown`],Ee=[`checked`],De={class:`quick-calc-industry-card__text`},Oe={key:0,class:`quick-calc-empty-state`},ke={key:1,class:`quick-calc-empty-state`},Ae={key:2,class:`quick-calc-empty-state`},je={key:3,class:`quick-calc-empty-state`},Me={class:`quick-calc-catalog`},Ne={class:`quick-calc-group__side`},Pe={class:`quick-calc-group__eyebrow`},Fe={class:`quick-calc-group__title quick-calc-group__title--multiline`},Ie={class:`quick-calc-group__rows`},Le=[`checked`,`name`,`onChange`],Re={key:0,class:`quick-calc-selection-row__blank`},ze={class:`quick-calc-panel quick-calc-panel--form`},Be={class:`quick-calc-form`},Ve={class:`quick-calc-form-stack`},He={class:`quick-calc-form-section quick-calc-form-section--summary`},Ue={class:`quick-calc-form-grid quick-calc-form-grid--summary`},We={class:`quick-calc-field`},Ge={class:`quick-calc-field__label`},Ke={class:`quick-calc-field__readonly`},qe={class:`quick-calc-field`},Je={class:`quick-calc-field__label`},Ye={class:`quick-calc-field__readonly`},Xe={class:`quick-calc-form-section`},Ze={class:`quick-calc-form-grid`},Qe={class:`quick-calc-field`},$e={class:`quick-calc-field__label`},et=[`disabled`,`placeholder`],tt={class:`quick-calc-field`},nt={class:`quick-calc-field__label`},rt=[`disabled`,`placeholder`],it={class:`quick-calc-form-section`},at={class:`quick-calc-form-section__header`},ot={class:`quick-calc-form-section__title`},st={class:`quick-calc-form-grid`},ct={class:`quick-calc-field quick-calc-field--wide`},lt={class:`quick-calc-field__label`},ut={class:`quick-calc-field__readonly quick-calc-field__readonly--multiline`},dt={class:`quick-calc-field`},ft={class:`quick-calc-field__label`},pt={class:`quick-calc-field__readonly`},mt={class:`quick-calc-form-section`},ht={class:`quick-calc-form-section__header`},gt={class:`quick-calc-form-section__title`},_t={class:`quick-calc-form-grid`},vt={class:`quick-calc-field`},yt={class:`quick-calc-field__label`},bt={class:`quick-calc-field__readonly`},xt={class:`quick-calc-field`},St={class:`quick-calc-field__label`},Ct={class:`quick-calc-field__readonly`},wt={class:`quick-calc-field`},Tt={class:`quick-calc-field__label`},Et=[`placeholder`,`onKeydown`],Dt={class:`quick-calc-field`},Ot={class:`quick-calc-field__label`},kt={class:`quick-calc-field__readonly quick-calc-field__readonly--emphasis`},S=x(te({__name:`QuickCalcWorkbenchView`,props:{contractId:{},contractName:{},projectConsultCategoryFactorKey:{},projectMajorFactorKey:{}},setup(te){let x=te,S=re(),{t:C,locale:w}=ne(),T=p(new Map),E=p(new Map),D=ce(),O=p(``),k=p(``),A=p(null),j=p(``),M=p(``),N=p(`1`),At=p(!1),jt=0,Mt=a(()=>O.value.trim()!==``),P=a(()=>k.value.trim()!==``),Nt=(e,t)=>t?{id:e,name:String(t.name||``),code:String(t.code||``),defCoe:typeof t.defCoe==`number`?t.defCoe:null,hasCost:t.hasCost===!0,hasArea:t.hasArea===!0,scale:t.scale===!0,onlyCostScale:t.onlyCostScale===!0}:null,Pt=e=>e!=null,F=e=>{if(!e)return``;if(typeof e.id==`string`)return e.id;let t=O.value.trim();return e.id[t]||Object.values(e.id)[0]||``},Ft=(e,t)=>{if(!P.value||!G.value||K.value)return!1;let n=ue(F(t)),r=String(n?.code||``).trim();return r?r.includes(`-`):!1},I=a(()=>{let e=O.value.trim();return D.filter(t=>t.key===`consult`?!0:!e||!P.value?!1:t.industryId?t.industryId===e:!0).map(e=>{let t=e.key===`consult`?e.items:e.items.filter(t=>Ft(e,t)),n=new Map(t.map(e=>[e.key,e]));return{...e,items:t,rows:e.rows.map(e=>e.map(e=>n.get(e)).filter(Pt)).filter(e=>e.length>0)}}).filter(e=>e.key===`consult`||e.items.length>0)});a(()=>{let e=O.value.trim();return e&&se(e,w.value)||C(`quickCalc.notSelected`)});let L=e=>O.value.trim()===String(e).trim(),R=e=>{let t=String(e).trim();O.value=L(t)?``:t},It=a(()=>D.find(e=>e.key===`consult`)?.items.find(e=>e.key===k.value)||null),Lt=a(()=>A.value&&D.find(e=>e.key===A.value?.groupKey)||null),Rt=a(()=>A.value&&I.value.find(e=>e.key===A.value?.groupKey)?.items.find(e=>e.key===A.value?.optionKey)||null),zt=a(()=>F(It.value)),Bt=a(()=>F(Rt.value)),Vt=a(()=>String(B.value?.code||``)),z=a(()=>It.value?.label||``),B=a(()=>Nt(zt.value,le(zt.value))),Ht=a(()=>A.value?Nt(Bt.value,ue(Bt.value)):null),V=a(()=>{if(Ht.value)return Ht.value;if(!K.value)return null;let e=ge(O.value.trim());return e?{id:String(e.id),name:String(e.item?.name||``),code:String(e.item?.code||``),defCoe:typeof e.item?.defCoe==`number`?e.item.defCoe:null,hasCost:e.item?.hasCost===!0,hasArea:e.item?.hasArea===!0}:null}),Ut=a(()=>{let e=B.value?.id;return e?T.value.get(e)??null:null}),Wt=a(()=>{let e=V.value?.id;return e?E.value.get(e)??null:null}),Gt=a(()=>Wt.value),H=a(()=>V.value!=null),U=a(()=>V.value?.hasCost===!0),W=a(()=>V.value?.hasArea===!0),Kt=a(()=>U.value&&W.value),qt=a(()=>b(N.value,{sanitize:!0,precision:3})),G=a(()=>B.value?.scale===!0),K=a(()=>B.value?.onlyCostScale===!0),q=a(()=>G.value&&H.value&&(K.value||U.value&&!Kt.value)),J=a(()=>G.value&&H.value&&!K.value&&W.value),Jt=a(()=>z.value?G.value?H.value?Kt.value?C(`quickCalc.placeholder.preferLandScale`):!K.value&&!U.value?C(`quickCalc.placeholder.investUnavailable`):C(`quickCalc.placeholder.input`):C(`quickCalc.placeholder.selectMajorFirst`):C(`quickCalc.placeholder.scaleUnavailable`):C(`quickCalc.placeholder.selectConsultFirst`)),Yt=a(()=>z.value?G.value?H.value?K.value?C(`quickCalc.placeholder.consultCostOnly`):W.value?C(`quickCalc.placeholder.input`):C(`quickCalc.placeholder.landUnavailable`):C(`quickCalc.placeholder.selectMajorFirst`):C(`quickCalc.placeholder.scaleUnavailable`):C(`quickCalc.placeholder.selectConsultFirst`)),Xt=a(()=>{let e=j.value.trim()!==``,t=M.value.trim()!==``;return q.value&&e?`cost`:J.value&&t?`area`:q.value?`cost`:J.value?`area`:null}),Y=a(()=>{let e=Xt.value;if(!e)return null;let t=b(e===`cost`?j.value:M.value,{sanitize:!0,precision:3});if(t==null)return null;let n=pe(t,e);if(!n)return null;let r={...n,basic:n.basic,optional:n.optional,total:n.total},i=fe({benchmarkBudgetBasic:r.basic,benchmarkBudgetOptional:r.optional,majorFactor:Gt.value,consultCategoryFactor:Ut.value,workStageFactor:qt.value});return{mode:e,scaleValue:t,benchmarkBudgetBasic:r.basic,benchmarkBudgetOptional:r.optional,benchmarkBudget:r.total,basicFormula:n.basicFormula,optionalFormula:n.optionalFormula,budgetFeeBasic:i?.basic??null,budgetFeeOptional:i?.optional??null,budgetFeeTotal:i?.total??null}}),Zt=a(()=>{let e=Y.value;return e?[e.basicFormula,e.optionalFormula].filter(Boolean).join(` + `)||`--`:C(`quickCalc.placeholder.selectScaleFirst`)}),Qt=a(()=>{let e=Y.value?.benchmarkBudget;return e==null?`--`:e.toLocaleString(w.value,{minimumFractionDigits:2,maximumFractionDigits:2})}),$t=a(()=>{let e=Y.value?.budgetFeeTotal;return e==null?`--`:e.toLocaleString(w.value,{minimumFractionDigits:2,maximumFractionDigits:2})}),X=e=>{let t=b(e===`invest`?j.value:M.value,{sanitize:!0,precision:3}),n=t==null?``:String(t);if(e===`invest`){j.value=n;return}M.value=n},en=e=>e==null?`--`:String(ie(e,3)),tn=()=>{let e=b(N.value,{sanitize:!0,precision:3});N.value=e==null?``:String(e)};a(()=>{let e=0;return k.value&&(e+=1),A.value&&(e+=1),e});let Z=(e,t)=>e===`consult`?k.value===t:A.value?.groupKey===e&&A.value?.optionKey===t,nn=(e,t)=>{if(e===`consult`){k.value=k.value===t?``:t;return}if(Z(e,t)){A.value=null;return}A.value={groupKey:e,optionKey:t}},rn=e=>e.key===`consult`?e.label.replace(/([((](?:常用|Common)[))])$/i,` +$1`):e.label,Q=async()=>{let[e,t]=await Promise.all([he(x.projectConsultCategoryFactorKey),me(x.projectMajorFactorKey)]);T.value=e,E.value=t},$=async()=>{try{let e=await S.getItem(v);O.value=typeof e?.projectIndustry==`string`?e.projectIndustry.trim():``}catch(e){console.error(`loadQuickIndustry failed:`,e),O.value=``}},an=async e=>{let t=await S.getItem(v);await S.setItem(v,{...t,projectIndustry:e,projectName:C(`quickCalc.projectName`)})};return ee(async()=>{await Promise.all([$(),Q()])}),l(()=>{Promise.all([$(),Q()])}),h(()=>O.value.trim(),async(e,t)=>{if(e===t)return;Lt.value?.industryId&&Lt.value.industryId!==e&&(A.value=null),!e&&A.value&&(A.value=null);let n=++jt;At.value=!0;try{await an(e),e&&(await de(S,e,x.projectConsultCategoryFactorKey||``,x.projectMajorFactorKey||``),await Q())}finally{n===jt&&(At.value=!1)}}),h([P,G,K],()=>{A.value&&I.value.find(e=>e.key===A.value?.groupKey)?.items.some(e=>e.key===A.value?.optionKey)!==!0&&(A.value=null)}),h(q,e=>{e||(j.value=``)}),h(J,e=>{e||(M.value=``)}),(a,l)=>(e(),o(`div`,_e,[d(`div`,ve,[d(`section`,ye,[d(`div`,be,[d(`section`,xe,[d(`div`,Se,[d(`span`,Ce,r(m(C)(`quickCalc.fields.industry`)),1),d(`div`,{class:`quick-calc-industry-grid`,role:`radiogroup`,"aria-label":m(C)(`quickCalc.fields.industry`)},[(e(!0),o(c,null,s(m(oe),t=>(e(),o(`label`,{key:`quick-workbench-${t.id}`,class:_([`quick-calc-industry-card`,{"is-selected":L(t.id)}]),"aria-checked":L(t.id),role:`radio`,tabindex:`0`,onClick:n(e=>R(t.id),[`prevent`]),onKeydown:[u(n(e=>R(t.id),[`prevent`]),[`enter`]),u(n(e=>R(t.id),[`prevent`]),[`space`])]},[d(`input`,{checked:L(t.id),type:`radio`,name:`quick-calc-industry-choice`,class:`quick-calc-option__input`,tabindex:`-1`},null,8,Ee),d(`span`,{class:_([`quick-calc-industry-card__icon`,{"is-selected":L(t.id)}])},[L(t.id)?(e(),f(m(y),{key:0,class:`h-3.5 w-3.5`})):(e(),f(m(ae),{key:1,class:`h-3.5 w-3.5`}))],2),d(`span`,De,r(m(se)(t.id,m(w))),1)],42,Te))),128))],8,we)])])]),Mt.value?P.value?G.value?K.value?(e(),o(`div`,je,r(m(C)(`quickCalc.empty.consultCostOnly`)),1)):i(``,!0):(e(),o(`div`,Ae,r(m(C)(`quickCalc.empty.scaleUnavailable`)),1)):(e(),o(`div`,ke,r(m(C)(`quickCalc.empty.selectConsult`)),1)):(e(),o(`div`,Oe,r(m(C)(`quickCalc.empty.selectIndustry`)),1)),d(`div`,Me,[(e(!0),o(c,null,s(I.value,t=>(e(),o(`article`,{key:t.key,class:_([`quick-calc-group quick-calc-group--table`,{"quick-calc-group--major":t.key!==`consult`,"quick-calc-group--general":t.key===`general`}])},[d(`div`,Ne,[d(`div`,Pe,r(t.key===`consult`?m(C)(`quickCalc.consultCategory`):m(C)(`quickCalc.majorCategory`)),1),d(`h3`,Fe,r(rn(t)),1)]),d(`div`,Ie,[(e(!0),o(c,null,s(t.rows,(n,a)=>(e(),o(`div`,{key:`${t.key}-${a}`,class:`quick-calc-selection-row`},[(e(!0),o(c,null,s(n,n=>(e(),o(`label`,{key:`${t.key}-${n.key}`,class:_([`quick-calc-inline-option`,{"is-selected":Z(t.key,n.key)}])},[d(`input`,{checked:Z(t.key,n.key),type:`radio`,name:t.key===`consult`?`quick-calc-consult-choice`:`quick-calc-major-choice`,class:`quick-calc-option__input`,onChange:e=>nn(t.key,n.key)},null,40,Le),d(`span`,{class:_([`quick-calc-inline-option__icon`,{"is-selected":Z(t.key,n.key)}])},[Z(t.key,n.key)?(e(),f(m(y),{key:0,class:`h-3.5 w-3.5`})):(e(),f(m(ae),{key:1,class:`h-3.5 w-3.5`}))],2),d(`span`,{class:_([`quick-calc-inline-option__text`,{"is-selected":Z(t.key,n.key)}])},r(n.label),3)],2))),128)),n.length===0?(e(),o(`div`,Re)):i(``,!0)]))),128))])],2))),128))])]),d(`aside`,ze,[d(`div`,Be,[d(`div`,Ve,[d(`section`,He,[d(`div`,Ue,[d(`label`,We,[d(`span`,Ge,r(m(C)(`quickCalc.consultCategory`)),1),d(`div`,Ke,r(z.value||m(C)(`quickCalc.notSelected`)),1)]),d(`label`,qe,[d(`span`,Je,r(m(C)(`quickCalc.fields.code`)),1),d(`div`,Ye,r(Vt.value||`--`),1)])])]),d(`section`,Xe,[d(`div`,Ze,[d(`label`,Qe,[d(`span`,$e,r(m(C)(`quickCalc.fields.investScale`)),1),g(d(`input`,{"onUpdate:modelValue":l[0]||=e=>j.value=e,type:`text`,inputmode:`decimal`,class:_([`quick-calc-field__input`,{"is-disabled":!q.value}]),disabled:!q.value,placeholder:Jt.value,onBlur:l[1]||=e=>X(`invest`),onKeydown:l[2]||=u(n(e=>X(`invest`),[`prevent`]),[`enter`])},null,42,et),[[t,j.value]])]),d(`label`,tt,[d(`span`,nt,r(m(C)(`quickCalc.fields.landScale`)),1),g(d(`input`,{"onUpdate:modelValue":l[3]||=e=>M.value=e,type:`text`,inputmode:`decimal`,class:_([`quick-calc-field__input`,{"is-disabled":!J.value}]),disabled:!J.value,placeholder:Yt.value,onBlur:l[4]||=e=>X(`land`),onKeydown:l[5]||=u(n(e=>X(`land`),[`prevent`]),[`enter`])},null,42,rt),[[t,M.value]])])])]),d(`section`,it,[d(`header`,at,[d(`h3`,ot,r(m(C)(`quickCalc.sections.benchmarkBudget`)),1)]),d(`div`,st,[d(`label`,ct,[d(`span`,lt,r(m(C)(`quickCalc.fields.formula`)),1),d(`div`,ut,r(Zt.value),1)]),d(`label`,dt,[d(`span`,ft,r(m(C)(`quickCalc.fields.amount`)),1),d(`div`,pt,r(Qt.value),1)])])]),d(`section`,mt,[d(`header`,ht,[d(`h3`,gt,r(m(C)(`quickCalc.sections.serviceBudget`)),1)]),d(`div`,_t,[d(`label`,vt,[d(`span`,yt,r(m(C)(`quickCalc.fields.consultFactor`)),1),d(`div`,bt,r(en(Ut.value)),1)]),d(`label`,xt,[d(`span`,St,r(m(C)(`quickCalc.fields.majorFactor`)),1),d(`div`,Ct,r(en(Gt.value)),1)]),d(`div`,wt,[d(`span`,Tt,r(m(C)(`quickCalc.fields.workEnvCoefficient`)),1),g(d(`input`,{"onUpdate:modelValue":l[6]||=e=>N.value=e,class:`quick-calc-field__input`,placeholder:m(C)(`quickCalc.fields.workEnvCoefficientPlaceholder`),onBlur:tn,onKeydown:u(n(tn,[`prevent`]),[`enter`])},null,40,Et),[[t,N.value]])]),d(`label`,Dt,[d(`span`,Ot,r(m(C)(`quickCalc.fields.budgetAmount`)),1),d(`div`,kt,r($t.value||`--`),1)])])])])])])])]))}}),[[`__scopeId`,`data-v-3aadb39f`]]);export{S as default}; \ No newline at end of file diff --git a/33/static/js/ScaleFormulaReadonlyPane-AeIzjaXU.js b/33/static/js/ScaleFormulaReadonlyPane-AeIzjaXU.js new file mode 100644 index 0000000..b7bea8a --- /dev/null +++ b/33/static/js/ScaleFormulaReadonlyPane-AeIzjaXU.js @@ -0,0 +1 @@ +import{$ as e,At as t,Bt as n,Cr as r,Dt as i,Er as a,H as o,K as s,Ot as c,Pt as l,U as u,Wn as d,er as f,mn as p,tt as m,xr as h}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as g}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import{D as _,T as v}from"./workspace-DxKKyh8w.js";import{n as y}from"./numberFormat-jhZZmX17.js";import{c as b}from"./sql-C69Jo4HU.js";import{C as x}from"./index-CAPJG_im.js";import{t as S}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as C,i as w,o as T,r as E,t as D}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";import{c as O}from"./pricingScaleLink-BNsm4Fxd.js";import{a as k,i as A,o as j}from"./pricingScaleGrid-BCsr0Q1x.js";var M=(e,t)=>t?v.global.t(`pricingScale.${e}`,t):v.global.t(`pricingScale.${e}`);const N=e=>({headerName:M(`columns.number`),minWidth:250,flex:2,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},cellRendererParams:{suppressCount:!0},colSpan:A,valueFormatter:t=>{if(t.node?.rowPinned)return e.totalLabel;let n=t.data;if(!t.node?.group&&n?.majorCode)return n.majorCode;let r=String(t.value||``),i=e.parseProjectIndexFromPathKey(r);return i==null?e.idLabelMap.get(r)||r:M(`projectLabel`,{index:i})},tooltipValueGetter:t=>{if(t.node?.rowPinned)return e.totalLabel;let n=t.data;if(!t.node?.group&&n?.majorCode)return n.majorCode;let r=String(t.value||``),i=e.parseProjectIndexFromPathKey(r);return i==null?e.idLabelMap.get(r)||r:M(`projectLabel`,{index:i})}});var P={class:`flex h-full min-h-0 flex-col gap-3`},F={class:`flex items-center justify-between gap-3`},I={class:`text-sm font-semibold text-foreground`},L={class:`text-xs text-muted-foreground`},R=m({__name:`ScaleFormulaReadonlyPane`,props:{contractId:{},serviceId:{},method:{}},setup(m){let v=m,{t:A}=_(),M=x(),R=d(null),z=null,B=o(()=>v.method===`investScale`),V=o(()=>B.value?A(`zxFwView.categories.investmentScaleFormula`):A(`zxFwView.categories.landScaleFormula`)),H=async()=>{await M.loadServicePricingMethodState(v.contractId,v.serviceId,v.method)},U=o(()=>M.getServicePricingMethodState(v.contractId,v.serviceId,v.method)),W=o(()=>{let e=U.value?.detailRows;return Array.isArray(e)?e:[]}),G=o(()=>j(k(b().map(({id:e,item:t})=>[e,t]),B.value?({hasCost:e,hasArea:t})=>e&&!t:({hasArea:e})=>e))),K=e=>typeof e.value==`number`&&Number.isFinite(e.value)?y(e.value,3):``,q=o(()=>B.value?`amount`:`landArea`),J=o(()=>B.value?A(`pricingScale.columns.investAmount`):A(`pricingScale.columns.landArea`)),Y=o(()=>D([{headerName:J.value,field:q.value,minWidth:130,flex:1,headerClass:`ag-right-aligned-header`,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueFormatter:K},{headerName:A(`pricingScale.columns.basicWork`),field:`benchmarkBudgetBasic`,minWidth:130,flex:1,headerClass:`ag-right-aligned-header`,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueFormatter:K},{headerName:A(`zxFwView.formulaColumns.basicFormula`),field:`basicFormula`,minWidth:260,flex:2},{headerName:A(`pricingScale.columns.optionalWork`),field:`benchmarkBudgetOptional`,minWidth:130,flex:1,headerClass:`ag-right-aligned-header`,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueFormatter:K},{headerName:A(`zxFwView.formulaColumns.optionalFormula`),field:`optionalFormula`,minWidth:260,flex:2}])),X=o(()=>N({totalLabel:V.value,idLabelMap:G.value,parseProjectIndexFromPathKey:O})),Z={...C},Q=async()=>{await i();let e=R.value;!e||e.isDestroyed?.()||(e.resetRowHeights(),e.onRowHeightChanged(),e.refreshCells({force:!0}))},$=()=>{z&&clearTimeout(z),z=setTimeout(()=>{z=null,Q()},0)},ee=e=>{R.value=e.api,$()};return p(W,()=>{$()},{deep:!0}),p(()=>v.method,()=>{H(),$()}),l(()=>{H()}),c(()=>{H(),$()}),t(()=>{z&&clearTimeout(z)}),(t,i)=>(n(),s(`div`,P,[u(`div`,F,[u(`div`,null,[u(`h3`,I,a(V.value),1),u(`p`,L,a(f(A)(`zxFwView.formulaColumns.subtitle`)),1)])]),u(`div`,{class:h(f(w))},[e(f(g),{theme:f(T),style:r(f(E)),"row-data":W.value,"column-defs":Y.value,"auto-group-column-def":X.value,"grid-options":Z,"locale-text":f(S),onGridReady:ee},null,8,[`theme`,`style`,`row-data`,`column-defs`,`auto-group-column-def`,`locale-text`])],2)]))}});export{R as t}; \ No newline at end of file diff --git a/33/static/js/ScaleFormulaReadonlyPane-LcS4i8Fj.js b/33/static/js/ScaleFormulaReadonlyPane-LcS4i8Fj.js new file mode 100644 index 0000000..5c6a1bb --- /dev/null +++ b/33/static/js/ScaleFormulaReadonlyPane-LcS4i8Fj.js @@ -0,0 +1 @@ +import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import"./workspace-DxKKyh8w.js";import"./decimal-D3bp1pbs.js";import"./numberFormat-jhZZmX17.js";import"./sql-C69Jo4HU.js";import"./agGridReadonlyAutoHeight-BpRhYCq1.js";import"./pricingScaleLink-BNsm4Fxd.js";import"./pricingScaleGrid-BCsr0Q1x.js";import{t as e}from"./ScaleFormulaReadonlyPane-AeIzjaXU.js";export{e as default}; \ No newline at end of file diff --git a/33/static/js/Summary-D2760-WG.js b/33/static/js/Summary-D2760-WG.js new file mode 100644 index 0000000..a88c2f2 --- /dev/null +++ b/33/static/js/Summary-D2760-WG.js @@ -0,0 +1 @@ +import{$ as e,At as t,Bt as n,Cr as r,Dt as i,Er as a,H as o,Mt as s,Ot as c,Pt as l,Q as u,U as d,W as ee,Wn as f,er as p,ft as te,mn as m,qn as ne,tt as re,xr as ie,yn as h}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as ae}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as oe}from"./workspace-DxKKyh8w.js";import{a as g,d as se,i as _,o as v}from"./decimal-D3bp1pbs.js";import{T as ce,dt as le,ft as ue,gt as de,ht as fe,lt as pe,mt as me,pt as he,ut as ge}from"./vendor-ui-B4V4Cf1T.js";import{r as _e,t as ve}from"./numberFormat-jhZZmX17.js";import{g as ye,h as be,m as xe,o as Se,v as Ce,w as we}from"./sql-C69Jo4HU.js";import{t as Te}from"./_plugin-vue_export-helper-DUFB50Ey.js";import{A as Ee,C as De,k as y,n as b}from"./index-CAPJG_im.js";import{t as Oe}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as ke,i as Ae,o as je,r as Me,t as Ne}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";import"./pricingScaleDetail-CuzzWQVd.js";import{n as Pe,t as Fe}from"./pricingMethodTotals-DHJf6v89.js";import{t as Ie}from"./pricingPersistControl-DVG_7RF1.js";var Le={class:`h-full min-h-0 flex flex-col gap-2`},Re={class:`rounded-lg border bg-card xmMx flex min-h-0 flex-1 flex-col overflow-hidden`},ze={class:`flex items-start justify-between gap-3 border-b px-3 py-2`},Be={class:`min-w-0 space-y-1`},Ve={class:`text-xs font-semibold text-foreground leading-none`},He={class:`text-[11px] leading-none leading-4 !text-[brown]`},Ue={class:`mt-4 flex items-center justify-end gap-2`},We={class:`mt-4 flex items-center justify-end gap-2`},Ge=`pricing-clear-skip:`,Ke=`pricing-force-default:`,qe=5e3,x=Te(re({__name:`Summary`,props:{contractId:{},contractName:{},projectInfoKey:{}},setup(Te){let x=Te,Je=Ee(),S=De(),Ye=se(),{t:C,locale:w}=oe(),Xe=o(()=>x.projectInfoKey||`xm-base-info-v1`),T={excludeInvestmentCostAndAreaRows:!0},E=f(``),D=e=>typeof e==`boolean`?e:null,O=(e,t=!0)=>typeof e==`boolean`?e:t,k={scale:!0,onlyCostScale:!1,amount:!0,workDay:!0},A=o(()=>{let e=E.value;return e?xe().map(({id:e,item:t})=>({id:e,item:t})).filter(({item:t})=>!!((t?.code||t?.ref)&&t?.name)&&t.defCoe!==null&&Ce(t,Se(e))).map(({id:e,item:t})=>({id:e,code:t.code||t.ref||``,name:t.name,process:t.process,type:{scale:D(t.scale),onlyCostScale:D(t.onlyCostScale),amount:D(t.amount),workDay:D(t.workDay)}})):[]}),j=o(()=>new Map(A.value.map(e=>[e.id,e])));o(()=>new Map(A.value.map(e=>[e.code,e.id])));let Ze=o(()=>A.value.map(e=>e.id).join(`|`)),M={id:`fixed-budget-c`,code:``,name:C(`htZxFw.subtotal`)},N=e=>e?.id===M.id,Qe=e=>({id:String(e.id||``),code:e.code||``,name:e.name||``,process:String(e.id||``)===M.id?null:e.process??null,investScale:typeof e.investScale==`number`?e.investScale:null,landScale:typeof e.landScale==`number`?e.landScale:null,serviceFee:typeof e.serviceFee==`number`?e.serviceFee:null,hourly:typeof e.hourly==`number`?e.hourly:null,subtotal:typeof e.subtotal==`number`?e.subtotal:null,finalFee:typeof e.finalFee==`number`?e.finalFee:null,remark:String(e.remark||``),actions:e.actions}),P=f([]),F=o(()=>S.contracts[x.contractId]?.selectedIds||[]),I=o(()=>P.value),L=()=>{let e=S.getContractState(x.contractId);return e?{selectedIds:Array.isArray(e.selectedIds)?[...e.selectedIds]:[],selectedCodes:Array.isArray(e.selectedCodes)?[...e.selectedCodes]:[],detailRows:(e.detailRows||[]).map(e=>Qe(e))}:{selectedIds:[],detailRows:[]}},R=async e=>{await S.setContractState(x.contractId,e)},z=ne(null),$e=e=>{z.value=e.api,H()},B=null,V=e=>!!(e&&!e.isDestroyed?.()),et=async()=>{await i();let e=z.value;V(e)&&e.onRowHeightChanged()},H=()=>{B&&clearTimeout(B),B=setTimeout(()=>{B=null,V(z.value)&&et()},0)},tt=e=>{H()},U=f(!1),W=f(null),G=f(!1),K=f(null),nt=o(()=>{if(!W.value)return``;let e=I.value.find(e=>e.id===W.value);if(e)return`${e.code}${e.name}`;let t=j.value.get(W.value);return t?`${t.code}${t.name}`:W.value}),rt=o(()=>{if(!K.value)return``;let e=I.value.find(e=>e.id===K.value);if(e)return`${e.code}${e.name}`;let t=j.value.get(K.value);return t?`${t.code}${t.name}`:K.value}),it=e=>{U.value=e},at=e=>{G.value=e},ot=async()=>{let e=W.value;if(!e)return;let t=I.value.find(t=>t.id===e);if(!t||N(t)){U.value=!1,W.value=null;return}await pt(t),U.value=!1,W.value=null},st=async()=>{let e=K.value;if(!e)return;let t=e.split(`-`)[4];await wt(F.value.filter(e=>e!==t)),G.value=!1,K.value=null},q=(e,t,n=3)=>e==null&&t==null?!0:e==null||t==null?!1:_(e,n)===_(t,n),ct=e=>{let t=j.value.get(e)?.type;return{scale:O(t?.scale,k.scale),onlyCostScale:O(t?.onlyCostScale,k.onlyCostScale),amount:O(t?.amount,k.amount),workDay:O(t?.workDay,k.workDay)}},lt=(e,t)=>{let n=ct(e),r=n.scale,i=r&&!n.onlyCostScale;return{investScale:r?t.investScale:null,landScale:i?t.landScale:null,workload:n.amount?t.workload:null,hourly:n.workDay?t.hourly:null}},ut=(e,t)=>{let n=lt(e,t);return{investScale:n.investScale,landScale:n.landScale,workload:n.workload,hourly:n.hourly}},J=(e,t)=>v(e.filter(e=>!N(e)).map(e=>e[t])),Y=(e,t,n)=>({headerName:e,field:t,minWidth:n,flex:1.5,editable:!1,cellClassRules:{"zxfw-number-cell":()=>!0,"ag-right-aligned-cell":()=>!0},valueGetter:e=>e.data?e.data[t]:null,valueFormatter:e=>{if(e.value==null)return``;let t=_e(e.value);return t==null?``:t.toLocaleString(`zh-CN`,{minimumFractionDigits:2,maximumFractionDigits:2})}}),dt=e=>S.getServicePricingStorageKeys(x.contractId,e),ft=async e=>{let t=dt(e),n=Date.now(),r=n+qe,i=`${n}:${r}`;for(let e of t)sessionStorage.setItem(Ie(Ge,e),i),sessionStorage.setItem(Ie(Ke,e),String(r));S.removeAllServicePricingMethodStates(x.contractId,e),await Promise.all(t.map(e=>Ye.removeItem(e)))},pt=async e=>{if(N(e))return;Je.removeTab(`zxfw-edit-${x.contractId}-${e.id}`),await i(),await ft(e.id);let t=P.value.find(t=>t.id===e.id);t&&(t.process=null,t.remark=``,t.finalFee=t.subtotal==null?null:_(t.subtotal,2),P.value=[...P.value],await Q())},mt=re({name:`NameCellRenderer`,props:{params:{type:Object,required:!0}},setup(e){return()=>{let t=e.params.data;return!t||N(t)?``:te(`div`,{class:`zxfw-name-wrap`},String(e.params.value||t.name||``))}}}),ht=[{headerName:C(`htZxFw.columns.code`),field:`code`,minWidth:50,maxWidth:100,valueGetter:e=>e.data?N(e.data)?C(`htZxFw.subtotal`):e.data.code:``,colSpan:e=>e.node?.rowPinned===`bottom`?3:1},{headerName:C(`htZxFw.columns.name`),field:`name`,minWidth:150,flex:3,cellClass:`zxfw-name-cell`,wrapText:!0,autoHeight:!0,cellStyle:{"line-height":1.6},cellRenderer:mt,valueGetter:e=>!e.data||N(e.data)?``:e.data.name},{headerName:C(`htZxFw.columns.process`),field:`process`,headerClass:`ag-center-header zxfw-process-header`,minWidth:w.value.startsWith(`en`)?118:150,maxWidth:w.value.startsWith(`en`)?136:200,flex:1,editable:!1,sortable:!1,filter:!1,cellClass:`zxfw-process-cell-container`,cellStyle:{display:`flex`,alignItems:`center`,justifyContent:`center`},valueGetter:e=>!e.data||N(e.data)?null:e.data.process==1?1:e.data.process==0?0:null,valueFormatter:e=>[C(`htZxFw.processDraft`),C(`htZxFw.processReview`)].find((t,n)=>n==e.value)??C(`htZxFw.none`)},Y(C(`htZxFw.columns.investScale`),`investScale`,100),Y(C(`htZxFw.columns.landScale`),`landScale`,100),Y(C(`htZxFw.columns.workload`),`serviceFee`,90),Y(C(`htZxFw.columns.hourly`),`hourly`,90),{headerName:C(`htZxFw.columns.subtotal`),field:`subtotal`,flex:2,minWidth:100,editable:!1,cellClassRules:{"zxfw-number-cell":()=>!0,"ag-right-aligned-cell":()=>!0},valueGetter:e=>e.data?e.data.subtotal:null,valueFormatter:e=>e.value==null?``:ve(e.value,2)},{headerName:C(`htZxFw.columns.finalFee`),field:`finalFee`,headerTooltip:C(`htZxFw.columns.finalFeeTooltip`),flex:2,minWidth:110,editable:!1,cellClassRules:{"zxfw-number-cell":()=>!0,"ag-right-aligned-cell":()=>!0},valueGetter:e=>e.data?e.data.finalFee:null,valueParser:e=>{let t=_e(e.newValue,{precision:2});return t==null?null:_(t,2)},valueFormatter:e=>e.value==null?``:ve(e.value,2)},{headerName:C(`htZxFw.columns.remark`),field:`remark`,minWidth:160,flex:1.8,editable:!1,cellEditor:`agLargeTextCellEditor`,cellEditorPopup:!0,cellEditorParams:{maxLength:500,rows:8,cols:48},wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},valueGetter:e=>!e.data||N(e.data)?``:String(e.data.remark||``),valueFormatter:e=>e.value==null?``:String(e.value),cellClass:e=>N(e.data)?``:`remark-wrap-cell`,cellClassRules:{"editable-cell-empty":e=>!N(e.data)&&(e.value==null||String(e.value).trim()===``)}}],gt=o(()=>Ne(ht)),_t={...ke,treeData:!1,getDataPath:void 0,context:{onSetProcess:async(e,t)=>{let n=L(),r=!1,i=n.detailRows.map(n=>{if(N(n)||String(n.id)!==String(e))return n;let i=t===1?1:0;return(n.process===1?1:0)===i?n:(r=!0,{...n,process:i})});r&&await R({...n,detailRows:i})}}},X=e=>{let t=J(e,`investScale`),n=J(e,`landScale`),r=J(e,`workload`),i=J(e,`hourly`),a=v(e.filter(e=>!N(e)).map(e=>e.finalFee));return e.map(e=>N(e)?{...e,investScale:t,landScale:n,workload:r,hourly:i,subtotal:v([t,n,r,i]),finalFee:a==null?null:_(a,2)}:e)},vt=()=>I.value.filter(e=>!N(e)).map(e=>String(e.id)),yt=async()=>{let e=vt();e.length!==0&&await Fe({contractId:x.contractId,serviceIds:e,options:T})},bt=async e=>{let t=L(),n=Array.from(new Set(e.filter(e=>t.detailRows.some(t=>!N(t)&&String(t.id)===String(e)))));if(n.length===0){await R({...t,detailRows:X(t.detailRows)});return}await Fe({contractId:x.contractId,serviceIds:n,options:T});let r=await Pe({contractId:x.contractId,serviceIds:n,options:T}),i=new Set(n.map(e=>String(e))),a=t.detailRows.map(e=>{if(N(e)||!i.has(String(e.id)))return e;let t=r.get(String(e.id)),n=t?lt(String(e.id),t):null;if(!n)return e;console.log(`回填计价结果:`,e.id,n);let a=v([n.investScale,n.landScale,n.workload,n.hourly]),o=!(q(e.investScale,n.investScale)&&q(e.landScale,n.landScale)&&q(e.workload,n.workload)&&q(e.hourly,n.hourly));return{...e,investScale:n.investScale,landScale:n.landScale,workload:n.workload,hourly:n.hourly,finalFee:o?a==null?null:_(a,2):e.finalFee}});await R({...t,detailRows:X(a)})},xt=async e=>{let t=L(),n=new Set(t.selectedIds||[]),r=Array.from(new Set(e)).filter(e=>j.value.has(e)&&e!==M.id),i=new Map(t.detailRows.map(e=>[e.id,e])),a=r.map(e=>{let t=j.value.get(e);if(!t)return null;let n=i.get(e),r=ut(e,{investScale:n?.investScale??null,landScale:n?.landScale??null,workload:n?.workload??null,hourly:n?.hourly??null});return{id:n?.id||e,code:t.code,name:t.name,process:n?.process??null,investScale:r.investScale,landScale:r.landScale,workload:r.workload,hourly:r.hourly,subtotal:typeof n?.subtotal==`number`?n.subtotal:null,finalFee:typeof n?.finalFee==`number`?n.finalFee:null,remark:String(n?.remark||``)}}).filter(e=>e!==null),o=new Map(A.value.map((e,t)=>[e.id,t]));a.sort((e,t)=>(o.get(e.id)||0)-(o.get(t.id)||0));let s=i.get(M.id),c={id:s?.id||M.id,code:M.code,name:M.name,process:null,investScale:typeof s?.investScale==`number`?s.investScale:null,landScale:typeof s?.landScale==`number`?s.landScale:null,hourly:typeof s?.hourly==`number`?s.hourly:null,subtotal:typeof s?.subtotal==`number`?s.subtotal:null,finalFee:typeof s?.finalFee==`number`?s.finalFee:null,serviceFee:typeof s?.serviceFee==`number`?s.serviceFee:null,remark:``,actions:null},l=Array.from(n).filter(e=>!r.includes(e));for(let e of l)Je.removeTab(`zxfw-edit-${x.contractId}-${e}`);await R({...t,selectedIds:r,detailRows:X([...a,c])})},St=e=>{let t=x.contractId;return e.map(e=>{let n=j.value.get(e);return{id:`${t}-zx-${e}`,code:n?.code||``,name:n?.name||``,process:n?.process,investScale:null,landScale:null,serviceFee:null,hourly:null,subtotal:null,finalFee:null,remark:``,actions:null,typel:n?.type}})},Ct=async()=>{try{let e=S.getContractState(x.contractId)?.selectedIds||[];if(!e.length){P.value=[];return}let t=await b().query([{field:`type`,value:`${x.contractId}-zxFw`,operator:`eq`}]),n=await b().query([{field:`type`,value:`${x.contractId}-investment`,operator:`eq`}]),r=await b().query([{field:`type`,value:`${x.contractId}-Quantityofwork`,operator:`eq`}]),i=await b().query([{field:`type`,value:`${x.contractId}-hourly`,operator:`eq`}]),a=await b().query([{field:`type`,value:`${x.contractId}-task`,operator:`eq`}]),o;o=St(e);for(let e of o){let o=e.code,s=n.find(e=>e.groupCode===o),c=r.find(e=>e.majorCode===o),l=i.find(e=>e.expertCode===o),u=a.find(e=>e.taskCode===o),d=t.find(e=>e.code===o);e.investScale=0,e.landScale=0,e.finalFee=0,e.hourly=0,e.serviceFee=0,s!=null&&(e.investScale=s.serviceFee),d!=null&&(e.finalFee=d.finalFee,e.remark=d.remark),l!=null&&(e.hourly=l.feeSubtotal6),c!=null&&(e.landScale=c.serviceFee),u!=null&&(e.serviceFee=u.serviceFee),e.subtotal=e.investScale+e.landScale+e.serviceFee+e.hourly,e.finalFee=e.subtotal,d!=null&&(d.finalFee!=null||d.finalFee!=0)?e.finalFee=d.finalFee:e.finalFee=e.subtotal}P.value=o,(await b().query([{field:`type`,value:`${x.contractId}-otherservice`,operator:`eq`}])).forEach((e,t)=>{P.value.push({id:String(t),code:`其他服务`,name:e.feeItem,process:null,investScale:0,landScale:0,serviceFee:0,hourly:0,subtotal:e.serviceFee,finalFee:e.serviceFee,remark:e.remark})})}catch(e){console.error(`updateFilteredRows failed:`,e),P.value=[]}},wt=async e=>{let t=[...F.value];await xt(e);let n=L().selectedIds||[],r=new Set(n),i=n.filter(e=>!t.includes(e)&&r.has(e));await kt(i),await bt(i),await yt(),await Ct()};f([]),f([]),f([]);let Z=async()=>{try{await Ct()}catch(e){console.error(`initializeContractState failed:`,e),P.value=[]}};m(()=>b().items,async e=>{Object.keys(e).length>0&&Z()},{immediate:!0,deep:!0});let Q=async()=>{},Tt=async()=>{try{let e=await Ye.getItem(Xe.value);E.value=typeof e?.projectIndustry==`string`?e.projectIndustry.trim():``}catch(e){console.error(`loadProjectIndustry failed:`,e),E.value=``}},Et=()=>{let e=String(E.value||``).trim();if(!e)return null;if(e.toUpperCase()===`E2`)return 0;if(e.toUpperCase()===`E3`)return 1;if(e.toUpperCase()===`E4`)return 2;let t=Number(e);return Number.isFinite(t)?t:null},Dt=e=>{let t=Number(e);if(!Number.isFinite(t))return[];let n=ye(w.value),r=Et(),i=we.find(e=>Number(e.fid)===t&&Number(e.industry)===r),a=i?(()=>{let e=Array.isArray(i.sid)?i.sid.map(e=>Number(e)).filter(Number.isFinite):[],t=new Set(e);return n.filter(e=>t.has(Number(e.serviceid))).sort((t,n)=>{let r=e.indexOf(Number(t.serviceid)),i=e.indexOf(Number(n.serviceid));return r===i?t.order-n.order:r-i})})():n.filter(e=>Number(e.serviceid)===t).sort((e,t)=>e.order-t.order),o=e=>C(e===1?`workContent.type.optional`:e===2?`workContent.type.daily`:e===3?`workContent.type.special`:e===4?`workContent.type.additional`:`workContent.type.basic`);return a.map(e=>{let t=String(e.text||``).trim();if(!t)return null;let n=be(e.serviceid),r=n?`${String(n.code||``).trim()} ${String(n.name||``).trim()}`.trim():``;return{id:`dict-${e.serviceid}-${e.order}`,content:t,type:o(e.type),dictOrder:e.order,serviceGroup:r,serviceid:Number.isFinite(Number(e.serviceid))?Number(e.serviceid):null,remark:``,checked:!0,custom:!1,path:r?[r,t]:[o(e.type),t]}}).filter(e=>!!e)},Ot=async e=>{let t=`work-content-${x.contractId}-${e}`,n=await S.loadKeyState(t);if(Array.isArray(n?.detailRows)&&n.detailRows.length>0)return;let r=Dt(e);r.length!==0&&S.setKeyState(t,{detailRows:r})},kt=async e=>{let t=Array.from(new Set(e.map(e=>String(e||``).trim()).filter(Boolean)));t.length!==0&&await Promise.all(t.map(e=>Ot(e)))};m(Ze,()=>{let e=new Set(A.value.map(e=>e.id)),t=F.value.filter(t=>e.has(t));t.length!==F.value.length&&xt(t)});let At=async()=>{let e=L();if(!Array.isArray(e.detailRows)||e.detailRows.length===0)return;let t=!1,n=e.detailRows.map(e=>{if(N(e)){let n=C(`htZxFw.subtotal`);return e.name===n?e:(t=!0,{...e,name:n})}let n=j.value.get(String(e.id));if(!n)return e;let r=String(n.code||``),i=String(n.name||``);return e.code===r&&e.name===i?e:(t=!0,{...e,code:r,name:i})});t&&await R({...e,detailRows:X(n)})};m(()=>w.value,()=>{At()}),m(()=>I.value.map(e=>`${e.id}:${e.name}`).join(`|`),()=>{H()}),t(()=>{B&&=(clearTimeout(B),null),V(z.value)&&z.value.stopEditing(),z.value=null});let $=!1,jt=async()=>{let e=L(),t=X(e.detailRows);await R({...e,detailRows:t});let n=z.value;if(V(n)){let e=t.find(e=>N(e)),r=n.getRowNode(M.id);r&&e&&r.setData(e)}},Mt=async e=>{if($)return;let t=e.data;if(!t||N(t))return;let n=String(e.colDef?.field||``);if(n!==`finalFee`&&n!==`remark`)return;let r=P.value.find(e=>e.code===t.code);r&&(n===`remark`?r.remark=String(e.newValue||``):n===`finalFee`&&(r.finalFee=e.newValue==null?null:_(Number(e.newValue),2)),P.value=[...P.value]),await Q(),console.log(`✅ 单元格更新:`,n,`->`,e.newValue,`Row ID:`,t.id)};m(()=>P.value.map(e=>e.subtotal),(e,t)=>{if(JSON.stringify(e)===JSON.stringify(t))return;let n=!1;for(let e of P.value){if(N(e))continue;let t=e.subtotal==null?null:_(e.subtotal,2);e.finalFee!==t&&(e.finalFee=t,n=!0)}n&&(P.value=[...P.value],Q())},{deep:!1,immediate:!0});let Nt=o(()=>[{id:`pinned-total-row`,code:C(`htZxFw.columns.subtotal`),process:null,investScale:g(P.value,e=>e.investScale),landScale:g(P.value,e=>e.landScale),hourly:g(P.value,e=>e.hourly),serviceFee:g(P.value,e=>e.serviceFee),finalFee:g(P.value,e=>e.finalFee),subtotal:g(P.value,e=>e.subtotal),expertName:``,path:[`TOTAL`]}]),Pt=()=>{$=!0},Ft=()=>{$=!1,jt()};return l(async()=>{await Tt(),await Z()}),c(async()=>{await Tt(),await Z()}),s(()=>{Q()}),(t,i)=>(n(),ee(p(ce),null,{default:h(()=>[d(`div`,Le,[d(`div`,Re,[d(`div`,ze,[d(`div`,Be,[d(`h3`,Ve,a(p(C)(`htZxFw.title`)),1)]),d(`p`,He,a(p(C)(`htZxFw.warning`)),1)]),d(`div`,{class:ie(p(Ae))},[e(p(ae),{style:r(p(Me)),rowData:I.value,columnDefs:gt.value,pinnedBottomRowData:Nt.value,gridOptions:_t,theme:p(je),onCellValueChanged:Mt,onPasteStart:Pt,onPasteEnd:Ft,onFillStart:Pt,onFillEnd:Ft,animateRows:!0,onGridReady:$e,onFirstDataRendered:tt,enableClipboard:!0,localeText:p(Oe),tooltipShowDelay:500,headerHeight:30,undoRedoCellEditing:!0,undoRedoCellEditingLimit:20},null,8,[`style`,`rowData`,`columnDefs`,`pinnedBottomRowData`,`theme`,`localeText`])],2)]),e(p(ge),{open:U.value,"onUpdate:open":it},{default:h(()=>[e(p(le),null,{default:h(()=>[e(p(ue),{class:`fixed inset-0 z-50 bg-black/45`}),e(p(fe),{class:`fixed left-1/2 top-1/2 z-[70] w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:h(()=>[e(p(pe),{class:`text-base font-semibold`},{default:h(()=>[u(a(p(C)(`htZxFw.dialog.resetTitle`)),1)]),_:1}),e(p(he),{class:`mt-2 text-sm text-muted-foreground`},{default:h(()=>[u(a(p(C)(`htZxFw.dialog.resetDesc`,{name:nt.value})),1)]),_:1}),d(`div`,Ue,[e(p(me),{"as-child":``},{default:h(()=>[e(p(y),{variant:`outline`},{default:h(()=>[u(a(p(C)(`common.cancel`)),1)]),_:1})]),_:1}),e(p(de),{"as-child":``},{default:h(()=>[e(p(y),{variant:`destructive`,onClick:ot},{default:h(()=>[u(a(p(C)(`htZxFw.dialog.confirmReset`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`]),e(p(ge),{open:G.value,"onUpdate:open":at},{default:h(()=>[e(p(le),null,{default:h(()=>[e(p(ue),{class:`fixed inset-0 z-50 bg-black/45`}),e(p(fe),{class:`fixed left-1/2 top-1/2 z-[70] w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:h(()=>[e(p(pe),{class:`text-base font-semibold`},{default:h(()=>[u(a(p(C)(`htZxFw.dialog.deleteTitle`)),1)]),_:1}),e(p(he),{class:`mt-2 text-sm text-muted-foreground`},{default:h(()=>[u(a(p(C)(`htZxFw.dialog.deleteDesc`,{name:rt.value})),1)]),_:1}),d(`div`,We,[e(p(me),{"as-child":``},{default:h(()=>[e(p(y),{variant:`outline`},{default:h(()=>[u(a(p(C)(`common.cancel`)),1)]),_:1})]),_:1}),e(p(de),{"as-child":``},{default:h(()=>[e(p(y),{variant:`destructive`,onClick:st},{default:h(()=>[u(a(p(C)(`common.delete`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`])])]),_:1}))}}),[[`__scopeId`,`data-v-375aa45f`]]);export{x as default}; \ No newline at end of file diff --git a/33/static/js/WorkContentGrid-nNmx9oMr.js b/33/static/js/WorkContentGrid-nNmx9oMr.js new file mode 100644 index 0000000..094b135 --- /dev/null +++ b/33/static/js/WorkContentGrid-nNmx9oMr.js @@ -0,0 +1 @@ +import{$ as e,At as t,Bt as n,Cr as r,Dt as i,Er as a,H as o,K as ee,Ot as te,Pt as ne,Q as s,U as c,Wn as l,er as u,mn as d,tt as f,yn as p}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as re}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as m}from"./workspace-DxKKyh8w.js";import{d as h}from"./decimal-D3bp1pbs.js";import{dt as g,ft as _,gt as v,ht as y,lt as b,mt as ie,pt as ae,ut as oe}from"./vendor-ui-B4V4Cf1T.js";import"./numberFormat-jhZZmX17.js";import{g as se,h as x}from"./sql-C69Jo4HU.js";import{t as S}from"./_plugin-vue_export-helper-DUFB50Ey.js";import{C as ce,k as C,n as w}from"./index-CAPJG_im.js";import{t as le}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{n as ue,o as de,r as fe,t as pe}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";var me={class:`h-full min-h-0 xmMx`},he={class:`h-full min-h-0 rounded-2xl border border-border/60 bg-card/90 shadow-sm backdrop-blur-sm`},ge={class:`flex items-center justify-between border-b border-border/60 px-4 py-3`},_e={class:`text-sm font-semibold text-foreground`},T={class:`ag-theme-quartz h-[calc(100%-56px)] min-h-0 w-full`},E={class:`mt-4 flex items-center justify-end gap-2`},D=S(f({__name:`WorkContentGrid`,props:{title:{default:``},storageKey:{},serviceId:{},contractId:{},projectInfoKey:{default:`xm-base-info-v1`},dictMode:{default:`none`}},emits:[`checkedChange`],setup(f,{expose:S,emit:D}){let O=f,k=async()=>await w().query([{field:`type`,value:`${O.contractId}-zxFw`,operator:`eq`}]),A=D,{t:j,locale:M}=m(),N=ce(),P=h(),F=l(null),I=l([]),L=l(!1),R=l([]),ve={...ue,resizable:!0,sortable:!1,filter:!1},z=async()=>{await i();let e=F.value;!e||e.isDestroyed?.()||(L.value&&e.expandAll(),e.refreshClientSideRowModel(`group`),e.refreshCells({force:!0}),e.redrawRows(),setTimeout(()=>{let e=F.value;!e||e.isDestroyed?.()||(L.value&&e.expandAll(),e.refreshCells({force:!0}),e.redrawRows())},16))},B=e=>{let t=Number(e);return Number.isSafeInteger(t)?t:null},ye=e=>{let t=String(e||``).trim();if(!t.startsWith(`dict-`))return``;let n=/^dict-(-?\d+)-(\d+)(?:-|$)/.exec(t);return n?`sid:${n[1]}|order:${n[2]}`:``},V=e=>{let t=ye(e.id);if(t)return t;let n=String(e.content||``).trim(),r=B(e.serviceid),i=Number(e.dictOrder);if(r!=null&&Number.isFinite(i))return`sid:${r}|order:${i}`;if(r!=null)return`sid:${r}|content:${n}`;let a=String(e.serviceGroup||``).trim();return a?`group:${a}|content:${n}`:`content:${n}`},be=async()=>{try{let e=await P.getItem(O.projectInfoKey),t=typeof e?.projectIndustry==`string`?e.projectIndustry.trim():``;if(t.toUpperCase()===`E2`)return 0;if(t.toUpperCase()===`E3`)return 1;if(t.toUpperCase()===`E4`)return 2;let n=Number(t);return Number.isFinite(n)?n:null}catch{return null}},xe=async()=>{let e=[],t=se(M.value),n=[],r=[];if(L.value=!1,R.value=[],O.dictMode===`service`){let e=await be(),i=(await k()).filter(e=>e.id.split(`-`).at(-1)!==`1`&&e.id.split(`-`).at(-1)!==`2`).map(e=>e.id.split(`-`).at(-1)),a={fid:0,industry:e,sid:[`5`,`7`,`17`,`9`,`10`,`11`,`19`,`20`,`21`,`23`,`25`,`26`,`27`,`30`,`31`,`32`,`0`,`1`,`2`,`3`,`4`].filter(e=>i.includes(e))};if(a){r=Array.isArray(a.sid)?a.sid.map(e=>Number(e)).filter(Number.isFinite):[],Number(a.fid),Number(a.industry),[...r];let e=new Set(r);n=t.filter(t=>e.has(Number(t.serviceid))),L.value=r.length>0,R.value=r.map(e=>{let t=x(e);return t?`${String(t.code||``).trim()} ${String(t.name||``).trim()}`.trim():String(e)})}else n=t.filter(e=>e.serviceid===0)}else if(O.dictMode===`additional`)n=t.filter(e=>e.serviceid===-1&&O.storageKey.split(`-`).at(-1)==`2`);else return[];if(L.value){let e=new Map(r.map((e,t)=>[e,t]));n.sort((t,n)=>{let r=e.get(Number(t.serviceid))??2**53-1,i=e.get(Number(n.serviceid))??2**53-1;return r===i?t.order-n.order:r-i})}else n.sort((e,t)=>e.order-t.order);for(let t of n){let n=String(t.text||``).trim();if(!n)continue;let r=t.type===1?j(`workContent.type.optional`):t.type===2?j(`workContent.type.daily`):t.type===3?j(`workContent.type.special`):t.type===4?j(`workContent.type.additional`):j(`workContent.type.basic`),i=x(t.serviceid),a=i?`${String(i.code||``).trim()} ${String(i.name||``).trim()}`.trim():``;e.push({id:`dict-${t.serviceid}-${t.order}`,content:n,type:r,dictOrder:t.order,serviceGroup:a,serviceid:B(t.serviceid),remark:``,checked:!0,custom:!1,path:L.value&&a?[a,n]:[r,n]})}return e},H=l(!1),U=l(null),W=l(``),Se=o(()=>I.value.filter(e=>!Y(e)&&e.checked).map(e=>e.id));S({selectedTexts:o(()=>I.value.filter(e=>!Y(e)&&(e.custom||e.checked)).map(e=>e.content).filter(Boolean))});let G=()=>{A(`checkedChange`,[...Se.value])},K=async()=>{let e={detailRows:X(I.value).map(e=>({...e}))};N.setKeyState(O.storageKey,e),G();let t=e.detailRows.map(e=>({...e,type:`${O.contractId}-workcontent`}));await w().upsertBatch(t)},q=async()=>{let e=O.dictMode===`none`?[]:await xe(),t=await N.loadKeyState(O.storageKey);if(Array.isArray(t?.detailRows)&&t.detailRows.length>0){let n=t.detailRows.map(e=>({...e,type:e.custom?j(`workContent.type.custom`):e.type||j(`workContent.type.basic`),checked:e.custom?!1:e.checked!==!1,serviceid:B(e.serviceid),path:Array.isArray(e.path)&&e.path.length?e.path:[j(`workContent.type.custom`),e.content||j(`workContent.unnamed`)]})),r=new Map;for(let t of e){let e=String(t.serviceGroup||``).trim(),n=B(t.serviceid);!e||n==null||r.set(e,n)}for(let e of n){if(e.serviceid!=null)continue;let t=String(e.serviceGroup||``).trim();if(!t)continue;let n=r.get(t);n!=null&&(e.serviceid=n)}if(e.length>0){let t=n.filter(e=>e.custom),r=n.filter(e=>!e.custom),i=new Set(e.map(V)),a=r.filter(e=>i.has(V(e))),o=new Map(a.map(e=>[V(e),e]));I.value=Q([...e.map(e=>{let t=V(e),n=o.get(t);return n?{...e,checked:n.checked!==!1,remark:String(n.remark||``)}:e}),...t]),K()}else I.value=Q(n),L.value=I.value.some(e=>!e.custom&&!!String(e.serviceGroup||``).trim())}else I.value=Q(e),K();G(),await z()},Ce=(e,t)=>{let n=I.value.find(t=>t.id===e);!n||Y(n)||(n.checked=t,F.value?.refreshCells({force:!0}),F.value?.redrawRows(),K())},J=e=>e?(e.allLeafChildren||[]).map(e=>e.data).filter(e=>!!(e&&!Y(e)&&!e.custom)):[],we=(e,t)=>{let n=J(e);if(n.length===0)return;let r=new Set(n.map(e=>e.id)),i=!1;for(let e of I.value)r.has(e.id)&&e.checked!==t&&(e.checked=t,i=!0);i&&(F.value?.refreshCells({force:!0}),F.value?.redrawRows(),K())},Te=o(()=>{if(L.value)return{suppressCount:!0,innerRenderer:e=>{let t=document.createElement(`div`);t.className=`work-content-group-row`;let n=document.createElement(`input`);n.type=`checkbox`,n.className=`work-content-group-check`;let r=J(e.node),i=r.filter(e=>e.checked).length;n.checked=r.length>0&&i===r.length,n.indeterminate=i>0&&ie.stopPropagation()),n.addEventListener(`click`,e=>e.stopPropagation()),n.addEventListener(`change`,t=>{t.stopPropagation(),we(e.node,n.checked)});let a=document.createElement(`span`);return a.className=`work-content-group-label`,a.textContent=String(e.valueFormatted||e.value||e.node.key||``),t.append(n,a),t}}}),Ee=[{headerName:j(`workContent.columns.no`),minWidth:60,width:70,suppressMovable:!0,editable:!1,colSpan:e=>Y(e.data)?5:1,valueGetter:e=>{if(!e.node||e.node.group||Y(e.data))return``;if(!L.value)return(e.node.rowIndex??0)+1;let t=(e.node.parent?.childrenAfterSort||[]).filter(e=>!e.group&&!Y(e.data)).findIndex(t=>t.id===e.node?.id);return t>=0?t+1:``},cellRenderer:e=>{let t=e.data;if(!Y(t))return e.value;let n=document.createElement(`button`);return n.type=`button`,n.className=`inline-flex h-full w-full cursor-pointer items-center justify-center rounded-none border-0 bg-transparent px-3 py-3 text-sm font-medium text-blue-700 hover:bg-transparent focus:outline-none`,n.textContent=`+ ${j(`workContent.addCustom`)}`,n.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),ke(String(t?.serviceGroup||``).trim())}),n}},{headerName:j(`workContent.columns.content`),field:`content`,minWidth:320,flex:2,cellClass:`work-content-main-cell`,editable:e=>!!(e.data?.custom&&!Y(e.data)),valueParser:e=>String(e.newValue||``).trim(),wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.5`},cellRenderer:e=>{let t=e.data;if(!t)return``;let n=document.createElement(`div`);if(n.style.display=`flex`,n.style.alignItems=`center`,n.style.justifyContent=`space-between`,n.style.gap=`6px`,n.style.width=`100%`,n.className=`work-content-cell`,Y(t)){let e=document.createElement(`span`);return e.className=`work-content-placeholder`,e.textContent=String(t.content||j(`workContent.addCustom`)),n.appendChild(e),n}if(t.custom){let e=document.createElement(`span`);return t.content?(e.className=`work-content-text`,e.textContent=t.content):(e.className=`work-content-placeholder`,e.textContent=j(`workContent.clickToInputContent`)),n.appendChild(e),n}let r=document.createElement(`input`);r.type=`checkbox`,r.className=`work-content-check`,r.checked=!!t.checked,r.addEventListener(`change`,()=>{Ce(t.id,r.checked)});let i=document.createElement(`span`);return i.className=`work-content-text`,i.textContent=String(t.content||``),n.appendChild(r),n.appendChild(i),n}},{headerName:j(`workContent.columns.remark`),field:`remark`,minWidth:180,flex:1.2,editable:e=>!Y(e.data),cellEditor:`agLargeTextCellEditor`,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},cellClass:`remark-wrap-cell`,cellClassRules:{"editable-cell-empty":e=>e.value==null||e.value===``},valueFormatter:e=>Y(e.data)?``:e.value||j(`workContent.clickToInput`)}],De=o(()=>pe(Ee)),Y=e=>!!e?.isAddTrigger,X=e=>e.filter(e=>!Y(e)),Z=e=>({id:`add-trigger-${e?String(e).trim():`root`}`,content:j(`workContent.addCustom`),type:j(`workContent.type.custom`),serviceGroup:e||``,serviceid:null,remark:``,checked:!1,custom:!1,isAddTrigger:!0,path:e?[e,`__add__`]:[`__add__`]}),Q=e=>{let t=X(e);if(L.value){let e=new Map;for(let n of t){let t=String(n.serviceGroup||``).trim()||j(`workContent.ungrouped`);e.has(t)||e.set(t,[]),e.get(t)?.push(n)}let n=R.value.length?[...R.value]:[...e.keys()],r=[],i=new Set;for(let t of n)i.add(t),r.push(...e.get(t)||[]),r.push(Z(t));for(let[t,n]of e.entries())i.has(t)||(r.push(...n),r.push(Z(t)));return r}return[...t,Z()]},Oe=e=>{let t=Array.isArray(e?.path)?e.path.map(e=>String(e||``).trim()).filter(Boolean):[];return t.length>0?t:[String(e?.id||``).trim()||`__row__`]},ke=e=>{let t=Date.now(),n=L.value?String(e||R.value[0]||``).trim():``,r=L.value?X(I.value).find(e=>String(e.serviceGroup||``).trim()===n&&e.serviceid!=null)?.serviceid??null:null,i={id:`custom-${t}`,content:``,type:j(`workContent.type.custom`),serviceGroup:n,serviceid:r,remark:``,checked:!1,custom:!0,path:L.value&&n?[n,`${j(`workContent.type.custom`)}-${t}`]:[j(`workContent.type.custom`),`${j(`workContent.type.custom`)}-${t}`]},a=X(I.value);a.push(i),I.value=Q(a),K(),setTimeout(()=>{let e=I.value.findIndex(e=>e.id===i.id);e>=0&&F.value?.startEditingCell({rowIndex:e,colKey:`content`})},0)},Ae=e=>{F.value=e.api,z()},$=e=>{z()},je=e=>{let t=e.data;if(!(!t||Y(t))){if(e.colDef.field===`content`&&t.custom){let e=String(t.serviceGroup||``).trim();t.path=L.value&&e?[e,t.content||`${j(`workContent.type.custom`)}-${t.id}`]:[j(`workContent.type.custom`),t.content||`${j(`workContent.type.custom`)}-${t.id}`]}e.colDef.field===`type`&&t.custom&&(t.type=j(`workContent.type.custom`)),K()}};ne(()=>{q()}),d(L,()=>{z()}),d(()=>I.value.length,()=>{z()}),d(M,()=>{q()}),t(()=>{F.value?.stopEditing(),K()});let Me=e=>{H.value=e},Ne=e=>{I.value=Q(I.value.filter(t=>t.id!==e)),K()},Pe=()=>{let e=U.value;e&&(Ne(e),H.value=!1,U.value=null,W.value=``)};return te(async()=>{await q()}),(t,i)=>(n(),ee(`div`,me,[c(`div`,he,[c(`div`,ge,[c(`h3`,_e,a(O.title||u(j)(`workContent.title`)),1)]),c(`div`,T,[e(u(re),{style:r(u(fe)),rowData:I.value,columnDefs:De.value,theme:u(de),getRowId:e=>e.data.id,treeData:L.value,getDataPath:Oe,groupDefaultExpanded:L.value?-1:0,groupDisplayType:L.value?`groupRows`:void 0,groupRowRendererParams:Te.value,animateRows:!0,localeText:u(le),tooltipShowDelay:500,singleClickEdit:!0,stopEditingWhenCellsLoseFocus:!0,enterNavigatesVertically:!0,enterNavigatesVerticallyAfterEdit:!0,defaultColDef:ve,suppressColumnVirtualisation:!1,suppressRowVirtualisation:!1,onGridReady:Ae,onFirstDataRendered:$,onCellValueChanged:je},null,8,[`style`,`rowData`,`columnDefs`,`theme`,`getRowId`,`treeData`,`groupDefaultExpanded`,`groupDisplayType`,`groupRowRendererParams`,`localeText`])])]),e(u(oe),{open:H.value,"onUpdate:open":Me},{default:p(()=>[e(u(g),null,{default:p(()=>[e(u(_),{class:`fixed inset-0 z-50 bg-black/45`}),e(u(y),{class:`fixed left-1/2 top-1/2 z-[70] w-[92vw] max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background p-5 shadow-xl`},{default:p(()=>[e(u(b),{class:`text-base font-semibold`},{default:p(()=>[s(a(u(j)(`workContent.dialog.deleteTitle`)),1)]),_:1}),e(u(ae),{class:`mt-2 text-sm text-muted-foreground`},{default:p(()=>[s(a(u(j)(`workContent.dialog.deleteDesc`,{name:W.value})),1)]),_:1}),c(`div`,E,[e(u(ie),{"as-child":``},{default:p(()=>[e(u(C),{variant:`outline`},{default:p(()=>[s(a(u(j)(`common.cancel`)),1)]),_:1})]),_:1}),e(u(v),{"as-child":``},{default:p(()=>[e(u(C),{variant:`destructive`,onClick:Pe},{default:p(()=>[s(a(u(j)(`common.delete`)),1)]),_:1})]),_:1})])]),_:1})]),_:1})]),_:1},8,[`open`])]))}}),[[`__scopeId`,`data-v-2dd31a50`]]);export{D as default}; \ No newline at end of file diff --git a/33/static/js/WorkloadPricingPane-DgYywEPP.js b/33/static/js/WorkloadPricingPane-DgYywEPP.js new file mode 100644 index 0000000..9fae5d2 --- /dev/null +++ b/33/static/js/WorkloadPricingPane-DgYywEPP.js @@ -0,0 +1 @@ +import{$ as e,Bt as t,Cr as n,Er as r,H as i,K as a,U as o,W as s,Wn as c,er as l,ft as u,mn as d,tt as f,xr as ee}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as p}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as m}from"./workspace-DxKKyh8w.js";import{a as h,d as g,i as _,s as v}from"./decimal-D3bp1pbs.js";import{n as y,r as b}from"./numberFormat-jhZZmX17.js";import{C as x}from"./sql-C69Jo4HU.js";import{C as te,n as S}from"./index-CAPJG_im.js";import{t as ne}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as re,i as ie,o as ae,r as C,t as w}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";import{t as T}from"./xmFactorDefaults-yPGPQ25R.js";import{t as E}from"./pricingPersistControl-DVG_7RF1.js";import{n as oe}from"./pricingScaleCalc-CxdG8IMv.js";import{t as se}from"./pricingScalePaneLifecycle-CUGyrg3j.js";import{t as ce}from"./MethodUnavailableNotice-Cx7GLj7Z.js";const le=e=>[e];var ue={class:`h-full min-h-0 flex flex-col`},de={class:`rounded-lg border bg-card xmMx flex min-h-0 flex-1 flex-col`},fe={class:`flex items-center justify-between border-b px-4 py-3`},pe={class:`text-sm font-semibold text-foreground`},me=`pricing-force-default:`,D=f({__name:`WorkloadPricingPane`,props:{contractId:{},contractName:{},serviceId:{}},setup(D){let O=D,k=te(),{t:A,locale:j}=m(),M=g(),N=i(()=>`gzlF-${O.contractId}-${O.serviceId}`),P=i(()=>`ht-consult-category-factor-v1-${O.contractId}`),F=c(new Map),I=!1,L=c(null),R=()=>F.value.get(String(O.serviceId))??null,z=async()=>{I||=(F.value=await T(P.value),!0)},he=()=>{let e=E(me,N.value),t=sessionStorage.getItem(e);if(!t)return!1;let n=Number(t);return sessionStorage.removeItem(e),Number.isFinite(n)&&Date.now()<=n},ge=()=>k.getServicePricingMethodState(O.contractId,O.serviceId,`serviceFee`),B=i({get:()=>{let e=ge()?.detailRows;return Array.isArray(e)?e:[]},set:e=>{k.setServicePricingMethodState(O.contractId,O.serviceId,`serviceFee`,{detailRows:e})}}),V=e=>e?String(j.value).toLowerCase().startsWith(`en`)&&e.nameEn||e.name:``,_e=e=>{let t=e.unit||``,n=typeof e.minPrice==`number`&&Number.isFinite(e.minPrice),r=typeof e.maxPrice==`number`&&Number.isFinite(e.maxPrice);return n&&r?`${e.minPrice}${t}-${e.maxPrice}${t}`:n?`${e.minPrice}${t}`:r?`${e.maxPrice}${t}`:``},H=()=>{let e=k.getContractState(O.contractId)?.selectedIds,t=[];return e?.forEach((e,n)=>{t.push(...Object.entries(x).filter(([,t])=>Number(t.serviceID)===Number(e)).map(([e])=>Number(e)).filter(Number.isFinite).sort((e,t)=>e-t))}),t},U=i(()=>H().length>0),W=()=>{let e=[],t=H();for(let[n,r]of t.entries()){let t=x[String(r)],n=t?.code||t?.ref||``;if(!n||!t?.name)continue;let i=`${O.contractId}-task-${r}`;e.push({id:i,taskCode:n,taskName:V(t),unit:t.unit||``,conversion:typeof t.conversion==`number`&&Number.isFinite(t.conversion)?t.conversion:null,workload:typeof t.midPrice==`number`&&Number.isFinite(t.midPrice)?t.midPrice:null,basicFee:null,budgetBase:t.basicParam||``,budgetReferenceUnitPrice:null,budgetAdoptedUnitPrice:typeof t.defPrice==`number`&&Number.isFinite(t.defPrice)?t.defPrice:null,consultCategoryFactor:typeof t.highPrice==`number`?t.highPrice:null,serviceFee:null,QuantityBasis:0,ProjectQuantityPhase:0,remark:t.desc||``,type:`task`,path:[i]})}return e},G=e=>e?.id?.startsWith(`task-none-`)??!1,ve=e=>{let t=new Map;for(let n of e||[])t.set(n.id,n);return W().map(e=>{console.log(e);let n=t.get(e.id);if(!n)return e;let r=Object.prototype.hasOwnProperty.call(n,`remark`);Object.prototype.hasOwnProperty.call(n,`consultCategoryFactor`);let i=null,a=null,o=null,s=n.budgetReferenceUnitPrice,c=e.budgetAdoptedUnitPrice,l=e.workload,u=e.consultCategoryFactor;return i=s*c,a=s*l,o=s*u,{...e,workload:typeof n.workload==`number`?n.workload:null,basicFee:typeof n.basicFee==`number`?n.basicFee:null,budgetReferenceUnitPrice:n.budgetReferenceUnitPrice??e.budgetReferenceUnitPrice,budgetAdoptedUnitPrice:1,cLow:i,cMid:a,cHigh:o,QuantityBasis:n.QuantityBasis??0,serviceFee:typeof n.serviceFee==`number`?n.serviceFee:a,remark:typeof n.remark==`string`?n.remark:r?``:e.remark}})},K=e=>b(e,{sanitize:!0,precision:3}),ye=e=>b(e,{sanitize:!0,precision:6}),q=e=>{if(!e||G(e))return null;let t=e.budgetAdoptedUnitPrice,n=e.conversion,r=e.workload;return typeof t!=`number`||!Number.isFinite(t)||typeof n!=`number`||!Number.isFinite(n)||typeof r!=`number`||!Number.isFinite(r)?null:_(v(t).mul(n).mul(r),2)},be=e=>{if(!e||G(e))return null;let t=e.consultCategoryFactor,n=q(e);return n==null||typeof t!=`number`||!Number.isFinite(t)?null:_(v(n).mul(t),2)},J=e=>G(e.data)?A(`workloadPricing.none`):!e.node?.group&&!e.node?.rowPinned&&(e.value==null||e.value===``)?A(`workloadPricing.clickToInput`):e.value==null?``:y(e.value,3),xe=e=>{let t=e?.nodeA?.data,n=e?.nodeB?.data;return!t||!n||G(t)||G(n)?!1:!!t.taskName&&!!t.budgetBase&&t.taskName===n.taskName&&t.budgetBase===n.budgetBase},Se=f({name:`SelectQuantityBasis`,props:{params:{type:Object,required:!0}},setup(e){return()=>{let t=e.params?.data||{},n=[{label:A(`pricingPane.land.columns.projectquantityoption.a`),value:`0`},{label:A(`pricingPane.land.columns.projectquantityoption.b`),value:`1`},{label:A(`pricingPane.land.columns.projectquantityoption.c`),value:`2`},{label:A(`pricingPane.land.columns.projectquantityoption.d`),value:`3`},{label:A(`pricingPane.land.columns.projectquantityoption.e`),value:`4`},{label:A(`pricingPane.land.columns.projectquantityoption.f`),value:`5`},{label:A(`pricingPane.land.columns.projectquantityoption.g`),value:`6`},{label:A(`pricingPane.land.columns.projectquantityoption.h`),value:`7`}];function r(e){t.QuantityBasis=e,Y()}return u(`div`,{style:{height:`100%`,width:`100%`,display:`flex`,alignItems:`center`,padding:`0 10px`,gap:`14px`,flexWrap:`wrap`}},[...n.map(e=>u(`label`,{style:{display:`inline-flex`,alignItems:`center`,fontSize:`13px`,color:`#333`}},[u(`input`,{type:`radio`,name:`QuantityBasis-${t.id}`,style:{width:`16px`,height:`16px`,marginRight:`6px`,accentColor:`#1677ff`,cursor:`default`},value:e.value,checked:t.QuantityBasis==Number(e.value),onInput:()=>r(e.value)}),e.label]))])}}}),Ce=f({name:`SelectProjectQuantityPhase`,props:{params:{type:Object,required:!0}},setup(e){return()=>{let t=e.params?.data||{},n=[{label:A(`pricingPane.land.columns.ProjectSectionoption.a`),value:`0`},{label:A(`pricingPane.land.columns.ProjectSectionoption.b`),value:`1`},{label:A(`pricingPane.land.columns.ProjectSectionoption.c`),value:`2`},{label:A(`pricingPane.land.columns.ProjectSectionoption.d`),value:`3`},{label:A(`pricingPane.land.columns.ProjectSectionoption.e`),value:`4`}];function r(e){t.ProjectQuantityPhase=e,Y()}return u(`div`,{style:{height:`100%`,width:`100%`,display:`flex`,alignItems:`center`,padding:`0 10px`,gap:`14px`,flexWrap:`wrap`}},[...n.map(e=>u(`label`,{style:{display:`inline-flex`,alignItems:`center`,fontSize:`13px`,color:`#333`}},[u(`input`,{type:`radio`,name:`ProjectQuantityPhase-${t.id}`,style:{width:`16px`,height:`16px`,marginRight:`6px`,accentColor:`#1677ff`,cursor:`default`},value:e.value,checked:t.ProjectQuantityPhase==Number(e.value),onInput:()=>r(e.value)}),e.label]))])}}}),we=[{headerName:A(`workloadPricing.columns.code`),field:`taskCode`,minWidth:100,width:120,pinned:`left`,colSpan:e=>e.node?.rowPinned?2:1,valueFormatter:e=>e.node?.rowPinned?A(`workloadPricing.total`):e.value||``},{headerName:A(`workloadPricing.columns.name`),field:`taskName`,minWidth:150,width:220,pinned:`left`,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},spanRows:!0,valueFormatter:e=>e.node?.rowPinned?``:e.value||``},{headerName:A(`workloadPricing.columns.budgetBase`),field:`budgetBase`,minWidth:150,autoHeight:!0,width:180,colSpan:e=>e.node?.rowPinned?3:1,spanRows:xe,valueFormatter:e=>A(`workloadPricing.columns.budgetBasevalue`)},{headerName:A(`workloadPricing.columns.budgetReferenceUnitPrice`),field:`budgetReferenceUnitPrice`,minWidth:170,flex:1,editable:e=>!e.node?.group&&!e.node?.rowPinned&&!G(e.data),cellClass:e=>!e.node?.group&&!e.node?.rowPinned?`editable-cell-line`:``,cellClassRules:{"ag-right-aligned-cell":()=>!0,"editable-cell-empty":e=>!e.node?.group&&!e.node?.rowPinned&&(e.value==null||e.value===``)},valueFormatter:J},{headerName:A(`workloadPricing.columns.consultCategoryFactor`),field:`consultCategoryFactor`,headerClass:`ag-right-aligned-header`,minWidth:170,flex:1,editable:!1,cellClass:`ag-right-aligned-cell`,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueFormatter:e=>{let t=e.data?.consultCategoryFactor||null;return String(t)},valueParser:()=>1,cellEditor:void 0},{headerName:A(`workloadPricing.columns.cHigh`),field:`cHigh`,width:100,minWidth:70,maxWidth:120,editable:!1,cellClass:`ag-right-aligned-cell`,cellClassRules:{"ag-right-aligned-cell":()=>!0}},{headerName:A(`workloadPricing.columns.serviceFee`),field:`serviceFee`,headerClass:`ag-right-aligned-header`,minWidth:150,flex:1,editable:e=>!e.node?.group&&!e.node?.rowPinned&&!G(e.data),cellClass:e=>!e.node?.group&&!e.node?.rowPinned?`editable-cell-line`:``,cellClassRules:{"ag-right-aligned-cell":()=>!0,"editable-cell-empty":e=>!e.node?.group&&!e.node?.rowPinned&&!G(e.data)&&(e.value==null||e.value===``)},valueParser:e=>K(e.newValue),valueFormatter:J},{headerName:A(`workloadPricing.columns.QuantityBasis`),field:`QuantityBasis`,headerClass:`ag-right-aligned-header`,minWidth:372,cellRenderer:Se},{headerName:A(`workloadPricing.columns.ProjectQuantityPhase`),field:`ProjectQuantityPhase`,headerClass:`ag-right-aligned-header`,minWidth:240,cellRenderer:Ce}],Te=i(()=>w(we)),Ee=i(()=>1),De=i(()=>h(B.value,e=>q(e))),Oe=i(()=>oe(B.value,e=>be(e)));i(()=>le({id:`pinned-total-row`,taskCode:A(`workloadPricing.total`),taskName:``,unit:``,conversion:null,workload:Ee.value,basicFee:De.value,budgetBase:``,budgetReferenceUnitPrice:``,budgetAdoptedUnitPrice:null,consultCategoryFactor:null,serviceFee:Oe.value,remark:``,path:[`TOTAL`]}));let Y=async()=>{try{let e=B.value.map(e=>({...e,type:`${O.contractId}-task`})),t=await S().upsertBatch(e);console.log(`💾 数据保存成功:`,t)}catch(e){console.error(`saveToIndexedDB failed:`,e)}},ke=(e,t)=>e==null&&t==null?!0:e==null||t==null?!1:_(e,6)===_(t,6),Ae=async()=>{if(!U.value||B.value.length===0)return;F.value=await T(P.value),I=!0;let e=R(),t=!1;B.value=B.value.map(n=>ke(n.consultCategoryFactor,e)?n:(t=!0,{...n})),t&&await Y()},je=i(()=>JSON.stringify({consultFactor:k.keyedStates[P.value]??M.entries[P.value]??null})),Me=async()=>{try{if(!U.value){B.value=[];return}if(await z(),he()){B.value=W();return}let e=await k.loadServicePricingMethodState(O.contractId,O.serviceId,`serviceFee`);if(e){B.value=ve(e.detailRows);return}B.value=W()}catch(e){console.error(`loadFromIndexedDB failed:`,e),B.value=W()}},Ne=async()=>{if(!U.value||B.value.length===0)return;let e=!1;B.value=B.value.map(t=>{if(G(t))return t;let n=String(t.id||``).match(/^task-(\d+)-\d+$/);if(!n)return t;let r=x[n[1]];if(!r)return t;let i=V(r),a=r.unit||``,o=r.basicParam||``,s=_e(r);return t.taskName===i&&t.unit===a&&t.budgetBase===o&&t.budgetReferenceUnitPrice===s?t:(e=!0,{...t,taskName:i,unit:a,budgetBase:o,budgetReferenceUnitPrice:s})}),L.value?.refreshCells({force:!0}),e&&await Y()},X=!1,Z=()=>{Y()},Pe=e=>{e.colDef.field===`budgetReferenceUnitPrice`&&(e.node.setDataValue(`cHigh`,e.data.consultCategoryFactor*e.value),e.node.setDataValue(`serviceFee`,e.data.consultCategoryFactor*e.value)),!X&&Z()},Q=()=>{X=!0},$=()=>{X=!1,Z()},Fe=e=>{L.value=e.api};se({gridApi:L,loadFromIndexedDB:Me,syncLinkedFields:Ae,linkedSourceSignature:je,saveToIndexedDB:Y}),d(()=>j.value,()=>{Ne()});let Ie=e=>Array.isArray(e.value)?JSON.stringify(e.value):e.value,Le=e=>{let t=String(e.column?.getColDef?.().field||``);if(t===`budgetAdoptedUnitPrice`)return ye(e.value);if(t===`workload`||t===`consultCategoryFactor`)return K(e.value);try{let t=JSON.parse(e.value);if(Array.isArray(t))return t}catch{}return e.value},Re=ae.withParams({rowBorder:{style:`solid`,width:.8,color:`var(--border)`},columnBorder:{style:`solid`,width:.8,color:`var(--border)`}});return(i,c)=>(t(),a(`div`,ue,[o(`div`,de,[o(`div`,fe,[o(`h3`,pe,r(l(A)(`workloadPricing.title`)),1),c[0]||=o(`div`,{class:`text-xs text-muted-foreground`},null,-1)]),U.value?(t(),a(`div`,{key:0,class:ee(l(ie))},[e(l(p),{style:n(l(C)),rowData:B.value,columnDefs:Te.value,gridOptions:l(re),theme:l(Re),treeData:!1,animateRows:!0,enableCellSpan:!0,onGridReady:Fe,onCellValueChanged:Pe,suppressColumnVirtualisation:!0,onPasteStart:Q,onPasteEnd:$,onFillStart:Q,onFillEnd:$,suppressRowVirtualisation:!0,cellSelection:{handle:{mode:`range`}},enableClipboard:!0,localeText:l(ne),tooltipShowDelay:500,headerHeight:50,processCellForClipboard:Ie,processCellFromClipboard:Le,undoRedoCellEditing:!0,undoRedoCellEditingLimit:20},null,8,[`style`,`rowData`,`columnDefs`,`gridOptions`,`theme`,`localeText`])],2)):(t(),s(ce,{key:1,title:l(A)(`workloadPricing.unavailableTitle`),message:l(A)(`workloadPricing.unavailableMessage`)},null,8,[`title`,`message`]))])]))}});export{D as default}; \ No newline at end of file diff --git a/33/static/js/XmConsultCategoryFactor-Ca8pgljP.js b/33/static/js/XmConsultCategoryFactor-Ca8pgljP.js new file mode 100644 index 0000000..842cf37 --- /dev/null +++ b/33/static/js/XmConsultCategoryFactor-Ca8pgljP.js @@ -0,0 +1 @@ +import{Bt as e,H as t,Ot as n,Pt as r,W as i,Wn as a,er as o,tt as s}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as c}from"./workspace-DxKKyh8w.js";import{d as l}from"./decimal-D3bp1pbs.js";import"./numberFormat-jhZZmX17.js";import{m as u,o as d,v as f}from"./sql-C69Jo4HU.js";import"./agGridReadonlyAutoHeight-BpRhYCq1.js";import"./pricingScaleDetail-CuzzWQVd.js";import"./pricingMethodTotals-DHJf6v89.js";import"./pricingScaleLink-BNsm4Fxd.js";import"./xmFactorDefaults-yPGPQ25R.js";import"./zxFwPricingSync-PWsfNukj.js";import{t as p}from"./XmFactorGrid-DLfcqkt0.js";var m=`xm-base-info-v1`,h=s({__name:`XmConsultCategoryFactor`,setup(s){let h=a(``),g=l(),{t:_}=c(),v=async()=>{try{let e=await g.getItem(m);h.value=typeof e?.projectIndustry==`string`?e.projectIndustry.trim():``}catch(e){console.error(`loadProjectIndustry failed:`,e),h.value=``}},y=t(()=>{let e=h.value;if(!e)return{};let t=u().filter(({item:t})=>f(t,d(e))).map(({id:e,item:t})=>[e,t]);return Object.fromEntries(t)});return r(()=>{v()}),n(()=>{v()}),(t,n)=>(e(),i(p,{title:o(_)(`htFactors.consultCategoryTitle`),"storage-key":`xm-consult-category-factor-v1`,dict:y.value,"disable-budget-edit-when-standard-null":!0,"exclude-notshow-by-zxflxs":!0,"init-budget-value-from-standard":!0},null,8,[`title`,`dict`]))}});export{h as default}; \ No newline at end of file diff --git a/33/static/js/XmFactorGrid-DLfcqkt0.js b/33/static/js/XmFactorGrid-DLfcqkt0.js new file mode 100644 index 0000000..42951fd --- /dev/null +++ b/33/static/js/XmFactorGrid-DLfcqkt0.js @@ -0,0 +1 @@ +import{$ as e,At as t,Bt as n,Cr as r,Er as i,H as a,K as ee,Pt as te,U as o,Wn as s,er as c,mn as ne,tt as l,xr as u}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{t as d}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import{D as f}from"./workspace-DxKKyh8w.js";import{d as p}from"./decimal-D3bp1pbs.js";import{r as m}from"./numberFormat-jhZZmX17.js";import{C as re,n as ie}from"./index-CAPJG_im.js";import{t as ae}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js";import{a as oe,i as se,o as h,r as g,t as ce}from"./agGridReadonlyAutoHeight-BpRhYCq1.js";import{t as _}from"./zxFwPricingSync-PWsfNukj.js";var v={class:`h-full min-h-0 flex flex-col`},y={class:`rounded-lg border bg-card xmMx flex min-h-0 flex-1 flex-col`},b={class:`flex items-center justify-between border-b px-4 py-3`},x={class:`text-sm font-semibold text-foreground`},S=l({__name:`XmFactorGrid`,props:{title:{},storageKey:{},parentStorageKey:{},dict:{},disableBudgetEditWhenStandardNull:{type:Boolean},excludeNotshowByZxflxs:{type:Boolean},initBudgetValueFromStandard:{type:Boolean}},setup(l){let S=l,{t:C}=f(),w=re(),le=p(),T=s([]),E=s(null),D=a(()=>`${S.storageKey}-change`),O=e=>{if(e==null||e===``)return``;let t=m(e,{precision:3});return t==null?``:t.toFixed(3)},k=e=>{if(e.value==null||e.value===``)return C(`xmFactorGrid.clickToInput`);let t=m(e.value,{precision:3});return t==null?``:t.toFixed(3)},A=()=>Object.entries(S.dict).filter(e=>{let t=e[1];return!(!t?.code||!t?.name||S.excludeNotshowByZxflxs&&t.notshowByzxflxs===!0)}).sort((e,t)=>{let n=Number(e[1]?.order),r=Number(t[1]?.order);return Number.isFinite(n)&&Number.isFinite(r)&&n!==r?n-r:Number.isFinite(n)&&!Number.isFinite(r)?-1:!Number.isFinite(n)&&Number.isFinite(r)?1:String(e[1]?.code||e[0]).localeCompare(String(t[1]?.code||t[0]))}),j=()=>{let e=A(),t=new Map;for(let[n,r]of e)t.set(r.code,n);return e.map(([e,t])=>{let n=typeof t.defCoe==`number`&&Number.isFinite(t.defCoe)?t.defCoe:null;return{id:e,code:t.code,name:t.name,standardFactor:n,budgetValue:S.initBudgetValueFromStandard?n:null,remark:``,path:[]}})},M=e=>Array.isArray(e)&&e.some(e=>{let t=typeof e?.budgetValue==`number`&&Number.isFinite(e.budgetValue),n=typeof e?.remark==`string`&&e.remark.trim()!==``;return t||n}),N=e=>{let t=new Map;for(let n of e||[])t.set(n.id,n);return j().map(e=>{let n=t.get(e.id);if(!n)return e;let r=Object.prototype.hasOwnProperty.call(n,`budgetValue`),i=Object.prototype.hasOwnProperty.call(n,`remark`);return{...e,budgetValue:typeof n.budgetValue==`number`?n.budgetValue:r?null:e.budgetValue,remark:typeof n.remark==`string`?n.remark:i?``:e.remark}})},P=[{headerName:C(`xmFactorGrid.columns.projectname`),field:`name`,minWidth:86,maxWidth:300,headerClass:`ag-right-aligned-header`,flex:2},{headerName:C(`xmFactorGrid.columns.standardFactor`),field:`standardFactor`,type:`numericColumn`,cellClass:`ag-right-aligned-cell`,minWidth:86,maxWidth:100,headerClass:`ag-right-aligned-header`,flex:.9,cellClassRules:{"ag-right-aligned-cell":()=>!0},valueFormatter:e=>O(e.value)},{headerName:C(`xmFactorGrid.columns.budgetValue`),field:`budgetValue`,minWidth:86,maxWidth:100,headerClass:`ag-right-aligned-header`,cellClass:e=>S.disableBudgetEditWhenStandardNull&&e.data?.standardFactor==null?``:`editable-cell-line`,flex:.9,cellClassRules:{"ag-right-aligned-cell":()=>!0,"editable-cell-empty":e=>!(S.disableBudgetEditWhenStandardNull&&e.data?.standardFactor==null)&&(e.value==null||e.value===``)},editable:e=>S.disableBudgetEditWhenStandardNull?e.data?.standardFactor!=null:!0,valueParser:e=>m(e.newValue,{precision:3}),valueFormatter:e=>S.disableBudgetEditWhenStandardNull&&e.data?.standardFactor==null&&(e.value==null||e.value===``)?``:k(e)},{headerName:C(`xmFactorGrid.columns.remark`),field:`remark`,minWidth:170,flex:2.4,cellEditor:`agLargeTextCellEditor`,wrapText:!0,autoHeight:!0,cellStyle:{whiteSpace:`normal`,lineHeight:`1.4`},editable:!0,valueFormatter:e=>e.value||C(`xmFactorGrid.clickToInput`),cellClass:` remark-wrap-cell`,cellClassRules:{"editable-cell-empty":e=>e.value==null||e.value===``}}],F=a(()=>ce(P)),I={headerName:C(`xmFactorGrid.columns.code`),flex:.5,width:100,cellRendererParams:{suppressCount:!0},valueFormatter:e=>{if(e.data?.code&&e.data?.name)return`${e.data.code}`;let t=String(e.node?.key||``),n=S.dict[t];return n?`${n.code} ${n.name}`:``}},L=async()=>{try{let e={detailRows:JSON.parse(JSON.stringify(T.value))};w.setKeyState(S.storageKey,e);let t=T.value.map(e=>({...e,type:`${S.storageKey}-factor`})),n=await ie().upsertBatch(t);console.log(`💾 数据保存成功:`,n)}catch(e){console.error(`saveToIndexedDB failed:`,e)}},R=e=>{let t=m(e,{precision:6});return typeof t==`number`&&Number.isFinite(t)?t:null},z=(e,t)=>{let n=R(e),r=R(t);return n==null&&r==null?!0:n==null||r==null?!1:n===r},B=e=>{let t=/^ht-consult-category-factor-v1-(.+)$/.exec(e);if(t)return{factorType:`consult`,contractId:String(t[1]||``).trim()};let n=/^ht-major-factor-v1-(.+)$/.exec(e);return n?{factorType:`major`,contractId:String(n[1]||``).trim()}:null},V=async e=>{if(e.length===0)return;let t={changedRowIds:Array.from(new Set(e.map(e=>String(e||``).trim()).filter(Boolean))),updatedAt:Date.now()};if(t.changedRowIds.length===0)return;w.setKeyState(D.value,t,{force:!0});let n=B(S.storageKey);if(n?.contractId){if(n.factorType===`consult`){await _(n.contractId,{consultChangedServiceIds:t.changedRowIds});return}await _(n.contractId,{majorChangedRowIds:t.changedRowIds})}},H=async e=>{if(!e)return null;let t=await w.loadKeyState(e);if(t?.detailRows&&Array.isArray(t.detailRows))return t;let n=await le.getItem(e);return!n?.detailRows||!Array.isArray(n.detailRows)?null:(w.setKeyState(e,n,{force:!0}),n)},U=e=>{E.value=e.api},W=async()=>{try{let e=await H(S.storageKey);if(e&&M(e.detailRows)){T.value=N(e.detailRows);return}let t=S.parentStorageKey?.trim();if(t){let e=await H(t);if(e&&M(e.detailRows)){T.value=N(e.detailRows),await L();return}}if(e){T.value=N(e.detailRows);return}T.value=j(),await L()}catch(e){console.error(`loadFromIndexedDB failed:`,e),T.value=j()}},G=null,K=!1,q=null,J=new Set,Y=e=>{let t=String(e||``).trim();t&&J.add(t)},X=async()=>{if(await L(),J.size===0)return;let e=Array.from(J);J.clear(),await V(e)},Z=()=>{G&&clearTimeout(G),G=setTimeout(()=>{X()},500)},ue=e=>{K||(String(e?.colDef?.field||``)===`budgetValue`&&!z(e?.oldValue,e?.newValue)&&Y(e?.data?.id),Z())},Q=()=>{K=!0,q=new Map(T.value.map(e=>[String(e.id||``).trim(),R(e.budgetValue)]))},$=()=>{if(K=!1,q){let e=new Map(T.value.map(e=>[String(e.id||``).trim(),R(e.budgetValue)])),t=new Set([...q.keys(),...e.keys()]);for(let n of t)z(q.get(n),e.get(n))||Y(n);q=null}Z()},de=e=>Array.isArray(e.value)?JSON.stringify(e.value):e.value,fe=e=>{if(String(e.column?.getColDef?.().field||``)===`budgetValue`)return m(e.value,{precision:3});try{let t=JSON.parse(e.value);if(Array.isArray(t))return t}catch{return e.value}return e.value};return te(async()=>{await W()}),ne(()=>S.dict,()=>{W()},{deep:!0}),t(()=>{G&&clearTimeout(G),E.value?.stopEditing(),E.value=null,X()}),(t,a)=>(n(),ee(`div`,v,[o(`div`,y,[o(`div`,b,[o(`h3`,x,i(l.title),1),a[0]||=o(`div`,{class:`text-xs text-muted-foreground`},null,-1)]),o(`div`,{class:u(c(se))},[e(c(d),{style:r(c(g)),rowData:T.value,columnDefs:F.value,autoGroupColumnDef:I,gridOptions:c(oe),theme:c(h),animateRows:!0,treeData:!0,onCellValueChanged:ue,onPasteStart:Q,onPasteEnd:$,onFillStart:Q,onFillEnd:$,suppressColumnVirtualisation:!0,suppressRowVirtualisation:!0,cellSelection:{handle:{mode:`range`}},enableClipboard:!0,localeText:c(ae),tooltipShowDelay:500,headerHeight:50,suppressHorizontalScroll:!0,processCellForClipboard:de,processCellFromClipboard:fe,undoRedoCellEditing:!0,undoRedoCellEditingLimit:20,onGridReady:U},null,8,[`style`,`rowData`,`columnDefs`,`gridOptions`,`theme`,`localeText`])],2)])]))}});export{S as t}; \ No newline at end of file diff --git a/33/static/js/XmMajorFactor-2oXH4hUg.js b/33/static/js/XmMajorFactor-2oXH4hUg.js new file mode 100644 index 0000000..05d14d2 --- /dev/null +++ b/33/static/js/XmMajorFactor-2oXH4hUg.js @@ -0,0 +1 @@ +import{Bt as e,H as t,Ot as n,Pt as r,W as i,Wn as a,er as o,tt as s}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as c}from"./workspace-DxKKyh8w.js";import{d as l}from"./decimal-D3bp1pbs.js";import"./numberFormat-jhZZmX17.js";import{c as u,y as d}from"./sql-C69Jo4HU.js";import"./agGridReadonlyAutoHeight-BpRhYCq1.js";import"./pricingScaleDetail-CuzzWQVd.js";import"./pricingMethodTotals-DHJf6v89.js";import"./pricingScaleLink-BNsm4Fxd.js";import"./xmFactorDefaults-yPGPQ25R.js";import"./zxFwPricingSync-PWsfNukj.js";import{t as f}from"./XmFactorGrid-DLfcqkt0.js";var p=`xm-base-info-v1`,m=s({__name:`XmMajorFactor`,setup(s){let m=a(``),h=a(!1),g=l(),{t:_}=c(),v=async()=>{try{let e=await g.getItem(p);h.value=!!e,m.value=typeof e?.projectIndustry==`string`?e.projectIndustry.trim():``}catch(e){console.error(`loadProjectIndustry failed:`,e),h.value=!1,m.value=``}},y=t(()=>{let e=m.value;if(!e)return{};let t=u().filter(({id:t})=>d(t,e)).map(({id:e,item:t})=>[e,t]);return Object.fromEntries(t)});return r(()=>{v()}),n(()=>{v()}),(t,n)=>(e(),i(f,{title:o(_)(`htFactors.majorTitle`),"storage-key":`xm-major-factor-v1`,dict:y.value,"disable-budget-edit-when-standard-null":!0,"exclude-notshow-by-zxflxs":!0,"init-budget-value-from-standard":!0},null,8,[`title`,`dict`]))}});export{m as default}; \ No newline at end of file diff --git a/33/static/js/ZxFwView-CRvQoCJC.js b/33/static/js/ZxFwView-CRvQoCJC.js new file mode 100644 index 0000000..26f7769 --- /dev/null +++ b/33/static/js/ZxFwView-CRvQoCJC.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./HourlyPricingPane-WkG9QINp.js","./workspace-DxKKyh8w.js","./rolldown-runtime-fVNAxIxX.js","./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js","./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js","./vendor-ag-grid~index~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeL~h29xz5eu-CW8VCi7z.js","./vendor-vue-CSlAvuUs.js","./sql-C69Jo4HU.js","./decimal-D3bp1pbs.js","./numberFormat-jhZZmX17.js","./HourlyFeeGrid-DixkKG6W.js","./_plugin-vue_export-helper-DUFB50Ey.js","./index-CAPJG_im.js","./vendor-ui-B4V4Cf1T.js","./vendor-ag-grid~index-Ch1jbN8D.js","./utils-DFe0HVk9.js","../css/index-CI_Unp5q.css","./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js","./agGridReadonlyAutoHeight-BpRhYCq1.js","../css/HourlyFeeGrid-B40FytkG.css","./pricingPersistControl-DVG_7RF1.js","./InvestmentScalePricingPane-CSaa1AOt.js","./pricingScaleCalc-CxdG8IMv.js","./pricingScaleDetail-CuzzWQVd.js","./pricingScaleGrid-BCsr0Q1x.js","./pricingScaleLink-BNsm4Fxd.js","./pricingScaleProject-DnXeytCB.js","./pricingScalePaneLifecycle-CUGyrg3j.js","./xmFactorDefaults-yPGPQ25R.js","./LandScalePricingPane-DgT-hiGV.js","./OtherService-I-FCHt--.js","../css/OtherService-poy4GwCf.css","./ScaleFormulaReadonlyPane-LcS4i8Fj.js","./ScaleFormulaReadonlyPane-AeIzjaXU.js","./WorkloadPricingPane-DgYywEPP.js","./MethodUnavailableNotice-Cx7GLj7Z.js","./WorkContentGrid-nNmx9oMr.js","../css/WorkContentGrid-B4nOYGuK.css"])))=>i.map(i=>d[i]); +import{Bt as e,H as t,Rn as n,W as r,er as i,et as a,ft as o,tt as s}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as c}from"./workspace-DxKKyh8w.js";import"./decimal-D3bp1pbs.js";import"./vendor-ui-B4V4Cf1T.js";import"./numberFormat-jhZZmX17.js";import"./sql-C69Jo4HU.js";import{t as l}from"./index-CAPJG_im.js";import"./agGridReadonlyAutoHeight-BpRhYCq1.js";import"./pricingScaleLink-BNsm4Fxd.js";import{t as u}from"./_rolldown_dynamic_import_helper-CwdEGLFc.js";import{t as d}from"./typeLine-BCKblICF.js";import"./pricingScaleGrid-BCsr0Q1x.js";import{t as f}from"./ScaleFormulaReadonlyPane-AeIzjaXU.js";import{t as p}from"./MethodUnavailableNotice-Cx7GLj7Z.js";var m=s({__name:`ZxFwView`,props:{contractId:{},contractName:{},serviceId:{},fwName:{},type:{},projectInfoKey:{}},setup(m){let h=m;console.log(h.contractId);let{t:g}=c(),_=(e,t=!0)=>typeof e==`boolean`?e:t,v=t(()=>{let e=_(h.type?.scale,!0),t=_(h.type?.onlyCostScale,!1),n=_(h.type?.amount,!0),r=_(h.type?.workDay,!0);return{investmentScale:e,landScale:e&&!t,workload:n,hourly:r}}),y=e=>n(s({name:e,setup(){let t=a({loader:()=>u(Object.assign({"../../pricing/components/HourlyPricingPane.vue":()=>l(()=>import(`./HourlyPricingPane-WkG9QINp.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]),import.meta.url),"../../pricing/components/InvestmentScalePricingPane.vue":()=>l(()=>import(`./InvestmentScalePricingPane-CSaa1AOt.js`),__vite__mapDeps([21,12,11,2,13,3,4,5,1,6,7,8,9,14,15,16,17,18,20,22,23,24,25,26,27,28]),import.meta.url),"../../pricing/components/LandScalePricingPane.vue":()=>l(()=>import(`./LandScalePricingPane-DgT-hiGV.js`),__vite__mapDeps([29,12,11,2,13,3,4,5,1,6,7,8,9,14,15,16,17,18,22,23,24,25,26,27,28]),import.meta.url),"../../pricing/components/OtherService.vue":()=>l(()=>import(`./OtherService-I-FCHt--.js`),__vite__mapDeps([30,11,12,2,13,3,4,5,1,6,7,8,9,14,15,16,17,18,20,31]),import.meta.url),"../../pricing/components/ScaleFormulaReadonlyPane.vue":()=>l(()=>import(`./ScaleFormulaReadonlyPane-LcS4i8Fj.js`),__vite__mapDeps([32,1,2,3,4,5,6,7,8,9,33,12,11,13,14,15,16,17,18,24,25]),import.meta.url),"../../pricing/components/WorkloadPricingPane.vue":()=>l(()=>import(`./WorkloadPricingPane-DgYywEPP.js`),__vite__mapDeps([34,12,11,2,13,3,4,5,1,6,7,8,9,14,15,16,17,35,18,20,22,27,28]),import.meta.url)}),`../../pricing/components/${e}.vue`,5),onError:e=>{console.error(`load PricingMethodView failed:`,e)}});return()=>o(t,{contractId:h.contractId,contractName:h.contractName,serviceId:h.serviceId,projectInfoKey:h.projectInfoKey})}})),b=(e,t)=>n(s({name:`MethodUnavailablePane`,setup(){return()=>o(p,{title:e,message:t})}})),x=y(`InvestmentScalePricingPane`),S=y(`LandScalePricingPane`),C=y(`WorkloadPricingPane`),w=y(`HourlyPricingPane`),T=y(`OtherService`),E=(e,t)=>n(s({name:t,setup(){return()=>o(f,{contractId:h.contractId,serviceId:h.serviceId,method:e})}}));E(`investScale`,`InvestmentScaleFormulaPane`),E(`landScale`,`LandScaleFormulaPane`);let D=n(s({name:`WorkContentPane`,setup(){let e=a({loader:()=>l(()=>import(`./WorkContentGrid-nNmx9oMr.js`),__vite__mapDeps([36,11,12,2,13,3,4,5,1,6,7,8,9,14,15,16,17,18,37]),import.meta.url),onError:e=>{console.error(`load WorkContentGrid failed:`,e)}});return()=>o(e,{title:g(`zxFwView.workContentTitle`),storageKey:`work-content-${h.contractId}-${h.serviceId}`,contractId:h.contractId,projectInfoKey:h.projectInfoKey,serviceId:h.serviceId,dictMode:`service`,"show-no-column":!0})}})),O=b(g(`zxFwView.unavailable.investmentScaleTitle`),g(`zxFwView.unavailable.investmentScaleMessage`)),k=b(g(`zxFwView.unavailable.landScaleTitle`),g(`zxFwView.unavailable.landScaleMessage`)),A=b(g(`zxFwView.unavailable.workloadTitle`),g(`zxFwView.unavailable.workloadMessage`)),j=b(g(`zxFwView.unavailable.hourlyTitle`),g(`zxFwView.unavailable.hourlyMessage`)),M=t(()=>[{key:`investment-scale-method`,label:g(`zxFwView.categories.investmentScale`),component:v.value.investmentScale?x:O},{key:`land-scale-method`,label:g(`zxFwView.categories.landScale`),component:v.value.landScale?S:k},{key:`workload-method`,label:g(`zxFwView.categories.workload`),component:v.value.workload?C:A},{key:`hourly-method`,label:g(`zxFwView.categories.hourly`),component:v.value.hourly?w:j},{key:`work-content`,label:g(`zxFwView.categories.workContent`),component:D},{key:`other-service`,label:g(`zxFwView.categories.otherservice`),component:T}]),N=t(()=>{let e=v.value;return e.investmentScale?`investment-scale-method`:e.landScale?`land-scale-method`:e.workload?`workload-method`:e.hourly?`hourly-method`:`work-content`});return(t,n)=>(e(),r(d,{scene:`zxfw-pricing-tab`,title:`${m.contractName?`${i(g)(`zxFwView.contractPrefix`,{name:m.contractName})} · `:``}${m.fwName}${i(g)(`zxFwView.calcSuffix`)}`,subtitle:i(g)(`zxFwView.contractId`,{id:m.contractId}),"copy-text":m.contractId,"storage-key":`zxfw-pricing-active-cat-${m.contractId}-${m.serviceId}`,"default-category":N.value,categories:M.value},null,8,[`title`,`subtitle`,`copy-text`,`storage-key`,`default-category`,`categories`]))}});export{m as default}; \ No newline at end of file diff --git a/33/static/js/_plugin-vue_export-helper-DUFB50Ey.js b/33/static/js/_plugin-vue_export-helper-DUFB50Ey.js new file mode 100644 index 0000000..4374bdd --- /dev/null +++ b/33/static/js/_plugin-vue_export-helper-DUFB50Ey.js @@ -0,0 +1 @@ +var e=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n};export{e as t}; \ No newline at end of file diff --git a/33/static/js/_rolldown_dynamic_import_helper-CwdEGLFc.js b/33/static/js/_rolldown_dynamic_import_helper-CwdEGLFc.js new file mode 100644 index 0000000..3efd242 --- /dev/null +++ b/33/static/js/_rolldown_dynamic_import_helper-CwdEGLFc.js @@ -0,0 +1 @@ +var e=(e,t,n)=>{let r=t.lastIndexOf(`?`),i=e[r===-1||r{(typeof queueMicrotask==`function`?queueMicrotask:setTimeout)(r.bind(null,Error(`Unknown variable dynamic import: `+t+(t.split(`/`).length===n?``:`. Note that variables only represent file names one level deep.`))))})};export{e as t}; \ No newline at end of file diff --git a/33/static/js/agGridReadonlyAutoHeight-BpRhYCq1.js b/33/static/js/agGridReadonlyAutoHeight-BpRhYCq1.js new file mode 100644 index 0000000..7ec5618 --- /dev/null +++ b/33/static/js/agGridReadonlyAutoHeight-BpRhYCq1.js @@ -0,0 +1 @@ +import{nr as e}from"./vendor-ag-grid~index~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeL~h29xz5eu-CW8VCi7z.js";var t={style:`solid`,width:.3,color:`var(--border)`};const n=e.withParams({wrapperBorder:!1,wrapperBorderRadius:0,headerBackgroundColor:`var(--muted)`,headerTextColor:`var(--foreground)`,headerFontSize:15,headerFontWeight:`normal`,rowBorder:t,columnBorder:t,headerRowBorder:t,dataBackgroundColor:`var(--card)`}),r=`ag-theme-quartz h-full min-h-0 w-full flex-1`,i={height:`100%`};var a=[`amount`,`area`,`cost`,`price`,`fee`,`budget`,`subtotal`,`total`,`ratio`,`rate`,`quantity`,`count`,`num`,`workday`,`workload`,`hourly`,`investscale`,`landscale`,`scale`,`finalfee`,`value`,`coe`,`factor`],o=e=>{let t=e?.value;if(typeof t==`number`&&Number.isFinite(t))return!0;let n=String(e?.colDef?.field||e?.column?.getColId?.()||``).toLowerCase();return n?a.some(e=>n.includes(e)):!1},s=e=>e.key===`Enter`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,c=(e,t)=>{let n=e.column;for(let r=t+1;r{let n=t||{rowIndex:e.node.rowIndex??0,rowPinned:e.node.rowPinned??null,column:e.column};window.setTimeout(()=>{e.api.isDestroyed?.()||(e.api.ensureIndexVisible(n.rowIndex),e.api.setFocusedCell(n.rowIndex,n.column,n.rowPinned))},0)},u=e=>{if(!s(e.event)||e.event.defaultPrevented||e.event.isComposing)return!1;e.event.preventDefault(),e.event.stopPropagation(),e.api.stopEditing();let t=e.node.rowIndex;return t==null?(l(e,null),!0):(l(e,c(e,t)),!0)},d=e=>{!e||e.isDestroyed?.()||setTimeout(()=>{!e||e.isDestroyed?.()||(e.onRowHeightChanged(),e.refreshCells({force:!0}),e.redrawRows())},0)};const f={resizable:!0,sortable:!1,filter:!1,wrapHeaderText:!0,autoHeaderHeight:!0,suppressKeyboardEvent:u,cellClassRules:{"ag-right-aligned-cell":e=>o(e)}},p={treeData:!0,animateRows:!0,tooltipShowMode:`whenTruncated`,suppressAggFuncInHeader:!0,singleClickEdit:!0,stopEditingWhenCellsLoseFocus:!0,suppressClickEdit:!1,suppressContextMenu:!1,groupDefaultExpanded:-1,suppressFieldDotNotation:!0,enterNavigatesVertically:!0,enterNavigatesVerticallyAfterEdit:!0,getRowId:e=>{let t=e.data?.id;if(t!=null&&String(t).trim())return String(t);let n=Array.isArray(e.data?.path)?e.data.path.map(e=>String(e??``).trim()).filter(Boolean):[];return n.length>0?n.join(`/`):`__row__`},getDataPath:e=>{let t=Array.isArray(e?.path)?e.path.map(e=>String(e??``).trim()).filter(Boolean):[];return t.length>0?t:[String(e?.id??``).trim()||`__row__`]},getContextMenuItems:()=>[`copy`,`paste`,`separator`,`export`],defaultColDef:f,defaultColGroupDef:{wrapHeaderText:!0,autoHeaderHeight:!0},onFirstDataRendered:e=>{d(e.api)},onRowDataUpdated:e=>{d(e.api)},onGridSizeChanged:e=>{d(e.api)},onColumnResized:e=>{d(e.api)}};var m=[`amount`,`area`,`cost`,`price`,`fee`,`budget`,`subtotal`,`total`,`ratio`,`rate`,`quantity`,`count`,`num`,`workday`,`workload`,`hourly`,`scale`,`value`,`coe`,`factor`],h=e=>typeof e==`number`&&Number.isFinite(e),g=e=>{if(typeof e!=`string`)return!1;let t=e.replace(/[,\s]/g,``).replace(/%$/,``);if(!t)return!1;let n=Number(t);return Number.isFinite(n)},_=e=>{let t=String(e.field??e.colId??``).toLowerCase(),n=t?m.some(e=>t.includes(e)):!1,r=e.type,i=(Array.isArray(r)?r:r?[r]:[]).some(e=>{let t=String(e).toLowerCase();return t.includes(`numeric`)||t.includes(`rightaligned`)});return n||e.cellDataType===`number`||i},v=e=>typeof e==`string`?e.includes(`ag-right-aligned-header`):Array.isArray(e)?e.some(e=>String(e).includes(`ag-right-aligned-header`)):!1,y=(e,t)=>{if(!t)return e.headerClass;let n=e.headerClass;return n?v(n)?n:typeof n==`function`?e=>{let t=n(e);return t?typeof t==`string`?t.includes(`ag-right-aligned-header`)?t:`${t} ag-right-aligned-header`:Array.isArray(t)?v(t)?t:[...t,`ag-right-aligned-header`]:`ag-right-aligned-header`:`ag-right-aligned-header`}:typeof n==`string`?`${n} ag-right-aligned-header`:Array.isArray(n)?[...n,`ag-right-aligned-header`]:n:`ag-right-aligned-header`},b=(e,t)=>{if(!t)return e.cellClassRules;let n=e.cellClassRules?{...e.cellClassRules}:{};return n[`ag-right-aligned-cell`]||=e=>_(e.colDef)||h(e.value)||g(e.value),n},x=e=>{let t={whiteSpace:`normal`,lineHeight:`1.4`};return e?typeof e==`function`?n=>{let r=e(n);return r&&typeof r==`object`?{...r,...t}:t}:typeof e==`object`?{...e,...t}:e:t},S=e=>{let t=e.editable,n=t==null||t===!1,r=_(e);return n?{...e,headerClass:y(e,r),cellClassRules:b(e,r),wrapText:!0,autoHeight:!0,cellStyle:x(e.cellStyle)}:{...e,headerClass:y(e,r),cellClassRules:b(e,r)}},C=e=>{let t=e;return Array.isArray(t.children)?{...t,children:t.children.map(e=>C(e))}:S(e)};const w=e=>e.map(e=>C(e));export{p as a,r as i,f as n,n as o,i as r,w as t}; \ No newline at end of file diff --git a/33/static/js/decimal-D3bp1pbs.js b/33/static/js/decimal-D3bp1pbs.js new file mode 100644 index 0000000..9415975 --- /dev/null +++ b/33/static/js/decimal-D3bp1pbs.js @@ -0,0 +1 @@ +import{o as e}from"./rolldown-runtime-fVNAxIxX.js";import{Wn as t}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import{r as n}from"./vendor-vue-CSlAvuUs.js";import{O as r,T as i,_ as a,v as o}from"./workspace-DxKKyh8w.js";var s=`jgjs-project-registry-v1`,c=()=>new Date().toISOString(),l=new Map,u=()=>[],d=e=>{if(!e||typeof e!=`object`)return null;let t=a(e.id),n=String(e.name||``).trim()||(t===`quick`?i.global.t(`quickCalc.projectName`):i.global.t(`tab.messages.projectNamePrefix`,{id:t})),r=typeof e.createdAt==`string`&&e.createdAt?e.createdAt:c(),o=typeof e.updatedAt==`string`&&e.updatedAt?e.updatedAt:r;return{id:t,name:n,createdAt:r,updatedAt:o,lastOpenedAt:typeof e.lastOpenedAt==`string`&&e.lastOpenedAt?e.lastOpenedAt:o}},f=()=>{try{let e=localStorage.getItem(s);if(!e)return{projects:u()};let t=JSON.parse(e),n=Array.isArray(t?.projects)?t.projects.map(e=>d(e)).filter(e=>!!e):[];return n.length===0?{projects:u()}:{projects:n}}catch{return{projects:u()}}},p=e=>{localStorage.setItem(s,JSON.stringify(e))};const m=()=>f().projects.filter(e=>e.id!==`quick`&&e.id!==`default`).slice().sort((e,t)=>new Date(t.lastOpenedAt).getTime()-new Date(e.lastOpenedAt).getTime()),h=(e,t,n)=>{let r=a(e);if(r===`quick`||r===`default`)return;let o=String(t||``).trim(),s=f(),l=c(),u=n?.touchUpdatedAt===!0,d=n?.touchLastOpenedAt!==!1,m=s.projects.findIndex(e=>e.id===r);if(m<0)s.projects.push({id:r,name:o||(r===`quick`?i.global.t(`quickCalc.projectName`):i.global.t(`tab.messages.projectNamePrefix`,{id:r})),createdAt:l,updatedAt:l,lastOpenedAt:l});else{let e=s.projects[m];s.projects[m]={...e,name:o||e.name,updatedAt:u?l:e.updatedAt,lastOpenedAt:d?l:e.lastOpenedAt}}p(s)},g=(e,t)=>{let n=a(e);if(n===`quick`||n===`default`)return!1;let r=Math.max(0,Number(t?.throttleMs??5e3)),i=Date.now(),o=l.get(n)??0;if(r>0&&i-oe.id===n);if(u<0)return!1;let d=c(),m=s.projects[u];return s.projects[u]={...m,updatedAt:d,lastOpenedAt:d},p(s),l.set(n,i),!0},_=e=>{let t=f(),n=c(),r=``;do r=a(`p-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`);while(t.projects.some(e=>e.id===r));let o=String(e||``).trim()||i.global.t(`tab.messages.projectNamePrefix`,{id:t.projects.length+1}),s={id:r,name:o,createdAt:n,updatedAt:n,lastOpenedAt:n};return t.projects.push(s),p(t),s},v=e=>{let t=a(e);if(t===`quick`||t===`default`)return!1;let n=f(),r=n.projects.filter(e=>e.id!==t);return r.length===n.projects.length?!1:(n.projects=r,p(n),!0)};var y=e(r(),1),b={driver:y.default.INDEXEDDB,name:`DB`,version:1,description:`pinia persisted storage`,storeName:`pinia-storage`,debounce:300},x=null,S=new Map,C=(e,t,n)=>e===`single`?(x||=y.default.createInstance({...b,...n}),x):(S.has(t)||S.set(t,y.default.createInstance({...b,...n,storeName:t})),S.get(t)),w=e=>e?e===!0?{}:e:null,T=e=>{if(typeof e==`string`)return e.trim();if(Array.isArray(e))return e.map(e=>T(e));if(e&&typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))t[n]=T(r);return t}return e},E=new Map;const D=e=>{let t=E.get(e);if(t)return t;let n=new Promise(e=>{});return E.set(e,n),n};var O=e=>{let{mode:t=`single`,debounce:n=300,...r}={...b,...e||{}};return e=>{let i=w(e.options.persist);if(!i)return;let a=e.store.$id,s=a!==`tabs`,c=r.storeName||b.storeName||`pinia-storage`,l=t===`multiple`?`${c}-${a}`:c,u=i.key||(t===`single`?`${c}-${a}`:l),d=C(t,l,r),f=i.debounce??n,p=null,m=!1,h=!1,_=e=>{let t=JSON.parse(JSON.stringify(e));return d.setItem(u,T(t))},v=()=>{if(!s)return;let e=o();!e||e===`quick`||g(e)},y=e.store;y.$persistNow=async()=>{p&&=(clearTimeout(p),null);try{await _(e.store.$state),v()}catch(e){console.error(`pinia persist failed:`,e)}},y.$clearPersisted=async()=>{p&&=(clearTimeout(p),null);try{await d.removeItem(u)}catch(e){console.error(`pinia clear persisted failed:`,e)}},e.store.$subscribe((e,t)=>{m||(h=!0,p&&clearTimeout(p),p=setTimeout(()=>{_(t).then(()=>{v()}).catch(e=>{console.error(`pinia persist failed:`,e)})},Math.max(0,f)))},{detached:!0});let x,S=new Promise(e=>{x=e});E.set(a,S),m=!0,d.getItem(u).then(t=>{!t||typeof t!=`object`||h||e.store.$patch(t)}).catch(e=>{console.error(`pinia hydrate failed:`,e)}).finally(()=>{m=!1,x()})}},k=e=>JSON.parse(JSON.stringify(e));const A=n(`kv`,()=>{let e=t({}),n=t(!1),r=t(null),i=!1,a=null,o=async()=>{if(!n.value){if(r.value){await r.value;return}r.value=(async()=>{i||(a||=D(`kv`).catch(()=>void 0).finally(()=>{i=!0,a=null}),await a),n.value=!0})(),await r.value,r.value=null}};return{entries:e,ready:n,ensureReady:o,getItem:async t=>{await o();let n=String(t||``).trim();return!n||!Object.prototype.hasOwnProperty.call(e.value,n)?null:k(e.value[n])},setItem:async(t,n)=>{await o();let r=String(t||``).trim();r&&(e.value[r]=k(n))},removeItem:async t=>{await o();let n=String(t||``).trim();n&&delete e.value[n]},keys:async()=>(await o(),Object.keys(e.value)),clear:async()=>{await o(),e.value={}},exportEntries:async()=>(await o(),Object.entries(e.value).map(([e,t])=>({key:e,value:k(t)}))),importEntries:async(t,n)=>{await o(),n?.replace!==!1&&(e.value={});for(let n of t||[]){let t=String(n?.key||``).trim();t&&(e.value[t]=k(n.value))}}}},{persist:!0});var j=9e15,M=1e9,ee=`0123456789abcdef`,te=`2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058`,ne=`3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789`,re={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-j,maxE:j,crypto:!1},ie,N,P=!0,F=`[DecimalError] `,I=F+`Invalid argument: `,ae=F+`Precision limit exceeded`,oe=F+`crypto unavailable`,se=`[object Decimal]`,L=Math.floor,R=Math.pow,ce=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,le=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ue=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,de=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,z=1e7,B=7,fe=9007199254740991,pe=te.length-1,me=ne.length-1,V={toStringTag:se};V.absoluteValue=V.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),K(e)},V.ceil=function(){return K(new this.constructor(this),this.e+1,2)},V.clampedTo=V.clamp=function(e,t){var n,r=this,i=r.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(I+t);return n=r.cmp(e),n<0?e:r.cmp(t)>0?t:new i(r)},V.comparedTo=V.cmp=function(e){var t,n,r,i,a=this,o=a.d,s=(e=new a.constructor(e)).d,c=a.s,l=e.s;if(!o||!s)return!c||!l?NaN:c===l?o===s?0:!o^c<0?1:-1:c;if(!o[0]||!s[0])return o[0]?c:s[0]?-l:0;if(c!==l)return c;if(a.e!==e.e)return a.e>e.e^c<0?1:-1;for(r=o.length,i=s.length,t=0,n=rs[t]^c<0?1:-1;return r===i?0:r>i^c<0?1:-1},V.cosine=V.cos=function(){var e,t,n=this,r=n.constructor;return n.d?n.d[0]?(e=r.precision,t=r.rounding,r.precision=e+Math.max(n.e,n.sd())+B,r.rounding=1,n=ge(r,ke(r,n)),r.precision=e,r.rounding=t,K(N==2||N==3?n.neg():n,e,t,!0)):new r(1):new r(NaN)},V.cubeRoot=V.cbrt=function(){var e,t,n,r,i,a,o,s,c,l,u=this,d=u.constructor;if(!u.isFinite()||u.isZero())return new d(u);for(P=!1,a=u.s*R(u.s*u,1/3),!a||Math.abs(a)==1/0?(n=H(u.d),e=u.e,(a=(e-n.length+1)%3)&&(n+=a==1||a==-2?`0`:`00`),a=R(n,1/3),e=L((e+1)/3)-(e%3==(e<0?-1:2)),a==1/0?n=`5e`+e:(n=a.toExponential(),n=n.slice(0,n.indexOf(`e`)+1)+e),r=new d(n),r.s=u.s):r=new d(a.toString()),o=(e=d.precision)+3;;)if(s=r,c=s.times(s).times(s),l=c.plus(u),r=G(l.plus(u).times(s),l.plus(c),o+2,1),H(s.d).slice(0,o)===(n=H(r.d)).slice(0,o))if(n=n.slice(o-3,o+1),n==`9999`||!i&&n==`4999`){if(!i&&(K(s,e+1,0),s.times(s).times(s).eq(u))){r=s;break}o+=4,i=1}else{(!+n||!+n.slice(1)&&n.charAt(0)==`5`)&&(K(r,e+1,1),t=!r.times(r).times(r).eq(u));break}return P=!0,K(r,e,d.rounding,t)},V.decimalPlaces=V.dp=function(){var e,t=this.d,n=NaN;if(t){if(e=t.length-1,n=(e-L(this.e/B))*B,e=t[e],e)for(;e%10==0;e/=10)n--;n<0&&(n=0)}return n},V.dividedBy=V.div=function(e){return G(this,new this.constructor(e))},V.dividedToIntegerBy=V.divToInt=function(e){var t=this,n=t.constructor;return K(G(t,new n(e),0,1,1),n.precision,n.rounding)},V.equals=V.eq=function(e){return this.cmp(e)===0},V.floor=function(){return K(new this.constructor(this),this.e+1,3)},V.greaterThan=V.gt=function(e){return this.cmp(e)>0},V.greaterThanOrEqualTo=V.gte=function(e){var t=this.cmp(e);return t==1||t===0},V.hyperbolicCosine=V.cosh=function(){var e,t,n,r,i,a=this,o=a.constructor,s=new o(1);if(!a.isFinite())return new o(a.s?1/0:NaN);if(a.isZero())return s;n=o.precision,r=o.rounding,o.precision=n+Math.max(a.e,a.sd())+4,o.rounding=1,i=a.d.length,i<32?(e=Math.ceil(i/3),t=(1/Oe(4,e)).toString()):(e=16,t=`2.3283064365386962890625e-10`),a=Z(o,1,a.times(t),new o(1),!0);for(var c,l=e,u=new o(8);l--;)c=a.times(a),a=s.minus(c.times(u.minus(c.times(u))));return K(a,o.precision=n,o.rounding=r,!0)},V.hyperbolicSine=V.sinh=function(){var e,t,n,r,i=this,a=i.constructor;if(!i.isFinite()||i.isZero())return new a(i);if(t=a.precision,n=a.rounding,a.precision=t+Math.max(i.e,i.sd())+4,a.rounding=1,r=i.d.length,r<3)i=Z(a,2,i,i,!0);else{e=1.4*Math.sqrt(r),e=e>16?16:e|0,i=i.times(1/Oe(5,e)),i=Z(a,2,i,i,!0);for(var o,s=new a(5),c=new a(16),l=new a(20);e--;)o=i.times(i),i=i.times(s.plus(o.times(c.times(o).plus(l))))}return a.precision=t,a.rounding=n,K(i,t,n,!0)},V.hyperbolicTangent=V.tanh=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+7,r.rounding=1,G(n.sinh(),n.cosh(),r.precision=e,r.rounding=t)):new r(n.s)},V.inverseCosine=V.acos=function(){var e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,i=t.rounding;return n===-1?e.isZero()?J(t,r+4,i).times(.5):(t.precision=r+6,t.rounding=1,e=new t(1).minus(e).div(e.plus(1)).sqrt().atan(),t.precision=r,t.rounding=i,e.times(2)):n===0?e.isNeg()?J(t,r,i):new t(0):new t(NaN)},V.inverseHyperbolicCosine=V.acosh=function(){var e,t,n=this,r=n.constructor;return n.lte(1)?new r(n.eq(1)?0:NaN):n.isFinite()?(e=r.precision,t=r.rounding,r.precision=e+Math.max(Math.abs(n.e),n.sd())+4,r.rounding=1,P=!1,n=n.times(n).minus(1).sqrt().plus(n),P=!0,r.precision=e,r.rounding=t,n.ln()):new r(n)},V.inverseHyperbolicSine=V.asinh=function(){var e,t,n=this,r=n.constructor;return!n.isFinite()||n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+2*Math.max(Math.abs(n.e),n.sd())+6,r.rounding=1,P=!1,n=n.times(n).plus(1).sqrt().plus(n),P=!0,r.precision=e,r.rounding=t,n.ln())},V.inverseHyperbolicTangent=V.atanh=function(){var e,t,n,r,i=this,a=i.constructor;return i.isFinite()?i.e>=0?new a(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=a.precision,t=a.rounding,r=i.sd(),Math.max(r,e)<2*-i.e-1?K(new a(i),e,t,!0):(a.precision=n=r-i.e,i=G(i.plus(1),new a(1).minus(i),n+e,1),a.precision=e+4,a.rounding=1,i=i.ln(),a.precision=e,a.rounding=t,i.times(.5))):new a(NaN)},V.inverseSine=V.asin=function(){var e,t,n,r,i=this,a=i.constructor;return i.isZero()?new a(i):(t=i.abs().cmp(1),n=a.precision,r=a.rounding,t===-1?(a.precision=n+6,a.rounding=1,i=i.div(new a(1).minus(i.times(i)).sqrt().plus(1)).atan(),a.precision=n,a.rounding=r,i.times(2)):t===0?(e=J(a,n+4,r).times(.5),e.s=i.s,e):new a(NaN))},V.inverseTangent=V.atan=function(){var e,t,n,r,i,a,o,s,c,l=this,u=l.constructor,d=u.precision,f=u.rounding;if(!l.isFinite()){if(!l.s)return new u(NaN);if(d+4<=me)return o=J(u,d+4,f).times(.5),o.s=l.s,o}else if(l.isZero())return new u(l);else if(l.abs().eq(1)&&d+4<=me)return o=J(u,d+4,f).times(.25),o.s=l.s,o;for(u.precision=s=d+10,u.rounding=1,n=Math.min(28,s/B+2|0),e=n;e;--e)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(P=!1,t=Math.ceil(s/B),r=1,c=l.times(l),o=new u(l),i=l;e!==-1;)if(i=i.times(c),a=o.minus(i.div(r+=2)),i=i.times(c),o=a.plus(i.div(r+=2)),o.d[t]!==void 0)for(e=t;o.d[e]===a.d[e]&&e--;);return n&&(o=o.times(2<this.d.length-2},V.isNaN=function(){return!this.s},V.isNegative=V.isNeg=function(){return this.s<0},V.isPositive=V.isPos=function(){return this.s>0},V.isZero=function(){return!!this.d&&this.d[0]===0},V.lessThan=V.lt=function(e){return this.cmp(e)<0},V.lessThanOrEqualTo=V.lte=function(e){return this.cmp(e)<1},V.logarithm=V.log=function(e){var t,n,r,i,a,o,s,c,l=this,u=l.constructor,d=u.precision,f=u.rounding,p=5;if(e==null)e=new u(10),t=!0;else{if(e=new u(e),n=e.d,e.s<0||!n||!n[0]||e.eq(1))return new u(NaN);t=e.eq(10)}if(n=l.d,l.s<0||!n||!n[0]||l.eq(1))return new u(n&&!n[0]?-1/0:l.s==1?n?0:1/0:NaN);if(t)if(n.length>1)a=!0;else{for(i=n[0];i%10==0;)i/=10;a=i!==1}if(P=!1,s=d+p,o=X(l,s),r=t?ve(u,s+10):X(e,s),c=G(o,r,s,1),W(c.d,i=d,f))do if(s+=10,o=X(l,s),r=t?ve(u,s+10):X(e,s),c=G(o,r,s,1),!a){+H(c.d).slice(i+1,i+15)+1==0x5af3107a4000&&(c=K(c,d+1,0));break}while(W(c.d,i+=10,f));return P=!0,K(c,d,f)},V.minus=V.sub=function(e){var t,n,r,i,a,o,s,c,l,u,d,f,p=this,m=p.constructor;if(e=new m(e),!p.d||!e.d)return!p.s||!e.s?e=new m(NaN):p.d?e.s=-e.s:e=new m(e.d||p.s!==e.s?p:NaN),e;if(p.s!=e.s)return e.s=-e.s,p.plus(e);if(l=p.d,f=e.d,s=m.precision,c=m.rounding,!l[0]||!f[0]){if(f[0])e.s=-e.s;else if(l[0])e=new m(p);else return new m(c===3?-0:0);return P?K(e,s,c):e}if(n=L(e.e/B),u=L(p.e/B),l=l.slice(),a=u-n,a){for(d=a<0,d?(t=l,a=-a,o=f.length):(t=f,n=u,o=l.length),r=Math.max(Math.ceil(s/B),o)+2,a>r&&(a=r,t.length=1),t.reverse(),r=a;r--;)t.push(0);t.reverse()}else{for(r=l.length,o=f.length,d=r0;--r)l[o++]=0;for(r=f.length;r>a;){if(l[--r]o?a+1:o+1,i>o&&(i=o,n.length=1),n.reverse();i--;)n.push(0);n.reverse()}for(o=l.length,i=u.length,o-i<0&&(i=o,n=u,u=l,l=n),t=0;i;)t=(l[--i]=l[i]+u[i]+t)/z|0,l[i]%=z;for(t&&(l.unshift(t),++r),o=l.length;l[--o]==0;)l.pop();return e.d=l,e.e=_e(l,r),P?K(e,s,c):e},V.precision=V.sd=function(e){var t,n=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(I+e);return n.d?(t=ye(n.d),e&&n.e+1>t&&(t=n.e+1)):t=NaN,t},V.round=function(){var e=this,t=e.constructor;return K(new t(e),e.e+1,t.rounding)},V.sine=V.sin=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+Math.max(n.e,n.sd())+B,r.rounding=1,n=De(r,ke(r,n)),r.precision=e,r.rounding=t,K(N>2?n.neg():n,e,t,!0)):new r(NaN)},V.squareRoot=V.sqrt=function(){var e,t,n,r,i,a,o=this,s=o.d,c=o.e,l=o.s,u=o.constructor;if(l!==1||!s||!s[0])return new u(!l||l<0&&(!s||s[0])?NaN:s?o:1/0);for(P=!1,l=Math.sqrt(+o),l==0||l==1/0?(t=H(s),(t.length+c)%2==0&&(t+=`0`),l=Math.sqrt(t),c=L((c+1)/2)-(c<0||c%2),l==1/0?t=`5e`+c:(t=l.toExponential(),t=t.slice(0,t.indexOf(`e`)+1)+c),r=new u(t)):r=new u(l.toString()),n=(c=u.precision)+3;;)if(a=r,r=a.plus(G(o,a,n+2,1)).times(.5),H(a.d).slice(0,n)===(t=H(r.d)).slice(0,n))if(t=t.slice(n-3,n+1),t==`9999`||!i&&t==`4999`){if(!i&&(K(a,c+1,0),a.times(a).eq(o))){r=a;break}n+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)==`5`)&&(K(r,c+1,1),e=!r.times(r).eq(o));break}return P=!0,K(r,c,u.rounding,e)},V.tangent=V.tan=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+10,r.rounding=1,n=n.sin(),n.s=1,n=G(n,new r(1).minus(n.times(n)).sqrt(),e+10,0),r.precision=e,r.rounding=t,K(N==2||N==4?n.neg():n,e,t,!0)):new r(NaN)},V.times=V.mul=function(e){var t,n,r,i,a,o,s,c,l,u=this,d=u.constructor,f=u.d,p=(e=new d(e)).d;if(e.s*=u.s,!f||!f[0]||!p||!p[0])return new d(!e.s||f&&!f[0]&&!p||p&&!p[0]&&!f?NaN:!f||!p?e.s/0:e.s*0);for(n=L(u.e/B)+L(e.e/B),c=f.length,l=p.length,c=0;){for(t=0,i=c+r;i>r;)s=a[i]+p[r]*f[i-r-1]+t,a[i--]=s%z|0,t=s/z|0;a[i]=(a[i]+t)%z|0}for(;!a[--o];)a.pop();return t?++n:a.shift(),e.d=a,e.e=_e(a,n),P?K(e,d.precision,d.rounding):e},V.toBinary=function(e,t){return Ae(this,2,e,t)},V.toDecimalPlaces=V.toDP=function(e,t){var n=this,r=n.constructor;return n=new r(n),e===void 0?n:(U(e,0,M),t===void 0?t=r.rounding:U(t,0,8),K(n,e+n.e+1,t))},V.toExponential=function(e,t){var n,r=this,i=r.constructor;return e===void 0?n=q(r,!0):(U(e,0,M),t===void 0?t=i.rounding:U(t,0,8),r=K(new i(r),e+1,t),n=q(r,!0,e+1)),r.isNeg()&&!r.isZero()?`-`+n:n},V.toFixed=function(e,t){var n,r,i=this,a=i.constructor;return e===void 0?n=q(i):(U(e,0,M),t===void 0?t=a.rounding:U(t,0,8),r=K(new a(i),e+i.e+1,t),n=q(r,!1,e+r.e+1)),i.isNeg()&&!i.isZero()?`-`+n:n},V.toFraction=function(e){var t,n,r,i,a,o,s,c,l,u,d,f,p=this,m=p.d,h=p.constructor;if(!m)return new h(p);if(l=n=new h(1),r=c=new h(0),t=new h(r),a=t.e=ye(m)-p.e-1,o=a%B,t.d[0]=R(10,o<0?B+o:o),e==null)e=a>0?t:l;else{if(s=new h(e),!s.isInt()||s.lt(l))throw Error(I+s);e=s.gt(t)?a>0?t:l:s}for(P=!1,s=new h(H(m)),u=h.precision,h.precision=a=m.length*B*2;d=G(s,t,0,1,1),i=n.plus(d.times(r)),i.cmp(e)!=1;)n=r,r=i,i=l,l=c.plus(d.times(i)),c=i,i=t,t=s.minus(d.times(i)),s=i;return i=G(e.minus(n),r,0,1,1),c=c.plus(i.times(l)),n=n.plus(i.times(r)),c.s=l.s=p.s,f=G(l,r,a,1).minus(p).abs().cmp(G(c,n,a,1).minus(p).abs())<1?[l,r]:[c,n],h.precision=u,P=!0,f},V.toHexadecimal=V.toHex=function(e,t){return Ae(this,16,e,t)},V.toNearest=function(e,t){var n=this,r=n.constructor;if(n=new r(n),e==null){if(!n.d)return n;e=new r(1),t=r.rounding}else{if(e=new r(e),t===void 0?t=r.rounding:U(t,0,8),!n.d)return e.s?n:e;if(!e.d)return e.s&&=n.s,e}return e.d[0]?(P=!1,n=G(n,e,0,t,1).times(e),P=!0,K(n)):(e.s=n.s,n=e),n},V.toNumber=function(){return+this},V.toOctal=function(e,t){return Ae(this,8,e,t)},V.toPower=V.pow=function(e){var t,n,r,i,a,o,s=this,c=s.constructor,l=+(e=new c(e));if(!s.d||!e.d||!s.d[0]||!e.d[0])return new c(R(+s,l));if(s=new c(s),s.eq(1))return s;if(r=c.precision,a=c.rounding,e.eq(1))return K(s,r,a);if(t=L(e.e/B),t>=e.d.length-1&&(n=l<0?-l:l)<=fe)return i=be(c,s,n,r),e.s<0?new c(1).div(i):K(i,r,a);if(o=s.s,o<0){if(tc.maxE+1||t0?o/0:0):(P=!1,c.rounding=s.s=1,n=Math.min(12,(t+``).length),i=Ce(e.times(X(s,r+n)),r),i.d&&(i=K(i,r+5,1),W(i.d,r,a)&&(t=r+10,i=K(Ce(e.times(X(s,t+n)),t),t+5,1),+H(i.d).slice(r+1,r+15)+1==0x5af3107a4000&&(i=K(i,r+1,0)))),i.s=o,P=!0,c.rounding=a,K(i,r,a))},V.toPrecision=function(e,t){var n,r=this,i=r.constructor;return e===void 0?n=q(r,r.e<=i.toExpNeg||r.e>=i.toExpPos):(U(e,1,M),t===void 0?t=i.rounding:U(t,0,8),r=K(new i(r),e,t),n=q(r,e<=r.e||r.e<=i.toExpNeg,e)),r.isNeg()&&!r.isZero()?`-`+n:n},V.toSignificantDigits=V.toSD=function(e,t){var n=this,r=n.constructor;return e===void 0?(e=r.precision,t=r.rounding):(U(e,1,M),t===void 0?t=r.rounding:U(t,0,8)),K(new r(n),e,t)},V.toString=function(){var e=this,t=e.constructor,n=q(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?`-`+n:n},V.truncated=V.trunc=function(){return K(new this.constructor(this),this.e+1,1)},V.valueOf=V.toJSON=function(){var e=this,t=e.constructor,n=q(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?`-`+n:n};function H(e){var t,n,r,i=e.length-1,a=``,o=e[0];if(i>0){for(a+=o,t=1;tn)throw Error(I+e)}function W(e,t,n,r){var i,a,o,s;for(a=e[0];a>=10;a/=10)--t;return--t<0?(t+=B,i=0):(i=Math.ceil((t+1)/B),t%=B),a=R(10,B-t),s=e[i]%a|0,r==null?t<3?(t==0?s=s/100|0:t==1&&(s=s/10|0),o=n<4&&s==99999||n>3&&s==49999||s==5e4||s==0):o=(n<4&&s+1==a||n>3&&s+1==a/2)&&(e[i+1]/a/100|0)==R(10,t-2)-1||(s==a/2||s==0)&&(e[i+1]/a/100|0)==0:t<4?(t==0?s=s/1e3|0:t==1?s=s/100|0:t==2&&(s=s/10|0),o=(r||n<4)&&s==9999||!r&&n>3&&s==4999):o=((r||n<4)&&s+1==a||!r&&n>3&&s+1==a/2)&&(e[i+1]/a/1e3|0)==R(10,t-3)-1,o}function he(e,t,n){for(var r,i=[0],a,o=0,s=e.length;on-1&&(i[r+1]===void 0&&(i[r+1]=0),i[r+1]+=i[r]/n|0,i[r]%=n)}return i.reverse()}function ge(e,t){var n,r,i;if(t.isZero())return t;r=t.d.length,r<32?(n=Math.ceil(r/3),i=(1/Oe(4,n)).toString()):(n=16,i=`2.3283064365386962890625e-10`),e.precision+=n,t=Z(e,1,t.times(i),new e(1));for(var a=n;a--;){var o=t.times(t);t=o.times(o).minus(o).times(8).plus(1)}return e.precision-=n,t}var G=(function(){function e(e,t,n){var r,i=0,a=e.length;for(e=e.slice();a--;)r=e[a]*t+i,e[a]=r%n|0,i=r/n|0;return i&&e.unshift(i),e}function t(e,t,n,r){var i,a;if(n!=r)a=n>r?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function n(e,t,n,r){for(var i=0;n--;)e[n]-=i,i=e[n]1;)e.shift()}return function(r,i,a,o,s,c){var l,u,d,f,p,m,h,g,_,v,y,b,x,S,C,w,T,E,D,O,k=r.constructor,A=r.s==i.s?1:-1,j=r.d,M=i.d;if(!j||!j[0]||!M||!M[0])return new k(!r.s||!i.s||(j?M&&j[0]==M[0]:!M)?NaN:j&&j[0]==0||!M?A*0:A/0);for(c?(p=1,u=r.e-i.e):(c=z,p=B,u=L(r.e/p)-L(i.e/p)),D=M.length,T=j.length,_=new k(A),v=_.d=[],d=0;M[d]==(j[d]||0);d++);if(M[d]>(j[d]||0)&&u--,a==null?(S=a=k.precision,o=k.rounding):S=s?a+(r.e-i.e)+1:a,S<0)v.push(1),m=!0;else{if(S=S/p+2|0,d=0,D==1){for(f=0,M=M[0],S++;(d1&&(M=e(M,f,c),j=e(j,f,c),D=M.length,T=j.length),w=D,y=j.slice(0,D),b=y.length;b=c/2&&++E;do f=0,l=t(M,y,D,b),l<0?(x=y[0],D!=b&&(x=x*c+(y[1]||0)),f=x/E|0,f>1?(f>=c&&(f=c-1),h=e(M,f,c),g=h.length,b=y.length,l=t(h,y,g,b),l==1&&(f--,n(h,D=10;f/=10)d++;_.e=d+u*p-1,K(_,s?a+_.e+1:a,o,m)}return _}})();function K(e,t,n,r){var i,a,o,s,c,l,u,d,f,p=e.constructor;out:if(t!=null){if(d=e.d,!d)return e;for(i=1,s=d[0];s>=10;s/=10)i++;if(a=t-i,a<0)a+=B,o=t,u=d[f=0],c=u/R(10,i-o-1)%10|0;else if(f=Math.ceil((a+1)/B),s=d.length,f>=s)if(r){for(;s++<=f;)d.push(0);u=c=0,i=1,a%=B,o=a-B+1}else break out;else{for(u=s=d[f],i=1;s>=10;s/=10)i++;a%=B,o=a-B+i,c=o<0?0:u/R(10,i-o-1)%10|0}if(r=r||t<0||d[f+1]!==void 0||(o<0?u:u%R(10,i-o-1)),l=n<4?(c||r)&&(n==0||n==(e.s<0?3:2)):c>5||c==5&&(n==4||r||n==6&&(a>0?o>0?u/R(10,i-o):0:d[f-1])%10&1||n==(e.s<0?8:7)),t<1||!d[0])return d.length=0,l?(t-=e.e+1,d[0]=R(10,(B-t%B)%B),e.e=-t||0):d[0]=e.e=0,e;if(a==0?(d.length=f,s=1,f--):(d.length=f+1,s=R(10,B-a),d[f]=o>0?(u/R(10,i-o)%R(10,o)|0)*s:0),l)for(;;)if(f==0){for(a=1,o=d[0];o>=10;o/=10)a++;for(o=d[0]+=s,s=1;o>=10;o/=10)s++;a!=s&&(e.e++,d[0]==z&&(d[0]=1));break}else{if(d[f]+=s,d[f]!=z)break;d[f--]=0,s=1}for(a=d.length;d[--a]===0;)d.pop()}return P&&(e.e>p.maxE?(e.d=null,e.e=NaN):e.e0?a=a.charAt(0)+`.`+a.slice(1)+Y(r):o>1&&(a=a.charAt(0)+`.`+a.slice(1)),a=a+(e.e<0?`e`:`e+`)+e.e):i<0?(a=`0.`+Y(-i-1)+a,n&&(r=n-o)>0&&(a+=Y(r))):i>=o?(a+=Y(i+1-o),n&&(r=n-i-1)>0&&(a=a+`.`+Y(r))):((r=i+1)0&&(i+1===o&&(a+=`.`),a+=Y(r))),a}function _e(e,t){var n=e[0];for(t*=B;n>=10;n/=10)t++;return t}function ve(e,t,n){if(t>pe)throw P=!0,n&&(e.precision=n),Error(ae);return K(new e(te),t,1,!0)}function J(e,t,n){if(t>me)throw Error(ae);return K(new e(ne),t,n,!0)}function ye(e){var t=e.length-1,n=t*B+1;if(t=e[t],t){for(;t%10==0;t/=10)n--;for(t=e[0];t>=10;t/=10)n++}return n}function Y(e){for(var t=``;e--;)t+=`0`;return t}function be(e,t,n,r){var i,a=new e(1),o=Math.ceil(r/B+4);for(P=!1;;){if(n%2&&(a=a.times(t),je(a.d,o)&&(i=!0)),n=L(n/2),n===0){n=a.d.length-1,i&&a.d[n]===0&&++a.d[n];break}t=t.times(t),je(t.d,o)}return P=!0,a}function xe(e){return e.d[e.d.length-1]&1}function Se(e,t,n){for(var r,i,a=new e(t[0]),o=0;++o17)return new f(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(t==null?(P=!1,c=m):c=t,s=new f(.03125);e.e>-2;)e=e.times(s),d+=5;for(r=Math.log(R(2,d))/Math.LN10*2+5|0,c+=r,n=a=o=new f(1),f.precision=c;;){if(a=K(a.times(e),c,1),n=n.times(++u),s=o.plus(G(a,n,c,1)),H(s.d).slice(0,c)===H(o.d).slice(0,c)){for(i=d;i--;)o=K(o.times(o),c,1);if(t==null)if(l<3&&W(o.d,c-r,p,l))f.precision=c+=10,n=a=s=new f(1),u=0,l++;else return K(o,f.precision=m,p,P=!0);else return f.precision=m,o}o=s}}function X(e,t){var n,r,i,a,o,s,c,l,u,d,f,p=1,m=10,h=e,g=h.d,_=h.constructor,v=_.rounding,y=_.precision;if(h.s<0||!g||!g[0]||!h.e&&g[0]==1&&g.length==1)return new _(g&&!g[0]?-1/0:h.s==1?g?0:h:NaN);if(t==null?(P=!1,u=y):u=t,_.precision=u+=m,n=H(g),r=n.charAt(0),Math.abs(a=h.e)<0x5543df729c000){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)h=h.times(e),n=H(h.d),r=n.charAt(0),p++;a=h.e,r>1?(h=new _(`0.`+n),a++):h=new _(r+`.`+n.slice(1))}else return l=ve(_,u+2,y).times(a+``),h=X(new _(r+`.`+n.slice(1)),u-m).plus(l),_.precision=y,t==null?K(h,y,v,P=!0):h;for(d=h,c=o=h=G(h.minus(1),h.plus(1),u,1),f=K(h.times(h),u,1),i=3;;){if(o=K(o.times(f),u,1),l=c.plus(G(o,new _(i),u,1)),H(l.d).slice(0,u)===H(c.d).slice(0,u))if(c=c.times(2),a!==0&&(c=c.plus(ve(_,u+2,y).times(a+``))),c=G(c,new _(p),u,1),t==null)if(W(c.d,u-m,v,s))_.precision=u+=m,l=o=h=G(d.minus(1),d.plus(1),u,1),f=K(h.times(h),u,1),i=s=1;else return K(c,_.precision=y,v,P=!0);else return _.precision=y,c;c=l,i+=2}}function we(e){return String(e.s*e.s/0)}function Te(e,t){var n,r,i;for((n=t.indexOf(`.`))>-1&&(t=t.replace(`.`,``)),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;r++);for(i=t.length;t.charCodeAt(i-1)===48;--i);if(t=t.slice(r,i),t){if(i-=r,e.e=n=n-r-1,e.d=[],r=(n+1)%B,n<0&&(r+=B),re.constructor.maxE?(e.d=null,e.e=NaN):e.e-1){if(t=t.replace(/(\d)_(?=\d)/g,`$1`),de.test(t))return Te(e,t)}else if(t===`Infinity`||t===`NaN`)return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(le.test(t))n=16,t=t.toLowerCase();else if(ce.test(t))n=2;else if(ue.test(t))n=8;else throw Error(I+t);for(a=t.search(/p/i),a>0?(c=+t.slice(a+1),t=t.substring(2,a)):t=t.slice(2),a=t.indexOf(`.`),o=a>=0,r=e.constructor,o&&(t=t.replace(`.`,``),s=t.length,a=s-a,i=be(r,new r(n),a,a*2)),l=he(t,n,z),u=l.length-1,a=u;l[a]===0;--a)l.pop();return a<0?new r(e.s*0):(e.e=_e(l,u),e.d=l,P=!1,o&&(e=G(e,i,s*4)),c&&(e=e.times(Math.abs(c)<54?R(2,c):Q.pow(2,c))),P=!0,e)}function De(e,t){var n,r=t.d.length;if(r<3)return t.isZero()?t:Z(e,2,t,t);n=1.4*Math.sqrt(r),n=n>16?16:n|0,t=t.times(1/Oe(5,n)),t=Z(e,2,t,t);for(var i,a=new e(5),o=new e(16),s=new e(20);n--;)i=t.times(t),t=t.times(a.plus(i.times(o.times(i).minus(s))));return t}function Z(e,t,n,r,i){var a,o,s,c,l=1,u=e.precision,d=Math.ceil(u/B);for(P=!1,c=n.times(n),s=new e(r);;){if(o=G(s.times(c),new e(t++*t++),u,1),s=i?r.plus(o):r.minus(o),r=G(o.times(c),new e(t++*t++),u,1),o=s.plus(r),o.d[d]!==void 0){for(a=d;o.d[a]===s.d[a]&&a--;);if(a==-1)break}a=s,s=r,r=o,o=a,l++}return P=!0,o.d.length=d+1,o}function Oe(e,t){for(var n=e;--t;)n*=e;return n}function ke(e,t){var n,r=t.s<0,i=J(e,e.precision,1),a=i.times(.5);if(t=t.abs(),t.lte(a))return N=r?4:1,t;if(n=t.divToInt(i),n.isZero())N=r?3:2;else{if(t=t.minus(n.times(i)),t.lte(a))return N=xe(n)?r?2:3:r?4:1,t;N=xe(n)?r?1:4:r?3:2}return t.minus(i).abs()}function Ae(e,t,n,r){var i,a,o,s,c,l,u,d,f,p=e.constructor,m=n!==void 0;if(m?(U(n,1,M),r===void 0?r=p.rounding:U(r,0,8)):(n=p.precision,r=p.rounding),!e.isFinite())u=we(e);else{for(u=q(e),o=u.indexOf(`.`),m?(i=2,t==16?n=n*4-3:t==8&&(n=n*3-2)):i=t,o>=0&&(u=u.replace(`.`,``),f=new p(1),f.e=u.length-o,f.d=he(q(f),10,i),f.e=f.d.length),d=he(u,10,i),a=c=d.length;d[--c]==0;)d.pop();if(!d[0])u=m?`0p+0`:`0`;else{if(o<0?a--:(e=new p(e),e.d=d,e.e=a,e=G(e,f,n,r,0,i),d=e.d,a=e.e,l=ie),o=d[n],s=i/2,l||=d[n+1]!==void 0,l=r<4?(o!==void 0||l)&&(r===0||r===(e.s<0?3:2)):o>s||o===s&&(r===4||l||r===6&&d[n-1]&1||r===(e.s<0?8:7)),d.length=n,l)for(;++d[--n]>i-1;)d[n]=0,n||(++a,d.unshift(1));for(c=d.length;!d[c-1];--c);for(o=0,u=``;o1)if(t==16||t==8){for(o=t==16?4:3,--c;c%o;c++)u+=`0`;for(d=he(u,i,t),c=d.length;!d[c-1];--c);for(o=1,u=`1.`;oc)for(a-=c;a--;)u+=`0`;else at)return e.length=t,!0}function Me(e){return new this(e).abs()}function Ne(e){return new this(e).acos()}function Pe(e){return new this(e).acosh()}function Fe(e,t){return new this(e).plus(t)}function Ie(e){return new this(e).asin()}function Le(e){return new this(e).asinh()}function Re(e){return new this(e).atan()}function ze(e){return new this(e).atanh()}function Be(e,t){e=new this(e),t=new this(t);var n,r=this.precision,i=this.rounding,a=r+4;return!e.s||!t.s?n=new this(NaN):!e.d&&!t.d?(n=J(this,a,1).times(t.s>0?.25:.75),n.s=e.s):!t.d||e.isZero()?(n=t.s<0?J(this,r,i):new this(0),n.s=e.s):!e.d||t.isZero()?(n=J(this,a,1).times(.5),n.s=e.s):t.s<0?(this.precision=a,this.rounding=1,n=this.atan(G(e,t,a,1)),t=J(this,a,1),this.precision=r,this.rounding=i,n=e.s<0?n.minus(t):n.plus(t)):n=this.atan(G(e,t,a,1)),n}function Ve(e){return new this(e).cbrt()}function He(e){return K(e=new this(e),e.e+1,2)}function Ue(e,t,n){return new this(e).clamp(t,n)}function We(e){if(!e||typeof e!=`object`)throw Error(F+`Object expected`);var t,n,r,i=e.defaults===!0,a=[`precision`,1,M,`rounding`,0,8,`toExpNeg`,-j,0,`toExpPos`,0,j,`maxE`,0,j,`minE`,-j,0,`modulo`,0,9];for(t=0;t=a[t+1]&&r<=a[t+2])this[n]=r;else throw Error(I+n+`: `+r);if(n=`crypto`,i&&(this[n]=re[n]),(r=e[n])!==void 0)if(r===!0||r===!1||r===0||r===1)if(r)if(typeof crypto<`u`&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[n]=!0;else throw Error(oe);else this[n]=!1;else throw Error(I+n+`: `+r);return this}function Ge(e){return new this(e).cos()}function Ke(e){return new this(e).cosh()}function qe(e){var t,n,r;function i(e){var t,n,r,a=this;if(!(a instanceof i))return new i(e);if(a.constructor=i,Qe(e)){a.s=e.s,P?!e.d||e.e>i.maxE?(a.e=NaN,a.d=null):e.e=10;n/=10)t++;P?t>i.maxE?(a.e=NaN,a.d=null):t=429e7?t[a]=crypto.getRandomValues(new Uint32Array(1))[0]:s[a++]=i%1e7;else if(crypto.randomBytes){for(t=crypto.randomBytes(r*=4);a=214e7?crypto.randomBytes(4).copy(t,a):(s.push(i%1e7),a+=4);a=r/4}else throw Error(oe);for(r=s[--a],e%=B,r&&e&&(i=R(10,B-e),s[a]=(r/i|0)*i);s[a]===0;a--)s.pop();if(a<0)n=0,s=[0];else{for(n=-1;s[0]===0;n-=B)s.shift();for(r=1,i=s[0];i>=10;i/=10)r++;rnew Q(e),bt=(e,t=2)=>new Q(e).toDecimalPlaces(t,Q.ROUND_HALF_UP).toNumber(),$=e=>typeof e==`number`&&Number.isFinite(e),xt=e=>$(e)?e:null,St=e=>xt(e)??0,Ct=e=>{if($(e))return e;if(typeof e==`string`){let t=e.trim();if(!t)return null;let n=Number(t);return Number.isFinite(n)?n:null}return null};var wt=e=>{let t=new Q(0);for(let n of e)$(n)&&(t=t.plus(n));return t.toNumber()};const Tt=(...e)=>wt(e),Et=(e,t)=>{let n=new Q(0);for(let r of e){let e=t(r);$(e)&&(n=n.plus(e))}return n.toNumber()},Dt=e=>{let t=e.filter($);return t.length===0?null:Tt(...t)},Ot=e=>{let t=e.values||[],n=!1;for(let e of t)if($(e)){n=!0;break}return n?wt(t):null};var kt=class{source;index=0;constructor(e){this.source=e}parse(){let e=this.parseExpression();return this.skipWhitespace(),!e||this.index!==this.source.length?null:e}parseExpression(){let e=this.parseTerm();if(!e)return null;for(;;){this.skipWhitespace();let t=this.peek();if(t!==`+`&&t!==`-`)return e;this.index+=1;let n=this.parseTerm();if(!n)return null;e=t===`+`?e.plus(n):e.minus(n)}}parseTerm(){let e=this.parseFactor();if(!e)return null;for(;;){this.skipWhitespace();let t=this.peek();if(t!==`*`&&t!==`/`)return e;this.index+=1;let n=this.parseFactor();if(!n)return null;if(t===`/`){if(n.isZero())return null;e=e.div(n);continue}e=e.mul(n)}}parseFactor(){this.skipWhitespace();let e=this.peek();if(e===`+`)return this.index+=1,this.parseFactor();if(e===`-`){this.index+=1;let e=this.parseFactor();return e?e.neg():null}if(e===`(`){this.index+=1;let e=this.parseExpression();return this.skipWhitespace(),!e||this.peek()!==`)`?null:(this.index+=1,e)}return this.parseNumber()}parseNumber(){this.skipWhitespace();let e=this.index,t=!1,n=!1;for(;this.index=`0`&&e<=`9`){t=!0,this.index+=1;continue}if(e===`.`&&!n){n=!0,this.index+=1;continue}break}if(!t)return this.index=e,null;let r=this.source.slice(e,this.index);try{return new Q(r)}catch{return null}}skipWhitespace(){for(;this.index{let t=String(e||``).trim();if(!t)return null;try{let e=new kt(t).parse();return e?e.toNumber():null}catch{return null}};export{h as _,Et as a,Ct as c,A as d,O as f,m as g,v as h,bt as i,xt as l,_ as m,Ot as n,Dt as o,D as p,At as r,yt as s,Tt as t,St as u}; \ No newline at end of file diff --git a/33/static/js/htCard-DW-Tiaxs.js b/33/static/js/htCard-DW-Tiaxs.js new file mode 100644 index 0000000..c5a5648 --- /dev/null +++ b/33/static/js/htCard-DW-Tiaxs.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./htInfo-CG7BX4yR.js","./vendor-ui-B4V4Cf1T.js","./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js","./rolldown-runtime-fVNAxIxX.js","./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js","./vendor-ag-grid~index~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeL~h29xz5eu-CW8VCi7z.js","./workspace-DxKKyh8w.js","./vendor-vue-CSlAvuUs.js","./sql-C69Jo4HU.js","./decimal-D3bp1pbs.js","./numberFormat-jhZZmX17.js","./xmCommonAgGrid-BG93CJjo.js","./index-CAPJG_im.js","./_plugin-vue_export-helper-DUFB50Ey.js","./vendor-ag-grid~index-Ch1jbN8D.js","./utils-DFe0HVk9.js","../css/index-CI_Unp5q.css","./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js","./agGridReadonlyAutoHeight-BpRhYCq1.js","./zxFwPricingSync-PWsfNukj.js","./pricingMethodTotals-DHJf6v89.js","./pricingScaleDetail-CuzzWQVd.js","./pricingScaleLink-BNsm4Fxd.js","./xmFactorDefaults-yPGPQ25R.js","./zxFw-DbWORAVD.js","./pricingPersistControl-DVG_7RF1.js","../css/zxFw-DDsbfp-i.css","./Summary-D2760-WG.js","../css/Summary--MyM5xaL.css","./HtConsultCategoryFactor-BL-_RuEP.js","./XmFactorGrid-DLfcqkt0.js","./HtMajorFactor-BGiZtv7N.js","./HtBaseInfo-BIDe7GmZ.js","./HtAdditionalWorkFee-D3Q2A_Au.js","./HtFeeMethodGrid-BpYIiL-T.js","./HtReserveFee-CYFWEZzy.js","./HtContractSummary-DUViaUv0.js","../css/HtContractSummary-oEzQmM2a.css","./HourlyPricingPane-WkG9QINp.js","./HourlyFeeGrid-DixkKG6W.js","../css/HourlyFeeGrid-B40FytkG.css","./InvestmentScalePricingPane-CSaa1AOt.js","./pricingScaleCalc-CxdG8IMv.js","./pricingScaleGrid-BCsr0Q1x.js","./pricingScaleProject-DnXeytCB.js","./pricingScalePaneLifecycle-CUGyrg3j.js","./LandScalePricingPane-DgT-hiGV.js","./OtherService-I-FCHt--.js","../css/OtherService-poy4GwCf.css","./ScaleFormulaReadonlyPane-LcS4i8Fj.js","./ScaleFormulaReadonlyPane-AeIzjaXU.js","./WorkloadPricingPane-DgYywEPP.js","./MethodUnavailableNotice-Cx7GLj7Z.js","./WorkContentGrid-nNmx9oMr.js","../css/WorkContentGrid-B4nOYGuK.css"])))=>i.map(i=>d[i]); +import{At as e,Bt as t,H as n,Ot as r,Pt as i,Rn as a,W as o,Wn as s,er as c,et as l,ft as u,mn as d,tt as f}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as p}from"./workspace-DxKKyh8w.js";import{c as m,i as h,o as g}from"./decimal-D3bp1pbs.js";import"./vendor-ui-B4V4Cf1T.js";import{t as _}from"./numberFormat-jhZZmX17.js";import{C as v,t as y}from"./index-CAPJG_im.js";import{t as b}from"./_rolldown_dynamic_import_helper-CwdEGLFc.js";import{t as x}from"./typeLine-BCKblICF.js";var S=f({__name:`htCard`,props:{contractId:{},contractName:{},projectInfoKey:{},projectScaleKey:{},projectConsultCategoryFactorKey:{},projectMajorFactorKey:{}},setup(S){let C=S,{t:w}=p(),T=v(),E=s(null),D=n(()=>`project-active-cat-${C.contractId}`),O=null,k=e=>typeof e==`number`&&Number.isFinite(e)?`${_(e,2)} ${w(`htCard.currencySuffix`)}`:`--`,A=e=>{let t=Array.isArray(e?.detailRows)?e.detailRows:[];if(t.length===0)return null;let n=!1,r=0;for(let e of t){let t=m(e?.serviceBudget);if(t!=null){r+=t,n=!0;continue}let i=m(e?.adoptedBudgetUnitPrice),a=m(e?.personnelCount),o=m(e?.workdayCount);i==null||a==null||o==null||(r+=i*a*o,n=!0)}return n?h(r,2):null},j=e=>{let t=Array.isArray(e?.detailRows)?e.detailRows:[];if(t.length===0)return null;let n=m(t.find(e=>String(e?.id||``)===`fee-subtotal-fixed`)?.budgetFee);if(n!=null)return h(n,2);let r=!1,i=0;for(let e of t){if(String(e?.id||``)===`fee-subtotal-fixed`)continue;let t=m(e?.budgetFee);if(t!=null){i+=t,r=!0;continue}let n=m(e?.quantity),a=m(e?.unitPrice);n==null||a==null||(i+=n*a,r=!0)}return r?h(i,2):null},M=async(e,t)=>{let[n,r,i]=await Promise.all([T.loadHtFeeMethodState(e,t,`rate-fee`),T.loadHtFeeMethodState(e,t,`hourly-fee`),T.loadHtFeeMethodState(e,t,`quantity-unit-price-fee`)]),a=g([m(n?.budgetFee),A(r),j(i)]);return a==null?null:h(a,2)},N=async e=>{let t=await T.loadHtFeeMainState(e),n=(Array.isArray(t?.detailRows)?t.detailRows:[]).map(e=>String(e?.id||``).trim()).filter(Boolean);if(n.length===0)return null;let r=g(await Promise.all(n.map(t=>M(e,t))));return r==null?null:h(r,2)},P=async()=>{await T.loadContract(C.contractId);let e=T.getBaseSubtotal(C.contractId),[t,n]=await Promise.all([N(`htExtraFee-${C.contractId}-additional-work`),N(`htExtraFee-${C.contractId}-reserve`)]),r=g([e,t,n]);E.value=r==null?null:h(r,2)},F=n(()=>{let e=`htExtraFee-${C.contractId}-additional-work`,t=`htExtraFee-${C.contractId}-reserve`;return JSON.stringify({contractState:T.contracts[C.contractId]||null,addMain:T.htFeeMainStates[e]||null,reserveMain:T.htFeeMainStates[t]||null,addMethods:T.htFeeMethodStates[e]||null,reserveMethods:T.htFeeMethodStates[t]||null})}),I=()=>{O&&clearTimeout(O),O=setTimeout(()=>{P()},80)};a(f({name:`HtInfoWithProps`,setup(){let e=l({loader:()=>y(()=>import(`./htInfo-CG7BX4yR.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]),import.meta.url),onError:e=>{console.error(`加载 htInfo 组件失败:`,e)}});return()=>u(e,{contractId:C.contractId,projectScaleKey:C.projectScaleKey,projectInfoKey:C.projectInfoKey})}}));let L=a(f({name:`ZxFwWithProps`,setup(){let e=l({loader:()=>y(()=>import(`./zxFw-DbWORAVD.js`),__vite__mapDeps([24,13,12,3,1,2,4,5,6,7,8,9,10,14,15,16,17,18,20,21,25,26]),import.meta.url),onError:e=>{console.error(`加载 zxFw 组件失败:`,e)}});return()=>u(e,{contractId:C.contractId,contractName:C.contractName,projectInfoKey:C.projectInfoKey})}})),R=a(f({name:`SummaryWithProps`,setup(){let e=l({loader:()=>y(()=>import(`./Summary-D2760-WG.js`),__vite__mapDeps([27,13,12,3,1,2,4,5,6,7,8,9,10,14,15,16,17,18,20,21,25,28]),import.meta.url),onError:e=>{console.error(`加载 Summary 组件失败:`,e)}});return()=>u(e,{contractId:C.contractId,contractName:C.contractName,projectInfoKey:C.projectInfoKey})}}));a(f({name:`HtConsultCategoryFactorWithProps`,setup(){let e=l({loader:()=>y(()=>import(`./HtConsultCategoryFactor-BL-_RuEP.js`),__vite__mapDeps([29,6,3,2,4,5,7,8,9,10,30,12,13,1,14,15,16,17,18,19,20,21,22,23]),import.meta.url),onError:e=>{console.error(`加载 HtConsultCategoryFactor 组件失败:`,e)}});return()=>u(e,{contractId:C.contractId,projectInfoKey:C.projectInfoKey,parentStorageKey:C.projectConsultCategoryFactorKey})}}));let z=a(f({name:`HtMajorFactorWithProps`,setup(){let e=l({loader:()=>y(()=>import(`./HtMajorFactor-BGiZtv7N.js`),__vite__mapDeps([31,6,3,2,4,5,7,8,9,10,30,12,13,1,14,15,16,17,18,19,20,21,22,23]),import.meta.url),onError:e=>{console.error(`加载 HtMajorFactor 组件失败:`,e)}});return()=>u(e,{contractId:C.contractId,projectInfoKey:C.projectInfoKey,parentStorageKey:C.projectMajorFactorKey})}})),B=a(f({name:`HtBaseInfoWithProps`,setup(){let e=l({loader:()=>y(()=>import(`./HtBaseInfo-BIDe7GmZ.js`),__vite__mapDeps([32,12,13,3,1,2,4,5,6,7,8,9,10,14,15,16]),import.meta.url),onError:e=>{console.error(`加载 HtBaseInfo 组件失败:`,e)}});return()=>u(e,{contractId:C.contractId})}}));a(f({name:`HtAdditionalWorkFeeWithProps`,setup(){let e=l({loader:()=>y(()=>import(`./HtAdditionalWorkFee-D3Q2A_Au.js`),__vite__mapDeps([33,1,2,3,4,5,6,7,8,9,10,34,12,13,14,15,16,17,18]),import.meta.url),onError:e=>{console.error(`加载 HtAdditionalWorkFee 组件失败:`,e)}});return()=>u(e,{contractId:C.contractId,contractName:C.contractName})}})),a(f({name:`HtReserveFeeWithProps`,setup(){let e=l({loader:()=>y(()=>import(`./HtReserveFee-CYFWEZzy.js`),__vite__mapDeps([35,1,2,3,4,5,6,7,8,9,10,34,12,13,14,15,16,17,18]),import.meta.url),onError:e=>{console.error(`加载 HtReserveFee 组件失败:`,e)}});return()=>u(e,{contractId:C.contractId,contractName:C.contractName})}})),a(f({name:`HtContractSummaryWithProps`,setup(){let e=l({loader:()=>y(()=>import(`./HtContractSummary-DUViaUv0.js`),__vite__mapDeps([36,13,12,3,1,2,4,5,6,7,8,9,10,14,15,16,17,18,37]),import.meta.url),onError:e=>{console.error(`加载 HtContractSummary 组件失败:`,e)}});return()=>u(e,{contractId:C.contractId})}}));let V=e=>a(f({name:e,setup(){let t=l({loader:()=>b(Object.assign({"../../pricing/components/HourlyPricingPane.vue":()=>y(()=>import(`./HourlyPricingPane-WkG9QINp.js`),__vite__mapDeps([38,6,3,2,4,5,7,8,9,10,39,13,12,1,14,15,16,17,18,40,25]),import.meta.url),"../../pricing/components/InvestmentScalePricingPane.vue":()=>y(()=>import(`./InvestmentScalePricingPane-CSaa1AOt.js`),__vite__mapDeps([41,12,13,3,1,2,4,5,6,7,8,9,10,14,15,16,17,18,25,42,21,43,22,44,45,23]),import.meta.url),"../../pricing/components/LandScalePricingPane.vue":()=>y(()=>import(`./LandScalePricingPane-DgT-hiGV.js`),__vite__mapDeps([46,12,13,3,1,2,4,5,6,7,8,9,10,14,15,16,17,18,42,21,43,22,44,45,23]),import.meta.url),"../../pricing/components/OtherService.vue":()=>y(()=>import(`./OtherService-I-FCHt--.js`),__vite__mapDeps([47,13,12,3,1,2,4,5,6,7,8,9,10,14,15,16,17,18,25,48]),import.meta.url),"../../pricing/components/ScaleFormulaReadonlyPane.vue":()=>y(()=>import(`./ScaleFormulaReadonlyPane-LcS4i8Fj.js`),__vite__mapDeps([49,6,3,2,4,5,7,8,9,10,50,12,13,1,14,15,16,17,18,43,22]),import.meta.url),"../../pricing/components/WorkloadPricingPane.vue":()=>y(()=>import(`./WorkloadPricingPane-DgYywEPP.js`),__vite__mapDeps([51,12,13,3,1,2,4,5,6,7,8,9,10,14,15,16,17,52,18,25,42,45,23]),import.meta.url)}),`../../pricing/components/${e}.vue`,5),onError:e=>{console.error(`load PricingMethodView failed:`,e)}});return()=>u(t,{contractId:C.contractId,contractName:C.contractName,serviceId:C.contractId,projectInfoKey:C.projectInfoKey})}})),H=a(f({name:`WorkContentPane`,setup(){let e=l({loader:()=>y(()=>import(`./WorkContentGrid-nNmx9oMr.js`),__vite__mapDeps([53,13,12,3,1,2,4,5,6,7,8,9,10,14,15,16,17,18,54]),import.meta.url),onError:e=>{console.error(`load WorkContentGrid failed:`,e)}});return()=>u(e,{title:w(`zxFwView.workContentTitle`),storageKey:`work-content-${C.contractId}-${C.contractId}`,contractId:C.contractId,projectInfoKey:C.projectInfoKey,serviceId:C.contractId,dictMode:`service`,"show-no-column":!0})}})),U=V(`InvestmentScalePricingPane`),W=V(`LandScalePricingPane`),G=V(`WorkloadPricingPane`),K=V(`HourlyPricingPane`),q=V(`OtherService`),J=n(()=>[{key:`base-info`,label:w(`htCard.categories.baseInfo`),component:B},{key:`major-factor`,label:w(`htCard.categories.majorFactor`),component:z},{key:`contract`,label:w(`htCard.categories.services`),component:L},{key:`Investment`,label:w(`zxFwView.categories.investmentScale`),component:U},{key:`land-scale-method`,label:w(`zxFwView.categories.landScale`),component:W},{key:`workload-method`,label:w(`zxFwView.categories.workload`),component:G},{key:`hourly-method`,label:w(`zxFwView.categories.hourly`),component:K},{key:`work-content`,label:w(`zxFwView.categories.workContent`),component:H},{key:`other-service`,label:w(`zxFwView.categories.otherservice`),component:q},{key:`Summary`,label:w(`htCard.categories.summary`),component:R}]);return d(F,(e,t)=>{e!==t&&I()}),i(()=>{P()}),r(()=>{P()}),e(()=>{O&&clearTimeout(O)}),(e,n)=>(t(),o(x,{scene:`ht-tab`,title:c(w)(`htCard.title`,{name:S.contractName}),subtitle:c(w)(`htCard.subtitle`,{id:S.contractId}),"meta-text":c(w)(`htCard.metaBudget`,{amount:k(E.value)}),"copy-text":S.contractId,"storage-key":D.value,"default-category":`base-info`,categories:J.value},null,8,[`title`,`subtitle`,`meta-text`,`copy-text`,`storage-key`,`categories`]))}});export{S as default}; \ No newline at end of file diff --git a/33/static/js/htInfo-CG7BX4yR.js b/33/static/js/htInfo-CG7BX4yR.js new file mode 100644 index 0000000..4e1d9e6 --- /dev/null +++ b/33/static/js/htInfo-CG7BX4yR.js @@ -0,0 +1 @@ +import{Bt as e,H as t,W as n,er as r,tt as i}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import"./vendor-vue-CSlAvuUs.js";import{D as a}from"./workspace-DxKKyh8w.js";import"./decimal-D3bp1pbs.js";import"./vendor-ui-B4V4Cf1T.js";import"./numberFormat-jhZZmX17.js";import"./sql-C69Jo4HU.js";import"./agGridReadonlyAutoHeight-BpRhYCq1.js";import"./pricingScaleDetail-CuzzWQVd.js";import"./pricingMethodTotals-DHJf6v89.js";import"./pricingScaleLink-BNsm4Fxd.js";import"./xmFactorDefaults-yPGPQ25R.js";import"./zxFwPricingSync-PWsfNukj.js";import{t as o}from"./xmCommonAgGrid-BG93CJjo.js";var s=i({__name:`htInfo`,props:{contractId:{},projectScaleKey:{},projectInfoKey:{}},setup(i){let s=i,c=t(()=>`ht-info-v3-${s.contractId}`),l=t(()=>{if(s.projectScaleKey!==null)return s.projectScaleKey||`xm-info-v3`}),u=t(()=>s.projectInfoKey||`xm-base-info-v1`),{t:d}=a();return(t,i)=>(e(),n(o,{title:r(d)(`htInfo.scaleDetailTitle`),dbKey:c.value,xmInfoKey:l.value,"base-info-key":u.value},null,8,[`title`,`dbKey`,`xmInfoKey`,`base-info-key`]))}});export{s as default}; \ No newline at end of file diff --git a/33/static/js/index-CAPJG_im.js b/33/static/js/index-CAPJG_im.js new file mode 100644 index 0000000..17ba060 --- /dev/null +++ b/33/static/js/index-CAPJG_im.js @@ -0,0 +1,52 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./xmCard-D4WD8Tvj.js","./typeLine-BCKblICF.js","./_plugin-vue_export-helper-DUFB50Ey.js","./vendor-ui-B4V4Cf1T.js","./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js","./rolldown-runtime-fVNAxIxX.js","./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js","./vendor-ag-grid~index~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeL~h29xz5eu-CW8VCi7z.js","./workspace-DxKKyh8w.js","../css/typeLine-oowuebrQ.css","./htCard-DW-Tiaxs.js","./_rolldown_dynamic_import_helper-CwdEGLFc.js","./vendor-vue-CSlAvuUs.js","./decimal-D3bp1pbs.js","./numberFormat-jhZZmX17.js","./QuickCalcWorkbenchView-bCXV4JQ3.js","./sql-C69Jo4HU.js","./pricingScaleCalc-CxdG8IMv.js","./xmFactorDefaults-yPGPQ25R.js","../css/QuickCalcWorkbenchView-C1jyxPFF.css","./ZxFwView-CRvQoCJC.js","./ScaleFormulaReadonlyPane-AeIzjaXU.js","./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-DXO754eW.js","./agGridReadonlyAutoHeight-BpRhYCq1.js","./pricingScaleGrid-BCsr0Q1x.js","./pricingScaleLink-BNsm4Fxd.js","./MethodUnavailableNotice-Cx7GLj7Z.js","./HtFeeMethodTypeLineView-DmQ8lS0u.js","./HourlyFeeGrid-DixkKG6W.js","../css/HourlyFeeGrid-B40FytkG.css","./pricingPersistControl-DVG_7RF1.js","../css/HtFeeMethodTypeLineView-DQeFn_Ta.css"])))=>i.map(i=>d[i]); +import{a as e,i as t,n,o as r,r as i,t as a}from"./rolldown-runtime-fVNAxIxX.js";import{A as o,H as s,I as c,J as l,M as u,N as d,P as f,R as p,V as m,W as h,X as g,Y as _,_ as v,f as y,g as b,k as x,p as S,q as C,v as w,y as T}from"./vendor-ag-grid~index~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeL~h29xz5eu-CW8VCi7z.js";import{a as E,c as D,i as O,n as k,o as A,r as j,s as M,t as N}from"./vendor-ag-grid~index-Ch1jbN8D.js";import{$ as P,At as F,Bt as I,Cr as ee,Dt as L,E as R,Er as z,Et as B,G as V,H,K as U,Kt as W,M as te,Pt as ne,Q as G,Rn as re,Sr as ie,T as K,U as q,W as J,Wn as Y,Xt as ae,dt as oe,er as X,et as se,i as ce,mn as Z,qn as le,qt as ue,t as de,tt as fe,xr as pe,yn as Q}from"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-CFxQnYK4.js";import"./vendor-ag-grid~XmMajorFactor~XmConsultCategoryFactor~xmInfo~ZxFwView~HtFeeMethodTypeLineVie~ntegcu2a-BnO-wAhh.js";import{n as me,r as $,t as he}from"./vendor-vue-CSlAvuUs.js";import{D as ge,E as _e,O as ve,S as ye,T as be,a as xe,b as Se,c as Ce,d as we,f as Te,g as Ee,h as De,i as Oe,l as ke,m as Ae,n as je,o as Me,p as Ne,r as Pe,s as Fe,t as Ie,u as Le,v as Re,w as ze,x as Be,y as Ve}from"./workspace-DxKKyh8w.js";import{_ as He,d as Ue,f as We,g as Ge,h as Ke,i as qe,l as Je,m as Ye,o as Xe,p as Ze,s as Qe,t as $e,u as et}from"./decimal-D3bp1pbs.js";import{n as tt,r as nt,t as rt}from"./utils-DFe0HVk9.js";import{A as it,At as at,C as ot,D as st,Dt as ct,E as lt,F as ut,I as dt,L as ft,M as pt,N as mt,O as ht,P as gt,S as _t,T as vt,Tt as yt,_ as bt,c as xt,dt as St,ft as Ct,g as wt,gt as Tt,ht as Et,jt as Dt,k as Ot,l as kt,lt as At,m as jt,mt as Mt,pt as Nt,r as Pt,s as Ft,t as It,ut as Lt,w as Rt,x as zt,y as Bt}from"./vendor-ui-B4V4Cf1T.js";import"./numberFormat-jhZZmX17.js";import{S as Vt,_ as Ht,a as Ut,b as Wt,c as Gt,f as Kt,h as qt,i as Jt,m as Yt,o as Xt,r as Zt,v as Qt,y as $t}from"./sql-C69Jo4HU.js";import{t as en}from"./_plugin-vue_export-helper-DUFB50Ey.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();const tn=`jgjs-ui-prefs-v1`;var nn=e=>e===`zh-CN`||e===`en-US`,rn=()=>{if(typeof window>`u`)return null;let e=localStorage.getItem(tn);if(!e)return null;try{let t=JSON.parse(e);return t&&typeof t==`object`?t:null}catch{return null}},an=e=>{typeof window>`u`||localStorage.setItem(tn,JSON.stringify(e))};const on=$(`uiPrefs`,{state:()=>({locale:null,hasLocaleOverride:!1}),actions:{initFromStorage(){let e=rn();e&&e.hasLocaleOverride===!0&&nn(e.locale)&&(this.locale=e.locale,this.hasLocaleOverride=!0,_e(e.locale))},setLocale(e){this.locale=e,this.hasLocaleOverride=!0,_e(e),an({locale:this.locale,hasLocaleOverride:this.hasLocaleOverride})}}});var sn={id:xe,title:be.global.t(`home.projectCalcTab`),componentName:`ProjectCalcView`},cn=()=>Ve()===`quick`?new Set([we,Ce]):new Set([xe,Ce]),ln=()=>Ve()===`quick`?we:xe;const un=$(`tabs`,()=>{let e=Y([{...sn}]),t=Y(),n=Y(!1),r=()=>{let t=ln();e.value.some(e=>e.id===t)||Ve()!==`quick`&&(e.value=[{...sn},...e.value])},i=()=>{r(),e.value.length===0&&(e.value=[{...sn}]),e.value.some(e=>e.id===t.value)||(t.value=e.value[0]?.id??ln())};return{tabs:e,activeTabId:t,hasCompletedSetup:n,enterWorkspace:n=>{e.value=[{...n}],t.value=n.id},openTab:n=>{e.value.some(e=>e.id===n.id)||(e.value=[...e.value,n]),t.value=n.id},removeTab:n=>{if(cn().has(n))return;let a=e.value.findIndex(e=>e.id===n);if(a<0)return;let o=t.value===n;if(e.value=e.value.filter(e=>e.id!==n),r(),o){let n=Math.max(0,Math.min(a-1,e.value.length-1));t.value=e.value[n]?.id??ln();return}i()},closeAllTabs:()=>{let n=cn(),r=e.value.filter(e=>n.has(e.id));e.value=r.length>0?r:[{...sn}],t.value=e.value[0]?.id??ln()},closeLeftTabs:t=>{let n=e.value.findIndex(e=>e.id===t);if(n<0)return;let r=cn();e.value=e.value.filter((e,t)=>r.has(e.id)||t>=n),i()},closeRightTabs:t=>{let n=e.value.findIndex(e=>e.id===t);if(n<0)return;let r=cn();e.value=e.value.filter((e,t)=>r.has(e.id)||t<=n),i()},closeOtherTabs:n=>{let i=cn();e.value=e.value.filter(e=>i.has(e.id)||e.id===n),r(),t.value=e.value.some(e=>e.id===n)?n:ln()},resetTabs:()=>{e.value=[{...sn}],t.value=xe,n.value=!1}}},{persist:!0});var dn=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e;const fn=nt,pn=(e,t)=>n=>{if(t?.variants==null)return fn(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=dn(t)||dn(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return fn(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)};var mn=fe({__name:`Button`,props:{variant:{},size:{},class:{},asChild:{type:Boolean},as:{default:`button`}},setup(e){let t=e;return(n,r)=>(I(),J(X(yt),{"data-slot":`button`,as:e.as,"as-child":e.asChild,class:pe(X(tt)(X(hn)({variant:e.variant,size:e.size}),t.class))},{default:Q(()=>[ue(n.$slots,`default`)]),_:3},8,[`as`,`as-child`,`class`]))}});const hn=pn(`inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,sm:`h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});var gn=(e,t,n)=>{let r=e.split(`-`).filter(Boolean);if(!r.length)return[t];let i=[],a=r[0],o=n.get(a);o&&i.push(o);for(let e=1;e{let t=new Map;for(let n of e){let e=String(n.item?.code||``).trim();e&&t.set(e,n.id)}return e.map(e=>{let n=String(e.item?.code||``).trim(),r=String(e.item?.name||``).trim();if(!n||!r)return null;let i=typeof e.item?.defCoe==`number`&&Number.isFinite(e.item.defCoe)?e.item.defCoe:null;return{id:e.id,code:n,name:r,standardFactor:i,budgetValue:i,remark:``,path:gn(n,e.id,t)}}).filter(e=>!!e)},vn=e=>{let t=new Map,n=[],r=new Map(e.map(e=>[String(e.item?.code||``).trim(),e]));for(let i of e){let e=String(i.item?.code||``).trim(),a=String(i.item?.name||``).trim();if(!e||!a)continue;if(!e.includes(`-`)){t.has(e)||n.push(e),t.set(e,{id:i.id,code:e,name:a,children:[]});continue}let o=e.split(`-`)[0];if(!t.has(o)){let e=r.get(o);n.includes(o)||n.push(o),t.set(o,{id:e?.id||`group-${o}`,code:o,name:String(e?.item?.name||o).trim(),children:[]})}t.get(o)?.children.push({id:i.id,code:e,name:a,hasCost:i.item?.hasCost!==!1,hasArea:i.item?.hasArea!==!1})}return n.map(e=>t.get(e)).filter(e=>!!e)},yn=e=>e.flatMap(e=>e.children.map(t=>({id:t.id,groupCode:e.code,groupName:e.name,majorCode:t.code,majorName:t.name,hasCost:t.hasCost,hasArea:t.hasArea,amount:null,landArea:null,path:[`${e.code} ${e.name}`,`${t.code} ${t.name}`]}))),bn=(e,t)=>{let n=new Map;for(let e of t||[])!e||e.isGroupRow===!0||n.set(String(e.id||``),e);return e.map(e=>{let t=n.get(e.id);return t?{...e,hide:t.hide,amount:e.hasCost&&typeof t.amount==`number`&&Number.isFinite(t.amount)?t.amount:null,landArea:e.hasArea&&typeof t.landArea==`number`&&Number.isFinite(t.landArea)?t.landArea:null}:e})},xn=(e,t)=>{let n=new Map(t.map(e=>[String(e.id||``),e]));return e.map(e=>{let t=0,r=!1,i=0,a=!1;for(let o of e.children){let e=n.get(String(o.id||``)),s=e?.amount;typeof s==`number`&&Number.isFinite(s)&&(t+=s,r=!0);let c=e?.landArea;typeof c==`number`&&Number.isFinite(c)&&(i+=c,a=!0)}return{id:e.id,groupCode:e.code,groupName:e.name,majorCode:e.code,majorName:e.name,hasCost:!0,hasArea:!0,amount:r?t:null,landArea:a?i:null,path:[`${e.code} ${e.name}`],hide:!1,isGroupRow:!0}})};const Sn=(e,t)=>{let n=vn(Gt().map(({id:e,item:t})=>({id:e,item:t})).filter(({id:t,item:n})=>n.notshowByzxflxs!==!0&&$t(t,e))),r=bn(yn(n),Array.isArray(t?.detailRows)?t.detailRows:void 0);return{detailRows:[...r,...xn(n,r)],totalAmount:typeof t?.totalAmount==`number`&&Number.isFinite(t.totalAmount)?t.totalAmount:null,roughCalcEnabled:t?.roughCalcEnabled===!0}},Cn=async(e,t,n,r)=>{let i=Xt(t),a=Yt().map(({id:e,item:t})=>({id:e,item:t})).filter(({item:e})=>e.notshowByzxflxs===!0?!1:Qt(e,i)),o=Gt().map(({id:e,item:t})=>({id:e,item:t})).filter(({id:e,item:n})=>n.notshowByzxflxs!==!0&&$t(e,t)),s={detailRows:_n(a)},c={detailRows:_n(o)};await Promise.all([e.setItem(n,s),e.setItem(r,c)])},wn=async(e,t,n)=>{await e.setItem(n,Sn(t))};var Tn=r(ve(),1);const En=e=>{let t=Tn.default.createInstance({name:Ee(e),storeName:`pinia-kv`});return{setItem:async(e,n)=>{let r=String(e||``).trim();if(!r)return;let i=await t.getItem(`pinia-kv`),a={...i?.entries&&typeof i.entries==`object`?i.entries:{},[r]:JSON.parse(JSON.stringify(n))};await t.setItem(`pinia-kv`,{...i&&typeof i==`object`?i:{},entries:a,ready:!0})}}};var Dn=12e3,On=4e3,kn=80,An=`jgjs-project-lock-channel`,jn=`jgjs-project-tab-session-id`,Mn=`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,Nn=()=>Date.now(),Pn=e=>`jgjs-project-lock:${e}`,Fn=e=>{if(!e)return null;try{let t=JSON.parse(e);return!t||typeof t!=`object`||typeof t.sessionId!=`string`||typeof t.projectId!=`string`||typeof t.updatedAt!=`number`||!Number.isFinite(t.updatedAt)?null:{sessionId:t.sessionId,projectId:t.projectId,updatedAt:t.updatedAt}}catch{return null}},In=e=>Nn()-e.updatedAt>Dn,Ln=()=>`${Nn()}-${Math.random().toString(36).slice(2,10)}`,Rn=(e,t)=>{try{t?console.debug(`[project-lock]`,e,t):console.debug(`[project-lock]`,e)}catch{}},zn=()=>{try{let e=String(window.sessionStorage.getItem(jn)||``).trim();if(e)return e;let t=Ln();return window.sessionStorage.setItem(jn,t),t}catch{return Ln()}};const Bn=e=>{let t=String(e.projectId||``).trim(),n=e.onConflict,r=zn(),i=Pn(t),a=!1,o=null,s=null,c=!1,l=e=>{a!==e&&(a=e,Rn(`emit conflict`,{projectId:t,sessionId:r,runtimeInstanceId:Mn,conflicted:e}),n(e))},u=()=>{if(a||c)return;let e={sessionId:r,projectId:t,updatedAt:Nn()};localStorage.setItem(i,JSON.stringify(e)),Rn(`write heartbeat`,{projectId:t,sessionId:r,runtimeInstanceId:Mn,key:i}),s?.postMessage({type:`heartbeat`,projectId:t,sessionId:r})},d=()=>{Fn(localStorage.getItem(i))?.sessionId===r&&(localStorage.removeItem(i),Rn(`clear own lock`,{projectId:t,sessionId:r,runtimeInstanceId:Mn,key:i})),s?.postMessage({type:`release`,projectId:t,sessionId:r})},f=()=>{let e=Fn(localStorage.getItem(i));if(Rn(`detect conflict`,{projectId:t,sessionId:r,runtimeInstanceId:Mn,current:e,expired:e?In(e):null}),!e||In(e)){l(!1),u();return}console.log(r),l(e.sessionId!==r)},p=e=>{e.key===i&&f()},m=()=>{d()},h=()=>{o||a||c||(o=setInterval(u,On))};typeof BroadcastChannel<`u`&&(s=new BroadcastChannel(An),s.onmessage=e=>{let n=e.data;if(!(!n||n.projectId!==t)){if(n.type===`session-probe`){if(n.candidateSessionId!==r||n.runtimeId===Mn)return;Rn(`session probe received`,{projectId:t,sessionId:r,runtimeInstanceId:Mn,fromRuntimeId:n.runtimeId}),s?.postMessage({type:`session-probe-ack`,projectId:t,candidateSessionId:r,responderRuntimeId:Mn,targetRuntimeId:n.runtimeId});return}n.type!==`session-probe-ack`&&n.sessionId!==r&&n.type===`heartbeat`&&f()}});let g=async()=>{if(!s)return;let e=new Set,n=n=>{let i=n.data;!i||i.type!==`session-probe-ack`||i.projectId===t&&i.candidateSessionId===r&&i.targetRuntimeId===Mn&&i.responderRuntimeId&&e.add(i.responderRuntimeId)};s.addEventListener(`message`,n);try{s.postMessage({type:`session-probe`,projectId:t,candidateSessionId:r,runtimeId:Mn}),await new Promise(e=>window.setTimeout(e,kn))}finally{s.removeEventListener(`message`,n)}if(c||e.size===0)return;let i=Array.from(e).some(e=>e{try{if(await g(),c)return;let e=Fn(localStorage.getItem(i));Rn(`init lock state`,{projectId:t,sessionId:r,runtimeInstanceId:Mn,existing:e}),e&&!In(e)&&e.sessionId!==r?l(!0):u(),h()}catch(e){console.error(`init project session lock failed:`,e)}})(),window.addEventListener(`storage`,p),window.addEventListener(`beforeunload`,m),{get conflicted(){return a},release:()=>{c=!0,o&&=(clearInterval(o),null),window.removeEventListener(`storage`,p),window.removeEventListener(`beforeunload`,m),d(),s&&=(s.close(),null)}}},Vn=e=>{let t=String(e||``).trim();if(!t)return!1;try{let e=Fn(localStorage.getItem(Pn(t)));return!!(e&&!In(e))}catch{return!1}},Hn=e=>{let t=new Set;for(let n of e)Vn(n)&&t.add(String(n||``).trim());return t};var Un={class:`home-entry relative flex min-h-full items-center justify-center overflow-hidden px-4 py-8 lg:py-10`},Wn={class:`relative w-full max-w-[1240px]`},Gn={class:`absolute right-0 top-0 z-10`},Kn={class:`home-title text-center`},qn={class:`text-2xl font-semibold tracking-tight text-slate-900 lg:text-3xl`,style:{"font-family":`HarmonyOS_Sans_SC, 'Microsoft YaHei', sans-serif`,"font-weight":`300`,"white-space":`pre-line`}},Jn={class:`mt-1.5 text-sm text-slate-500`},Yn={class:`mt-5 grid items-stretch gap-4 md:grid-cols-2 xl:grid-cols-5`},Xn={class:`home-card-base home-entry-item home-entry-item--1 relative overflow-hidden rounded-2xl bg-[#dc2626] p-7 text-white shadow-[0_24px_60px_rgba(153,27,27,0.35)]`},Zn={class:`relative inline-flex h-11 w-11 items-center justify-center rounded-xl bg-white/15 ring-1 ring-white/35`},Qn={class:`relative mt-8 whitespace-pre-line text-xl font-semibold leading-tight tracking-tight`},$n={class:`relative mt-2 text-sm text-red-200/90`},er={class:`relative mt-4 whitespace-pre-line text-xs leading-5 text-red-200/80`},tr=[`onKeydown`],nr={class:`inline-flex h-11 w-11 items-center justify-center rounded-xl border border-blue-100 bg-blue-50/80 text-blue-600 shadow-sm transition-transform duration-200 group-hover:scale-105`},rr={class:`mt-4 text-base font-semibold text-slate-900`},ir={class:`mt-1.5 text-xs leading-5 text-slate-500`},ar={class:`mt-4 flex flex-wrap items-center justify-end gap-2`},or={class:`flex items-center gap-1`},sr={class:`inline-flex h-11 w-11 items-center justify-center rounded-xl border border-amber-100 bg-amber-50/80 text-amber-600 shadow-sm transition-transform duration-200 group-hover:scale-105`},cr={class:`mt-4 text-base font-semibold text-slate-900`},lr={class:`mt-1.5 text-xs leading-5 text-slate-500`},ur={class:`mt-4 flex items-center text-xs font-medium text-slate-400 transition-colors group-hover:text-slate-600`},dr=[`onKeydown`],fr={class:`mt-4 text-base font-semibold text-slate-900`},pr={class:`mt-1.5 text-xs leading-5 text-slate-500`},mr={class:`mt-4 flex items-center text-xs font-medium text-slate-400 transition-colors group-hover:text-slate-600`},hr=[`onKeydown`],gr={class:`mt-4 text-base font-semibold text-slate-900`},_r={class:`mt-1.5 text-xs leading-5 text-slate-500`},vr={class:`mt-4 flex items-center text-xs font-medium text-slate-400 transition-colors group-hover:text-slate-600`},yr={class:`w-full max-w-lg rounded-3xl border border-slate-200/60 bg-white shadow-2xl`},br={class:`flex items-start justify-between border-b border-slate-100 px-6 pt-6 pb-4`},xr={class:`text-xl font-bold text-[#1a1a1a]`},Sr={class:`mt-1.5 text-base text-[#666]`},Cr={class:`max-h-80 space-y-3 overflow-auto px-6 py-5`},wr={key:0,class:`rounded-lg border border-dashed border-slate-200 bg-slate-50 px-3 py-5 text-center text-sm text-slate-500`},Tr=[`disabled`,`onClick`],Er={class:`min-w-0 flex-1`},Dr={class:`text-base font-medium text-[#1a1a1a]`},Or={key:0,class:`ml-1 text-sm text-[#888]`},kr={class:`mt-1 text-sm text-[#888]`},Ar={class:`shrink-0 pl-4 text-sm text-[#888]`},jr={class:`flex items-center justify-end gap-3 border-t border-slate-100 px-6 pt-4 pb-6`},Mr={class:`w-full max-w-lg rounded-3xl border border-slate-200/60 bg-white shadow-2xl`},Nr={class:`flex items-start justify-between border-b border-slate-100 px-6 pt-6 pb-4`},Pr={class:`text-xl font-bold text-[#1a1a1a]`},Fr={class:`mt-1.5 text-base text-[#666]`},Ir={class:`px-6 pt-5 pb-4`},Lr={class:`mb-3 text-base font-semibold text-[#1a1a1a]`},Rr={class:`space-y-3`},zr=[`onClick`],Br={class:`text-base`},Vr={class:`flex items-center justify-end gap-3 border-t border-slate-100 px-6 pt-4 pb-6`},Hr=[`disabled`],Ur={class:`w-full max-w-sm rounded-3xl border border-slate-200/60 bg-white shadow-2xl`},Wr={class:`flex items-center justify-end px-6 pt-4 pb-6`},Gr={class:`w-full max-w-md rounded-xl border bg-background shadow-2xl`},Kr={class:`px-5 py-4`},qr={class:`text-base font-semibold text-foreground`},Jr={class:`mt-1 text-sm text-muted-foreground`},Yr={class:`flex items-center justify-end gap-2 px-5 py-4`},Xr=`xm-base-info-v1`,Zr=`xm-consult-category-factor-v1`,Qr=`xm-major-factor-v1`,$r=`xm-info-v3`,ei=`https://www.lianzhong.com.cn/file`,ti=en(fe({__name:`HomeEntryView`,setup(e){let t=()=>Re(),n=un(),r=Ue(),i=on(),{t:a,locale:o}=ge(),s=Y(!1),c=Y(!1),l=Y(String(Ht[0]?.id||``)),u=Y(!1),d=Y(String(Ht[0]?.id||``)),f=Y(Me);Y(!1);let p=Y(null),m=Y(!1),h=Y(null),g=Y(``),_=Y(!1),v=Y([]),y=Y(!1),b=Y(!1),x=Y([]),S=null,C=H(()=>o.value===`en-US`?`EN`:`中`),w=H(()=>({backgroundImage:`url("${new URL(`background.png`,window.location.href).toString()}")`})),T=()=>{let e=o.value===`en-US`?`zh-CN`:`en-US`;i.setLocale(e)},E=()=>{window.open(ei,`_blank`,`noopener`)},D=e=>{if(String(e||``).trim()===`default`)return a(`xmInfo.defaultProjectName`)},O=e=>{try{let t=Te(e,{forceHome:!1,newProject:!1});window.history.replaceState({},``,t)}catch{Be(e)}},k=(e,n)=>{let r=String(e||``).trim();if(!r)return!1;ye(n);let i=t();return n===`project`&&i!==r?(window.location.href=Te(r,{forceHome:!1,newProject:!1}),!1):(O(r),!0)},A=()=>{let e=new Date;return`${String(e.getFullYear())}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`},j=e=>{let t=new Date(e);if(Number.isNaN(t.getTime()))return`-`;let n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}`},M=async()=>{let e=await r.getItem(Xr);l.value=typeof e?.projectIndustry==`string`&&e.projectIndustry.trim()?e.projectIndustry.trim():String(Ht[0]?.id||``)},N=async()=>{s.value=!0},L=e=>{x.value=Array.from(Hn(e))},B=e=>{let t=String(e||``).trim();return t?x.value.includes(t):!1},re=async e=>{e?.showLoading!==!1&&(y.value=!0);try{let e=Ge().filter(e=>e.id!==ke).sort((e,t)=>{let n=new Date(e.updatedAt).getTime(),r=new Date(t.updatedAt).getTime();return(Number.isFinite(r)?r:0)-(Number.isFinite(n)?n:0)});v.value=e.map(e=>({id:e.id,name:e.name,updatedAt:e.updatedAt})),b.value=e.length>0,L(e.map(e=>e.id))}finally{e?.showLoading!==!1&&(y.value=!1)}},ie=()=>{S!=null&&(clearInterval(S),S=null)},ae=()=>{ie(),S=setInterval(()=>{_.value&&re({showLoading:!1})},3e3)},oe=async()=>{s.value=!1,_.value=!0,await re(),ae()},se=()=>{_.value=!1,ie()},ce=e=>{let t=String(e||``).trim();!t||B(t)||(He(t,D(t)),k(t,`project`)&&(n.enterWorkspace({id:xe,title:a(`home.projectCalcTab`),componentName:`ProjectCalcView`}),n.hasCompletedSetup=!0,se()))},Z=()=>{s.value=!1},le=async()=>{let e=l.value.trim();if(e){u.value=!0;try{let t=Ye(a(`xmInfo.defaultProjectName`)),n=En(t.id);await n.setItem(Xr,{projectIndustry:e,projectName:a(`xmInfo.defaultProjectName`),preparedBy:``,reviewedBy:``,preparedCompany:``,preparedDate:A()}),await Cn(n,e,Zr,Qr),await wn(n,e,$r),ye(`project`),window.location.href=Te(t.id,{forceHome:!1,newProject:!1})}finally{u.value=!1,s.value=!1}}},ue=async()=>{let[e,t]=await Promise.all([r.getItem(Le),r.getItem(Fe)]);d.value=typeof e?.projectIndustry==`string`&&e.projectIndustry.trim()?e.projectIndustry.trim():String(Ht[0]?.id||``),f.value=typeof t?.name==`string`&&t.name.trim()?t.name.trim():Me},de=e=>{let t=e.target,n=t.files?.[0];n&&(h.value=n,g.value=n.name,m.value=!0,t.value=``)},fe=()=>{p.value?.click()},me=()=>{m.value=!1,h.value=null,g.value=``},$=async()=>{let e=h.value;if(!e)return;await Se(e,{skipWorkspaceConfirm:!0});let t=Ye(a(`xmInfo.defaultProjectName`));ye(`project`),window.location.href=Te(t.id,{forceHome:!1,newProject:!1}),me()},he=()=>{_.value&&re({showLoading:!1})},_e=()=>{document.visibilityState===`visible`&&he()};return ne(()=>{re(),M(),ue(),window.addEventListener(`focus`,he),document.addEventListener(`visibilitychange`,_e);try{let e=new URL(window.location.href);if(e.searchParams.get(`newProject`)===`1`){let n=t();He(n,D(n)),e.searchParams.get(`openProjectDialog`)!==`0`&&N(),e.searchParams.delete(Pe),e.searchParams.delete(Oe),e.searchParams.delete(je),window.history.replaceState({},``,`${e.pathname}${e.search}${e.hash}`)}}catch{}}),F(()=>{ie(),window.removeEventListener(`focus`,he),document.removeEventListener(`visibilitychange`,_e)}),(e,t)=>(I(),U(te,null,[q(`input`,{ref_key:`homeImportInputRef`,ref:p,type:`file`,accept:`.zw`,class:`sr-only`,onChange:de},null,544),q(`div`,Un,[q(`div`,{class:`pointer-events-none absolute inset-0 bg-cover bg-center bg-no-repeat`,style:ee(w.value)},null,4),t[14]||=q(`div`,{class:`pointer-events-none absolute inset-0 bg-white/78`},null,-1),t[15]||=q(`div`,{class:`pointer-events-none absolute inset-0 bg-[radial-gradient(ellipse_80%_60%_at_50%_-10%,rgba(59,130,246,0.08),transparent_70%)]`},null,-1),q(`div`,Wn,[q(`div`,Gn,[q(`button`,{type:`button`,class:`inline-flex h-8 cursor-pointer items-center justify-center gap-1.5 rounded-full border border-slate-200/80 bg-white/85 px-3 text-xs text-slate-600 shadow-sm backdrop-blur transition hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-200`,onClick:T},[P(X(kt),{class:`h-3.5 w-3.5`}),q(`span`,null,z(C.value),1)])]),q(`div`,Kn,[q(`h1`,qn,z(X(a)(`home.title`)),1),q(`p`,Jn,z(X(a)(`home.subtitle`)),1)]),q(`div`,Yn,[q(`section`,Xn,[t[5]||=q(`div`,{class:`pointer-events-none absolute -right-20 -top-16 h-56 w-56 rounded-full bg-white/12 blur-2xl`},null,-1),t[6]||=q(`div`,{class:`pointer-events-none absolute -bottom-10 -left-10 h-40 w-40 rounded-full bg-white/8 blur-3xl`},null,-1),(I(),U(te,null,W(10,e=>q(`div`,{key:e,class:pe(`home-hero-meteor home-hero-meteor--${e}`)},null,2)),64)),q(`div`,Zn,[P(X(bt),{class:`h-5 w-5`})]),q(`h2`,Qn,z(X(a)(`home.cards.heroTitle`)),1),q(`p`,$n,z(X(a)(`home.cards.heroSubTitle`)),1),t[7]||=q(`div`,{class:`relative mt-6 h-px bg-white/20`},null,-1),q(`p`,er,z(X(a)(`home.cards.heroDesc`)),1)]),q(`article`,{role:`button`,tabindex:`0`,class:`home-card-base home-entry-item home-entry-item--2 group flex cursor-pointer flex-col justify-between rounded-xl border border-slate-200/80 bg-white/95 px-5 py-5 shadow-[0_4px_20px_rgba(15,23,42,0.06)] backdrop-blur-sm transition-all duration-200 hover:-translate-y-0.5 hover:shadow-[0_12px_32px_rgba(15,23,42,0.12)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-200`,onClick:N,onKeydown:[K(R(N,[`prevent`]),[`enter`]),K(R(N,[`prevent`]),[`space`])]},[q(`div`,null,[q(`div`,nr,[P(X(bt),{class:`h-5 w-5`})]),q(`h3`,rr,z(X(a)(`home.cards.projectBudget`)),1),q(`p`,ir,z(X(a)(`home.cards.projectBudgetDesc`)),1)]),q(`div`,ar,[b.value?(I(),U(`button`,{key:0,type:`button`,class:`cursor-pointer rounded-md border border-slate-200 px-3 py-1.5 text-xs font-medium text-slate-600 transition hover:border-slate-300 hover:bg-slate-50 hover:text-slate-700`,onClick:R(oe,[`stop`])},z(X(a)(`home.cards.pickExisting`)),1)):V(``,!0),q(`button`,{type:`button`,class:`cursor-pointer rounded-md bg-blue-600 px-3 py-1.5 text-xs font-medium text-white transition hover:bg-blue-700`,onClick:R(N,[`stop`])},[q(`span`,or,[G(z(X(a)(`home.cards.enter`))+` `,1),t[8]||=q(`svg`,{class:`h-3.5 w-3.5`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[q(`path`,{d:`M5 12h14`}),q(`path`,{d:`m12 5 7 7-7 7`})],-1)])])])],40,tr),q(`article`,{role:`button`,tabindex:`0`,class:`home-card-base home-entry-item home-entry-item--3 group flex cursor-pointer flex-col justify-between rounded-xl border border-slate-200/80 bg-white/95 px-5 py-5 shadow-[0_4px_20px_rgba(15,23,42,0.06)] backdrop-blur-sm transition-all duration-200 hover:-translate-y-0.5 hover:shadow-[0_12px_32px_rgba(15,23,42,0.12)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-200`,onClick:t[0]||=e=>c.value=!0,onKeydown:[t[1]||=K(R(e=>c.value=!0,[`prevent`]),[`enter`]),t[2]||=K(R(e=>c.value=!0,[`prevent`]),[`space`])]},[q(`div`,null,[q(`div`,sr,[P(X(Bt),{class:`h-5 w-5`})]),q(`h3`,cr,z(X(a)(`home.cards.quickCalc`)),1),q(`p`,lr,z(X(a)(`home.cards.quickCalcDesc`)),1)]),q(`div`,ur,[q(`span`,null,z(X(a)(`home.cards.developing`)),1),t[9]||=q(`svg`,{class:`ml-1 h-3.5 w-3.5 transition-transform group-hover:translate-x-0.5`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[q(`path`,{d:`M5 12h14`}),q(`path`,{d:`m12 5 7 7-7 7`})],-1)])],32),q(`article`,{role:`button`,tabindex:`0`,class:`home-card-base home-entry-item home-entry-item--4 group flex cursor-pointer flex-col justify-between rounded-xl border border-slate-200/80 bg-white/95 px-5 py-5 shadow-[0_4px_20px_rgba(15,23,42,0.06)] backdrop-blur-sm transition-all duration-200 hover:-translate-y-0.5 hover:shadow-[0_12px_32px_rgba(15,23,42,0.12)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-200`,onClick:fe,onKeydown:[K(R(fe,[`prevent`]),[`enter`]),K(R(fe,[`prevent`]),[`space`])]},[q(`div`,null,[t[10]||=q(`div`,{class:`inline-flex h-11 w-11 items-center justify-center rounded-xl border border-emerald-100 bg-emerald-50/80 text-emerald-600 shadow-sm transition-transform duration-200 group-hover:scale-105`},[q(`svg`,{viewBox:`0 0 1024 1024`,class:`h-5 w-5`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[q(`path`,{fill:`currentColor`,d:`M154.579478 1001.73913v-332.844521h89.043479V912.695652H912.695652V369.530435h-234.896695V111.304348H243.890087v349.184h-89.043478V22.26087h585.683478l261.431652 263.924869V1001.73913z m612.173913-721.252173h104.314435l-104.314435-105.293914z m-416.857043 411.469913l79.026087-79.026087H22.26087v-89.043479h406.661565L349.94087 444.861217l41.138087-41.22713 123.592347 123.592348 41.227131 41.182608-41.227131 41.138087-123.592347 123.592348z m123.013565-123.013566l0.489739-0.534261-0.489739-0.489739z`})])],-1),q(`h3`,fr,z(X(a)(`home.cards.importData`)),1),q(`p`,pr,z(X(a)(`home.cards.importDataDesc`)),1)]),q(`div`,mr,[q(`span`,null,z(X(a)(`home.cards.pickFile`)),1),t[11]||=q(`svg`,{class:`ml-1 h-3.5 w-3.5 transition-transform group-hover:translate-x-0.5`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[q(`path`,{d:`M5 12h14`}),q(`path`,{d:`m12 5 7 7-7 7`})],-1)])],40,dr),q(`article`,{role:`button`,tabindex:`0`,class:`home-card-base home-entry-item home-entry-item--5 group flex cursor-pointer flex-col justify-between rounded-xl border border-slate-200/80 bg-white/95 px-5 py-5 shadow-[0_4px_20px_rgba(15,23,42,0.06)] backdrop-blur-sm transition-all duration-200 hover:-translate-y-0.5 hover:shadow-[0_12px_32px_rgba(15,23,42,0.12)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-200`,onClick:E,onKeydown:[K(R(E,[`prevent`]),[`enter`]),K(R(E,[`prevent`]),[`space`])]},[q(`div`,null,[t[12]||=q(`div`,{class:`inline-flex h-11 w-11 items-center justify-center rounded-xl border border-lime-100 bg-lime-50/80 shadow-sm transition-transform duration-200 group-hover:scale-105`},[q(`svg`,{viewBox:`0 0 1024 1024`,class:`h-6 w-6`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[q(`path`,{d:`M271.146667 128h-85.333334a64 64 0 0 0-64 64v640a64 64 0 0 0 64 64h85.333334a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64z m21.333333 704a21.333333 21.333333 0 0 1-21.333333 21.333333h-85.333334a21.333333 21.333333 0 0 1-21.333333-21.333333V320h128z m0-554.666667h-128V192a21.333333 21.333333 0 0 1 21.333333-21.333333h85.333334a21.333333 21.333333 0 0 1 21.333333 21.333333zM901.12 808.533333L789.333333 178.346667a64 64 0 0 0-74.026666-51.84l-84.053334 14.72a64 64 0 0 0-44.16 31.146666A64 64 0 0 0 527.146667 128h-85.333334a64 64 0 0 0-64 64v640a64 64 0 0 0 64 64h85.333334a64 64 0 0 0 64-64V279.253333l99.84 566.4a64 64 0 0 0 74.24 51.84l84.053333-14.72a64 64 0 0 0 51.84-74.24zM548.48 832a21.333333 21.333333 0 0 1-21.333333 21.333333h-85.333334a21.333333 21.333333 0 0 1-21.333333-21.333333V320h128z m0-554.666667h-128V192a21.333333 21.333333 0 0 1 21.333333-21.333333h85.333334a21.333333 21.333333 0 0 1 21.333333 21.333333z m73.386667-69.333333A21.333333 21.333333 0 0 1 640 183.253333l83.2-14.72a21.333333 21.333333 0 0 1 24.746667 17.28l14.933333 84.053334-126.08 21.333333z m219.946666 632.746667l-84.053333 14.72a21.333333 21.333333 0 0 1-24.746667-17.28L644.266667 334.08l125.866666-21.333333 88.96 504.106666a21.333333 21.333333 0 0 1-17.28 23.893334z`,fill:`#e0db84`})])],-1),q(`h3`,gr,z(X(a)(`home.cards.relatedFiles`)),1),q(`p`,_r,z(X(a)(`home.cards.relatedFilesDesc`)),1)]),q(`div`,vr,[q(`span`,null,z(X(a)(`home.cards.openRelatedFiles`)),1),t[13]||=q(`svg`,{class:`ml-1 h-3.5 w-3.5 transition-transform group-hover:translate-x-0.5`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[q(`path`,{d:`M5 12h14`}),q(`path`,{d:`m12 5 7 7-7 7`})],-1)])],40,hr)])])]),_.value?(I(),U(`div`,{key:0,class:`fixed inset-0 z-[90] flex items-center justify-center bg-black/45 p-4`,onClick:R(se,[`self`])},[q(`div`,yr,[q(`div`,br,[q(`div`,null,[q(`h3`,xr,z(X(a)(`home.dialog.chooseExistingProject`)),1),q(`p`,Sr,z(X(a)(`home.dialog.chooseExistingProjectDesc`)),1)]),q(`button`,{type:`button`,class:`flex h-8 w-8 items-center justify-center rounded-full text-slate-400 transition hover:bg-slate-100 hover:text-slate-600`,onClick:se},[P(X(It),{class:`h-5 w-5`})])]),q(`div`,Cr,[!y.value&&v.value.length===0?(I(),U(`div`,wr,z(X(a)(`home.dialog.noProjectYet`)),1)):V(``,!0),(I(!0),U(te,null,W(v.value,e=>(I(),U(`button`,{key:e.id,type:`button`,disabled:B(e.id),class:`flex w-full items-center justify-between rounded-xl border border-slate-200 bg-white px-4 py-3.5 text-left transition hover:border-slate-300 hover:bg-slate-50 disabled:cursor-not-allowed disabled:opacity-60`,onClick:t=>ce(e.id)},[q(`div`,Er,[q(`div`,Dr,[G(z(e.name)+` `,1),B(e.id)?(I(),U(`span`,Or,z(X(a)(`tab.toolbar.opened`)),1)):V(``,!0)]),q(`div`,kr,z(e.id),1)]),q(`div`,Ar,z(X(a)(`tab.toolbar.lastEdited`,{time:j(e.updatedAt)})),1)],8,Tr))),128))]),q(`div`,jr,[q(`button`,{type:`button`,class:`cursor-pointer rounded-lg border border-slate-200 bg-white px-5 py-2.5 text-base font-medium text-[#666] transition hover:border-slate-300 hover:bg-slate-50`,onClick:se},z(X(a)(`common.cancel`)),1)])])])):V(``,!0),s.value?(I(),U(`div`,{key:1,class:`fixed inset-0 z-[90] flex items-center justify-center bg-black/45 p-4`,onClick:R(Z,[`self`])},[q(`div`,Mr,[q(`div`,Nr,[q(`div`,null,[q(`h3`,Pr,z(X(a)(`home.dialog.newProject`)),1),q(`p`,Fr,z(X(a)(`home.dialog.chooseIndustryDesc`)),1)]),q(`button`,{type:`button`,class:`flex h-8 w-8 items-center justify-center rounded-full text-slate-400 transition hover:bg-slate-100 hover:text-slate-600`,onClick:Z},[P(X(It),{class:`h-5 w-5`})])]),q(`div`,Ir,[q(`h4`,Lr,z(X(a)(`home.dialog.industry`)),1),q(`div`,Rr,[(I(!0),U(te,null,W(X(Ht),e=>(I(),U(`button`,{key:`project-${e.id}`,type:`button`,class:pe([`flex w-full items-center justify-between rounded-xl border px-4 py-3.5 text-left transition`,l.value===String(e.id)?`border-[#1a1a1a] bg-white text-[#1a1a1a] shadow-sm`:`border-slate-200 bg-white text-[#1a1a1a] hover:border-slate-300`]),onClick:t=>l.value=String(e.id)},[q(`span`,Br,z(X(Ut)(e.id,X(o))),1),q(`div`,{class:pe([`flex h-5 w-5 items-center justify-center rounded-md border transition`,l.value===String(e.id)?`border-[#1a1a1a] bg-[#1a1a1a] text-white`:`border-slate-300 bg-white`])},[l.value===String(e.id)?(I(),J(X(wt),{key:0,class:`h-3.5 w-3.5`})):V(``,!0)],2)],10,zr))),128))])]),q(`div`,Vr,[q(`button`,{type:`button`,class:`cursor-pointer rounded-lg border border-slate-200 bg-white px-5 py-2.5 text-base font-medium text-[#666] transition hover:border-slate-300 hover:bg-slate-50`,onClick:Z},z(X(a)(`common.cancel`)),1),b.value?(I(),U(`button`,{key:0,type:`button`,class:`cursor-pointer rounded-lg border border-slate-200 bg-white px-5 py-2.5 text-base font-medium text-[#666] transition hover:border-slate-300 hover:bg-slate-50`,onClick:oe},z(X(a)(`home.cards.pickExisting`)),1)):V(``,!0),q(`button`,{type:`button`,disabled:u.value||!l.value,class:`cursor-pointer rounded-lg bg-[#1a1a1a] px-5 py-2.5 text-base font-medium text-white transition hover:bg-[#2a2a2a] disabled:cursor-not-allowed disabled:opacity-50`,onClick:le},z(u.value?X(a)(`home.dialog.entering`):X(a)(`home.dialog.enterProjectCalc`)),9,Hr)])])])):V(``,!0),c.value?(I(),U(`div`,{key:2,class:`fixed inset-0 z-[90] flex items-center justify-center bg-black/45 p-4`,onClick:t[4]||=R(e=>c.value=!1,[`self`])},[q(`div`,Ur,[t[16]||=q(`div`,{class:`border-b border-slate-100 px-6 pt-6 pb-4`},[q(`h3`,{class:`text-xl font-bold text-[#1a1a1a]`},`提示`),q(`p`,{class:`mt-1.5 text-base text-[#666]`},`功能正在开发中`)],-1),q(`div`,Wr,[q(`button`,{type:`button`,class:`cursor-pointer rounded-lg bg-[#1a1a1a] px-5 py-2.5 text-base font-medium text-white transition hover:bg-[#2a2a2a]`,onClick:t[3]||=e=>c.value=!1},` 关闭 `)])])])):V(``,!0),m.value?(I(),U(`div`,{key:3,class:`fixed inset-0 z-[90] flex items-center justify-center bg-black/45 p-4`,onClick:R(me,[`self`])},[q(`div`,Gr,[q(`div`,Kr,[q(`h3`,qr,z(X(a)(`home.dialog.confirmImport`)),1),q(`p`,Jr,z(X(a)(`home.dialog.confirmImportDesc`,{file:g.value||X(a)(`home.cards.pickFile`)})),1)]),q(`div`,Yr,[P(X(mn),{variant:`outline`,onClick:me},{default:Q(()=>[G(z(X(a)(`common.cancel`)),1)]),_:1}),P(X(mn),{variant:`destructive`,onClick:$},{default:Q(()=>[G(z(X(a)(`home.dialog.confirmImportAction`)),1)]),_:1})])])])):V(``,!0)],64))}}),[[`__scopeId`,`data-v-70c281cf`]]),ni=i({MultiDrag:()=>ma,Sortable:()=>Ji,Swap:()=>fa,default:()=>Ji});function ri(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ii(e){for(var t=1;t=0)&&(n[i]=e[i]);return n}function li(e,t){if(e==null)return{};var n=ci(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function ui(e){return di(e)||fi(e)||pi(e)||hi()}function di(e){if(Array.isArray(e))return mi(e)}function fi(e){if(typeof Symbol<`u`&&e[Symbol.iterator]!=null||e[`@@iterator`]!=null)return Array.from(e)}function pi(e,t){if(e){if(typeof e==`string`)return mi(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return mi(e,t)}}function mi(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n`&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch{return!1}return!1}}function bi(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function xi(e,t,n,r){if(e){n||=document;do{if(t!=null&&(t[0]===`>`?e.parentNode===n&&yi(e,t):yi(e,t))||r&&e===n)return e;if(e===n)break}while(e=bi(e))}return null}function Si(e,t,n){e&&t&&(e.classList?e.classList[n?`add`:`remove`](t):e.className=((` `+e.className+` `).replace(Ea,` `).replace(` `+t+` `,` `)+(n?` `+t:``)).replace(Ea,` `))}function Ci(e,t,n){var r=e&&e.style;if(r){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,``):e.currentStyle&&(n=e.currentStyle),t===void 0?n:n[t];!(t in r)&&t.indexOf(`webkit`)===-1&&(t=`-webkit-`+t),r[t]=n+(typeof n==`string`?``:`px`)}}function wi(e,t){var n=``;if(typeof e==`string`)n=e;else do{var r=Ci(e,`transform`);r&&r!==`none`&&(n=r+` `+n)}while(!t&&(e=e.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function Ti(e,t,n){if(e){var r=e.getElementsByTagName(t),i=0,a=r.length;if(n)for(;i=a:i<=a,!o)return r;if(r===Ei())break;r=Pi(r,!1)}return!1}function ki(e,t,n,r){for(var i=0,a=0,o=e.children;ali`:`>*`,swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return yo(e,this.options)},ghostClass:`sortable-ghost`,chosenClass:`sortable-chosen`,dragClass:`sortable-drag`,ignore:`a, img`,filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(e,t){e.setData(`Text`,t.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:`data-id`,delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:`sortable-fallback`,fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:Ji.supportPointer!==!1&&`PointerEvent`in window&&!Sa,emptyInsertThreshold:5};for(var r in ja.initializePlugins(this,e,n),n)!(r in t)&&(t[r]=n[r]);for(var i in So(t),this)i.charAt(0)===`_`&&typeof this[i]==`function`&&(this[i]=this[i].bind(this));this.nativeDraggable=t.forceFallback?!1:_o,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?_i(e,`pointerdown`,this._onTapStart):(_i(e,`mousedown`,this._onTapStart),_i(e,`touchstart`,this._onTapStart)),this.nativeDraggable&&(_i(e,`dragover`,this),_i(e,`dragenter`,this)),Xa.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),si(this,Ui())}function Yi(e){e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),e.cancelable&&e.preventDefault()}function Xi(e,t,n,r,i,a,o,s){var c,l=e[Oa],u=l.options.onMove,d;return window.CustomEvent&&!ya&&!ba?c=new CustomEvent(`move`,{bubbles:!0,cancelable:!0}):(c=document.createEvent(`Event`),c.initEvent(`move`,!0,!0)),c.to=t,c.from=e,c.dragged=n,c.draggedRect=r,c.related=i||t,c.relatedRect=a||Di(t),c.willInsertAfter=s,c.originalEvent=o,e.dispatchEvent(c),u&&(d=u.call(l,c,o)),d}function Zi(e){e.draggable=!1}function Qi(){fo=!1}function $i(e,t,n){var r=Di(ki(n.el,0,n.options,!0)),i=10;return t?e.clientXr.right+i||e.clientX<=r.right&&e.clientY>r.bottom&&e.clientX>=r.left:e.clientX>r.right&&e.clientY>r.top||e.clientX<=r.right&&e.clientY>r.bottom+i}function ta(e,t,n,r,i,a,o,s){var c=r?e.clientY:e.clientX,l=r?n.height:n.width,u=r?n.top:n.left,d=r?n.bottom:n.right,f=!1;if(!o){if(s&&cou+l*a/2:cd-co)return-ao}else if(c>u+l*(1-i)/2&&cd-l*a/2)?c>u+l/2?1:-1:0}function na(e){return ji(Pa)1&&(Ro.forEach(function(e){r.addAnimationState({target:e,rect:Uo?Di(e):i}),Hi(e),e.fromRect=i,t.removeAnimationState(e)}),Uo=!1,ha(!this.options.removeCloneOnHide,n))},dragOverCompleted:function(e){var t=e.sortable,n=e.isOwner,r=e.insertion,i=e.activeSortable,a=e.parentEl,o=e.putSortable,s=this.options;if(r){if(n&&i._hideClone(),Ho=!1,s.animation&&Ro.length>1&&(Uo||!n&&!i.options.sort&&!o)){var c=Di(Go,!1,!0,!0);Ro.forEach(function(e){e!==Go&&(Vi(e,c),a.appendChild(e))}),Uo=!0}if(!n)if(Uo||_a(),Ro.length>1){var l=qo;i._showClone(t),i.options.animation&&!qo&&l&&zo.forEach(function(e){i.addAnimationState({target:e,rect:Ko}),e.fromRect=Ko,e.thisAnimationDuration=null})}else i._showClone(t)}},dragOverAnimationCapture:function(e){var t=e.dragRect,n=e.isOwner,r=e.activeSortable;if(Ro.forEach(function(e){e.thisAnimationDuration=null}),r.options.animation&&!n&&r.multiDrag.isMultiDrag){Ko=si({},t);var i=wi(Go,!0);Ko.top-=i.f,Ko.left-=i.e}},dragOverAnimationComplete:function(){Uo&&(Uo=!1,_a())},drop:function(e){var t=e.originalEvent,n=e.rootEl,r=e.parentEl,i=e.sortable,a=e.dispatchSortableEvent,o=e.oldIndex,s=e.putSortable,c=s||this.sortable;if(t){var l=this.options,u=r.children;if(!Wo)if(l.multiDragKey&&!this.multiDragKeyDown&&this._deselectMultiDrag(),Si(Go,l.selectedClass,!~Ro.indexOf(Go)),~Ro.indexOf(Go))Ro.splice(Ro.indexOf(Go),1),Bo=null,Ki({sortable:i,rootEl:n,name:`deselect`,targetEl:Go,originalEvt:t});else{if(Ro.push(Go),Ki({sortable:i,rootEl:n,name:`select`,targetEl:Go,originalEvt:t}),t.shiftKey&&Bo&&i.el.contains(Bo)){var d=ji(Bo),f=ji(Go);if(~d&&~f&&d!==f){var p,m;for(f>d?(m=d,p=f):(m=f,p=d+1);m1){var h=Di(Go),g=ji(Go,`:not(.`+this.options.selectedClass+`)`);if(!Ho&&l.animation&&(Go.thisAnimationDuration=null),c.captureAnimationState(),!Ho&&(l.animation&&(Go.fromRect=h,Ro.forEach(function(e){if(e.thisAnimationDuration=null,e!==Go){var t=Uo?Di(e):h;e.fromRect=t,c.addAnimationState({target:e,rect:t})}})),_a(),Ro.forEach(function(e){u[g]?r.insertBefore(e,u[g]):r.appendChild(e),g++}),o===ji(Go))){var _=!1;Ro.forEach(function(e){if(e.sortableIndex!==ji(e)){_=!0;return}}),_&&a(`update`)}Ro.forEach(function(e){Hi(e)}),c.animateAll()}Vo=c}(n===r||s&&s.lastPutMode!==`clone`)&&zo.forEach(function(e){e.parentNode&&e.parentNode.removeChild(e)})}},nullingGlobal:function(){this.isMultiDrag=Wo=!1,zo.length=0},destroyGlobal:function(){this._deselectMultiDrag(),vi(document,`pointerup`,this._deselectMultiDrag),vi(document,`mouseup`,this._deselectMultiDrag),vi(document,`touchend`,this._deselectMultiDrag),vi(document,`keydown`,this._checkKeyDown),vi(document,`keyup`,this._checkKeyUp)},_deselectMultiDrag:function(e){if(!(Wo!==void 0&&Wo)&&Vo===this.sortable&&!(e&&xi(e.target,this.options.draggable,this.sortable.el,!1))&&!(e&&e.button!==0))for(;Ro.length;){var t=Ro[0];Si(t,this.options.selectedClass,!1),Ro.shift(),Ki({sortable:this.sortable,rootEl:this.sortable.el,name:`deselect`,targetEl:t,originalEvt:e})}},_checkKeyDown:function(e){e.key===this.options.multiDragKey&&(this.multiDragKeyDown=!0)},_checkKeyUp:function(e){e.key===this.options.multiDragKey&&(this.multiDragKeyDown=!1)}},si(e,{pluginName:`multiDrag`,utils:{select:function(e){var t=e.parentNode[Oa];!t||!t.options.multiDrag||~Ro.indexOf(e)||(Vo&&Vo!==t&&(Vo.multiDrag._deselectMultiDrag(),Vo=t),Si(e,t.options.selectedClass,!0),Ro.push(e))},deselect:function(e){var t=e.parentNode[Oa],n=Ro.indexOf(e);!t||!t.options.multiDrag||!~n||(Si(e,t.options.selectedClass,!1),Ro.splice(n,1))}},eventProperties:function(){var e=this,t=[],n=[];return Ro.forEach(function(r){t.push({multiDragElement:r,index:r.sortableIndex});var i=Uo&&r!==Go?-1:Uo?ji(r,`:not(.`+e.options.selectedClass+`)`):ji(r);n.push({multiDragElement:r,index:i})}),{items:ui(Ro),clones:[].concat(zo),oldIndicies:t,newIndicies:n}},optionListeners:{multiDragKey:function(e){return e=e.toLowerCase(),e===`ctrl`?e=`Control`:e.length>1&&(e=e.charAt(0).toUpperCase()+e.substr(1)),e}}})}function ha(e,t){Ro.forEach(function(n,r){var i=t.children[n.sortableIndex+(e?Number(r):0)];i?t.insertBefore(n,i):t.appendChild(n)})}function ga(e,t){zo.forEach(function(n,r){var i=t.children[n.sortableIndex+(e?Number(r):0)];i?t.insertBefore(n,i):t.appendChild(n)})}function _a(){Ro.forEach(function(e){e!==Go&&e.parentNode&&e.parentNode.removeChild(e)})}var va,ya,ba,xa,Sa,Ca,wa,Ta,Ea,Da,Oa,ka,Aa,ja,Ma,Na,Pa,Fa,Ia,La,Ra,za,Ba,Va,Ha,Ua,Wa,Ga,Ka,qa,Ja,Ya,Xa,Za,Qa,$a,eo,to,no,ro,io,ao,oo,so,co,lo,uo,fo,po,mo,ho,go,_o,vo,yo,bo,xo,So,Co,wo,To,Eo,Do,Oo,ko,Ao,jo,Mo,No,Po,Fo,Io,Lo,Ro,zo,Bo,Vo,Ho,Uo,Wo,Go,Ko,qo,Jo=n((()=>{va=`1.14.0`,ya=gi(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),ba=gi(/Edge/i),xa=gi(/firefox/i),Sa=gi(/safari/i)&&!gi(/chrome/i)&&!gi(/android/i),Ca=gi(/iP(ad|od|hone)/i),wa=gi(/chrome/i)&&gi(/android/i),Ta={capture:!1,passive:!1},Ea=/\s+/g,Oa=`Sortable`+new Date().getTime(),ka=[],Aa={initializeByDefault:!0},ja={mount:function(e){for(var t in Aa)Aa.hasOwnProperty(t)&&!(t in e)&&(e[t]=Aa[t]);ka.forEach(function(t){if(t.pluginName===e.pluginName)throw`Sortable: Cannot mount plugin ${e.pluginName} more than once`}),ka.push(e)},pluginEvent:function(e,t,n){var r=this;this.eventCanceled=!1,n.cancel=function(){r.eventCanceled=!0};var i=e+`Global`;ka.forEach(function(r){t[r.pluginName]&&(t[r.pluginName][i]&&t[r.pluginName][i](ii({sortable:t},n)),t.options[r.pluginName]&&t[r.pluginName][e]&&t[r.pluginName][e](ii({sortable:t},n)))})},initializePlugins:function(e,t,n,r){for(var i in ka.forEach(function(r){var i=r.pluginName;if(!(!e.options[i]&&!r.initializeByDefault)){var a=new r(e,t,e.options);a.sortable=e,a.options=e.options,e[i]=a,si(n,a.defaults)}}),e.options)if(e.options.hasOwnProperty(i)){var a=this.modifyOption(e,i,e.options[i]);a!==void 0&&(e.options[i]=a)}},getEventProperties:function(e,t){var n={};return ka.forEach(function(r){typeof r.eventProperties==`function`&&si(n,r.eventProperties.call(t[r.pluginName],e))}),n},modifyOption:function(e,t,n){var r;return ka.forEach(function(i){e[i.pluginName]&&i.optionListeners&&typeof i.optionListeners[t]==`function`&&(r=i.optionListeners[t].call(e[i.pluginName],n))}),r}},Ma=[`evt`],Na=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.evt,i=li(n,Ma);ja.pluginEvent.bind(Ji)(e,t,ii({dragEl:Pa,parentEl:Fa,ghostEl:Ia,rootEl:La,nextEl:Ra,lastDownEl:za,cloneEl:Ba,cloneHidden:Va,dragStarted:ro,putSortable:qa,activeSortable:Ji.active,originalEvent:r,oldIndex:Ha,oldDraggableIndex:Wa,newIndex:Ua,newDraggableIndex:Ga,hideGhostForTarget:Co,unhideGhostForTarget:wo,cloneNowHidden:function(){Va=!0},cloneNowShown:function(){Va=!1},dispatchSortableEvent:function(e){qi({sortable:t,name:e,originalEvent:r})}},i))},Ja=!1,Ya=!1,Xa=[],oo=!1,so=!1,uo=[],fo=!1,po=[],mo=typeof document<`u`,ho=Ca,go=ba||ya?`cssFloat`:`float`,_o=mo&&!wa&&!Ca&&`draggable`in document.createElement(`div`),vo=function(){if(mo){if(ya)return!1;var e=document.createElement(`x`);return e.style.cssText=`pointer-events:auto`,e.style.pointerEvents===`auto`}}(),yo=function(e,t){var n=Ci(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=ki(e,0,t),a=ki(e,1,t),o=i&&Ci(i),s=a&&Ci(a),c=o&&parseInt(o.marginLeft)+parseInt(o.marginRight)+Di(i).width,l=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+Di(a).width;if(n.display===`flex`)return n.flexDirection===`column`||n.flexDirection===`column-reverse`?`vertical`:`horizontal`;if(n.display===`grid`)return n.gridTemplateColumns.split(` `).length<=1?`vertical`:`horizontal`;if(i&&o.float&&o.float!==`none`){var u=o.float===`left`?`left`:`right`;return a&&(s.clear===`both`||s.clear===u)?`vertical`:`horizontal`}return i&&(o.display===`block`||o.display===`flex`||o.display===`table`||o.display===`grid`||c>=r&&n[go]===`none`||a&&n[go]===`none`&&c+l>r)?`vertical`:`horizontal`},bo=function(e,t,n){var r=n?e.left:e.top,i=n?e.right:e.bottom,a=n?e.width:e.height,o=n?t.left:t.top,s=n?t.right:t.bottom,c=n?t.width:t.height;return r===o||i===s||r+a/2===o+c/2},xo=function(e,t){var n;return Xa.some(function(r){var i=r[Oa].options.emptyInsertThreshold;if(!(!i||Ai(r))){var a=Di(r),o=e>=a.left-i&&e<=a.right+i,s=t>=a.top-i&&t<=a.bottom+i;if(o&&s)return n=r}}),n},So=function(e){function t(e,n){return function(r,i,a,o){var s=r.options.group.name&&i.options.group.name&&r.options.group.name===i.options.group.name;if(e==null&&(n||s))return!0;if(e==null||e===!1)return!1;if(n&&e===`clone`)return e;if(typeof e==`function`)return t(e(r,i,a,o),n)(r,i,a,o);var c=(n?r:i).options.group.name;return e===!0||typeof e==`string`&&e===c||e.join&&e.indexOf(c)>-1}}var n={},r=e.group;(!r||ai(r)!=`object`)&&(r={name:r}),n.name=r.name,n.checkPull=t(r.pull,!0),n.checkPut=t(r.put),n.revertClone=r.revertClone,e.group=n},Co=function(){!vo&&Ia&&Ci(Ia,`display`,`none`)},wo=function(){!vo&&Ia&&Ci(Ia,`display`,``)},mo&&document.addEventListener(`click`,function(e){if(Ya)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),Ya=!1,!1},!0),To=function(e){if(Pa){e=e.touches?e.touches[0]:e;var t=xo(e.clientX,e.clientY);if(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[Oa]._onDragOver(n)}}},Eo=function(e){Pa&&Pa.parentNode[Oa]._isOutsideThisEl(e.target)},Ji.prototype={constructor:Ji,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(io=null)},_getDirection:function(e,t){return typeof this.options.direction==`function`?this.options.direction.call(this,e,t,Pa):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,r=this.options,i=r.preventOnFilter,a=e.type,o=e.touches&&e.touches[0]||e.pointerType&&e.pointerType===`touch`&&e,s=(o||e).target,c=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||s,l=r.filter;if(ia(n),!Pa&&!(/mousedown|pointerdown/.test(a)&&e.button!==0||r.disabled)&&!c.isContentEditable&&!(!this.nativeDraggable&&Sa&&s&&s.tagName.toUpperCase()===`SELECT`)&&(s=xi(s,r.draggable,n,!1),!(s&&s.animated)&&za!==s)){if(Ha=ji(s),Wa=ji(s,r.draggable),typeof l==`function`){if(l.call(this,e,s,this)){qi({sortable:t,rootEl:c,name:`filter`,targetEl:s,toEl:n,fromEl:n}),Na(`filter`,t,{evt:e}),i&&e.cancelable&&e.preventDefault();return}}else if(l&&(l=l.split(`,`).some(function(r){if(r=xi(c,r.trim(),n,!1),r)return qi({sortable:t,rootEl:r,name:`filter`,targetEl:s,fromEl:n,toEl:n}),Na(`filter`,t,{evt:e}),!0}),l)){i&&e.cancelable&&e.preventDefault();return}r.handle&&!xi(c,r.handle,n,!1)||this._prepareDragStart(e,o,s)}}},_prepareDragStart:function(e,t,n){var r=this,i=r.el,a=r.options,o=i.ownerDocument,s;if(n&&!Pa&&n.parentNode===i){var c=Di(n);if(La=i,Pa=n,Fa=Pa.parentNode,Ra=Pa.nextSibling,za=n,Ka=a.group,Ji.dragged=Pa,Za={target:Pa,clientX:(t||e).clientX,clientY:(t||e).clientY},to=Za.clientX-c.left,no=Za.clientY-c.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,Pa.style[`will-change`]=`all`,s=function(){if(Na(`delayEnded`,r,{evt:e}),Ji.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!xa&&r.nativeDraggable&&(Pa.draggable=!0),r._triggerDragStart(e,t),qi({sortable:r,name:`choose`,originalEvent:e}),Si(Pa,a.chosenClass,!0)},a.ignore.split(`,`).forEach(function(e){Ti(Pa,e.trim(),Zi)}),_i(o,`dragover`,To),_i(o,`mousemove`,To),_i(o,`touchmove`,To),_i(o,`mouseup`,r._onDrop),_i(o,`touchend`,r._onDrop),_i(o,`touchcancel`,r._onDrop),xa&&this.nativeDraggable&&(this.options.touchStartThreshold=4,Pa.draggable=!0),Na(`delayStart`,this,{evt:e}),a.delay&&(!a.delayOnTouchOnly||t)&&(!this.nativeDraggable||!(ba||ya))){if(Ji.eventCanceled){this._onDrop();return}_i(o,`mouseup`,r._disableDelayedDrag),_i(o,`touchend`,r._disableDelayedDrag),_i(o,`touchcancel`,r._disableDelayedDrag),_i(o,`mousemove`,r._delayedDragTouchMoveHandler),_i(o,`touchmove`,r._delayedDragTouchMoveHandler),a.supportPointer&&_i(o,`pointermove`,r._delayedDragTouchMoveHandler),r._dragStartTimer=setTimeout(s,a.delay)}else s()}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){Pa&&Zi(Pa),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;vi(e,`mouseup`,this._disableDelayedDrag),vi(e,`touchend`,this._disableDelayedDrag),vi(e,`touchcancel`,this._disableDelayedDrag),vi(e,`mousemove`,this._delayedDragTouchMoveHandler),vi(e,`touchmove`,this._delayedDragTouchMoveHandler),vi(e,`pointermove`,this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t||=e.pointerType==`touch`&&e,!this.nativeDraggable||t?this.options.supportPointer?_i(document,`pointermove`,this._onTouchMove):t?_i(document,`touchmove`,this._onTouchMove):_i(document,`mousemove`,this._onTouchMove):(_i(Pa,`dragend`,this),_i(La,`dragstart`,this._onDragStart));try{document.selection?aa(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,t){if(Ja=!1,La&&Pa){Na(`dragStarted`,this,{evt:t}),this.nativeDraggable&&_i(document,`dragover`,Eo);var n=this.options;!e&&Si(Pa,n.dragClass,!1),Si(Pa,n.ghostClass,!0),Ji.active=this,e&&this._appendGhost(),qi({sortable:this,name:`start`,originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(Qa){this._lastX=Qa.clientX,this._lastY=Qa.clientY,Co();for(var e=document.elementFromPoint(Qa.clientX,Qa.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(Qa.clientX,Qa.clientY),e!==t);)t=e;if(Pa.parentNode[Oa]._isOutsideThisEl(e),t)do{if(t[Oa]){var n=void 0;if(n=t[Oa]._onDragOver({clientX:Qa.clientX,clientY:Qa.clientY,target:e,rootEl:t}),n&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);wo()}},_onTouchMove:function(e){if(Za){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,i=e.touches?e.touches[0]:e,a=Ia&&wi(Ia,!0),o=Ia&&a&&a.a,s=Ia&&a&&a.d,c=ho&&lo&&Mi(lo),l=(i.clientX-Za.clientX+r.x)/(o||1)+(c?c[0]-uo[0]:0)/(o||1),u=(i.clientY-Za.clientY+r.y)/(s||1)+(c?c[1]-uo[1]:0)/(s||1);if(!Ji.active&&!Ja){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))=0&&(qi({sortable:this,name:`update`,toEl:Fa,originalEvent:e}),qi({sortable:this,name:`sort`,toEl:Fa,originalEvent:e})):(Ua>=0&&(qi({rootEl:Fa,name:`add`,toEl:Fa,fromEl:La,originalEvent:e}),qi({sortable:this,name:`remove`,toEl:Fa,originalEvent:e}),qi({rootEl:Fa,name:`sort`,toEl:Fa,fromEl:La,originalEvent:e}),qi({sortable:this,name:`sort`,toEl:Fa,originalEvent:e})),qa&&qa.save()),Ji.active&&((Ua==null||Ua===-1)&&(Ua=Ha,Ga=Wa),qi({sortable:this,name:`end`,toEl:Fa,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){Na(`nulling`,this),La=Pa=Fa=Ia=Ra=Ba=za=Va=Za=Qa=ro=Ua=Ga=Ha=Wa=io=ao=qa=Ka=Ji.dragged=Ji.ghost=Ji.clone=Ji.active=null,po.forEach(function(e){e.checked=!0}),po.length=$a=eo=0},handleEvent:function(e){switch(e.type){case`drop`:case`dragend`:this._onDrop(e);break;case`dragenter`:case`dragover`:Pa&&(this._onDragOver(e),Yi(e));break;case`selectstart`:e.preventDefault();break}},toArray:function(){for(var e=[],t,n=this.el.children,r=0,i=n.length,a=this.options;r{(function(r,i){typeof t==`object`&&typeof n==`object`?n.exports=i(he(),(Jo(),e(ni))):typeof define==`function`&&define.amd?define([,`sortablejs`],i):typeof t==`object`?t.vuedraggable=i(he(),(Jo(),e(ni))):r.vuedraggable=i(r.Vue,r.Sortable)})(typeof self<`u`?self:t,function(e,t){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,`__esModule`,{value:!0})},n.t=function(e,t){if(t&1&&(e=n(e)),t&8||t&4&&typeof e==`object`&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,`default`,{enumerable:!0,value:e}),t&2&&typeof e!=`string`)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,`a`,t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=``,n(n.s=`fb15`)})({"00ee":(function(e,t,n){var r=n(`b622`)(`toStringTag`),i={};i[r]=`z`,e.exports=String(i)===`[object z]`}),"0366":(function(e,t,n){var r=n(`1c0b`);e.exports=function(e,t,n){if(r(e),t===void 0)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}}),"057f":(function(e,t,n){var r=n(`fc6a`),i=n(`241c`).f,a={}.toString,o=typeof window==`object`&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(e){try{return i(e)}catch{return o.slice()}};e.exports.f=function(e){return o&&a.call(e)==`[object Window]`?s(e):i(r(e))}}),"06cf":(function(e,t,n){var r=n(`83ab`),i=n(`d1e7`),a=n(`5c6c`),o=n(`fc6a`),s=n(`c04e`),c=n(`5135`),l=n(`0cfb`),u=Object.getOwnPropertyDescriptor;t.f=r?u:function(e,t){if(e=o(e),t=s(t,!0),l)try{return u(e,t)}catch{}if(c(e,t))return a(!i.f.call(e,t),e[t])}}),"0cfb":(function(e,t,n){var r=n(`83ab`),i=n(`d039`),a=n(`cc12`);e.exports=!r&&!i(function(){return Object.defineProperty(a(`div`),`a`,{get:function(){return 7}}).a!=7})}),"13d5":(function(e,t,n){var r=n(`23e7`),i=n(`d58f`).left,a=n(`a640`),o=n(`ae40`),s=a(`reduce`),c=o(`reduce`,{1:0});r({target:`Array`,proto:!0,forced:!s||!c},{reduce:function(e){return i(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}})}),"14c3":(function(e,t,n){var r=n(`c6b6`),i=n(`9263`);e.exports=function(e,t){var n=e.exec;if(typeof n==`function`){var a=n.call(e,t);if(typeof a!=`object`)throw TypeError(`RegExp exec method returned something other than an Object or null`);return a}if(r(e)!==`RegExp`)throw TypeError(`RegExp#exec called on incompatible receiver`);return i.call(e,t)}}),"159b":(function(e,t,n){var r=n(`da84`),i=n(`fdbc`),a=n(`17c2`),o=n(`9112`);for(var s in i){var c=r[s],l=c&&c.prototype;if(l&&l.forEach!==a)try{o(l,`forEach`,a)}catch{l.forEach=a}}}),"17c2":(function(e,t,n){var r=n(`b727`).forEach,i=n(`a640`),a=n(`ae40`),o=i(`forEach`),s=a(`forEach`);e.exports=!o||!s?function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}:[].forEach}),"1be4":(function(e,t,n){e.exports=n(`d066`)(`document`,`documentElement`)}),"1c0b":(function(e,t){e.exports=function(e){if(typeof e!=`function`)throw TypeError(String(e)+` is not a function`);return e}}),"1c7e":(function(e,t,n){var r=n(`b622`)(`iterator`),i=!1;try{var a=0,o={next:function(){return{done:!!a++}},return:function(){i=!0}};o[r]=function(){return this},Array.from(o,function(){throw 2})}catch{}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var a={};a[r]=function(){return{next:function(){return{done:n=!0}}}},e(a)}catch{}return n}}),"1d80":(function(e,t){e.exports=function(e){if(e==null)throw TypeError(`Can't call method on `+e);return e}}),"1dde":(function(e,t,n){var r=n(`d039`),i=n(`b622`),a=n(`2d00`),o=i(`species`);e.exports=function(e){return a>=51||!r(function(){var t=[],n=t.constructor={};return n[o]=function(){return{foo:1}},t[e](Boolean).foo!==1})}}),"23cb":(function(e,t,n){var r=n(`a691`),i=Math.max,a=Math.min;e.exports=function(e,t){var n=r(e);return n<0?i(n+t,0):a(n,t)}}),"23e7":(function(e,t,n){var r=n(`da84`),i=n(`06cf`).f,a=n(`9112`),o=n(`6eeb`),s=n(`ce4e`),c=n(`e893`),l=n(`94ca`);e.exports=function(e,t){var n=e.target,u=e.global,d=e.stat,f,p=u?r:d?r[n]||s(n,{}):(r[n]||{}).prototype,m,h,g,_;if(p)for(m in t){if(g=t[m],e.noTargetGet?(_=i(p,m),h=_&&_.value):h=p[m],f=l(u?m:n+(d?`.`:`#`)+m,e.forced),!f&&h!==void 0){if(typeof g==typeof h)continue;c(g,h)}(e.sham||h&&h.sham)&&a(g,`sham`,!0),o(p,m,g,e)}}}),"241c":(function(e,t,n){var r=n(`ca84`),i=n(`7839`).concat(`length`,`prototype`);t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}}),"25f0":(function(e,t,n){var r=n(`6eeb`),i=n(`825a`),a=n(`d039`),o=n(`ad6d`),s=`toString`,c=RegExp.prototype,l=c[s],u=a(function(){return l.call({source:`a`,flags:`b`})!=`/a/b`}),d=l.name!=s;(u||d)&&r(RegExp.prototype,s,function(){var e=i(this),t=String(e.source),n=e.flags,r=String(n===void 0&&e instanceof RegExp&&!(`flags`in c)?o.call(e):n);return`/`+t+`/`+r},{unsafe:!0})}),"2ca0":(function(e,t,n){var r=n(`23e7`),i=n(`06cf`).f,a=n(`50c4`),o=n(`5a34`),s=n(`1d80`),c=n(`ab13`),l=n(`c430`),u=``.startsWith,d=Math.min,f=c(`startsWith`);r({target:`String`,proto:!0,forced:!(!l&&!f&&function(){var e=i(String.prototype,`startsWith`);return e&&!e.writable}())&&!f},{startsWith:function(e){var t=String(s(this));o(e);var n=a(d(arguments.length>1?arguments[1]:void 0,t.length)),r=String(e);return u?u.call(t,r,n):t.slice(n,n+r.length)===r}})}),"2d00":(function(e,t,n){var r=n(`da84`),i=n(`342f`),a=r.process,o=a&&a.versions,s=o&&o.v8,c,l;s?(c=s.split(`.`),l=c[0]+c[1]):i&&(c=i.match(/Edge\/(\d+)/),(!c||c[1]>=74)&&(c=i.match(/Chrome\/(\d+)/),c&&(l=c[1]))),e.exports=l&&+l}),"342f":(function(e,t,n){e.exports=n(`d066`)(`navigator`,`userAgent`)||``}),"35a1":(function(e,t,n){var r=n(`f5df`),i=n(`3f8c`),a=n(`b622`)(`iterator`);e.exports=function(e){if(e!=null)return e[a]||e[`@@iterator`]||i[r(e)]}}),"37e8":(function(e,t,n){var r=n(`83ab`),i=n(`9bf2`),a=n(`825a`),o=n(`df75`);e.exports=r?Object.defineProperties:function(e,t){a(e);for(var n=o(t),r=n.length,s=0,c;r>s;)i.f(e,c=n[s++],t[c]);return e}}),"3bbe":(function(e,t,n){var r=n(`861d`);e.exports=function(e){if(!r(e)&&e!==null)throw TypeError(`Can't set `+String(e)+` as a prototype`);return e}}),"3ca3":(function(e,t,n){var r=n(`6547`).charAt,i=n(`69f3`),a=n(`7dd0`),o=`String Iterator`,s=i.set,c=i.getterFor(o);a(String,`String`,function(e){s(this,{type:o,string:String(e),index:0})},function(){var e=c(this),t=e.string,n=e.index,i;return n>=t.length?{value:void 0,done:!0}:(i=r(t,n),e.index+=i.length,{value:i,done:!1})})}),"3f8c":(function(e,t){e.exports={}}),4160:(function(e,t,n){var r=n(`23e7`),i=n(`17c2`);r({target:`Array`,proto:!0,forced:[].forEach!=i},{forEach:i})}),"428f":(function(e,t,n){e.exports=n(`da84`)}),"44ad":(function(e,t,n){var r=n(`d039`),i=n(`c6b6`),a=``.split;e.exports=r(function(){return!Object(`z`).propertyIsEnumerable(0)})?function(e){return i(e)==`String`?a.call(e,``):Object(e)}:Object}),"44d2":(function(e,t,n){var r=n(`b622`),i=n(`7c73`),a=n(`9bf2`),o=r(`unscopables`),s=Array.prototype;s[o]??a.f(s,o,{configurable:!0,value:i(null)}),e.exports=function(e){s[o][e]=!0}}),"44e7":(function(e,t,n){var r=n(`861d`),i=n(`c6b6`),a=n(`b622`)(`match`);e.exports=function(e){var t;return r(e)&&((t=e[a])===void 0?i(e)==`RegExp`:!!t)}}),4930:(function(e,t,n){var r=n(`d039`);e.exports=!!Object.getOwnPropertySymbols&&!r(function(){return!String(Symbol())})}),"4d64":(function(e,t,n){var r=n(`fc6a`),i=n(`50c4`),a=n(`23cb`),o=function(e){return function(t,n,o){var s=r(t),c=i(s.length),l=a(o,c),u;if(e&&n!=n){for(;c>l;)if(u=s[l++],u!=u)return!0}else for(;c>l;l++)if((e||l in s)&&s[l]===n)return e||l||0;return!e&&-1}};e.exports={includes:o(!0),indexOf:o(!1)}}),"4de4":(function(e,t,n){var r=n(`23e7`),i=n(`b727`).filter,a=n(`1dde`),o=n(`ae40`),s=a(`filter`),c=o(`filter`);r({target:`Array`,proto:!0,forced:!s||!c},{filter:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})}),"4df4":(function(e,t,n){var r=n(`0366`),i=n(`7b0b`),a=n(`9bdd`),o=n(`e95a`),s=n(`50c4`),c=n(`8418`),l=n(`35a1`);e.exports=function(e){var t=i(e),n=typeof this==`function`?this:Array,u=arguments.length,d=u>1?arguments[1]:void 0,f=d!==void 0,p=l(t),m=0,h,g,_,v,y,b;if(f&&(d=r(d,u>2?arguments[2]:void 0,2)),p!=null&&!(n==Array&&o(p)))for(v=p.call(t),y=v.next,g=new n;!(_=y.call(v)).done;m++)b=f?a(v,d,[_.value,m],!0):_.value,c(g,m,b);else for(h=s(t.length),g=new n(h);h>m;m++)b=f?d(t[m],m):t[m],c(g,m,b);return g.length=m,g}}),"4fad":(function(e,t,n){var r=n(`23e7`),i=n(`6f53`).entries;r({target:`Object`,stat:!0},{entries:function(e){return i(e)}})}),"50c4":(function(e,t,n){var r=n(`a691`),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}}),5135:(function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}}),5319:(function(e,t,n){var r=n(`d784`),i=n(`825a`),a=n(`7b0b`),o=n(`50c4`),s=n(`a691`),c=n(`1d80`),l=n(`8aa5`),u=n(`14c3`),d=Math.max,f=Math.min,p=Math.floor,m=/\$([$&'`]|\d\d?|<[^>]*>)/g,h=/\$([$&'`]|\d\d?)/g,g=function(e){return e===void 0?e:String(e)};r(`replace`,2,function(e,t,n,r){var _=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,v=r.REPLACE_KEEPS_$0,y=_?`$`:`$0`;return[function(n,r){var i=c(this),a=n?.[e];return a===void 0?t.call(String(i),n,r):a.call(n,i,r)},function(e,r){if(!_&&v||typeof r==`string`&&r.indexOf(y)===-1){var a=n(t,e,this,r);if(a.done)return a.value}var c=i(e),p=String(this),m=typeof r==`function`;m||(r=String(r));var h=c.global;if(h){var x=c.unicode;c.lastIndex=0}for(var S=[];;){var C=u(c,p);if(C===null||(S.push(C),!h))break;String(C[0])===``&&(c.lastIndex=l(p,o(c.lastIndex),x))}for(var w=``,T=0,E=0;E=T&&(w+=p.slice(T,O)+N,T=O+D.length)}return w+p.slice(T)}];function b(e,n,r,i,o,s){var c=r+e.length,l=i.length,u=h;return o!==void 0&&(o=a(o),u=m),t.call(s,u,function(t,a){var s;switch(a.charAt(0)){case`$`:return`$`;case`&`:return e;case"`":return n.slice(0,r);case`'`:return n.slice(c);case`<`:s=o[a.slice(1,-1)];break;default:var u=+a;if(u===0)return t;if(u>l){var d=p(u/10);return d===0?t:d<=l?i[d-1]===void 0?a.charAt(1):i[d-1]+a.charAt(1):t}s=i[u-1]}return s===void 0?``:s})}})}),5692:(function(e,t,n){var r=n(`c430`),i=n(`c6cd`);(e.exports=function(e,t){return i[e]||(i[e]=t===void 0?{}:t)})(`versions`,[]).push({version:`3.6.5`,mode:r?`pure`:`global`,copyright:`© 2020 Denis Pushkarev (zloirock.ru)`})}),"56ef":(function(e,t,n){var r=n(`d066`),i=n(`241c`),a=n(`7418`),o=n(`825a`);e.exports=r(`Reflect`,`ownKeys`)||function(e){var t=i.f(o(e)),n=a.f;return n?t.concat(n(e)):t}}),"5a34":(function(e,t,n){var r=n(`44e7`);e.exports=function(e){if(r(e))throw TypeError(`The method doesn't accept regular expressions`);return e}}),"5c6c":(function(e,t){e.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}}),"5db7":(function(e,t,n){var r=n(`23e7`),i=n(`a2bf`),a=n(`7b0b`),o=n(`50c4`),s=n(`1c0b`),c=n(`65f0`);r({target:`Array`,proto:!0},{flatMap:function(e){var t=a(this),n=o(t.length),r;return s(e),r=c(t,0),r.length=i(r,t,t,n,0,1,e,arguments.length>1?arguments[1]:void 0),r}})}),6547:(function(e,t,n){var r=n(`a691`),i=n(`1d80`),a=function(e){return function(t,n){var a=String(i(t)),o=r(n),s=a.length,c,l;return o<0||o>=s?e?``:void 0:(c=a.charCodeAt(o),c<55296||c>56319||o+1===s||(l=a.charCodeAt(o+1))<56320||l>57343?e?a.charAt(o):c:e?a.slice(o,o+2):(c-55296<<10)+(l-56320)+65536)}};e.exports={codeAt:a(!1),charAt:a(!0)}}),"65f0":(function(e,t,n){var r=n(`861d`),i=n(`e8b5`),a=n(`b622`)(`species`);e.exports=function(e,t){var n;return i(e)&&(n=e.constructor,typeof n==`function`&&(n===Array||i(n.prototype))?n=void 0:r(n)&&(n=n[a],n===null&&(n=void 0))),new(n===void 0?Array:n)(t===0?0:t)}}),"69f3":(function(e,t,n){var r=n(`7f9a`),i=n(`da84`),a=n(`861d`),o=n(`9112`),s=n(`5135`),c=n(`f772`),l=n(`d012`),u=i.WeakMap,d,f,p,m=function(e){return p(e)?f(e):d(e,{})},h=function(e){return function(t){var n;if(!a(t)||(n=f(t)).type!==e)throw TypeError(`Incompatible receiver, `+e+` required`);return n}};if(r){var g=new u,_=g.get,v=g.has,y=g.set;d=function(e,t){return y.call(g,e,t),t},f=function(e){return _.call(g,e)||{}},p=function(e){return v.call(g,e)}}else{var b=c(`state`);l[b]=!0,d=function(e,t){return o(e,b,t),t},f=function(e){return s(e,b)?e[b]:{}},p=function(e){return s(e,b)}}e.exports={set:d,get:f,has:p,enforce:m,getterFor:h}}),"6eeb":(function(e,t,n){var r=n(`da84`),i=n(`9112`),a=n(`5135`),o=n(`ce4e`),s=n(`8925`),c=n(`69f3`),l=c.get,u=c.enforce,d=String(String).split(`String`);(e.exports=function(e,t,n,s){var c=s?!!s.unsafe:!1,l=s?!!s.enumerable:!1,f=s?!!s.noTargetGet:!1;if(typeof n==`function`&&(typeof t==`string`&&!a(n,`name`)&&i(n,`name`,t),u(n).source=d.join(typeof t==`string`?t:``)),e===r){l?e[t]=n:o(t,n);return}else c?!f&&e[t]&&(l=!0):delete e[t];l?e[t]=n:i(e,t,n)})(Function.prototype,`toString`,function(){return typeof this==`function`&&l(this).source||s(this)})}),"6f53":(function(e,t,n){var r=n(`83ab`),i=n(`df75`),a=n(`fc6a`),o=n(`d1e7`).f,s=function(e){return function(t){for(var n=a(t),s=i(n),c=s.length,l=0,u=[],d;c>l;)d=s[l++],(!r||o.call(n,d))&&u.push(e?[d,n[d]]:n[d]);return u}};e.exports={entries:s(!0),values:s(!1)}}),"73d9":(function(e,t,n){n(`44d2`)(`flatMap`)}),7418:(function(e,t){t.f=Object.getOwnPropertySymbols}),"746f":(function(e,t,n){var r=n(`428f`),i=n(`5135`),a=n(`e538`),o=n(`9bf2`).f;e.exports=function(e){var t=r.Symbol||={};i(t,e)||o(t,e,{value:a.f(e)})}}),7839:(function(e,t){e.exports=[`constructor`,`hasOwnProperty`,`isPrototypeOf`,`propertyIsEnumerable`,`toLocaleString`,`toString`,`valueOf`]}),"7b0b":(function(e,t,n){var r=n(`1d80`);e.exports=function(e){return Object(r(e))}}),"7c73":(function(e,t,n){var r=n(`825a`),i=n(`37e8`),a=n(`7839`),o=n(`d012`),s=n(`1be4`),c=n(`cc12`),l=n(`f772`),u=`>`,d=`<`,f=`prototype`,p=`script`,m=l(`IE_PROTO`),h=function(){},g=function(e){return d+p+u+e+d+`/`+p+u},_=function(e){e.write(g(``)),e.close();var t=e.parentWindow.Object;return e=null,t},v=function(){var e=c(`iframe`),t=`java`+p+`:`,n;return e.style.display=`none`,s.appendChild(e),e.src=String(t),n=e.contentWindow.document,n.open(),n.write(g(`document.F=Object`)),n.close(),n.F},y,b=function(){try{y=document.domain&&new ActiveXObject(`htmlfile`)}catch{}b=y?_(y):v();for(var e=a.length;e--;)delete b[f][a[e]];return b()};o[m]=!0,e.exports=Object.create||function(e,t){var n;return e===null?n=b():(h[f]=r(e),n=new h,h[f]=null,n[m]=e),t===void 0?n:i(n,t)}}),"7dd0":(function(e,t,n){var r=n(`23e7`),i=n(`9ed3`),a=n(`e163`),o=n(`d2bb`),s=n(`d44e`),c=n(`9112`),l=n(`6eeb`),u=n(`b622`),d=n(`c430`),f=n(`3f8c`),p=n(`ae93`),m=p.IteratorPrototype,h=p.BUGGY_SAFARI_ITERATORS,g=u(`iterator`),_=`keys`,v=`values`,y=`entries`,b=function(){return this};e.exports=function(e,t,n,u,p,x,S){i(n,t,u);var C=function(e){if(e===p&&O)return O;if(!h&&e in E)return E[e];switch(e){case _:return function(){return new n(this,e)};case v:return function(){return new n(this,e)};case y:return function(){return new n(this,e)}}return function(){return new n(this)}},w=t+` Iterator`,T=!1,E=e.prototype,D=E[g]||E[`@@iterator`]||p&&E[p],O=!h&&D||C(p),k=t==`Array`&&E.entries||D,A,j,M;if(k&&(A=a(k.call(new e)),m!==Object.prototype&&A.next&&(!d&&a(A)!==m&&(o?o(A,m):typeof A[g]!=`function`&&c(A,g,b)),s(A,w,!0,!0),d&&(f[w]=b))),p==v&&D&&D.name!==v&&(T=!0,O=function(){return D.call(this)}),(!d||S)&&E[g]!==O&&c(E,g,O),f[t]=O,p)if(j={values:C(v),keys:x?O:C(_),entries:C(y)},S)for(M in j)(h||T||!(M in E))&&l(E,M,j[M]);else r({target:t,proto:!0,forced:h||T},j);return j}}),"7f9a":(function(e,t,n){var r=n(`da84`),i=n(`8925`),a=r.WeakMap;e.exports=typeof a==`function`&&/native code/.test(i(a))}),"825a":(function(e,t,n){var r=n(`861d`);e.exports=function(e){if(!r(e))throw TypeError(String(e)+` is not an object`);return e}}),"83ab":(function(e,t,n){e.exports=!n(`d039`)(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})}),8418:(function(e,t,n){var r=n(`c04e`),i=n(`9bf2`),a=n(`5c6c`);e.exports=function(e,t,n){var o=r(t);o in e?i.f(e,o,a(0,n)):e[o]=n}}),"861d":(function(e,t){e.exports=function(e){return typeof e==`object`?e!==null:typeof e==`function`}}),8875:(function(e,t,n){var r,i,a;(function(n,o){i=[],r=o,a=typeof r==`function`?r.apply(t,i):r,a!==void 0&&(e.exports=a)})(typeof self<`u`?self:this,function(){function e(){var t=Object.getOwnPropertyDescriptor(document,`currentScript`);if(!t&&`currentScript`in document&&document.currentScript||t&&t.get!==e&&document.currentScript)return document.currentScript;try{throw Error()}catch(e){var n=/.*at [^(]*\((.*):(.+):(.+)\)$/gi.exec(e.stack)||/@([^@]*):(\d+):(\d+)\s*$/gi.exec(e.stack),r=n&&n[1]||!1,i=n&&n[2]||!1,a=document.location.href.replace(document.location.hash,``),o,s,c,l=document.getElementsByTagName(`script`);r===a&&(o=document.documentElement.outerHTML,s=RegExp(`(?:[^\\n]+?\\n){0,`+(i-2)+`}[^<]* + 联众咨询
diff --git a/package-lock.json b/package-lock.json index ccd4869..bb39207 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,18 +21,20 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "decimal.js": "^10.6.0", + "docxtemplater": "^3.68.5", "exceljs": "^4.4.0", + "file-saver": "^2.0.5", "localforage": "^1.10.0", "lucide-vue-next": "^0.563.0", "motion-v": "^2.0.0", "pinia": "^3.0.4", "pinia-plugin-persistedstate": "^4.7.1", + "pizzip": "^3.2.0", "reka-ui": "^2.8.0", "tailwind-merge": "^3.4.0", "tailwindcss": "^4.1.18", "vue": "^3.5.25", "vue-i18n": "^11.3.0", - "vue-router": "^4.6.4", "vuedraggable": "^4.1.0" }, "devDependencies": { @@ -657,6 +659,15 @@ "vue": "^3.5.0" } }, + "node_modules/@xmldom/xmldom": { + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.10.tgz", + "integrity": "sha512-A9gOqLdi6cV4ibazAjcQufGj0B1y/vDqYrcuP6d/6x8P27gRS8643Dj9o1dEKtB6O7fwxb2FgBmJS2mX7gpvdw==", + "license": "MIT", + "engines": { + "node": ">=14.6" + } + }, "node_modules/ag-charts-community": { "version": "13.1.0", "license": "MIT", @@ -1013,6 +1024,18 @@ "node": ">=8" } }, + "node_modules/docxtemplater": { + "version": "3.68.5", + "resolved": "https://registry.npmjs.org/docxtemplater/-/docxtemplater-3.68.5.tgz", + "integrity": "sha512-2xcHvTXjMA0jdX6PRh1BUTLrcRQ86Re/QJKWCUCX/vv5RKzntjNNkpR/O4AUoJY1TdoqxA+d04L4xgoAUNf/kw==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.9.8" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/duplexer2": { "version": "0.1.4", "license": "BSD-3-Clause", @@ -1117,6 +1140,12 @@ } } }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==", + "license": "MIT" + }, "node_modules/framer-motion": { "version": "12.34.3", "license": "MIT", @@ -1638,6 +1667,21 @@ } } }, + "node_modules/pizzip": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pizzip/-/pizzip-3.2.0.tgz", + "integrity": "sha512-X4NPNICxCfIK8VYhF6wbksn81vTiziyLbvKuORVAmolvnUzl1A1xmz9DAWKxPRq9lZg84pJOOAMq3OE61bD8IQ==", + "license": "(MIT OR GPL-3.0)", + "dependencies": { + "pako": "^2.1.0" + } + }, + "node_modules/pizzip/node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", + "license": "(MIT AND Zlib)" + }, "node_modules/postcss": { "version": "8.5.6", "funding": [ @@ -2128,27 +2172,6 @@ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", "license": "MIT" }, - "node_modules/vue-router": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.6.4.tgz", - "integrity": "sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^6.6.4" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "vue": "^3.5.0" - } - }, - "node_modules/vue-router/node_modules/@vue/devtools-api": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", - "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", - "license": "MIT" - }, "node_modules/vue-tsc": { "version": "3.2.5", "dev": true, diff --git a/package.json b/package.json index 416e4f1..58353c5 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,13 @@ { - "name": "ZWJJ2026", + "name": "my-vue-app", "private": true, - "version": "1.0", + "version": "0.0.0", "type": "module", "scripts": { "dev": "bunx --bun vite", - "build": "bunx vue-tsc -b && bunx --bun vite build", + "build": " bunx --bun vite build", "preview": "bunx --bun vite preview", - "type-check": "bunx vue-tsc --noEmit", - "dockerPush": "bun run build && docker build -f Dockerfile.dist -t wintsa/zwzjjstool2026:latest . && docker push wintsa/zwzjjstool2026:latest" + "type-check": "bunx vue-tsc --noEmit" }, "dependencies": { "@ag-grid-community/locale": "^35.1.0", @@ -24,18 +23,20 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "decimal.js": "^10.6.0", + "docxtemplater": "^3.68.5", "exceljs": "^4.4.0", + "file-saver": "^2.0.5", "localforage": "^1.10.0", "lucide-vue-next": "^0.563.0", "motion-v": "^2.0.0", "pinia": "^3.0.4", "pinia-plugin-persistedstate": "^4.7.1", + "pizzip": "^3.2.0", "reka-ui": "^2.8.0", "tailwind-merge": "^3.4.0", "tailwindcss": "^4.1.18", "vue": "^3.5.25", "vue-i18n": "^11.3.0", - "vue-router": "^4.6.4", "vuedraggable": "^4.1.0" }, "devDependencies": { diff --git a/public/background.png b/public/background.png new file mode 100644 index 0000000..849942d Binary files /dev/null and b/public/background.png differ diff --git a/public/bg-home.png b/public/bg-home.png new file mode 100644 index 0000000..7edcc2a --- /dev/null +++ b/public/bg-home.png @@ -0,0 +1 @@ +iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADl8HLGAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4SU \ No newline at end of file diff --git a/public/related-files.png b/public/related-files.png deleted file mode 100644 index e4d5677..0000000 Binary files a/public/related-files.png and /dev/null differ diff --git a/public/template-doc.docx b/public/template-doc.docx new file mode 100644 index 0000000..119fe90 Binary files /dev/null and b/public/template-doc.docx differ diff --git a/public/template-excel.xlsx b/public/template-excel.xlsx new file mode 100644 index 0000000..51eb9cf Binary files /dev/null and b/public/template-excel.xlsx differ diff --git a/public/组 4@2x.png b/public/组 4@2x.png new file mode 100644 index 0000000..78fcb4d Binary files /dev/null and b/public/组 4@2x.png differ diff --git a/public/组 5@2x.png b/public/组 5@2x.png new file mode 100644 index 0000000..e09f59f Binary files /dev/null and b/public/组 5@2x.png differ diff --git a/public/组 6@2x.png b/public/组 6@2x.png new file mode 100644 index 0000000..65cda32 Binary files /dev/null and b/public/组 6@2x.png differ diff --git a/src/App.vue b/src/App.vue index 7c2aa3f..b1f618d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,3 +1,323 @@ + + diff --git a/src/features/app/components/WorkspaceShell.vue b/src/features/app/components/WorkspaceShell.vue deleted file mode 100644 index 1da72e2..0000000 --- a/src/features/app/components/WorkspaceShell.vue +++ /dev/null @@ -1,318 +0,0 @@ - - - diff --git a/src/features/disclaimer/components/DisclaimerPage.vue b/src/features/disclaimer/components/DisclaimerPage.vue deleted file mode 100644 index 88307a2..0000000 --- a/src/features/disclaimer/components/DisclaimerPage.vue +++ /dev/null @@ -1,197 +0,0 @@ - - - diff --git a/src/features/ht/components/HtBaseInfo.vue b/src/features/ht/components/HtBaseInfo.vue index 8455b68..ba7ed48 100644 --- a/src/features/ht/components/HtBaseInfo.vue +++ b/src/features/ht/components/HtBaseInfo.vue @@ -21,15 +21,23 @@ const storageKey = () => `ht-base-info-${props.contractId}` const quality = ref(DEFAULT_QUALITY) const duration = ref('') const lastSavedSnapshot = ref('') - -const saveForm = (force = false) => { +import { useDataStore } from '@/pinia/zx' +const saveForm = async(force = false) => { const payload: HtBaseInfoState = { quality: quality.value, duration: duration.value } const snapshot = JSON.stringify(payload) if (!force && snapshot === lastSavedSnapshot.value) return + // ✅ 使用 upsertBatch:存在则更新,不存在则新增 zxFwPricingStore.setKeyState(storageKey(), payload) + const data=[] + //@ts-ignore + payload.id=props.contractId + data.push(payload) + const rows = data.map(row => ({ ...row, type: `${props.contractId}-Htbaseinfo` })) + await useDataStore().upsertBatch(rows) + lastSavedSnapshot.value = snapshot } @@ -68,7 +76,7 @@ onBeforeUnmount(() => {
{{ t('htBaseInfo.qualityLabel') }}