工资统计接口调试

This commit is contained in:
BianLzhaoMin 2025-10-11 16:16:35 +08:00
parent 81a8680a32
commit d371fae9b2
6 changed files with 285 additions and 87 deletions

View File

@ -1,9 +1,9 @@
import request from '@/utils/request' import request from '@/utils/request'
// 综合查询 获取工资统计列表 // 综合查询 工资统计 公司统计和分公司统计
export const getWageCountListAPI = (data) => { export const getWageCountCompanyAndSubCompanyListAPI = (data) => {
return request({ return request({
url: '/bmw/workerLight/****', url: '/bmw/salaryStatistics/getSalaryStatisticsTable',
method: 'GET', method: 'GET',
params: data, params: data,
}) })

View File

@ -33,53 +33,55 @@
</template> </template>
<script> <script>
import { getWageCountCompanyAndSubCompanyListAPI } from '@/api/synthesize-query/wage-count'
export default { export default {
name: 'CompanyCount', name: 'CompanyCount',
props: {}, props: {
queryParams: {
type: Object,
default: () => {},
},
},
data() { data() {
return { return {
companyCountData: [ companyCountData: [],
{
entryTime: '2025-01-01',
exitTime: '2025-01-01',
contractName: '工程1',
subcontractorName: '分包1',
totalEntryCount: 10,
},
{
entryTime: '2025-01-01',
exitTime: '2025-01-01',
contractName: '工程1',
subcontractorName: '分包1',
totalEntryCount: 10,
},
],
columnData: [ columnData: [
{ {
label: '公司名称', label: '公司名称',
prop: 'entryTime', prop: 'companyName',
}, },
{ {
label: '工程数量', label: '工程数量',
prop: 'exitTime', prop: 'proNum',
}, },
{ {
label: '分包数量', label: '分包数量',
prop: 'contractName', prop: 'subNum',
}, },
{ {
label: '实发工资(元)', label: '实发工资(元)',
prop: 'subcontractorName', prop: 'netSalary',
}, },
{ {
label: '累计支付工资(元)', label: '累计支付工资(元)',
prop: 'totalEntryCount', prop: 'allSalary',
}, },
], ],
} }
}, },
created() {}, created() {
watch: {}, // this.getCompanyCountData()
},
watch: {
queryParams: {
handler(newVal) {
this.getCompanyCountData()
},
deep: true,
immediate: true,
},
},
methods: { methods: {
// //
tableHeaderStyle() { tableHeaderStyle() {
@ -96,7 +98,32 @@ export default {
return { return {
fontSize: '14px', fontSize: '14px',
color: '#606266', color: '#606266',
padding: '12px 8px', padding: '12px 0',
}
},
//
async getCompanyCountData() {
console.log(this.queryParams, '获取列表数据')
const res = await getWageCountCompanyAndSubCompanyListAPI(
this.queryParams,
)
console.log(res, '获取列表数据')
if (res.code === 200) {
for (const key in res.data) {
if (key === '公司') {
this.companyCountData = res.data[key]
}
if (key === '分公司') {
// this.subCompanyCountData = res.data[key]
this.$emit(
'handelSettingSubCompanyCountData',
res.data[key],
)
}
}
} }
}, },
}, },

View File

@ -3,36 +3,43 @@
<div class="data-filter"> <div class="data-filter">
<div class="data-filter-title">数据筛选</div> <div class="data-filter-title">数据筛选</div>
<div style="margin-top: 14px"> <div style="margin-top: 14px">
<el-radio-group v-model="radio2" size="medium"> <el-radio-group
<el-radio-button label="2025"></el-radio-button> size="medium"
<el-radio-button label="2024"></el-radio-button> @change="onChangeYear"
<el-radio-button label="2023"></el-radio-button> v-model="queryParams.year"
>
<el-radio-button
:key="item"
:label="item"
v-for="item in yearList"
/>
</el-radio-group> </el-radio-group>
</div> </div>
<div style="margin-top: 14px"> <div style="margin-top: 14px">
<el-radio-group v-model="radio3" size="medium"> <el-radio-group
<el-radio-button label="全部"></el-radio-button> v-model="queryParams.quarter"
<el-radio-button label="一季度"></el-radio-button> size="medium"
<el-radio-button label="二季度"></el-radio-button> @change="onChangeQuarter"
<el-radio-button label="三季度"></el-radio-button> >
<el-radio-button label="四季度"></el-radio-button> <el-radio-button
:key="item"
:label="item"
v-for="item in quarterList"
/>
</el-radio-group> </el-radio-group>
</div> </div>
<div style="margin-top: 14px"> <div style="margin-top: 14px">
<el-radio-group v-model="radio4" size="medium"> <el-radio-group
<el-radio-button label="全部"></el-radio-button> size="medium"
<el-radio-button label="1月"></el-radio-button> v-model="queryParams.month"
<el-radio-button label="2月"></el-radio-button> @change="onChangeMonth"
<el-radio-button label="3月"></el-radio-button> >
<el-radio-button label="4月"></el-radio-button> <el-radio-button label="全部" />
<el-radio-button label="5月"></el-radio-button> <el-radio-button
<el-radio-button label="6月"></el-radio-button> v-for="item in monthList"
<el-radio-button label="7月"></el-radio-button> :key="item.value"
<el-radio-button label="8月"></el-radio-button> :label="item.label"
<el-radio-button label="9月"></el-radio-button> />
<el-radio-button label="10月"></el-radio-button>
<el-radio-button label="11月"></el-radio-button>
<el-radio-button label="12月"></el-radio-button>
</el-radio-group> </el-radio-group>
</div> </div>
</div> </div>
@ -43,11 +50,156 @@ export default {
name: 'DataFilter', name: 'DataFilter',
data() { data() {
return { return {
radio2: '2025', yearList: [],
radio3: '全部', quarterList: ['全部', '一季度', '二季度', '三季度', '四季度'],
radio4: '全部', queryParams: {
year: new Date().getFullYear(),
quarter: '全部',
month: '全部',
},
} }
}, },
computed: {
monthList() {
const monthList = [
{
label: '1月',
value: '01',
},
{
label: '2月',
value: '02',
},
{
label: '3月',
value: '03',
},
{
label: '4月',
value: '04',
},
{
label: '5月',
value: '05',
},
{
label: '6月',
value: '06',
},
{
label: '7月',
value: '07',
},
{
label: '8月',
value: '08',
},
{
label: '9月',
value: '09',
},
{
label: '10月',
value: '10',
},
{
label: '11月',
value: '11',
},
{
label: '12月',
value: '12',
},
]
const quarter = this.queryParams.quarter
switch (quarter) {
case '一季度':
return monthList.slice(0, 3)
case '二季度':
return monthList.slice(3, 6)
case '三季度':
return monthList.slice(6, 9)
case '四季度':
return monthList.slice(9, 12)
default:
return monthList
}
},
},
created() {
this.getRecentThreeYears()
},
methods: {
//
getRecentThreeYears() {
const now = new Date()
const year = now.getFullYear()
for (let i = 0; i < 3; i++) {
this.yearList.push(year - i)
}
},
//
onChangeYear(val) {
this.$emit('handelSettingQuery', this.initQueryParams())
},
//
onChangeQuarter(val) {
this.queryParams.month = '全部'
this.$emit('handelSettingQuery', this.initQueryParams())
},
//
onChangeMonth(val) {
this.$emit('handelSettingQuery', this.initQueryParams())
},
//
initQueryParams() {
const params = {
year: this.queryParams.year,
month: null,
}
if (
this.queryParams.quarter === '全部' &&
this.queryParams.month === '全部'
) {
params.month = null
}
if (
(this.queryParams.quarter === '全部' &&
this.queryParams.month !== '全部') ||
(this.queryParams.quarter !== '全部' &&
this.queryParams.month !== '全部')
) {
params.month =
this.queryParams.year +
'-' +
this.monthList.find(
(item) => item.label === this.queryParams.month,
).value
}
if (
this.queryParams.quarter !== '全部' &&
this.queryParams.month === '全部'
) {
const monthList = this.monthList.map(
(item) => this.queryParams.year + '-' + item.value,
)
params.month = monthList.join(',')
}
return params
},
},
} }
</script> </script>

View File

@ -35,45 +35,34 @@
<script> <script>
export default { export default {
name: 'SubCompanyCount', name: 'SubCompanyCount',
props: {}, props: {
subCompanyCountData: {
type: Array,
default: () => [],
},
},
data() { data() {
return { return {
subCompanyCountData: [
{
entryTime: '2025-01-01',
exitTime: '2025-01-01',
contractName: '工程1',
subcontractorName: '分包1',
totalEntryCount: 10,
},
{
entryTime: '2025-01-01',
exitTime: '2025-01-01',
contractName: '工程1',
subcontractorName: '分包1',
totalEntryCount: 10,
},
],
columnData: [ columnData: [
{ {
label: '公司名称', label: '分公司名称',
prop: 'entryTime', prop: 'companyName',
}, },
{ {
label: '工程数量', label: '工程数量',
prop: 'exitTime', prop: 'proNum',
}, },
{ {
label: '分包数量', label: '分包数量',
prop: 'contractName', prop: 'subNum',
}, },
{ {
label: '实发工资(元)', label: '实发工资(元)',
prop: 'subcontractorName', prop: 'netSalary',
}, },
{ {
label: '累计支付工资(元)', label: '累计支付工资(元)',
prop: 'totalEntryCount', prop: 'allSalary',
}, },
], ],
} }

View File

@ -3,13 +3,16 @@
<div class="wage-details-container"> <div class="wage-details-container">
<div class="section-header"> <div class="section-header">
<span>工资统计</span> <span>工资统计</span>
<span>(已归档工资)</span> <span style="font-size: 14px; color: #ef4444">(已归档工资)</span>
</div> </div>
<CompanyCount /> <CompanyCount
<SubCompanyCount /> :queryParams="queryParams"
<ProjectCount /> @handelSettingSubCompanyCountData="handelSettingSubCompanyCountData"
<SubCount /> />
<SubCompanyCount :subCompanyCountData="subCompanyCountData" />
<ProjectCount :queryParams="queryParams" />
<SubCount :queryParams="queryParams" />
</div> </div>
</template> </template>
@ -26,12 +29,24 @@ export default {
ProjectCount, ProjectCount,
SubCount, SubCount,
}, },
props: {
queryParams: {
type: Object,
default: () => {},
},
},
data() { data() {
return {} return {
subCompanyCountData: [],
}
}, },
created() {}, created() {},
watch: {}, watch: {},
methods: {}, methods: {
handelSettingSubCompanyCountData(data) {
this.subCompanyCountData = data
},
},
} }
</script> </script>

View File

@ -1,8 +1,8 @@
<template> <template>
<!-- 工资统计 --> <!-- 工资统计 -->
<div class="app-container"> <div class="app-container">
<DataFilter /> <DataFilter @handelSettingQuery="handelSettingQuery" />
<WageDetails /> <WageDetails :queryParams="queryParams" />
</div> </div>
</template> </template>
@ -15,5 +15,20 @@ export default {
DataFilter, DataFilter,
WageDetails, WageDetails,
}, },
data() {
return {
queryParams: {
year: new Date().getFullYear(),
month: null,
},
}
},
methods: {
handelSettingQuery(queryParams) {
this.queryParams = queryParams
},
},
} }
</script> </script>