考勤统计页面完善
This commit is contained in:
parent
af57df19c7
commit
7bf1659d13
|
|
@ -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,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
},
|
},
|
||||||
/** 级联选择 */
|
/** 级联选择 */
|
||||||
|
|
|
||||||
|
|
@ -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 || ''
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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() {
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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: '状态',
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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) => {
|
||||||
|
|
|
||||||
|
|
@ -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>
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue