add 项目利润结算
parent
b90b6a1cb8
commit
e43b61da12
|
|
@ -127,18 +127,18 @@
|
|||
@sort-change="handleSortChange"
|
||||
>
|
||||
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" min-width="150px"/>
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" fixed="left" min-width="200px"/>
|
||||
<el-table-column label="枪数" align="center" prop="estimatedPiles" width="100px"/>
|
||||
<el-table-column label="统计月份" align="center" prop="statMonth" sortable="custom" />
|
||||
<el-table-column label="总充电量(度)" align="center" prop="chargingQuantity" sortable="custom"/>
|
||||
<el-table-column label="总营收(元)" align="center" prop="totalIncome" sortable="custom"/>
|
||||
<el-table-column label="总电费(元)" align="center" prop="totalElectricityCost" sortable="custom"/>
|
||||
<el-table-column label="总服务费(元)" align="center" prop="grossProfit" sortable="custom"/>
|
||||
<el-table-column label="毛利率(%)" align="center" prop="grossProfitRate" sortable="custom"/>
|
||||
<el-table-column label="单枪充电量(度)" align="center" prop="perGunCharging" sortable="custom"/>
|
||||
<el-table-column label="单枪服务费(元)" align="center" prop="perGunProfit" sortable="custom"/>
|
||||
<el-table-column label="度电服务费(元)" align="center" prop="electricityServiceFee" sortable="custom"/>
|
||||
<el-table-column label="操作" align="center" min-width="120px">
|
||||
<el-table-column label="统计月份" align="center" prop="statMonth" sortable="custom" width="160px"/>
|
||||
<el-table-column label="总充电量(度)" align="center" prop="chargingQuantity" sortable="custom" width="160px"/>
|
||||
<el-table-column label="总营收(元)" align="center" prop="totalIncome" sortable="custom" width="160px"/>
|
||||
<el-table-column label="总电费(元)" align="center" prop="totalElectricityCost" sortable="custom" width="160px"/>
|
||||
<el-table-column label="总服务费(元)" align="center" prop="grossProfit" sortable="custom" width="160px"/>
|
||||
<el-table-column label="毛利率(%)" align="center" prop="grossProfitRate" sortable="custom" width="160px"/>
|
||||
<el-table-column label="单枪充电量(度)" align="center" prop="perGunCharging" sortable="custom" width="160px"/>
|
||||
<el-table-column label="单枪服务费(元)" align="center" prop="perGunProfit" sortable="custom" width="160px"/>
|
||||
<el-table-column label="度电服务费(元)" align="center" prop="electricityServiceFee" sortable="custom" width="160px"/>
|
||||
<el-table-column label="操作" align="center" fixed="right" min-width="120px">
|
||||
<template #default="scope">
|
||||
<!-- {{ scope.row }} -->
|
||||
<el-button
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" width="40%">
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" width="60%">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目" prop="projectId">
|
||||
<el-form-item label="项目" prop="projectId" min-width="260px">
|
||||
<el-select
|
||||
v-model="formData.projectId"
|
||||
filterable
|
||||
|
|
@ -26,15 +26,6 @@
|
|||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="结算周期" prop="settlementPeriod">
|
||||
<el-quarter-picker v-model="formData.settlementPeriod" placeholder="选择季度" value-format="yyyy-q" clearable style="width: 100%"
|
||||
popper-class="full-width-datepicker" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="结算日期" prop="settlementDate">
|
||||
<el-date-picker
|
||||
v-model="formData.settlementDate"
|
||||
|
|
@ -45,6 +36,20 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="结算周期" prop="settlementPeriod">
|
||||
<el-quarter-picker
|
||||
v-model="formData.settlementPeriod"
|
||||
placeholder="选择季度"
|
||||
value-format="yyyy-q"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
popper-class="full-width-datepicker"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="结算开始时间" prop="startDate">
|
||||
<el-date-picker
|
||||
|
|
@ -64,6 +69,7 @@
|
|||
placeholder="选择结算结束时间"
|
||||
style="width: 100%"
|
||||
popper-class="full-width-datepicker"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
|
@ -91,6 +97,7 @@
|
|||
import * as ProjectSettlementApi from '@/api/crm/project/settlement'
|
||||
import * as ProjectApi from '@/api/crm/project'
|
||||
import ElQuarterPicker from '@/components/ElQuarterPicker/index.vue'
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
/** 项目利润结算 表单 */
|
||||
defineOptions({ name: 'ProjectSettlementForm' })
|
||||
|
|
@ -184,4 +191,33 @@ const resetForm = () => {
|
|||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
|
||||
// 监听结算周期变化,自动设置开始和结束时间
|
||||
watch(
|
||||
() => formData.value.settlementPeriod,
|
||||
(val) => {
|
||||
if (!val) {
|
||||
formData.value.startDate = undefined
|
||||
formData.value.endDate = undefined
|
||||
return
|
||||
}
|
||||
// 解析季度
|
||||
// 期望格式: "2024-2"
|
||||
const [yearStr, quarterStr] = val.split('-')
|
||||
const year = Number(yearStr)
|
||||
const quarter = Number(quarterStr)
|
||||
let startMonth = 0
|
||||
switch (quarter) {
|
||||
case 1: startMonth = 0; break // 1月
|
||||
case 2: startMonth = 3; break // 4月
|
||||
case 3: startMonth = 6; break // 7月
|
||||
case 4: startMonth = 9; break // 10月
|
||||
default: startMonth = 0
|
||||
}
|
||||
const startDate = dayjs(new Date(year, startMonth, 1))
|
||||
const endDate = startDate.add(2, 'month').endOf('month')
|
||||
formData.value.startDate = startDate.format('YYYY-MM-DD')
|
||||
formData.value.endDate = endDate.format('YYYY-MM-DD')
|
||||
}
|
||||
)
|
||||
</script>
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
</ProjectSettlementDetailsHeader>
|
||||
|
||||
<div class="settlement-detail-section">
|
||||
<h2>一、收入项</h2>
|
||||
<h4>一、收入项</h4>
|
||||
<el-table :data="incomeTable" border style="width: 100%; margin-bottom: 16px;">
|
||||
<el-table-column prop="name" label="科目名称" />
|
||||
<el-table-column prop="amount" label="金额/元" />
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
<div v-if="settlement.incomeRemark">备注:{{ settlement.incomeRemark }}</div>
|
||||
<div style="margin-bottom: 12px;">收入合计:<b>{{ settlement.totalIncome?.toFixed(2) ?? '--' }}</b></div>
|
||||
|
||||
<h2 style="margin-top: 32px;">二、支出项</h2>
|
||||
<h4 style="margin-top: 32px;">二、支出项</h4>
|
||||
<el-table :data="expenseTable" border style="width: 100%; margin-bottom: 16px;">
|
||||
<el-table-column prop="name" label="科目名称" />
|
||||
<el-table-column prop="amount" label="金额/元" />
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
<div v-if="settlement.expenseRemark">备注:{{ settlement.expenseRemark }}</div>
|
||||
<div style="margin-bottom: 12px;">支出合计:<b>{{ settlement.totalExpenses?.toFixed(2) ?? '--' }}</b></div>
|
||||
|
||||
<h2 style="margin-top: 32px;">三、利润计算</h2>
|
||||
<h4 style="margin-top: 32px;">三、利润计算</h4>
|
||||
<el-table :data="profitTable" border style="width: 100%; margin-bottom: 16px;">
|
||||
<el-table-column prop="name" label="科目名称" />
|
||||
<el-table-column prop="amount" label="金额/元" />
|
||||
|
|
@ -120,8 +120,8 @@ const incomeRemarkTable = computed(() => [
|
|||
// 支出项表格数据
|
||||
const expenseTable = computed(() => [
|
||||
{ name: '电费成本', amount: settlement.value.electricityCost, remark: '以电力公司账单为准' },
|
||||
{ name: '场地租金', amount: settlement.value.venueRent, remark: '按《场地租赁协议》约定' },
|
||||
{ name: '场地押金', amount: settlement.value.venueDeposit, remark: '按《场地租赁协议》约定' },
|
||||
{ name: '场地租金', amount: settlement.value.venueRent, remark: '按《场地租赁协议》约定 (退回为负值)' },
|
||||
{ name: '场地押金', amount: settlement.value.venueDeposit, remark: '按《场地租赁协议》约定 (退回为负值)' },
|
||||
{ name: '项目推介费', amount: settlement.value.projectPromotion, remark: '付给项目推荐人' },
|
||||
{ name: '设备更新购置费', amount: settlement.value.equipmentUpgrade, remark: '同一场站设备更新' },
|
||||
{ name: '管理费用', amount: settlement.value.managementCost, remark: '按120元/抢/月计算(用于不可分割的公摊费用)' },
|
||||
|
|
|
|||
|
|
@ -8,10 +8,11 @@
|
|||
:inline="true"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item labssel="项目" prop="projectId">
|
||||
<el-form-item label="项目" prop="projectId">
|
||||
<el-select
|
||||
v-model="queryParams.projectId"
|
||||
clearable
|
||||
filterable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
>
|
||||
|
|
@ -80,38 +81,38 @@
|
|||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
|
||||
<el-table-column label="项目名称" align="center" prop="projectName">
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" fixed="left" min-width="200px">
|
||||
<template #default="scope">
|
||||
<el-link type="primary" @click="goDetail(scope.row)">{{ scope.row.projectName }}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="枪数" align="center" prop="piles" />
|
||||
<el-table-column label="结算周期" align="center" prop="settlementPeriod" >
|
||||
<el-table-column label="枪数" align="center" prop="piles" width="200px"/>
|
||||
<el-table-column label="结算周期" align="center" prop="settlementPeriod" width="200px">
|
||||
<template #default="scope">
|
||||
{{ formatQuarterPeriod(scope.row.settlementPeriod) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="结算开始时间" align="center" prop="startDate">
|
||||
<el-table-column label="总期数" align="center" prop="period" width="200px"/>
|
||||
<el-table-column label="结算开始时间" align="center" prop="startDate" width="200px">
|
||||
<template #default="scope">
|
||||
{{ scope.row.startDate ? formatDate(scope.row.startDate, 'YYYY-MM-DD') : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="结算结束时间" align="center" prop="endDate">
|
||||
<el-table-column label="结算结束时间" align="center" prop="endDate" width="200px">
|
||||
<template #default="scope">
|
||||
{{ scope.row.endDate ? formatDate(scope.row.endDate, 'YYYY-MM-DD') : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="结算日期" align="center" prop="settlementDate">
|
||||
<el-table-column label="毛利润" align="center" prop="grossProfit" width="200px"/>
|
||||
<el-table-column label="上期亏损转结" align="center" prop="previousLossCarryover" width="200px" />
|
||||
<el-table-column label="净利润" align="center" prop="netProfit" width="200px"/>
|
||||
<!-- <el-table-column label="结算状态" align="center" prop="settlementStatus" /> -->
|
||||
<el-table-column label="结算日期" align="center" prop="settlementDate" width="200px">
|
||||
<template #default="scope">
|
||||
{{ scope.row.settlementDate ? formatDate(scope.row.settlementDate, 'YYYY-MM-DD') : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="总期数" align="center" prop="period" />
|
||||
<el-table-column label="毛利润" align="center" prop="grossProfit" />
|
||||
<el-table-column label="上期亏损转结" align="center" prop="previousLossCarryover" />
|
||||
<el-table-column label="净利润" align="center" prop="netProfit" />
|
||||
<el-table-column label="结算状态" align="center" prop="settlementStatus" />
|
||||
<el-table-column label="操作" align="center" min-width="180px" fixed="right">
|
||||
<el-table-column label="操作" align="center" width="180px" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
|
|
|
|||
Loading…
Reference in New Issue