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天未打卡列表
export const getSevenDaysNoAttendanceListAPI = (data) => {
return request({
url: '/bmw/pmAttDevice/list',
url: '/bmw/workerLight/getSevenNotAttListByTeam',
method: 'GET',
params: data,
})

View File

@ -1,4 +1,5 @@
import request from '@/utils/request'
import requestFormData from '@/utils/request_formdata'
// 红绿灯统计 失信人员列表查询接口
export const getDishonestyPersonListAPI = (data) => {
@ -24,3 +25,20 @@ export const removeDishonestyPersonAPI = (id) => {
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-model="queryParams[item.f_model]"
@change="onChangeTime($event, item.dateType)"
:picker-options="pickerOptions"
/>
<el-input-number
:min="0"
@ -265,6 +266,16 @@ export default {
type: Array,
default: () => [],
},
//
isCurrentDate: {
type: Boolean,
default: false,
},
//
isOneMonth: {
type: Boolean,
default: false,
},
},
computed: {
/* 根据操作栏控制表头是否显示 */
@ -320,6 +331,9 @@ export default {
idCount: 1,
//
typeList: [],
//
pickerOptions: {},
}
},
@ -334,6 +348,26 @@ export default {
this.$set(this.queryParams, e.dateType[0], '')
this.$set(this.queryParams, e.dateType[1], '')
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 {
this.$set(this.queryParams, e.f_model, '')
}
@ -393,15 +427,27 @@ export default {
resetQuery() {
this.$refs.queryFormRef.resetFields()
if (this.typeList.length > 1) {
this.queryParams[this.typeList[0]] = ''
this.queryParams[this.typeList[1]] = ''
this.queryParams.time = []
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[1]] = ''
this.queryParams.time = []
}
} else {
this.queryParams[this.typeList[0]] = ''
}
this.queryParams.pageNum = 1
this.queryParams.pageSize = 10
this.queryParams.time = []
this.getTableList()
},
/** 级联选择 */
@ -475,12 +521,34 @@ export default {
/* 时间change事件 */
onChangeTime(e, type) {
console.log(e, '时间', type)
const [_1, _2] = type
const [_time1, _time2] = e
if (e.length > 0) {
this.queryParams[_1] = _time1
this.queryParams[_2] = _time2
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 [_time1, _time2] = e
if (e.length > 0) {
this.queryParams[_1] = _time1
this.queryParams[_2] = _time2
}
}
},
},

View File

@ -199,7 +199,19 @@ export default {
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() {

View File

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

View File

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

View File

@ -3,7 +3,9 @@
<div class="app-container">
<TableModel
:showOperation="false"
:showRightTools="true"
:showRightTools="false"
:isCurrentDate="true"
:isOneMonth="true"
ref="personTableRef"
:formLabel="personFormLabel"
: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 }">
<span class="cursor-blue" @click="onHandleCheckPerson(data)">
{{ data.name }}
</span>
</template>
<!-- 数量 -->
<template v-for="item in slots" :slot="item" slot-scope="{ data }">
<span :key="item">{{ data[item] ? data[item] : 0 }}</span>
</template>
</TableModel>
<DialogModel
@ -79,9 +97,21 @@ export default {
personDialogConfig,
getPersonListAPI,
idNumber: '',
slots: ['attDay', 'notAttNum'],
}
},
methods: {
//
onHandleExportPerson(queryParams) {
this.download(
'/bmw/workerLight/attExportByWorker',
{
...queryParams,
},
'人员列表.xlsx',
)
},
//
handleCloseDialogOuter() {
this.personDialogConfig.outerVisible = false

View File

@ -3,7 +3,7 @@
<div class="app-container">
<TableModel
:showOperation="false"
:showRightTools="true"
:showRightTools="false"
ref="projectTableRef"
:formLabel="projectFormLabel"
:columnsList="projectColumnsList"
@ -13,12 +13,35 @@
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 }">
<span class="cursor-blue" @click="onHandleCheckProject(data)">
{{ data.proName }}
</span>
</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>
<DialogModel
@ -46,6 +69,7 @@ import {
export default {
name: 'ProjectTable',
dicts: ['project_status'],
props: {
subComId: {
type: [String, Number],
@ -65,9 +89,21 @@ export default {
projectDialogConfig,
getProjectListAPI,
proId: '',
slots: ['subNum', 'teamNum', 'teamNum', 'einNum', 'attNum'],
}
},
methods: {
//
onHandleExportProject(queryParams) {
this.download(
'/bmw/workerLight/attExportByPro',
{
...queryParams,
},
'工程列表.xlsx',
)
},
//
handleCloseDialogOuter() {
this.projectDialogConfig.outerVisible = false
@ -78,6 +114,44 @@ export default {
this.proId = data.proId
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>

View File

@ -2,9 +2,9 @@
<!-- 施工人员 ---- 考勤管理 ---- 考勤统计第二级弹框 分包班组 -->
<div class="app-container">
<TableModel
:showOperation="false"
:showRightTools="true"
ref="subTeamTableRef"
:showOperation="false"
:showRightTools="false"
:formLabel="subTeamFormLabel"
:request-api="getSubTeamListAPI"
:columnsList="subTeamColumnsList"
@ -13,19 +13,46 @@
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 }">
<span class="cursor-blue" @click="onHandleCheckTeam(data)">
{{ data.teamName || '-' }}
</span>
</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天未打卡-->
<template slot="noAttendance" slot-scope="{ data }">
<template slot="sevenNotAttNum" slot-scope="{ data }">
<span
class="cursor-blue"
@click="onHandleCheckNoAttendance(data)"
>
{{ data.notAttNum || '-' }}
{{ data.sevenNotAttNum || 0 }}
</span>
</template>
</TableModel>
@ -37,6 +64,8 @@
<template slot="outerContent">
<SvenNoAttendance
ref="svenNoAttendanceRef"
:proId="proId"
:teamId="teamId"
v-if="subTeamDialogConfig.outerTitle === '连续七天未打卡'"
/>
@ -80,9 +109,21 @@ export default {
subTeamDialogConfig,
getSubTeamListAPI,
teamId: '',
slots: ['einNum', 'attNum'],
}
},
methods: {
//
onHandleExportSubTeam(queryParams) {
this.download(
'/bmw/workerLight/attExportByTeam',
{
...queryParams,
},
'分包班组列表.xlsx',
)
},
//
handleCloseDialogOuter() {
this.subTeamDialogConfig.outerVisible = false
@ -97,6 +138,7 @@ export default {
// 7 7
onHandleCheckNoAttendance(data) {
this.teamId = data.teamId
this.subTeamDialogConfig.outerTitle = '连续七天未打卡'
this.subTeamDialogConfig.outerVisible = true
},

View File

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

View File

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

View File

@ -85,165 +85,211 @@
@closeDialogOuter="handleCloseDialogOuter"
>
<template slot="outerContent">
<el-form
label-width="auto"
:model="addDishonestyPersonForm"
ref="addDishonestyPersonFormRef"
v-if="dialogConfig.outerVisible"
:rules="addDishonestyPersonFormRules"
>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="姓名" prop="name">
<el-input
clearable
placeholder="请输入姓名"
v-model="addDishonestyPersonForm.name"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="身份证号" prop="idNumber">
<el-input
clearable
placeholder="请输入姓名"
v-model="addDishonestyPersonForm.idNumber"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="工种" prop="postName">
<el-select
clearable
filterable
style="width: 100%"
placeholder="请选择工种"
v-model="addDishonestyPersonForm.postName"
>
<el-option
:key="item.value"
:label="item.label"
:value="item.value"
v-for="item in postTypeSelectList"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="工程名称" prop="proName">
<el-select
clearable
filterable
style="width: 100%"
placeholder="请选择工程名称"
v-model="addDishonestyPersonForm.proName"
>
<el-option
:key="item.value"
:label="item.label"
:value="item.value"
v-for="item in lotProjectSelectList"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="所属分包单位" prop="subName">
<el-select
clearable
filterable
style="width: 100%"
placeholder="请选择所属分包单位"
v-model="addDishonestyPersonForm.subName"
>
<el-option
:key="item.value"
:label="item.label"
:value="item.value"
v-for="item in subSelectList"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="事件" prop="reason">
<el-input
clearable
placeholder="请输入事件"
v-model="addDishonestyPersonForm.reason"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="开始日期" prop="startTime">
<el-date-picker
type="date"
style="width: 100%"
placeholder="选择开始日期"
value-format="yyyy-MM-dd"
v-model="addDishonestyPersonForm.startTime"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="结束日期" prop="endTime">
<el-date-picker
type="date"
v-if="!isForever"
style="width: 100%"
placeholder="选择结束日期"
value-format="yyyy-MM-dd"
v-model="addDishonestyPersonForm.endTime"
/>
<el-input
v-else
disabled
clearable
v-model="addDishonestyPersonForm.endTime"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<el-checkbox
v-model="isForever"
@change="handleChangeIsForever"
>
永久
</el-checkbox>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-row class="dialog-footer-btn">
<el-button size="medium" @click="handleCloseDialogOuter">
取消
</el-button>
<el-button
size="medium"
type="primary"
@click="onHandleConfirmAddOrEdit"
<template v-if="dialogConfig.outerTitle === '新增失信人员'">
<el-form
label-width="auto"
:model="addDishonestyPersonForm"
ref="addDishonestyPersonFormRef"
v-if="dialogConfig.outerVisible"
:rules="addDishonestyPersonFormRules"
>
确定
</el-button>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="姓名" prop="name">
<el-input
clearable
placeholder="请输入姓名"
v-model="addDishonestyPersonForm.name"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="身份证号" prop="idNumber">
<el-input
clearable
placeholder="请输入姓名"
v-model="
addDishonestyPersonForm.idNumber
"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="工种" prop="postName">
<el-select
clearable
filterable
style="width: 100%"
placeholder="请选择工种"
v-model="
addDishonestyPersonForm.postName
"
>
<el-option
:key="item.value"
:label="item.label"
:value="item.value"
v-for="item in postTypeSelectList"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="工程名称" prop="proName">
<el-select
clearable
filterable
style="width: 100%"
placeholder="请选择工程名称"
v-model="
addDishonestyPersonForm.proName
"
>
<el-option
:key="item.value"
:label="item.label"
:value="item.value"
v-for="item in lotProjectSelectList"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item
label="所属分包单位"
prop="subName"
>
<el-select
clearable
filterable
style="width: 100%"
placeholder="请选择所属分包单位"
v-model="
addDishonestyPersonForm.subName
"
>
<el-option
:key="item.value"
:label="item.label"
:value="item.value"
v-for="item in subSelectList"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="事件" prop="reason">
<el-input
clearable
placeholder="请输入事件"
v-model="addDishonestyPersonForm.reason"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="开始日期" prop="startTime">
<el-date-picker
type="date"
style="width: 100%"
placeholder="选择开始日期"
value-format="yyyy-MM-dd"
v-model="
addDishonestyPersonForm.startTime
"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="20">
<el-form-item label="结束日期" prop="endTime">
<el-date-picker
type="date"
v-if="!isForever"
style="width: 100%"
placeholder="选择结束日期"
value-format="yyyy-MM-dd"
v-model="
addDishonestyPersonForm.endTime
"
/>
<el-input
v-else
disabled
clearable
v-model="
addDishonestyPersonForm.endTime
"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<el-checkbox
v-model="isForever"
@change="handleChangeIsForever"
>
永久
</el-checkbox>
</el-form-item>
</el-col>
</el-row>
</el-form>
<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>
<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>
</div>
@ -252,6 +298,8 @@
<script>
import TableModel from '@/components/TableModel'
import DialogModel from '@/components/DialogModel'
import UploadFileFormData from '@/components/UploadFileFormData'
import axios from 'axios'
import { formLabel, columnsList, dialogConfig } from './config'
import {
getSubSelectListCommonFun,
@ -263,12 +311,15 @@ import {
addDishonestyPersonAPI,
removeDishonestyPersonAPI,
getDishonestyPersonListAPI,
importDishonestyPersonAPI,
downloadDishonestyPersonTemplateAPI,
} from '@/api/construction-person/red-green-light-mange/dishonesty-person'
export default {
name: 'DishonestyPerson',
components: {
TableModel,
DialogModel,
UploadFileFormData,
},
data() {
@ -309,20 +360,6 @@ export default {
postName: [
{ required: true, message: '请输入工种', trigger: 'blur' },
],
// proName: [
// {
// required: true,
// message: '',
// trigger: 'blur',
// },
// ],
// subName: [
// {
// required: true,
// message: '',
// trigger: 'blur',
// },
// ],
reason: [
{ required: true, message: '请输入事件', trigger: 'blur' },
],
@ -345,6 +382,7 @@ export default {
subSelectList: [], //
postTypeSelectList: [], //
lotProjectSelectList: [], //
importFileList: [], //
}
},
methods: {
@ -361,24 +399,22 @@ export default {
//
onHandleAddDishonestyPerson() {
this.dialogConfig.outerTitle = '新增失信人员'
this.dialogConfig.outerVisible = true
},
//
onHandleImportData() {
// this.download(
// '/xxx/xxx',
// {},
// '.xlsx',
// )
this.dialogConfig.outerTitle = '导入数据'
this.dialogConfig.outerVisible = true
},
//
onHandleDownloadTemplate() {
async onHandleDownloadTemplate() {
// 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() {