考勤统计页面完善

This commit is contained in:
BianLzhaoMin 2025-08-17 14:35:12 +08:00
parent af57df19c7
commit 7bf1659d13
16 changed files with 559 additions and 337 deletions

View File

@ -6,7 +6,7 @@ import request from '@/utils/request'
export function getCompanySelectListAPI() { export function getCompanySelectListAPI() {
return request({ return request({
url: '/bmw/company/listAll', url: '/bmw/company/listAll',
method: 'get', method: 'GET',
}) })
} }
@ -14,7 +14,7 @@ export function getCompanySelectListAPI() {
export function getMainProjectListAllAPI() { export function getMainProjectListAllAPI() {
return request({ return request({
url: '/bmw/mainProject/listAll', url: '/bmw/mainProject/listAll',
method: 'get', method: 'GET',
}) })
} }
@ -22,7 +22,7 @@ export function getMainProjectListAllAPI() {
export function getSubCompanySelectListAPI() { export function getSubCompanySelectListAPI() {
return request({ return request({
url: '/bmw/subCompany/listAll', url: '/bmw/subCompany/listAll',
method: 'get', method: 'GET',
}) })
} }
@ -30,7 +30,7 @@ export function getSubCompanySelectListAPI() {
export function getLotProjectSelectListAPI() { export function getLotProjectSelectListAPI() {
return request({ return request({
url: '/bmw/pmProject/listAll', url: '/bmw/pmProject/listAll',
method: 'get', method: 'GET',
}) })
} }
@ -56,3 +56,30 @@ export const getPostTypeSelectListAPI = () => {
method: 'GET', method: 'GET',
}) })
} }
// 获取标段工程下拉列表 ----- 携带查询条件的
export function getLotProjectSelectListByConditionAPI(data) {
return request({
url: '/bmw/pmProject/listAll',
method: 'GET',
params: data,
})
}
// 获取分包商下拉列表 ----- 携带查询条件的
export const getSubSelectListByConditionAPI = (data) => {
return request({
url: '/bmw/pmSub/listAll',
method: 'GET',
params: data,
})
}
// 获取班组下拉列表 ----- 携带查询条件的
export const getTeamSelectListByConditionAPI = (data) => {
return request({
url: '/bmw/pmSubTeam/listAll',
method: 'GET',
params: data,
})
}

View File

@ -3,7 +3,7 @@ import request from '@/utils/request'
// 获取考勤统计列表 // 获取考勤统计列表
export const getAttendanceCountListAPI = (data) => { export const getAttendanceCountListAPI = (data) => {
return request({ return request({
url: '/bmw/pmAttDevice/list', url: '/bmw/workerLight/getSubComAttList',
method: 'GET', method: 'GET',
params: data, params: data,
}) })
@ -11,7 +11,7 @@ export const getAttendanceCountListAPI = (data) => {
// 获取工程列表 // 获取工程列表
export const getProjectListAPI = (data) => { export const getProjectListAPI = (data) => {
return request({ return request({
url: '/bmw/pmAttDevice/list', url: '/bmw/workerLight/getProAttList',
method: 'GET', method: 'GET',
params: data, params: data,
}) })
@ -19,7 +19,7 @@ export const getProjectListAPI = (data) => {
// 获取分包班组列表 // 获取分包班组列表
export const getSubTeamListAPI = (data) => { export const getSubTeamListAPI = (data) => {
return request({ return request({
url: '/bmw/pmAttDevice/list', url: '/bmw/workerLight/getTeamAttList',
method: 'GET', method: 'GET',
params: data, params: data,
}) })
@ -35,7 +35,7 @@ export const getSevenDaysNoAttendanceListAPI = (data) => {
// 获取人员列表 // 获取人员列表
export const getPersonListAPI = (data) => { export const getPersonListAPI = (data) => {
return request({ return request({
url: '/bmw/pmAttDevice/list', url: '/bmw/workerLight/getWorkerAttList',
method: 'GET', method: 'GET',
params: data, params: data,
}) })
@ -43,7 +43,7 @@ export const getPersonListAPI = (data) => {
// 获取考勤详情列表 // 获取考勤详情列表
export const getAttendanceDetailsListAPI = (data) => { export const getAttendanceDetailsListAPI = (data) => {
return request({ return request({
url: '/bmw/pmAttDevice/list', url: '/bmw/workerLight/getWorkerAttListById',
method: 'GET', method: 'GET',
params: data, params: data,
}) })

View File

@ -68,15 +68,15 @@
/> />
<el-date-picker <el-date-picker
type="date" type="date"
style="width: 180px" style="width: 240px"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
v-if="item.f_type === 'date'" v-if="item.f_type === 'date'"
v-model="queryParams[item.f_model]" v-model="queryParams[item.f_model]"
:placeholder="`请输入${item.f_label}`" :placeholder="`请选择${item.f_label}`"
/> />
<el-date-picker <el-date-picker
type="daterange" type="daterange"
style="width: 180px" style="width: 240px"
range-separator="至" range-separator="至"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
start-placeholder="开始日期" start-placeholder="开始日期"
@ -88,8 +88,8 @@
<el-input-number <el-input-number
:min="0" :min="0"
style="width: 240px" style="width: 240px"
v-model="queryParams[item.f_model]"
v-if="item.f_type === 'num'" v-if="item.f_type === 'num'"
v-model="queryParams[item.f_model]"
/> />
</el-form-item> </el-form-item>
<el-form-item v-if="showBtnCrews"> <el-form-item v-if="showBtnCrews">
@ -328,7 +328,7 @@ export default {
// //
dynamicWidth: 0, dynamicWidth: 0,
idCount: 1, idCount: 1,
typeList: [], typeList: [], //
} }
}, },
@ -364,17 +364,22 @@ export default {
this.queryParams.time && this.queryParams.time &&
this.queryParams.time.length !== 0 this.queryParams.time.length !== 0
) { ) {
this.queryParams.startTime = this.queryParams.time[0] this.queryParams[this.typeList[0]] =
this.queryParams.endTime = this.queryParams.time[1] this.queryParams.time[0]
this.queryParams[this.typeList[1]] =
this.queryParams.time[1]
} }
const params = { ...this.queryParams }
delete params.time
console.log( console.log(
`%c🔍 列表查询入参 %c`, `%c🔍 列表查询入参 %c`,
'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;', 'background: linear-gradient(90deg, #FF6B6B, #4ECDC4); color: white; padding: 5px 10px; border-radius: 5px; font-weight: bold;',
'', '',
this.queryParams, params,
) )
this.loading = true this.loading = true
const res = await this.requestApi(this.queryParams) const res = await this.requestApi(params)
if (res.code === 200) { if (res.code === 200) {
this.tableList = res.rows this.tableList = res.rows
this.total = res.total this.total = res.total
@ -397,9 +402,12 @@ export default {
if (this.typeList.length > 0) { if (this.typeList.length > 0) {
this.queryParams[this.typeList[0]] = '' this.queryParams[this.typeList[0]] = ''
this.queryParams[this.typeList[1]] = '' this.queryParams[this.typeList[1]] = ''
} else {
this.queryParams[this.typeList] = ''
} }
this.queryParams.pageNum = 1 this.queryParams.pageNum = 1
this.queryParams.pageSize = 10 this.queryParams.pageSize = 10
this.queryParams.time = []
this.getTableList() this.getTableList()
}, },
/** 级联选择 */ /** 级联选择 */

View File

@ -46,7 +46,7 @@
type="primary" type="primary"
v-if="data.proStatus !== '' && data.proStatus !== null" v-if="data.proStatus !== '' && data.proStatus !== null"
> >
{{ projectStatusList[data.proStatus] || '' }} {{ initProStatus(data.proStatus) }}
</el-tag> </el-tag>
<span v-else>-</span> <span v-else>-</span>
@ -236,21 +236,10 @@ export default {
// () // ()
lotProjectList: [], lotProjectList: [],
projectStatusList: {
0: '在建',
1: '停工',
2: '筹建',
3: '遗留收尾',
4: '完工',
'': '',
},
} }
}, },
created() { created() {},
this.projectStatusList = this.dict.type.project_status
},
methods: { methods: {
// //
@ -369,14 +358,14 @@ export default {
return data || '' return data || ''
}, },
initProStatus(data) { initProStatus(status) {
if (typeof data === 'string') { if (typeof status === 'string') {
return this.dict.type.project_status.find( return this.dict.type.project_status.find(
(item) => item.value == data, (item) => item.value == status,
).label ).label
} }
return data || '' return status || ''
}, },
}, },
} }

View File

@ -9,16 +9,19 @@
label-width="auto" label-width="auto"
:model="queryParams" :model="queryParams"
> >
<el-date-picker <el-form-item>
type="daterange" <el-date-picker
style="width: 240px" type="daterange"
range-separator="至" style="width: 240px"
value-format="yyyy-MM-dd" range-separator="至"
end-placeholder="结束日期" value-format="yyyy-MM-dd"
start-placeholder="开始日期" end-placeholder="结束日期"
v-model="queryParams.timeRange" start-placeholder="开始日期"
/> v-model="queryParams.timeRange"
<el-form-item label="身份证"> />
</el-form-item>
<el-form-item>
<el-button <el-button
size="mini" size="mini"
type="primary" type="primary"
@ -65,11 +68,40 @@
align="center" align="center"
/> />
<el-table-column <el-table-column
align="center"
:key="item.t_props" :key="item.t_props"
:label="item.t_label" :label="item.t_label"
:prop="item.t_props"
v-for="item in tableColumns" v-for="item in tableColumns"
/> >
<template slot-scope="{ row }">
<template v-if="item.slot">
<el-tag
size="mini"
type="danger"
v-if="row['isAtt'] == 0"
>
未考勤
</el-tag>
<el-tag
size="mini"
type="success"
v-if="row['isAtt'] == 1"
>
已考勤
</el-tag>
<el-tag
size="mini"
type="info"
v-if="row['isAtt'] == 3"
>
不在场
</el-tag>
</template>
<template v-else>
{{ row[item.t_props] || '-' }}
</template>
</template>
</el-table-column>
</el-table> </el-table>
</el-col> </el-col>
</el-row> </el-row>
@ -84,63 +116,59 @@ export default {
components: { components: {
AttendanceCalendar, AttendanceCalendar,
}, },
props: {
teamId: {
type: [String, Number],
default: '',
},
proId: {
type: [String, Number],
default: '',
},
idNumber: {
type: [String, Number],
default: '',
},
},
data() { data() {
return { return {
queryParams: { queryParams: {
timeRange: [ timeRange: [
{ new Date().toISOString().split('T')[0],
date: '2025-01-01', new Date().toISOString().split('T')[0],
status: '正常',
time: '08:00:00',
proName: '工程1',
checkInMachineName: '考勤机1',
},
{
date: '2025-01-01',
status: '正常',
time: '08:00:00',
proName: '工程1',
checkInMachineName: '考勤机1',
},
{
date: '2025-01-01',
status: '正常',
time: '08:00:00',
proName: '工程1',
checkInMachineName: '考勤机1',
},
],
tableColumns: [
{
t_label: '考勤日期',
t_props: 'date',
},
{
t_label: '考勤状态',
t_props: 'status',
},
{
t_label: '时间',
t_props: 'time',
},
{
t_label: '工程名称',
t_props: 'proName',
},
{
t_label: '考勤机名称',
t_props: 'checkInMachineName',
},
], ],
}, },
attendanceList: [], attendanceList: [],
tableColumns: [
{
t_label: '考勤日期',
t_props: 'einDay',
},
{
t_label: '考勤状态',
t_props: 'isAtt',
slot: true,
},
{
t_label: '时间',
t_props: 'attTime',
},
{
t_label: '工程名称',
t_props: 'proName',
},
{
t_label: '考勤机名称',
t_props: 'deviceName',
},
],
} }
}, },
methods: { methods: {
// //
handleQuery() { handleQuery() {
console.log('查询') console.log('查询')
this.getAttendanceDetailsListData()
}, },
// //
resetQuery() { resetQuery() {
@ -153,8 +181,15 @@ export default {
// //
async getAttendanceDetailsListData() { async getAttendanceDetailsListData() {
const res = await getAttendanceDetailsListAPI(this.queryParams) const params = {
console.log(res) teamId: this.teamId,
proId: this.proId,
idNumber: this.idNumber,
startDate: this.queryParams.timeRange[0],
endDate: this.queryParams.timeRange[1],
}
const { rows: res } = await getAttendanceDetailsListAPI(params)
this.attendanceList = res
}, },
}, },

View File

@ -1,22 +1,21 @@
export const formLabel = [ export const formLabel = [
{ {
f_label: '分公司', f_type: 'date',
f_model: 'subComId', f_label: '日期',
f_type: 'sel',
isShow: false, // 是否展示label isShow: false, // 是否展示label
f_selList: [], f_model: 'startDate',
}, },
] ]
export const columnsList = [ export const columnsList = [
{ t_label: '分公司', t_slot: 'subComName' }, { t_label: '分公司', t_slot: 'subComName' },
{ t_props: 'orgName', t_label: '在建工程数量' }, { t_props: 'buildProNum', t_label: '在建工程数量' },
{ t_props: 'proName', t_label: '完工工程数量' }, { t_props: 'completedProNum', t_label: '完工工程数量' },
{ t_slot: 'proType', t_label: '筹建工程数量' }, { t_props: 'preProNum', t_label: '筹建工程数量' },
{ t_props: 'volLevel', t_label: '分包数量' }, { t_props: 'subNum', t_label: '分包数量' },
{ t_props: 'proAddress', t_label: '班组数量' }, { t_props: 'teamNum', t_label: '班组数量' },
{ t_slot: 'proStatus', t_label: '在场人数' }, { t_props: 'einNum', t_label: '在场人数' },
{ t_slot: 'proStatus', t_label: '考勤人数' }, { t_props: 'attNum', t_label: '考勤人数' },
] ]
export const dialogConfig = { export const dialogConfig = {
@ -31,31 +30,41 @@ export const dialogConfig = {
export const projectFormLabel = [ export const projectFormLabel = [
{ {
f_label: '工程名称', f_label: '工程名称',
f_model: 'subComId', f_model: 'proName',
f_type: 'ipt', f_type: 'ipt',
isShow: false, // 是否展示label isShow: false, // 是否展示label
}, },
{ {
f_label: '工程状态', f_label: '工程状态',
f_model: 'subComId', f_model: 'proStatus',
f_type: 'ipt', f_type: 'sel',
isShow: false, // 是否展示label isShow: false, // 是否展示label
f_selList: [
{
label: '在建',
value: 1,
},
{
label: '完工',
value: 2,
},
],
}, },
{ {
f_label: '日期', f_label: '日期',
f_model: 'subComId', f_model: 'startDate',
f_type: 'ipt', f_type: 'date',
isShow: false, // 是否展示label isShow: false, // 是否展示label
}, },
] ]
export const projectColumnsList = [ export const projectColumnsList = [
{ t_label: '工程名称', t_slot: 'projectName' }, { t_slot: 'proName', t_label: '工程名称' },
{ t_props: 'orgName', t_label: '工程状态' }, { t_props: 'orgName', t_label: '工程状态' },
{ t_props: 'proName', t_label: '分包数量' }, { t_props: 'subNum', t_label: '分包数量' },
{ t_slot: 'proType', t_label: '班组数量' }, { t_slot: 'teamNum', t_label: '班组数量' },
{ t_props: 'volLevel', t_label: '在场人数' }, { t_props: 'einNum', t_label: '在场人数' },
{ t_props: 'proAddress', t_label: '考勤人数' }, { t_props: 'attNum', t_label: '考勤人数' },
] ]
export const projectDialogConfig = { export const projectDialogConfig = {
@ -70,33 +79,32 @@ export const projectDialogConfig = {
export const subTeamFormLabel = [ export const subTeamFormLabel = [
{ {
f_label: '姓名', f_label: '姓名',
f_model: 'subComId', f_model: 'name',
f_type: 'ipt', f_type: 'ipt',
isShow: false, // 是否展示label isShow: false, // 是否展示label
}, },
{ {
f_label: '人员身份证', f_label: '人员身份证',
f_model: 'subComId', f_model: 'idNumber',
f_type: 'ipt', f_type: 'ipt',
isShow: false, // 是否展示label isShow: false, // 是否展示label
}, },
{ {
f_label: '日期', f_label: '日期',
f_model: 'subComId', f_model: 'startDate',
f_type: 'ipt', f_type: 'date',
isShow: false, // 是否展示label isShow: false, // 是否展示label
}, },
] ]
export const subTeamColumnsList = [ export const subTeamColumnsList = [
{ t_label: '工程名称' }, { t_props: 'proName', t_label: '工程名称' },
{ t_props: 'orgName', t_label: '分包名称' }, { t_props: 'orgName', t_label: '分包名称' },
{ t_props: 'proName', t_label: '班组名称', t_slot: 'teamName' }, { t_slot: 'teamName', t_label: '班组名称' },
{ t_slot: 'proType', t_label: '班组状态' }, { t_slot: 'proType', t_label: '班组状态' },
{ t_props: 'volLevel', t_label: '在场人数' }, { t_props: 'einNum', t_label: '在场人数' },
{ t_props: 'proAddress', t_label: '考勤人数' }, { t_props: 'attNum', t_label: '考勤人数' },
{ {
t_props: 'proAddress',
t_label: '连续七天未打卡', t_label: '连续七天未打卡',
t_slot: 'noAttendance', t_slot: 'noAttendance',
}, },
@ -114,33 +122,34 @@ export const subTeamDialogConfig = {
export const personFormLabel = [ export const personFormLabel = [
{ {
f_label: '姓名', f_label: '姓名',
f_model: 'subComId', f_model: 'name',
f_type: 'ipt',
isShow: false, // 是否展示label
},
{
f_label: '日期',
f_model: 'subComId',
f_type: 'ipt', f_type: 'ipt',
isShow: false, // 是否展示label isShow: false, // 是否展示label
}, },
{ {
f_label: '状态', f_label: '状态',
f_model: 'subComId', f_model: 'status',
f_type: 'ipt', f_type: 'ipt',
isShow: false, // 是否展示label isShow: false, // 是否展示label
}, },
{
f_label: '日期',
f_model: 'time',
f_type: 'dateRange',
dateType: ['startDate', 'endDate'],
isShow: false, // 是否展示label
},
] ]
export const personColumnsList = [ export const personColumnsList = [
{ t_label: '姓名', t_slot: 'userName' }, { t_label: '姓名', t_slot: 'name' },
{ t_props: 'orgName', t_label: '身份证' }, { t_props: 'idNumber', t_label: '身份证' },
{ t_props: 'proName', t_label: '联系方式' }, { t_props: 'phone', t_label: '联系方式' },
{ t_slot: 'proType', t_label: '工种' }, { t_props: 'postName', t_label: '工种' },
{ t_props: 'volLevel', t_label: '所属分包' }, { t_props: 'subName', t_label: '所属分包' },
{ t_props: 'proAddress', t_label: '考勤天数' }, { t_props: 'attDay', t_label: '考勤天数' },
{ {
t_props: 'proAddress', t_props: 'notAttNum',
t_label: '缺勤天数', t_label: '缺勤天数',
}, },
] ]
@ -148,7 +157,7 @@ export const personColumnsList = [
export const personDialogConfig = { export const personDialogConfig = {
outerVisible: false, outerVisible: false,
outerTitle: '考勤详情', outerTitle: '考勤详情',
outerWidth: '80%', outerWidth: '90%',
minHeight: '90vh', minHeight: '90vh',
maxHeight: '90vh', maxHeight: '90vh',
} }

View File

@ -3,9 +3,10 @@
<div class="app-container"> <div class="app-container">
<TableModel <TableModel
:formLabel="formLabel" :formLabel="formLabel"
:showOperation="true" :showOperation="false"
:showRightTools="true" :showRightTools="true"
:columnsList="columnsList" :columnsList="columnsList"
:sendParams="sendParams"
ref="attendanceCountTableRef" ref="attendanceCountTableRef"
:request-api="getAttendanceCountListAPI" :request-api="getAttendanceCountListAPI"
> >
@ -22,7 +23,7 @@
@closeDialogOuter="handleCloseDialogOuter" @closeDialogOuter="handleCloseDialogOuter"
> >
<template slot="outerContent"> <template slot="outerContent">
<ProjectTable ref="projectTableRef" /> <ProjectTable :subComId="subComId" ref="projectTableRef" />
</template> </template>
</DialogModel> </DialogModel>
</div> </div>
@ -37,12 +38,10 @@ import { getAttendanceCountListAPI } from '@/api/construction-person/attendance-
export default { export default {
name: 'AttendanceCount', name: 'AttendanceCount',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,
ProjectTable, ProjectTable,
getAttendanceCountListAPI,
}, },
data() { data() {
@ -51,8 +50,11 @@ export default {
formLabel, formLabel,
columnsList, columnsList,
dialogConfig, dialogConfig,
editFormData: {}, subComId: '',
getLotLotProjectListAPI, getAttendanceCountListAPI,
sendParams: {
startDate: new Date().toISOString().split('T')[0], //
},
} }
}, },
methods: { methods: {
@ -63,6 +65,7 @@ export default {
// //
onHandleCheckSubCom(data) { onHandleCheckSubCom(data) {
this.subComId = data.subComId
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
}, },
}, },

View File

@ -2,27 +2,40 @@
<!-- 施工人员 ---- 考勤管理 ---- 考勤统计第三级弹框 人员 --> <!-- 施工人员 ---- 考勤管理 ---- 考勤统计第三级弹框 人员 -->
<div class="app-container"> <div class="app-container">
<TableModel <TableModel
:showOperation="true" :showOperation="false"
:showRightTools="true" :showRightTools="true"
ref="personTableRef" ref="personTableRef"
:formLabel="personFormLabel" :formLabel="personFormLabel"
:columnsList="personColumnsList" :columnsList="personColumnsList"
:request-api="getPersonListAPI" :request-api="getPersonListAPI"
:sendParams="{
proId: proId,
teamId: teamId,
time: [
new Date().toISOString().split('T')[0],
new Date().toISOString().split('T')[0],
],
}"
> >
<!-- 工程名称 --> <!-- 人员名称 -->
<template slot="userName" slot-scope="{ data }"> <template slot="name" slot-scope="{ data }">
<span class="cursor-blue" @click="onHandleCheckPerson(data)"> <span class="cursor-blue" @click="onHandleCheckPerson(data)">
{{ data.userName }} {{ data.name }}
</span> </span>
</template> </template>
</TableModel> </TableModel>
<DialogModel <DialogModel
:dialogConfig="projectDialogConfig" :dialogConfig="personDialogConfig"
@closeDialogOuter="handleCloseDialogOuter" @closeDialogOuter="handleCloseDialogOuter"
> >
<template slot="outerContent"> <template slot="outerContent">
<!-- 考勤详情 --> <!-- 考勤详情 -->
<AttendanceDetails
:proId="proId"
:teamId="teamId"
:idNumber="idNumber"
/>
</template> </template>
</DialogModel> </DialogModel>
</div> </div>
@ -32,6 +45,7 @@
import TableModel from '@/components/TableModel' import TableModel from '@/components/TableModel'
import DialogModel from '@/components/DialogModel' import DialogModel from '@/components/DialogModel'
import SubTeamTable from './sub-team-table' import SubTeamTable from './sub-team-table'
import AttendanceDetails from './attendance-details'
import { getPersonListAPI } from '@/api/construction-person/attendance-manage/attendance-count' import { getPersonListAPI } from '@/api/construction-person/attendance-manage/attendance-count'
import { import {
personFormLabel, personFormLabel,
@ -41,10 +55,21 @@ import {
export default { export default {
name: 'PersonTable', name: 'PersonTable',
props: {
teamId: {
type: [String, Number],
default: '',
},
proId: {
type: [String, Number],
default: '',
},
},
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,
SubTeamTable, SubTeamTable,
AttendanceDetails,
}, },
data() { data() {
@ -53,17 +78,19 @@ export default {
personColumnsList, personColumnsList,
personDialogConfig, personDialogConfig,
getPersonListAPI, getPersonListAPI,
idNumber: '',
} }
}, },
methods: { methods: {
// //
handleCloseDialogOuter() { handleCloseDialogOuter() {
this.dialogConfig.outerVisible = false this.personDialogConfig.outerVisible = false
}, },
// //
onHandleCheckPerson(data) { onHandleCheckPerson(data) {
this.dialogConfig.outerVisible = true this.idNumber = data.idNumber
this.personDialogConfig.outerVisible = true
}, },
}, },
} }

View File

@ -2,17 +2,21 @@
<!-- 施工人员 ---- 考勤管理 ---- 考勤统计第一级弹框 工程 --> <!-- 施工人员 ---- 考勤管理 ---- 考勤统计第一级弹框 工程 -->
<div class="app-container"> <div class="app-container">
<TableModel <TableModel
:showOperation="true" :showOperation="false"
:showRightTools="true" :showRightTools="true"
ref="projectTableRef" ref="projectTableRef"
:formLabel="projectFormLabel" :formLabel="projectFormLabel"
:columnsList="projectColumnsList" :columnsList="projectColumnsList"
:request-api="getProjectListAPI" :request-api="getProjectListAPI"
:sendParams="{
subComId: subComId,
startDate: new Date().toISOString().split('T')[0],
}"
> >
<!-- 工程名称 --> <!-- 工程名称 -->
<template slot="projectName" slot-scope="{ data }"> <template slot="proName" slot-scope="{ data }">
<span class="cursor-blue" @click="onHandleCheckProject(data)"> <span class="cursor-blue" @click="onHandleCheckProject(data)">
{{ data.projectName }} {{ data.proName }}
</span> </span>
</template> </template>
</TableModel> </TableModel>
@ -23,7 +27,7 @@
> >
<template slot="outerContent"> <template slot="outerContent">
<!-- 分包班组 --> <!-- 分包班组 -->
<SubTeamTable ref="subTeamTableRef" /> <SubTeamTable :proId="proId" ref="subTeamTableRef" />
</template> </template>
</DialogModel> </DialogModel>
</div> </div>
@ -42,11 +46,16 @@ import {
export default { export default {
name: 'ProjectTable', name: 'ProjectTable',
props: {
subComId: {
type: [String, Number],
default: '',
},
},
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,
SubTeamTable, SubTeamTable,
getProjectListAPI,
}, },
data() { data() {
@ -54,17 +63,20 @@ export default {
projectFormLabel, projectFormLabel,
projectColumnsList, projectColumnsList,
projectDialogConfig, projectDialogConfig,
getProjectListAPI,
proId: '',
} }
}, },
methods: { methods: {
// //
handleCloseDialogOuter() { handleCloseDialogOuter() {
this.dialogConfig.outerVisible = false this.projectDialogConfig.outerVisible = false
}, },
// //
onHandleCheckProject(data) { onHandleCheckProject(data) {
this.dialogConfig.outerVisible = true this.proId = data.proId
this.projectDialogConfig.outerVisible = true
}, },
}, },
} }

View File

@ -2,17 +2,21 @@
<!-- 施工人员 ---- 考勤管理 ---- 考勤统计第二级弹框 分包班组 --> <!-- 施工人员 ---- 考勤管理 ---- 考勤统计第二级弹框 分包班组 -->
<div class="app-container"> <div class="app-container">
<TableModel <TableModel
:showOperation="true" :showOperation="false"
:showRightTools="true" :showRightTools="true"
ref="subTeamTableRef" ref="subTeamTableRef"
:formLabel="subTeamFormLabel" :formLabel="subTeamFormLabel"
:request-api="getSubTeamListAPI" :request-api="getSubTeamListAPI"
:columnsList="subTeamColumnsList" :columnsList="subTeamColumnsList"
:sendParams="{
proId: proId,
startDate: new Date().toISOString().split('T')[0],
}"
> >
<!-- 班组名称 --> <!-- 班组名称 -->
<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>
<!-- 连续7天未打卡--> <!-- 连续7天未打卡-->
@ -21,20 +25,22 @@
class="cursor-blue" class="cursor-blue"
@click="onHandleCheckNoAttendance(data)" @click="onHandleCheckNoAttendance(data)"
> >
{{ data.noAttendance }} {{ data.notAttNum || '-' }}
</span> </span>
</template> </template>
</TableModel> </TableModel>
<DialogModel <DialogModel
:dialogConfig="projectDialogConfig" :dialogConfig="subTeamDialogConfig"
@closeDialogOuter="handleCloseDialogOuter" @closeDialogOuter="handleCloseDialogOuter"
> >
<template slot="outerContent"> <template slot="outerContent">
<SvenNoAttendance <SvenNoAttendance
ref="svenNoAttendanceRef" ref="svenNoAttendanceRef"
v-if="dialogConfig.outerTitle === '连续七天未打卡'" v-if="subTeamDialogConfig.outerTitle === '连续七天未打卡'"
/> />
<PersonTable :teamId="teamId" :proId="proId" v-else />
</template> </template>
</DialogModel> </DialogModel>
</div> </div>
@ -44,6 +50,7 @@
import TableModel from '@/components/TableModel' import TableModel from '@/components/TableModel'
import DialogModel from '@/components/DialogModel' import DialogModel from '@/components/DialogModel'
import SvenNoAttendance from './sven-no-attendance' import SvenNoAttendance from './sven-no-attendance'
import PersonTable from './person-table'
import { getSubTeamListAPI } from '@/api/construction-person/attendance-manage/attendance-count' import { getSubTeamListAPI } from '@/api/construction-person/attendance-manage/attendance-count'
import { import {
subTeamFormLabel, subTeamFormLabel,
@ -53,10 +60,16 @@ import {
export default { export default {
name: 'SubTeamTable', name: 'SubTeamTable',
props: {
proId: {
type: [String, Number],
default: '',
},
},
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,
ProjectTable, PersonTable,
SvenNoAttendance, SvenNoAttendance,
}, },
@ -66,24 +79,26 @@ export default {
subTeamColumnsList, subTeamColumnsList,
subTeamDialogConfig, subTeamDialogConfig,
getSubTeamListAPI, getSubTeamListAPI,
teamId: '',
} }
}, },
methods: { methods: {
// //
handleCloseDialogOuter() { handleCloseDialogOuter() {
this.dialogConfig.outerVisible = false this.subTeamDialogConfig.outerVisible = false
}, },
// //
onHandleCheckTeam(data) { onHandleCheckTeam(data) {
this.dialogConfig.outerTitle = '人员' this.teamId = data.teamId
this.dialogConfig.outerVisible = true this.subTeamDialogConfig.outerTitle = '人员'
this.subTeamDialogConfig.outerVisible = true
}, },
// 7 7 // 7 7
onHandleCheckNoAttendance(data) { onHandleCheckNoAttendance(data) {
this.dialogConfig.outerTitle = '连续七天未打卡' this.subTeamDialogConfig.outerTitle = '连续七天未打卡'
this.dialogConfig.outerVisible = true this.subTeamDialogConfig.outerVisible = true
}, },
}, },
} }

View File

@ -15,6 +15,7 @@
<script> <script>
import TableModel from '@/components/TableModel' import TableModel from '@/components/TableModel'
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 {
@ -22,7 +23,6 @@ export default {
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,
ProjectTable,
}, },
data() { data() {

View File

@ -1,20 +1,22 @@
<template> <template>
<!-- 新增或修改标段工程表单 --> <!-- 新增或修改标段工程表单 -->
<div> <div>
<!-- 身份证信息表单 -->
<el-form <el-form
label-width="140px" label-width="140px"
ref="idCardInfoFormRef" ref="idCardInfoFormRef"
:model="idCardInfoForm" :model="idCardReaderForm"
:rules="idCardInfoFormRules" :rules="idCardReaderFormRules"
> >
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="身份证读卡器地址" prop="subName"> <el-form-item
label="身份证读卡器地址"
prop="idCardReaderAddress"
>
<el-input <el-input
clearable clearable
placeholder="请输入身份证读卡器地址" placeholder="请输入身份证读卡器地址"
v-model="idCardInfoForm.subName" v-model="idCardReaderForm.idCardReaderAddress"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -32,7 +34,15 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form>
<!-- 身份证信息表单 -->
<el-form
label-width="140px"
ref="idCardInfoFormRef"
:model="idCardInfoForm"
:rules="idCardInfoFormRules"
>
<TitleTip <TitleTip
borderBottom="none" borderBottom="none"
padding="24px 10px" padding="24px 10px"
@ -535,6 +545,12 @@ import {
editEntryPersonAPI, editEntryPersonAPI,
getEntryPersonDetailAPI, getEntryPersonDetailAPI,
} from '@/api/construction-person/entry-and-exit-manage/person-entry' } from '@/api/construction-person/entry-and-exit-manage/person-entry'
import {
getSubSelectListByConditionAPI,
getTeamSelectListByConditionAPI,
getLotProjectSelectListByConditionAPI,
} from '@/api/common'
import { getPostTypeSelectListCommonFun } from '@/utils/getCommonData'
export default { export default {
name: 'AddOrEditForm', name: 'AddOrEditForm',
props: { props: {
@ -557,9 +573,10 @@ export default {
}, },
data() { data() {
return { return {
uploadFileUrl: //
process.env.VUE_APP_BASE_API + '/system/file/uploadFiles', idCardReaderForm: {
idCardReaderAddress: '127.0.0.1:8080', //
},
// //
idCardInfoForm: { idCardInfoForm: {
name: '', // name: '', //
@ -599,11 +616,12 @@ export default {
// //
salaryCardInfoForm: { salaryCardInfoForm: {
bankCardCode: '', //
bankName: '', // bankName: '', //
bankCardCode: '', //
bankBranchName: '', // bankBranchName: '', //
}, },
//
contractImageList: [ contractImageList: [
{ {
type: 1, type: 1,
@ -612,37 +630,38 @@ export default {
title: '人员手持合同照', title: '人员手持合同照',
}, },
{ {
title: '工作内容页',
type: 2, type: 2,
name: 'contract',
fileList: [], fileList: [],
name: 'contract',
title: '工作内容页',
}, },
{ {
title: '薪酬约定页',
type: 3, type: 3,
name: 'contract',
fileList: [], fileList: [],
name: 'contract',
title: '薪酬约定页',
}, },
{ {
title: '本人签名页',
type: 4, type: 4,
name: 'contract',
fileList: [], fileList: [],
name: 'contract',
title: '本人签名页',
}, },
{ {
title: '其他照片',
type: 5, type: 5,
name: 'contract',
fileList: [], fileList: [],
name: 'contract',
title: '其他照片',
}, },
{ {
title: '附件',
type: 6, type: 6,
name: 'contract', title: '附件',
fileList: [], fileList: [],
name: 'contract',
}, },
], ],
//
bankImageList: [ bankImageList: [
{ {
type: 1, type: 1,
@ -651,110 +670,121 @@ export default {
title: '手持银行卡、承诺书', title: '手持银行卡、承诺书',
}, },
{ {
title: '银行卡照片',
type: 2, type: 2,
name: 'wageCard',
fileList: [], fileList: [],
name: 'wageCard',
title: '银行卡照片',
}, },
{ {
title: '个人工资卡承诺书',
type: 3, type: 3,
name: 'wageCard',
fileList: [], fileList: [],
name: 'wageCard',
title: '个人工资卡承诺书',
}, },
{ {
title: '其它照片',
type: 4, type: 4,
name: 'wageCard',
fileList: [], fileList: [],
name: 'wageCard',
title: '其它照片',
}, },
{ {
title: '附件',
type: 5, type: 5,
name: 'wageCard', title: '附件',
fileList: [], fileList: [],
name: 'wageCard',
}, },
], ],
//
idCardReaderFormRules: {
idCardReaderAddress: [
{
required: true,
trigger: 'blur',
message: '请输入身份证读卡器地址',
},
],
},
// //
idCardInfoFormRules: { idCardInfoFormRules: {
name: [ name: [
{ {
required: true, required: true,
message: '请输入姓名',
trigger: 'blur', trigger: 'blur',
message: '请输入姓名',
}, },
], ],
idNumber: [ idNumber: [
{ {
required: true, required: true,
message: '请输入身份证号',
trigger: 'blur', trigger: 'blur',
message: '请输入身份证号',
}, },
{ {
trigger: 'blur',
message: '请输入正确的身份证号',
pattern: pattern:
/^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[0-1])\d{3}[0-9Xx]$/, /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[0-1])\d{3}[0-9Xx]$/,
message: '请输入正确的身份证号',
trigger: 'blur',
}, },
], ],
sex: [ sex: [
{ {
required: true, required: true,
message: '请选择性别',
trigger: 'change', trigger: 'change',
message: '请选择性别',
}, },
], ],
birthday: [ birthday: [
{ {
required: true, required: true,
message: '请选择出生日期',
trigger: 'change', trigger: 'change',
message: '请选择出生日期',
}, },
], ],
nation: [ nation: [
{ {
required: true, required: true,
message: '请输入民族',
trigger: 'blur', trigger: 'blur',
message: '请输入民族',
}, },
], ],
issuingAuthority: [ issuingAuthority: [
{ {
required: true, required: true,
message: '请输入签发机关',
trigger: 'blur', trigger: 'blur',
message: '请输入签发机关',
}, },
], ],
startTime: [ startTime: [
{ {
required: true, required: true,
message: '请选择生效日期',
trigger: 'change', trigger: 'change',
message: '请选择生效日期',
}, },
], ],
endTime: [ endTime: [
{ {
required: true, required: true,
message: '请选择失效日期',
trigger: 'change', trigger: 'change',
message: '请选择失效日期',
}, },
], ],
address: [ address: [
{ {
required: true, required: true,
message: '请输入身份证住址',
trigger: 'blur', trigger: 'blur',
message: '请输入身份证住址',
}, },
], ],
faceImg: [ faceImg: [
{ {
required: true, required: true,
message: '请上传人脸照片',
trigger: 'change', trigger: 'change',
message: '请上传人脸照片',
}, },
], ],
}, },
@ -764,41 +794,41 @@ export default {
proId: [ proId: [
{ {
required: true, required: true,
message: '请输入入场工程',
trigger: 'blur', trigger: 'blur',
message: '请输入入场工程',
}, },
], ],
postId: [ postId: [
{ {
required: true, required: true,
message: '请输入工种', trigger: 'change',
trigger: 'blur', message: '请选择工种',
}, },
], ],
subId: [ subId: [
{ {
required: true, required: true,
message: '请输入入场分包',
trigger: 'blur', trigger: 'blur',
message: '请输入入场分包',
}, },
], ],
phone: [ phone: [
{ {
required: true, required: true,
message: '请输入手机号码',
trigger: 'blur', trigger: 'blur',
message: '请输入手机号码',
}, },
{ {
trigger: 'blur',
pattern: /^1[3-9]\d{9}$/, pattern: /^1[3-9]\d{9}$/,
message: '请输入正确的手机号码', message: '请输入正确的手机号码',
trigger: 'blur',
}, },
], ],
teamId: [ teamId: [
{ {
required: true, required: true,
message: '请输入入场班组',
trigger: 'blur', trigger: 'blur',
message: '请输入入场班组',
}, },
], ],
}, },
@ -815,42 +845,14 @@ export default {
}, },
], ],
// //
postSelectList: [ postSelectList: [],
{
label: '工种1',
value: '1',
},
{
label: '工种2',
value: '2',
},
],
// //
subSelectList: [ subSelectList: [],
{
label: '入场分包1',
value: '1',
},
{
label: '入场分包2',
value: '2',
},
],
// //
teamSelectList: [ teamSelectList: [],
{
label: '入场班组1',
value: '1',
},
{
label: '入场班组2',
value: '2',
},
],
editUploadFileList: [], editUploadFileList: [], //
isEditContract: false, //
isEditContract: false,
} }
}, },
methods: { methods: {
@ -858,7 +860,6 @@ export default {
checkFormStatus(fieldsList, imageFList, type) { checkFormStatus(fieldsList, imageFList, type) {
// //
const imageFieldsToCheck = imageFList.slice(0, -1) // const imageFieldsToCheck = imageFList.slice(0, -1) //
// //
let emptyFieldCount = 0 let emptyFieldCount = 0
let filledFieldCount = 0 let filledFieldCount = 0
@ -920,13 +921,13 @@ export default {
if (valid2) { if (valid2) {
const fieldsToCheck_1 = [ const fieldsToCheck_1 = [
'contractCode', // 'contractCode', //
'contractStartDate', //
'contractStopDate', //
'wageCriterion', // 'wageCriterion', //
'contractStopDate', //
'contractStartDate', //
] ]
const fieldsToCheck_2 = [ const fieldsToCheck_2 = [
'bankCardCode', //
'bankName', // 'bankName', //
'bankCardCode', //
'bankBranchName', // 'bankBranchName', //
] ]
const status_1 = this.checkFormStatus( const status_1 = this.checkFormStatus(
@ -942,21 +943,21 @@ export default {
// //
const params = { const params = {
...this.idCardInfoForm,
...this.keyInfoForm, ...this.keyInfoForm,
...this.idCardInfoForm,
} }
let fileIdList = []
const { faceImg } = this.idCardInfoForm const { faceImg } = this.idCardInfoForm
const formData = new FormData()
const fileMsg = []
let fileIdList = []
if (this.queryDetailsId) { if (this.queryDetailsId) {
params.id = this.queryDetailsId params.id = this.queryDetailsId
params.einStatus = this.einStatus params.einStatus = this.einStatus
} }
delete params.faceImg delete params.faceImg //
const formData = new FormData()
const fileMsg = []
// //
faceImg.forEach((item) => { faceImg.forEach((item) => {
@ -1086,24 +1087,40 @@ export default {
// //
onChangeProId(val) { onChangeProId(val) {
if (!val) {
this.keyInfoForm.proName = ''
return
}
this.keyInfoForm.proName = this.proSelectList.find( this.keyInfoForm.proName = this.proSelectList.find(
(item) => item.value === val, (item) => item.value === val,
).label ).label
}, },
// //
onChangePostId(val) { onChangePostId(val) {
if (!val) {
this.keyInfoForm.postName = ''
return
}
this.keyInfoForm.postName = this.postSelectList.find( this.keyInfoForm.postName = this.postSelectList.find(
(item) => item.value === val, (item) => item.value === val,
).label ).label
}, },
// //
onChangeSubId(val) { onChangeSubId(val) {
if (!val) {
this.keyInfoForm.subName = ''
return
}
this.keyInfoForm.subName = this.subSelectList.find( this.keyInfoForm.subName = this.subSelectList.find(
(item) => item.value === val, (item) => item.value === val,
).label ).label
}, },
// //
onChangeTeamId(val) { onChangeTeamId(val) {
if (!val) {
this.keyInfoForm.teamName = ''
return
}
this.keyInfoForm.teamName = this.teamSelectList.find( this.keyInfoForm.teamName = this.teamSelectList.find(
(item) => item.value === val, (item) => item.value === val,
).label ).label
@ -1121,8 +1138,6 @@ export default {
id: this.queryDetailsId, id: this.queryDetailsId,
}) })
console.log(res, '人员详情')
// //
const { const {
sex, sex,
@ -1235,6 +1250,38 @@ export default {
} }
}, },
//
async getLotProjectSelectList() {
const { rows: res } = await getLotProjectSelectListByConditionAPI(
{},
)
this.proSelectList = res.map((item) => {
return {
value: item.id,
label: item.proName,
}
})
},
//
async getSubSelectList() {
const { rows: res } = await getSubSelectListByConditionAPI({})
this.subSelectList = res.map((item) => {
return {
value: item.id,
label: item.subName,
}
})
},
//
async getTeamSelectList() {
const { rows: res } = await getTeamSelectListByConditionAPI({})
this.teamSelectList = res.map((item) => {
return {
value: item.id,
label: item.teamName,
}
})
},
// //
onBlurIdNumber() { onBlurIdNumber() {
// //
@ -1250,6 +1297,20 @@ export default {
}, },
}, },
async created() {
const postType = await getPostTypeSelectListCommonFun()
this.postSelectList = postType.map((item) => {
return {
value: item.id,
label: item.postName,
}
})
this.getSubSelectList()
this.getTeamSelectList()
this.getLotProjectSelectList()
},
watch: { watch: {
queryDetailsId: { queryDetailsId: {
handler(newVal) { handler(newVal) {

View File

@ -26,16 +26,7 @@ export const formLabel = [
f_type: 'sel', f_type: 'sel',
f_width: '180px', f_width: '180px',
isShow: false, // 是否展示label isShow: false, // 是否展示label
f_selList: [ f_selList: [], // 工程列表
{
label: '工程1',
value: '1',
},
{
label: '工程2',
value: '2',
},
], // 工程列表
}, },
{ {
f_label: '工种', f_label: '工种',
@ -43,16 +34,7 @@ export const formLabel = [
f_type: 'sel', f_type: 'sel',
f_width: '180px', f_width: '180px',
isShow: false, // 是否展示label isShow: false, // 是否展示label
f_selList: [ f_selList: [], // 工种列表
{
label: '工种1',
value: '1',
},
{
label: '工种2',
value: '2',
},
], // 工种列表
}, },
{ {
f_label: '分包', f_label: '分包',
@ -60,16 +42,7 @@ export const formLabel = [
f_type: 'sel', f_type: 'sel',
f_width: '180px', f_width: '180px',
isShow: false, // 是否展示label isShow: false, // 是否展示label
f_selList: [ f_selList: [], // 分包列表
{
label: '分包1',
value: '1',
},
{
label: '分包2',
value: '2',
},
], // 分包列表
}, },
{ {
f_label: '班组', f_label: '班组',
@ -77,16 +50,7 @@ export const formLabel = [
f_type: 'sel', f_type: 'sel',
f_width: '180px', f_width: '180px',
isShow: false, // 是否展示label isShow: false, // 是否展示label
f_selList: [ f_selList: [], // 班组列表
{
label: '班组1',
value: '1',
},
{
label: '班组2',
value: '2',
},
], // 班组列表
}, },
{ {
f_label: '状态', f_label: '状态',

View File

@ -101,6 +101,13 @@ import {
getEntryPersonListAPI, getEntryPersonListAPI,
deleteEntryPersonAPI, deleteEntryPersonAPI,
} from '@/api/construction-person/entry-and-exit-manage/person-entry' } from '@/api/construction-person/entry-and-exit-manage/person-entry'
import {
getLotProjectSelectListCommonFun,
getSubSelectListCommonFun,
getTeamSelectListCommonFun,
getPostTypeSelectListCommonFun,
} from '@/utils/getCommonData'
export default { export default {
name: 'PersonEntry', name: 'PersonEntry',
components: { components: {
@ -200,5 +207,37 @@ export default {
this.dialogConfig.outerVisible = false this.dialogConfig.outerVisible = false
}, },
}, },
async created() {
const lotProjectList = await getLotProjectSelectListCommonFun()
const subList = await getSubSelectListCommonFun()
const teamList = await getTeamSelectListCommonFun()
const postTypeList = await getPostTypeSelectListCommonFun()
this.formLabel[3].f_selList = lotProjectList.map((item) => {
return {
label: item.proName,
value: item.id,
}
})
this.formLabel[4].f_selList = postTypeList.map((item) => {
return {
label: item.postName,
value: item.id,
}
})
this.formLabel[5].f_selList = subList.map((item) => {
return {
value: item.id,
label: item.subName,
}
})
this.formLabel[6].f_selList = teamList.map((item) => {
return {
value: item.id,
label: item.teamName,
}
})
},
} }
</script> </script>

View File

@ -278,7 +278,7 @@ export default {
this.formLabel[4].f_selList = postTypeList.map((item) => { this.formLabel[4].f_selList = postTypeList.map((item) => {
return { return {
label: item.postName, label: item.postName,
value: item.postId, value: item.id,
} }
}) })
this.formLabel[5].f_selList = subList.map((item) => { this.formLabel[5].f_selList = subList.map((item) => {

View File

@ -6,7 +6,6 @@
:showRightTools="false" :showRightTools="false"
ref="projectListTableRef" ref="projectListTableRef"
:columnsList="columnsList" :columnsList="columnsList"
:testTableList="testTableList"
:sendParams="{ :sendParams="{
subComId: subComId, subComId: subComId,
}" }"
@ -33,12 +32,28 @@
:showRightTools="false" :showRightTools="false"
ref="projectListTableRef" ref="projectListTableRef"
:columnsList="columnsList_1" :columnsList="columnsList_1"
:testTableList="testTableList"
:sendParams="{ :sendParams="{
proId: proId, proId: proId,
}" }"
:request-api="getRedAndGreenCountPersonListAPI" :request-api="getRedAndGreenCountPersonListAPI"
/> >
<template slot="lightStatus" slot-scope="{ data }">
<el-tag
size="mini"
type="warning"
v-if="data.lightStatus === 1"
>
黄灯
</el-tag>
<el-tag
size="mini"
type="success"
v-if="data.lightStatus === 2"
>
绿灯
</el-tag>
</template>
</TableModel>
</template> </template>
</DialogModel> </DialogModel>
</div> </div>
@ -51,6 +66,11 @@ import {
getRedAndGreenCountProjectListAPI, getRedAndGreenCountProjectListAPI,
getRedAndGreenCountPersonListAPI, getRedAndGreenCountPersonListAPI,
} from '@/api/construction-person/red-green-light-mange/red-and-green-count' } from '@/api/construction-person/red-green-light-mange/red-and-green-count'
import {
getTeamSelectListCommonFun,
getSubSelectListCommonFun,
} from '@/utils/getCommonData'
export default { export default {
name: 'ProjectList', name: 'ProjectList',
props: { props: {
@ -83,20 +103,6 @@ export default {
{ t_props: 'yellowNum', t_label: '黄灯人数' }, { t_props: 'yellowNum', t_label: '黄灯人数' },
{ t_props: 'greenNum', t_label: '绿灯人数' }, { t_props: 'greenNum', t_label: '绿灯人数' },
], ],
testTableList: [
{
proName: '工程1',
onSiteCount: '6',
yellowCount: '12',
greenCount: '23',
},
{
proName: '工程1',
onSiteCount: '20',
yellowCount: '10',
greenCount: '10',
},
],
dialogConfig: { dialogConfig: {
outerTitle: '人员', outerTitle: '人员',
@ -109,42 +115,54 @@ export default {
formLabel_1: [ formLabel_1: [
{ {
f_label: '姓名', f_label: '姓名',
f_model: 'proName', f_model: 'name',
f_type: 'ipt', f_type: 'ipt',
f_width: '180px', f_width: '180px',
isShow: false, // label isShow: false, // label
}, },
{ {
f_label: '分包', f_label: '分包',
f_model: 'proName', f_model: 'subId',
f_type: 'ipt', f_type: 'sel',
f_width: '180px', f_width: '180px',
isShow: false, // label isShow: false, // label
f_selList: [],
}, },
{ {
f_label: '班组', f_label: '班组',
f_model: 'proName', f_model: 'teamId',
f_type: 'ipt', f_type: 'sel',
f_width: '180px', f_width: '180px',
isShow: false, // label isShow: false, // label
f_selList: [],
}, },
{ {
f_label: '状态', f_label: '状态',
f_model: 'proName', f_model: 'lightStatus',
f_type: 'ipt', f_type: 'sel',
f_width: '180px', f_width: '180px',
isShow: false, // label isShow: false, // label
f_selList: [
{
label: '黄灯',
value: 1,
},
{
label: '绿灯',
value: 2,
},
],
}, },
], ],
columnsList_1: [ columnsList_1: [
{ t_slot: 'proName', t_label: '姓名' }, { t_props: 'name', t_label: '姓名' },
{ t_props: 'onSiteCount', t_label: '身份证' }, { t_props: 'idNumber', t_label: '身份证' },
{ t_props: 'yellowCount', t_label: '联系方式' }, { t_props: 'phone', t_label: '联系方式' },
{ t_props: 'greenCount', t_label: '工种' }, { t_props: 'postName', t_label: '工种' },
{ t_props: 'greenCount', t_label: '所属工程' }, { t_props: 'proName', t_label: '所属工程' },
{ t_props: 'greenCount', t_label: '所属分包' }, { t_props: 'subName', t_label: '所属分包' },
{ t_props: 'greenCount', t_label: '所属班组' }, { t_props: 'teamName', t_label: '所属班组' },
{ t_props: 'greenCount', t_label: '状态' }, { t_slot: 'lightStatus', t_label: '状态' },
], ],
} }
}, },
@ -160,7 +178,22 @@ export default {
this.dialogConfig.outerVisible = false this.dialogConfig.outerVisible = false
}, },
}, },
async created() {
const subList = await getSubSelectListCommonFun()
this.formLabel_1[1].f_selList = subList.map((item) => {
return {
label: item.subName,
value: item.id,
}
})
const teamList = await getTeamSelectListCommonFun()
this.formLabel_1[2].f_selList = teamList.map((item) => {
return {
label: item.teamName,
value: item.id,
}
})
},
} }
</script> </script>
<style></style>