分包统计接口调试

This commit is contained in:
BianLzhaoMin 2025-10-10 17:22:16 +08:00
parent 5d4eede169
commit bc829a0037
6 changed files with 359 additions and 404 deletions

View File

@ -17,3 +17,30 @@ export const getSubCountDetailCardStatisticsAPI = (data) => {
params: data,
})
}
// 综合查询 获取分包统计详情 获取分包工程信息
export const getSubCountDetailSubProjectInfoAPI = (data) => {
return request({
url: '/bmw/subStatistics/getSubProMsg',
method: 'GET',
params: data,
})
}
// 综合查询 获取分包统计详情 获取班组信息
export const getSubCountDetailTeamInfoAPI = (data) => {
return request({
url: '/bmw/subStatistics/getSubTeamMsg',
method: 'GET',
params: data,
})
}
// 综合查询 获取分包统计详情 获取考勤机列表
export const getSubCountDetailAttMachineListAPI = (data) => {
return request({
url: '/bmw/subStatistics/getSubDeviceMsg',
method: 'GET',
params: data,
})
}

View File

@ -16,57 +16,46 @@
<div class="table-container">
<el-table
:data="subcontractorData"
style="width: 100%"
:header-cell-style="tableHeaderStyle"
:cell-style="tableCellStyle"
stripe
border
style="width: 100%"
:data="attMachineData"
:cell-style="tableCellStyle"
:header-cell-style="tableHeaderStyle"
>
<el-table-column
prop="subcontractorName"
align="center"
prop="deviceCode"
label="考勤机编号"
show-overflow-tooltip
/>
<el-table-column
prop="contractCode"
align="center"
prop="deviceName"
label="考勤机名称"
/>
<el-table-column
prop="contractCode"
align="center"
prop="proName"
label="考勤机工程"
/>
<el-table-column
prop="entryExitStatus"
label="状态"
width="120"
align="center"
>
<template slot-scope="scope">
<el-table-column label="状态" align="center">
<template>
<div class="status-cell">
<span
class="status-dot"
:class="
scope.row.entryExitStatus === '在场'
? 'status-online'
: 'status-offline'
"
></span>
{{ scope.row.entryExitStatus }}
<span class="status-dot status-online" />
在用
</div>
</template>
</el-table-column>
<el-table-column
prop="totalEntryCount"
prop="updateUser"
label="绑定人"
width="120"
align="center"
/>
<el-table-column
prop="currentOnsiteCount"
prop="updateTime"
label="绑定时间"
width="120"
align="center"
/>
</el-table>
@ -77,63 +66,19 @@
</template>
<script>
import { getSubCountDetailAttMachineListAPI } from '@/api/synthesize-query/sub-count'
export default {
name: 'SubTeamCard',
props: {
subId: {
type: [String, Number],
default: null,
},
},
data() {
return {
//
subcontractorData: [
{
subcontractorName: '重庆市万州水电建筑工程有限公司',
contractCode: 'SXFGS-YH-001',
contractName: '220kV永和(云纺)变电站建筑工程专业分包合同1',
entryExitStatus: '在场',
totalEntryCount: 80,
currentOnsiteCount: 56,
entryTime: '2025-04-06',
authorizationLetter: '已上传',
exitTime: '/',
wageCommitment: '/',
},
{
subcontractorName: '深圳市铁越电气有限公司',
contractCode: 'SXFGS-YH-005',
contractName:
'220kV 永和(云纺)输变电工程架线施工劳务分包框架子合同',
entryExitStatus: '离场',
totalEntryCount: 45,
currentOnsiteCount: 0,
entryTime: '2025-04-06',
authorizationLetter: '已上传',
exitTime: '2025-10-06',
wageCommitment: '已上传',
},
],
//
teamData: [
{
teamName: '组塔一班',
teamLeader: '颜静宁 13875286111',
subcontractorName: '重庆市万州水电建筑工程有限公司',
entryExitStatus: '在场',
totalEntryCount: 80,
currentOnsiteCount: 56,
entryTime: '2025-04-06',
exitTime: '/',
commitmentLetter: '/',
},
{
teamName: '架线三班',
teamLeader: '颜静宁 13875286111',
subcontractorName: '重庆市万州水电建筑工程有限公司',
entryExitStatus: '离场',
totalEntryCount: 45,
currentOnsiteCount: 0,
entryTime: '2025-04-06',
exitTime: '2025-12-06',
commitmentLetter: '已上传',
},
],
//
attMachineData: [],
}
},
methods: {
@ -152,9 +97,22 @@ export default {
return {
fontSize: '14px',
color: '#606266',
padding: '12px 8px',
padding: '12px 0',
}
},
//
async getSubCountDetailAttMachineList() {
const res = await getSubCountDetailAttMachineListAPI({
subId: this.subId,
})
this.attMachineData = res.rows
this.$emit('initAttMachineCount', res.total)
},
},
created() {
this.getSubCountDetailAttMachineList()
},
}
</script>

View File

@ -76,6 +76,10 @@ export default {
type: [String, Number],
default: null,
},
attMachineCount: {
type: [String, Number],
default: 0,
},
},
data() {
return {
@ -84,7 +88,6 @@ export default {
{
type: 'subcontractor',
label: '标段工程/分包合同',
color: '#EF4444',
dotColor: '#EF4444',
dataKey: 'proNum',
@ -92,7 +95,6 @@ export default {
{
type: 'team',
label: '施工班组',
color: '#3B82F6',
dotColor: '#3B82F6',
dataKey: 'teamNum',
@ -100,7 +102,6 @@ export default {
{
type: 'entry',
label: '累计入场',
color: '#8B5CF6',
dotColor: '#8B5CF6',
dataKey: 'einNumHis',
@ -109,7 +110,6 @@ export default {
{
type: 'attendance',
label: '累计考勤',
color: '#06B6D4',
dotColor: '#06B6D4',
dataKey: 'attNumHis',
@ -117,7 +117,6 @@ export default {
{
type: 'wage',
label: '累计工资',
color: '#EC4899',
dotColor: '#EC4899', // 绿
dataKey: 'salaryMoneyNum',
@ -125,10 +124,9 @@ export default {
{
type: 'machine',
label: '考勤机',
color: '#10B981',
dotColor: '#10B981',
dataKey: 'salaryMoneyNum',
value: 0,
},
],
}
@ -141,6 +139,13 @@ export default {
},
immediate: true,
},
attMachineCount: {
handler(newVal) {
this.cardList[5].value = newVal
},
immediate: true,
},
},
methods: {
/**
@ -162,9 +167,25 @@ export default {
einNumHis,
attNumHis,
salaryMoneyNum,
} = res.data
console.log(res, '卡片统计')
exitNum,
einNum,
exitUploadFile,
noExitUploadFile,
einTime,
exitTime,
yellowNum,
greenNum,
yellowThanSevenDayNum,
proRepairNum,
repairPersonNum,
repairNumHis,
payrollNum,
workerSalaryNum,
payrollWorkerTime,
} = res.data
// // API
const mockData = {
@ -175,8 +196,44 @@ export default {
salaryMoneyNum,
}
//
const entryData = {
einNumHis,
einNum,
exitNum,
exitUploadFile,
noExitUploadFile,
einTime,
exitTime,
yellowNum,
greenNum,
yellowThanSevenDayNum,
}
//
const attendanceData = {
attNumHis,
proRepairNum,
repairPersonNum,
repairNumHis,
}
//
const wageData = {
salaryMoneyNum,
payrollNum,
workerSalaryNum,
payrollWorkerTime,
}
//
this.updateCardData(mockData)
this.$emit(
'initPersonData',
entryData,
attendanceData,
wageData,
)
// this.$emit('data-loaded', mockData)
} catch (error) {
@ -192,7 +249,7 @@ export default {
updateCardData(data) {
this.cardList.forEach((card) => {
if (data.hasOwnProperty(card.dataKey)) {
card.value = data[card.dataKey] || 0
card.value = data[card.dataKey]
}
})
},

View File

@ -19,15 +19,13 @@
<div class="data-grid">
<div class="data-item">
<div class="data-label">累计入场人数</div>
<div class="data-value">{{
personData.entry.totalEntryCount
}}</div>
<div class="data-value">
{{ entryData.einNumHis }}
</div>
</div>
<div class="data-item">
<div class="data-label">累计出场人数</div>
<div class="data-value">{{
personData.entry.totalExitCount
}}</div>
<div class="data-value">{{ entryData.exitNum }}</div>
</div>
<div class="data-item">
<div class="data-label">离场人员工资结算确认单</div>
@ -36,68 +34,48 @@
<span class="status-dot uploaded"></span>
<span
>已上传:
{{
personData.entry
.salaryConfirmationUploaded
}}</span
{{ entryData.exitUploadFile }}</span
>
</div>
<div class="status-item">
<span class="status-dot not-uploaded"></span>
<span
>未上传:
{{
personData.entry
.salaryConfirmationNotUploaded
}}</span
{{ entryData.noExitUploadFile }}</span
>
</div>
</div>
</div>
<div class="data-item">
<div class="data-label">首次人员入场时间</div>
<div class="data-value">{{
personData.entry.firstEntryTime
}}</div>
<div class="data-value">{{ entryData.einTime }}</div>
</div>
<div class="data-item">
<div class="data-label">当前在场人数</div>
<div class="data-value">{{
personData.entry.currentOnsiteCount
}}</div>
<div class="data-value">{{ entryData.einNum }}</div>
</div>
<div class="data-item">
<div class="data-label">在场人数状态</div>
<div class="data-value">
<div class="status-item">
<span class="status-dot yellow"></span>
<span
>黄灯:
{{
personData.entry.yellowLightCount
}}</span
>
<span>黄灯: {{ entryData.yellowNum }}</span>
</div>
<div class="status-item">
<span class="status-dot green"></span>
<span
>绿灯:
{{ personData.entry.greenLightCount }}</span
>
<span>绿灯: {{ entryData.greenNum }}</span>
</div>
</div>
</div>
<div class="data-item">
<div class="data-label">黄灯7天人数</div>
<div class="data-value">{{
personData.entry.yellowLight7DaysCount
entryData.yellowThanSevenDayNum
}}</div>
</div>
<div class="data-item">
<div class="data-label">末次人员出场时间</div>
<div class="data-value">{{
personData.entry.lastExitTime
}}</div>
<div class="data-value">{{ entryData.exitTime }}</div>
</div>
</div>
</div>
@ -117,33 +95,25 @@
<div class="data-item">
<div class="data-label">累计考勤天数(人次)</div>
<div class="data-value">{{
personData.attendance.totalAttendanceDays
attendanceData.attNumHis
}}</div>
</div>
<div class="data-item">
<div class="data-label">累计补卡申请次数()</div>
<div class="data-value">
{{
personData.attendance
.totalCardReplacementApplications
}}
<span
class="view-link"
@click="handleViewCardReplacement"
>查看</span
>
{{ attendanceData.repairNumHis }}
</div>
</div>
<div class="data-item">
<div class="data-label">累计补卡人数()</div>
<div class="data-value">{{
personData.attendance.totalCardReplacementPersons
}}</div>
<div class="data-value">
{{ attendanceData.repairPersonNum }}
</div>
</div>
<div class="data-item">
<div class="data-label">累计补卡天数(人次)</div>
<div class="data-value">{{
personData.attendance.totalCardReplacementDays
attendanceData.proRepairNum
}}</div>
</div>
</div>
@ -163,27 +133,26 @@
<div class="data-grid">
<div class="data-item">
<div class="data-label">累计发放工资()</div>
<div class="data-value salary-amount">{{
formatCurrency(personData.salary.totalSalaryIssued)
}}</div>
<div class="data-value salary-amount">
¥
{{ wageData.salaryMoneyNum }}
</div>
</div>
<div class="data-item">
<div class="data-label">工资册数量()</div>
<div class="data-value">{{
personData.salary.payrollBookCount
}}</div>
<div class="data-value">{{ wageData.payrollNum }}</div>
</div>
<div class="data-item">
<div class="data-label">累计发放人数</div>
<div class="data-value">{{
personData.salary.totalIssuedPersons
}}</div>
<div class="data-value">
{{ wageData.workerSalaryNum }}
</div>
</div>
<div class="data-item">
<div class="data-label">累计发放人次</div>
<div class="data-value">{{
personData.salary.totalIssuedPersonTimes
}}</div>
<div class="data-value">
{{ wageData.payrollWorkerTime }}
</div>
</div>
</div>
</div>
@ -195,132 +164,21 @@
export default {
name: 'PersonInfoCard',
props: {
// ID
projectId: {
type: [String, Number],
default: null,
entryData: {
type: Object,
default: () => {},
},
//
autoLoad: {
type: Boolean,
default: true,
},
},
data() {
return {
loading: false,
personData: {
entry: {
totalEntryCount: 1200,
totalExitCount: 800,
salaryConfirmationUploaded: 390,
salaryConfirmationNotUploaded: 10,
firstEntryTime: '2025-09-02 10:12:13',
currentOnsiteCount: 400,
yellowLightCount: 10,
greenLightCount: 390,
yellowLight7DaysCount: 2,
lastExitTime: '2025-10-02 19:12:13',
},
attendance: {
totalAttendanceDays: 9600,
totalCardReplacementApplications: 10,
totalCardReplacementPersons: 35,
totalCardReplacementDays: 156,
},
salary: {
totalSalaryIssued: 745635,
payrollBookCount: 10,
totalIssuedPersons: 253,
totalIssuedPersonTimes: 1352,
},
},
}
},
created() {
if (this.autoLoad) {
this.loadData()
}
},
watch: {
projectId: {
handler() {
if (this.autoLoad) {
this.loadData()
}
},
immediate: false,
attendanceData: {
type: Object,
default: () => {},
},
wageData: {
type: Object,
default: () => {},
},
},
methods: {
/**
* 加载人员信息数据
*/
async loadData() {
if (this.loading) return
this.loading = true
try {
// API
// const response = await getPersonInfoAPI({
// projectId: this.projectId
// })
// API
const mockData = {
entry: {
totalEntryCount: 1200,
totalExitCount: 800,
salaryConfirmationUploaded: 390,
salaryConfirmationNotUploaded: 10,
firstEntryTime: '2025-09-02 10:12:13',
currentOnsiteCount: 400,
yellowLightCount: 10,
greenLightCount: 390,
yellowLight7DaysCount: 2,
lastExitTime: '2025-10-02 19:12:13',
},
attendance: {
totalAttendanceDays: 9600,
totalCardReplacementApplications: 10,
totalCardReplacementPersons: 35,
totalCardReplacementDays: 156,
},
salary: {
totalSalaryIssued: 745635,
payrollBookCount: 10,
totalIssuedPersons: 253,
totalIssuedPersonTimes: 1352,
},
}
this.personData = mockData
this.$emit('data-loaded', mockData)
} catch (error) {
console.error('加载人员信息失败:', error)
this.$message.error('加载人员信息失败')
this.$emit('data-error', error)
} finally {
this.loading = false
}
},
/**
* 刷新数据
*/
refresh() {
this.loadData()
},
/**
* 格式化货币显示
* @param {Number} value 金额
* @returns {String} 格式化后的货币字符串
*/
formatCurrency(value) {
return `¥${value.toLocaleString()}`
},
/**
* 处理查看补卡申请点击事件
*/

View File

@ -24,58 +24,66 @@
border
>
<el-table-column
prop="subcontractorName"
prop="proName"
label="工程名称"
min-width="200"
show-overflow-tooltip
/>
<el-table-column
prop="contractCode"
label="分包合同编码"
width="150"
/>
<el-table-column
prop="contractName"
label="分包合同名称"
min-width="250"
show-overflow-tooltip
/>
<el-table-column
prop="entryExitStatus"
label="出入场状态"
width="120"
align="center"
/>
<el-table-column
prop="subContractCode"
label="分包合同编码"
show-overflow-tooltip
align="center"
/>
<el-table-column
prop="subContractName"
label="分包合同名称"
show-overflow-tooltip
align="center"
/>
<el-table-column
prop="subEinStatus"
label="出入场状态"
align="center"
width="120"
>
<template slot-scope="scope">
<div class="status-cell">
<span
class="status-dot"
:class="
scope.row.entryExitStatus === '在场'
scope.row.subEinStatus === 1
? 'status-online'
: 'status-offline'
"
></span>
{{ scope.row.entryExitStatus }}
{{
scope.row.subEinStatus === 1
? '在场'
: '出场'
}}
</div>
</template>
</el-table-column>
<el-table-column
prop="totalEntryCount"
prop="einNumHis"
label="累计入场人数"
width="120"
align="center"
width="120"
show-overflow-tooltip
/>
<el-table-column
prop="currentOnsiteCount"
prop="einNum"
label="当前在场人数"
width="120"
align="center"
show-overflow-tooltip
/>
<el-table-column
prop="entryTime"
prop="subEinTime"
label="分包入场时间"
width="130"
show-overflow-tooltip
align="center"
/>
<el-table-column
prop="authorizationLetter"
@ -85,26 +93,22 @@
>
<template slot-scope="scope">
<span
v-if="
scope.row.authorizationLetter ===
'已上传'
"
v-if="isUpload(1, scope.row.contractFile)"
class="upload-status uploaded"
@click="
onHandleOpenPreviewFile(scope.row, 1)
"
>
{{ scope.row.authorizationLetter }}
已上传
</span>
<span v-else class="upload-status not-uploaded">
{{ scope.row.authorizationLetter }}
/
</span>
</template>
</el-table-column>
<el-table-column
prop="exitTime"
prop="subExitTime"
label="分包出场时间"
width="130"
/>
<el-table-column
prop="wageCommitment"
@ -114,16 +118,16 @@
>
<template slot-scope="scope">
<span
v-if="scope.row.wageCommitment === '已上传'"
v-if="isUpload(2, scope.row.contractFile)"
class="upload-status uploaded"
@click="
onHandleOpenPreviewFile(scope.row, 2)
"
>
{{ scope.row.wageCommitment }}
已上传
</span>
<span v-else class="upload-status not-uploaded">
{{ scope.row.wageCommitment }}
/
</span>
</template>
</el-table-column>
@ -152,72 +156,82 @@
<el-table-column
prop="teamName"
label="班组名称"
width="150"
/>
<el-table-column
prop="teamLeader"
label="班组长及联系方式"
width="180"
show-overflow-tooltip
/>
<el-table-column
prop="subcontractorName"
label="工程名称"
min-width="200"
show-overflow-tooltip
/>
<el-table-column
prop="entryExitStatus"
label="出入场状态"
width="120"
align="center"
show-overflow-tooltip
/>
<el-table-column
prop="phone"
label="班组长及联系方式"
align="center"
show-overflow-tooltip
/>
<el-table-column
prop="proName"
label="工程名称"
align="center"
show-overflow-tooltip
/>
<el-table-column
label="出入场状态"
align="center"
show-overflow-tooltip
width="120"
>
<template slot-scope="scope">
<div class="status-cell">
<span
class="status-dot"
:class="
scope.row.entryExitStatus === '在场'
scope.row.teamEinStatus === 1
? 'status-online'
: 'status-offline'
"
></span>
{{ scope.row.entryExitStatus }}
{{
scope.row.teamEinStatus === 1
? '在场'
: '出场'
}}
</div>
</template>
</el-table-column>
<el-table-column
prop="totalEntryCount"
prop="einNumHis"
label="累计入场人数"
width="120"
align="center"
width="120"
show-overflow-tooltip
/>
<el-table-column
prop="currentOnsiteCount"
prop="einNum"
label="当前在场人数"
width="120"
align="center"
width="120"
show-overflow-tooltip
/>
<el-table-column
prop="entryTime"
align="center"
prop="teamEinTime"
label="入场时间"
width="120"
show-overflow-tooltip
/>
<el-table-column
prop="exitTime"
show-overflow-tooltip
prop="teamExitTime"
label="出场时间"
width="120"
align="center"
/>
<el-table-column
prop="commitmentLetter"
prop="contractFile"
label="施工班组承诺书"
width="150"
align="center"
show-overflow-tooltip
>
<template slot-scope="scope">
<span
v-if="
scope.row.commitmentLetter === '已上传'
scope.row.contractFile &&
scope.row.contractFile.length > 0
"
class="upload-status uploaded"
@click="
@ -227,7 +241,7 @@
{{ scope.row.commitmentLetter }}
</span>
<span v-else class="upload-status not-uploaded">
{{ scope.row.commitmentLetter }}
/
</span>
</template>
</el-table-column>
@ -241,11 +255,25 @@
@closeDialogOuter="handleCloseDialogOuter"
>
<template slot="outerContent">
<div>
<h1>
{{ dialogConfig.outerTitle }}
</h1>
</div>
<el-table :data="fileList" stripe border>
<el-table-column
align="center"
show-overflow-tooltip
prop="originFileName"
label="文件名称"
/>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<el-button
type="text"
icon="el-icon-download"
@click="onHandleDownloadFile(scope.row)"
>
下载
</el-button>
</template>
</el-table-column>
</el-table>
</template>
</DialogModel>
</div>
@ -253,72 +281,35 @@
<script>
import DialogModel from '@/components/DialogModel/index.vue'
import {
getSubCountDetailSubProjectInfoAPI,
getSubCountDetailTeamInfoAPI,
} from '@/api/synthesize-query/sub-count'
export default {
name: 'SubTeamCard',
components: {
DialogModel,
},
props: {
subId: {
type: [String, Number],
default: null,
},
},
data() {
return {
//
subcontractorData: [
{
subcontractorName: '重庆市万州水电建筑工程有限公司',
contractCode: 'SXFGS-YH-001',
contractName: '220kV永和(云纺)变电站建筑工程专业分包合同1',
entryExitStatus: '在场',
totalEntryCount: 80,
currentOnsiteCount: 56,
entryTime: '2025-04-06',
authorizationLetter: '已上传',
exitTime: '/',
wageCommitment: '/',
},
{
subcontractorName: '深圳市铁越电气有限公司',
contractCode: 'SXFGS-YH-005',
contractName:
'220kV 永和(云纺)输变电工程架线施工劳务分包框架子合同',
entryExitStatus: '离场',
totalEntryCount: 45,
currentOnsiteCount: 0,
entryTime: '2025-04-06',
authorizationLetter: '已上传',
exitTime: '2025-10-06',
wageCommitment: '已上传',
},
],
subcontractorData: [],
//
teamData: [
{
teamName: '组塔一班',
teamLeader: '颜静宁 13875286111',
subcontractorName: '重庆市万州水电建筑工程有限公司',
entryExitStatus: '在场',
totalEntryCount: 80,
currentOnsiteCount: 56,
entryTime: '2025-04-06',
exitTime: '/',
commitmentLetter: '/',
},
{
teamName: '架线三班',
teamLeader: '颜静宁 13875286111',
subcontractorName: '重庆市万州水电建筑工程有限公司',
entryExitStatus: '离场',
totalEntryCount: 45,
currentOnsiteCount: 0,
entryTime: '2025-04-06',
exitTime: '2025-12-06',
commitmentLetter: '已上传',
},
],
teamData: [],
//
fileList: [],
dialogConfig: {
outerTitle: '授权委托书',
outerWidth: '80%',
outerWidth: '40%',
outerVisible: false,
minHeight: '90vh',
minHeight: '40vh',
maxHeight: '90vh',
},
}
@ -339,7 +330,7 @@ export default {
return {
fontSize: '14px',
color: '#606266',
padding: '12px 8px',
padding: '12px 0 ',
}
},
@ -350,12 +341,19 @@ export default {
switch (type) {
case 1:
this.dialogConfig.outerTitle = '授权委托书'
this.fileList = row.contractFile.filter(
(item) => item.sourceType == 1,
)
break
case 2:
this.dialogConfig.outerTitle = '工资已支付完成承诺书'
this.fileList = row.contractFile.filter(
(item) => item.sourceType == 2,
)
break
case 3:
this.dialogConfig.outerTitle = '施工班组承诺书'
this.fileList = row.contractFile
break
}
this.dialogConfig.outerVisible = true
@ -365,6 +363,38 @@ export default {
handleCloseDialogOuter() {
this.dialogConfig.outerVisible = false
},
//
async getSubCountDetailSubProjectInfo() {
const res = await getSubCountDetailSubProjectInfoAPI({
subId: this.subId,
})
console.log(res, '分包工程信息')
this.subcontractorData = res.rows
},
//
async getSubCountDetailTeamInfo() {
const res = await getSubCountDetailTeamInfoAPI({
subId: this.subId,
})
this.teamData = res.rows
console.log(res, '班组信息')
},
//
isUpload(type, contractFile) {
return contractFile.some((item) => item.sourceType == type)
},
//
onHandleDownloadFile(row) {
window.open(row.lsUrl, '_blank')
},
},
created() {
this.getSubCountDetailSubProjectInfo()
this.getSubCountDetailTeamInfo()
},
}
</script>

View File

@ -8,10 +8,22 @@
:contractFile="contractFile"
:legalPersonPhone="legalPersonPhone"
/>
<CardCount :sub-id="subId" @cardClick="handleCardClick" />
<SubTeamCard />
<PersonInfoCard />
<AttMachineCard />
<CardCount
:sub-id="subId"
:attMachineCount="attMachineCount"
@cardClick="handleCardClick"
@initPersonData="initPersonData"
/>
<SubTeamCard :sub-id="subId" />
<PersonInfoCard
:entryData="entryData"
:attendanceData="attendanceData"
:wageData="wageData"
/>
<AttMachineCard
:sub-id="subId"
@initAttMachineCount="initAttMachineCount"
/>
</div>
</template>
@ -39,6 +51,10 @@ export default {
subAddress: null, //
contractFile: [], //
subId: null, // ID
attMachineCount: 0, //
entryData: {}, //
attendanceData: {}, //
wageData: {}, //
}
},
created() {
@ -64,6 +80,15 @@ export default {
this.scrollToTarget(card.type)
// const attMachineCard_1 = document.getElementById('attMachineCard_1')
},
initAttMachineCount(count) {
this.attMachineCount = count
},
//
initPersonData(entryData, attendanceData, wageData) {
this.entryData = entryData
this.attendanceData = attendanceData
this.wageData = wageData
},
//
scrollToTarget(cardType) {