增加待办事项和入场文件
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 {
|
} else {
|
||||||
this.$set(this.queryParams, e.f_model, '')
|
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) {
|
if (this.sendParams !== null) {
|
||||||
for (let key in this.sendParams) {
|
for (let key in this.sendParams) {
|
||||||
|
|
@ -453,7 +468,14 @@ export default {
|
||||||
},
|
},
|
||||||
/** 查询按钮 */
|
/** 查询按钮 */
|
||||||
handleQuery() {
|
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">
|
<div class="right-menu">
|
||||||
<template v-if="device !== 'mobile'">
|
<template v-if="device !== 'mobile'">
|
||||||
|
<message id="message" class="right-menu-item" />
|
||||||
<search id="header-search" class="right-menu-item" />
|
<search id="header-search" class="right-menu-item" />
|
||||||
|
|
||||||
<screenfull
|
<screenfull
|
||||||
id="screenfull"
|
id="screenfull"
|
||||||
class="right-menu-item hover-effect"
|
class="right-menu-item hover-effect"
|
||||||
|
|
@ -69,7 +69,7 @@ import SizeSelect from '@/components/SizeSelect'
|
||||||
import Search from '@/components/HeaderSearch'
|
import Search from '@/components/HeaderSearch'
|
||||||
import bonusGit from '@/components/bonus/Git'
|
import bonusGit from '@/components/bonus/Git'
|
||||||
import bonusDoc from '@/components/bonus/Doc'
|
import bonusDoc from '@/components/bonus/Doc'
|
||||||
|
import Message from '@/components/Message'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
Breadcrumb,
|
Breadcrumb,
|
||||||
|
|
@ -80,6 +80,7 @@ export default {
|
||||||
Search,
|
Search,
|
||||||
bonusGit,
|
bonusGit,
|
||||||
bonusDoc,
|
bonusDoc,
|
||||||
|
Message,
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['sidebar', 'avatar', 'device']),
|
...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