This commit is contained in:
parent
ec6e97d549
commit
271dd7a8de
|
|
@ -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,
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
this.queryParams[this.typeList[0]] = ''
|
if (this.isCurrentDate) {
|
||||||
this.queryParams[this.typeList[1]] = ''
|
this.queryParams[this.typeList[0]] = new Date()
|
||||||
this.queryParams.time = []
|
.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 {
|
} 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,12 +521,34 @@ export default {
|
||||||
|
|
||||||
/* 时间change事件 */
|
/* 时间change事件 */
|
||||||
onChangeTime(e, type) {
|
onChangeTime(e, type) {
|
||||||
console.log(e, '时间', type)
|
if (this.isOneMonth) {
|
||||||
const [_1, _2] = type
|
if (e && e.length === 2) {
|
||||||
const [_time1, _time2] = e
|
const [start, end] = e
|
||||||
if (e.length > 0) {
|
const startDate = new Date(start)
|
||||||
this.queryParams[_1] = _time1
|
const endDate = new Date(end)
|
||||||
this.queryParams[_2] = _time2
|
// 计算两个日期之间的天数差
|
||||||
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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() {
|
||||||
|
|
|
||||||
|
|
@ -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: '缺勤天数',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -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: {
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
// )
|
)
|
||||||
},
|
},
|
||||||
|
|
||||||
// 新增或修改
|
// 新增或修改
|
||||||
|
|
|
||||||
|
|
@ -85,165 +85,211 @@
|
||||||
@closeDialogOuter="handleCloseDialogOuter"
|
@closeDialogOuter="handleCloseDialogOuter"
|
||||||
>
|
>
|
||||||
<template slot="outerContent">
|
<template slot="outerContent">
|
||||||
<el-form
|
<template v-if="dialogConfig.outerTitle === '新增失信人员'">
|
||||||
label-width="auto"
|
<el-form
|
||||||
:model="addDishonestyPersonForm"
|
label-width="auto"
|
||||||
ref="addDishonestyPersonFormRef"
|
:model="addDishonestyPersonForm"
|
||||||
v-if="dialogConfig.outerVisible"
|
ref="addDishonestyPersonFormRef"
|
||||||
:rules="addDishonestyPersonFormRules"
|
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"
|
|
||||||
>
|
>
|
||||||
确定
|
<el-row :gutter="10">
|
||||||
</el-button>
|
<el-col :span="20">
|
||||||
</el-row>
|
<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>
|
</template>
|
||||||
</DialogModel>
|
</DialogModel>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -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() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue