三表一册接口调试
This commit is contained in:
parent
ff0f4eae06
commit
79607cc494
|
|
@ -1,4 +1,5 @@
|
|||
import request from '@/utils/request'
|
||||
import requestFormData from '@/utils/request_formdata'
|
||||
|
||||
// 综合查询 获取三表一册列表
|
||||
export const getThreeAndOneListAPI = (data) => {
|
||||
|
|
@ -44,3 +45,48 @@ export const getThreeAndOneMonthlyRosterListAPI = (data) => {
|
|||
params: data,
|
||||
})
|
||||
}
|
||||
|
||||
// 综合查询 导出三表一册单月农民工实名制工资信息报审表
|
||||
export const exportThreeAndOneMonthlySalaryApprovalListAPI = (data) => {
|
||||
return request({
|
||||
url: '/bmw/pmProject/getUserSalaryApprovalList',
|
||||
method: 'GET',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
||||
// 综合查询 导出三表一册单月分包人员考勤明细表
|
||||
export const exportThreeAndOneMonthlyAttDetailsListAPI = (data) => {
|
||||
return request({
|
||||
url: '/bmw/pmProject/getUserAttendanceList',
|
||||
method: 'GET',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
||||
// 综合查询 导出三表一册单月农名工工资支付表
|
||||
export const exportThreeAndOneMonthlyWagePaymentListAPI = (data) => {
|
||||
return request({
|
||||
url: '/bmw/pmProject/getUserWagePayList',
|
||||
method: 'GET',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
||||
// 综合查询 三表一册封档操作
|
||||
export const updateProMonthTableAPI = (data) => {
|
||||
return request({
|
||||
url: '/bmw/pmProject/updateProMonthTable',
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 综合查询 三表一册回单上传操作
|
||||
export const uploadProMonthTableRefundAPI = (data) => {
|
||||
return requestFormData({
|
||||
url: '/bmw/pmProject/updateProMonthTableRefund ',
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ export const formLabel = [
|
|||
f_type: 'sel',
|
||||
f_label: '工程状态',
|
||||
f_model: 'proStatus',
|
||||
f_selList: [],
|
||||
},
|
||||
]
|
||||
|
||||
|
|
@ -25,5 +26,5 @@ export const columnsList = [
|
|||
{ t_props: 'teamNum', t_label: '发放班组数量' },
|
||||
{ t_props: 'payNum', t_label: '发放人员人次' },
|
||||
{ t_props: 'netSalary', t_label: '实发工资' },
|
||||
{ t_props: 'proStatus', t_label: '状态' },
|
||||
{ t_slot: 'proStatus', t_label: '状态' },
|
||||
]
|
||||
|
|
|
|||
|
|
@ -48,8 +48,23 @@
|
|||
item.valueKey === 'currentStatus',
|
||||
}"
|
||||
>
|
||||
<span class="status-dot"></span>
|
||||
{{ projectInfo[item.valueKey] }}
|
||||
<!-- <span class="status-dot"></span> -->
|
||||
|
||||
<template v-if="item.valueKey === 'proStatus'">
|
||||
<el-tag size="mini" type="primary">
|
||||
{{
|
||||
initProStatus(
|
||||
projectInfo[item.valueKey],
|
||||
)
|
||||
}}
|
||||
</el-tag>
|
||||
</template>
|
||||
<template v-else-if="item.valueKey === 'proType'">
|
||||
{{ initProType(projectInfo[item.valueKey]) }}
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ projectInfo[item.valueKey] }}
|
||||
</template>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -62,6 +77,7 @@
|
|||
import { getThreeAndOneProjectDetailAPI } from '@/api/synthesize-query/three-and-one'
|
||||
export default {
|
||||
name: 'HeaderInfo',
|
||||
dicts: ['project_status', 'project_type'],
|
||||
props: {
|
||||
projectId: {
|
||||
type: [Number, String],
|
||||
|
|
@ -83,32 +99,26 @@ export default {
|
|||
labelList: [
|
||||
{
|
||||
label: '当前状态',
|
||||
value: '在建',
|
||||
valueKey: 'proStatus',
|
||||
},
|
||||
{
|
||||
label: '工程类型',
|
||||
value: '基建线路',
|
||||
valueKey: 'proType',
|
||||
},
|
||||
{
|
||||
label: '电压等级',
|
||||
value: '220kV',
|
||||
valueKey: 'volLevel',
|
||||
},
|
||||
{
|
||||
label: '计划开工时间',
|
||||
value: '2025-02-01',
|
||||
valueKey: 'startTime',
|
||||
},
|
||||
{
|
||||
label: '计划完工时间',
|
||||
value: '2025-11-30',
|
||||
valueKey: 'endTime',
|
||||
},
|
||||
{
|
||||
label: '工程地址',
|
||||
value: '广东省-东莞市',
|
||||
valueKey: 'proAddress',
|
||||
},
|
||||
],
|
||||
|
|
@ -144,6 +154,28 @@ export default {
|
|||
|
||||
console.log(res, 'res工程详情')
|
||||
},
|
||||
|
||||
// 初始化工程类型
|
||||
initProType(data) {
|
||||
if (typeof data === 'string') {
|
||||
return this.dict.type.project_type.find(
|
||||
(item) => item.value == data,
|
||||
).label
|
||||
}
|
||||
|
||||
return data || ''
|
||||
},
|
||||
|
||||
// 初始化工程状态
|
||||
initProStatus(data) {
|
||||
if (typeof data === 'string') {
|
||||
return this.dict.type.project_status.find(
|
||||
(item) => item.value == data,
|
||||
).label
|
||||
}
|
||||
|
||||
return data || ''
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@
|
|||
</template>
|
||||
|
||||
<template v-else>
|
||||
<span>{{ row[item.prop] }}</span>
|
||||
<span>{{ row[item.prop] || '/' }}</span>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
|
@ -161,6 +161,13 @@
|
|||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<pagination
|
||||
:total="total"
|
||||
@pagination="getThreeAndOneMonthlyData"
|
||||
:page.sync="threeOneQueryParams.pageNum"
|
||||
:limit.sync="threeOneQueryParams.pageSize"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -182,8 +189,14 @@ export default {
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
total: 0,
|
||||
// 分包信息数据
|
||||
threeOneData: [],
|
||||
threeOneQueryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
proId: '',
|
||||
},
|
||||
|
||||
columnsList: [
|
||||
{
|
||||
|
|
@ -298,10 +311,12 @@ export default {
|
|||
|
||||
// 获取三表一册每月数据
|
||||
async getThreeAndOneMonthlyData() {
|
||||
const res = await getThreeAndOneMonthlyDataAPI({
|
||||
proId: this.projectId,
|
||||
})
|
||||
this.threeOneQueryParams.proId = this.projectId
|
||||
const res = await getThreeAndOneMonthlyDataAPI(
|
||||
this.threeOneQueryParams,
|
||||
)
|
||||
this.threeOneData = res.rows
|
||||
this.total = res.total
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
@ -339,6 +354,7 @@ export default {
|
|||
border-radius: 12px;
|
||||
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
||||
margin-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
overflow: hidden;
|
||||
|
||||
.section-header {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,12 @@
|
|||
</el-button>
|
||||
</template>
|
||||
|
||||
<template slot="proStatus" slot-scope="{ data }">
|
||||
<el-tag size="mini" type="primary">
|
||||
{{ initProStatus(data.proStatus) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
|
||||
<template slot="left-tip">
|
||||
<div class="left-tip">
|
||||
1. 每月1号0点自动生成上月"三表一册"
|
||||
|
|
@ -42,6 +48,7 @@ import { formLabel, columnsList } from './config'
|
|||
import { getThreeAndOneListAPI } from '@/api/synthesize-query/three-and-one'
|
||||
export default {
|
||||
name: 'ThreeAndOne',
|
||||
dicts: ['project_status'],
|
||||
components: {
|
||||
TableModel,
|
||||
},
|
||||
|
|
@ -52,6 +59,9 @@ export default {
|
|||
getThreeAndOneListAPI,
|
||||
}
|
||||
},
|
||||
created() {
|
||||
formLabel[1].f_selList = this.dict.type.project_status
|
||||
},
|
||||
|
||||
methods: {
|
||||
onHandleViewDetail(data) {
|
||||
|
|
@ -64,6 +74,16 @@ export default {
|
|||
},
|
||||
})
|
||||
},
|
||||
|
||||
initProStatus(status) {
|
||||
if (typeof status === 'string') {
|
||||
return this.dict.type.project_status.find(
|
||||
(item) => item.value == status,
|
||||
).label
|
||||
}
|
||||
|
||||
return status || ''
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,22 +1,23 @@
|
|||
<template>
|
||||
<!-- 考勤明细 -->
|
||||
<!-- 分包人员考勤明细表 -->
|
||||
<div class="section-container">
|
||||
<div class="table-container">
|
||||
<el-form
|
||||
:inline="true"
|
||||
label-width="auto"
|
||||
:model="nameListQueryParams"
|
||||
:model="attDetailsQueryParams"
|
||||
ref="attDetailsQueryParamsRef"
|
||||
style="margin-top: 20px; padding-left: 20px; display: flex"
|
||||
>
|
||||
<el-form-item>
|
||||
<el-form-item prop="subName">
|
||||
<el-input
|
||||
v-model="nameListQueryParams.entryTime"
|
||||
v-model="attDetailsQueryParams.subName"
|
||||
placeholder="请输入分包"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-form-item prop="userName">
|
||||
<el-input
|
||||
v-model="nameListQueryParams.entryTime"
|
||||
v-model="attDetailsQueryParams.userName"
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
|
@ -53,15 +54,15 @@
|
|||
style="flex: 1; text-align: right; color: #ef4444"
|
||||
>
|
||||
<span>出勤:1</span>
|
||||
<span>缺勤:1</span>
|
||||
<span>无对应日期:1</span>
|
||||
<span>缺勤:0</span>
|
||||
<span>无对应日期:空白</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table
|
||||
border
|
||||
stripe
|
||||
style="width: 100%"
|
||||
:data="nameListData"
|
||||
:data="attDetailsListData"
|
||||
:header-cell-style="tableHeaderStyle"
|
||||
:cell-style="tableCellStyle"
|
||||
>
|
||||
|
|
@ -79,15 +80,20 @@
|
|||
<el-table-column
|
||||
align="center"
|
||||
:key="j"
|
||||
:label="j"
|
||||
:label="j.toString()"
|
||||
width="50"
|
||||
v-for="j in 30"
|
||||
/>
|
||||
v-for="j in attendanceDays"
|
||||
>
|
||||
<template slot-scope="{ row }">
|
||||
{{ row.attendanceDayList[j - 1].isAtt }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
align="center"
|
||||
label="出勤天数"
|
||||
fixed="right"
|
||||
prop="attendanceNum"
|
||||
/>
|
||||
<el-table-column align="center" label="签字" fixed="right" />
|
||||
<el-table-column
|
||||
|
|
@ -100,7 +106,7 @@
|
|||
<!-- <div style="padding-right: 20px">
|
||||
<pagination
|
||||
:total="total"
|
||||
@pagination="getNameListData"
|
||||
@pagination="getattDetailsListData"
|
||||
:page.sync="nameListQueryParams.pageNum"
|
||||
:limit.sync="nameListQueryParams.pageSize"
|
||||
/>
|
||||
|
|
@ -110,52 +116,80 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { exportThreeAndOneMonthlyAttDetailsListAPI } from '@/api/synthesize-query/three-and-one'
|
||||
export default {
|
||||
name: 'WageInfo',
|
||||
props: {},
|
||||
props: {
|
||||
id: {
|
||||
type: [Number, String],
|
||||
default: '',
|
||||
},
|
||||
|
||||
month: {
|
||||
type: [Number, String],
|
||||
default: '',
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
total: 100,
|
||||
nameListQueryParams: {
|
||||
entryTime: '',
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
attDetailsQueryParams: {
|
||||
monthId: this.id,
|
||||
subName: '',
|
||||
userName: '',
|
||||
},
|
||||
nameListData: [
|
||||
{
|
||||
entryTime: '测试',
|
||||
},
|
||||
{
|
||||
entryTime: '测试',
|
||||
},
|
||||
],
|
||||
attDetailsListData: [],
|
||||
columnData: [
|
||||
{
|
||||
label: '项目名称',
|
||||
prop: 'entryTime',
|
||||
prop: 'proName',
|
||||
},
|
||||
{
|
||||
label: '分包队伍全称',
|
||||
prop: 'exitTime',
|
||||
prop: 'subName',
|
||||
},
|
||||
{
|
||||
label: '姓名',
|
||||
prop: 'subcontractorName',
|
||||
prop: 'userName',
|
||||
},
|
||||
{
|
||||
label: '身份证号',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'idCard',
|
||||
},
|
||||
{
|
||||
label: '职务/工种',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'workName',
|
||||
},
|
||||
],
|
||||
|
||||
// 出勤统计表头
|
||||
attendanceHeader: [],
|
||||
// 获取当月的天数
|
||||
attendanceDays: 0,
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
watch: {},
|
||||
created() {
|
||||
this.getCurrentMonthDays()
|
||||
this.getThreeAndOneMonthlyAttDetailsList()
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 获取当月天数的方法
|
||||
getCurrentMonthDays() {
|
||||
const now = new Date()
|
||||
const year = now.getFullYear()
|
||||
// const month = now.getMonth() + 1 // getMonth() 返回 0-11,所以需要 +1
|
||||
|
||||
// // 获取当月最后一天,即下个月的第0天
|
||||
// const lastDay = new Date(year, month, 0).getDate()
|
||||
// this.attendanceDays = lastDay
|
||||
|
||||
// 获取month 并去除补0
|
||||
const month = this.month.split('-')[1].padStart(2, '0')
|
||||
// 根据指定月份 yyyy-MM 获取天数
|
||||
this.attendanceDays = new Date(year, month, 0).getDate()
|
||||
},
|
||||
|
||||
// 表格头部样式
|
||||
tableHeaderStyle() {
|
||||
return {
|
||||
|
|
@ -171,33 +205,44 @@ export default {
|
|||
return {
|
||||
fontSize: '14px',
|
||||
color: '#606266',
|
||||
padding: '12px 8px',
|
||||
padding: '12px 0',
|
||||
}
|
||||
},
|
||||
|
||||
// 查询
|
||||
handleQuery() {
|
||||
// this.getAttInfoData()
|
||||
this.getThreeAndOneMonthlyAttDetailsList()
|
||||
},
|
||||
// 重置
|
||||
resetQuery() {
|
||||
this.attInfoQueryParams = {
|
||||
entryTime: '',
|
||||
}
|
||||
this.resetForm('attDetailsQueryParamsRef')
|
||||
this.getThreeAndOneMonthlyAttDetailsList()
|
||||
},
|
||||
// 导出
|
||||
handleExport() {
|
||||
// this.download(
|
||||
// '/bmw/workerLight/attExportByWorker',
|
||||
// {
|
||||
// ...this.attInfoQueryParams,
|
||||
// },
|
||||
// '考勤信息.xlsx',
|
||||
// )
|
||||
this.download(
|
||||
'/bmw/pmProject/exportUserAttendance',
|
||||
{
|
||||
...this.attDetailsQueryParams,
|
||||
},
|
||||
'分包人员考勤明细表.xlsx',
|
||||
)
|
||||
},
|
||||
// 获取考勤信息
|
||||
getNameListData() {
|
||||
// 获取分包人员考勤明细表
|
||||
async getThreeAndOneMonthlyAttDetailsList() {
|
||||
// this.getAttInfoData()
|
||||
|
||||
const res = await exportThreeAndOneMonthlyAttDetailsListAPI(
|
||||
this.attDetailsQueryParams,
|
||||
)
|
||||
|
||||
this.attDetailsListData = res?.data.map((item) => {
|
||||
return {
|
||||
...item,
|
||||
attendanceDayList: JSON.parse(item.attendanceDay),
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,12 @@
|
|||
<div class="project-title"> 月份:{{ month }} </div>
|
||||
</div>
|
||||
<div>
|
||||
<el-button size="mini" type="danger" @click="onHandlePack">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="danger"
|
||||
@click="onHandlePack"
|
||||
:disabled="monthlyData.refundStatus == 1"
|
||||
>
|
||||
封档
|
||||
</el-button>
|
||||
<el-button
|
||||
|
|
@ -33,7 +38,21 @@
|
|||
>
|
||||
<span class="label-label">{{ item.label }}:</span>
|
||||
<span class="label-value">
|
||||
{{ monthlyData[item.valueKey] }}
|
||||
<template v-if="item.valueKey === 'contractFile'">
|
||||
<span
|
||||
class="cursor-blue"
|
||||
@click="handleClickContractFile"
|
||||
>
|
||||
{{
|
||||
monthlyData[item.valueKey]
|
||||
? monthlyData[item.valueKey].length
|
||||
: 0
|
||||
}}
|
||||
</span>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ monthlyData[item.valueKey] || '/' }}
|
||||
</template>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -43,7 +62,8 @@
|
|||
type="warning"
|
||||
v-if="
|
||||
monthlyData.refundStatus == 0 ||
|
||||
monthlyData.refundStatus == null
|
||||
monthlyData.refundStatus == null ||
|
||||
monthlyData.refundStatus == 1
|
||||
"
|
||||
>
|
||||
待封档
|
||||
|
|
@ -51,7 +71,7 @@
|
|||
<el-tag
|
||||
size="mini"
|
||||
type="success"
|
||||
v-if="monthlyData.refundStatus == 1"
|
||||
v-if="monthlyData.refundStatus == 2"
|
||||
>
|
||||
已封档
|
||||
</el-tag>
|
||||
|
|
@ -68,7 +88,7 @@
|
|||
<el-upload
|
||||
action="#"
|
||||
multiple
|
||||
limit="1"
|
||||
limit="3"
|
||||
class="upload-demo"
|
||||
:file-list="fileList"
|
||||
:auto-upload="false"
|
||||
|
|
@ -94,13 +114,47 @@
|
|||
</el-button>
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
|
||||
<DialogModel
|
||||
:dialogConfig="dialogConfig"
|
||||
@closeDialogOuter="handleCloseDialogOuter"
|
||||
>
|
||||
<template slot="outerContent">
|
||||
<el-table>
|
||||
<el-table-column
|
||||
align="center"
|
||||
label="文件名称"
|
||||
prop="name"
|
||||
/>
|
||||
<el-table-column
|
||||
align="center"
|
||||
label="上传时间"
|
||||
prop="name"
|
||||
/>
|
||||
<el-table-column
|
||||
align="center"
|
||||
label="上传人员"
|
||||
prop="name"
|
||||
/>
|
||||
<el-table-column align="center" label="操作" prop="name" />
|
||||
</el-table>
|
||||
</template>
|
||||
</DialogModel>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getThreeAndOneMonthlyDataByIdAPI } from '@/api/synthesize-query/three-and-one'
|
||||
import {
|
||||
getThreeAndOneMonthlyDataByIdAPI,
|
||||
updateProMonthTableAPI,
|
||||
uploadProMonthTableRefundAPI,
|
||||
} from '@/api/synthesize-query/three-and-one'
|
||||
import DialogModel from '@/components/DialogModel/index.vue'
|
||||
export default {
|
||||
name: 'HeaderInfo',
|
||||
components: {
|
||||
DialogModel,
|
||||
},
|
||||
props: {
|
||||
id: {
|
||||
type: [Number, String],
|
||||
|
|
@ -121,6 +175,13 @@ export default {
|
|||
fileSize: 10,
|
||||
fileList: [],
|
||||
monthlyData: {},
|
||||
dialogConfig: {
|
||||
outerTitle: '银行回单查看',
|
||||
outerWidth: '40%',
|
||||
outerVisible: false,
|
||||
minHeight: '40vh',
|
||||
maxHeight: '90vh',
|
||||
},
|
||||
labelList: [
|
||||
{
|
||||
label: '分包数量',
|
||||
|
|
@ -170,8 +231,18 @@ export default {
|
|||
console.log('封档')
|
||||
this.$modal
|
||||
.confirm('是否确定封档?')
|
||||
.then(() => {
|
||||
console.log('封档')
|
||||
.then(async () => {
|
||||
// console.log('封档')
|
||||
|
||||
const res = await updateProMonthTableAPI({
|
||||
id: this.id,
|
||||
refundStatus: 2,
|
||||
})
|
||||
|
||||
if (res.code == 200) {
|
||||
this.$modal.msgSuccess('封档成功')
|
||||
this.getMonthlyData()
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
console.log('取消')
|
||||
|
|
@ -183,14 +254,39 @@ export default {
|
|||
this.fileList = []
|
||||
},
|
||||
onHandleDownload() {
|
||||
console.log('下载三表一册')
|
||||
// console.log('下载三表一册')
|
||||
this.download(
|
||||
'/bmw/pmProject/exportThreeAndOne',
|
||||
{},
|
||||
'三表一册.xlsx',
|
||||
)
|
||||
},
|
||||
onHandleCancel() {
|
||||
this.uploadVisible = false
|
||||
this.fileList = []
|
||||
},
|
||||
onHandleConfirm() {
|
||||
this.uploadVisible = false
|
||||
async onHandleConfirm() {
|
||||
// this.uploadVisible = false
|
||||
if (this.fileList.length > 0) {
|
||||
// this.uploadVisible = false
|
||||
const formData = new FormData()
|
||||
const fileMsg = []
|
||||
this.fileList.forEach((item) => {
|
||||
formData.append('files', item.raw)
|
||||
fileMsg.push({
|
||||
name: '回单',
|
||||
type: 1,
|
||||
})
|
||||
})
|
||||
|
||||
const res = await uploadProMonthTableRefundAPI(formData)
|
||||
if (res.code == 200) {
|
||||
this.$modal.msgSuccess('回单上传成功')
|
||||
this.getMonthlyData()
|
||||
}
|
||||
} else {
|
||||
this.$modal.msgError('请上传文件')
|
||||
}
|
||||
},
|
||||
|
||||
// 文件发生变化
|
||||
|
|
@ -245,6 +341,17 @@ export default {
|
|||
})
|
||||
this.monthlyData = res.data
|
||||
},
|
||||
|
||||
// 查看附件
|
||||
handleClickContractFile() {
|
||||
console.log('查看附件')
|
||||
this.dialogConfig.outerVisible = true
|
||||
},
|
||||
|
||||
// 关闭弹框
|
||||
handleCloseDialogOuter() {
|
||||
this.dialogConfig.outerVisible = false
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -5,32 +5,40 @@
|
|||
<el-form
|
||||
:inline="true"
|
||||
label-width="auto"
|
||||
ref="nameListQueryParamsRef"
|
||||
:model="nameListQueryParams"
|
||||
style="margin-top: 20px; padding-left: 20px"
|
||||
>
|
||||
<el-form-item>
|
||||
<el-form-item prop="subName">
|
||||
<el-input
|
||||
v-model="nameListQueryParams.entryTime"
|
||||
placeholder="请输入分包"
|
||||
clearable
|
||||
v-model.trim="nameListQueryParams.subName"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-form-item prop="teamName">
|
||||
<el-input
|
||||
v-model="nameListQueryParams.entryTime"
|
||||
clearable
|
||||
v-model.trim="nameListQueryParams.teamName"
|
||||
placeholder="请输入班组"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-form-item prop="userName">
|
||||
<el-input
|
||||
v-model="nameListQueryParams.entryTime"
|
||||
clearable
|
||||
v-model.trim="nameListQueryParams.userName"
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-input
|
||||
v-model="nameListQueryParams.entryTime"
|
||||
<el-form-item prop="onDuty">
|
||||
<el-select
|
||||
clearable
|
||||
placeholder="请输入在岗情况"
|
||||
/>
|
||||
v-model="nameListQueryParams.onDuty"
|
||||
>
|
||||
<el-option label="在岗" value="1" />
|
||||
<el-option label="不在岗" value="0" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button
|
||||
|
|
@ -63,12 +71,16 @@
|
|||
</el-form>
|
||||
<el-table
|
||||
border
|
||||
stripe
|
||||
:data="nameListData"
|
||||
style="width: 100%"
|
||||
:header-cell-style="tableHeaderStyle"
|
||||
:cell-style="tableCellStyle"
|
||||
>
|
||||
<el-table-column
|
||||
type="index"
|
||||
width="50"
|
||||
align="center"
|
||||
label="序号"
|
||||
/>
|
||||
<el-table-column
|
||||
align="center"
|
||||
:key="item.prop"
|
||||
|
|
@ -76,7 +88,20 @@
|
|||
:label="item.label"
|
||||
show-overflow-tooltip
|
||||
v-for="item in columnData"
|
||||
/>
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<template v-if="item.prop === 'sex'">
|
||||
{{ scope.row[item.prop] == 0 ? '女' : '男' }}
|
||||
</template>
|
||||
|
||||
<template v-else-if="item.prop === 'onDuty'">
|
||||
{{ scope.row[item.prop] == 1 ? '在岗' : '不在岗' }}
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ scope.row[item.prop] || '/' }}
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- <div style="padding-right: 20px">
|
||||
|
|
@ -106,83 +131,69 @@ export default {
|
|||
total: 100,
|
||||
nameListQueryParams: {
|
||||
monthId: this.id,
|
||||
onDuty: '',
|
||||
subName: '',
|
||||
teamName: '',
|
||||
userName: '',
|
||||
},
|
||||
nameListData: [
|
||||
{
|
||||
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,
|
||||
},
|
||||
],
|
||||
nameListData: [],
|
||||
columnData: [
|
||||
{
|
||||
label: '分包单位',
|
||||
prop: 'entryTime',
|
||||
prop: 'subName',
|
||||
},
|
||||
{
|
||||
label: '班组',
|
||||
prop: 'exitTime',
|
||||
prop: 'teamName',
|
||||
},
|
||||
{
|
||||
label: '姓名',
|
||||
prop: 'subcontractorName',
|
||||
prop: 'userName',
|
||||
},
|
||||
{
|
||||
label: '性别',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'sex',
|
||||
},
|
||||
{
|
||||
label: '职务/工种',
|
||||
prop: 'totalEntryCount',
|
||||
},
|
||||
{
|
||||
label: '发证单位及证书号',
|
||||
prop: 'totalEntryCount',
|
||||
},
|
||||
{
|
||||
label: '有效期',
|
||||
prop: 'totalEntryCount',
|
||||
},
|
||||
{
|
||||
label: '性别',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'workName',
|
||||
},
|
||||
// {
|
||||
// label: '发证单位及证书号',
|
||||
// prop: 'workName',
|
||||
// },
|
||||
// {
|
||||
// label: '有效期',
|
||||
// prop: 'workName',
|
||||
// },
|
||||
|
||||
{
|
||||
label: '公民身份证号',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'idCard',
|
||||
},
|
||||
{
|
||||
label: '户籍地址',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'residence',
|
||||
},
|
||||
{
|
||||
label: '手机号',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'phone',
|
||||
},
|
||||
{
|
||||
label: '入场时间',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'inTime',
|
||||
},
|
||||
{
|
||||
label: '离场时间',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'outTime',
|
||||
},
|
||||
{
|
||||
label: '在岗情况',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'onDuty',
|
||||
},
|
||||
{
|
||||
label: '备注',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'remark',
|
||||
},
|
||||
],
|
||||
}
|
||||
|
|
@ -207,7 +218,7 @@ export default {
|
|||
return {
|
||||
fontSize: '14px',
|
||||
color: '#606266',
|
||||
padding: '12px 8px',
|
||||
padding: '12px 0',
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -218,19 +229,18 @@ export default {
|
|||
},
|
||||
// 重置
|
||||
resetQuery() {
|
||||
this.attInfoQueryParams = {
|
||||
entryTime: '',
|
||||
}
|
||||
this.resetForm('nameListQueryParamsRef')
|
||||
this.getThreeAndOneMonthlyRosterList()
|
||||
},
|
||||
// 导出
|
||||
handleExport() {
|
||||
// this.download(
|
||||
// '/bmw/workerLight/attExportByWorker',
|
||||
// {
|
||||
// ...this.attInfoQueryParams,
|
||||
// },
|
||||
// '考勤信息.xlsx',
|
||||
// )
|
||||
this.download(
|
||||
'/bmw/pmProject/exportProMonthTableRoster',
|
||||
{
|
||||
...this.nameListQueryParams,
|
||||
},
|
||||
'农名工花名册.xlsx',
|
||||
)
|
||||
},
|
||||
// 获取考勤信息
|
||||
getNameListData() {
|
||||
|
|
@ -243,7 +253,7 @@ export default {
|
|||
this.nameListQueryParams,
|
||||
)
|
||||
|
||||
console.log(res, 'res三表一册单月农名工花名册列表')
|
||||
this.nameListData = res?.data
|
||||
// this.nameListData = res.rows
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -12,7 +12,11 @@
|
|||
<el-tab-pane label="农民工工资支付表" name="4" />
|
||||
</el-tabs>
|
||||
<div class="section-content">
|
||||
<component :id="id" :is="componentsList[activeName]" />
|
||||
<component
|
||||
:id="id"
|
||||
:month="month"
|
||||
:is="componentsList[activeName]"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -37,6 +41,10 @@ export default {
|
|||
type: [Number, String],
|
||||
default: '',
|
||||
},
|
||||
month: {
|
||||
type: [Number, String],
|
||||
default: '',
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -1,28 +1,29 @@
|
|||
<template>
|
||||
<!-- 工资信息 -->
|
||||
<!-- 农民工实名制工资信息报审表 -->
|
||||
<div class="section-container">
|
||||
<div class="table-container">
|
||||
<el-form
|
||||
:inline="true"
|
||||
label-width="auto"
|
||||
:model="nameListQueryParams"
|
||||
ref="wageInfoQueryParamsRef"
|
||||
:model="wageInfoQueryParams"
|
||||
style="margin-top: 20px; padding-left: 20px"
|
||||
>
|
||||
<el-form-item>
|
||||
<el-form-item prop="bankCode">
|
||||
<el-input
|
||||
v-model="nameListQueryParams.entryTime"
|
||||
v-model="wageInfoQueryParams.bankCode"
|
||||
placeholder="请输入银行卡号"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-form-item prop="teamName">
|
||||
<el-input
|
||||
v-model="nameListQueryParams.entryTime"
|
||||
v-model="wageInfoQueryParams.teamName"
|
||||
placeholder="请输入班组"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-form-item prop="userName">
|
||||
<el-input
|
||||
v-model="nameListQueryParams.entryTime"
|
||||
v-model="wageInfoQueryParams.userName"
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
|
@ -58,19 +59,24 @@
|
|||
<el-table
|
||||
border
|
||||
stripe
|
||||
:data="nameListData"
|
||||
style="width: 100%"
|
||||
:data="wageInfoListData"
|
||||
:header-cell-style="tableHeaderStyle"
|
||||
:cell-style="tableCellStyle"
|
||||
>
|
||||
<el-table-column
|
||||
align="center"
|
||||
:key="item.prop"
|
||||
:prop="item.prop"
|
||||
:label="item.label"
|
||||
show-overflow-tooltip
|
||||
v-for="item in columnData"
|
||||
/>
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<template>
|
||||
{{ scope.row[item.prop] || '/' }}
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- <div style="padding-right: 20px">
|
||||
|
|
@ -86,86 +92,78 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { exportThreeAndOneMonthlySalaryApprovalListAPI } from '@/api/synthesize-query/three-and-one'
|
||||
export default {
|
||||
name: 'WageInfo',
|
||||
props: {},
|
||||
props: {
|
||||
id: {
|
||||
type: [Number, String],
|
||||
default: '',
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
total: 100,
|
||||
nameListQueryParams: {
|
||||
entryTime: '',
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
wageInfoQueryParams: {
|
||||
monthId: this.id,
|
||||
bankCode: '',
|
||||
teamName: '',
|
||||
userName: '',
|
||||
},
|
||||
nameListData: [
|
||||
{
|
||||
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,
|
||||
},
|
||||
],
|
||||
|
||||
wageInfoListData: [],
|
||||
columnData: [
|
||||
{
|
||||
label: '姓名',
|
||||
prop: 'entryTime',
|
||||
prop: 'userName',
|
||||
},
|
||||
{
|
||||
label: '所在班组',
|
||||
prop: 'exitTime',
|
||||
prop: 'teamName',
|
||||
},
|
||||
{
|
||||
label: '身份证号',
|
||||
prop: 'subcontractorName',
|
||||
prop: 'idCard',
|
||||
},
|
||||
{
|
||||
label: '开户银行',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'bankName',
|
||||
},
|
||||
{
|
||||
label: '收款银行联行号',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'bankNum',
|
||||
},
|
||||
{
|
||||
label: '银行卡号',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'bankCode',
|
||||
},
|
||||
{
|
||||
label: '工资标准(元/日)',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'priceWage',
|
||||
},
|
||||
{
|
||||
label: '支付周期',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'payment',
|
||||
},
|
||||
{
|
||||
label: '支付日期',
|
||||
prop: 'totalEntryCount',
|
||||
},
|
||||
{
|
||||
label: '户籍地址',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'payDay',
|
||||
},
|
||||
|
||||
{
|
||||
label: '联系方式',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'phone',
|
||||
},
|
||||
{
|
||||
label: '备注',
|
||||
prop: 'totalEntryCount',
|
||||
prop: 'remark',
|
||||
},
|
||||
],
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
created() {
|
||||
this.getThreeAndOneMonthlySalaryApprovalList()
|
||||
},
|
||||
watch: {},
|
||||
methods: {
|
||||
// 表格头部样式
|
||||
|
|
@ -183,33 +181,39 @@ export default {
|
|||
return {
|
||||
fontSize: '14px',
|
||||
color: '#606266',
|
||||
padding: '12px 8px',
|
||||
padding: '12px 0',
|
||||
}
|
||||
},
|
||||
|
||||
// 查询
|
||||
handleQuery() {
|
||||
// this.getAttInfoData()
|
||||
this.getThreeAndOneMonthlySalaryApprovalList()
|
||||
},
|
||||
// 重置
|
||||
resetQuery() {
|
||||
this.attInfoQueryParams = {
|
||||
entryTime: '',
|
||||
}
|
||||
this.resetForm('wageInfoQueryParamsRef')
|
||||
this.getThreeAndOneMonthlySalaryApprovalList()
|
||||
},
|
||||
// 导出
|
||||
handleExport() {
|
||||
// this.download(
|
||||
// '/bmw/workerLight/attExportByWorker',
|
||||
// {
|
||||
// ...this.attInfoQueryParams,
|
||||
// },
|
||||
// '考勤信息.xlsx',
|
||||
// )
|
||||
this.download(
|
||||
'/bmw/pmProject/exportUserSalaryApproval',
|
||||
{
|
||||
...this.wageInfoQueryParams,
|
||||
},
|
||||
'农民工实名制工资信息报审表.xlsx',
|
||||
)
|
||||
},
|
||||
// 获取考勤信息
|
||||
getNameListData() {
|
||||
// 获取农民工实名制工资信息报审表
|
||||
async getThreeAndOneMonthlySalaryApprovalList() {
|
||||
// this.getAttInfoData()
|
||||
|
||||
const res = await exportThreeAndOneMonthlySalaryApprovalListAPI(
|
||||
this.wageInfoQueryParams,
|
||||
)
|
||||
|
||||
this.wageInfoListData = res?.data
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,24 +5,25 @@
|
|||
<el-form
|
||||
:inline="true"
|
||||
label-width="auto"
|
||||
:model="nameListQueryParams"
|
||||
ref="wagePayQueryParamsRef"
|
||||
:model="wagePayQueryParams"
|
||||
style="margin-top: 20px; padding-left: 20px"
|
||||
>
|
||||
<el-form-item>
|
||||
<el-form-item prop="bankCode">
|
||||
<el-input
|
||||
v-model="nameListQueryParams.entryTime"
|
||||
v-model="wagePayQueryParams.bankCode"
|
||||
placeholder="请输入银行卡号"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-form-item prop="teamName">
|
||||
<el-input
|
||||
v-model="nameListQueryParams.entryTime"
|
||||
v-model="wagePayQueryParams.teamName"
|
||||
placeholder="请输入班组"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-form-item prop="userName">
|
||||
<el-input
|
||||
v-model="nameListQueryParams.entryTime"
|
||||
v-model="wagePayQueryParams.userName"
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
|
@ -67,7 +68,7 @@
|
|||
<el-table
|
||||
border
|
||||
stripe
|
||||
:data="nameListData"
|
||||
:data="wagePayListData"
|
||||
style="width: 100%"
|
||||
:header-cell-style="tableHeaderStyle"
|
||||
:cell-style="tableCellStyle"
|
||||
|
|
@ -110,38 +111,26 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { exportThreeAndOneMonthlyWagePaymentListAPI } from '@/api/synthesize-query/three-and-one'
|
||||
export default {
|
||||
name: 'WagePay',
|
||||
props: {},
|
||||
props: {
|
||||
id: {
|
||||
type: [Number, String],
|
||||
default: '',
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isEdit: false,
|
||||
total: 100,
|
||||
nameListQueryParams: {
|
||||
entryTime: '',
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
wagePayQueryParams: {
|
||||
monthId: this.id,
|
||||
bankCode: '',
|
||||
teamName: '',
|
||||
userName: '',
|
||||
},
|
||||
nameListData: [
|
||||
{
|
||||
entryTime: '2025-01-01',
|
||||
exitTime: '2025-01-01',
|
||||
contractName: '工程1',
|
||||
subcontractorName: '分包1',
|
||||
totalEntryCount: 10,
|
||||
dk: 10,
|
||||
sf: 10,
|
||||
},
|
||||
{
|
||||
entryTime: '2025-01-01',
|
||||
exitTime: '2025-01-01',
|
||||
contractName: '工程1',
|
||||
subcontractorName: '分包1',
|
||||
totalEntryCount: 10,
|
||||
dk: 10,
|
||||
sf: 10,
|
||||
},
|
||||
],
|
||||
wagePayListData: [],
|
||||
columnData: [
|
||||
{
|
||||
label: '姓名',
|
||||
|
|
@ -208,8 +197,10 @@ export default {
|
|||
],
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
watch: {},
|
||||
created() {
|
||||
this.getThreeAndOneMonthlyWagePaymentList()
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 表格头部样式
|
||||
tableHeaderStyle() {
|
||||
|
|
@ -226,33 +217,39 @@ export default {
|
|||
return {
|
||||
fontSize: '14px',
|
||||
color: '#606266',
|
||||
padding: '12px 8px',
|
||||
padding: '12px 0',
|
||||
}
|
||||
},
|
||||
|
||||
// 查询
|
||||
handleQuery() {
|
||||
// this.getAttInfoData()
|
||||
this.getThreeAndOneMonthlyWagePaymentList()
|
||||
},
|
||||
// 重置
|
||||
resetQuery() {
|
||||
this.attInfoQueryParams = {
|
||||
entryTime: '',
|
||||
}
|
||||
this.resetForm('wagePayQueryParamsRef')
|
||||
this.getThreeAndOneMonthlyWagePaymentList()
|
||||
},
|
||||
// 导出
|
||||
handleExport() {
|
||||
// this.download(
|
||||
// '/bmw/workerLight/attExportByWorker',
|
||||
// {
|
||||
// ...this.attInfoQueryParams,
|
||||
// },
|
||||
// '考勤信息.xlsx',
|
||||
// )
|
||||
this.download(
|
||||
'/bmw/pmProject/exportUserWagePay',
|
||||
{
|
||||
...this.wagePayQueryParams,
|
||||
},
|
||||
'农名工工资支付表.xlsx',
|
||||
)
|
||||
},
|
||||
// 获取考勤信息
|
||||
getNameListData() {
|
||||
// 获取农名工工资支付表
|
||||
async getThreeAndOneMonthlyWagePaymentList() {
|
||||
// this.getAttInfoData()
|
||||
|
||||
const res = await exportThreeAndOneMonthlyWagePaymentListAPI(
|
||||
this.wagePayQueryParams,
|
||||
)
|
||||
|
||||
this.wagePayListData = res?.data
|
||||
},
|
||||
|
||||
// 修改-其中代扣/代缴、实发工资
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<!-- 月份详情 -->
|
||||
<div class="app-container">
|
||||
<HeaderInfo :id="id" :month="month" :proId="proId" />
|
||||
<ThreeOneTable :id="id" />
|
||||
<ThreeOneTable :id="id" :month="month" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue