This commit is contained in:
BianLzhaoMin 2025-08-19 17:34:53 +08:00
parent ec6e97d549
commit 271dd7a8de
12 changed files with 592 additions and 246 deletions

View File

@ -27,7 +27,7 @@ export const getSubTeamListAPI = (data) => {
// 获取7天未打卡列表 // 获取7天未打卡列表
export const getSevenDaysNoAttendanceListAPI = (data) => { export const getSevenDaysNoAttendanceListAPI = (data) => {
return request({ return request({
url: '/bmw/pmAttDevice/list', url: '/bmw/workerLight/getSevenNotAttListByTeam',
method: 'GET', method: 'GET',
params: data, params: data,
}) })

View File

@ -1,4 +1,5 @@
import request from '@/utils/request' import request from '@/utils/request'
import requestFormData from '@/utils/request_formdata'
// 红绿灯统计 失信人员列表查询接口 // 红绿灯统计 失信人员列表查询接口
export const getDishonestyPersonListAPI = (data) => { export const getDishonestyPersonListAPI = (data) => {
@ -24,3 +25,20 @@ export const removeDishonestyPersonAPI = (id) => {
method: 'POST', method: 'POST',
}) })
} }
// 红绿灯统计 导入失信人员
export const importDishonestyPersonAPI = (data) => {
return requestFormData({
url: '/bmw/workerBlack/workerBlackImport',
method: 'POST',
data,
})
}
// 红绿灯统计 下载模板
export const downloadDishonestyPersonTemplateAPI = () => {
return request({
url: '/bmw/download/workerEinTemplate',
method: 'GET',
})
}

View File

@ -84,6 +84,7 @@
v-if="item.f_type === 'dateRange'" v-if="item.f_type === 'dateRange'"
v-model="queryParams[item.f_model]" v-model="queryParams[item.f_model]"
@change="onChangeTime($event, item.dateType)" @change="onChangeTime($event, item.dateType)"
:picker-options="pickerOptions"
/> />
<el-input-number <el-input-number
:min="0" :min="0"
@ -265,6 +266,16 @@ export default {
type: Array, type: Array,
default: () => [], default: () => [],
}, },
//
isCurrentDate: {
type: Boolean,
default: false,
},
//
isOneMonth: {
type: Boolean,
default: false,
},
}, },
computed: { computed: {
/* 根据操作栏控制表头是否显示 */ /* 根据操作栏控制表头是否显示 */
@ -320,6 +331,9 @@ export default {
idCount: 1, idCount: 1,
// //
typeList: [], typeList: [],
//
pickerOptions: {},
} }
}, },
@ -334,6 +348,26 @@ export default {
this.$set(this.queryParams, e.dateType[0], '') this.$set(this.queryParams, e.dateType[0], '')
this.$set(this.queryParams, e.dateType[1], '') this.$set(this.queryParams, e.dateType[1], '')
this.typeList = e.dateType this.typeList = e.dateType
if (this.isOneMonth) {
this.pickerOptions = {
disabledDate: (time) => {
//
return time.getTime() > Date.now()
},
onPick: ({ maxDate, minDate }) => {
//
this.pickerOptions.minDate = minDate
if (minDate) {
const maxRangeDate = new Date(minDate)
maxRangeDate.setMonth(minDate.getMonth() + 1)
this.pickerOptions.maxDate = maxRangeDate
} else {
this.pickerOptions.maxDate = null
}
},
}
}
} else { } else {
this.$set(this.queryParams, e.f_model, '') this.$set(this.queryParams, e.f_model, '')
} }
@ -393,15 +427,27 @@ export default {
resetQuery() { resetQuery() {
this.$refs.queryFormRef.resetFields() this.$refs.queryFormRef.resetFields()
if (this.typeList.length > 1) { if (this.typeList.length > 1) {
if (this.isCurrentDate) {
this.queryParams[this.typeList[0]] = new Date()
.toISOString()
.split('T')[0]
this.queryParams[this.typeList[1]] = new Date()
.toISOString()
.split('T')[0]
this.queryParams.time = [
new Date().toISOString().split('T')[0],
new Date().toISOString().split('T')[0],
]
} else {
this.queryParams[this.typeList[0]] = '' this.queryParams[this.typeList[0]] = ''
this.queryParams[this.typeList[1]] = '' this.queryParams[this.typeList[1]] = ''
this.queryParams.time = [] this.queryParams.time = []
}
} else { } else {
this.queryParams[this.typeList[0]] = '' this.queryParams[this.typeList[0]] = ''
} }
this.queryParams.pageNum = 1 this.queryParams.pageNum = 1
this.queryParams.pageSize = 10 this.queryParams.pageSize = 10
this.queryParams.time = []
this.getTableList() this.getTableList()
}, },
/** 级联选择 */ /** 级联选择 */
@ -475,13 +521,35 @@ export default {
/* 时间change事件 */ /* 时间change事件 */
onChangeTime(e, type) { onChangeTime(e, type) {
console.log(e, '时间', type) if (this.isOneMonth) {
if (e && e.length === 2) {
const [start, end] = e
const startDate = new Date(start)
const endDate = new Date(end)
//
const diffTime = Math.abs(endDate - startDate)
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))
// 31
if (diffDays > 31) {
const newEndDate = new Date(startDate)
newEndDate.setDate(startDate.getDate() + 31)
this.queryParams.time = [
start,
newEndDate.toISOString().split('T')[0],
]
this.$message.warning(
'选择的时间范围超过31天查询将会缓慢已自动调整',
)
}
}
} else {
const [_1, _2] = type const [_1, _2] = type
const [_time1, _time2] = e const [_time1, _time2] = e
if (e.length > 0) { if (e.length > 0) {
this.queryParams[_1] = _time1 this.queryParams[_1] = _time1
this.queryParams[_2] = _time2 this.queryParams[_2] = _time2
} }
}
}, },
}, },
} }

View File

@ -199,7 +199,19 @@ export default {
this.getAttendanceDetailsListData() this.getAttendanceDetailsListData()
}, },
// //
onHandleExportAttendanceDetails() {}, onHandleExportAttendanceDetails() {
this.download(
'/bmw/workerLight/attExportByWorkerMsg',
{
teamId: this.teamId,
proId: this.proId,
idNumber: this.idNumber,
startDate: this.timeRange[0],
endDate: this.timeRange[1],
},
'考勤详情.xlsx',
)
},
// //
async getAttendanceDetailsListData() { async getAttendanceDetailsListData() {

View File

@ -9,13 +9,13 @@ export const formLabel = [
export const columnsList = [ export const columnsList = [
{ t_label: '分公司', t_slot: 'subComName' }, { t_label: '分公司', t_slot: 'subComName' },
{ t_props: 'buildProNum', t_label: '在建工程数量' }, { t_slot: 'buildProNum', t_label: '在建工程数量' },
{ t_props: 'completedProNum', t_label: '完工工程数量' }, { t_slot: 'completedProNum', t_label: '完工工程数量' },
{ t_props: 'preProNum', t_label: '筹建工程数量' }, { t_slot: 'preProNum', t_label: '筹建工程数量' },
{ t_props: 'subNum', t_label: '分包数量' }, { t_slot: 'subNum', t_label: '分包数量' },
{ t_props: 'teamNum', t_label: '班组数量' }, { t_slot: 'teamNum', t_label: '班组数量' },
{ t_props: 'einNum', t_label: '在场人数' }, { t_slot: 'einNum', t_label: '在场人数' },
{ t_props: 'attNum', t_label: '考勤人数' }, { t_slot: 'attNum', t_label: '考勤人数' },
] ]
export const dialogConfig = { export const dialogConfig = {
@ -39,16 +39,7 @@ export const projectFormLabel = [
f_model: 'proStatus', f_model: 'proStatus',
f_type: 'sel', f_type: 'sel',
isShow: false, // 是否展示label isShow: false, // 是否展示label
f_selList: [ f_selList: [],
{
label: '在建',
value: 1,
},
{
label: '完工',
value: 2,
},
],
}, },
{ {
f_label: '日期', f_label: '日期',
@ -60,11 +51,11 @@ export const projectFormLabel = [
export const projectColumnsList = [ export const projectColumnsList = [
{ t_slot: 'proName', t_label: '工程名称' }, { t_slot: 'proName', t_label: '工程名称' },
{ t_props: 'orgName', t_label: '工程状态' }, { t_slot: 'proStatus', t_label: '工程状态' },
{ t_props: 'subNum', t_label: '分包数量' }, { t_slot: 'subNum', t_label: '分包数量' },
{ t_slot: 'teamNum', t_label: '班组数量' }, { t_slot: 'teamNum', t_label: '班组数量' },
{ t_props: 'einNum', t_label: '在场人数' }, { t_slot: 'einNum', t_label: '在场人数' },
{ t_props: 'attNum', t_label: '考勤人数' }, { t_slot: 'attNum', t_label: '考勤人数' },
] ]
export const projectDialogConfig = { export const projectDialogConfig = {
@ -99,14 +90,14 @@ export const subTeamFormLabel = [
export const subTeamColumnsList = [ export const subTeamColumnsList = [
{ t_props: 'proName', t_label: '工程名称' }, { t_props: 'proName', t_label: '工程名称' },
{ t_props: 'orgName', t_label: '分包名称' }, { t_props: 'subName', t_label: '分包名称' },
{ t_slot: 'teamName', t_label: '班组名称' }, { t_slot: 'teamName', t_label: '班组名称' },
{ t_slot: 'proType', t_label: '班组状态' }, { t_slot: 'teamEinStatus', t_label: '班组状态' },
{ t_props: 'einNum', t_label: '在场人数' }, { t_slot: 'einNum', t_label: '在场人数' },
{ t_props: 'attNum', t_label: '考勤人数' }, { t_slot: 'attNum', t_label: '考勤人数' },
{ {
t_label: '连续七天未打卡', t_label: '连续七天未打卡',
t_slot: 'noAttendance', t_slot: 'sevenNotAttNum',
}, },
] ]
@ -129,8 +120,12 @@ export const personFormLabel = [
{ {
f_label: '状态', f_label: '状态',
f_model: 'status', f_model: 'status',
f_type: 'ipt', f_type: 'sel',
isShow: false, // 是否展示label isShow: false, // 是否展示label
f_selList: [
{ value: 1, label: '正常' },
{ value: 2, label: '异常' },
],
}, },
{ {
f_label: '日期', f_label: '日期',
@ -147,9 +142,9 @@ export const personColumnsList = [
{ t_props: 'phone', t_label: '联系方式' }, { t_props: 'phone', t_label: '联系方式' },
{ t_props: 'postName', t_label: '工种' }, { t_props: 'postName', t_label: '工种' },
{ t_props: 'subName', t_label: '所属分包' }, { t_props: 'subName', t_label: '所属分包' },
{ t_props: 'attDay', t_label: '考勤天数' }, { t_slot: 'attDay', t_label: '考勤天数' },
{ {
t_props: 'notAttNum', t_slot: 'notAttNum',
t_label: '缺勤天数', t_label: '缺勤天数',
}, },
] ]

View File

@ -16,6 +16,10 @@
{{ data.subComName }} {{ data.subComName }}
</span> </span>
</template> </template>
<template v-for="item in slots" :slot="item" slot-scope="{ data }">
<span :key="item">{{ data[item] }}</span>
</template>
</TableModel> </TableModel>
<DialogModel <DialogModel
@ -55,6 +59,16 @@ export default {
sendParams: { sendParams: {
startDate: new Date().toISOString().split('T')[0], // startDate: new Date().toISOString().split('T')[0], //
}, },
slots: [
'buildProNum',
'completedProNum',
'preProNum',
'subNum',
'teamNum',
'einNum',
'attNum',
],
} }
}, },
methods: { methods: {

View File

@ -3,7 +3,9 @@
<div class="app-container"> <div class="app-container">
<TableModel <TableModel
:showOperation="false" :showOperation="false"
:showRightTools="true" :showRightTools="false"
:isCurrentDate="true"
:isOneMonth="true"
ref="personTableRef" ref="personTableRef"
:formLabel="personFormLabel" :formLabel="personFormLabel"
:columnsList="personColumnsList" :columnsList="personColumnsList"
@ -17,12 +19,28 @@
], ],
}" }"
> >
<template slot="btn" slot-scope="{ queryParams }">
<el-button
plain
size="mini"
type="success"
icon="el-icon-download"
@click="onHandleExportPerson(queryParams)"
>
导出
</el-button>
</template>
<!-- 人员名称 --> <!-- 人员名称 -->
<template slot="name" slot-scope="{ data }"> <template slot="name" slot-scope="{ data }">
<span class="cursor-blue" @click="onHandleCheckPerson(data)"> <span class="cursor-blue" @click="onHandleCheckPerson(data)">
{{ data.name }} {{ data.name }}
</span> </span>
</template> </template>
<!-- 数量 -->
<template v-for="item in slots" :slot="item" slot-scope="{ data }">
<span :key="item">{{ data[item] ? data[item] : 0 }}</span>
</template>
</TableModel> </TableModel>
<DialogModel <DialogModel
@ -79,9 +97,21 @@ export default {
personDialogConfig, personDialogConfig,
getPersonListAPI, getPersonListAPI,
idNumber: '', idNumber: '',
slots: ['attDay', 'notAttNum'],
} }
}, },
methods: { methods: {
//
onHandleExportPerson(queryParams) {
this.download(
'/bmw/workerLight/attExportByWorker',
{
...queryParams,
},
'人员列表.xlsx',
)
},
// //
handleCloseDialogOuter() { handleCloseDialogOuter() {
this.personDialogConfig.outerVisible = false this.personDialogConfig.outerVisible = false

View File

@ -3,7 +3,7 @@
<div class="app-container"> <div class="app-container">
<TableModel <TableModel
:showOperation="false" :showOperation="false"
:showRightTools="true" :showRightTools="false"
ref="projectTableRef" ref="projectTableRef"
:formLabel="projectFormLabel" :formLabel="projectFormLabel"
:columnsList="projectColumnsList" :columnsList="projectColumnsList"
@ -13,12 +13,35 @@
startDate: new Date().toISOString().split('T')[0], startDate: new Date().toISOString().split('T')[0],
}" }"
> >
<template slot="btn" slot-scope="{ queryParams }">
<el-button
plain
size="mini"
type="success"
icon="el-icon-download"
@click="onHandleExportProject(queryParams)"
>
导出
</el-button>
</template>
<!-- 工程名称 --> <!-- 工程名称 -->
<template slot="proName" slot-scope="{ data }"> <template slot="proName" slot-scope="{ data }">
<span class="cursor-blue" @click="onHandleCheckProject(data)"> <span class="cursor-blue" @click="onHandleCheckProject(data)">
{{ data.proName }} {{ data.proName }}
</span> </span>
</template> </template>
<!-- 工程状态 -->
<template slot="proStatus" slot-scope="{ data }">
<el-tag size="mini" :type="initType(data.proStatus)">
{{ initProStatus(data.proStatus) }}
</el-tag>
</template>
<!-- 数量 -->
<template v-for="item in slots" :slot="item" slot-scope="{ data }">
<span :key="item">{{ data[item] ? data[item] : 0 }}</span>
</template>
</TableModel> </TableModel>
<DialogModel <DialogModel
@ -46,6 +69,7 @@ import {
export default { export default {
name: 'ProjectTable', name: 'ProjectTable',
dicts: ['project_status'],
props: { props: {
subComId: { subComId: {
type: [String, Number], type: [String, Number],
@ -65,9 +89,21 @@ export default {
projectDialogConfig, projectDialogConfig,
getProjectListAPI, getProjectListAPI,
proId: '', proId: '',
slots: ['subNum', 'teamNum', 'teamNum', 'einNum', 'attNum'],
} }
}, },
methods: { methods: {
//
onHandleExportProject(queryParams) {
this.download(
'/bmw/workerLight/attExportByPro',
{
...queryParams,
},
'工程列表.xlsx',
)
},
// //
handleCloseDialogOuter() { handleCloseDialogOuter() {
this.projectDialogConfig.outerVisible = false this.projectDialogConfig.outerVisible = false
@ -78,6 +114,44 @@ export default {
this.proId = data.proId this.proId = data.proId
this.projectDialogConfig.outerVisible = true this.projectDialogConfig.outerVisible = true
}, },
initProStatus(status) {
if (typeof status === 'string') {
const res = this.dict.type.project_status.find(
(item) => item.value == status,
)
if (res && res.label) {
return res.label || ''
}
return ''
}
return status || ''
},
//
initType(data) {
if (typeof data === 'string') {
const res = this.dict.type.project_status.find(
(item) => item.value == data,
)
if (res && res.raw) {
return res.raw.listClass || 'primary'
}
return 'primary' || ''
}
return 'primary' || ''
},
},
created() {
projectFormLabel.forEach((item) => {
if (item.f_model === 'proStatus') {
item.f_selList = this.dict.type.project_status
}
})
}, },
} }
</script> </script>

View File

@ -2,9 +2,9 @@
<!-- 施工人员 ---- 考勤管理 ---- 考勤统计第二级弹框 分包班组 --> <!-- 施工人员 ---- 考勤管理 ---- 考勤统计第二级弹框 分包班组 -->
<div class="app-container"> <div class="app-container">
<TableModel <TableModel
:showOperation="false"
:showRightTools="true"
ref="subTeamTableRef" ref="subTeamTableRef"
:showOperation="false"
:showRightTools="false"
:formLabel="subTeamFormLabel" :formLabel="subTeamFormLabel"
:request-api="getSubTeamListAPI" :request-api="getSubTeamListAPI"
:columnsList="subTeamColumnsList" :columnsList="subTeamColumnsList"
@ -13,19 +13,46 @@
startDate: new Date().toISOString().split('T')[0], startDate: new Date().toISOString().split('T')[0],
}" }"
> >
<template slot="btn" slot-scope="{ queryParams }">
<el-button
plain
size="mini"
type="success"
icon="el-icon-download"
@click="onHandleExportSubTeam(queryParams)"
>
导出
</el-button>
</template>
<!-- 班组名称 --> <!-- 班组名称 -->
<template slot="teamName" slot-scope="{ data }"> <template slot="teamName" slot-scope="{ data }">
<span class="cursor-blue" @click="onHandleCheckTeam(data)"> <span class="cursor-blue" @click="onHandleCheckTeam(data)">
{{ data.teamName || '-' }} {{ data.teamName || '-' }}
</span> </span>
</template> </template>
<!-- 班组状态 -->
<template slot="teamEinStatus" slot-scope="{ data }">
<el-tag
size="mini"
:type="data.teamEinStatus == 1 ? 'danger' : 'success'"
>
{{ data.teamEinStatus == 1 ? '出场' : '在场' }}
</el-tag>
</template>
<!-- 数量 -->
<template v-for="item in slots" :slot="item" slot-scope="{ data }">
<span :key="item">{{ data[item] ? data[item] : 0 }}</span>
</template>
<!-- 连续7天未打卡--> <!-- 连续7天未打卡-->
<template slot="noAttendance" slot-scope="{ data }"> <template slot="sevenNotAttNum" slot-scope="{ data }">
<span <span
class="cursor-blue" class="cursor-blue"
@click="onHandleCheckNoAttendance(data)" @click="onHandleCheckNoAttendance(data)"
> >
{{ data.notAttNum || '-' }} {{ data.sevenNotAttNum || 0 }}
</span> </span>
</template> </template>
</TableModel> </TableModel>
@ -37,6 +64,8 @@
<template slot="outerContent"> <template slot="outerContent">
<SvenNoAttendance <SvenNoAttendance
ref="svenNoAttendanceRef" ref="svenNoAttendanceRef"
:proId="proId"
:teamId="teamId"
v-if="subTeamDialogConfig.outerTitle === '连续七天未打卡'" v-if="subTeamDialogConfig.outerTitle === '连续七天未打卡'"
/> />
@ -80,9 +109,21 @@ export default {
subTeamDialogConfig, subTeamDialogConfig,
getSubTeamListAPI, getSubTeamListAPI,
teamId: '', teamId: '',
slots: ['einNum', 'attNum'],
} }
}, },
methods: { methods: {
//
onHandleExportSubTeam(queryParams) {
this.download(
'/bmw/workerLight/attExportByTeam',
{
...queryParams,
},
'分包班组列表.xlsx',
)
},
// //
handleCloseDialogOuter() { handleCloseDialogOuter() {
this.subTeamDialogConfig.outerVisible = false this.subTeamDialogConfig.outerVisible = false
@ -97,6 +138,7 @@ export default {
// 7 7 // 7 7
onHandleCheckNoAttendance(data) { onHandleCheckNoAttendance(data) {
this.teamId = data.teamId
this.subTeamDialogConfig.outerTitle = '连续七天未打卡' this.subTeamDialogConfig.outerTitle = '连续七天未打卡'
this.subTeamDialogConfig.outerVisible = true this.subTeamDialogConfig.outerVisible = true
}, },

View File

@ -3,12 +3,27 @@
<div class="app-container"> <div class="app-container">
<TableModel <TableModel
:formLabel="formLabel" :formLabel="formLabel"
:showOperation="true" :showOperation="false"
:showRightTools="true" :showRightTools="false"
:columnsList="columnsList" :columnsList="columnsList"
ref="svenNoAttendanceTableRef" ref="svenNoAttendanceTableRef"
:sendParams="{
proId: proId,
teamId: teamId,
}"
:request-api="getSevenDaysNoAttendanceListAPI" :request-api="getSevenDaysNoAttendanceListAPI"
> >
<template slot="btn" slot-scope="{ queryParams }">
<el-button
plain
size="mini"
type="success"
icon="el-icon-download"
@click="onHandleExportSvenNoAttendance(queryParams)"
>
导出
</el-button>
</template>
</TableModel> </TableModel>
</div> </div>
</template> </template>
@ -17,7 +32,6 @@
import TableModel from '@/components/TableModel' import TableModel from '@/components/TableModel'
import DialogModel from '@/components/DialogModel' import DialogModel from '@/components/DialogModel'
import { getSevenDaysNoAttendanceListAPI } from '@/api/construction-person/attendance-manage/attendance-count' import { getSevenDaysNoAttendanceListAPI } from '@/api/construction-person/attendance-manage/attendance-count'
export default { export default {
name: 'SvenNoAttendance', name: 'SvenNoAttendance',
components: { components: {
@ -25,28 +39,50 @@ export default {
DialogModel, DialogModel,
}, },
props: {
proId: {
type: [String, Number],
default: '',
},
teamId: {
type: [String, Number],
default: '',
},
},
data() { data() {
return { return {
getSevenDaysNoAttendanceListAPI, getSevenDaysNoAttendanceListAPI,
formLabel: [ formLabel: [
{ {
f_label: '姓名', f_label: '姓名',
f_model: 'subComId', f_model: 'name',
f_type: 'ipt', f_type: 'ipt',
isShow: false, // label isShow: false, // label
}, },
], ],
columnsList: [ columnsList: [
{ t_label: '姓名', t_props: 'orgName' }, { t_label: '姓名', t_props: 'name' },
{ t_label: '身份证', t_props: 'proName' }, { t_label: '身份证', t_props: 'idNumber' },
{ t_label: '联系方式', t_props: 'proType' }, { t_label: '联系方式', t_props: 'phone' },
{ t_label: '工种', t_props: 'volLevel' }, { t_label: '工种', t_props: 'postName' },
{ t_label: '所属工程', t_props: 'proAddress' }, { t_label: '所属工程', t_props: 'proName' },
{ t_label: '所属分包', t_props: 'proAddress' }, { t_label: '所属分包', t_props: 'subName' },
{ t_label: '所属班组', t_props: 'proAddress' }, { t_label: '所属班组', t_props: 'teamName' },
{ t_label: '最后考勤时间', t_props: 'proAddress' }, { t_label: '最后考勤时间', t_props: 'attTime' },
], ],
} }
}, },
methods: {
onHandleExportSvenNoAttendance(queryParams) {
this.download(
'/bmw/workerLight/attExportBySevenNotAtt',
{
...queryParams,
},
'连续7天未打卡.xlsx',
)
},
},
} }
</script> </script>

View File

@ -134,13 +134,13 @@ export default {
// //
onHandleExportPersonEntry(queryParams) { onHandleExportPersonEntry(queryParams) {
console.log(queryParams, '导出参数') console.log(queryParams, '导出参数')
// this.download( this.download(
// '/xxx/xxx', '/bmw/worker/workerEinExport',
// { {
// ...queryParams, ...queryParams,
// }, },
// '.xlsx', '人员入场列表.xlsx',
// ) )
}, },
// //

View File

@ -85,6 +85,7 @@
@closeDialogOuter="handleCloseDialogOuter" @closeDialogOuter="handleCloseDialogOuter"
> >
<template slot="outerContent"> <template slot="outerContent">
<template v-if="dialogConfig.outerTitle === '新增失信人员'">
<el-form <el-form
label-width="auto" label-width="auto"
:model="addDishonestyPersonForm" :model="addDishonestyPersonForm"
@ -109,7 +110,9 @@
<el-input <el-input
clearable clearable
placeholder="请输入姓名" placeholder="请输入姓名"
v-model="addDishonestyPersonForm.idNumber" v-model="
addDishonestyPersonForm.idNumber
"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -122,7 +125,9 @@
filterable filterable
style="width: 100%" style="width: 100%"
placeholder="请选择工种" placeholder="请选择工种"
v-model="addDishonestyPersonForm.postName" v-model="
addDishonestyPersonForm.postName
"
> >
<el-option <el-option
:key="item.value" :key="item.value"
@ -142,7 +147,9 @@
filterable filterable
style="width: 100%" style="width: 100%"
placeholder="请选择工程名称" placeholder="请选择工程名称"
v-model="addDishonestyPersonForm.proName" v-model="
addDishonestyPersonForm.proName
"
> >
<el-option <el-option
:key="item.value" :key="item.value"
@ -156,13 +163,18 @@
</el-row> </el-row>
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="20"> <el-col :span="20">
<el-form-item label="所属分包单位" prop="subName"> <el-form-item
label="所属分包单位"
prop="subName"
>
<el-select <el-select
clearable clearable
filterable filterable
style="width: 100%" style="width: 100%"
placeholder="请选择所属分包单位" placeholder="请选择所属分包单位"
v-model="addDishonestyPersonForm.subName" v-model="
addDishonestyPersonForm.subName
"
> >
<el-option <el-option
:key="item.value" :key="item.value"
@ -193,7 +205,9 @@
style="width: 100%" style="width: 100%"
placeholder="选择开始日期" placeholder="选择开始日期"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
v-model="addDishonestyPersonForm.startTime" v-model="
addDishonestyPersonForm.startTime
"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -207,14 +221,18 @@
style="width: 100%" style="width: 100%"
placeholder="选择结束日期" placeholder="选择结束日期"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
v-model="addDishonestyPersonForm.endTime" v-model="
addDishonestyPersonForm.endTime
"
/> />
<el-input <el-input
v-else v-else
disabled disabled
clearable clearable
v-model="addDishonestyPersonForm.endTime" v-model="
addDishonestyPersonForm.endTime
"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -233,7 +251,10 @@
</el-form> </el-form>
<el-row class="dialog-footer-btn"> <el-row class="dialog-footer-btn">
<el-button size="medium" @click="handleCloseDialogOuter"> <el-button
size="medium"
@click="handleCloseDialogOuter"
>
取消 取消
</el-button> </el-button>
<el-button <el-button
@ -245,6 +266,31 @@
</el-button> </el-button>
</el-row> </el-row>
</template> </template>
<template v-else>
<UploadFileFormData
:limit="1"
:file-size="50"
:multiple="false"
:file-type="['xls', 'xlsx']"
uploadTip="请导入xls、xlsx格式文件"
:file-list.sync="importFileList"
/>
<el-row class="dialog-footer-btn">
<el-button size="medium" @click="onHandleCancelImport">
取消
</el-button>
<el-button
size="medium"
type="primary"
@click="onHandleConfirmImport"
>
确定
</el-button>
</el-row>
</template>
</template>
</DialogModel> </DialogModel>
</div> </div>
</template> </template>
@ -252,6 +298,8 @@
<script> <script>
import TableModel from '@/components/TableModel' import TableModel from '@/components/TableModel'
import DialogModel from '@/components/DialogModel' import DialogModel from '@/components/DialogModel'
import UploadFileFormData from '@/components/UploadFileFormData'
import axios from 'axios'
import { formLabel, columnsList, dialogConfig } from './config' import { formLabel, columnsList, dialogConfig } from './config'
import { import {
getSubSelectListCommonFun, getSubSelectListCommonFun,
@ -263,12 +311,15 @@ import {
addDishonestyPersonAPI, addDishonestyPersonAPI,
removeDishonestyPersonAPI, removeDishonestyPersonAPI,
getDishonestyPersonListAPI, getDishonestyPersonListAPI,
importDishonestyPersonAPI,
downloadDishonestyPersonTemplateAPI,
} from '@/api/construction-person/red-green-light-mange/dishonesty-person' } from '@/api/construction-person/red-green-light-mange/dishonesty-person'
export default { export default {
name: 'DishonestyPerson', name: 'DishonestyPerson',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,
UploadFileFormData,
}, },
data() { data() {
@ -309,20 +360,6 @@ export default {
postName: [ postName: [
{ required: true, message: '请输入工种', trigger: 'blur' }, { required: true, message: '请输入工种', trigger: 'blur' },
], ],
// proName: [
// {
// required: true,
// message: '',
// trigger: 'blur',
// },
// ],
// subName: [
// {
// required: true,
// message: '',
// trigger: 'blur',
// },
// ],
reason: [ reason: [
{ required: true, message: '请输入事件', trigger: 'blur' }, { required: true, message: '请输入事件', trigger: 'blur' },
], ],
@ -345,6 +382,7 @@ export default {
subSelectList: [], // subSelectList: [], //
postTypeSelectList: [], // postTypeSelectList: [], //
lotProjectSelectList: [], // lotProjectSelectList: [], //
importFileList: [], //
} }
}, },
methods: { methods: {
@ -361,24 +399,22 @@ export default {
// //
onHandleAddDishonestyPerson() { onHandleAddDishonestyPerson() {
this.dialogConfig.outerTitle = '新增失信人员'
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
}, },
// //
onHandleImportData() { onHandleImportData() {
// this.download( this.dialogConfig.outerTitle = '导入数据'
// '/xxx/xxx', this.dialogConfig.outerVisible = true
// {},
// '.xlsx',
// )
}, },
// //
onHandleDownloadTemplate() { async onHandleDownloadTemplate() {
// this.download( // this.download(
// '/xxx/xxx', // '/bmw/download/workerEinTemplate',
// {}, // {},
// '.xlsx', // '.xlsx',
// ) // )
}, },
@ -433,6 +469,27 @@ export default {
} }
}) })
}, },
//
onHandleCancelImport() {
this.importFileList = []
this.dialogConfig.outerVisible = false
},
//
async onHandleConfirmImport() {
const formData = new FormData()
formData.append('file', this.importFileList[0].raw)
const res = await importDishonestyPersonAPI(formData)
if (res.code === 200) {
this.$modal.msgSuccess('导入成功')
this.importFileList = []
this.dialogConfig.outerVisible = false
this.$refs.dishonestyPersonTableRef.getTableList()
} else {
this.$modal.msgError(res.msg)
}
},
}, },
async created() { async created() {