This commit is contained in:
BianLzhaoMin 2025-08-19 15:52:10 +08:00
parent ad055f2554
commit ec6e97d549
17 changed files with 342 additions and 313 deletions

View File

@ -33,6 +33,14 @@ export function getLotProjectSelectListAPI() {
method: 'GET', method: 'GET',
}) })
} }
// 获取标段工程下拉列表
export function getLotProjectSelectListBySubIdAPI(data = {}) {
return request({
url: '/bmw/pmProject/listAllBySubId',
method: 'GET',
params: data,
})
}
// 获取分包商下拉列表 // 获取分包商下拉列表
export const getSubSelectListAPI = () => { export const getSubSelectListAPI = () => {
@ -43,10 +51,11 @@ export const getSubSelectListAPI = () => {
} }
// 获取班组下拉列表 // 获取班组下拉列表
export const getTeamSelectListAPI = () => { export const getTeamSelectListAPI = (data = {}) => {
return request({ return request({
url: '/bmw/pmSubTeam/listAll', url: '/bmw/pmSubTeam/listAll',
method: 'GET', method: 'GET',
params: data,
}) })
} }
// 获取工种下拉列表 // 获取工种下拉列表

View File

@ -53,12 +53,12 @@ export async function getSubCompanySelectListCommonFun() {
} }
// 获取标段工程下拉列表 // 获取标段工程下拉列表
export async function getLotProjectSelectListCommonFun() { export async function getLotProjectSelectListCommonFun(data) {
const { lotProjectSelectList } = store.state.common const { lotProjectSelectList } = store.state.common
if (lotProjectSelectList.length > 0) { if (lotProjectSelectList.length > 0) {
return lotProjectSelectList return lotProjectSelectList
} }
const res = await getLotProjectSelectListAPI() const res = await getLotProjectSelectListAPI(data)
if (res.code === 200) { if (res.code === 200) {
store.commit('SET_LOT_PROJECT_SELECT_LIST', res.rows) store.commit('SET_LOT_PROJECT_SELECT_LIST', res.rows)
return res.rows return res.rows
@ -79,12 +79,12 @@ export async function getSubSelectListCommonFun() {
return [] return []
} }
// 获取班组下拉列表 // 获取班组下拉列表
export async function getTeamSelectListCommonFun() { export async function getTeamSelectListCommonFun(data) {
const { teamSelectList } = store.state.common const { teamSelectList } = store.state.common
if (teamSelectList.length > 0) { if (teamSelectList.length > 0) {
return teamSelectList return teamSelectList
} }
const res = await getTeamSelectListAPI() const res = await getTeamSelectListAPI(data)
if (res.code === 200) { if (res.code === 200) {
store.commit('SET_TEAM_SELECT_LIST', res.rows) store.commit('SET_TEAM_SELECT_LIST', res.rows)
return res.rows return res.rows

View File

@ -36,6 +36,8 @@
<el-form-item label="法人联系电话" prop="legalPersonPhone"> <el-form-item label="法人联系电话" prop="legalPersonPhone">
<el-input <el-input
clearable clearable
maxlength="11"
show-word-limit
placeholder="请输入法人联系电话" placeholder="请输入法人联系电话"
v-model="addOrEditForm.legalPersonPhone" v-model="addOrEditForm.legalPersonPhone"
/> />

View File

@ -12,6 +12,8 @@
<el-form-item label="班组名称" prop="teamName"> <el-form-item label="班组名称" prop="teamName">
<el-input <el-input
clearable clearable
maxlength="50"
show-word-limit
placeholder="请输入班组名称" placeholder="请输入班组名称"
v-model="addOrEditForm.teamName" v-model="addOrEditForm.teamName"
/> />
@ -23,7 +25,10 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item label="分包名称" prop="subId"> <el-form-item label="分包名称" prop="subId">
<el-select <el-select
clearable
filterable
style="width: 100%" style="width: 100%"
placeholder="请选择分包名称"
v-model="addOrEditForm.subId" v-model="addOrEditForm.subId"
> >
<el-option <el-option
@ -41,6 +46,8 @@
<el-form-item label="班组长" prop="teamLeader"> <el-form-item label="班组长" prop="teamLeader">
<el-input <el-input
clearable clearable
maxlength="20"
show-word-limit
placeholder="请输入班组长" placeholder="请输入班组长"
v-model="addOrEditForm.teamLeader" v-model="addOrEditForm.teamLeader"
/> />
@ -53,6 +60,8 @@
<el-form-item label="班组长联系方式" prop="phone"> <el-form-item label="班组长联系方式" prop="phone">
<el-input <el-input
clearable clearable
maxlength="11"
show-word-limit
placeholder="请输入班组长联系方式" placeholder="请输入班组长联系方式"
v-model="addOrEditForm.phone" v-model="addOrEditForm.phone"
/> />
@ -65,11 +74,7 @@
<script> <script>
import UploadImg from '@/components/UploadImg' import UploadImg from '@/components/UploadImg'
import { import { addAndEditTeamBaseInfoAPI } from '@/api/basic-manage/team-manage/team-base-info'
addTeamBaseInfoAPI,
editTeamBaseInfoAPI,
addAndEditTeamBaseInfoAPI,
} from '@/api/basic-manage/team-manage/team-base-info'
import { getSubSelectListCommonFun } from '@/utils/getCommonData' import { getSubSelectListCommonFun } from '@/utils/getCommonData'
export default { export default {
name: 'AddOrEditForm', name: 'AddOrEditForm',
@ -151,15 +156,12 @@ export default {
const res = await addAndEditTeamBaseInfoAPI( const res = await addAndEditTeamBaseInfoAPI(
this.addOrEditForm, this.addOrEditForm,
) )
console.log(res, '新增或修改结果')
if (res.code === 200) { if (res.code === 200) {
this.$modal.msgSuccess( this.$modal.msgSuccess(
this.addOrEditForm.id ? '修改成功' : '新增成功', this.addOrEditForm.id ? '修改成功' : '新增成功',
) )
resolve() resolve()
this.$store.dispatch('getTeamSelectList') // store
// store
this.$store.dispatch('getTeamSelectList')
} else { } else {
this.$modal.msgError(res.msg) this.$modal.msgError(res.msg)
reject(new Error(res.msg)) reject(new Error(res.msg))

View File

@ -15,7 +15,7 @@
size="mini" size="mini"
type="success" type="success"
icon="el-icon-download" icon="el-icon-download"
@click="onHandleExportSubBaseInfo(queryParams)" @click="onHandleExportTeamBaseInfo(queryParams)"
> >
导出 导出
</el-button> </el-button>
@ -26,7 +26,7 @@
type="primary" type="primary"
icon="el-icon-plus" icon="el-icon-plus"
v-hasPermi="['team:base:add']" v-hasPermi="['team:base:add']"
@click="onHandleAddOrEditSubBaseInfo(1, null)" @click="onHandleAddOrEditTeamBaseInfo(1, null)"
> >
新增 新增
</el-button> </el-button>
@ -39,7 +39,7 @@
type="primary" type="primary"
icon="el-icon-edit" icon="el-icon-edit"
v-hasPermi="['team:base:edit']" v-hasPermi="['team:base:edit']"
@click="onHandleAddOrEditSubBaseInfo(2, data)" @click="onHandleAddOrEditTeamBaseInfo(2, data)"
> >
修改 修改
</el-button> </el-button>
@ -49,7 +49,7 @@
type="danger" type="danger"
icon="el-icon-delete" icon="el-icon-delete"
v-hasPermi="['team:base:delete']" v-hasPermi="['team:base:delete']"
@click="onHandleDeleteSubBaseInfo(data)" @click="onHandleDeleteTeamBaseInfo(data)"
> >
删除 删除
</el-button> </el-button>
@ -62,8 +62,8 @@
> >
<template slot="outerContent"> <template slot="outerContent">
<AddOrEditForm <AddOrEditForm
ref="addOrEditFormContentRef"
:editFormData="editFormData" :editFormData="editFormData"
ref="teamBaseInfoAddOrEditFormRef"
/> />
<el-row class="dialog-footer-btn"> <el-row class="dialog-footer-btn">
@ -112,7 +112,7 @@ export default {
}, },
methods: { methods: {
// //
onHandleExportSubBaseInfo(queryParams) { onHandleExportTeamBaseInfo(queryParams) {
console.log(queryParams, '导出') console.log(queryParams, '导出')
this.download( this.download(
'/bmw/pmSubTeam/export', '/bmw/pmSubTeam/export',
@ -124,7 +124,7 @@ export default {
}, },
// //
onHandleAddOrEditSubBaseInfo(type, data) { onHandleAddOrEditTeamBaseInfo(type, data) {
this.dialogConfig.outerTitle = this.dialogConfig.outerTitle =
type === 1 ? '新增标段工程' : '修改标段工程' type === 1 ? '新增标段工程' : '修改标段工程'
@ -145,7 +145,7 @@ export default {
}, },
// //
onHandleDeleteSubBaseInfo(data) { onHandleDeleteTeamBaseInfo(data) {
this.$confirm('确定删除该班组吗?', '温馨提示', { this.$confirm('确定删除该班组吗?', '温馨提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
@ -157,21 +157,18 @@ export default {
if (res.code === 200) { if (res.code === 200) {
this.$modal.msgSuccess('删除成功') this.$modal.msgSuccess('删除成功')
this.$refs.teamBaseInfoTableRef.getTableList() // this.$refs.teamBaseInfoTableRef.getTableList() //
// store this.$store.dispatch('getTeamSelectList') // store
this.$store.dispatch('getTeamSelectList')
} }
}) })
.catch(() => { .catch(() => {
console.log('取消') // console.log('')
}) })
}, },
// //
async onHandleConfirmAddOrEdit() { async onHandleConfirmAddOrEdit() {
this.$refs.addOrEditFormContentRef.formType =
this.dialogConfig.outerTitle === '新增标段工程' ? 1 : 2
try { try {
await this.$refs.addOrEditFormContentRef.onHandleConfirmAddOrEditFun() await this.$refs.teamBaseInfoAddOrEditFormRef.onHandleConfirmAddOrEditFun()
this.dialogConfig.outerVisible = false this.dialogConfig.outerVisible = false
this.$refs.teamBaseInfoTableRef.getTableList() this.$refs.teamBaseInfoTableRef.getTableList()
} catch (error) { } catch (error) {
@ -181,7 +178,7 @@ export default {
// //
handleCloseDialogOuter() { handleCloseDialogOuter() {
this.$refs.addOrEditFormContentRef.resetForm() this.$refs.teamBaseInfoAddOrEditFormRef.resetForm()
this.dialogConfig.outerVisible = false this.dialogConfig.outerVisible = false
}, },
}, },

View File

@ -17,6 +17,8 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item label="分包名称" prop="subId"> <el-form-item label="分包名称" prop="subId">
<el-select <el-select
clearable
filterable
style="width: 100%" style="width: 100%"
@change="onChangeSubIdFun" @change="onChangeSubIdFun"
v-model="addOrEditForm.subId" v-model="addOrEditForm.subId"
@ -36,6 +38,8 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item label="班组名称" prop="teamId"> <el-form-item label="班组名称" prop="teamId">
<el-select <el-select
clearable
filterable
style="width: 100%" style="width: 100%"
@change="onChangeTeamIdFun" @change="onChangeTeamIdFun"
v-model="addOrEditForm.teamId" v-model="addOrEditForm.teamId"
@ -55,6 +59,8 @@
<el-col :span="24"> <el-col :span="24">
<el-form-item label="工程名称" prop="proId"> <el-form-item label="工程名称" prop="proId">
<el-select <el-select
clearable
filterable
style="width: 100%" style="width: 100%"
@change="onChangeProIdFun" @change="onChangeProIdFun"
v-model="addOrEditForm.proId" v-model="addOrEditForm.proId"
@ -139,10 +145,10 @@ import {
getTeamExitDataNumAPI, getTeamExitDataNumAPI,
} from '@/api/basic-manage/team-manage/team-entry-and-exit' } from '@/api/basic-manage/team-manage/team-entry-and-exit'
import { import {
getLotProjectSelectListCommonFun, getTeamSelectListAPI,
getSubSelectListCommonFun, getLotProjectSelectListBySubIdAPI,
getTeamSelectListCommonFun, } from '@/api/common'
} from '@/utils/getCommonData' import { getSubSelectListCommonFun } from '@/utils/getCommonData'
export default { export default {
name: 'AddOrEditForm', name: 'AddOrEditForm',
components: { components: {
@ -288,10 +294,37 @@ export default {
this.$refs.addOrEditFormRef.resetFields() this.$refs.addOrEditFormRef.resetFields()
}, },
onChangeSubIdFun(val) { async onChangeSubIdFun(val) {
this.addOrEditForm.teamId = ''
this.addOrEditForm.proId = ''
this.addOrEditForm.teamName = ''
this.addOrEditForm.proName = ''
if (!val) {
this.teamSelectList = []
this.lotProjectSelectList = []
return
}
this.addOrEditForm.subName = this.subSelectList.find( this.addOrEditForm.subName = this.subSelectList.find(
(item) => item.value === val, (item) => item.value === val,
).label ).label
const team = await getTeamSelectListAPI({ subId: val })
const lotProject = await getLotProjectSelectListBySubIdAPI({
subId: val,
})
this.teamSelectList = team.rows.map((item) => {
return {
value: item.id,
label: item.teamName,
}
})
this.lotProjectSelectList = lotProject.rows.map((item) => {
return {
value: item.id,
label: item.proName,
}
})
}, },
onChangeTeamIdFun(val) { onChangeTeamIdFun(val) {
this.addOrEditForm.teamName = this.teamSelectList.find( this.addOrEditForm.teamName = this.teamSelectList.find(
@ -307,8 +340,6 @@ export default {
async created() { async created() {
const sub = await getSubSelectListCommonFun() const sub = await getSubSelectListCommonFun()
const team = await getTeamSelectListCommonFun()
const lotProject = await getLotProjectSelectListCommonFun()
this.subSelectList = sub.map((item) => { this.subSelectList = sub.map((item) => {
return { return {
@ -317,19 +348,19 @@ export default {
} }
}) })
this.teamSelectList = team.map((item) => { // this.teamSelectList = team.map((item) => {
return { // return {
value: item.id, // value: item.id,
label: item.teamName, // label: item.teamName,
} // }
}) // })
this.lotProjectSelectList = lotProject.map((item) => { // this.lotProjectSelectList = lotProject.map((item) => {
return { // return {
value: item.id, // value: item.id,
label: item.proName, // label: item.proName,
} // }
}) // })
this.getTeamExitDataNum() this.getTeamExitDataNum()
}, },

View File

@ -25,6 +25,7 @@
size="mini" size="mini"
type="primary" type="primary"
icon="el-icon-plus" icon="el-icon-plus"
v-hasPermi="['worker:ein:insert']"
@click="onHandleAddOrEditPersonEntry(1, null)" @click="onHandleAddOrEditPersonEntry(1, null)"
> >
新增 新增
@ -47,6 +48,7 @@
size="mini" size="mini"
type="primary" type="primary"
icon="el-icon-edit" icon="el-icon-edit"
v-hasPermi="['worker:ein:edit']"
@click="onHandleAddOrEditPersonEntry(2, data)" @click="onHandleAddOrEditPersonEntry(2, data)"
> >
修改 修改
@ -56,6 +58,7 @@
type="danger" type="danger"
icon="el-icon-delete" icon="el-icon-delete"
v-if="data.einStatus === 2" v-if="data.einStatus === 2"
v-hasPermi="['worker:ein:del']"
@click="onHandleDeletePersonEntry(data)" @click="onHandleDeletePersonEntry(data)"
> >
删除 删除

View File

@ -28,6 +28,7 @@
type="primary" type="primary"
icon="el-icon-plus" icon="el-icon-plus"
@click="onHandleBatchExit" @click="onHandleBatchExit"
v-hasPermi="['worker:exit:batchExit']"
> >
批量出场 批量出场
</el-button> </el-button>
@ -82,6 +83,7 @@
type="primary" type="primary"
icon="el-icon-right" icon="el-icon-right"
v-if="data.einStatus === 1" v-if="data.einStatus === 1"
v-hasPermi="['worker:exit:exit']"
@click="onHandlePersonExit(data, 1)" @click="onHandlePersonExit(data, 1)"
> >
出场 出场

View File

@ -34,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: '班组',
@ -51,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: '状态',

View File

@ -81,12 +81,14 @@
<el-image <el-image
:src="contractImgList[0]" :src="contractImgList[0]"
:preview-src-list="contractImgList" :preview-src-list="contractImgList"
style="display: block; max-width: 100%; margin: 0 auto"
v-if="dialogConfig.outerTitle === '合同图片详情'" v-if="dialogConfig.outerTitle === '合同图片详情'"
style="display: block; max-width: 100%; margin: 0 auto"
/> />
<ContractDetails <ContractDetails
ref="contractDetailsRef" ref="contractDetailsRef"
:contractId="contractId" :contractInfo="contractInfo"
:filesImgList="filesImgList"
:filesFileList="filesFileList"
v-if="dialogConfig.outerTitle === '合同见证详情'" v-if="dialogConfig.outerTitle === '合同见证详情'"
/> />
</template> </template>
@ -98,10 +100,12 @@
import DialogModel from '@/components/DialogModel' import DialogModel from '@/components/DialogModel'
import ContractDetails from './contract-details.vue' // import ContractDetails from './contract-details.vue' //
import { import {
getContractDetailAPI,
getContractDetailListAPI, getContractDetailListAPI,
getContractDetailLookFileAPI, getContractDetailLookFileAPI,
} from '@/api/construction-person/red-green-light-mange/contract-witness' } from '@/api/construction-person/red-green-light-mange/contract-witness'
export default { export default {
name: 'ContractDetailsList',
components: { components: {
DialogModel, DialogModel,
ContractDetails, ContractDetails,
@ -124,6 +128,18 @@ export default {
maxHeight: '', maxHeight: '',
}, },
contractImgList: [], // contractImgList: [], //
contractInfo: {
contractCode: '', //
wageCriterion: '', //
wageApprovedWay: '', //
contractTermType: '', //
contractStopDate: '', //
contractStartDate: '', //
},
filesImgList: [], //
filesFileList: [], //
} }
}, },
mounted() { mounted() {
@ -148,24 +164,51 @@ export default {
.map((item) => item.lsUrl) .map((item) => item.lsUrl)
this.dialogConfig.outerTitle = '合同图片详情' this.dialogConfig.outerTitle = '合同图片详情'
this.dialogConfig.outerWidth = '' this.dialogConfig.outerWidth = ''
this.dialogConfig.minHeight = '' this.dialogConfig.minHeight = '80vh'
this.dialogConfig.maxHeight = '' this.dialogConfig.maxHeight = '80vh'
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
}, },
// //
onHandleViewContractDetails(row) { onHandleViewContractDetails(row) {
this.contractId = row.id
this.dialogConfig.outerTitle = '合同见证详情' this.dialogConfig.outerTitle = '合同见证详情'
this.dialogConfig.outerWidth = '80%' this.dialogConfig.outerWidth = '70%'
this.dialogConfig.minHeight = '' this.dialogConfig.minHeight = ''
this.dialogConfig.maxHeight = '' this.dialogConfig.maxHeight = ''
this.getContractInfo(row.id).then(() => {
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
this.$nextTick(() => {
this.$refs.contractDetailsRef.getContractInfo()
}) })
}, },
async getContractInfo(id) {
const { data: res } = await getContractDetailAPI(id)
if (res.length > 0) {
const {
files,
contractCode,
wageCriterion,
wageApprovedWay,
contractStopDate,
contractTermType,
contractStartDate,
} = res[0]
this.contractInfo = {
contractCode,
wageCriterion,
wageApprovedWay,
contractStopDate,
contractTermType,
contractStartDate,
}
this.filesImgList = files.filter((item) => item.sourceType != 6)
this.filesFileList = files.filter(
(item) => item.sourceType == 6,
)
}
},
// //
handleCloseDialogOuter() { handleCloseDialogOuter() {
this.dialogConfig.outerVisible = false this.dialogConfig.outerVisible = false

View File

@ -56,31 +56,24 @@
</template> </template>
<script> <script>
import { getContractDetailAPI } from '@/api/construction-person/red-green-light-mange/contract-witness'
export default { export default {
props: { props: {
contractId: { contractInfo: {
type: [String, Number], type: Object,
default: '', default: () => {},
},
filesImgList: {
type: Array,
default: () => [],
},
filesFileList: {
type: Array,
default: () => [],
}, },
}, },
name: 'ContractDetails', name: 'ContractDetails',
data() { data() {
return { return {
contractInfo: {
contractCode: '',
contractTermType: '',
contractStartDate: '',
contractStopDate: '',
wageApprovedWay: '',
wageCriterion: '',
},
filesImgList: [], //
filesFileList: [], //
imgTitleEnum: { imgTitleEnum: {
1: '人员手持合同照片', 1: '人员手持合同照片',
2: '工作内容页', 2: '工作内容页',
@ -92,38 +85,6 @@ export default {
}, },
methods: { methods: {
//
async getContractInfo() {
const { data: res } = await getContractDetailAPI(this.contractId)
// this.contractInfo = res
if (res.length > 0) {
const {
contractCode,
contractTermType,
contractStartDate,
contractStopDate,
wageApprovedWay,
wageCriterion,
files,
} = res[0]
this.contractInfo = {
contractCode,
contractTermType,
contractStartDate,
contractStopDate,
wageApprovedWay,
wageCriterion,
}
this.filesImgList = files.filter((item) => item.sourceType != 6)
this.filesFileList = files.filter(
(item) => item.sourceType == 6,
)
}
},
// //
onHandlePreviewFile(item) { onHandlePreviewFile(item) {
window.open(item.lsUrl, '_blank') window.open(item.lsUrl, '_blank')

View File

@ -6,10 +6,11 @@
label-width="140px" label-width="140px"
ref="contractInfoFormRef" ref="contractInfoFormRef"
:model="contractInfoForm" :model="contractInfoForm"
:rules="contractInfoFormRules"
> >
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="合同见证照片" prop="businessLicense"> <el-form-item label="合同见证照片">
<div style="display: flex; gap: 10px"> <div style="display: flex; gap: 10px">
<div <div
class="contract-img-box" class="contract-img-box"
@ -17,7 +18,6 @@
:key="item.title" :key="item.title"
> >
<UploadImgFormData <UploadImgFormData
:key="item.title"
:limit="1" :limit="1"
:file-size="10" :file-size="10"
:multiple="true" :multiple="true"
@ -39,16 +39,18 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="合同编号" prop="contractCode"> <el-form-item label="合同编号">
<el-input <el-input
clearable clearable
maxlength="50"
show-word-limit
placeholder="请输入合同编号" placeholder="请输入合同编号"
v-model="contractInfoForm.contractCode" v-model="contractInfoForm.contractCode"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="合同期限类型" prop="contractTermType"> <el-form-item label="合同期限类型">
<el-radio-group <el-radio-group
size="mini" size="mini"
v-model="contractInfoForm.contractTermType" v-model="contractInfoForm.contractTermType"
@ -102,6 +104,8 @@
<el-form-item label="工资核定标准" prop="wageCriterion"> <el-form-item label="工资核定标准" prop="wageCriterion">
<el-input <el-input
clearable clearable
maxlength="50"
show-word-limit
placeholder="请输入工资核定标准" placeholder="请输入工资核定标准"
v-model="contractInfoForm.wageCriterion" v-model="contractInfoForm.wageCriterion"
/> />
@ -143,7 +147,7 @@ import {
getContractDetailAPI, getContractDetailAPI,
} from '@/api/construction-person/red-green-light-mange/contract-witness' } from '@/api/construction-person/red-green-light-mange/contract-witness'
export default { export default {
name: 'AddOrEditForm', name: 'ContractWitnessUpload',
props: { props: {
queryDetailsId: { queryDetailsId: {
type: [String, Number], type: [String, Number],
@ -169,46 +173,86 @@ export default {
UploadFileFormData, UploadFileFormData,
}, },
data() { data() {
const validateContractStartDate = (rule, value, callback) => {
if (!value) {
return callback()
}
if (value >= this.contractInfoForm.contractStopDate) {
callback(new Error('合同签订日期不能大于合同终止日期'))
}
callback()
}
const validateContractStopDate = (rule, value, callback) => {
if (!value) {
return callback()
}
if (value <= this.contractInfoForm.contractStartDate) {
callback(new Error('合同终止日期不能小于合同签订日期'))
}
callback()
}
return { return {
// //
contractInfoForm: { contractInfoForm: {
contractCode: '', // contractCode: '', //
contractTermType: '以完成一定工作为期限的合同', //
contractStartDate: '', //
contractStopDate: '', //
wageApprovedWay: '天', //
wageCriterion: '', // wageCriterion: '', //
wageApprovedWay: '天', //
contractStopDate: null, //
contractStartDate: null, //
contractTermType: '以完成一定工作为期限的合同', //
},
contractInfoFormRules: {
contractStartDate: [
{
required: false,
},
{
trigger: ['change', 'blur'],
validator: validateContractStartDate,
},
],
contractStopDate: [
{
required: false,
},
{
trigger: ['change', 'blur'],
validator: validateContractStopDate,
},
],
}, },
contractImageList: [ contractImageList: [
{ {
title: '人员手持合同照',
type: 1, type: 1,
fileList: [], fileList: [],
title: '人员手持合同照',
}, },
{ {
title: '工作内容页',
type: 2, type: 2,
fileList: [], fileList: [],
title: '工作内容页',
}, },
{ {
title: '薪酬约定页',
type: 3, type: 3,
fileList: [], fileList: [],
title: '薪酬约定页',
}, },
{ {
title: '本人签名页',
type: 4, type: 4,
fileList: [], fileList: [],
title: '本人签名页',
}, },
{ {
title: '其他照片',
type: 5, type: 5,
fileList: [], fileList: [],
title: '其他照片',
}, },
{ {
title: '附件',
type: 6, type: 6,
title: '附件',
fileList: [], fileList: [],
}, },
], ],
@ -220,9 +264,9 @@ export default {
// //
const fieldsList = [ const fieldsList = [
'contractCode', // 'contractCode', //
'contractStartDate', //
'contractStopDate', //
'wageCriterion', // 'wageCriterion', //
'contractStopDate', //
'contractStartDate', //
] ]
const imageFieldsToCheck = this.contractImageList.slice(0, -1) // const imageFieldsToCheck = this.contractImageList.slice(0, -1) //
@ -266,19 +310,20 @@ export default {
// //
onHandleConfirmAddOrEditFun() { onHandleConfirmAddOrEditFun() {
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
this.$refs.contractInfoFormRef.validate(async (valid) => {
if (valid) {
const status = this.checkFormStatus() const status = this.checkFormStatus()
// 1. params
let params = { let params = {
...this.contractInfoForm, ...this.contractInfoForm,
workerId: this.workerId, workerId: this.workerId,
} }
// ID const filesList = []
const formData = new FormData()
if (this.queryDetailsId) { if (this.queryDetailsId) {
params.id = this.queryDetailsId params.id = this.queryDetailsId
} }
//
if (status === 'partial') { if (status === 'partial') {
this.$modal.msgError( this.$modal.msgError(
'请完善合同见证中的必填信息(除附件外)后再提交', '请完善合同见证中的必填信息(除附件外)后再提交',
@ -286,7 +331,6 @@ export default {
return reject(new Error('合同信息未完善')) return reject(new Error('合同信息未完善'))
} }
//
if (status === 'all_empty') { if (status === 'all_empty') {
await new Promise((innerResolve, innerReject) => { await new Promise((innerResolve, innerReject) => {
this.$confirm( this.$confirm(
@ -302,23 +346,20 @@ export default {
return return
} }
// all_filled
const filesList = []
const formData = new FormData()
this.contractImageList.forEach((item) => { this.contractImageList.forEach((item) => {
item.fileList.forEach((file) => { item.fileList.forEach((file) => {
filesList.push({ type: item.type, name: 'contract' }) filesList.push({
type: item.type,
name: 'contract',
})
formData.append('files', file.raw) formData.append('files', file.raw)
}) })
}) })
formData.append('params', JSON.stringify(params)) formData.append('params', JSON.stringify(params))
formData.append('fileMsg', JSON.stringify(filesList)) formData.append('fileMsg', JSON.stringify(filesList))
// 3. APIreject
try { try {
const res = await uploadContractAPI(formData) const res = await uploadContractAPI(formData)
if (res.code === 200) { if (res.code === 200) {
this.$modal.msgSuccess('合同上传成功') this.$modal.msgSuccess('合同上传成功')
resolve() resolve()
@ -330,37 +371,13 @@ export default {
this.$modal.msgError('合同上传失败,请重试') this.$modal.msgError('合同上传失败,请重试')
reject(err) reject(err)
} }
} else {
reject()
}
})
}) })
}, },
//
onChangeProId(val) {
this.keyInfoForm.proName = this.proSelectList.find(
(item) => item.value === val,
).label
},
//
onChangePostId(val) {
this.keyInfoForm.postName = this.postSelectList.find(
(item) => item.value === val,
).label
},
//
onChangeSubId(val) {
this.keyInfoForm.subName = this.subSelectList.find(
(item) => item.value === val,
).label
},
//
onChangeTeamId(val) {
this.keyInfoForm.teamName = this.teamSelectList.find(
(item) => item.value === val,
).label
},
//
resetForm() {},
// //
async getContractDetail() { async getContractDetail() {
console.log(this.queryDetailsId, 'queryDetailsId 合同详情') console.log(this.queryDetailsId, 'queryDetailsId 合同详情')
@ -371,20 +388,20 @@ export default {
if (res.length > 0) { if (res.length > 0) {
const { const {
contractCode, contractCode,
wageCriterion,
wageApprovedWay,
contractTermType, contractTermType,
contractStartDate, contractStartDate,
contractStopDate, contractStopDate,
wageApprovedWay,
wageCriterion,
} = res[0] } = res[0]
this.contractInfoForm = { this.contractInfoForm = {
contractCode, contractCode,
contractTermType, wageCriterion,
wageApprovedWay,
contractStartDate, contractStartDate,
contractStopDate, contractStopDate,
wageApprovedWay, contractTermType,
wageCriterion,
} }
} }
}, },

View File

@ -5,7 +5,7 @@
:formLabel="formLabel" :formLabel="formLabel"
:showOperation="true" :showOperation="true"
:showRightTools="true" :showRightTools="true"
ref="personEntryTableRef" ref="contractWitnessTableRef"
:columnsList="columnsList" :columnsList="columnsList"
:request-api="getPersonContractListAPI" :request-api="getPersonContractListAPI"
> >
@ -60,6 +60,7 @@
size="mini" size="mini"
type="primary" type="primary"
icon="el-icon-upload" icon="el-icon-upload"
v-hasPermi="['worker:contract:edit']"
@click="onHandleUploadContract(data)" @click="onHandleUploadContract(data)"
> >
上传 上传
@ -126,7 +127,11 @@ import {
getContractDetailLookFileAPI, getContractDetailLookFileAPI,
} from '@/api/construction-person/red-green-light-mange/contract-witness' } from '@/api/construction-person/red-green-light-mange/contract-witness'
import { getLotProjectSelectListCommonFun } from '@/utils/getCommonData' import {
getSubSelectListCommonFun,
getTeamSelectListCommonFun,
getLotProjectSelectListCommonFun,
} from '@/utils/getCommonData'
export default { export default {
name: 'ContractWitness', name: 'ContractWitness',
components: { components: {
@ -170,47 +175,8 @@ export default {
) )
}, },
//
onHandleAddOrEditPersonEntry(type, data) {
this.dialogConfig.outerTitle = type === 1 ? '新增人员' : '修改人员'
this.formType = type
if (type === 2) {
this.queryDetailsId = data.id
this.einStatus = data.einStatus
this.dialogConfig.outerVisible = true
this.$nextTick(() => {
this.$refs.uploadContractContentRef.getEntryPersonDetail()
})
} else {
this.dialogConfig.outerVisible = true
}
},
//
onHandleDeletePersonEntry(data) {
this.$confirm('确定删除该人员吗?', '温馨提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(async () => {
const res = await deleteEntryPersonAPI({
id: data.id,
})
if (res.code === 200) {
this.$modal.msgSuccess('删除成功')
this.$refs.personEntryTableRef.getTableList() //
}
})
.catch(() => {
console.log('取消')
})
},
// //
onHandleUploadContract(data) { onHandleUploadContract(data) {
console.log(data, '上传合同')
this.queryDetailsId = data.id this.queryDetailsId = data.id
if (data.isSign == 1) { if (data.isSign == 1) {
this.$confirm( this.$confirm(
@ -225,25 +191,19 @@ export default {
.then(async () => { .then(async () => {
this.workerId = data.workerId this.workerId = data.workerId
this.queryDetailsId = data.id this.queryDetailsId = data.id
this.dialogConfig.outerTitle = '合同见证'
this.dialogConfig.minHeight = ''
this.dialogConfig.maxHeight = ''
this.dialogConfig.outerWidth = '80%'
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
// this.$nextTick(() => {
// this.$refs.uploadContractContentRef.getContractDetail()
// })
}) })
.catch(() => {}) .catch(() => {})
} else { } else {
this.workerId = data.workerId
this.queryDetailsId = '' this.queryDetailsId = ''
this.workerId = data.workerId
this.dialogConfig.outerVisible = true
}
this.dialogConfig.outerTitle = '合同见证' this.dialogConfig.outerTitle = '合同见证'
this.dialogConfig.minHeight = '' this.dialogConfig.minHeight = ''
this.dialogConfig.maxHeight = '' this.dialogConfig.maxHeight = ''
this.dialogConfig.outerWidth = '80%' this.dialogConfig.outerWidth = '80%'
this.dialogConfig.outerVisible = true
}
}, },
// //
@ -263,8 +223,8 @@ export default {
.filter((item) => item.sourceType != 6) .filter((item) => item.sourceType != 6)
.map((item) => item.lsUrl) .map((item) => item.lsUrl)
this.dialogConfig.outerTitle = '合同图片详情' this.dialogConfig.outerTitle = '合同图片详情'
this.dialogConfig.minHeight = '' this.dialogConfig.minHeight = '80vh'
this.dialogConfig.maxHeight = '' this.dialogConfig.maxHeight = '80vh'
this.dialogConfig.outerWidth = '' this.dialogConfig.outerWidth = ''
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
}, },
@ -275,11 +235,11 @@ export default {
const res = const res =
await this.$refs.uploadContractContentRef.onHandleConfirmAddOrEditFun() await this.$refs.uploadContractContentRef.onHandleConfirmAddOrEditFun()
if (res !== 'isClose') { if (res !== 'isClose') {
this.$refs.personEntryTableRef.getTableList() this.$refs.contractWitnessTableRef.getTableList()
} }
this.handleCloseDialogOuter() this.handleCloseDialogOuter()
} catch (error) { } catch (error) {
console.log('表单提交失败', error) // console.log('', error)
} }
}, },
@ -292,12 +252,30 @@ export default {
async created() { async created() {
// //
const lotProject = await getLotProjectSelectListCommonFun() const lotProject = await getLotProjectSelectListCommonFun()
const subCom = await getSubSelectListCommonFun()
const team = await getTeamSelectListCommonFun()
formLabel.forEach((item) => { formLabel.forEach((item) => {
if (item.f_model === 'proId') { if (item.f_model === 'proId') {
item.f_selList = lotProject.map((item) => { item.f_selList = lotProject.map((item) => {
return { return {
label: item.proName,
value: item.id, value: item.id,
label: item.proName,
}
})
}
if (item.f_model === 'subId') {
item.f_selList = subCom.map((item) => {
return {
value: item.id,
label: item.subName,
}
})
}
if (item.f_model === 'teamId') {
item.f_selList = team.map((item) => {
return {
value: item.id,
label: item.teamName,
} }
}) })
} }

View File

@ -97,13 +97,12 @@ export default {
const res = await getRedAndGreenCountListAPI(this.queryParams) const res = await getRedAndGreenCountListAPI(this.queryParams)
if (res.code === 200) { if (res.code === 200) {
this.redAndGreenCountList = res.rows
this.total = res.total this.total = res.total
this.redAndGreenCountList = res.rows
} }
}, },
// //
onHandleClickCompany(subComId) { onHandleClickCompany(subComId) {
console.log(subComId)
this.subComId = subComId this.subComId = subComId
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
}, },

View File

@ -71,9 +71,9 @@ export const columnsList = [
] ]
export const dialogConfig = { export const dialogConfig = {
outerVisible: false,
outerTitle: '工资卡见证',
outerWidth: '60%',
minHeight: '', minHeight: '',
maxHeight: '', maxHeight: '',
outerVisible: false,
outerWidth: '70%',
outerTitle: '工资卡见证',
} }

View File

@ -37,10 +37,13 @@
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
v-if="data.isUpload == 1"
@click="onHandleViewWageCardImg(data)" @click="onHandleViewWageCardImg(data)"
> >
查看 查看
</el-button> </el-button>
<span v-else> - </span>
</template> </template>
<template slot="handle" slot-scope="{ data }"> <template slot="handle" slot-scope="{ data }">
@ -49,6 +52,7 @@
size="mini" size="mini"
type="primary" type="primary"
icon="el-icon-upload" icon="el-icon-upload"
v-hasPermi="['worker:wageCard:edit']"
@click="onHandleUploadWageCard(data)" @click="onHandleUploadWageCard(data)"
> >
修改 修改
@ -126,21 +130,12 @@ export default {
einStatus: 1, // einStatus: 1, //
formType: 1, // formType: 1, //
workerId: '', // id workerId: '', // id
slots: {
businessLicense: 'businessLicense',
idCard: 'idCard',
electronicStamp: 'electronicStamp',
electronicSignature: 'electronicSignature',
},
contractImgList: [], // contractImgList: [], //
} }
}, },
methods: { methods: {
// //
onHandleExportWageCard(queryParams) { onHandleExportWageCard(queryParams) {
console.log(queryParams, '导出参数')
this.download( this.download(
'/bmw/workerWageCard/wageCardExport', '/bmw/workerWageCard/wageCardExport',
{ {
@ -152,10 +147,10 @@ export default {
// //
onHandleUploadWageCard(data) { onHandleUploadWageCard(data) {
this.dialogConfig.outerTitle = '工资卡见证'
this.dialogConfig.minHeight = '' this.dialogConfig.minHeight = ''
this.dialogConfig.maxHeight = '' this.dialogConfig.maxHeight = ''
this.dialogConfig.outerWidth = '60%' this.dialogConfig.outerWidth = '70%'
this.dialogConfig.outerTitle = '工资卡见证'
if (data.isUpload == 1) { if (data.isUpload == 1) {
this.$confirm( this.$confirm(
'当前已上传工资卡信息,是否要重新上传,重新上传将会覆盖原数据?', '当前已上传工资卡信息,是否要重新上传,重新上传将会覆盖原数据?',
@ -187,8 +182,8 @@ export default {
.map((item) => item.lsUrl) .map((item) => item.lsUrl)
this.dialogConfig.outerTitle = '工资卡图片详情' this.dialogConfig.outerTitle = '工资卡图片详情'
this.dialogConfig.minHeight = '' this.dialogConfig.minHeight = '90vh'
this.dialogConfig.maxHeight = '' this.dialogConfig.maxHeight = '90vh'
this.dialogConfig.outerWidth = '' this.dialogConfig.outerWidth = ''
this.dialogConfig.outerVisible = true this.dialogConfig.outerVisible = true
}, },
@ -196,8 +191,12 @@ export default {
// //
async onHandleConfirmAddOrEdit() { async onHandleConfirmAddOrEdit() {
try { try {
const res =
await this.$refs.uploadContractContentRef.onHandleConfirmAddOrEditFun() await this.$refs.uploadContractContentRef.onHandleConfirmAddOrEditFun()
if (res !== 'isClose') {
this.$refs.wageCardWitnessTableRef.getTableList() this.$refs.wageCardWitnessTableRef.getTableList()
}
this.handleCloseDialogOuter() this.handleCloseDialogOuter()
} catch (error) { } catch (error) {
// console.log('', error) // console.log('', error)

View File

@ -15,7 +15,7 @@
justifyContent="flex-start" justifyContent="flex-start"
> >
<template> <template>
<span class="tip-text"> (工资册之前必须完善) </span> <span class="tip-text"> (工资册之前必须完善) </span>
</template> </template>
</TitleTip> </TitleTip>
<el-row> <el-row>
@ -52,6 +52,8 @@
<el-form-item label="银行卡号" prop="bankCardCode"> <el-form-item label="银行卡号" prop="bankCardCode">
<el-input <el-input
clearable clearable
maxlength="19"
show-word-limit
placeholder="请输入银行卡号" placeholder="请输入银行卡号"
v-model="salaryCardInfoForm.bankCardCode" v-model="salaryCardInfoForm.bankCardCode"
/> />
@ -61,6 +63,8 @@
<el-form-item label="银行名称" prop="bankName"> <el-form-item label="银行名称" prop="bankName">
<el-input <el-input
clearable clearable
maxlength="50"
show-word-limit
placeholder="请输入银行名称" placeholder="请输入银行名称"
v-model="salaryCardInfoForm.bankName" v-model="salaryCardInfoForm.bankName"
/> />
@ -91,6 +95,8 @@
<el-form-item label="银行支行名称" prop="bankBranchName"> <el-form-item label="银行支行名称" prop="bankBranchName">
<el-input <el-input
clearable clearable
maxlength="50"
show-word-limit
placeholder="请输入银行支行名称" placeholder="请输入银行支行名称"
v-model="salaryCardInfoForm.bankBranchName" v-model="salaryCardInfoForm.bankBranchName"
/> />
@ -238,13 +244,11 @@ export default {
...this.salaryCardInfoForm, ...this.salaryCardInfoForm,
workerId: this.workerId, workerId: this.workerId,
} }
let fileIdList = [] let fileIdList = []
const filesList = [] const filesList = []
const formData = new FormData() const formData = new FormData()
// 2. // 2.
// //
if (status === 'partial') { if (status === 'partial') {
this.$modal.msgError( this.$modal.msgError(