优化目录

This commit is contained in:
zwgczx committed 2026-03-17 12:05:22 +08:00
1 parent 4e343cccf1
commit 2b18fe9991
46 files changed
+1061 -1308

No files matched your search

+31 -8
View File
@@ -13,7 +13,7 @@
<script setup lang="ts">
import { computed, defineAsyncComponent, defineComponent, h, markRaw, type Component } from 'vue'
import TypeLine from '@/layout/typeLine.vue'
import MethodUnavailableNotice from '@/components/common/MethodUnavailableNotice.vue'
import MethodUnavailableNotice from '@/components/shared/MethodUnavailableNotice.vue'
interface ServiceMethodType {
scale?: boolean | null
@@ -59,7 +59,7 @@ const createPricingPane = (name: string) =>
name,
setup() {
const AsyncPricingView = defineAsyncComponent({
loader: () => import(`@/components/views/pricingView/${name}.vue`),
loader: () => import(`@/components/pricing/${name}.vue`),
onError: err => {
console.error('加载 PricingMethodView 组件失败:', err)
}
@@ -89,6 +89,27 @@ const landScaleView = createPricingPane('LandScalePricingPane')
const workloadView = createPricingPane('WorkloadPricingPane')
const hourlyView = createPricingPane('HourlyPricingPane')
const workContentPane = markRaw(
defineComponent({
name: 'WorkContentPane',
setup() {
const AsyncWorkContentGrid = defineAsyncComponent({
loader: () => import('@/components/shared/WorkContentGrid.vue'),
onError: err => {
console.error('加载 WorkContentGrid 组件失败:', err)
}
})
return () => h(AsyncWorkContentGrid, {
title: '工作内容',
storageKey: `work-content-${props.contractId}-${props.serviceId}`,
serviceId: props.serviceId,
dictMode: 'service'
})
}
})
)
const investmentScaleUnavailableView = createMethodUnavailablePane(
'该服务不适用投资规模法',
'当前服务未启用规模法,投资规模法不可编辑。'
@@ -107,6 +128,7 @@ const hourlyUnavailableView = createMethodUnavailablePane(
)
const pricingCategories = computed<PricingCategoryItem[]>(() => [
{
key: 'investment-scale-method',
label: '投资规模法',
@@ -126,14 +148,15 @@ const pricingCategories = computed<PricingCategoryItem[]>(() => [
key: 'hourly-method',
label: '工时法',
component: methodAvailability.value.hourly ? hourlyView : hourlyUnavailableView
}
},
{
key: 'work-content',
label: '工作内容',
component: workContentPane
},
])
const defaultCategory = computed(() => {
if (methodAvailability.value.investmentScale) return 'investment-scale-method'
if (methodAvailability.value.landScale) return 'land-scale-method'
if (methodAvailability.value.workload) return 'workload-method'
if (methodAvailability.value.hourly) return 'hourly-method'
return 'investment-scale-method'
return 'work-content'
})
</script>