修改界面

This commit is contained in:
wintsa 2026-04-09 09:15:49 +08:00
parent 6fdf336b9e
commit bbc9ad13fe
13 changed files with 1056 additions and 112 deletions

View File

@ -46,6 +46,16 @@ interface ServiceItem {
type: ServiceMethodType
}
const SERVICE_SELECTOR_ROWS: string[][] = [
['0', '2', '3', '4'],
['6', '7', '10', '8', '9', '11', '12', '13'],
['37', '38', '39', '40'],
['21', '22', '23', '24', '25', '26'],
['15', '16', '17', '18', '19', '20'],
['29', '30', '31', '32', '33', '34', '35', '36'],
['41', '42', '43', '44']
]
interface DetailRow {
id: string
code: string
@ -162,6 +172,12 @@ const serviceDict = computed<ServiceItem[]>(() => {
const serviceById = computed(() => new Map(serviceDict.value.map(item => [item.id, item])))
const serviceIdByCode = computed(() => new Map(serviceDict.value.map(item => [item.code, item.id])))
const serviceIdSignature = computed(() => serviceDict.value.map(item => item.id).join('|'))
const serviceSelectorRows = computed(() => {
const available = new Set(serviceDict.value.map(item => item.id))
return SERVICE_SELECTOR_ROWS
.map(row => row.filter(id => available.has(id)))
.filter(row => row.length > 0)
})
const fixedBudgetRow: Pick<DetailRow, 'id' | 'code' | 'name'> = { id: 'fixed-budget-c', code: '', name: t('htZxFw.subtotal') }
/** 判断是否固定汇总行(小计行)。 */
@ -1276,7 +1292,7 @@ onActivated(async () => {
<template>
<TooltipProvider>
<div class="h-full min-h-0 flex flex-col gap-2">
<ServiceCheckboxSelector :services="serviceDict" :model-value="selectedIds"
<ServiceCheckboxSelector :services="serviceDict" :service-rows="serviceSelectorRows" :model-value="selectedIds"
@update:model-value="handleServiceSelectionChange" />
<div class="rounded-lg border bg-card xmMx flex min-h-0 flex-1 flex-col overflow-hidden">

View File

@ -321,7 +321,7 @@ const buildDefaultRows = (projectCountValue = getTargetProjectCount()): DetailRo
consultCategoryFactor: null,
majorFactor: null,
workStageFactor: 1,
workRatio: 100,
workRatio: 1,
budgetFee: null,
budgetFeeBasic: null,
budgetFeeOptional: null,
@ -403,7 +403,7 @@ const buildInvestScaleSingleTotalRow = (
typeof fromDb?.consultCategoryFactor === 'number' ? fromDb.consultCategoryFactor : getDefaultConsultCategoryFactor(),
majorFactor: typeof fromDb?.majorFactor === 'number' ? fromDb.majorFactor : getSingleTotalMajorFactorDefault(),
workStageFactor: typeof fromDb?.workStageFactor === 'number' ? fromDb.workStageFactor : 1,
workRatio: typeof fromDb?.workRatio === 'number' ? fromDb.workRatio : 100,
workRatio: typeof fromDb?.workRatio === 'number' ? fromDb.workRatio : 1,
budgetFee: null,
budgetFeeBasic: null,
budgetFeeOptional: null,

View File

@ -310,7 +310,7 @@ const buildDefaultRows = (projectCountValue = getTargetProjectCount()): DetailRo
consultCategoryFactor: null,
majorFactor: null,
workStageFactor: 1,
workRatio: 100,
workRatio: 1,
budgetFee: null,
budgetFeeBasic: null,
budgetFeeOptional: null,

View File

@ -10,6 +10,7 @@ interface ServiceItem {
const props = defineProps<{
services: ServiceItem[]
serviceRows?: string[][]
modelValue: string[]
}>()
@ -19,6 +20,25 @@ const emit = defineEmits<{
const { t } = useI18n()
const selectedSet = computed(() => new Set(props.modelValue))
const serviceById = computed(() => new Map(props.services.map(item => [item.id, item])))
const groupedRows = computed(() => {
const rows = Array.isArray(props.serviceRows) ? props.serviceRows : []
if (rows.length === 0) return [] as ServiceItem[][]
const used = new Set<string>()
const grouped = rows
.map(row => row.map(id => serviceById.value.get(id)).filter((item): item is ServiceItem => Boolean(item)))
.map(row => row.filter(item => {
if (used.has(item.id)) return false
used.add(item.id)
return true
}))
.filter(row => row.length > 0)
const leftovers = props.services.filter(item => !used.has(item.id))
if (leftovers.length > 0) grouped.push(leftovers)
return grouped
})
const toggleService = (id: string, checked: boolean) => {
const next = new Set(props.modelValue)
@ -45,21 +65,27 @@ const clearAll = () => {
</button>
</div>
<div class="rounded-md border p-1.5">
<div class="flex flex-wrap items-start gap-1">
<label
v-for="item in props.services"
:key="item.id"
class="inline-flex w-fit max-w-full cursor-pointer items-start gap-1.5 rounded-md border px-2 py-1 text-[11px] leading-4 hover:bg-muted/60"
>
<input
type="checkbox"
class="mt-0.5"
:checked="selectedSet.has(item.id)"
@change="toggleService(item.id, ($event.target as HTMLInputElement).checked)"
/>
<span class="text-muted-foreground shrink-0">{{ item.code }}</span>
<span class="text-foreground break-words">{{ item.name }}</span>
</label>
<div v-if="groupedRows.length > 0" class="flex flex-col gap-1.5">
<div
v-for="(row, rowIndex) in groupedRows"
:key="`service-row-${rowIndex}`"
class="flex flex-wrap items-start gap-1"
>
<label
v-for="item in row"
:key="item.id"
class="inline-flex w-fit max-w-full cursor-pointer items-start gap-1.5 rounded-md border px-2 py-1 text-[11px] leading-4 hover:bg-muted/60"
>
<input
type="checkbox"
class="mt-0.5"
:checked="selectedSet.has(item.id)"
@change="toggleService(item.id, ($event.target as HTMLInputElement).checked)"
/>
<span class="text-muted-foreground shrink-0">{{ item.code }}</span>
<span class="text-foreground break-words">{{ item.name }}</span>
</label>
</div>
</div>
<div v-if="props.services.length === 0" class="px-2 py-4 text-center text-xs text-muted-foreground">
{{ t('serviceSelector.empty') }}

View File

@ -707,8 +707,8 @@ watch(canUseLandScale, enabled => {
.quick-calc-layout {
display: grid;
grid-template-columns: minmax(0, 1.45fr) minmax(340px, 0.95fr);
gap: 10px;
grid-template-columns: minmax(0, 1.02fr) minmax(420px, 1.34fr);
gap: 12px;
height: 100%;
min-height: 0;
}
@ -724,6 +724,34 @@ watch(canUseLandScale, enabled => {
overflow: hidden;
}
.quick-calc-panel--form {
position: relative;
border-color: var(--qc-border);
background:
radial-gradient(circle at 84% -12%, color-mix(in srgb, hsl(var(--destructive)) 22%, transparent) 0%, transparent 46%),
radial-gradient(circle at -8% 108%, color-mix(in srgb, hsl(var(--destructive)) 14%, transparent) 0%, transparent 44%),
linear-gradient(160deg, color-mix(in srgb, var(--card) 95%, white) 0%, color-mix(in srgb, var(--card) 86%, var(--muted)) 100%);
box-shadow:
0 22px 44px color-mix(in srgb, hsl(var(--destructive)) 12%, transparent),
0 12px 28px color-mix(in srgb, var(--foreground) 10%, transparent);
}
.quick-calc-panel--form::before {
content: '';
position: absolute;
left: 0;
right: 0;
top: 0;
height: 3px;
background: linear-gradient(
90deg,
color-mix(in srgb, hsl(var(--destructive)) 58%, white) 0%,
color-mix(in srgb, hsl(var(--destructive)) 26%, transparent) 35%,
transparent 100%
);
pointer-events: none;
}
.quick-calc-panel__header {
display: flex;
align-items: flex-start;
@ -1166,7 +1194,7 @@ watch(canUseLandScale, enabled => {
.quick-calc-panel--form .quick-calc-form {
overflow: auto;
padding: 8px;
padding: 10px;
font-size: 14px;
}
@ -1193,8 +1221,11 @@ watch(canUseLandScale, enabled => {
.quick-calc-panel--form .quick-calc-form-section {
gap: 6px;
padding: 8px 10px;
padding: 10px 12px;
border-radius: 12px;
background:
linear-gradient(180deg, color-mix(in srgb, white 30%, transparent) 0%, transparent 100%),
color-mix(in srgb, var(--card) 94%, var(--muted));
}
.quick-calc-form-section__header {
@ -1335,7 +1366,11 @@ watch(canUseLandScale, enabled => {
}
.quick-calc-panel--form .quick-calc-field__readonly--emphasis {
font-size: 14px;
font-size: 18px;
font-weight: 800;
color: color-mix(in srgb, hsl(var(--destructive)) 88%, var(--foreground));
letter-spacing: 0.015em;
text-shadow: 0 1px 0 color-mix(in srgb, white 65%, transparent);
}
.quick-calc-form-hint {

View File

@ -583,7 +583,7 @@ export const enUS = {
consultCategoryFactor: 'Consult Category Factor',
majorFactor: 'Major Factor',
workStageFactor: 'Work Stage Factor (Draft/Review)',
workRatio: 'Work Ratio (%)',
workRatio: 'Service Budget Composition Ratio and Quantity Ratio',
total: 'Total',
remark: 'Remark',
majorGroup: 'Major Code and Major Name'

View File

@ -582,7 +582,7 @@ export const zhCN = {
consultCategoryFactor: '咨询分类系数',
majorFactor: '专业系数',
workStageFactor: '工作环节系数(编审系数)',
workRatio: '工作占比(%)',
workRatio: '服务预算构成比率与数量比',
total: '合计',
remark: '说明',
majorGroup: '专业编码以及工程专业名称'

View File

@ -96,10 +96,14 @@ const activeComponent = computed(() => {
const sideWidthStyle = computed(() => ({ width: 'var(--app-typeline-side-w)' }))
const itemGapStyle = computed(() => ({ gap: 'var(--app-typeline-gap)' }))
const axisColStyle = computed(() => ({ width: 'var(--app-typeline-dot)' }))
const dotStyle = computed(() => ({ width: 'var(--app-typeline-dot)', height: 'var(--app-typeline-dot)' }))
const dotInnerStyle = computed(() => ({ width: 'var(--app-typeline-dot-inner)', height: 'var(--app-typeline-dot-inner)' }))
const labelStyle = computed(() => ({ fontSize: 'var(--app-typeline-label-font)', lineHeight: 'var(--app-typeline-label-line)' }))
const lineStyle = computed(() => ({ left: 'var(--app-typeline-line-left)' }))
const connectorStyle = computed(() => ({
height: 'var(--app-typeline-arrow-shaft-h)',
width: 'var(--app-typeline-arrow-line-w)'
}))
const copyBtnText = ref(t('typeLine.copy'))
const sheetOpen = ref(false)
@ -107,6 +111,34 @@ const sheetOpen = ref(false)
let copyBtnTimer: ReturnType<typeof setTimeout> | null = null
let titleOverflowRafId: number | null = null
const copyTextWithFallback = async (text: string) => {
if (!text) return false
if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {
await navigator.clipboard.writeText(text)
return true
}
if (typeof document === 'undefined') return false
const textarea = document.createElement('textarea')
textarea.value = text
textarea.setAttribute('readonly', 'true')
textarea.style.position = 'fixed'
textarea.style.top = '-9999px'
textarea.style.left = '-9999px'
textarea.style.opacity = '0'
document.body.appendChild(textarea)
try {
textarea.focus()
textarea.select()
textarea.setSelectionRange(0, textarea.value.length)
return document.execCommand('copy')
} finally {
document.body.removeChild(textarea)
}
}
@ -118,8 +150,8 @@ const handleCopySubtitle = async () => {
if (!text) return
try {
await navigator.clipboard.writeText(text)
copyBtnText.value = t('typeLine.copied')
const copied = await copyTextWithFallback(text)
copyBtnText.value = copied ? t('typeLine.copied') : t('typeLine.copyFailed')
} catch (error) {
console.error('copy failed:', error)
copyBtnText.value = t('typeLine.copyFailed')
@ -256,21 +288,29 @@ useMotionValueEvent(
</div>
</div>
<div :class="['flex flex-col gap-6 relative ', (props.title || props.subtitle || props.metaText) ? 'mt-3' : 'mt-6']">
<div :style="lineStyle" class="absolute top-3 bottom-3 w-[1.5px] bg-border/60"></div>
<div v-for="item in props.categories" :key="item.key"
:style="itemGapStyle" class="relative flex items-center cursor-pointer group" @click="switchCategory(item.key)">
<div :class="[
'z-10 rounded-full border-2 flex items-center justify-center transition-all duration-200',
activeCategory === item.key
? 'bg-primary border-primary shadow-[0_0_0_3px_rgba(var(--primary),0.15)]'
: 'bg-background border-muted-foreground/40 group-hover:border-muted-foreground/70'
]" :style="dotStyle">
<div v-if="activeCategory === item.key" class="bg-background rounded-full" :style="dotInnerStyle"></div>
<div :class="['flex flex-col gap-2 relative ', (props.title || props.subtitle || props.metaText) ? 'mt-3' : 'mt-6']">
<div v-for="(item, index) in props.categories" :key="item.key"
:style="itemGapStyle" class="flex items-start cursor-pointer group" @click="switchCategory(item.key)">
<div :style="axisColStyle" class="flex shrink-0 flex-col items-center">
<div :class="[
'z-10 rounded-full border-2 flex shrink-0 items-center justify-center transition-all duration-200',
activeCategory === item.key
? 'bg-primary border-primary shadow-[0_0_0_3px_rgba(var(--primary),0.15)]'
: 'bg-background border-muted-foreground/40 group-hover:border-muted-foreground/70'
]" :style="dotStyle">
<div v-if="activeCategory === item.key" class="bg-background rounded-full" :style="dotInnerStyle"></div>
</div>
<div
v-if="index < props.categories.length - 1"
class="flex flex-col items-center"
:style="{ paddingTop: 'var(--app-typeline-arrow-offset)' }"
aria-hidden="true"
>
<div :style="connectorStyle" class="typeline-arrow-connector"></div>
</div>
</div>
<span :class="[
'transition-colors duration-200',
'pt-px transition-colors duration-200',
activeCategory === item.key
? 'font-semibold text-primary'
: 'text-muted-foreground group-hover:text-foreground'
@ -391,4 +431,23 @@ useMotionValueEvent(
overflow: hidden;
word-break: break-word;
}
.typeline-arrow-connector {
position: relative;
background: color-mix(in oklab, var(--foreground) 22%, var(--border));
border-radius: 9999px;
}
.typeline-arrow-connector::after {
content: '';
position: absolute;
left: 50%;
top: 100%;
transform: translateX(-50%);
width: 0;
height: 0;
border-left: calc(var(--app-typeline-arrow-head-w) / 2) solid transparent;
border-right: calc(var(--app-typeline-arrow-head-w) / 2) solid transparent;
border-top: var(--app-typeline-arrow-head-h) solid color-mix(in oklab, var(--foreground) 22%, var(--border));
}
</style>

View File

@ -334,7 +334,7 @@ const buildDefaultScaleRows = (
consultCategoryFactor: defaultConsultCategoryFactor,
majorFactor: majorFactorMap?.get(id) ?? getDefaultMajorFactorById(id),
workStageFactor: 1,
workRatio: 100
workRatio: 1
}))
}
@ -430,7 +430,7 @@ const getInvestScaleSingleTotalBudgetFee = (
majorFactor: getRowNumberOrFallback(row, 'majorFactor', defaultMajorFactor),
consultCategoryFactor: getRowNumberOrFallback(row, 'consultCategoryFactor', defaultConsultCategoryFactor),
workStageFactor: getRowNumberOrFallback(row, 'workStageFactor', 1),
workRatio: getRowNumberOrFallback(row, 'workRatio', 100)
workRatio: getRowNumberOrFallback(row, 'workRatio', 1)
}, 'cost')
})
}
@ -444,7 +444,7 @@ const getInvestScaleSingleTotalBudgetFee = (
const consultCategoryFactor = getRowNumberOrFallback(onlyRow, 'consultCategoryFactor', defaultConsultCategoryFactor)
const majorFactor = getRowNumberOrFallback(onlyRow, 'majorFactor', defaultMajorFactor)
const workStageFactor = getRowNumberOrFallback(onlyRow, 'workStageFactor', 1)
const workRatio = getRowNumberOrFallback(onlyRow, 'workRatio', 100)
const workRatio = getRowNumberOrFallback(onlyRow, 'workRatio', 1)
return getScaleBudgetFeeByRow({
amount: resolvedTotalAmount,
benchmarkBudgetBasicChecked: typeof onlyRow?.benchmarkBudgetBasicChecked === 'boolean' ? onlyRow.benchmarkBudgetBasicChecked : true,
@ -485,7 +485,7 @@ const buildInvestScaleSingleTotalDetailRows = (
1
)
const workStageFactor = getRowNumberOrFallback(onlyRow, 'workStageFactor', 1)
const workRatio = getRowNumberOrFallback(onlyRow, 'workRatio', 100)
const workRatio = getRowNumberOrFallback(onlyRow, 'workRatio', 1)
return [
{
@ -674,7 +674,7 @@ const normalizeScopedScaleRows = (
(hasWorkStageFactor ? null : 1),
workRatio:
toFiniteNumberOrNull(row.workRatio) ??
(hasWorkRatio ? null : 100)
(hasWorkRatio ? null : 1)
}
})
}

View File

@ -113,7 +113,7 @@ export const buildDefaultScaleRows = (
consultCategoryFactor: defaultFactor,
majorFactor: majorFactorMap?.get(id) ?? getDefaultMajorFactor(id),
workStageFactor: 1,
workRatio: 100
workRatio: 1
}))
}

View File

@ -54,7 +54,7 @@ export const getBenchmarkBudgetByScale = (value: unknown, mode: ScaleMode) => {
*
*
* 1. basic / optional
* 2.
* 2.
* 3. / /
*
* `getBenchmarkBudgetSplitByScale`
@ -78,7 +78,7 @@ export const getScaleBudgetFeeSplit = (params: {
const majorFactor = toFiniteNumberOrNull(params.majorFactor)
const consultCategoryFactor = toFiniteNumberOrNull(params.consultCategoryFactor)
const workStageFactor = hasWorkStageFactor ? toFiniteNumberOrNull(params.workStageFactor) : 1
const workRatio = hasWorkRatio ? toFiniteNumberOrNull(params.workRatio) : 100
const workRatio = hasWorkRatio ? toFiniteNumberOrNull(params.workRatio) : 1
if (
benchmarkBudgetBasic == null ||
@ -95,7 +95,6 @@ export const getScaleBudgetFeeSplit = (params: {
.mul(majorFactor)
.mul(workStageFactor)
.mul(workRatio)
.div(100)
const roundedBenchmarkBudget = roundTo(addNumbers(benchmarkBudgetBasic, benchmarkBudgetOptional), 2)
const basic = roundTo(toDecimal(benchmarkBudgetBasic).mul(multiplier), 2)
const optional = roundTo(toDecimal(benchmarkBudgetOptional).mul(multiplier), 2)
@ -121,7 +120,7 @@ export const getScaleBudgetFee = (params: {
const majorFactor = toFiniteNumberOrNull(params.majorFactor)
const consultCategoryFactor = toFiniteNumberOrNull(params.consultCategoryFactor)
const workStageFactor = hasWorkStageFactor ? toFiniteNumberOrNull(params.workStageFactor) : 1
const workRatio = hasWorkRatio ? toFiniteNumberOrNull(params.workRatio) : 100
const workRatio = hasWorkRatio ? toFiniteNumberOrNull(params.workRatio) : 1
if (
benchmarkBudget == null ||
@ -138,6 +137,5 @@ export const getScaleBudgetFee = (params: {
.mul(majorFactor)
.mul(workStageFactor)
.mul(workRatio)
.div(100)
return roundTo(toDecimal(roundedBenchmarkBudget).mul(multiplier), 2)
}

View File

@ -173,44 +173,819 @@ export const majorList = {
export const serviceList = {
0: { code: 'D1', name: '全过程造价咨询', maxCoe: null, minCoe: null, defCoe: 1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 1, enableInvestScale: true, enableLandScale: false, investScaleSingleTotal: true, amount: false, workDay: true },
1: { code: 'D2', name: '分阶段造价咨询', maxCoe: null, minCoe: null, defCoe: null, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 2, enableInvestScale: null, enableLandScale: null, investScaleSingleTotal: null, amount: null, workDay: null },
2: { code: 'D2-1', name: '前期阶段造价咨询', quickLabel: '项目前期阶段造价咨询', maxCoe: null, minCoe: null, defCoe: 0.5, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 3, enableInvestScale: true, enableLandScale: false, investScaleSingleTotal: true, amount: false, workDay: true },
3: { code: 'D2-2-1', name: '实施阶段造价咨询(公路、水运)', quickLabel: '项目实施阶段造价咨询', maxCoe: null, minCoe: null, defCoe: 0.55, desc: '本系数适用于公路和水运工程。', isRoad: true, isRailway: false, isWaterway: true, mutiple: false, order: 4, enableInvestScale: true, enableLandScale: false, investScaleSingleTotal: true, amount: false, workDay: true },
4: { code: 'D2-2-2', name: '实施阶段造价咨询(铁路)', quickLabel: '项目实施阶段造价咨询', maxCoe: null, minCoe: null, defCoe: 0.6, desc: '本系数适用于铁路工程。', isRoad: false, isRailway: true, isWaterway: false, mutiple: false, order: 5, enableInvestScale: true, enableLandScale: false, investScaleSingleTotal: true, amount: false, workDay: true },
5: { code: 'D3', name: '基本造价咨询', maxCoe: null, minCoe: null, defCoe: null, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 6, enableInvestScale: null, enableLandScale: null, investScaleSingleTotal: null, amount: null, workDay: null },
6: { code: 'D3-1', name: '投资估算', maxCoe: null, minCoe: null, defCoe: 0.1, desc: '委托同一咨询人同时负责D3-1和D3-2时D3-1和D3-2的合计调整系数为0.25。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 7, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
7: { code: 'D3-2', name: '设计概算', maxCoe: null, minCoe: null, defCoe: 0.2, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 8, enableInvestScale: true, enableLandScale: false, investScaleSingleTotal: true, amount: false, workDay: true },
8: { code: 'D3-3', name: '施工图预算', maxCoe: null, minCoe: null, defCoe: 0.25, desc: '委托同一咨询人同时负责D3-3和D3-4时D3-3和D3-4的合计调整系数为0.3。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 9, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
9: { code: 'D3-4', name: '招标工程量清单及清单预算(或最高投标限价)', maxCoe: null, minCoe: null, defCoe: 0.15, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 10, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
10: { code: 'D3-5', name: '清理概算(仅限铁路)', maxCoe: null, minCoe: null, defCoe: 0.2, desc: '本系数适用于铁路工程。', isRoad: false, isRailway: true, isWaterway: false, mutiple: false, order: 11, enableInvestScale: true, enableLandScale: false, investScaleSingleTotal: true, amount: false, workDay: true },
11: { code: 'D3-6-1', name: '合同(工程)结算', maxCoe: null, minCoe: null, defCoe: 0.3, desc: '本系数适用于公路和水运工程。', isRoad: true, isRailway: false, isWaterway: true, mutiple: false, order: 12, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
12: { code: 'D3-6-2', name: '合同(工程)结算', maxCoe: null, minCoe: null, defCoe: 0.2, desc: '本系数适用于铁路工程。', isRoad: false, isRailway: true, isWaterway: false, mutiple: false, order: 13, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
13: { code: 'D3-7', name: '竣工决算', maxCoe: null, minCoe: null, defCoe: 0.1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 14, enableInvestScale: true, enableLandScale: false, investScaleSingleTotal: true, amount: false, workDay: true },
14: { code: 'D4', name: '专项造价咨询', maxCoe: null, minCoe: null, defCoe: null, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 15, enableInvestScale: null, enableLandScale: null, investScaleSingleTotal: null, amount: null, workDay: null },
15: { code: 'D4-1', name: '工程造价顾问', maxCoe: null, minCoe: null, defCoe: 1, desc: '本表系数适用于采用工作量计价法基准预算的调整系数。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 16, enableInvestScale: false, enableLandScale: false, investScaleSingleTotal: null, amount: true, workDay: true },
16: { code: 'D4-2', name: '造价政策制(修)订', maxCoe: null, minCoe: null, defCoe: 1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 17, enableInvestScale: false, enableLandScale: false, investScaleSingleTotal: null, amount: true, workDay: true },
17: { code: 'D4-3', name: '造价科学与技术研究', maxCoe: null, minCoe: null, defCoe: 1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 18, enableInvestScale: false, enableLandScale: false, investScaleSingleTotal: null, amount: true, workDay: true },
18: { code: 'D4-4', name: '定额测定', maxCoe: null, minCoe: null, defCoe: 1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 19, enableInvestScale: false, enableLandScale: false, investScaleSingleTotal: null, amount: true, workDay: true },
19: { code: 'D4-5', name: '造价信息咨询', maxCoe: null, minCoe: null, defCoe: 1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 20, enableInvestScale: false, enableLandScale: false, investScaleSingleTotal: null, amount: true, workDay: true },
20: { code: 'D4-6', name: '造价鉴定', maxCoe: null, minCoe: null, defCoe: 0.5, desc: '本表系数适用于采用规模计价法基准预算的调整系数。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 21, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
21: { code: 'D4-7', name: '工程成本测算', maxCoe: null, minCoe: null, defCoe: 0.1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 22, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
22: { code: 'D4-8', name: '工程成本核算', maxCoe: null, minCoe: null, defCoe: 0.1, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 23, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
23: { code: 'D4-9', name: '计算工程量', maxCoe: null, minCoe: null, defCoe: 0.2, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 24, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
24: { code: 'D4-10', name: '工程变更费用咨询', maxCoe: null, minCoe: null, defCoe: 0.5, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 25, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
25: { code: 'D4-11', name: '调整估算', maxCoe: 0.2, minCoe: 0.1, defCoe: 0.15, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 26, enableInvestScale: true, enableLandScale: false, investScaleSingleTotal: true, amount: false, workDay: true },
26: { code: 'D4-12', name: '调整概算', maxCoe: 0.3, minCoe: 0.15, defCoe: 0.225, desc: '本表系数适用于采用规模计价法基准预算的系数;依据其调整时期所在建设阶段和基础资料的不同,其系数取值不同。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 27, enableInvestScale: true, enableLandScale: false, investScaleSingleTotal: true, amount: false, workDay: true },
27: { code: 'D4-13', name: '造价检查', maxCoe: null, minCoe: null, defCoe: null, desc: '可按照服务工日数量×服务工日人工单价×综合预算系数;也可按照服务工日数量×服务工日综合预算单价。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 28, enableInvestScale: false, enableLandScale: false, investScaleSingleTotal: null, amount: false, workDay: true },
28: { code: 'D4-14', name: '其他专项咨询', maxCoe: null, minCoe: null, defCoe: null, desc: '可参照相同或相似服务的系数。', isRoad: true, isRailway: true, isWaterway: true, mutiple: false, order: 29, enableInvestScale: false, enableLandScale: false, investScaleSingleTotal: null, amount: false, workDay: true },
29: { code: 'D4-15-1', name: '造价数据测试验证(估算)', maxCoe: null, minCoe: null, defCoe: 0.04, desc: '委托同一咨询人同时负责D3-1和D3-2时D3-1和D3-2的合计调整系数为0.25。', isRoad: true, isRailway: true, isWaterway: true, mutiple: true, order: 30, enableInvestScale: true, enableLandScale: false, investScaleSingleTotal: true, amount: false, workDay: true },
30: { code: 'D4-15-2', name: '造价数据测试验证(概算)', maxCoe: null, minCoe: null, defCoe: 0.08, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: true, order: 31, enableInvestScale: true, enableLandScale: false, investScaleSingleTotal: true, amount: false, workDay: true },
31: { code: 'D4-15-3', name: '造价数据测试验证(施工图预算)', maxCoe: null, minCoe: null, defCoe: 0.1, desc: '委托同一咨询人同时负责D3-3和D3-4时D3-3和D3-4的合计调整系数为0.3。', isRoad: true, isRailway: true, isWaterway: true, mutiple: true, order: 32, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
32: { code: 'D4-15-4', name: '造价数据测试验证(招标工程量清单及清单预算(或最高投标限价))', maxCoe: null, minCoe: null, defCoe: 0.06, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: true, order: 33, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
33: { code: 'D4-15-5', name: '造价数据测试验证(清理概算(仅限铁路))', maxCoe: null, minCoe: null, defCoe: 0.08, desc: '本系数适用于铁路工程。', isRoad: false, isRailway: true, isWaterway: false, mutiple: true, order: 34, enableInvestScale: true, enableLandScale: false, investScaleSingleTotal: true, amount: false, workDay: true },
34: { code: 'D4-15-6', name: '造价数据测试验证(合同(工程)结算)', maxCoe: null, minCoe: null, defCoe: 0.12, desc: '本系数适用于公路和水运工程。', isRoad: true, isRailway: false, isWaterway: true, mutiple: true, order: 35, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
35: { code: 'D4-15-7', name: '造价数据测试验证(合同(工程)结算)', maxCoe: null, minCoe: null, defCoe: 0.08, desc: '本系数适用于铁路工程。', isRoad: false, isRailway: true, isWaterway: false, mutiple: true, order: 36, enableInvestScale: true, enableLandScale: true, investScaleSingleTotal: false, amount: false, workDay: true },
36: { code: 'D4-15-8', name: '造价数据测试验证(竣工决算)', maxCoe: null, minCoe: null, defCoe: 0.04, desc: '', isRoad: true, isRailway: true, isWaterway: true, mutiple: true, order: 37, enableInvestScale: true, enableLandScale: false, investScaleSingleTotal: true, amount: false, workDay: true },
};
0: {
code: 'D1',
name: '全过程造价咨询',
maxCoe: null,
minCoe: null,
defCoe: 1,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 1,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
1: {
code: 'D2',
name: '分阶段造价咨询',
maxCoe: null,
minCoe: null,
defCoe: null,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 2,
enableInvestScale: null,
enableLandScale: null,
investScaleSingleTotal: null,
amount: null,
workDay: null
},
2: {
code: 'D2-1',
name: '前期阶段造价咨询',
maxCoe: null,
minCoe: null,
defCoe: 0.5,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 3,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
3: {
code: 'D2-2-1',
name: '实施阶段造价咨询(公路、水运)',
maxCoe: null,
minCoe: null,
defCoe: 0.55,
desc: '本系数适用于公路和水运工程。',
isRoad: true,
isRailway: false,
isWaterway: true,
mutiple: false,
order: 4,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
4: {
code: 'D2-2-2',
name: '实施阶段造价咨询(铁路)',
maxCoe: null,
minCoe: null,
defCoe: 0.6,
desc: '本系数适用于铁路工程。',
isRoad: false,
isRailway: true,
isWaterway: false,
mutiple: false,
order: 5,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
5: {
code: 'D3',
name: '基本造价咨询',
maxCoe: null,
minCoe: null,
defCoe: null,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 6,
enableInvestScale: null,
enableLandScale: null,
investScaleSingleTotal: null,
amount: null,
workDay: null
},
6: {
code: 'D3-1',
name: '投资估算',
maxCoe: null,
minCoe: null,
defCoe: 0.1,
desc: '委托同一咨询人同时负责D3-1和D3-2时D3-1和D3-2的合计调整系数为0.25。',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 7,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
7: {
code: 'D3-2',
name: '设计概算',
maxCoe: null,
minCoe: null,
defCoe: 0.2,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 8,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
8: {
code: 'D3-3',
name: '施工图预算',
maxCoe: null,
minCoe: null,
defCoe: 0.25,
desc: '委托同一咨询人同时负责D3-3和D3-4时D3-3和D3-4的合计调整系数为0.3。',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 9,
enableInvestScale: true,
enableLandScale: true,
investScaleSingleTotal: false,
amount: false,
workDay: true
},
9: {
code: 'D3-4',
name: '招标工程量清单及清单预算(或最高投标限价)',
maxCoe: null,
minCoe: null,
defCoe: 0.15,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 10,
enableInvestScale: true,
enableLandScale: true,
investScaleSingleTotal: false,
amount: false,
workDay: true
},
10: {
code: 'D3-5',
name: '清理概算(仅限铁路)',
maxCoe: null,
minCoe: null,
defCoe: 0.2,
desc: '本系数适用于铁路工程。',
isRoad: false,
isRailway: true,
isWaterway: false,
mutiple: false,
order: 11,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
11: {
code: 'D3-6-1',
name: '合同(工程)结算',
maxCoe: null,
minCoe: null,
defCoe: 0.3,
desc: '本系数适用于公路和水运工程。',
isRoad: true,
isRailway: false,
isWaterway: true,
mutiple: false,
order: 12,
enableInvestScale: true,
enableLandScale: true,
investScaleSingleTotal: false,
amount: false,
workDay: true
},
12: {
code: 'D3-6-2',
name: '合同(工程)结算',
maxCoe: null,
minCoe: null,
defCoe: 0.2,
desc: '本系数适用于铁路工程。',
isRoad: false,
isRailway: true,
isWaterway: false,
mutiple: false,
order: 13,
enableInvestScale: true,
enableLandScale: true,
investScaleSingleTotal: false,
amount: false,
workDay: true
},
13: {
code: 'D3-7',
name: '竣工决算',
maxCoe: null,
minCoe: null,
defCoe: 0.1,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 14,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
14: {
code: 'D4',
name: '专项造价咨询',
maxCoe: null,
minCoe: null,
defCoe: null,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 19,
enableInvestScale: null,
enableLandScale: null,
investScaleSingleTotal: null,
amount: null,
workDay: null
},
15: {
code: 'D4-1',
name: '工程造价顾问',
maxCoe: null,
minCoe: null,
defCoe: 1,
desc: '本表系数适用于采用工作量计价法基准预算的调整系数。',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 20,
enableInvestScale: false,
enableLandScale: false,
investScaleSingleTotal: null,
amount: true,
workDay: true
},
16: {
code: 'D4-2',
name: '造价政策制(修)订',
maxCoe: null,
minCoe: null,
defCoe: 1,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 21,
enableInvestScale: false,
enableLandScale: false,
investScaleSingleTotal: null,
amount: true,
workDay: true
},
17: {
code: 'D4-3',
name: '造价科学与技术研究',
maxCoe: null,
minCoe: null,
defCoe: 1,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 22,
enableInvestScale: false,
enableLandScale: false,
investScaleSingleTotal: null,
amount: true,
workDay: true
},
18: {
code: 'D4-4',
name: '定额测定',
maxCoe: null,
minCoe: null,
defCoe: 1,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 23,
enableInvestScale: false,
enableLandScale: false,
investScaleSingleTotal: null,
amount: true,
workDay: true
},
19: {
code: 'D4-5',
name: '造价信息咨询',
maxCoe: null,
minCoe: null,
defCoe: 1,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 24,
enableInvestScale: false,
enableLandScale: false,
investScaleSingleTotal: null,
amount: true,
workDay: true
},
20: {
code: 'D4-6',
name: '造价鉴定',
maxCoe: null,
minCoe: null,
defCoe: 0.5,
desc: '本表系数适用于采用规模计价法基准预算的调整系数。',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 25,
enableInvestScale: true,
enableLandScale: true,
investScaleSingleTotal: false,
amount: false,
workDay: true
},
21: {
code: 'D4-7',
name: '工程成本测算',
maxCoe: null,
minCoe: null,
defCoe: 0.1,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 26,
enableInvestScale: true,
enableLandScale: true,
investScaleSingleTotal: false,
amount: false,
workDay: true
},
22: {
code: 'D4-8',
name: '工程成本核算',
maxCoe: null,
minCoe: null,
defCoe: 0.1,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 27,
enableInvestScale: true,
enableLandScale: true,
investScaleSingleTotal: false,
amount: false,
workDay: true
},
23: {
code: 'D4-9',
name: '计算工程量',
maxCoe: null,
minCoe: null,
defCoe: 0.2,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 28,
enableInvestScale: true,
enableLandScale: true,
investScaleSingleTotal: false,
amount: false,
workDay: true
},
24: {
code: 'D4-10',
name: '工程变更费用咨询',
maxCoe: null,
minCoe: null,
defCoe: 0.5,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 29,
enableInvestScale: true,
enableLandScale: true,
investScaleSingleTotal: false,
amount: false,
workDay: true
},
25: {
code: 'D4-11',
name: '调整估算',
maxCoe: 0.2,
minCoe: 0.1,
defCoe: 0.15,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 30,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
26: {
code: 'D4-12',
name: '调整概算',
maxCoe: 0.3,
minCoe: 0.15,
defCoe: 0.225,
desc: '本表系数适用于采用规模计价法基准预算的系数;依据其调整时期所在建设阶段和基础资料的不同,其系数取值不同。',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 31,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
27: {
code: 'D4-13',
name: '造价检查',
maxCoe: null,
minCoe: null,
defCoe: null,
desc: '可按照服务工日数量×服务工日人工单价×综合预算系数;也可按照服务工日数量×服务工日综合预算单价。',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 32,
enableInvestScale: false,
enableLandScale: false,
investScaleSingleTotal: null,
amount: false,
workDay: true
},
28: {
code: 'D4-14',
name: '其他专项咨询',
maxCoe: null,
minCoe: null,
defCoe: null,
desc: '可参照相同或相似服务的系数。',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 33,
enableInvestScale: false,
enableLandScale: false,
investScaleSingleTotal: null,
amount: false,
workDay: true
},
29: {
code: 'D4-15-1',
name: '造价数据测试验证(估算)',
maxCoe: null,
minCoe: null,
defCoe: 0.04,
desc: '委托同一咨询人同时负责D3-1和D3-2时D3-1和D3-2的合计调整系数为0.25。',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: true,
order: 34,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
30: {
code: 'D4-15-2',
name: '造价数据测试验证(概算)',
maxCoe: null,
minCoe: null,
defCoe: 0.08,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: true,
order: 35,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
31: {
code: 'D4-15-3',
name: '造价数据测试验证(施工图预算)',
maxCoe: null,
minCoe: null,
defCoe: 0.1,
desc: '委托同一咨询人同时负责D3-3和D3-4时D3-3和D3-4的合计调整系数为0.3。',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: true,
order: 36,
enableInvestScale: true,
enableLandScale: true,
investScaleSingleTotal: false,
amount: false,
workDay: true
},
32: {
code: 'D4-15-4',
name: '造价数据测试验证(招标工程量清单及清单预算(或最高投标限价))',
maxCoe: null,
minCoe: null,
defCoe: 0.06,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: true,
order: 37,
enableInvestScale: true,
enableLandScale: true,
investScaleSingleTotal: false,
amount: false,
workDay: true
},
33: {
code: 'D4-15-5',
name: '造价数据测试验证(清理概算(仅限铁路))',
maxCoe: null,
minCoe: null,
defCoe: 0.08,
desc: '本系数适用于铁路工程。',
isRoad: false,
isRailway: true,
isWaterway: false,
mutiple: true,
order: 38,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
34: {
code: 'D4-15-6',
name: '造价数据测试验证(合同(工程)结算)',
maxCoe: null,
minCoe: null,
defCoe: 0.12,
desc: '本系数适用于公路和水运工程。',
isRoad: true,
isRailway: false,
isWaterway: true,
mutiple: true,
order: 39,
enableInvestScale: true,
enableLandScale: true,
investScaleSingleTotal: false,
amount: false,
workDay: true
},
35: {
code: 'D4-15-7',
name: '造价数据测试验证(合同(工程)结算)',
maxCoe: null,
minCoe: null,
defCoe: 0.08,
desc: '本系数适用于铁路工程。',
isRoad: false,
isRailway: true,
isWaterway: false,
mutiple: true,
order: 40,
enableInvestScale: true,
enableLandScale: true,
investScaleSingleTotal: false,
amount: false,
workDay: true
},
36: {
code: 'D4-15-8',
name: '造价数据测试验证(竣工决算)',
maxCoe: null,
minCoe: null,
defCoe: 0.04,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: true,
order: 41,
enableInvestScale: true,
enableLandScale: false,
investScaleSingleTotal: true,
amount: false,
workDay: true
},
37: {
code: 'D3-1',
name: '投资估算•单独委托征地补偿与拆迁补偿',
maxCoe: null,
minCoe: null,
defCoe: 0.1,
desc: '委托同一咨询人同时负责D3-1和D3-2时D3-1和D3-2的合计调整系数为0.25。',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 15,
enableInvestScale: false,
enableLandScale: true,
investScaleSingleTotal: null,
amount: false,
workDay: true
},
38: {
code: 'D3-2',
name: '设计概算•单独委托征地补偿与拆迁补偿',
maxCoe: null,
minCoe: null,
defCoe: 0.2,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 16,
enableInvestScale: false,
enableLandScale: true,
investScaleSingleTotal: null,
amount: false,
workDay: true
},
39: {
code: 'D3-5',
name: '清理概算•单独委托征地补偿与拆迁补偿',
maxCoe: null,
minCoe: null,
defCoe: 0.2,
desc: '本系数适用于铁路工程。',
isRoad: false,
isRailway: true,
isWaterway: false,
mutiple: false,
order: 17,
enableInvestScale: false,
enableLandScale: true,
investScaleSingleTotal: null,
amount: false,
workDay: true
},
40: {
code: 'D3-7',
name: '竣工决算•单独委托征地补偿与拆迁补偿',
maxCoe: null,
minCoe: null,
defCoe: 0.1,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: false,
order: 18,
enableInvestScale: false,
enableLandScale: true,
investScaleSingleTotal: null,
amount: false,
workDay: true
},
41: {
code: 'D4-15-1',
name: '造价数据测试验证(投资估算•征地补偿与拆迁补偿)',
maxCoe: null,
minCoe: null,
defCoe: 0.04,
desc: '委托同一咨询人同时负责D3-1和D3-2时D3-1和D3-2的合计调整系数为0.25。',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: true,
order: 42,
enableInvestScale: false,
enableLandScale: true,
investScaleSingleTotal: null,
amount: false,
workDay: true
},
42: {
code: 'D4-15-2',
name: '造价数据测试验证(设计概算•征地补偿与拆迁补偿)',
maxCoe: null,
minCoe: null,
defCoe: 0.08,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: true,
order: 43,
enableInvestScale: false,
enableLandScale: true,
investScaleSingleTotal: null,
amount: false,
workDay: true
},
43: {
code: 'D4-15-5',
name: '造价数据测试验证(清理概算•征地补偿与拆迁补偿)',
maxCoe: null,
minCoe: null,
defCoe: 0.08,
desc: '本系数适用于铁路工程。',
isRoad: false,
isRailway: true,
isWaterway: false,
mutiple: true,
order: 44,
enableInvestScale: false,
enableLandScale: true,
investScaleSingleTotal: null,
amount: false,
workDay: true
},
44: {
code: 'D4-15-8',
name: '造价数据测试验证(竣工决算•征地补偿与拆迁补偿)',
maxCoe: null,
minCoe: null,
defCoe: 0.04,
desc: '',
isRoad: true,
isRailway: true,
isWaterway: true,
mutiple: true,
order: 45,
enableInvestScale: false,
enableLandScale: true,
investScaleSingleTotal: null,
amount: false,
workDay: true
}
}
export const taskList = {

View File

@ -57,12 +57,17 @@ html {
--app-grid-row-h: 2.25rem;
--app-grid-font-size: 0.875rem;
--app-typeline-side-w: 12.5rem;
--app-typeline-gap: 0.75rem;
--app-typeline-gap: 0.625rem;
--app-typeline-label-font: 0.8125rem;
--app-typeline-label-line: 1rem;
--app-typeline-dot: 1.25rem;
--app-typeline-dot-inner: 0.375rem;
--app-typeline-dot: 1.125rem;
--app-typeline-dot-inner: 0.3125rem;
--app-typeline-line-left: 0.5625rem;
--app-typeline-arrow-offset: 0.125rem;
--app-typeline-arrow-shaft-h: 0.9375rem;
--app-typeline-arrow-line-w: 0.09375rem;
--app-typeline-arrow-head-w: 0.5rem;
--app-typeline-arrow-head-h: 0.375rem;
--radius: 0.625rem;
--background: oklch(1 0 0);
--foreground: oklch(0.145 0 0);
@ -418,12 +423,17 @@ input[inputmode='numeric'] {
--app-grid-row-h: 2.125rem;
--app-grid-font-size: 0.8125rem;
--app-typeline-side-w: 11.5rem;
--app-typeline-gap: 0.625rem;
--app-typeline-gap: 0.5625rem;
--app-typeline-label-font: 0.75rem;
--app-typeline-label-line: 0.95rem;
--app-typeline-dot: 1.125rem;
--app-typeline-dot-inner: 0.3125rem;
--app-typeline-dot: 1rem;
--app-typeline-dot-inner: 0.25rem;
--app-typeline-line-left: 0.5rem;
--app-typeline-arrow-offset: 0.125rem;
--app-typeline-arrow-shaft-h: 0.8125rem;
--app-typeline-arrow-line-w: 0.09375rem;
--app-typeline-arrow-head-w: 0.4375rem;
--app-typeline-arrow-head-h: 0.3125rem;
}
}
@ -439,12 +449,17 @@ input[inputmode='numeric'] {
--app-grid-row-h: 2.25rem;
--app-grid-font-size: 0.875rem;
--app-typeline-side-w: 12rem;
--app-typeline-gap: 0.6875rem;
--app-typeline-gap: 0.59375rem;
--app-typeline-label-font: 0.8125rem;
--app-typeline-label-line: 1rem;
--app-typeline-dot: 1.1875rem;
--app-typeline-dot-inner: 0.375rem;
--app-typeline-dot: 1.0625rem;
--app-typeline-dot-inner: 0.3125rem;
--app-typeline-line-left: 0.5625rem;
--app-typeline-arrow-offset: 0.125rem;
--app-typeline-arrow-shaft-h: 0.875rem;
--app-typeline-arrow-line-w: 0.09375rem;
--app-typeline-arrow-head-w: 0.46875rem;
--app-typeline-arrow-head-h: 0.34375rem;
}
}
@ -460,12 +475,17 @@ input[inputmode='numeric'] {
--app-grid-row-h: 2.25rem;
--app-grid-font-size: 0.875rem;
--app-typeline-side-w: 12.5rem;
--app-typeline-gap: 0.75rem;
--app-typeline-gap: 0.625rem;
--app-typeline-label-font: 0.875rem;
--app-typeline-label-line: 1.1rem;
--app-typeline-dot: 1.25rem;
--app-typeline-dot-inner: 0.4375rem;
--app-typeline-dot: 1.125rem;
--app-typeline-dot-inner: 0.375rem;
--app-typeline-line-left: 0.625rem;
--app-typeline-arrow-offset: 0.125rem;
--app-typeline-arrow-shaft-h: 0.9375rem;
--app-typeline-arrow-line-w: 0.09375rem;
--app-typeline-arrow-head-w: 0.5rem;
--app-typeline-arrow-head-h: 0.375rem;
}
}
@ -481,12 +501,17 @@ input[inputmode='numeric'] {
--app-grid-row-h: 2.5rem;
--app-grid-font-size: 0.9375rem;
--app-typeline-side-w: 13rem;
--app-typeline-gap: 0.8125rem;
--app-typeline-gap: 0.6875rem;
--app-typeline-label-font: 0.9375rem;
--app-typeline-label-line: 1.2rem;
--app-typeline-dot: 1.375rem;
--app-typeline-dot-inner: 0.5rem;
--app-typeline-dot: 1.25rem;
--app-typeline-dot-inner: 0.4375rem;
--app-typeline-line-left: 0.6875rem;
--app-typeline-arrow-offset: 0.15625rem;
--app-typeline-arrow-shaft-h: 1rem;
--app-typeline-arrow-line-w: 0.125rem;
--app-typeline-arrow-head-w: 0.5625rem;
--app-typeline-arrow-head-h: 0.40625rem;
}
}
@ -502,12 +527,17 @@ input[inputmode='numeric'] {
--app-grid-row-h: 2.625rem;
--app-grid-font-size: 1rem;
--app-typeline-side-w: 13.5rem;
--app-typeline-gap: 0.875rem;
--app-typeline-gap: 0.75rem;
--app-typeline-label-font: 1rem;
--app-typeline-label-line: 1.25rem;
--app-typeline-dot: 1.5rem;
--app-typeline-dot-inner: 0.5625rem;
--app-typeline-dot: 1.375rem;
--app-typeline-dot-inner: 0.5rem;
--app-typeline-line-left: 0.75rem;
--app-typeline-arrow-offset: 0.1875rem;
--app-typeline-arrow-shaft-h: 1.125rem;
--app-typeline-arrow-line-w: 0.125rem;
--app-typeline-arrow-head-w: 0.625rem;
--app-typeline-arrow-head-h: 0.4375rem;
}
}
@ -523,11 +553,16 @@ input[inputmode='numeric'] {
--app-grid-row-h: 2.875rem;
--app-grid-font-size: 1.0625rem;
--app-typeline-side-w: 14.5rem;
--app-typeline-gap: 1rem;
--app-typeline-gap: 0.875rem;
--app-typeline-label-font: 1.0625rem;
--app-typeline-label-line: 1.35rem;
--app-typeline-dot: 1.625rem;
--app-typeline-dot-inner: 0.625rem;
--app-typeline-dot: 1.5rem;
--app-typeline-dot-inner: 0.5625rem;
--app-typeline-line-left: 0.8125rem;
--app-typeline-arrow-offset: 0.21875rem;
--app-typeline-arrow-shaft-h: 1.25rem;
--app-typeline-arrow-line-w: 0.125rem;
--app-typeline-arrow-head-w: 0.6875rem;
--app-typeline-arrow-head-h: 0.5rem;
}
}