diff --git a/.env b/.env index 87dd35d..6de2b25 100644 --- a/.env +++ b/.env @@ -1,5 +1,5 @@ # 标题 -VITE_APP_TITLE=产值管理系统 +VITE_APP_TITLE=项目产值管理系统 # 项目本地运行端口号 VITE_PORT=80 diff --git a/index.html b/index.html index 5d9d876..4cfe533 100644 --- a/index.html +++ b/index.html @@ -7,11 +7,11 @@ %VITE_APP_TITLE% diff --git a/src/api/tjt/planning/index.ts b/src/api/tjt/planning/index.ts index 529fec3..a02d1e3 100644 --- a/src/api/tjt/planning/index.ts +++ b/src/api/tjt/planning/index.ts @@ -3,12 +3,18 @@ import request from '@/config/axios' export interface ProjectPlanningVO { id?: number projectId: number + sortNo?: number ownershipType: string calculationMethod: string planningContent: string planningAmount?: number + contractValueQuantity?: number + contractValueUnitPrice?: number managementFeeRate?: number managementFee?: number + vatRate?: number + vatAmount?: number + projectBudgetOutputValue?: number implementationTeam?: string planningStartYear?: number planningArea?: number @@ -44,7 +50,10 @@ export type ProjectPlanningSaveVO = Omit< ProjectPlanningVO, | 'allocatedAmount' | 'pendingAmount' + | 'planningAmount' | 'managementFee' + | 'vatAmount' + | 'projectBudgetOutputValue' | 'contractUnitPrice' | 'totalAdjustmentFactor' | 'assessmentArea' diff --git a/src/api/tjt/profit/index.ts b/src/api/tjt/profit/index.ts index 529be50..1bc30dc 100644 --- a/src/api/tjt/profit/index.ts +++ b/src/api/tjt/profit/index.ts @@ -3,6 +3,7 @@ import request from '@/config/axios' export interface ProjectProfitVO { projectId: number projectName: string + sortNo?: number contractSignedFlag: boolean contractAmount?: number finalSettlementAmount?: number diff --git a/src/api/tjt/project/index.ts b/src/api/tjt/project/index.ts index 1468c96..358113c 100644 --- a/src/api/tjt/project/index.ts +++ b/src/api/tjt/project/index.ts @@ -13,6 +13,7 @@ export interface ProjectRolePersonVO { export interface ProjectVO { id?: number projectName: string + sortNo?: number contractSignedFlag: boolean contractAmount?: number totalConstructionArea?: number diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 8383a69..007b36e 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -115,7 +115,7 @@ export default { }, login: { welcome: '欢迎使用本系统', - message: '产值管理系统', + message: '项目产值管理系统', tenantname: '租户名称', username: '用户名', password: '密码', @@ -374,7 +374,7 @@ export default { qrSignInFormTitle: '二维码登录', signUpFormTitle: '注册', forgetFormTitle: '重置密码', - signInTitle: '产值管理系统', + signInTitle: '项目产值管理系统', signInDesc: '输入您的个人详细信息开始使用!', policy: '我同意xxx隐私政策', scanSign: `扫码后点击"确认",即可完成登录`, diff --git a/src/views/tjt/output-split/index.vue b/src/views/tjt/output-split/index.vue index 5dc7737..ea4e8b8 100644 --- a/src/views/tjt/output-split/index.vue +++ b/src/views/tjt/output-split/index.vue @@ -7,12 +7,12 @@ class="-mb-15px" label-width="88px" > - + @@ -47,14 +47,21 @@ highlight-current-row @current-change="handleCurrentProjectChange" > - - - + + + + - + + + @@ -117,8 +126,8 @@ {{ formData.projectName || '-' }} - {{ formData.planningContent || '-' }} - + {{ formData.planningContent || '-' }} + {{ getProjectLeadText(formData.projectManagerName, formData.engineeringLeaderName) }} @@ -288,7 +297,7 @@ interface QuarterYearRow { } const annualCategoryOptions: { label: string; value: AnnualCategoryKey }[] = [ - { label: '项目经理/项目负责人', value: 'project_lead' }, + { label: '项目经理/工程负责人', value: 'project_lead' }, { label: '建筑专业', value: 'arch' }, { label: '装修专业', value: 'decor' }, { label: '结构专业', value: 'struct' }, @@ -325,6 +334,9 @@ const queryParams = reactive({ projectStartYear: undefined }) +const getProjectRowIndex = (index: number) => + (queryParams.pageNo - 1) * queryParams.pageSize + index + 1 + const queryProjectStartYearValue = computed({ get: () => (queryParams.projectStartYear ? String(queryParams.projectStartYear) : undefined), set: (value?: string) => { @@ -360,7 +372,7 @@ const buildProjectRows = (model?: OutputSplitApi.ProjectOutputSplitVO) => { return [ { key: 'projectLeadRatio', - label: '项目经理/项目负责人', + label: '项目经理/工程负责人', percentText: formatRatioText(model.projectLeadRatio), percent: toPercentValue(model.projectLeadRatio), amount: model.projectLeadAmount diff --git a/src/views/tjt/output/PlanningOutputForm.vue b/src/views/tjt/output/PlanningOutputForm.vue index cee37df..c796a92 100644 --- a/src/views/tjt/output/PlanningOutputForm.vue +++ b/src/views/tjt/output/PlanningOutputForm.vue @@ -31,7 +31,7 @@ - + @@ -39,17 +39,53 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + @@ -247,7 +283,6 @@ 新增明细 - 💡 提示:数字字段已隐藏加减箭头以优化显示,支持直接输入或复制粘贴 @@ -544,8 +579,13 @@ const createFormData = (): PlanningApi.ProjectPlanningVO => ({ calculationMethod: '', planningContent: '', planningAmount: undefined, + contractValueQuantity: undefined, + contractValueUnitPrice: undefined, managementFeeRate: undefined, managementFee: undefined, + vatRate: undefined, + vatAmount: undefined, + projectBudgetOutputValue: undefined, implementationTeam: '', planningStartYear: undefined, planningArea: undefined, @@ -639,6 +679,9 @@ const normalizeFormData = (data: PlanningApi.ProjectPlanningVO): PlanningApi.Pro ...data, ownershipType: normalizeOwnershipType(data.ownershipType) || data.ownershipType || '', calculationMethod: normalizeCalculationMethod(data.calculationMethod) || data.calculationMethod || '', + contractValueQuantity: data.contractValueQuantity ?? 1, + contractValueUnitPrice: data.contractValueUnitPrice ?? data.planningAmount, + vatRate: data.vatRate ?? 0.06, designStage: normalizeDesignStage(data.designStage), virtualCalculationMethod: normalizeVirtualCalculationMethod(data.virtualCalculationMethod), reviewOutsourceFlag: data.reviewOutsourceFlag ?? false, @@ -785,6 +828,13 @@ const formatFactorText = (value?: number, digits = 4) => { return Number(value).toFixed(digits) } +const formatQuantityText = (value?: number, digits = 4) => { + if (value === undefined || value === null) { + return '-' + } + return Number(value).toFixed(digits) +} + const setGuideDetailPercentValue = ( row: GuideDetailRow, field: 'complexityFactor' | 'designRatio', @@ -940,8 +990,11 @@ const buildSavePayload = (): PlanningApi.ProjectPlanningSaveVO => ({ ownershipType: formData.value.ownershipType, calculationMethod: formData.value.calculationMethod, planningContent: formData.value.planningContent, - planningAmount: formData.value.planningAmount, + sortNo: formData.value.sortNo, + contractValueQuantity: formData.value.contractValueQuantity, + contractValueUnitPrice: formData.value.contractValueUnitPrice, managementFeeRate: formData.value.managementFeeRate, + vatRate: formData.value.vatRate, implementationTeam: formData.value.implementationTeam, planningStartYear: formData.value.planningStartYear, planningArea: showGuideDetailSection.value @@ -1104,4 +1157,4 @@ const submitForm = async () => { :deep(.text-primary) { color: var(--el-color-primary); } - \ No newline at end of file + diff --git a/src/views/tjt/output/QuarterDistributionForm.vue b/src/views/tjt/output/QuarterDistributionForm.vue index 48e0a6a..6f234ad 100644 --- a/src/views/tjt/output/QuarterDistributionForm.vue +++ b/src/views/tjt/output/QuarterDistributionForm.vue @@ -211,6 +211,9 @@ const open = async (id: number) => { const planning = await PlanningApi.getProjectPlanning(id) formData.value = { ...planning, + contractValueQuantity: planning.contractValueQuantity ?? 1, + contractValueUnitPrice: planning.contractValueUnitPrice ?? planning.planningAmount, + vatRate: planning.vatRate ?? 0.06, totalDistributionAmount: planning.totalDistributionAmount ?? 1, progressRemark: planning.progressRemark ?? '' } @@ -315,11 +318,14 @@ const submitForm = async () => { await PlanningApi.updateProjectPlanning({ id: formData.value.id, projectId: formData.value.projectId, + sortNo: formData.value.sortNo, ownershipType: formData.value.ownershipType, calculationMethod: formData.value.calculationMethod, planningContent: formData.value.planningContent, - planningAmount: formData.value.planningAmount, + contractValueQuantity: formData.value.contractValueQuantity, + contractValueUnitPrice: formData.value.contractValueUnitPrice, managementFeeRate: formData.value.managementFeeRate, + vatRate: formData.value.vatRate, implementationTeam: formData.value.implementationTeam, planningStartYear: formData.value.planningStartYear, planningArea: formData.value.planningArea, diff --git a/src/views/tjt/output/index.vue b/src/views/tjt/output/index.vue index 6879dd1..cc9ea6a 100644 --- a/src/views/tjt/output/index.vue +++ b/src/views/tjt/output/index.vue @@ -7,12 +7,12 @@ class="-mb-15px" label-width="88px" > - + @@ -62,10 +62,16 @@ highlight-current-row @current-change="handleCurrentProjectChange" > - + - + @@ -95,6 +101,7 @@ prop="createTime" width="180" /> + + - + @@ -152,6 +160,7 @@ {{ formatAmountText(scope.row.assessmentOutputValue) }} + @@ -190,7 +199,7 @@ - + {{ formatAmountText(currentPlanning.planningAmount) }} @@ -199,7 +208,7 @@ {{ formatAmountText(currentPlanning.managementFee) }} - + {{ currentPlanning.implementationTeam || '-' }} @@ -429,6 +438,9 @@ const queryParams = reactive({ projectStartYear: undefined }) +const getProjectRowIndex = (index: number) => + (queryParams.pageNo - 1) * queryParams.pageSize + index + 1 + const queryProjectStartYearValue = computed({ get: () => (queryParams.projectStartYear ? String(queryParams.projectStartYear) : undefined), set: (value?: string) => { diff --git a/src/views/tjt/profit/index.vue b/src/views/tjt/profit/index.vue index fdf814f..ecf0e0d 100644 --- a/src/views/tjt/profit/index.vue +++ b/src/views/tjt/profit/index.vue @@ -7,12 +7,12 @@ class="-mb-15px" label-width="88px" > - + @@ -62,7 +62,14 @@ highlight-current-row @current-change="handleCurrentProfitChange" > - + + - + @@ -130,6 +137,7 @@ + - + {{ formatAmountText(currentProfit.contractAmount) }} @@ -295,6 +303,9 @@ const queryParams = reactive({ projectStartYear: undefined }) +const getProjectRowIndex = (index: number) => + (queryParams.pageNo - 1) * queryParams.pageSize + index + 1 + const queryProjectStartYearValue = computed({ get: () => (queryParams.projectStartYear ? String(queryParams.projectStartYear) : undefined), set: (value?: string) => { diff --git a/src/views/tjt/project/PlanningForm.vue b/src/views/tjt/project/PlanningForm.vue index 33a3387..7d3aa39 100644 --- a/src/views/tjt/project/PlanningForm.vue +++ b/src/views/tjt/project/PlanningForm.vue @@ -1,5 +1,5 @@