Compare commits

..

2 Commits

Author SHA1 Message Date
ad363041c3 1 2026-03-18 11:19:30 +08:00
03dd8297de 1 2026-03-18 11:16:53 +08:00
4 changed files with 30 additions and 26 deletions

View File

@ -594,9 +594,11 @@ const columnDefs: ColDef<DetailRow>[] = [
{ {
headerName: '名称', headerName: '名称',
field: 'name', field: 'name',
minWidth: 250, minWidth: 180,
flex: 3, flex: 3,
tooltipField: 'name', wrapText: true,
autoHeight: true,
cellStyle: { lineHeight: '1.4', paddingTop: '4px', paddingBottom: '4px' },
valueGetter: params => { valueGetter: params => {
if (!params.data) return '' if (!params.data) return ''
if (isFixedRow(params.data)) return '' if (isFixedRow(params.data)) return ''
@ -607,9 +609,9 @@ const columnDefs: ColDef<DetailRow>[] = [
headerName: '工作环节', headerName: '工作环节',
field: 'process', field: 'process',
headerClass: 'ag-center-header zxfw-process-header', headerClass: 'ag-center-header zxfw-process-header',
minWidth: 170, minWidth: 80,
maxWidth: 220, maxWidth: 100,
flex: 1.2, flex: 1,
editable: false, editable: false,
sortable: false, sortable: false,
filter: false, filter: false,
@ -629,8 +631,8 @@ const columnDefs: ColDef<DetailRow>[] = [
headerName: '投资规模法', headerName: '投资规模法',
field: 'investScale', field: 'investScale',
headerClass: 'ag-right-aligned-header', headerClass: 'ag-right-aligned-header',
minWidth: 140, minWidth: 100,
flex: 2, flex: 1.5,
cellClass: 'ag-right-aligned-cell', cellClass: 'ag-right-aligned-cell',
editable: false, editable: false,
@ -646,8 +648,8 @@ const columnDefs: ColDef<DetailRow>[] = [
headerName: '用地规模法', headerName: '用地规模法',
field: 'landScale', field: 'landScale',
headerClass: 'ag-right-aligned-header', headerClass: 'ag-right-aligned-header',
minWidth: 140, minWidth: 100,
flex: 2, flex: 1.5,
cellClass: 'ag-right-aligned-cell', cellClass: 'ag-right-aligned-cell',
editable: false, editable: false,
@ -663,8 +665,8 @@ const columnDefs: ColDef<DetailRow>[] = [
headerName: '工作量法', headerName: '工作量法',
field: 'workload', field: 'workload',
headerClass: 'ag-right-aligned-header', headerClass: 'ag-right-aligned-header',
minWidth: 120, minWidth: 90,
flex: 2, flex: 1.5,
cellClass: 'ag-right-aligned-cell', cellClass: 'ag-right-aligned-cell',
editable: false, editable: false,
@ -681,8 +683,8 @@ const columnDefs: ColDef<DetailRow>[] = [
headerName: '工时法', headerName: '工时法',
field: 'hourly', field: 'hourly',
headerClass: 'ag-right-aligned-header', headerClass: 'ag-right-aligned-header',
minWidth: 120, minWidth: 90,
flex: 2, flex: 1.5,
cellClass: 'ag-right-aligned-cell', cellClass: 'ag-right-aligned-cell',
editable: false, editable: false,
@ -699,9 +701,8 @@ const columnDefs: ColDef<DetailRow>[] = [
headerName: '小计', headerName: '小计',
field: 'subtotal', field: 'subtotal',
headerClass: 'ag-right-aligned-header', headerClass: 'ag-right-aligned-header',
flex: 3, flex: 2,
minWidth: 100,
minWidth: 120,
cellClass: 'ag-right-aligned-cell', cellClass: 'ag-right-aligned-cell',
editable: false, editable: false,
valueGetter: params => { valueGetter: params => {
@ -720,8 +721,8 @@ const columnDefs: ColDef<DetailRow>[] = [
headerName: '确认金额', headerName: '确认金额',
field: 'finalFee', field: 'finalFee',
headerClass: 'ag-right-aligned-header', headerClass: 'ag-right-aligned-header',
flex: 3, flex: 2,
minWidth: 140, minWidth: 110,
cellClass: 'ag-right-aligned-cell', cellClass: 'ag-right-aligned-cell',
editable: params => !isFixedRow(params.data), editable: params => !isFixedRow(params.data),
valueGetter: params => { valueGetter: params => {
@ -748,9 +749,9 @@ const columnDefs: ColDef<DetailRow>[] = [
{ {
headerName: '操作', headerName: '操作',
field: 'actions', field: 'actions',
minWidth: 220, minWidth: 180,
flex: 2, flex: 1.5,
maxWidth: 260, maxWidth: 220,
editable: false, editable: false,
sortable: false, sortable: false,
filter: false, filter: false,

View File

@ -501,6 +501,7 @@ const finishReportExportProgress = (success: boolean, text: string, blobUrl?: st
reportExportStatus.value = success ? 'success' : 'error' reportExportStatus.value = success ? 'success' : 'error'
reportExportProgress.value = 100 reportExportProgress.value = 100
reportExportText.value = text reportExportText.value = text
console.log(blobUrl)
reportExportBlobUrl.value = success && blobUrl ? blobUrl : null reportExportBlobUrl.value = success && blobUrl ? blobUrl : null
reportExportToastOpen.value = true reportExportToastOpen.value = true
if (!success || !blobUrl) { if (!success || !blobUrl) {

View File

@ -1092,15 +1092,15 @@ export const useZxFwPricingStore = defineStore('zxFwPricing', () => {
if (!state?.detailRows?.length) return null if (!state?.detailRows?.length) return null
const fixedRow = state.detailRows.find(row => String(row.id || '') === FIXED_ROW_ID) const fixedRow = state.detailRows.find(row => String(row.id || '') === FIXED_ROW_ID)
const fixedSubtotal = toFiniteNumberOrNull(fixedRow?.subtotal) const fixedFinalFee = toFiniteNumberOrNull(fixedRow?.finalFee)
if (fixedSubtotal != null) return round3(fixedSubtotal) if (fixedFinalFee != null) return round3(fixedFinalFee)
let hasValid = false let hasValid = false
const sum = state.detailRows.reduce((acc, row) => { const sum = state.detailRows.reduce((acc, row) => {
if (String(row.id || '') === FIXED_ROW_ID) return acc if (String(row.id || '') === FIXED_ROW_ID) return acc
const subtotal = toFiniteNumberOrNull(row.subtotal) const fee = toFiniteNumberOrNull(row.finalFee) ?? toFiniteNumberOrNull(row.subtotal)
if (subtotal != null) hasValid = true if (fee != null) hasValid = true
return subtotal == null ? acc : acc + subtotal return fee == null ? acc : acc + fee
}, 0) }, 0)
return hasValid ? round3(sum) : null return hasValid ? round3(sum) : null
} }

View File

@ -2215,6 +2215,7 @@ async function generateTemplate(data) {
let descRowNum1 = descRowNum + 1; let descRowNum1 = descRowNum + 1;
let descRowNum2 = descRowNum + 2; let descRowNum2 = descRowNum + 2;
let descRowNum3 = descRowNum + 2; let descRowNum3 = descRowNum + 2;
console.log( data.contracts)
data.contracts.forEach((ci, cindex) => { data.contracts.forEach((ci, cindex) => {
descRowNum3 = descRowNum3 - descRowNum2; descRowNum3 = descRowNum3 - descRowNum2;
descRowNum2 = descRowNum2 - descRowNum1 - 1; descRowNum2 = descRowNum2 - descRowNum1 - 1;
@ -2247,6 +2248,7 @@ async function generateTemplate(data) {
}); });
// 咨询服务类型 // 咨询服务类型
descRowNum2 = descRowNum1 + descRowNum2 + 1; descRowNum2 = descRowNum1 + descRowNum2 + 1;
if (ci.services.length) { if (ci.services.length) {
var ciServiceText = ` ${cindex + 1}.${ci.name}` + ci.services.slice(0, -1).map(si => serviceList[si.id].name).join('、') + (ci.services.length > 1 ? '和' : '') + serviceList[ci.services.slice(-1)[0].id].name + '。'; var ciServiceText = ` ${cindex + 1}.${ci.name}` + ci.services.slice(0, -1).map(si => serviceList[si.id].name).join('、') + (ci.services.length > 1 ? '和' : '') + serviceList[ci.services.slice(-1)[0].id].name + '。';
} else { } else {