[新增流程]

相关方端查看证件信息列表
hyx_2024-10-9_tongbu
huangyuxuan 2024-10-18 16:35:23 +08:00
parent 44a8f6971d
commit a85f2fde80
4 changed files with 828 additions and 1 deletions

View File

@ -0,0 +1,283 @@
<template>
<div>
<el-dialog
:visible.sync="dialog_visible"
title="人员详情"
width="70%"
>
<div v-loading="listLoading">
<table class="table-ui" style="margin-bottom: 20px;">
<div class="level-title">
<h1>人员信息</h1>
</div>
<tr>
<th>照片</th>
<td>
<span v-if="imgUrl != ''">
<div class="img-flex">
<viewer>
<img :src="imgUrl" width="40" height="40" style="object-fit: cover;">
</viewer>
</div>
</span>
<span v-else/>
</td>
<th>姓名</th>
<td>{{ dataForm.NAME }}</td>
<th>性别</th>
<td>{{ dataForm.SEX === '0' ? '男' : '女' }}</td>
</tr>
<tr>
<th>出生年月</th>
<td>{{ dataForm.DATE_OF_BIRTH }}</td>
<th>年龄</th>
<td>{{ dataForm.AGE }}</td>
<th>手机号</th>
<td>{{ dataForm.PHONE }}</td>
</tr>
<tr>
<th>身份证</th>
<td>{{ dataForm.CARD_ID }}</td>
<th>身份证照片</th>
<!--if条件不可删除-->
<td v-if="userCardIDPhotoFile.length>0" colspan="3">
<span>
<div class="img-flex">
<viewer>
<img
v-for="item in userCardIDPhotoFile"
:src="config.fileUrl + item.FILEPATH"
:key="item.IMGFILES_ID"
width="40"
height="40"
style="object-fit: cover;">
</viewer>
</div>
</span>
</td>
</tr>
<tr>
<th>民族</th>
<td>{{ dataForm.minzuName? dataForm.minzuName:'暂无信息' }}</td>
<th>婚姻状况</th>
<td>{{ dataForm.MARITALSTATUS === '0' ? '未婚' : '已婚' }}</td>
<th>政治面貌</th>
<td>{{ dataForm.zzName }} {{
dataForm.zzName == '中共党员' ? '入党时间' + dataForm.POLITICAL_TIME : ''
}}
</td>
</tr>
<tr>
<th>户口所在地</th>
<td>{{ dataForm.HKLOCAL? dataForm.HKLOCAL:'暂无信息' }}</td>
<th>现住址</th>
<td>{{ dataForm.ADDRESS? dataForm.ADDRESS:'暂无信息' }}</td>
<th>联系电话</th>
<td>{{ dataForm.PHONE }}</td>
</tr>
<tr>
<th>文化程度</th>
<td>{{ dataForm.DEGREE_OF_EDUCATION_NAME }}</td>
<!-- <th>本企业从业开始日期</th>-->
<!-- <td>{{ dataForm.CORP_START_DATE }}</td>-->
<th>岗位名称(工种)</th>
<td colspan="3">{{ dataForm.POST_ID }}</td>
</tr>
<tr>
<th>是否缴纳社保</th>
<td :colspan="dataForm.IS_SOCIAL === '1' ? '':5">{{ formatLabel(dataForm.IS_SOCIAL) }}</td>
<th v-if="dataForm.IS_SOCIAL === '1'"></th>
<td v-if="dataForm.IS_SOCIAL === '1'">{{ dataForm.SOCIAL_NUMBER }}</td>
<th v-if="dataForm.IS_SOCIAL === '1'"></th>
<td v-if="dataForm.IS_SOCIAL === '1'&& socialPhotoFile.length>0" colspan="3">
<span>
<div class="img-flex">
<viewer>
<img
v-for="item in socialPhotoFile"
:src="config.fileUrl + item.FILEPATH"
:key="item.IMGFILES_ID"
width="40"
height="40"
style="object-fit: cover;">
</viewer>
</div>
</span>
</td>
</tr>
<tr>
<th>是否参加三级安全培训</th>
<td >{{ formatLabel(dataForm.IS_LEVEL_THREE) }}</td>
<th v-if="dataForm.IS_LEVEL_THREE == 1"></th>
<td v-if="dataForm.IS_LEVEL_THREE == 1 && photosOfLevel.length>0" colspan="3">
<span>
<div class="img-flex">
<viewer>
<img
v-for="item in photosOfLevel"
:src="config.fileUrl + item.FILEPATH"
:key="item.IMGFILES_ID"
width="40"
height="40"
style="object-fit: cover;">
</viewer>
</div>
</span>
</td>
</tr>
<tr>
<th>是否缴纳保险</th>
<td >{{ formatLabelBf(dataForm.IS_BF) }}</td>
<th>是否特殊工种</th>
<td >{{ formatLabel(dataForm.IS_SPECIAL_JOB) }}</td>
<th>是否流动人员</th>
<td >{{ formatLabel(dataForm.ISFLOW) }}</td>
</tr>
</table>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialog_visible = false"> </el-button>
<el-button type="primary" @click="dialog_visible = false"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
export default {
name: 'UserBaseInfoView',
props: {
base_info_url: {
type: String,
default: ''
}
},
data() {
return {
config: config,
imgUrl: '',
listLoading: false,
dialog_visible: false,
wenhuachengduList: [],
postList: [],
contractFileList: [], //
insuranceFileList: [], //
userPhotoFile: [], //
userCardIDPhotoFile: [], //
photosOfLevel: [], //
socialPhotoFile: [], //
gongshangbaoxianFile: [], //
dataForm: {
contractFileList: [], //
insuranceFileList: [], //
CARD_ID: '', //
DEPARTMENT_NAME: '', //
CORPINFO_ID: '', // id
HKLOCAL: '', //
AGE: '',
SEX: '',
ADDRESS: '',
PHONE: '',
IS_SOCIAL: '', //
SOCIAL_NUMBER: '', //
IS_LEVEL_THREE: '', //
IS_SPECIAL_JOB: '', //
ISFLOW: '', //
PHOTO: [],
IS_INJURIES_PAY: '',
CORP_START_DATE: '',
IS_BODY_ADAPT: '',
IS_SAFETY_TELL: '',
ISPAY: '',
IS_SIGN_LABOR: '',
DEPARTMENT_ID: '',
POST_ID: '',
PERSON_WORK_TYPE: '', //
USERNAME: '',
NAME: '',
BZ: '',
PERSON_TYPE: '',
PASSWORD: 'Aa@123456789',
DATE_OF_BIRTH: '', //
DEGREE_OF_EDUCATION: '', //
POST: '', //
TYPE_OF_WORK: '', //
ENTRY_DATE: '', //
WORK_DATE: '' //
},
USER_ID: '',
CORPINFO_ID: ''
}
},
methods: {
openWindow(user_id, corpinfo_id) {
console.log('openWindow')
console.log(this.base_info_url)
this.getList(user_id, corpinfo_id)
this.$nextTick(() => {
this.dialog_visible = !this.dialog_visible
})
},
formatLabelBf(value) {
if (value) {
var valList = value.split(',')
var label = []
for (let i = 0; i < valList.length; i++) {
if (valList[i] == 0) {
label.push('无')
break
}
if (valList[i] == 1) {
label.push('商业保险')
}
if (valList[i] == 2) {
label.push('工伤保险')
}
}
return label.join(',')
}
},
//
formatLabel(value) {
if (value == '1') {
return '是'
} else if (value == '0') {
return '否'
} else {
return ''
}
},
//
getList(user_id, corpinfo_id) {
this.listLoading = true
requestFN(
this.base_info_url,
{
USER_ID: user_id,
CORPINFO_ID: corpinfo_id
}
).then((data) => {
this.listLoading = false
this.dataForm = Object.assign(this.dataForm, data.pd)
this.userPhotoFile = data.userPhotoFile
if (this.userPhotoFile.length > 0) {
this.imgUrl = config.fileUrl + this.userPhotoFile[0].FILEPATH
}
this.photosOfLevel = data.photosOfLevel
// this.insuranceFileList = data.insuranceFile
// this.contractFileList = data.contractFile
this.userCardIDPhotoFile = data.userCardIDPhotoFile
this.socialPhotoFile = data.socialPhotoFile
// this.gongshangbaoxianFile = data.gongshangbaoxianFile
}).catch((e) => {
this.listLoading = false
})
}
}
}
</script>

View File

@ -470,7 +470,7 @@ export default {
} }
var hasName = (rule, value, callback) => { var hasName = (rule, value, callback) => {
requestFN( requestFN(
'/user/hasUserName', '/user/goCheck',
{ {
USERNAME: value USERNAME: value

View File

@ -0,0 +1,521 @@
<template>
<div class="icons-container">
<el-container>
<el-main>
<el-form label-width="180px">
<el-row>
<el-col :span="8">
<el-form-item label="用户名" prop="USERNAME">
<el-input v-model="searchForm.USERNAME" placeholder="用户名称"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="姓名" prop="NAME">
<el-input v-model="searchForm.NAME" placeholder="姓名"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="证件状态" prop="CARD_STATUS">
<el-select v-model="searchForm.CARD_STATUS" placeholder="请选择" style="width: 100%">
<el-option label="未过期" value="0" />
<el-option label="即将过期" value="2" />
<el-option label="已过期" value="1" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item>
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table
v-loading="listLoading"
ref="multipleTable"
:data="varList"
:row-key="getRowKey"
:header-cell-style="{
'font-weight': 'bold',
'color': '#000'
}"
tooltip-effect="dark"
border
fit
highlight-current-row
>
<el-table-column
:reserve-selection="true"
type="selection"
width="55"
align="center"/>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="USERNAME" label="用户名" />
<el-table-column prop="NAME" label="姓名" />
<el-table-column prop="BELONG_TO_CORP_NAME" label="相关方名称" />
<el-table-column prop="DEPARTMENT_NAME" label="部门"/>
<el-table-column prop="CLASS_NO" label="人员编号"/>
<el-table-column prop="VALIDITY_PERIOD_END" label="证件到期日"/>
<el-table-column prop="VALIDITY_PERIOD_END" label="证件状态">
<template v-slot="{row}">
<span v-if="getCardStatus(row.VALIDITY_PERIOD_END) == 0" :style="{color: 'green'}"></span>
<span v-if="getCardStatus(row.VALIDITY_PERIOD_END) == 2" :style="{color: 'orange'}"></span>
<span v-if="getCardStatus(row.VALIDITY_PERIOD_END) == 1" :style="{color: 'red'}"></span>
</template>
</el-table-column>
<el-table-column label="操作" align="left" width="200">
<template slot-scope="{row}">
<el-button v-if="row.ACCOUNT_TYPE != 0" type="success" icon="el-icon-view" size="mini" @click="toUserDetail(row)"></el-button>
<el-button v-if="getCardStatus(row.VALIDITY_PERIOD_END) != 0" type="primary" size="mini" @click="toUserDetail(row)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
</el-main>
</el-container>
<div class="heightt"/>
<!-- <div class="subdy-foot">-->
<!-- <el-row style="text-align: center">-->
<!-- <el-button @click="goBack"></el-button>-->
<!-- </el-row>-->
<!-- </div>-->
<UserBaseInfoView ref="userbaseinfoview" :base_info_url="baseInfourl"/>
</div>
</template>
<script>
import SelectTree from '@/components/SelectTree'
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import UserBaseInfoView from '@/components/UserBaseInfo/UserBaseInfoView'
export default {
components: { Pagination, SelectTree, UserBaseInfoView },
directives: { waves },
data() {
return {
userId: this.$parent.USER_ID_T,
baseInfourl: '/api/user/getUserDetailInfoByUserId',
treeLoading: false,
listLoading: false,
add: true,
del: true,
edit: true,
readonly: true,
listQuery: {
page: 1,
limit: 20
},
searchForm: {
CARD_STATUS:'',
DEPARTMENT_ID: '',
USERNAME: '',
NAME: '',
DEPTNAME: '',
AUDIT_STATE: '',
ISFLOW: '',
DEPART_STATE: '',
AGE: '',
IS_SIGN_LABOR: '',
IS_INJURIES_PAY: '',
ISPAY: '',
IS_LEVEL_THREE: '',
IS_SAFETY_TELL: '',
IS_SPECIAL_JOB: ''
},
userForm: {
PARENT_ID: '',
USER_ID: '',
DEPARTMENT_ID: '',
DEPTNAME: '',
USERNAME: '',
NAME: ''
},
DEPARTMENT_ID: '',
total: 0,
PARENT_ID: '0', // ID
varList: [],
qyztList: [],
options: [{
value: '0',
label: '启用'
}, {
value: '1',
label: '禁用'
}],
STATE: [],
industryList: [],
countryList: [],
villageList: [],
treeData: [],
CITY_CODE: '',
COUNTRY: '',
VILLAGE: '',
config: config,
dialogFormEdit: false,
rules: {
DEPTNAME: [{ required: true, message: '分公司名称不能为空', trigger: 'blur' }],
USERNAME: [{ required: true, message: '用户名不能为空', trigger: 'blur' }],
NAME: [{ required: true, message: '姓名不能为空', trigger: 'blur' }]
},
defaultProps: {
value: 'id',
children: 'nodes',
label: 'name'
},
workTypeList: [] //
}
},
created() {
this.getList()
},
methods: {
getCardStatus(VALIDITY_PERIOD_END){
const nowDate = new Date()
const nextDate = new Date((new Date).getFullYear() + '-' + ((new Date).getMonth() + 3) + '-' + (new Date).getDate())
console.log('当前时间 ==>'+nowDate)
console.log('两个月后的时间 ==>'+nextDate)
console.log('证件到期日 ==>'+new Date(VALIDITY_PERIOD_END))
if (nowDate > new Date(VALIDITY_PERIOD_END)){
return 1
}else if (new Date(VALIDITY_PERIOD_END) > nowDate && new Date(VALIDITY_PERIOD_END) < nextDate){
return 2
}else {
return 0
}
},
filterNode(value, data) {
if (!value) return true
return data.name.indexOf(value) !== -1
},
handleNodeClick(node, data, value) {
this.searchForm.DEPARTMENT_ID = node.id
this.getList(node.id)
},
//
getDict() {
requestFN(
'dictionaries/getLevels',
{ DICTIONARIES_ID: '55484e491a5e442d839c4595380713ec' }
).then((data) => {
this.workTypeList = data.list
}).catch((e) => {
this.listLoading = false
})
},
//
getList() {
this.listLoading = true
requestFN(
'/trainusers/cardOverdueList?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
NAME: this.searchForm.NAME,
USERNAME: this.searchForm.USERNAME,
CARD_STATUS: this.searchForm.CARD_STATUS
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
}).catch((e) => {
this.listLoading = false
})
},
getRowKey(row) {
return row.USER_ID
},
goReturn() {
this.$parent.activeName = 'CorpInfoList'
},
//
getQuery() {
this.getList()
},
getTreeList() {
this.treeLoading = true
requestFN(
'/xgf/department/listzTree',
{
CORPINFO_ID: this.$parent.CORPINFO_ID
}
).then((data) => {
this.treeLoading = false
this.treeData = JSON.parse(data.zTreeNodes)
}).catch((e) => {
this.treeLoading = false
})
},
getCountryList() {
requestFN(
'/dictionaries/getLevels',
{
DICTIONARIES_ID: this.CITY_CODE
}
).then((data) => {
this.countryList = data.list
}).catch((e) => {
})
},
getVillageList(value, id) {
this.COUNTRY = value
requestFN(
'/dictionaries/getLevels',
{
DICTIONARIES_ID: id
}
).then((data) => {
this.villageList = data.list
}).catch((e) => {
})
},
changeVillage(village) {
this.VILLAGE = village
},
//
toUserDetail(ROW) {
this.$refs.userbaseinfoview.openWindow(ROW.USER_ID, ROW.CORPINFO_ID)
},
userEdit() {
this.$refs.form.validate(valid => {
if (valid) {
this.listLoading = true
requestFN(
'/user/editCorpUser',
{
...this.userForm
}
).then((data) => {
this.$message.success('修改成功')
this.dialogFormEdit = false
this.getList()
}).catch((e) => { this.listLoading = false })
} else {
return false
}
})
},
handleDelete(id, name) {
this.$confirm('确定要删除[' + name + ']吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN(
'/user/deleteCorpUser',
{
USER_ID: id
}
).then((data) => {
if (data.result == 'success') {
this.listLoading = false
this.getList()
}
}).catch((e) => {
this.listLoading = false
})
}).catch(() => {
})
},
goBack() {
this.$parent.activeName = 'CardOverdueList'
},
enableORDisable(ISUSE, CORPINFO_ID) {
this.$confirm(ISUSE === '0' ? '确定要启用该账户吗?' : '确定要禁用该账户吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN(
'/corpinfo/editisuse',
{
CORPINFO_ID,
ISUSE
}
).then(() => {
this.$message({
message: ISUSE === '0' ? '启用成功' : '禁用成功',
type: 'success'
})
this.listLoading = false
this.varList = []
this.listQuery.page = 1
this.getList()
}).catch((e) => {
this.listLoading = false
})
}).catch(() => {})
},
//
hasButton: function() {
var keys = 'corpinfo:add,corpinfo:del,corpinfo:edit,toExcel'
requestFN(
'/head/hasButton',
{
keys: keys
}
).then((data) => {
this.add = data.corpinfofhadminadd //
this.del = data.corpinfofhadmindel //
this.edit = data.corpinfofhadminedit //
}).catch((e) => {
this.listLoading = false
})
},
goKeyReset() {
this.searchForm = {
DEPARTMENT_ID: '',
USERNAME: '',
NAME: '',
DEPTNAME: '',
AUDIT_STATE: '',
ISFLOW: '',
DEPART_STATE: '',
AGE: '',
IS_SIGN_LABOR: '',
IS_INJURIES_PAY: '',
ISPAY: '',
IS_LEVEL_THREE: '',
IS_SAFETY_TELL: '',
IS_SPECIAL_JOB: ''
}
this.getList()
},
resetPwd(id) {
this.$confirm('确定要重置选中的密码吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN(
'/corpinfo/resetPwd',
{
CORPINFO_ID: id
}
).then(() => {
this.$message({
message: '重置成功',
type: 'success'
})
this.listLoading = false
this.varList = []
this.listQuery.page = 1
this.getList()
}).catch((e) => {
this.listLoading = false
})
}).catch(() => {
})
},
//
getDicList(list, DICTIONARIES_ID) {
requestFN(
'/dictionaries/getLevels',
{
DICTIONARIES_ID
}
).then((data) => {
this[list] = data.list
}).catch((e) => {
})
},
translate(list, id) {
for (let i = 0; i < list.length; i++) {
if (list[i].BIANMA === id || list[i].DICTIONARIES_ID === id) {
return list[i].NAME
}
}
},
showBranchName(CORPINFO_ID, CORP_NAME) {
this.$refs.form && this.$refs.form.resetFields()
this.dialogFormEdit = true
this.updateBranchNameForm.CORPINFO_ID = CORPINFO_ID
this.updateBranchNameForm.CORP_NAME = CORP_NAME
},
updateBranchName(ID) {
requestFN(
'/department/listTreeCorpInfo',
{
CORPINFO_ID: ID
}
).then((data) => {
this.treeData = JSON.parse(data.zTreeNodes)
}).catch((e) => {
})
},
//
formatLabel(row, type) {
if (type === '0') {
const special = row.IS_SPECIAL_JOB
if (special === '1') {
return '特殊工种'
} else if (special === '0') {
return '非特殊工种'
} else {
return special
}
} else if (type === '1') {
const flow = row.ISFLOW
if (flow === '1') {
return '流动人员'
} else if (flow === '0') {
return '非流动人员'
} else {
return flow
}
} else if (type === '2') {
const depart = row.DEPART_STATE
if (depart === '1') {
return '离职'
} else if (depart === '0') {
return '在职'
} else {
return depart
}
} else if (type === '3') {
const audit = row.AUDIT_STATE
if (audit === '0') {
return '已打回'
} else if (audit === '1') {
return '待审核'
} else if (audit === '2') {
return '审核通过'
} else {
return audit
}
} else if (type === '5') {
const train_status = row.STATUS
if (train_status == 0) {
return '未培训'
} else if (train_status === 1) {
return '培训中'
} else if (train_status === 2) {
return '培训通过'
} else if (train_status === -1) {
return '培训未通过'
} else {
return '未培训'
}
} else {
return ''
}
}
}
}
</script>

View File

@ -0,0 +1,23 @@
<template>
<component :is="activeName" />
</template>
<script>
import CorpUserList from './components/corpUserList'
export default {
components: {
CorpUserList: CorpUserList,
},
data() {
return {
activeName: 'CorpUserList',
CORPINFO_ID: '',
USER_ID: '',
USER_ID_T: ''
}
}
}
</script>
<style scoped>
</style>