优化目录
This commit is contained in:
1 parent
4e343cccf1
commit
2b18fe9991
46 files changed
+1061
-1308
No files matched your search
@@ -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>
|
||||
Reference in new issue
Block a user