增加上海人员多工程设置页面

This commit is contained in:
BianLzhaoMin 2025-09-16 14:21:46 +08:00
parent dd8090bb6d
commit fc3d74c997
4 changed files with 585 additions and 14 deletions

View File

@ -71,7 +71,7 @@ export default {
top: 50% !important;
left: 50% !important;
transform: translate(-50%, -50%) !important;
height: var(--el-dialog-max-height) !important;
height: var(--el-dialog-min-height) !important;
min-height: var(--el-dialog-min-height) !important;
max-height: var(--el-dialog-max-height) !important;
.el-dialog__body {

View File

@ -547,7 +547,7 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-row>
<el-col :span="12">
<el-form-item label="银行联号">
<el-input
@ -571,7 +571,7 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-row>
<el-col :span="24">
<el-form-item label="附件">
<UploadFileFormData
@ -591,7 +591,6 @@
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
@ -1521,8 +1520,13 @@ export default {
//
if (bmWorkerWageCard && Object.keys(bmWorkerWageCard).length > 0) {
const { bankCardCode, bankName, bankBranchName, id, bankIdentifierCode } =
bmWorkerWageCard
const {
bankCardCode,
bankName,
bankBranchName,
id,
bankIdentifierCode,
} = bmWorkerWageCard
this.salaryCardInfoForm = {
id,
bankName,

View File

@ -47,6 +47,14 @@
>
模板下载
</el-button>
<el-button
size="mini"
type="success"
icon="el-icon-setting"
@click="onHandleShanghaiPersonMultiEngineSetting()"
>
上海人员多工程设置
</el-button>
</template>
<!-- 出入场状态 -->
@ -119,7 +127,7 @@
</el-row>
</template>
<template v-else>
<template v-else-if="dialogConfig.outerTitle === '导入数据'">
<UploadFileFormData
:limit="1"
:file-size="50"
@ -142,15 +150,22 @@
</el-button>
</el-row>
</template>
<template v-else>
<ShanghaiProSetting
@closeDialogOuter="handleCloseDialogOuter"
/>
</template>
</template>
</DialogModel>
</div>
</template>
<script>
import AddOrEditForm from './add-or-edit-form'
import TableModel from '@/components/TableModel'
import DialogModel from '@/components/DialogModel'
import AddOrEditForm from './add-or-edit-form'
import ShanghaiProSetting from './shanghai-pro-setting'
import UploadFileFormData from '@/components/UploadFileFormData'
import { formLabel, columnsList, dialogConfig } from './config'
import {
@ -174,6 +189,7 @@ export default {
DialogModel,
AddOrEditForm,
UploadFileFormData,
ShanghaiProSetting,
},
data() {
@ -283,12 +299,6 @@ export default {
} else {
window.open(window.origin + '/人员入场-模版.xlsx')
}
// window.open(window.origin + '/hd-realname' + '/-.xlsx')
// this.download(
// '/bmw/download/workerEinTemplate',
// {},
// '.xlsx',
// )
},
//
@ -330,6 +340,15 @@ export default {
})
}
},
//
onHandleShanghaiPersonMultiEngineSetting() {
this.dialogConfig.outerTitle = '上海人员多工程设置'
this.dialogConfig.outerWidth = '80%'
this.dialogConfig.minHeight = '90vh'
this.dialogConfig.maxHeight = '90vh'
this.dialogConfig.outerVisible = true
},
},
async created() {

View File

@ -0,0 +1,548 @@
<template>
<!-- 施工人员 ---- 出入场管理 ---- 上海人员多工程设置 -->
<div class="container">
<div class="shanghai-pro-setting-step1" v-if="currentStep === 1">
<el-form label-width="140px">
<el-form-item label="身份证号码">
<el-input
v-model="idNumber"
placeholder="请输入身份证号码"
clearable
style="width: 420px"
/>
</el-form-item>
</el-form>
<div class="content">
<span> 上海人员多工程设置 </span>
<span> 1. 请确保该人员已经入场一个上海工程 </span>
<span>
2.
每个工程人员只能存在一条在场数据即一个工程只能入场一次
</span>
<span>
3. 如需出场请至
<a href="javascript:void(0)" @click="onHandlePersonExit"
>人员出场</a
>
模块进行单个工程操作
</span>
</div>
<el-button
type="primary"
style="width: 30%; margin-top: 10%"
@click="onHandleNextStep"
>
下一步
</el-button>
</div>
<div class="shanghai-pro-setting-step2" v-else-if="currentStep === 2">
<div class="header">
<el-button
type="primary"
icon="el-icon-plus"
@click="onHandleAddEntryProject"
>
新增入场工程
</el-button>
<div class="title"> 上海人员多工程设置明细 </div>
<div class="content-detail">
<span> 上海人员多工程设置 </span>
<span> 1. 请确保该人员已经入场一个上海工程 </span>
<span>
2.
每个工程人员只能存在一条在场数据即一个工程只能入场一次
</span>
<span>
3. 如需出场请至
<a href="javascript:void(0)" @click="onHandlePersonExit"
>人员出场</a
>
模块进行单个工程操作
</span>
</div>
</div>
<el-table :data="tableData">
<el-table-column
type="index"
width="50"
align="center"
label="序号"
/>
<el-table-column
align="center"
:prop="item.prop"
:key="item.prop"
:label="item.label"
show-overflow-tooltip
v-for="item in columnsList"
/>
</el-table>
</div>
<!-- 新增入场工程 -->
<DialogModel
:dialogConfig="dialogConfig"
@closeDialogOuter="handleCloseDialogOuter"
>
<template slot="outerContent">
<el-form
label-width="120px"
:model="addEntryProjectForm"
ref="addEntryProjectFormRef"
:rules="addEntryProjectFormRules"
>
<el-form-item label="姓名" prop="name">
<el-input
clearable
placeholder="请输入姓名"
v-model.trim="addEntryProjectForm.name"
/>
</el-form-item>
<el-form-item label="身份证号" prop="idNumber">
<el-input
clearable
placeholder="请输入身份证号"
v-model.trim="addEntryProjectForm.idNumber"
/>
</el-form-item>
<el-form-item label="工种" prop="postId">
<el-select
clearable
filterable
style="width: 100%"
placeholder="请选择工种"
@change="onChangePostId"
v-model="addEntryProjectForm.postId"
>
<el-option
:key="item.value"
:value="item.value"
:label="item.label"
v-for="item in postTypeSelectList"
/>
</el-select>
</el-form-item>
<el-form-item label="入场工程" prop="proId">
<el-select
clearable
filterable
style="width: 100%"
@change="onChangeProId"
placeholder="请选择入场工程"
v-model="addEntryProjectForm.proId"
>
<el-option
:key="item.value"
:value="item.value"
:label="item.label"
v-for="item in lotProjectSelectList"
/>
</el-select>
</el-form-item>
<el-form-item label="入场分包" prop="subId">
<el-select
clearable
filterable
style="width: 100%"
@change="onChangeSubId"
placeholder="请选择入场分包"
v-model="addEntryProjectForm.subId"
>
<el-option
:key="item.value"
:value="item.value"
:label="item.label"
v-for="item in subSelectList"
/>
</el-select>
</el-form-item>
<el-form-item label="入场班组" prop="teamId">
<el-select
clearable
filterable
style="width: 100%"
@change="onChangeTeamId"
placeholder="请选择入场班组"
v-model="addEntryProjectForm.teamId"
>
<el-option
:key="item.value"
:value="item.value"
:label="item.label"
v-for="item in teamSelectList"
/>
</el-select>
</el-form-item>
</el-form>
<el-row class="dialog-footer-btn">
<el-button size="medium" @click="onHandleCloseDialogOuter">
取消
</el-button>
<el-button
size="medium"
type="primary"
@click="onHandleConfirmAddEntryProject"
>
提交
</el-button>
<el-button
size="medium"
type="success"
@click="onHandleConfirmAddEntryProjectAndContinue"
>
提交并继续添加
</el-button>
</el-row>
</template>
</DialogModel>
</div>
</template>
<script>
import DialogModel from '@/components/DialogModel'
import { getPostTypeSelectListCommonFun } from '@/utils/getCommonData'
import {
getSubSelectListByConditionAPI,
getTeamSelectListByConditionAPI,
getLotProjectSelectListByConditionAPI,
} from '@/api/common'
export default {
name: 'ShanghaiProSetting',
components: {
DialogModel,
},
data() {
return {
idNumber: '',
currentStep: 1,
tableData: [],
columnsList: [
{
prop: 'name',
label: '姓名',
},
{
prop: 'idNumber',
label: '身份证',
},
{
prop: 'phone',
label: '联系方式',
},
{
prop: 'postName',
label: '工种',
},
{
prop: 'proName',
label: '所属工程',
},
{
prop: 'subName',
label: '所属分包',
},
{
prop: 'teamName',
label: '所属班组',
},
{
prop: 'einTime',
label: '入场时间',
},
],
dialogConfig: {
outerVisible: false,
outerTitle: '新增入场工程',
outerWidth: '40%',
// minHeight: '78vh',
// maxHeight: '78vh',
},
addEntryProjectForm: {
name: '',
idNumber: '',
postName: '',
proName: '',
subName: '',
teamName: '',
teamId: '',
subId: '',
proId: '',
postId: '',
},
addEntryProjectFormRules: {
name: [
{
required: true,
message: '请输入姓名',
},
],
idNumber: [
{
required: true,
message: '请输入身份证号',
},
],
postId: [
{
required: true,
message: '请输入工种',
},
],
proId: [
{
required: true,
message: '请输入入场工程',
},
],
subId: [
{
required: true,
message: '请输入入场分包',
},
],
teamId: [
{
required: true,
message: '请输入入场班组',
},
],
},
postTypeSelectList: [], //
lotProjectSelectList: [], //
subSelectList: [], //
teamSelectList: [], //
}
},
async created() {
const postType = await getPostTypeSelectListCommonFun()
this.postTypeSelectList = postType.map((item) => {
return {
value: item.id,
label: item.postName,
}
})
this.getLotProjectSelectList()
},
methods: {
onHandlePersonExit() {
this.$router.push(
'/construction-person/entry-and-exit-manage/person-exit',
)
this.$emit('closeDialogOuter')
},
//
onHandleNextStep() {
this.currentStep = 2
},
//
onHandleAddEntryProject() {
this.dialogConfig.outerVisible = true
},
//
handleCloseDialogOuter() {
this.dialogConfig.outerVisible = false
},
//
onHandleCloseDialogOuter() {
this.dialogConfig.outerVisible = false
},
//
onHandleConfirmAddEntryProject() {
// this.$emit('closeDialogOuter')
this.$refs.addEntryProjectFormRef.validate((valid) => {
if (valid) {
this.$emit('closeDialogOuter')
}
})
},
//
onHandleConfirmAddEntryProjectAndContinue() {
this.$refs.addEntryProjectFormRef.validate((valid) => {
if (valid) {
this.tableData.push(
JSON.parse(JSON.stringify(this.addEntryProjectForm)),
)
this.$refs.addEntryProjectFormRef.resetFields()
this.dialogConfig.outerVisible = false
}
})
},
//
async getLotProjectSelectList() {
const { data: res } = await getLotProjectSelectListByConditionAPI(
{},
)
this.lotProjectSelectList = res.map((item) => {
return {
value: item.id,
label: item.name,
}
})
},
//
async getSubSelectList(data) {
const { data: res } = await getSubSelectListByConditionAPI(data)
this.subSelectList = res.map((item) => {
return {
value: item.id,
label: item.name,
}
})
},
//
async getTeamSelectList(data) {
const { data: res } = await getTeamSelectListByConditionAPI(data)
this.teamSelectList = res.map((item) => {
return {
value: item.id,
label: item.name,
}
})
},
//
onChangeProId(val) {
this.addEntryProjectForm.teamId = ''
this.addEntryProjectForm.subId = ''
if (!val) {
this.addEntryProjectForm.proName = ''
this.subSelectList = []
this.teamSelectList = []
return
}
this.addEntryProjectForm.proName = this.lotProjectSelectList.find(
(item) => item.value === val,
).label
this.getSubSelectList({ proId: val })
},
//
onChangePostId(val) {
if (!val) {
this.addEntryProjectForm.postName = ''
return
}
this.addEntryProjectForm.postName = this.postTypeSelectList.find(
(item) => item.value === val,
).label
},
//
onChangeSubId(val) {
this.addEntryProjectForm.teamId = ''
if (!val) {
this.addEntryProjectForm.subId = ''
this.teamSelectList = []
return
}
this.addEntryProjectForm.subName = this.subSelectList.find(
(item) => item.value === val,
).label
this.getTeamSelectList({ subId: val })
},
//
onChangeTeamId(val) {
if (!val) {
this.addEntryProjectForm.teamName = ''
return
}
this.addEntryProjectForm.teamName = this.teamSelectList.find(
(item) => item.value === val,
).label
},
},
}
</script>
<style scoped lang="scss">
.container {
height: 100%;
width: 100%;
}
.shanghai-pro-setting-step1 {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
width: 100%;
.content {
margin-top: 28px;
width: 40%;
text-align: left;
}
}
.shanghai-pro-setting-step2 .header {
display: flex;
justify-content: space-between;
align-items: center;
height: 100%;
width: 100%;
margin-bottom: 18px;
}
.content span {
display: block;
margin-bottom: 28px;
font-size: 14px;
color: #ef4444;
text-indent: 2em;
}
.content span:first-child,
.content-detail span:first-child {
text-indent: 0;
font-size: 16px;
font-weight: 600;
}
.content span a,
.content-detail span a {
color: #1e3a8a;
}
.content span a:hover {
text-decoration: underline;
}
.content-detail span {
display: block;
margin-bottom: 8px;
font-size: 14px;
color: #ef4444;
text-indent: 2em;
}
.title {
font-size: 16px;
font-weight: 600;
color: #000;
flex: 1;
text-align: center;
}
</style>