增加待办事项和入场文件
This commit is contained in:
parent
3a18a1a788
commit
b8b59ee576
|
|
@ -0,0 +1,10 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
// 获取人员入场附件接口
|
||||
export const getEntryFileAPI = (data) => {
|
||||
return request({
|
||||
url: '/bmw/worker/getWorkerFileMsg',
|
||||
method: 'GET',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
// 待办事项 获取待办事项列表接口
|
||||
export const getTodoListAPI = (data) => {
|
||||
return request({
|
||||
url: '/bmw/todo/list',
|
||||
method: 'get',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1767782310782" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4964" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M888.37 698.15c-33.83-36.33-97.11-91.01-97.11-270.13 0.08-132.57-93.96-246.54-224.13-271.64V119.9c0-30.95-25.09-56.03-56.03-56.03s-56.03 25.09-56.03 56.03v36.48c-130.17 25.1-224.21 139.07-224.13 271.64 0 179.1-63.29 233.77-97.11 270.13a54.742 54.742 0 0 0-14.72 38.1c0 30.95 25.09 56.03 56.03 56.03H847.24c30.95 0.16 56.16-24.79 56.33-55.74v-0.3a54.68 54.68 0 0 0-15.07-38.01l-0.13-0.08z m-651.03 10c37.16-48.95 77.77-130.14 77.97-279.1v-1c0-108.31 87.8-196.11 196.11-196.11s196.11 87.8 196.11 196.11v1c0.21 148.99 40.82 230.03 77.97 279.1H237.34z m274 252.24c61.89 0 112.06-50.17 112.06-112.06H399.27c0 61.88 50.17 112.06 112.07 112.06z" p-id="4965" fill="#5a5e66"></path></svg>
|
||||
|
After Width: | Height: | Size: 1012 B |
|
|
@ -0,0 +1,30 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-badge :value="1" class="item">
|
||||
<svg-icon
|
||||
class-name="size-icon"
|
||||
icon-class="message_1"
|
||||
@click="handleClick"
|
||||
style="font-size: 22px; cursor: pointer"
|
||||
/>
|
||||
</el-badge>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {},
|
||||
|
||||
methods: {
|
||||
handleClick() {
|
||||
this.$router.push('/construction-person/to-do')
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
::v-deep .el-badge__content.is-fixed {
|
||||
top: 10px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -396,6 +396,21 @@ export default {
|
|||
} else {
|
||||
this.$set(this.queryParams, e.f_model, '')
|
||||
}
|
||||
|
||||
// 根据配置生成必填校验规则(仅对设置了 required 的项生效)
|
||||
if (e.required) {
|
||||
const field = e.f_model
|
||||
const message =
|
||||
e.requiredMessage || `请选择${e.f_label || ''}`.trim()
|
||||
// 针对选择类、输入类统一用 change 触发
|
||||
this.$set(this.formRules, field, [
|
||||
{
|
||||
required: true,
|
||||
message,
|
||||
trigger: 'change',
|
||||
},
|
||||
])
|
||||
}
|
||||
})
|
||||
if (this.sendParams !== null) {
|
||||
for (let key in this.sendParams) {
|
||||
|
|
@ -453,7 +468,14 @@ export default {
|
|||
},
|
||||
/** 查询按钮 */
|
||||
handleQuery() {
|
||||
this.getTableList()
|
||||
if (this.$refs.queryFormRef) {
|
||||
this.$refs.queryFormRef.validate((valid) => {
|
||||
if (!valid) return
|
||||
this.getTableList()
|
||||
})
|
||||
} else {
|
||||
this.getTableList()
|
||||
}
|
||||
},
|
||||
|
||||
// 根据传递的参数进行查询
|
||||
|
|
|
|||
|
|
@ -20,8 +20,8 @@
|
|||
|
||||
<div class="right-menu">
|
||||
<template v-if="device !== 'mobile'">
|
||||
<message id="message" class="right-menu-item" />
|
||||
<search id="header-search" class="right-menu-item" />
|
||||
|
||||
<screenfull
|
||||
id="screenfull"
|
||||
class="right-menu-item hover-effect"
|
||||
|
|
@ -69,7 +69,7 @@ import SizeSelect from '@/components/SizeSelect'
|
|||
import Search from '@/components/HeaderSearch'
|
||||
import bonusGit from '@/components/bonus/Git'
|
||||
import bonusDoc from '@/components/bonus/Doc'
|
||||
|
||||
import Message from '@/components/Message'
|
||||
export default {
|
||||
components: {
|
||||
Breadcrumb,
|
||||
|
|
@ -80,6 +80,7 @@ export default {
|
|||
Search,
|
||||
bonusGit,
|
||||
bonusDoc,
|
||||
Message,
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['sidebar', 'avatar', 'device']),
|
||||
|
|
|
|||
|
|
@ -0,0 +1,58 @@
|
|||
export const formLabel = [
|
||||
{
|
||||
f_label: '工程',
|
||||
f_model: 'proId',
|
||||
f_type: 'sel',
|
||||
f_width: '180px',
|
||||
isShow: false, // 是否展示label
|
||||
f_selList: [], // 工程列表
|
||||
// 是否必选,用于 TableModel 做表单校验
|
||||
required: true,
|
||||
requiredMessage: '请选择工程',
|
||||
},
|
||||
{
|
||||
f_label: '分包名称',
|
||||
f_model: 'subName',
|
||||
f_type: 'ipt',
|
||||
f_width: '180px',
|
||||
isShow: false, // 是否展示label
|
||||
},
|
||||
{
|
||||
f_label: '班组名称',
|
||||
f_model: 'teamName',
|
||||
f_type: 'ipt',
|
||||
f_width: '180px',
|
||||
isShow: false, // 是否展示label
|
||||
},
|
||||
{
|
||||
f_label: '人员姓名',
|
||||
f_model: 'workerName',
|
||||
f_type: 'ipt',
|
||||
f_width: '180px',
|
||||
isShow: false, // 是否展示label
|
||||
},
|
||||
]
|
||||
|
||||
export const columnsList = [
|
||||
{ t_props: 'name', t_label: '人员名称' },
|
||||
{ t_props: 'postName', t_label: '工种' },
|
||||
{ t_props: 'subName', t_label: '所属分包' },
|
||||
{ t_props: 'teamName', t_label: '所属班组' },
|
||||
{
|
||||
t_label: '人脸图片',
|
||||
t_slot: 'faceFile',
|
||||
},
|
||||
{ t_label: '合同', t_slot: 'contractFile' },
|
||||
{
|
||||
t_label: '工资卡',
|
||||
t_slot: 'wageFile',
|
||||
},
|
||||
]
|
||||
|
||||
export const dialogConfig = {
|
||||
outerTitle: '人员入场附件详情',
|
||||
minHeight: '90vh',
|
||||
maxHeight: '90vh',
|
||||
outerWidth: '90%',
|
||||
outerVisible: false,
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,158 @@
|
|||
<template>
|
||||
<!-- 人员管理 ---- 人员入场 ---- 入场附件 -->
|
||||
<div class="app-container">
|
||||
<TableModel
|
||||
:formLabel="formLabel"
|
||||
:showOperation="true"
|
||||
:showRightTools="true"
|
||||
ref="subBaseInfoTableRef"
|
||||
:sendParams="sendParams"
|
||||
:columnsList="columnsList"
|
||||
:request-api="getEntryFileAPI"
|
||||
>
|
||||
<template slot="legalPersonPhone" slot-scope="{ data }">
|
||||
{{ desensitizePhone(data.legalPersonPhone) }}
|
||||
</template>
|
||||
|
||||
<!-- 营业执照身份证等信息是否上传-->
|
||||
<template
|
||||
:slot="item.name"
|
||||
slot-scope="{ data }"
|
||||
v-for="item in slots"
|
||||
>
|
||||
<span
|
||||
:key="item.name"
|
||||
:style="{
|
||||
color: data[item.name] == 1 ? '#67C23A' : '#F56C6C',
|
||||
}"
|
||||
>
|
||||
{{ data[item.name] == 1 ? '已上传' : '未上传' }}
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<template slot="handle" slot-scope="{ data }">
|
||||
<el-button
|
||||
plain
|
||||
size="mini"
|
||||
type="primary"
|
||||
icon="el-icon-edit"
|
||||
v-hasPermi="['sub:base:edit']"
|
||||
@click="onHandleViewEntryFile(data)"
|
||||
>
|
||||
详情
|
||||
</el-button>
|
||||
</template>
|
||||
</TableModel>
|
||||
|
||||
<DialogModel
|
||||
:dialogConfig="dialogConfig"
|
||||
@closeDialogOuter="handleCloseDialogOuter"
|
||||
>
|
||||
<template slot="outerContent">
|
||||
<DetailsForm
|
||||
:proId="proId"
|
||||
ref="detailsFormRef"
|
||||
:queryDetailsId="queryDetailsId"
|
||||
/>
|
||||
<el-row class="dialog-footer-btn">
|
||||
<el-button size="medium" @click="handleCloseDialogOuter">
|
||||
取消
|
||||
</el-button>
|
||||
<el-button
|
||||
size="medium"
|
||||
type="primary"
|
||||
@click="onHandleConfirmAddOrEdit"
|
||||
>
|
||||
确定
|
||||
</el-button>
|
||||
</el-row>
|
||||
</template>
|
||||
</DialogModel>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import TableModel from '@/components/TableModel'
|
||||
import DialogModel from '@/components/DialogModel'
|
||||
import DetailsForm from './detailsForm.vue'
|
||||
import { getEntryFileAPI } from '@/api/construction-person/entry-and-exit-manage/entry-file'
|
||||
import { formLabel, columnsList, dialogConfig } from './config'
|
||||
import { getLotProjectSelectListCommonFun } from '@/utils/getCommonData'
|
||||
|
||||
export default {
|
||||
name: 'EntryFile',
|
||||
components: {
|
||||
TableModel,
|
||||
DialogModel,
|
||||
DetailsForm,
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
formLabel,
|
||||
columnsList,
|
||||
dialogConfig,
|
||||
getEntryFileAPI,
|
||||
queryDetailsId: '',
|
||||
proId: '',
|
||||
sendParams: {
|
||||
proId: '',
|
||||
}, // 发送参数
|
||||
|
||||
// 营业执照身份证等信息是否上传的插槽
|
||||
slots: [
|
||||
{
|
||||
name: 'faceFile',
|
||||
},
|
||||
{
|
||||
name: 'contractFile',
|
||||
},
|
||||
{
|
||||
name: 'wageFile',
|
||||
},
|
||||
],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 确定按钮
|
||||
async onHandleConfirmAddOrEdit() {
|
||||
this.handleCloseDialogOuter()
|
||||
},
|
||||
|
||||
// 关闭弹框
|
||||
handleCloseDialogOuter() {
|
||||
this.dialogConfig.outerVisible = false
|
||||
},
|
||||
|
||||
// 查看详情
|
||||
onHandleViewEntryFile(data) {
|
||||
this.queryDetailsId = data.id
|
||||
this.proId = data.proId
|
||||
this.dialogConfig.outerVisible = true
|
||||
},
|
||||
},
|
||||
|
||||
async created() {
|
||||
const lotProjectList = await getLotProjectSelectListCommonFun()
|
||||
|
||||
this.formLabel[0].f_selList = lotProjectList.map((item) => {
|
||||
return {
|
||||
label: item.proName,
|
||||
value: item.id,
|
||||
}
|
||||
})
|
||||
|
||||
if (lotProjectList && lotProjectList.length > 0) {
|
||||
// 默认查询第一个工程
|
||||
this.sendParams.proId = lotProjectList[0].id
|
||||
|
||||
// 等待子表格组件挂载完成后,主动触发一次列表查询
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.subBaseInfoTableRef) {
|
||||
this.$refs.subBaseInfoTableRef.getTableList()
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
export const formLabel = [
|
||||
{
|
||||
f_label: '分包名称',
|
||||
f_model: 'subName',
|
||||
f_type: 'ipt',
|
||||
f_width: '180px',
|
||||
isShow: false, // 是否展示label
|
||||
},
|
||||
]
|
||||
|
||||
export const columnsList = [
|
||||
{ t_props: 'proName', t_label: '工程' },
|
||||
{ t_props: 'content', t_label: '信息内容' },
|
||||
{ t_props: 'updateUser', t_label: '提交人' },
|
||||
{ t_props: 'createTime', t_label: '提交时间' },
|
||||
]
|
||||
|
||||
export const dialogConfig = {
|
||||
outerTitle: '人员入场附件详情',
|
||||
minHeight: '90vh',
|
||||
maxHeight: '90vh',
|
||||
outerWidth: '90%',
|
||||
outerVisible: false,
|
||||
}
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
<template>
|
||||
<!-- 施工人员 ---- 待办事项 -->
|
||||
<div class="app-container">
|
||||
<div style="margin-bottom: 10px">
|
||||
<el-radio-group
|
||||
size="medium"
|
||||
v-model="sendParams.type"
|
||||
@change="handleChangeType"
|
||||
>
|
||||
<el-radio-button label="1"> 考勤 </el-radio-button>
|
||||
<el-radio-button label="2"> 合同 </el-radio-button>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<TableModel
|
||||
:formLabel="formLabel"
|
||||
:showOperation="sendParams.type == 1"
|
||||
:showRightTools="true"
|
||||
ref="todoTableRef"
|
||||
:sendParams="sendParams"
|
||||
:columnsList="columnsList"
|
||||
:request-api="getTodoListAPI"
|
||||
>
|
||||
<template slot="handle">
|
||||
<el-button
|
||||
plain
|
||||
size="mini"
|
||||
type="primary"
|
||||
icon="el-icon-edit"
|
||||
v-hasPermi="['sub:base:edit']"
|
||||
@click="onHandleHandleTodo()"
|
||||
>
|
||||
处理
|
||||
</el-button>
|
||||
</template>
|
||||
</TableModel>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import TableModel from '@/components/TableModel'
|
||||
import DialogModel from '@/components/DialogModel'
|
||||
import { getTodoListAPI } from '@/api/construction-person/todo'
|
||||
import { formLabel, columnsList, dialogConfig } from './config'
|
||||
|
||||
export default {
|
||||
name: 'ToDo',
|
||||
components: {
|
||||
TableModel,
|
||||
DialogModel,
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
formLabel,
|
||||
columnsList,
|
||||
dialogConfig,
|
||||
getTodoListAPI,
|
||||
sendParams: {
|
||||
type: '1',
|
||||
}, // 发送参数
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 确定按钮
|
||||
async onHandleConfirmAddOrEdit() {
|
||||
this.handleCloseDialogOuter()
|
||||
},
|
||||
|
||||
// 处理
|
||||
onHandleHandleTodo() {
|
||||
this.$router.push(
|
||||
'/construction-person/attendance-manage/card-replacement-audit',
|
||||
)
|
||||
},
|
||||
|
||||
// 切换类型
|
||||
handleChangeType() {
|
||||
this.$refs.todoTableRef.getTableList()
|
||||
},
|
||||
},
|
||||
|
||||
async created() {},
|
||||
}
|
||||
</script>
|
||||
Loading…
Reference in New Issue