考勤机页面完善

This commit is contained in:
BianLzhaoMin 2025-08-16 19:10:57 +08:00
parent 70c4287051
commit 3e39d0b85f
13 changed files with 899 additions and 65 deletions

View File

@ -49,3 +49,10 @@ export const getTeamSelectListAPI = () => {
method: 'GET',
})
}
// 获取工种下拉列表
export const getPostTypeSelectListAPI = () => {
return request({
url: '/bmw/postType/listAll',
method: 'GET',
})
}

View File

@ -0,0 +1,37 @@
import request from '@/utils/request'
import requestFormData from '@/utils/request_formdata'
// 新增考勤机
export const addAttendanceMachineAPI = (data) => {
return request({
url: '/bmw/pmAttDevice/addPmAttDevice',
method: 'POST',
data,
})
}
// 修改考勤机
export const editAttendanceMachineAPI = (data) => {
return request({
url: '/bmw/pmAttDevice/updatePmAttDevice',
method: 'POST',
data,
})
}
// 删除考勤机
export const deleteAttendanceMachineAPI = (data) => {
return request({
url: '/bmw/pmAttDevice/delPmAttDevice',
method: 'POST',
data,
})
}
// 获取考勤机列表
export const getAttendanceMachineListAPI = (data) => {
return request({
url: '/bmw/pmAttDevice/list',
method: 'GET',
params: data,
})
}

View File

@ -10,6 +10,32 @@ export const addEntryPersonAPI = (data) => {
})
}
// 人员出场 批量出场
export const batchExitPersonAPI = (data) => {
return requestFormData({
url: '/bmw/workerExit/exit/batchExit',
method: 'POST',
data,
})
}
// 获取人员出入场记录记录
export const getPersonEntryAndExitRecordAPI = (data) => {
return requestFormData({
url: '/bmw/workerExit/workerList',
method: 'GET',
params: data,
})
}
// 已出场且未上传工资单 然后单独上传接口
export const uploadExitFileAPI = (data) => {
return requestFormData({
url: '/bmw/workerExit/exitFile',
method: 'POST',
data,
})
}
// 人员出场 删除人员接口
export const deleteEntryPersonAPI = (data) => {
return request({

View File

@ -12,6 +12,8 @@ const common = {
subSelectList: [],
// 班组下拉列表
teamSelectList: [],
// 工种下拉列表
postTypeSelectList: [],
},
mutations: {
SET_COMPANY_SELECT_LIST(state, companySelectList) {
@ -32,6 +34,9 @@ const common = {
SET_TEAM_SELECT_LIST(state, teamSelectList) {
state.teamSelectList = teamSelectList
},
SET_POST_TYPE_SELECT_LIST(state, postTypeSelectList) {
state.postTypeSelectList = postTypeSelectList
},
},
}

View File

@ -6,6 +6,7 @@ import {
getLotProjectSelectListAPI,
getSubSelectListAPI,
getTeamSelectListAPI,
getPostTypeSelectListAPI,
} from '@/api/common'
// 获取公司下拉列表
@ -90,3 +91,16 @@ export async function getTeamSelectListCommonFun() {
}
return []
}
// 获取工种下拉列表
export async function getPostTypeSelectListCommonFun() {
const { postTypeSelectList } = store.state.common
if (postTypeSelectList.length > 0) {
return postTypeSelectList
}
const res = await getPostTypeSelectListAPI()
if (res.code === 200) {
store.commit('SET_POST_TYPE_SELECT_LIST', res.rows)
return res.rows
}
return []
}

View File

@ -0,0 +1,182 @@
<template>
<!-- 新增或修改标段工程表单 -->
<div>
<el-form
label-width="140px"
ref="addOrEditFormRef"
:model="addOrEditForm"
:rules="addOrEditFormRules"
>
<el-row>
<el-col :span="24">
<el-form-item label="考勤机编码" prop="deviceCode">
<el-input
clearable
maxlength="30"
show-word-limit
placeholder="请输入考勤机编码"
v-model="addOrEditForm.deviceCode"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="考勤机名称" prop="deviceName">
<el-input
clearable
maxlength="30"
show-word-limit
placeholder="请输入考勤机名称"
v-model="addOrEditForm.deviceName"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="工程名称" prop="proId">
<el-select
clearable
filterable
style="width: 100%"
placeholder="请选择"
v-model="addOrEditForm.proId"
>
<el-option
:key="item.value"
:label="item.label"
:value="item.value"
v-for="item in lotProjectList"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</template>
<script>
import UploadImgFormData from '@/components/UploadImgFormData'
import {
addAttendanceMachineAPI,
editAttendanceMachineAPI,
} from '@/api/construction-person/attendance-manage/attendance-machine'
import { getLotProjectSelectListCommonFun } from '@/utils/getCommonData'
export default {
name: 'AddOrEditForm',
components: {
UploadImgFormData,
},
props: {
//
editFormData: {
type: Object,
default: () => {},
},
},
data() {
return {
addOrEditForm: {
proId: '',
isUpdate: false,
deviceCode: '',
deviceName: '',
},
addOrEditFormRules: {
deviceCode: [
{
required: true,
trigger: 'blur',
message: '请输入考勤机编码',
},
],
deviceName: [
{
required: true,
trigger: 'blur',
message: '请输入考勤机名称',
},
],
proId: [
{
required: true,
trigger: 'blur',
message: '请选择工程',
},
],
},
lotProjectList: [],
}
},
methods: {
//
onHandleConfirmAddOrEditFun() {
return new Promise((resolve, reject) => {
this.$refs.addOrEditFormRef.validate(async (valid) => {
if (valid) {
//
const { isUpdate, proId, deviceCode, deviceName } =
this.addOrEditForm
const params = {
proId,
deviceCode,
deviceName,
}
const API = isUpdate
? editAttendanceMachineAPI
: addAttendanceMachineAPI
const res = await API(params)
if (res.code === 200) {
this.$modal.msgSuccess(
this.formType === 1 ? '新增成功' : '修改成功',
)
resolve()
} else {
this.$modal.msgError(res.meg)
reject(new Error(res.meg))
}
} else {
reject(new Error('表单验证失败'))
}
})
})
},
//
resetForm() {
this.$refs.addOrEditFormRef.resetFields()
},
},
async created() {
const lotPro = await getLotProjectSelectListCommonFun()
this.lotProjectList = lotPro.map((item) => {
return {
value: item.id,
label: item.proName,
}
})
},
watch: {
editFormData: {
handler(newVal) {
if (Object.keys(newVal).length > 0) {
Object.assign(this.addOrEditForm, newVal)
}
},
deep: true,
immediate: true,
},
},
}
</script>

View File

@ -0,0 +1,60 @@
export const formLabel = [
{
isShow: false, // 是否展示label
f_type: 'ipt',
f_label: '考勤机编号',
f_model: 'deviceCode',
},
{
isShow: false, // 是否展示label
f_type: 'ipt',
f_label: '考勤机名称',
f_model: 'deviceName',
},
{
isShow: false, // 是否展示label
f_type: 'ipt',
f_label: '所属工程',
f_model: 'proName',
},
{
isShow: false, // 是否展示label
f_type: 'sel',
f_label: '考勤机状态',
f_model: 'onLine',
f_selList: [
{
label: '在线',
value: 1,
},
{
label: '离线',
value: 0,
},
],
},
]
export const columnsList = [
{ t_props: 'deviceCode', t_label: '考勤机编号' },
{ t_props: 'deviceName', t_label: '考勤机名称' },
{ t_props: 'proName', t_label: '工程名称' },
{ t_slot: 'isShanghai', t_label: '工程类型' },
{
t_label: '状态',
t_slot: 'onLine',
},
{ t_label: '绑定人', t_props: 'updateUser' },
{
t_label: '绑定时间',
t_props: 'updateTime',
},
]
export const dialogConfig = {
outerTitle: '',
minHeight: '',
maxHeight: '',
outerWidth: '40%',
outerVisible: false,
}

View File

@ -1,11 +1,264 @@
<template>
<!-- 施工人员 ---- 考勤管理 ---- 考勤机 -->
<div class="app-container">
<h1>考勤机</h1>
<TableModel
:formLabel="formLabel"
:showOperation="true"
:showRightTools="true"
ref="attendanceMachineTableRef"
:columnsList="columnsList"
:request-api="getAttendanceMachineListAPI"
>
<template slot="btn" slot-scope="{ queryParams }">
<el-button
plain
size="mini"
type="success"
icon="el-icon-download"
@click="onHandleExportAttendanceMachine(queryParams)"
>
导出
</el-button>
<el-button
plain
size="mini"
type="primary"
icon="el-icon-plus"
v-hasPermi="['attendance:machine:add']"
@click="onHandleAddOrBindAttendanceMachine(1, null)"
>
新增
</el-button>
</template>
<!-- 工程类型-->
<template slot="isShanghai" slot-scope="{ data }">
<span
:style="{
color: data.isShanghai == 1 ? '#67C23A' : '#F56C6C',
}"
>
{{ data.isShanghai == 1 ? '上海内' : '上海外' }}
</span>
</template>
<template slot="onLine" slot-scope="{ data }">
<el-tag
size="mini"
:type="data.onLine == 1 ? 'success' : 'danger'"
>
{{ data.onLine == 1 ? '在线' : '离线' }}
</el-tag>
</template>
<template slot="handle" slot-scope="{ data }">
<el-button
plain
size="mini"
type="primary"
icon="el-icon-edit"
v-if="data.onLine != 1"
v-hasPermi="['attendance:machine:bind']"
@click="onHandleAddOrBindAttendanceMachine(2, data)"
>
绑定
</el-button>
<el-button
plain
size="mini"
type="warning"
icon="el-icon-edit"
v-hasPermi="['attendance:machine:unbind']"
@click="onHandleUnBindAttendanceMachine(data)"
>
解绑
</el-button>
<el-button
size="mini"
type="danger"
icon="el-icon-delete"
v-hasPermi="['attendance:machine:delete']"
@click="onHandleDeleteSubBaseInfo(data)"
>
删除
</el-button>
</template>
</TableModel>
<DialogModel
:dialogConfig="dialogConfig"
@closeDialogOuter="handleCloseDialogOuter"
>
<template slot="outerContent">
<AddAndBindForm
:editFormData="editFormData"
ref="addOrEditSubBaseInfoRef"
/>
<el-row class="dialog-footer-btn">
<el-button size="medium" @click="handleCloseDialogOuter">
取消
</el-button>
<el-button
size="medium"
type="primary"
@click="onHandleConfirmAddOrEdit"
>
确定
</el-button>
</el-row>
</template>
</DialogModel>
</div>
</template>
<script>
export default {}
</script>
import TableModel from '@/components/TableModel'
import DialogModel from '@/components/DialogModel'
import AddAndBindForm from './add-and-bind.form.vue'
import { formLabel, columnsList, dialogConfig } from './config'
import {
deleteAttendanceMachineAPI,
getAttendanceMachineListAPI,
editAttendanceMachineAPI,
} from '@/api/construction-person/attendance-manage/attendance-machine'
export default {
name: 'SubBaseInfo',
components: {
TableModel,
DialogModel,
AddAndBindForm,
},
<style></style>
data() {
return {
formLabel,
columnsList,
dialogConfig,
editFormData: {}, //
getAttendanceMachineListAPI, // API
//
slots: [
{
type: 1,
name: 'businessLicense',
},
{
type: 2,
name: 'idCard',
},
{
type: 3,
name: 'electronicSeal',
},
{
type: 4,
name: 'corporateSeal',
},
],
}
},
methods: {
//
onHandleExportAttendanceMachine(queryParams) {
this.download(
'/bmw/pmAttDevice/export',
{
...queryParams,
},
`考勤机列表.xlsx`,
)
},
//
onHandleAddOrBindAttendanceMachine(type, data) {
this.dialogConfig.outerTitle =
type === 1 ? '新增考勤机' : '绑定考勤机'
if (type === 2) {
const { proId, deviceCode, deviceName } = data
this.editFormData = {
isUpdate: true,
proId,
deviceCode,
deviceName,
}
} else {
this.editFormData = {}
}
this.dialogConfig.outerVisible = true
},
//
onHandleUnBindAttendanceMachine(data) {
this.$confirm('是否确定解绑该考勤机?', '温馨提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(async () => {
const res = await editAttendanceMachineAPI({
deviceCode: data.deviceCode,
})
if (res.code === 200) {
this.$modal.msgSuccess('解绑成功')
this.$refs.attendanceMachineTableRef.getTableList() //
}
})
.catch(() => {
// console.log('')
})
},
//
onHandleDeleteSubBaseInfo(data) {
this.$confirm('确定删除该考勤机吗?', '温馨提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(async () => {
const res = await deleteAttendanceMachineAPI({
deviceCode: data.deviceCode,
})
if (res.code === 200) {
this.$modal.msgSuccess('删除成功')
this.$refs.attendanceMachineTableRef.getTableList() //
}
})
.catch(() => {
// console.log('')
})
},
//
async onHandleConfirmAddOrEdit() {
try {
await this.$refs.addOrEditSubBaseInfoRef.onHandleConfirmAddOrEditFun()
this.handleCloseDialogOuter()
this.$refs.attendanceMachineTableRef.getTableList()
} catch (error) {
// console.log('', error)
}
},
//
handleCloseDialogOuter() {
this.$refs.addOrEditSubBaseInfoRef.resetForm()
this.dialogConfig.outerVisible = false
},
//
initIsUpload(data, type) {
if (data.contractFile.length > 0) {
const isUpload = data.contractFile.some(
(item) => item.sourceType == type,
)
return isUpload ? '已上传' : '未上传'
}
return '未上传'
},
},
}
</script>

View File

@ -187,8 +187,8 @@ export default {
async onHandleConfirmAddOrEdit() {
try {
await this.$refs.addOrEditFormContentRef.onHandleConfirmAddOrEditFun()
// this.$refs.personEntryTableRef.getTableList()
// this.handleCloseDialogOuter()
this.$refs.personEntryTableRef.getTableList()
this.handleCloseDialogOuter()
} catch (error) {
console.log('表单提交失败', error)
}

View File

@ -1,57 +1,81 @@
export const formLabel = [
{
f_label: '关键词',
f_model: 'keyword',
f_label: '姓名',
f_model: 'name',
f_type: 'ipt',
isShow: false, // 是否展示label
},
{
f_label: '身份证',
f_model: 'keyword',
f_model: 'idNumber',
f_type: 'ipt',
isShow: false, // 是否展示label
},
{
f_label: '联系方式',
f_model: 'keyword',
f_model: 'phone',
f_type: 'ipt',
isShow: false, // 是否展示label
},
{
f_label: '选择工程',
f_model: 'keyword',
f_type: 'ipt',
f_model: 'proId',
f_type: 'sel',
isShow: false, // 是否展示label
f_selList: [],
},
{
f_label: '选择工种',
f_model: 'keyword',
f_type: 'ipt',
f_model: 'postId',
f_type: 'sel',
isShow: false, // 是否展示label
f_selList: [],
},
{
f_label: '选择分包',
f_model: 'keyword',
f_type: 'ipt',
f_model: 'subId',
f_type: 'sel',
isShow: false, // 是否展示label
f_selList: [],
},
{
f_label: '选择班组',
f_model: 'keyword',
f_type: 'ipt',
f_model: 'teamId',
f_type: 'sel',
isShow: false, // 是否展示label
f_selList: [],
},
{
f_label: '出入场状态',
f_model: 'keyword',
f_type: 'ipt',
f_model: 'einStatus',
f_type: 'sel',
isShow: false, // 是否展示label
f_selList: [
{
label: '在场',
value: 1,
},
{
label: '出场',
value: 2,
},
],
},
{
f_label: '结算单状态',
f_model: 'keyword',
f_type: 'ipt',
f_model: 'isUploadFile',
f_type: 'sel',
isShow: false, // 是否展示label
f_selList: [
{
label: '未上传',
value: 0,
},
{
label: '已上传',
value: 1,
},
],
},
]
@ -70,8 +94,9 @@ export const columnsList = [
t_label: '出场时间',
},
{
t_props: 'electronicSignature',
t_slot: 'isUploadFile',
t_label: '离场人员工资结算确认单',
t_width: '200px',
},
{
t_props: 'subName',

View File

@ -2,26 +2,118 @@
<!-- 出入场记录 -->
<div>
<el-table :data="entryExitRecordList">
<el-table-column label="序号" type="index" width="50" />
<el-table-column prop="name" label="姓名" />
<el-table-column prop="idNumber" label="工种" />
<el-table-column prop="proName" label="所属工程" />
<el-table-column prop="teamName" label="所属分包" />
<el-table-column prop="einStatus" label="所属班组" />
<el-table-column prop="einStatus" label="入场时间" />
<el-table-column prop="einStatus" label="出场时间" />
<el-table-column
align="center"
label="序号"
type="index"
width="50"
show-overflow-tooltip
/>
<el-table-column
align="center"
prop="name"
label="姓名"
show-overflow-tooltip
/>
<el-table-column
align="center"
prop="postName"
label="工种"
show-overflow-tooltip
/>
<el-table-column
align="center"
prop="proName"
label="所属工程"
show-overflow-tooltip
/>
<el-table-column
align="center"
prop="subName"
label="所属分包"
show-overflow-tooltip
/>
<el-table-column
align="center"
prop="teamName"
label="所属班组"
show-overflow-tooltip
/>
<el-table-column
align="center"
prop="einTime"
label="入场时间"
show-overflow-tooltip
/>
<el-table-column
align="center"
prop="endTime"
label="出场时间"
show-overflow-tooltip
/>
<el-table-column
align="center"
show-overflow-tooltip
label="离场人员工资结算确认单"
>
<template slot-scope="{ row }">
<el-button
type="text"
size="mini"
@click="onHandlePreviewFile(row)"
>
3
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import { getPersonEntryAndExitRecordAPI } from '@/api/construction-person/entry-and-exit-manage/person-exit'
export default {
name: 'EntryExitRecord',
props: {
queryDetailsId: {
type: [String, Number],
default: '',
},
},
data() {
return {
entryExitRecordList: [],
}
},
methods: {
//
async getPersonEntryAndExitRecordList() {
const res = await getPersonEntryAndExitRecordAPI({
id: this.queryDetailsId,
})
this.entryExitRecordList = res.rows
},
//
onHandlePreviewFile(row) {
console.log(row, '查看附件')
},
},
watch: {
queryDetailsId: {
handler(newVal) {
if (newVal) {
this.getPersonEntryAndExitRecordList()
}
},
deep: true,
immediate: true,
},
},
}
</script>

View File

@ -8,6 +8,7 @@
:isSelectShow="true"
ref="personExitTableRef"
:columnsList="columnsList"
:selectable="(row) => row.einStatus === 1"
:request-api="getExitPersonListAPI"
>
<template slot="btn" slot-scope="{ queryParams }">
@ -43,6 +44,36 @@
出场
</el-tag>
</template>
<template slot="isUploadFile" slot-scope="{ data }">
<el-tag size="mini" type="danger" v-if="data.isUploadFile == 0">
未上传
{{
data.daysSinceExit * 1 > 0
? '' + data.daysSinceExit + '天)'
: ''
}}
</el-tag>
<el-button
type="text"
size="mini"
style="margin-left: 5px"
@click="onHandlePersonExit(data, 2)"
v-if="
data.isUploadFile == 0 &&
data.einStatus === 2 &&
data.daysSinceExit * 1 < 31
"
>
点击上传
</el-button>
<el-tag
size="mini"
type="success"
v-if="data.isUploadFile == 1"
>
已上传
</el-tag>
</template>
<template slot="handle" slot-scope="{ data }">
<el-button
@ -51,7 +82,7 @@
type="primary"
icon="el-icon-right"
v-if="data.einStatus === 1"
@click="onHandlePersonExit(data)"
@click="onHandlePersonExit(data, 1)"
>
出场
</el-button>
@ -75,14 +106,19 @@
<PersonExitForm
ref="personExitFormRef"
:exitFormData="exitFormData"
:isExitUpload="isExitUpload"
v-if="dialogConfig.outerTitle === '人员出场'"
/>
<EntryExitRecord
:queryDetailsId="queryDetailsId"
v-if="dialogConfig.outerTitle === '出入场记录'"
/>
<el-row class="dialog-footer-btn">
<el-row
class="dialog-footer-btn"
v-if="dialogConfig.outerTitle === '人员出场'"
>
<el-button size="medium" @click="handleCloseDialogOuter">
取消
</el-button>
@ -104,15 +140,21 @@ import TableModel from '@/components/TableModel'
import DialogModel from '@/components/DialogModel'
import PersonExitForm from './person-exit-form.vue'
import EntryExitRecord from './entry-exit-record.vue'
import { formLabel, columnsList, dialogConfig } from './config'
import {
deleteSubBaseInfoAPI,
getSubBaseInfoListAPI,
} from '@/api/basic-manage/sub-manage/sub-base-info'
getLotProjectSelectListCommonFun,
getSubSelectListCommonFun,
getTeamSelectListCommonFun,
getPostTypeSelectListCommonFun,
} from '@/utils/getCommonData'
import { formLabel, columnsList, dialogConfig } from './config'
import { getExitPersonListAPI } from '@/api/construction-person/entry-and-exit-manage/person-exit'
import {
getExitPersonListAPI,
batchExitPersonAPI,
} from '@/api/construction-person/entry-and-exit-manage/person-exit'
export default {
name: 'PersonExit',
dicts: ['project_type'],
components: {
TableModel,
DialogModel,
@ -126,6 +168,8 @@ export default {
columnsList,
dialogConfig,
exitFormData: {},
queryDetailsId: '',
isExitUpload: 1, //
getExitPersonListAPI,
slots: {
@ -143,7 +187,7 @@ export default {
},
//
onHandleBatchExit() {
async onHandleBatchExit() {
console.log(this.$refs.personExitTableRef.selectedData, '批量出场')
const selectedData = this.$refs.personExitTableRef.selectedData
@ -152,9 +196,27 @@ export default {
this.$message.warning('请勾选要出场的人员')
return
}
const params = selectedData.map((item) => {
return {
id: item.id,
workerId: item.workerId,
}
})
const res = await batchExitPersonAPI(params)
console.log(res, '批量出场结果')
if (res.code === 200) {
this.$modal.msgSuccess('批量出场成功')
this.$refs.personExitTableRef.getTableList()
} else {
this.$modal.msgError(res.msg)
}
},
onHandlePersonExit(data) {
onHandlePersonExit(data, type) {
this.isExitUpload = type
const { name, idNumber, proName, subName, teamName, id, workerId } =
data
@ -187,7 +249,7 @@ export default {
//
onHandleEntryAndExitRecord(data) {
console.log('----')
this.queryDetailsId = data.id
this.dialogConfig.outerTitle = '出入场记录'
this.dialogConfig.outerWidth = '80%'
this.dialogConfig.minHeight = '90vh'
@ -200,5 +262,37 @@ export default {
this.dialogConfig.outerVisible = false
},
},
async created() {
const lotProjectList = await getLotProjectSelectListCommonFun()
const subList = await getSubSelectListCommonFun()
const teamList = await getTeamSelectListCommonFun()
const postTypeList = await getPostTypeSelectListCommonFun()
this.formLabel[3].f_selList = lotProjectList.map((item) => {
return {
label: item.proName,
value: item.id,
}
})
this.formLabel[4].f_selList = postTypeList.map((item) => {
return {
label: item.postName,
value: item.postId,
}
})
this.formLabel[5].f_selList = subList.map((item) => {
return {
value: item.id,
label: item.subName,
}
})
this.formLabel[6].f_selList = teamList.map((item) => {
return {
value: item.id,
label: item.teamName,
}
})
},
}
</script>

View File

@ -81,7 +81,10 @@
<script>
import UploadFileFormData from '@/components/UploadFileFormData'
import { addEntryPersonAPI } from '@/api/construction-person/entry-and-exit-manage/person-exit'
import {
addEntryPersonAPI,
uploadExitFileAPI,
} from '@/api/construction-person/entry-and-exit-manage/person-exit'
export default {
name: 'personExitForm',
components: {
@ -92,6 +95,10 @@ export default {
type: Object,
default: () => {},
},
isExitUpload: {
type: Number,
default: 1,
},
},
data() {
return {
@ -110,6 +117,7 @@ export default {
//
onHandleConfirmAddOrEditFun() {
return new Promise(async (resolve, reject) => {
if (this.isExitUpload === 1) {
const { id, workerId, fileList } = this.personExitFormData
const params = {
id,
@ -140,6 +148,37 @@ export default {
this.$modal.msgError(res.msg)
reject(new Error(res.msg))
}
} else {
const { id, fileList } = this.personExitFormData
const params = {
id,
}
const formData = new FormData()
const fileMsg = []
if (fileList.length > 0) {
fileList.forEach((e) => {
formData.append('files', e.raw)
fileMsg.push({
name: '工资结算确认单',
type: 1,
})
})
}
formData.append('params', JSON.stringify(params))
formData.append('fileMsg', JSON.stringify(fileMsg))
const res = await uploadExitFileAPI(formData)
if (res.code === 200) {
this.$modal.msgSuccess('上传成功')
resolve()
} else {
this.$modal.msgError(res.msg)
reject(new Error(res.msg))
}
}
})
},
},