Merge branch 'refs/heads/dev' into mengfanliang-0726-businessPerson_table

# Conflicts:
#	src/main.js
#	static/config.js
mengfanliang-0726-businessPerson_table
huangyuxuan 2024-11-07 15:51:47 +08:00
commit 2c06d3ceac
48 changed files with 8469 additions and 9663 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

@ -290,7 +290,7 @@ export default {
}
}
}
this.imgUrl = config.httpurl + data.userPhoto
this.imgUrl = config.fileUrl + data.userPhoto
})
.catch((e) => {
MessageBox.alert('登录失效,请重新登录', {
@ -444,11 +444,11 @@ export default {
formData.append('FFILE', this.FFILE)
upload(
'/photo/saveNew',
'/photo/save',
formData
).then((data) => {
this.dialogForm = false
this.imgUrl = config.httpurl + data.userPhoto
this.imgUrl = config.fileUrl + data.userPhoto
loading.close()
}).catch((e) => {
loading.close()

View File

@ -64,6 +64,18 @@ Vue.use(Element, {
import vueEsign from 'vue-esign'
Vue.use(vueEsign)
// 树数据结构去除空子级
Vue.prototype.removeEmptyChildren = function(data) {
for (let i = 0; i < data.length; i++) {
if (data[i].nodes && data[i].nodes.length > 0) {
this.removeEmptyChildren(data[i].nodes)
} else {
delete data[i].nodes
}
}
return data
}
/* eslint-disable no-new */
new Vue({
el: '#app',
@ -72,3 +84,30 @@ new Vue({
components: { App },
template: '<App/>'
})
/**
* json格式转树状结构
* @param {json} json数据
* @param {String} id的字符串
* @param {String} 父id的字符串
* @param {String} children的字符串
* @return {Array} 数组
*/
Vue.prototype.listTransTree = function(json, idStr, pidStr, chindrenStr) {
// eslint-disable-next-line one-var
var r = [], hash = {}, id = idStr, pid = pidStr, children = chindrenStr, i = 0, j = 0, len = json.length
for (; i < len; i++) {
hash[json[i][id]] = json[i]
}
for (; j < len; j++) {
// eslint-disable-next-line one-var
var aVal = json[j], hashVP = hash[aVal[pid]]
if (hashVP) {
!hashVP[children] && (hashVP[children] = [])
hashVP[children].push(aVal)
} else {
r.push(aVal)
}
}
return r
}

View File

@ -0,0 +1,174 @@
<template>
<div class="app-container">
<el-form :model="ruleForm" :rules="rules" label-width="130px">
<el-row>
<el-col :span="6">
<el-form-item label="人员名称" prop="name" class="input-width">
<el-input v-model="ruleForm.name" placeholder="请输入人员名称"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="身份证号" prop="cardId">
<el-input v-model="ruleForm.cardId" placeholder="请输入身份证号"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label-width="10px">
<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
ref="multipleTable"
:data="varList"
:header-cell-style="{'font-weight': 'bold','color': '#000'}"
tooltip-effect="dark"
border
fit
highlight-current-row>
<el-table-column :selectable="handleSelectWithDifferentStatus" type="selection" width="55" align="center"/>
<el-table-column type="index" label="序号" width="50" align="center"/>
<el-table-column prop="username" label="用户名" align="center"/>
<el-table-column prop="cardId" label="身份证号" align="center"/>
<el-table-column prop="name" label="人员名称" align="center"/>
<el-table-column prop="corpName" label="企业名称" align="center"/>
<el-table-column label="操作" align="center" width="250">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-s-claim" size="mini" @click="doCheckIn([row])"></el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div/>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList"/>
</div>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
export default {
components: { Pagination },
directives: { waves },
data() {
return {
rules: {
name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
cardId: [{ required: true, message: '身份证号不能为空', trigger: 'blur' }]
},
ruleForm: { name: '', cardId: '' },
config: config,
listQuery: {
page: 1,
limit: 10
},
total: 0,
varList: [],
add: false, //
del: false, //
edit: false //
}
},
created() {
// this.getDict()
// this.getList()
},
methods: {
handleSelectWithDifferentStatus(row, rowIndex) {
return true
},
getQuery() {
if (this.ruleForm.name === '') {
this.$message.error('请填写人员名称')
return false
}
if (this.ruleForm.cardId === '') {
this.$message.error('请填写身份证号')
return false
}
if (this.$refs.multipleTable) {
this.$refs.multipleTable.clearSelection()
}
this.listQuery = {
page: 1,
limit: 10
}
this.getList()
},
goKeyReset() {
this.ruleForm.cardId = ''
this.ruleForm.name = ''
this.varList = []
// this.getQuery()
},
getList() {
this.listLoading = true
requestFN(
'/coerce/getUserListByIdCardAndName?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
cardId: this.ruleForm.cardId,
name: this.ruleForm.name,
UN_EMPLOY_FLAG: '0'
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
if (this.varList.length === 0) {
this.$message.error('没有相关人员信息')
}
this.total = data.page.totalResult
})
.catch((e) => {
this.listLoading = false
})
},
doCheckIn(row) {
this.$confirm('确定要将 ' + row[0].name + ' 拉入企业吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN(
'/coerce/doCoerceCheckIn',
{
userId: row[0].userId,
corpinfoId: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID
}
).then((e) => {
console.log(e)
if (e.msg === '1') {
this.$message({
message: '当前人员已经在企业中',
type: 'warning'
})
} else {
this.$message({
message: '拉入成功',
type: 'success'
})
this.getQuery()
}
this.listLoading = false
}).catch((e) => {
this.listLoading = false
})
}).catch(() => {})
}
}
}
</script>

View File

@ -0,0 +1,21 @@
<template>
<component :is="activeName" />
</template>
<script>
import List from './components/list'
export default {
components: {
List: List
},
data() {
return {
activeName: 'List',
SUPERVISE_CORPINFO_ID: ''
}
}
}
</script>
<style scoped>
</style>

View File

@ -39,7 +39,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="用户名" prop="USERNAME" class="input-width">
<el-input v-model="form.USERNAME" :disabled="dialogType == 'editUser'" placeholder="这里输入用户名..." />
<el-input v-model="form.USERNAME" :disabled="dialogType == 'editUser'" placeholder="这里输入用户名..." @blur="goCheck()" />
</el-form-item>
</el-col>
</el-row>
@ -69,7 +69,7 @@
<el-row>
<el-col :span="12">
<el-form-item label="身份证号" prop="CARD_ID" class="input-width">
<el-input v-model="form.CARD_ID" placeholder="这里输入身份证号..."/>
<el-input v-model="form.CARD_ID" placeholder="这里输入身份证号..." @blur="goCheck()"/>
</el-form-item>
</el-col>
<el-col :span="12">
@ -88,10 +88,17 @@
list-type="picture-card">
<i class="el-icon-plus" />
</el-upload>
<div style="font-size: 10px; color: red">温馨提示用户要上传身份证正反面身份证照片数量是2张, 才能进行人员培训</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="电子邮箱" prop="EMAIL" class="input-width">
<el-input v-model="form.EMAIL" placeholder="这里输入电子邮箱..."/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="民族" prop="NATIONALITY">
@ -183,7 +190,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col v-if="form.POLITICAL_STATUS=='zhonggongdangyuan'" :span="12">
<el-col v-show="form.POLITICAL_STATUS === 'zhonggongdangyuan'" :span="12">
<el-form-item label="入党时间" prop="POLITICAL_TIME">
<el-date-picker
v-model="form.POLITICAL_TIME"
@ -234,74 +241,165 @@
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="岗位名称(工种)" prop="POST_ID" class="input-width">
<el-input v-model="form.POST_ID" placeholder="这里输入岗位名称(工种)..."/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否参加三级安全培训" prop="IS_LEVEL_THREE" >
<el-radio-group v-model="form.IS_LEVEL_THREE">
<el-radio v-model="form.IS_LEVEL_THREE" label="1"></el-radio>
<el-radio v-model="form.IS_LEVEL_THREE" label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.IS_LEVEL_THREE === '1'" label="三级安全培训照片" prop="photosOfLevel" >
<el-upload
ref="photosOfLevel"
:file-list="form.photosOfLevel"
:multiple="false"
:limit="5"
:class="{hide:photosOfLevel}"
:auto-upload="false"
:on-remove="handleLevelPhotoRemove"
:on-change="handleLevelPhotoChangeIMG"
action="#"
accept=".jpg,.jpeg,.png"
list-type="picture-card">
<i class="el-icon-plus" />
</el-upload>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否特殊工种" prop="IS_SPECIAL_JOB">
<el-radio-group v-model="form.IS_SPECIAL_JOB" disabled>
<el-radio v-model="form.IS_SPECIAL_JOB" label="1"></el-radio>
<el-radio v-model="form.IS_SPECIAL_JOB" label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-alert
:closable="false"
title="新增完成后请提示该用户去相关方app端完善特种证书信息"
type="error"
class="alertClass"
/>
</el-col>
<el-col :span="12">
<el-form-item label="是否流动人员" prop="ISFLOW" style="float:left">
<el-radio-group v-model="form.ISFLOW">
<el-radio v-model="form.ISFLOW" label="1"></el-radio>
<el-radio v-model="form.ISFLOW" label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="是否签订劳动合同" prop="IS_SIGN_LABOR">
<el-radio-group v-model="form.IS_SIGN_LABOR" @change="form.contractFileList = []">
<el-radio v-model="form.IS_SIGN_LABOR" label="1"></el-radio>
<el-radio v-model="form.IS_SIGN_LABOR" label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.IS_SIGN_LABOR === '1'" label="合同图片" prop="contractFileList">
<el-upload
ref="contractFileList"
:file-list="form.contractFileList"
:limit="4"
:class="{hide:hideContractUpload}"
:auto-upload="false"
:on-remove="handleContractFileRemove"
:on-change="handleContractFileChange"
multiple
action="#"
accept=".jpg,.jpeg,.png"
list-type="picture-card">
<i class="el-icon-plus" />
</el-upload>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否缴纳商业保险" prop="ISPAY" @change="form.insuranceFileList = []">
<el-radio-group v-model="form.ISPAY">
<el-radio v-model="form.ISPAY" label="1"></el-radio>
<el-radio v-model="form.ISPAY" label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.ISPAY === '1'" label="商业保险单号" prop="ISPAY_NUMBER">
<el-input v-model="form.ISPAY_NUMBER" placeholder="这里输入商业保险单号..."/>
</el-form-item>
<el-form-item v-if="form.ISPAY === '1'" label="保险图片" prop="insuranceFileList">
<el-upload
ref="insuranceFileList"
:file-list="form.insuranceFileList"
:limit="4"
:class="{hide:hideInsuranceUpload}"
:auto-upload="false"
:on-remove="handleInsuranceFileRemove"
:on-change="handleInsuranceFileChange"
multiple
action="#"
accept=".jpg,.jpeg,.png"
list-type="picture-card">
<i class="el-icon-plus" />
</el-upload>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="是否按期缴纳工伤保险" prop="IS_INJURIES_PAY" style="float:left">
<el-radio-group v-model="form.IS_INJURIES_PAY">
<el-radio v-model="form.IS_INJURIES_PAY" label="1"></el-radio>
<el-radio v-model="form.IS_INJURIES_PAY" label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.IS_INJURIES_PAY ==='1'" label="工伤保险有效期" prop="IS_INJURIES_PAY_TIME" style="float:left">
<el-date-picker
v-model="form.IS_INJURIES_PAY_TIME"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
style="width: 290px"
/>
</el-form-item>
<el-form-item v-if="form.IS_INJURIES_PAY ==='1'" label="上传工伤保险凭证" style="float:left" prop="gongshangbaoxianFile">
<el-upload
ref="gongshangFileList"
:file-list="form.gongshangbaoxianFile"
:limit="4"
:class="{hide:hidegongshangUpload}"
:auto-upload="false"
:on-remove="handleGongshangFileRemove"
:on-change="handleGongshangFileChange"
multiple
action="#"
accept=".jpg,.jpeg,.png"
list-type="picture-card">
<i class="el-icon-plus" />
</el-upload>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="岗位名称(工种)" prop="POST_ID" class="input-width">
<el-input v-model="form.POST_ID" placeholder="这里输入岗位名称(工种)..."/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否参加三级安全培训" prop="IS_LEVEL_THREE" >
<el-radio-group v-model="form.IS_LEVEL_THREE">
<el-radio v-model="form.IS_LEVEL_THREE" label="1"></el-radio>
<el-radio v-model="form.IS_LEVEL_THREE" label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.IS_LEVEL_THREE === '1'" label="三级安全培训照片" prop="photosOfLevel" >
<el-upload
ref="photosOfLevel"
:file-list="form.photosOfLevel"
:multiple="false"
:limit="5"
:class="{hide:photosOfLevel}"
:auto-upload="false"
:on-remove="handleLevelPhotoRemove"
:on-change="handleLevelPhotoChangeIMG"
action="#"
accept=".jpg,.jpeg,.png"
list-type="picture-card">
<i class="el-icon-plus" />
</el-upload>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否特殊工种" prop="IS_SPECIAL_JOB">
<el-radio-group v-model="form.IS_SPECIAL_JOB" disabled>
<el-radio v-model="form.IS_SPECIAL_JOB" label="1"></el-radio>
<el-radio v-model="form.IS_SPECIAL_JOB" label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-alert
:closable="false"
title="新增完成后请提示该用户去相关方app端完善特种证书信息"
type="error"
class="alertClass"
/>
</el-col>
<el-col :span="12">
<el-form-item label="是否流动人员" prop="ISFLOW" style="float:left">
<el-radio-group v-model="form.ISFLOW">
<el-radio v-model="form.ISFLOW" label="1"></el-radio>
<el-radio v-model="form.ISFLOW" label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<!--第八行-->
<el-col :span="12"/>
<el-col :span="12"/>
<el-row>
<!--第八行-->
<el-col :span="12"/>
<el-col :span="12"/>
</el-row>
</el-row>
</el-form>
</div>
<div class="ui-height"/>
<div class="ui-foot">
<el-button v-show="dialogType == 'saveUser'" :loading="buttonLoading" type="success" @click="confirm"> </el-button>
<el-button v-show="dialogType === 'saveUser' && ISCHECK" :loading="buttonLoading" type="success" @click="confirm"> </el-button>
<el-button v-show="!ISCHECK" type="success" @click="goCheck"> </el-button>
<el-button plain type="info" @click="goBack"> </el-button>
</div>
</div>
@ -339,10 +437,7 @@ export default {
}
var hasCARD = (rule, value, callback) => {
requestFN(
'/user/hasUserCARD',
{
CARD_ID: value
}
'/user/goCheck?CARD_NO=' + value
).then((data) => {
if (data.pd) {
callback(new Error('身份证号已存在'))
@ -372,7 +467,7 @@ export default {
}
var hasName = (rule, value, callback) => {
requestFN(
'/user/hasUserName',
'/user/goCheck',
{
USERNAME: value
@ -447,6 +542,8 @@ export default {
callback()
}
return {
ISCHECK: false,
ISPUSH: false,
buttonLoading: false,
DEPARTMENT_NAME: '',
dayTime: [],
@ -490,7 +587,7 @@ export default {
],
rules: {
NAME: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
NATIONALITY: [{ required: false, message: '民族不能为空', trigger: 'blur' }],
NATIONALITY: [{ required: true, message: '民族不能为空', trigger: 'blur' }],
IS_BF: [{ required: true, message: '请选择是否缴纳保险', trigger: 'blur' }],
IS_SOCIAL: [{ required: true, message: '请选择是否缴纳社保', trigger: 'blur' }],
POLITICAL_STATUS: [{ required: true, message: '请选择政治面貌', trigger: 'blur' }],
@ -498,7 +595,7 @@ export default {
USERNAME: [
{ required: true, message: '用户名不能为空', trigger: 'blur' },
{
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[0-9])\d{8}$/,
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0-9]|18[0-9]|19[0-9])\d{8}$/,
message: '用户名为手机号,请正确输入'
},
{ validator: hasName, trigger: 'blur' }
@ -548,6 +645,7 @@ export default {
},
{ validator: hasCARD, trigger: 'blur' }
],
// EMAIL: [{ required: true, message: '', trigger: 'blur' }],
AGE: [{ required: true, message: '年龄不能为空', trigger: 'blur' },
{
pattern: /^\d{2}$/,
@ -734,6 +832,79 @@ export default {
}
},
methods: {
goPush(row) {
requestFN(
'user/goPush',
{
USER_ID: row.USER_ID,
STATUS: row.STATUS,
BZ: row.BZ,
SKIN: row.SKIN,
PHONE: row.PHONE,
NUMBER: row.NUMBER,
CARD_NO: row.CARD_ID,
USERNAME: row.USERNAME,
NAME: row.NAME,
CORPINFO_ID: row.CORPINFO_ID,
CORPINFO_NAME: row.CORPINFO_NAME || '',
DEPARTMENT_ID: row.DEPARTMENT_ID,
DEPARTMENT_NAME: row.DEPARTMENT_NAME,
IMGFILES_ID: row.IMGFILES_ID,
FOREIGN_KEY: row.FOREIGN_KEY,
FILEPATH: row.FILEPATH,
EMAIL: row.EMAIL || '',
CARD_TYPE: '111',
CARD_TYPE_NAME: '身份证',
NATION: row.NATIONALITY || '',
SEX: row.SEX || '',
USER_TYPE: '2',
ISDELETE: row.ISDELETE
}
).then((data) => {
if (data.result === 'success') {
this.$message.success('推送成功')
this.$parent.activeName = 'List'
} else {
this.$message.error('推送失败,' + data.msg)
this.$parent.activeName = 'List'
}
}).catch((e) => {
this.listLoading = false
})
},
goCheck() {
if (this.form.CARD_ID && this.form.USERNAME) {
const phoneJudge = /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[0-9])\d{8}$/
const phoneResult = phoneJudge.test(this.form.USERNAME)
const cardJudge = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
const cardResult = cardJudge.test(this.form.CARD_ID)
if (phoneResult && cardResult) {
console.log('格式校验通过')
requestFN(
'user/goCheck',
{
CARD_NO: this.form.CARD_ID,
USERNAME: this.form.USERNAME
}
).then((data) => {
if (data.result === 'success') {
this.$message.success('验证通过')
this.ISCHECK = true
} else {
this.$message.error('验证失败,请确认身份证号与手机号是否正确')
this.ISCHECK = false
}
}).catch((e) => {
this.listLoading = false
this.ISCHECK = false
})
} else {
this.ISCHECK = false
}
} else {
this.ISCHECK = false
}
},
/** 三级教育培训 **/
handleLevelPhotoRemove(file, fileList) {
this.form.photosOfLevel = fileList
@ -888,12 +1059,40 @@ export default {
}
}
}
if (this.form.IS_INJURIES_PAY === '1') {
if (this.$refs['gongshangFileList'].uploadFiles.length > 0) {
for (let i = 0; i < this.$refs['gongshangFileList'].uploadFiles.length; i++) {
if (this.$refs['gongshangFileList'].uploadFiles[i]) {
formData.append('WORK_INSURANCE_LIST', this.$refs['gongshangFileList'].uploadFiles[i].raw)
}
}
}
}
if (this.form.ISPAY === '1') {
if (this.$refs['insuranceFileList'].uploadFiles.length > 0) {
for (let i = 0; i < this.$refs['insuranceFileList'].uploadFiles.length; i++) {
if (this.$refs['insuranceFileList'].uploadFiles[i]) {
formData.append('insuranceFile', this.$refs['insuranceFileList'].uploadFiles[i].raw)
}
}
}
}
if (this.form.IS_SIGN_LABOR === '1') {
if (this.$refs['contractFileList'].uploadFiles.length > 0) {
for (let i = 0; i < this.$refs['contractFileList'].uploadFiles.length; i++) {
if (this.$refs['contractFileList'].uploadFiles[i]) {
formData.append('contractFile', this.$refs['contractFileList'].uploadFiles[i].raw)
}
}
}
}
formData.delete('CORPINFO_ID')
formData.append('CORPINFO_ID', JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID)
upload(
'/user/' + this.dialogType,
formData
).then((data) => {
this.$parent.activeName = 'List'
this.goPush(data.pd)
this.listLoading = false
this.buttonLoading = false
}).catch((e) => {

View File

@ -35,7 +35,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="用户名" prop="USERNAME" class="input-width">
<el-input v-model="form.USERNAME" :disabled="dialogType == 'editUser'" placeholder="这里输入用户名..." />
<el-input v-model="form.USERNAME" :disabled="dialogType == 'editUser'" placeholder="这里输入用户名..."/>
</el-form-item>
</el-col>
</el-row>
@ -67,7 +67,7 @@
<el-row>
<el-col :span="12">
<el-form-item label="身份证号" prop="CARD_ID" class="input-width">
<el-input v-model="form.CARD_ID" placeholder="这里输入身份证号..."/>
<el-input v-model="form.CARD_ID" placeholder="这里输入身份证号..." @blur="goCheck()"/>
</el-form-item>
</el-col>
<el-col :span="12">
@ -87,10 +87,17 @@
list-type="picture-card">
<i class="el-icon-plus" />
</el-upload>
<div style="font-size: 10px; color: red">温馨提示用户要上传身份证正反面身份证照片数量是2张, 才能进行人员培训</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="电子邮箱" prop="EMAIL" class="input-width">
<el-input v-model="form.EMAIL" placeholder="这里输入电子邮箱..."/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="民族" prop="NATIONALITY">
@ -133,8 +140,8 @@
<el-input v-model="form.AGE" type="number" placeholder="这里输入年龄..." disabled/>
</el-form-item>
</el-col>
</el-row>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="户口所在地" prop="HKLOCAL" class="input-width">
@ -170,7 +177,6 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="政治面貌" prop="POLITICAL_STATUS">
@ -184,7 +190,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col v-show="form.POLITICAL_STATUS == 'zhonggongdangyuan'" :span="12">
<el-col v-show="form.POLITICAL_STATUS === 'zhonggongdangyuan'" :span="12">
<el-form-item label="入党时间" prop="POLITICAL_TIME">
<el-date-picker
v-model="form.POLITICAL_TIME"
@ -197,7 +203,6 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否缴纳社保" prop="IS_SOCIAL">
@ -236,6 +241,100 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="是否签订劳动合同" prop="IS_SIGN_LABOR">
<el-radio-group v-model="form.IS_SIGN_LABOR" @change="form.contractFileList = []">
<el-radio v-model="form.IS_SIGN_LABOR" label="1"></el-radio>
<el-radio v-model="form.IS_SIGN_LABOR" label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.IS_SIGN_LABOR === '1'" label="合同图片" prop="contractFileList">
<el-upload
ref="contractFileList"
:file-list="form.contractFileList"
:limit="4"
:class="{hide:hideContractUpload}"
:auto-upload="false"
:before-remove="handlePhotoBeforeRemove"
:on-remove="handleContractFileRemove"
:on-change="handleContractFileChange"
multiple
action="#"
accept=".jpg,.jpeg,.png"
list-type="picture-card">
<i class="el-icon-plus" />
</el-upload>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否缴纳商业保险" prop="ISPAY" @change="form.insuranceFileList = []">
<el-radio-group v-model="form.ISPAY">
<el-radio v-model="form.ISPAY" label="1"></el-radio>
<el-radio v-model="form.ISPAY" label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.ISPAY === '1'" label="商业保险单号" prop="ISPAY_NUMBER">
<el-input v-model="form.ISPAY_NUMBER" placeholder="这里输入商业保险单号..."/>
</el-form-item>
<el-form-item v-if="form.ISPAY === '1'" label="保险图片" prop="insuranceFileList">
<el-upload
ref="insuranceFileList"
:file-list="form.insuranceFileList"
:limit="4"
:class="{hide:hideInsuranceUpload}"
:auto-upload="false"
:on-remove="handleInsuranceFileRemove"
:on-change="handleInsuranceFileChange"
:before-remove="handlePhotoBeforeRemove"
multiple
action="#"
accept=".jpg,.jpeg,.png"
list-type="picture-card">
<i class="el-icon-plus" />
</el-upload>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="是否按期缴纳工伤保险" prop="IS_INJURIES_PAY" style="float:left">
<el-radio-group v-model="form.IS_INJURIES_PAY">
<el-radio v-model="form.IS_INJURIES_PAY" label="1"></el-radio>
<el-radio v-model="form.IS_INJURIES_PAY" label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.IS_INJURIES_PAY ==='1'" label="工伤保险有效期" prop="IS_INJURIES_PAY_TIME" style="float:left">
<el-date-picker
v-model="form.IS_INJURIES_PAY_TIME"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
style="width: 290px"
/>
</el-form-item>
<el-form-item v-if="form.IS_INJURIES_PAY ==='1'" label="上传工伤保险凭证" style="float:left" prop="gongshangbaoxianFile">
<el-upload
ref="gongshangFileList"
:file-list="form.gongshangbaoxianFile"
:limit="4"
:class="{hide:hidegongshangUpload}"
:auto-upload="false"
:before-remove="handlePhotoBeforeRemove"
:on-remove="handleGongshangFileRemove"
:on-change="handleGongshangFileChange"
multiple
action="#"
accept=".jpg,.jpeg,.png"
list-type="picture-card">
<i class="el-icon-plus" />
</el-upload>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="岗位名称(工种)" prop="POST_ID">
@ -305,7 +404,8 @@
</div>
<div class="ui-height"/>
<div class="ui-foot">
<el-button :loading="buttonLoading" type="success" @click="confirm"> </el-button>
<el-button v-show="!ISCHECK" :loading="buttonLoading" type="success" @click="confirm"> </el-button>
<!-- <el-button v-show="!ISCHECK" :loading="buttonLoading" type="success" @click="goCheck"> </el-button> -->
<el-button plain type="info" @click="goBack"> </el-button>
</div>
</div>
@ -451,6 +551,8 @@ export default {
callback()
}
return {
ISCHECK: false,
USER_ID: "",
imgDelKey: [],
zhebaoUpload: false, //
photosOfLevel: false, //
@ -497,12 +599,12 @@ export default {
rules: {
NAME: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
POLITICAL_STATUS: [{ required: true, message: '请选择政治面貌', trigger: 'blur' }],
NATIONALITY: [{ required: false, message: '请选择民族', trigger: 'blur' }],
NATIONALITY: [{ required: true, message: '请选择民族', trigger: 'blur' }],
POLITICAL_TIME: [{ required: true, validator: isCommunist, message: '请选择入党时间', trigger: 'blur' }],
USERNAME: [
{ required: true, message: '用户名不能为空', trigger: 'blur' },
{
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[0-9])\d{8}$/,
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0-9]|18[0-9]|19[0-9])\d{8}$/,
message: '用户名为手机号,请正确输入'
},
{ validator: hasName, trigger: 'blur' }
@ -539,7 +641,7 @@ export default {
{ required: true, message: '请输入手机号码', trigger: 'blur' },
{ min: 11, max: 11, message: '请输入11位手机号码', trigger: 'blur' },
{
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[0-9])\d{8}$/,
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0-9]|18[0-9]|19[0-9])\d{8}$/,
message: '请输入正确的手机号码'
}],
ROLE_ID: [{ required: true, message: '请选择角色', trigger: 'change' }],
@ -798,6 +900,81 @@ export default {
this.getDict()
},
methods: {
goCheck() {
if (this.form.CARD_ID && this.form.USERNAME) {
const phoneJudge = /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[0-9])\d{8}$/
const phoneResult = phoneJudge.test(this.form.USERNAME)
const cardJudge = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
const cardResult = cardJudge.test(this.form.CARD_ID)
if (phoneResult && cardResult) {
console.log('格式校验通过')
requestFN(
'user/goCheck',
{
USER_ID: this.form.USER_ID,
CARD_NO: this.form.CARD_ID,
USERNAME: this.form.USERNAME
}
).then((data) => {
if (data.result === 'success') {
this.$message.success('验证通过')
this.ISCHECK = true
} else {
this.$message.error('验证失败,请确认身份证号与手机号是否正确')
this.ISCHECK = false
}
}).catch((e) => {
this.listLoading = false
this.ISCHECK = false
})
} else {
this.ISCHECK = false
}
} else {
this.$message.warning('请确认身份证号与手机号后进行校验')
this.ISCHECK = false
}
},
goPush(row) {
requestFN(
'user/goPush',
{
USER_ID: row.USER_ID,
STATUS: row.STATUS,
BZ: row.BZ,
SKIN: row.SKIN,
PHONE: row.PHONE,
NUMBER: row.NUMBER,
CARD_NO: row.CARD_ID,
USERNAME: row.USERNAME,
NAME: row.NAME,
CORPINFO_ID: row.CORPINFO_ID,
CORPINFO_NAME: row.CORPINFO_NAME || '',
DEPARTMENT_ID: row.DEPARTMENT_ID,
DEPARTMENT_NAME: row.DEPARTMENT_NAME,
IMGFILES_ID: row.IMGFILES_ID,
FOREIGN_KEY: row.FOREIGN_KEY,
FILEPATH: row.FILEPATH,
EMAIL: row.EMAIL || '',
CARD_TYPE: '111',
CARD_TYPE_NAME: '身份证',
NATION: row.NATIONALITY || '',
SEX: row.SEX || '',
USER_TYPE: '2',
ISDELETE: row.ISDELETE
}
).then((data) => {
if (data.result === 'success') {
this.$message.success('推送成功')
this.$parent.activeName = 'List'
} else {
this.$message.error('推送失败,' + data.msg)
this.$parent.activeName = 'List'
}
}).catch((e) => {
this.listLoading = false
})
},
//
checkSpecialCertificateList() {
return new Promise((resolve, reject) => {
@ -970,7 +1147,8 @@ export default {
},
//
confirm() {
this.$refs.form.validate(valid => {
this.$refs.form.validate((valid, errorFields) => {
console.log(errorFields)
if (valid) {
if (this.form.userCardFile.length < 2) {
this.$message.error('请上传身份证正反面照片')
@ -1008,6 +1186,33 @@ export default {
}
}
}
if (this.form.IS_INJURIES_PAY === '1') {
if (this.$refs['gongshangFileList'].uploadFiles.length > 0) {
for (let i = 0; i < this.$refs['gongshangFileList'].uploadFiles.length; i++) {
if (this.$refs['gongshangFileList'].uploadFiles[i]) {
formData.append('WORK_INSURANCE_LIST', this.$refs['gongshangFileList'].uploadFiles[i].raw)
}
}
}
}
if (this.form.ISPAY === '1') {
if (this.form.insuranceFileList.length > 0) {
for (let i = 0; i < this.form.insuranceFileList.length; i++) {
if (this.form.insuranceFileList[i]) {
formData.append('insuranceFile', this.form.insuranceFileList[i].raw)
}
}
}
}
if (this.form.IS_SIGN_LABOR === '1') {
if (this.form.contractFileList.length > 0) {
for (let i = 0; i < this.form.contractFileList.length; i++) {
if (this.form.contractFileList[i]) {
formData.append('contractFile', this.form.contractFileList[i].raw)
}
}
}
}
//
if (this.form.IS_SOCIAL === '1') {
if (this.$refs['zhenbaoUpload'].uploadFiles.length > 0) {
@ -1035,11 +1240,10 @@ export default {
formData
).then((data) => {
this.$message.success('保存成功!')
this.$parent.activeName = 'List'
this.goPush(data.pd)
this.listLoading = false
this.buttonLoading = false
}).catch((e) => {
this.$message.success('保存失败!')
this.listLoading = false
this.buttonLoading = false
})
@ -1088,24 +1292,24 @@ export default {
this.form.photosOfLevel.push(obj)
})
}
// if (data.gongshangbaoxianFile) {
// data.gongshangbaoxianFile.map(item => {
// const obj = { id: item.IMGFILES_ID, name: item.FILENAME, url: config.fileUrl + item.FILEPATH }
// this.form.gongshangbaoxianFile.push(obj)
// })
// }
// if (data.insuranceFile) {
// data.insuranceFile.map(item => {
// const obj = { id: item.IMGFILES_ID, name: item.FILENAME, url: config.fileUrl + item.FILEPATH }
// this.form.insuranceFileList.push(obj)
// })
// }
// if (data.contractFile) {
// data.contractFile.map(item => {
// const obj = { id: item.IMGFILES_ID, name: item.FILENAME, url: config.fileUrl + item.FILEPATH }
// this.form.contractFileList.push(obj)
// })
// }
if (data.gongshangbaoxianFile) {
data.gongshangbaoxianFile.map(item => {
const obj = { id: item.IMGFILES_ID, name: item.FILENAME, url: config.fileUrl + item.FILEPATH }
this.form.gongshangbaoxianFile.push(obj)
})
}
if (data.insuranceFile) {
data.insuranceFile.map(item => {
const obj = { id: item.IMGFILES_ID, name: item.FILENAME, url: config.fileUrl + item.FILEPATH }
this.form.insuranceFileList.push(obj)
})
}
if (data.contractFile) {
data.contractFile.map(item => {
const obj = { id: item.IMGFILES_ID, name: item.FILENAME, url: config.fileUrl + item.FILEPATH }
this.form.contractFileList.push(obj)
})
}
this.EMPLOYMENT_APPLY_MANAGEMENT_ID = data.pdrelated.EMPLOYMENT_APPLY_MANAGEMENT_ID
const node = {}
node.id = this.form.DEPARTMENT_ID
@ -1149,7 +1353,6 @@ export default {
}
})
},
changeLearnerCategory() {
this.form.LEARNERCATEGORY = ''
if (this.form.LEARNERCATEGORYSTATUS === 'select') {
@ -1166,7 +1369,6 @@ export default {
this.form.LEARNERCATEGORYSTATUS = 'select'
}
},
//
hasButton() {
var keys = 'user:add,user:del,user:edit'
@ -1231,7 +1433,6 @@ export default {
this.form.insuranceFileList.push(file)
this.hideInsuranceUpload = fileList.length >= 4
},
// remove
handleInsuranceFileRemove(file, fileList) {
this.form.insuranceFileList = fileList
@ -1250,7 +1451,6 @@ export default {
this.form.contractFileList.push(file)
this.hideContractUpload = fileList.length >= 4
},
// remove
handleContractFileRemove(file, fileList) {
this.form.contractFileList = fileList

View File

@ -118,12 +118,7 @@
<span v-if="row.USER_ID != userId">
<el-tag v-if="row.STATUS == 1" type="warning"></el-tag>
<el-tag v-if="row.STATUS == 0" type="info"></el-tag>
<el-tag v-if="row.STATUS == 2" type="success">
<template v-if="row.TRAIN_STATUS == '1'">
已培训合格
</template>
<template v-else></template>
</el-tag>
<el-tag v-if="row.STATUS == 2" type="success"></el-tag>
<el-tag v-if="row.STATUS == 9"></el-tag>
</span>
<span v-else />
@ -145,11 +140,12 @@
<template v-show="loginUser.ACCOUNT_TYPE === '0'">
<el-button v-show="edit && row.ACCOUNT_TYPE == '1'" type="success" icon="el-icon-edit" size="mini" @click="handleUserEdit(row)"></el-button>
<el-button v-show="edit" type="success" icon="el-icon-refresh" size="mini" @click="resetPwd(row.USER_ID)"></el-button>
<el-button v-if="del && row.ACCOUNT_TYPE == '1'" type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row)"></el-button>
<el-button v-if="row.ISUSE == 1 && row.ACCOUNT_TYPE == '1'" type="success" icon="el-icon-check" size="mini" @click="enableORDisable('0', row.USER_ID)"></el-button>
<el-button v-if="row.ISUSE == 0 && row.ACCOUNT_TYPE == '1'" type="danger" icon="el-icon-close" size="mini" @click="enableORDisable('1', row.USER_ID)"></el-button>
<el-button v-if="false && del && row.ACCOUNT_TYPE == '1'" type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row)"></el-button>
<el-button v-if="row.ISUSE == 1 && row.ACCOUNT_TYPE == '1'" type="success" icon="el-icon-check" size="mini" @click="enableORDisable('0', row)"></el-button>
<el-button v-if="row.ISUSE == 0 && row.ACCOUNT_TYPE == '1'" type="danger" icon="el-icon-close" size="mini" @click="enableORDisable('1', row)"></el-button>
</template>
<el-button v-if="row.ACCOUNT_TYPE == '1'" type="info" icon="el-icon-postcard" size="mini" @click="handlePrinting(row)"></el-button>
<el-button v-if="row.ISPUSH == '0'" type="primary" icon="el-icon-position" size="mini" @click="goPush(row)"></el-button>
</div>
</template>
</el-table-column>
@ -462,6 +458,47 @@ export default {
this.getTreeList()
},
methods: {
goPush(row) {
requestFN(
'user/goPush',
{
USER_ID: row.USER_ID,
STATUS: row.STATUS,
BZ: row.BZ,
SKIN: row.SKIN,
PHONE: row.PHONE,
NUMBER: row.NUMBER,
CARD_NO: row.CARD_ID,
USERNAME: row.USERNAME,
NAME: row.NAME,
CORPINFO_ID: row.CORPINFO_ID,
CORPINFO_NAME: row.CORPINFO_NAME || '',
DEPARTMENT_ID: row.DEPARTMENT_ID,
DEPARTMENT_NAME: row.DEPARTMENT_NAME,
IMGFILES_ID: row.IMGFILES_ID,
FOREIGN_KEY: row.FOREIGN_KEY,
FILEPATH: row.FILEPATH,
EMAIL: row.EMAIL || '',
CARD_TYPE: '111',
CARD_TYPE_NAME: '身份证',
NATION: row.NATIONALITY || '',
SEX: row.SEX || '',
USER_TYPE: '2',
ISUSE: row.ISUSE,
ISDELETE: row.ISDELETE
}
).then((data) => {
if (data.result === 'success') {
this.$message.success('推送成功')
this.getList()
} else {
this.$message.error('推送失败,' + data.msg)
this.getList()
}
}).catch((e) => {
this.listLoading = false
})
},
getRowKey(row) {
return row.USER_ID
},
@ -598,7 +635,8 @@ export default {
PHONE: row.PHONE,
CARD_ID: row.CARD_ID,
DEPARTMENT_NAME: row.DEPARTMENT_NAME,
CORPINFO_ID: row.CORPINFO_ID
CORPINFO_ID: row.CORPINFO_ID,
ISPUSH: row.ISPUSH
}
).then((data) => {
if (data.result == 'success') {
@ -634,7 +672,8 @@ export default {
DEPART_STATE: this.DEPART_STATE,
BASIC_STATE: this.BASIC_STATE,
CARD_ID: this.ID_CARD,
USER_ID: this.USER_ID
USER_ID: this.USER_ID,
ISPUSH: '1'
}
).then((data) => {
this.listLoading = false
@ -655,7 +694,7 @@ export default {
})
},
//
enableORDisable(ISUSE, USER_ID) {
enableORDisable(ISUSE, row) {
this.$confirm(ISUSE === '0' ? '确定要启用该账户吗?' : '确定要禁用该账户吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@ -665,8 +704,8 @@ export default {
requestFN(
'/user/editisuse',
{
USER_ID,
ISUSE
USER_ID: row.USER_ID,
ISUSE: ISUSE
}
).then(() => {
this.$message({
@ -676,7 +715,8 @@ export default {
this.listLoading = false
this.varList = []
this.listQuery.page = 1
this.getList()
row.ISUSE = ISUSE
this.goPush(row)
}).catch((e) => {
this.listLoading = false
})
@ -751,11 +791,24 @@ export default {
dangerouslyUseHTMLString: true
})
} else {
this.$message({
message: '导入成功。</br>一共解析了' + data.importCount + '条数据。</br>其中新增' + data.saveCount + '条数据。' + '修改' + data.updCount + '条数据。</br>',
dangerouslyUseHTMLString: true,
type: 'success'
})
console.log(data.uncheckMsg)
if (data.uncheckMsg) {
this.$message({
message: '导入成功,但部分数据验重或推送失败</br>一共解析了' + data.importCount + '条数据。</br>其中新增' + data.saveCount + '条数据。' + '修改' + data.updCount + '条数据。</br>' + data.pushMsg + '</br>' + data.uncheckMsg + '</br>',
duration: 5000,
showClose: true,
dangerouslyUseHTMLString: true,
type: 'error'
})
} else {
this.$message({
message: '导入成功。</br>一共解析了' + data.importCount + '条数据。</br>其中新增' + data.saveCount + '条数据。' + '修改' + data.updCount + '条数据。</br>' + data.pushMsg + '</br>',
duration: 5000,
showClose: true,
dangerouslyUseHTMLString: true,
type: 'success'
})
}
this.dialogFormDaoru = false
this.getList()
}

View File

@ -7,8 +7,8 @@
<h1>人员信息</h1>
</div>
<tr>
<th>照片</th>
<td>
<th style="width: 200px">照片</th>
<td style="width: 400px">
<span v-if="imgUrl != ''">
<div class="img-flex">
<viewer>
@ -18,9 +18,9 @@
</span>
<span v-else/>
</td>
<th>姓名</th>
<th style="width: 200px">姓名</th>
<td>{{ dataForm.NAME }}</td>
<th>性别</th>
<th width="200px">性别</th>
<td>{{ dataForm.SEX === '0' ? '男' : '女' }}</td>
</tr>
<tr>
@ -102,6 +102,68 @@
</td>
</tr>
<tr>
<th>是否按期缴纳工伤保险</th>
<td :colspan="dataForm.IS_INJURIES_PAY === '1' ? '':5">{{ formatLabel(dataForm.IS_INJURIES_PAY) }}</td>
<th v-if="dataForm.IS_INJURIES_PAY === '1'"></th>
<td v-if="dataForm.IS_INJURIES_PAY === '1'">{{ dataForm.IS_INJURIES_PAY_TIME }}</td>
<th v-if="dataForm.IS_INJURIES_PAY === '1'"></th>
<td v-if="dataForm.IS_INJURIES_PAY === '1'">
<span>
<viewer>
<img
v-for="item in gongshangbaoxianFile"
:src="config.fileUrl + item.FILEPATH"
:key="item.IMGFILES_ID"
width="40"
height="40"
style="object-fit: cover;">
</viewer>
</span>
</td>
</tr>
<tr>
<th>是否缴纳商业保险</th>
<td :colspan="dataForm.ISPAY === '1' ? '' : 5">
{{ formatLabel(dataForm.ISPAY) }}
</td>
<th v-if="dataForm.ISPAY === '1'"></th>
<td v-if="dataForm.ISPAY === '1'">
<span>
<viewer>
<img
v-for="item in insuranceFileList"
:src="config.fileUrl + item.FILEPATH"
:key="item.IMGFILES_ID"
width="40"
height="40"
style="object-fit: cover;">
</viewer>
</span>
</td>
<th v-if="dataForm.ISPAY === '1'"></th>
<td v-if="dataForm.ISPAY === '1'">{{ dataForm.ISPAY_NUMBER }}</td>
</tr>
<tr>
<th>是否签订劳动合同</th>
<td :colspan="dataForm.IS_SIGN_LABOR === '1' ? '' : 5">
{{ formatLabel(dataForm.IS_SIGN_LABOR) }}
</td>
<th v-if="dataForm.IS_SIGN_LABOR === '1'"></th>
<td v-if="dataForm.IS_SIGN_LABOR === '1'" colspan="3">
<span>
<viewer>
<img
v-for="item in contractFileList"
:src="config.fileUrl + item.FILEPATH"
:key="item.IMGFILES_ID"
width="40"
height="40"
style="object-fit: cover;">
</viewer>
</span>
</td>
</tr>
<tr/><tr>
<th>是否参加三级安全培训</th>
<td >{{ formatLabel(dataForm.IS_LEVEL_THREE) }}</td>
<th>三级安全培训照片</th>
@ -125,7 +187,7 @@
<th>是否特殊工种</th>
<td >{{ formatLabel(dataForm.IS_SPECIAL_JOB) }}</td>
<th>是否流动人员</th>
<td >{{ formatLabel(dataForm.ISFLOW) }}</td>
<td colspan="3">{{ formatLabel(dataForm.ISFLOW) }}</td>
</tr>
</table>
</div>
@ -246,11 +308,11 @@ export default {
this.imgUrl = config.fileUrl + this.userPhotoFile[0].FILEPATH
}
this.photosOfLevel = data.photosOfLevel
// this.insuranceFileList = data.insuranceFile
// this.contractFileList = data.contractFile
this.insuranceFileList = data.insuranceFile
this.contractFileList = data.contractFile
this.userCardIDPhotoFile = data.userCardIDPhotoFile
this.socialPhotoFile = data.socialPhotoFile
// this.gongshangbaoxianFile = data.gongshangbaoxianFile
this.gongshangbaoxianFile = data.gongshangbaoxianFile
}).catch((e) => {
this.listLoading = false
})

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,326 @@
<template>
<div class="app-container">
<div class="reform-article">
<div class="reform-table">
<table class="table-ui" style="margin-bottom: 20px;">
<div class="level-title">
<h1>人员信息</h1>
</div>
<tr>
<th style="width: 200px">照片</th>
<td style="width: 400px">
<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 style="width: 200px">姓名</th>
<td>{{ dataForm.NAME }}</td>
<th width="200px">性别</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 }}</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 }}</td>
<th>现住址</th>
<td>{{ dataForm.ADDRESS }}</td>
<th>联系电话</th>
<td>{{ dataForm.PHONE }}</td>
</tr>
<tr>
<th>文化程度</th>
<td>{{ dataForm.DEGREE_OF_EDUCATION_NAME }}</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 :colspan="dataForm.IS_INJURIES_PAY === '1' ? '':5">{{ formatLabel(dataForm.IS_INJURIES_PAY) }}</td>
<th v-if="dataForm.IS_INJURIES_PAY === '1'"></th>
<td v-if="dataForm.IS_INJURIES_PAY === '1'">{{ dataForm.IS_INJURIES_PAY_TIME }}</td>
<th v-if="dataForm.IS_INJURIES_PAY === '1'"></th>
<td v-if="dataForm.IS_INJURIES_PAY === '1'">
<span>
<viewer>
<img
v-for="item in gongshangbaoxianFile"
:src="config.fileUrl + item.FILEPATH"
:key="item.IMGFILES_ID"
width="40"
height="40"
style="object-fit: cover;">
</viewer>
</span>
</td>
</tr>
<tr>
<th>是否缴纳商业保险</th>
<td :colspan="dataForm.ISPAY === '1' ? '' : 5">
{{ formatLabel(dataForm.ISPAY) }}
</td>
<th v-if="dataForm.ISPAY === '1'"></th>
<td v-if="dataForm.ISPAY === '1'">
<span>
<viewer>
<img
v-for="item in insuranceFileList"
:src="config.fileUrl + item.FILEPATH"
:key="item.IMGFILES_ID"
width="40"
height="40"
style="object-fit: cover;">
</viewer>
</span>
</td>
<th v-if="dataForm.ISPAY === '1'"></th>
<td v-if="dataForm.ISPAY === '1'">{{ dataForm.ISPAY_NUMBER }}</td>
</tr>
<tr>
<th>是否签订劳动合同</th>
<td :colspan="dataForm.IS_SIGN_LABOR === '1' ? '' : 5">
{{ formatLabel(dataForm.IS_SIGN_LABOR) }}
</td>
<th v-if="dataForm.IS_SIGN_LABOR === '1'"></th>
<td v-if="dataForm.IS_SIGN_LABOR === '1'" colspan="3">
<span>
<viewer>
<img
v-for="item in contractFileList"
:src="config.fileUrl + item.FILEPATH"
:key="item.IMGFILES_ID"
width="40"
height="40"
style="object-fit: cover;">
</viewer>
</span>
</td>
</tr>
<tr/><tr>
<th>是否参加三级安全培训</th>
<td >{{ formatLabel(dataForm.IS_LEVEL_THREE) }}</td>
<th>三级安全培训照片</th>
<td v-if="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 >{{ formatLabel(dataForm.IS_SPECIAL_JOB) }}</td>
<th>是否流动人员</th>
<td colspan="3">{{ formatLabel(dataForm.ISFLOW) }}</td>
</tr>
</table>
</div>
</div>
<div class="ui-foot" style="margin-left: -20px;bottom: -8px;">
<el-button plain type="info" @click="back"> </el-button>
</div>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
export default {
data() {
return {
config: config,
imgUrl: '',
listLoading: 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: ''
}
},
async created() {
// await this.getTreeList()
this.getDict()
this.getList()
},
methods: {
back() {
this.$parent.activeName = 'List'
},
//
formatLabel(value) {
if (value == '1') {
return '是'
} else if (value == '0') {
return '否'
} else {
return ''
}
},
//
getDict() {
requestFN(
'dictionaries/getLevels',
{ DICTIONARIES_ID: 'd7d80f08d73a4accbccf4fd3d8d1d867' }
).then((data) => {
this.wenhuachengduList = data.list
}).catch((e) => {
this.listLoading = false
})
},
getList() {
this.listLoading = true
requestFN(
'user/getDetailByUserIdAndCorpInfoId',
{
USER_ID: this.$parent.USER_ID,
CORPINFO_ID: this.$parent.CORPINFO_ID,
EMPLOYMENT_APPLY_MANAGEMENT_ID: this.$parent.EMPLOYMENT_APPLY_MANAGEMENT_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>
<style scoped>
</style>

View File

@ -0,0 +1,41 @@
<template>
<div>
<List v-show="activeName=='List'" ref="list" />
<Edit v-if="activeName=='Edit'" />
<Add v-if="activeName=='Add'" />
<ViewData v-if="activeName=='ViewData'" />
</div>
</template>
<script>
import List from './components/list'
import Edit from './components/edit'
import Add from './components/add'
import ViewData from './components/view'
export default {
components: {
List: List,
Edit: Edit,
Add: Add,
ViewData: ViewData
},
data() {
return {
activeName: 'List',
USER_ID: '',
CORPINFO_ID: ''
}
},
watch: {
activeName(val) {
if (val == 'List') {
this.$refs.list.getList()
}
}
}
}
</script>
<style scoped>
</style>

View File

@ -41,16 +41,23 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="股份主管部门" prop="MAIN_DEPARTMENT">
<Treeselect
<!-- <Treeselect
:options="treeData"
:disabled="true"
:normalizer="normalizer"
:flat="true"
:default-expand-level="0"
:props="defaultProps"
v-model="dataForm.MAIN_DEPARTMENT"
multiple
placeholder="请选择部门"
no-options-text="暂无数据"
no-children-text="暂无数据"
style="width: 100%;"
/>
/>-->
<el-input v-model="dataForm.MAIN_DEPARTMENT_NAME" disabled maxlength="255" title="单位名称"/>
</el-form-item>
</el-col>
<el-col :span="12">
@ -62,7 +69,7 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="集团单位" prop="corpTypeName">
<el-input id="corpTypeName" ref="corpTypeName" v-model="dataForm.corpTypeName" disabled maxlength="255" placeholder="这里输入开户人..." title="开户人"/>
<el-input id="corpTypeName" ref="corpTypeName" v-model="dataForm.corpTypeName" disabled maxlength="255" placeholder="这里输入集团单位..." title="集团单位"/>
</el-form-item>
</el-col>
<el-col :span="12">
@ -85,6 +92,7 @@
v-model="dataForm.POSSESSION"
:options="areaList"
:props="areaProps"
:append-to-body="false"
:placeholder="dataForm.COMPANY_AREA"
style="width: 100%"
@change="cascaderChange"
@ -184,7 +192,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="注册资金" prop="REGISTERED_CAPITAL">
<el-form-item label="注册资金(万元)" prop="REGISTERED_CAPITAL">
<el-input id="REGISTERED_CAPITAL" ref="REGISTERED_CAPITAL" v-model="dataForm.REGISTERED_CAPITAL" type="number" maxlength="11" placeholder="这里输入注册资金..." title="注册资金"/>
</el-form-item>
</el-col>
@ -496,7 +504,7 @@ export default {
corpName: '',
AUDIT_STATE: '',
dataForm: {
MAIN_DEPARTMENT: '',
MAIN_DEPARTMENT: null,
businessLicenseDate: [],
STATE: '',
SUPERVISE_CORPINFO_DEPT_NAME: '',
@ -684,11 +692,11 @@ export default {
],
TOTAL_ASSETS: [
{ required: true, message: '资产总额不能为空', trigger: 'blur' },
{ min: 1, max: 5, message: '请正确的资产总额', trigger: 'blur' }
{ min: 1, max: 15, message: '请正确的资产总额', trigger: 'blur' }
],
REGISTERED_CAPITAL: [
{ required: true, message: '注册资金不能为空', trigger: 'blur' },
{ min: 1, max: 5, message: '请正确的注册资金', trigger: 'blur' }
{ min: 1, max: 15, message: '请正确的注册资金', trigger: 'blur' }
],
EMPLOYMENT_FORM: [{ required: true, message: '请选择用工形式', trigger: 'blur' }],
SELECT_FORMS: [{ required: true, message: '请选择选取形式', trigger: 'blur' }]
@ -760,7 +768,7 @@ export default {
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
await this.getTreeList()
// await this.getTreeList()
await this.getDict()
await this.getData()
loading.close()
@ -844,6 +852,11 @@ export default {
{}
).then((data) => {
this.treeData = JSON.parse(data.zTreeNodes)
this.treeData.push({
id: '0',
name: '无',
nodes: []
})
resolve()
}).catch((e) => {
reject()
@ -877,6 +890,7 @@ export default {
this.dataForm.businessLicenseDate = []
this.dataForm.businessLicenseDate.push(this.dataForm.LICENSE_START)
this.dataForm.businessLicenseDate.push(this.dataForm.LICENSE_END)
this.dataForm.USER_NAME = this.dataForm.USER_NAME ? this.dataForm.USER_NAME : this.dataForm.USER_NAME_B
this.$forceUpdate()
// 2023-08-31
if (this.dataForm.SELECT_FORM) {
@ -895,37 +909,16 @@ export default {
if (data.pd.CITY != '') this.dataForm.POSSESSION.push(data.pd.CITY)
if (data.pd.COUNTY != '') this.dataForm.POSSESSION.push(data.pd.COUNTY)
if (data.pd.VILLAGE != '') this.dataForm.POSSESSION.push(data.pd.VILLAGE)
// console.info(this.dataForm.POSSESSION)
// this.areaList = data.areaList
this.AUDIT_STATE = this.dataForm.STATE
console.log('this.employmentTypeList')
console.log(this.employmentTypeList)
/* const node = {}
node.id = this.form.EMPLOYMENT_FORM
this.$refs.deptTree_Select.clearHandle()
this.$nextTick(() => { // 使
this.$refs.deptTree_Select.handleNodeClick(node)
} )*/
this.$forceUpdate()
// if (data.pd.STREET != '') this.dataForm.POSSESSION.push(data.pd.STREET)
/* this.OLDFOURTYPE = data.pd.FOURTYPE
this.form = Object.assign(this.form, data.pd)
//
if (data.pd.industryOption && data.pd.industryOption.length > 0) {
this.hylxList = data.pd.industryOption
if (this.dataForm.MAIN_DEPARTMENT.indexOf('[') > -1) {
this.dataForm.MAIN_DEPARTMENT = JSON.parse(this.dataForm.MAIN_DEPARTMENT)
} else {
this.getDictByDicId('f2598ba72e864eadabf0ca4b664d26b9').then(data => {
this.hylxList = data
})
this.dataForm.MAIN_DEPARTMENT = [this.dataForm.MAIN_DEPARTMENT]
}
//
if (data.dep) {
this.mainDepartment = data.dep.MAIN_REGULATORY_DEPARTMENT_NAME
this.regulatoryDepartment = data.dep.REGULATORY_DEPARTMENT_NAME
}
console.log('this.form', this.form) */
this.$forceUpdate()
resolve()
}).catch((e) => {
console.log(e)
this.$message({
message: '操作失败',
type: 'error'
@ -936,9 +929,6 @@ export default {
})
},
getNextTickData() {
// this.$nextTick(() => {
// this.$refs.ecoCascader.presentText = this.censusRegisterPlaceName
// })
if (this.form.CORP_OF_TYPE2 && this.form.CORP_OF_TYPE2 != '') {
const node = {}
node.id = this.form.CORP_OF_TYPE2
@ -952,11 +942,6 @@ export default {
this.$refs.corpOfTypeRef.handleNodeClick(node)
})
}
// const nodea = {}
// nodea.id = this.form.TRAINTYPE
// this.$nextTick(() => { // 使
// this.$refs.keyHyRef.handleNodeClick(nodea)
// })
this.$forceUpdate()
},
/** 上级企业选择 Begin */
@ -1039,6 +1024,7 @@ export default {
this.dataForm.SELECT_FORM = this.dataForm.SELECT_FORMS.join(',')
this.dataForm.LICENSE_START = this.dataForm.businessLicenseDate[0]
this.dataForm.LICENSE_END = this.dataForm.businessLicenseDate[1]
this.dataForm.MAIN_DEPARTMENT = JSON.stringify(this.dataForm.MAIN_DEPARTMENT)
//
const formData = new FormData()
Object.keys(this.dataForm).map(key => {

View File

@ -16,11 +16,6 @@
@node-click="handleNodeClick"/>
</el-aside>
<el-main>
<!-- <div class="filter-btn-group">
<div>
<el-button @click="showGraph()"></el-button>
</div>
</div>-->
<el-table
v-loading="listLoading"
ref="multipleTable"
@ -83,23 +78,6 @@
<el-form-item label="部门职能">
<el-input :rows="3" v-model="form.FUNCTIONS" type="textarea" placeholder="这里输入部门职能..." />
</el-form-item>
<!-- <el-form-item label="是否监管部门">
<el-radio-group v-model="form.IS_REGULATORY" @change="changeIssup">
<el-radio :label="'1'"></el-radio>
<el-radio :label="'0'"></el-radio>
</el-radio-group>
</el-form-item>-->
<!-- <el-form-item v-show="form.IS_REGULATORY=='1'" label="监管部门" prop="MAIN_DEPARTMENT" class="is-required">
<SelectTree
ref="deptTree"
:clearable="false"
:options="treeData"
:props="defaultProps"
v-model="form.MAIN_DEPARTMENT"
placeholder="请选择监管部门"
style="width: 100%"
/>
</el-form-item>-->
<el-form-item label="备注">
<el-input :rows="3" v-model="form.BZ" type="textarea" placeholder="这里输入备注..." />
</el-form-item>
@ -386,6 +364,7 @@ export default {
}
).then((data) => {
this.form = Object.assign({}, data.pd) // copy obj
this.form.DEPT_SORT = Number(this.form.DEPT_SORT)
this.pds = data.pds || [] //
this.dialogFormAdd = true

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>

View File

@ -45,12 +45,10 @@
<el-table-column prop="NAME" label="姓名" align="center"/>
<el-table-column prop="DEPARTMENT_NAME" label="部门" align="center"/>
<el-table-column prop="EMPLOYER_NAME" label="外派公司名称" align="center"/>
<el-table-column label="操作" align="center" width="250">
<el-table-column label="操作" align="center" width="100">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleShow(row)"></el-button>
<el-button type="primary" icon="el-icon-s-claim" size="mini" @click="sendMessage([row])"></el-button>
<el-button v-if="false" type="success" icon="el-icon-edit" size="mini" @click="getUserInfo(row)">
</el-button>
<el-button v-if="false" type="success" icon="el-icon-edit" size="mini" @click="getUserInfo(row)"></el-button>
</template>
</el-table-column>
</el-table>

View File

@ -0,0 +1,36 @@
<template>
<div>
<el-dialog :visible.sync="visible" :append-to-body="appendToBody" title="相关方安全告知培训合格证" width="370px" destroy-on-close >
<vue-qr :text="qrCodeStr" :margin="0" :size="320" color-dark="#000" color-light="#fff"/>
</el-dialog>
</div>
</template>
<script>
import vueQr from 'vue-qr'
export default {
components: { vueQr },
props: {
appendToBody: {
type: Boolean,
default: false
}
},
data() {
return {
visible: false,
qrCodeStr: ''
}
},
methods: {
init(e) {
this.visible = true
this.qrCodeStr = e.qrCodeStr
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -0,0 +1,320 @@
<template>
<el-dialog
v-if="visible"
:visible.sync="visible"
:before-close="handleClose"
:append-to-body="true"
title="培训申请"
width="60%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<el-col :span="12">
<el-form-item
prop="TERRITORIALITY"
label="集团单位 "
>
<Treeselect
:options="jituanDanweiTreeData"
:normalizer="normalizer"
v-model="form.TERRITORIALITY"
placeholder="请选择集团单位 "
no-options-text="暂无数据"
no-children-text="暂无数据"
style="width: 100%;"
@select="getUserList($event)"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
prop="TERRITORIALITY_USER_ID"
label="审核人员"
>
<div style="display:flex;justify-content: space-between;align-items: flex-start;">
<el-select v-model="form.TERRITORIALITY_USER_ID">
<el-option
v-for="item in companyUserList"
:key="item.USER_ID"
:label="item.NAME"
:value="item.USER_ID"/>
</el-select>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item
prop="MANAGER"
label="主管部门"
>
<Treeselect
:options="treeData"
:normalizer="normalizer"
v-model="form.MANAGER"
:disabled="true"
placeholder="请选择主管部门"
no-options-text="暂无数据"
no-children-text="暂无数据"
style="width: 100%;"
@select="getmanagerUserList($event)"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
prop="MANAGER_USER_ID"
label="审核人员"
>
<div style="display:flex;justify-content: space-between;align-items: flex-start;">
<el-select v-model="form.MANAGER_USER_ID">
<el-option
v-for="item in managercompanyUserList"
:key="item.USER_ID"
:label="item.NAME"
:value="item.USER_ID"/>
</el-select>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item
prop="SUPERVISION"
label="安监部门"
>
<Treeselect
:options="treeData"
:normalizer="normalizer"
v-model="form.SUPERVISION"
:disabled="true"
placeholder="请选择安监部门"
no-options-text="暂无数据"
no-children-text="暂无数据"
style="width: 100%;"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
prop="SUPERVISION_USER_ID"
label="审核人员"
>
<div style="display:flex;justify-content: space-between;align-items: flex-start;">
<el-select v-model="form.SUPERVISION_USER_ID">
<el-option v-for="item in userList" :key="item.USER_ID" :label="item.NAME" :value="item.USER_ID"/>
</el-select>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注">
<el-input :rows="3" v-model="form.DESCR" type="textarea" placeholder="这里输入备注..."/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="closeWindow"> </el-button>
<el-button :loading="loading" type="primary" @click="save"> </el-button>
</div>
</el-dialog>
</template>
<script>
import { requestFN } from '@/utils/request'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
components: {
Treeselect
},
props: {
corpInfo: {
type: String,
default: ''
}
},
data() {
return {
visible: false,
loading: false,
treeData: [],
companyTreeData: [],
corpinfo: {},
userList: [],
companyUserList: [],
managercompanyUserList: [],
jituanDanwei: '',
jituanDanweiTreeData: [],
normalizer(node) {
return {
id: node.id,
label: node.name,
children: node.nodes
}
},
form: {},
rules: {
// SUPERVISION: [{ required: true, message: '', trigger: 'blur' }],
SUPERVISION_USER_ID: [{ required: true, message: '审核人员不能为空', trigger: 'blur' }],
MANAGER: [{ required: true, message: '主管部门不能为空', trigger: 'blur' }],
MANAGER_USER_ID: [{ required: true, message: '审核人员不能为空', trigger: 'blur' }],
TERRITORIALITY: [{ required: true, message: '属地管理部门不能为空', trigger: 'blur' }],
TERRITORIALITY_USER_ID: [{ required: true, message: '审核人员不能为空', trigger: 'blur' }]
}
}
},
methods: {
async init(e) {
if (e) {
this.users = e
}
this.visible = true
this.loading = false
this.form = {}
/**
* 获取相关方的 集团单位 corpinfo/getDataForEditByCorpInfoId
* 根据集团单位 找到 对应的 企业id
*/
await this.getCorpinfo()
},
getCorpinfo() {
requestFN(
'/corpinfo/getDataForEditByCorpInfoId',
{
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
tm: new Date().getTime()
}
).then((data) => {
this.corpinfo = data.pd
// jtdw002 1e6dbbe16004402f8d2c0e52afd9a676
// jtdw003 3a854eefa7894e06aaa1a2611bca80f6
// jtdw004 020578a4c1f04bc692ee25145c2efbe5
// jtdw005 90966974de3c4b83aca6f8fd6432d5c2
if (data.pd.CORP_TYPE == 'jtdw002') {
this.jituanDanwei = '1e6dbbe16004402f8d2c0e52afd9a676'
}
if (data.pd.CORP_TYPE == 'jtdw003') {
this.jituanDanwei = '3a854eefa7894e06aaa1a2611bca80f6'
}
if (data.pd.CORP_TYPE == 'jtdw004') {
this.jituanDanwei = '020578a4c1f04bc692ee25145c2efbe5'
}
if (data.pd.CORP_TYPE == 'jtdw005') {
this.jituanDanwei = '90966974de3c4b83aca6f8fd6432d5c2'
}
this.getTreeData()
})
},
//
getTreeData() {
requestFN(
'/regulatoryApi/department/listTree',
{}
).then((data) => {
this.treeData = JSON.parse(data.zTreeNodes)
// -
this.form.SUPERVISION = 'c31058273a2d40f9b83dd8e5ae3a723c'
this.form.MANAGER = this.corpinfo.MAIN_DEPARTMENT
this.getRegulatoryUserList(this.form.SUPERVISION)
this.getmanagerUserList(this.corpinfo.MAIN_DEPARTMENT)
}).catch((e) => {
console.log(e)
})
if (this.jituanDanwei) {
requestFN(
'/companyApi/department/listTree',
{ CORPINFO_ID: this.jituanDanwei }
).then((data) => {
this.jituanDanweiTreeData = JSON.parse(data.zTreeNodes)
}).catch((e) => {
})
}
},
getRegulatoryUserList(DEPARTMENT_ID) {
requestFN(
'/regulatoryApi/user/listAll',
{
DEPARTMENT_ID: DEPARTMENT_ID,
ISASSESS: '1'
}
).then((data) => {
this.userList = data.userList
}).catch((e) => {
})
},
//
getUserList({ id: DEPARTMENT_ID }) {
requestFN(
'/companyApi/user/listAll',
{
DEPARTMENT_ID
}
).then((data) => {
this.companyUserList = data.userList
}).catch((e) => {
})
},
getmanagerUserList(DEPARTMENT_ID) {
requestFN(
'/regulatoryApi/user/listAll',
{
DEPARTMENT_ID: DEPARTMENT_ID
}
).then((data) => {
this.managercompanyUserList = data.userList
}).catch((e) => {
})
},
save() {
this.$refs.form.validate(valid => {
if (valid) {
this.loading = true
this.form.USER_COUNT = this.users.length
this.form.AUDIT_STATUS = 0
this.form.TYPE = 2
requestFN(
'/trainingbatch/add',
{
...this.form,
users: this.users.join(',')
}
).then((data) => {
this.loading = false
this.$message({
message: '申请成功',
type: 'success'
})
this.handleClose()
}).catch((e) => {
this.listLoading = false
})
} else {
return false
}
})
},
handleClose() {
this.visible = false
this.$emit('finish', '')
},
closeWindow() {
this.handleClose()
}
}
}
</script>

View File

@ -0,0 +1,269 @@
<template>
<div class="app-container">
<el-form label-width="130px">
<el-row>
<el-col :span="6">
<el-form-item label="用户名">
<el-input v-model="KEYWORDS" placeholder="请输入用户名"/>
</el-form-item>
</el-col>
<el-col v-if="false" :span="6">
<el-form-item label="培训状态">
<el-select v-model="STATUS" placeholder="请选择培训状态" style="width: 100%;" clearable>
<el-option v-for="item in statusList" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label-width="10px">
<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
ref="multipleTable"
:data="varList"
:header-cell-style="{'font-weight': 'bold','color': '#000'}"
tooltip-effect="dark"
border
fit
highlight-current-row>
<el-table-column
v-if="false"
:selectable="handleSelectWithDifferentStatus"
type="selection"
width="55"
align="center"/>
<el-table-column type="index" label="序号" width="50" align="center"/>
<el-table-column prop="USERNAME" label="用户名" align="center"/>
<el-table-column prop="NAME" label="姓名" align="center"/>
<el-table-column prop="DEPARTMENT_NAME" label="部门" align="center"/>
<el-table-column prop="EMPLOYER_NAME" label="外派公司名称" align="center"/>
<el-table-column prop="REPULSE_REASON" label="打回原因" align="center"/>
<el-table-column label="操作" align="center" width="100">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleShow(row)"></el-button>
<el-button v-if="false" type="success" icon="el-icon-edit" size="mini" @click="getUserInfo(row)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
<el-button v-if="false" type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList"/>
</div>
<user ref="userInfo" append-to-body/>
<user-info ref="userInfos" append-to-body/>
<send-util ref="sendUtil" append-to-body @refresh="getList"/>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import vueQr from 'vue-qr'
import apply from './apply'
import user from './user.vue'
import SendUtil from './sendUtil.vue'
import UserInfo from '../../synInfo/components/userInfo.vue'
export default {
components: { UserInfo, SendUtil, Pagination, apply, vueQr, user },
directives: { waves },
data() {
return {
config: config,
QRCodeDialog: false,
qrcodeStr: '',
userDetailForm: {},
specialUsersList: {},
detailForm: {},
userEntryForm: {},
imgUrl: '',
SUPERVISE_CORPINFO_ID: '',
wenhuachengduList: [], //
postList: [], //
photosOfLevel: [], //
trainRecordList: [], //
contractFileList: [], //
insuranceFileList: [], //
gongshangbaoxianFile: [],
userPhotoFile: [], //
userCardIDPhotoFile: [], //
socialPhotoFile: [], //
listQuery: {
page: 1,
limit: 10
},
total: 0,
varList: [],
KEYWORDS: '',
statusList: [{ value: 0, label: '未培训' }, { value: 1, label: '培训中' }, {
value: 2,
label: '已培训(合格)'
}, { value: 3, label: '已培训(不合格)' }, { value: 9, label: '申请中' }],
STATUS: '',
add: false, //
del: false, //
edit: false //
}
},
created() {
this.getDict()
this.getList()
this.hasButton()
},
methods: {
handleSelectWithDifferentStatus(row, rowIndex) {
if (row.STATUS === 0) {
//
return true
} else {
//
return false
}
},
getQuery() {
if (this.$refs.multipleTable) {
this.$refs.multipleTable.clearSelection()
}
this.listQuery = {
page: 1,
limit: 10
}
this.getList()
},
goKeyReset() {
this.KEYWORDS = ''
this.STATUS = ''
this.getQuery()
},
getList() {
this.listLoading = true
requestFN(
'/trainingbatch/userList?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
KEYWORDS: this.KEYWORDS,
STATUS: this.STATUS,
EMPLOY_FLAG: '0'
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
})
.catch((e) => {
this.listLoading = false
})
},
handleShow(row) {
this.$refs.userInfos.init(row)
},
sendMessage(row) {
this.$confirm('确定要提交人员撤回申请吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
requestFN(
'/trainingbatch/submitApplication', { xgf_user_ids: row.map(item => item.USER_ID).join(',') }
).then((data) => {
if (data.code === '0') {
this.$message({
type: 'success',
message: '申请提交成功!'
})
this.getList()
} else {
this.$message.error(data.msg)
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '申请提交取消'
})
})
},
getUserInfo(row) {
this.$refs.userInfo.init(row)
},
handleAdd() {
const _selectData = this.$refs.multipleTable.selection
if (_selectData == null || _selectData.length == 0) {
this.$message({
message: '未勾选培训人员...',
type: 'error'
})
return false
}
var users = []
_selectData.map(item => {
if (item.STATUS === 0) {
users.push(item.USER_ID)
}
})
if (users == null || users.length == 0) {
this.$message({
message: '勾选人员暂无法提交申请...',
type: 'error'
})
return false
}
this.$refs.apply.init(users)
},
hasButton() {
var keys = 'trainingbatch:add,trainingbatch:del,trainingbatch:edit,fhSms,email,fromExcel,toExcel'
requestFN(
'/head/hasButton',
{
keys: keys, tm: new Date().getTime()
}
).then((data) => {
if (data.result == 'success') {
this.add = data.trainingbatchfhadminadd //
this.del = data.trainingbatchfhadmindel //
this.edit = data.trainingbatchfhadminedit //
this.fromExcel = data.fromExcel // excel
this.toExcel = data.toExcel // excel
} else if (data.result == 'exception') {
// showException('', data.exception)//
console.info('按钮权限:', data.exception)
}
})
.catch((e) => {
this.listLoading = false
})
},
getDict: function() {
requestFN(
'dictionaries/getLevels',
{ DICTIONARIES_ID: 'd7d80f08d73a4accbccf4fd3d8d1d867' }
).then((data) => {
this.wenhuachengduList = data.list
}).catch((e) => {
this.listLoading = false
})
requestFN(
'dictionaries/getLevels',
{ DICTIONARIES_ID: '09e36ac01e9540f8bc84eab1c1a78754' }
).then((data) => {
this.postList = data.list
}).catch((e) => {
this.listLoading = false
})
}
}
}
</script>

View File

@ -0,0 +1,36 @@
<template>
<div>
<el-dialog :visible.sync="visible" :append-to-body="appendToBody" title="头像" width="370px" destroy-on-close >
<el-image :src="src"/>
</el-dialog>
</div>
</template>
<script>
import vueQr from 'vue-qr'
export default {
components: { vueQr },
props: {
appendToBody: {
type: Boolean,
default: false
}
},
data() {
return {
visible: false,
src: ''
}
},
methods: {
init(e) {
this.visible = true
this.src = e.src
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -0,0 +1,198 @@
<template>
<div class="app-container">
<el-page-header content="申请记录" @back="goBack"/>
<el-form label-width="130px">
<el-row>
<el-col :span="5">
<el-form-item label="申请人员">
<el-input v-model="KEYWORDS" placeholder="请输入申请人员"/>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="主管部门">
<Treeselect
:options="companyTreeData"
:normalizer="normalizer"
v-model="MANAGER"
placeholder="请选择部门"
no-options-text="暂无数据"
no-children-text="暂无数据"
style="width: 100%;"
/>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="属地管理部门">
<Treeselect
:options="companyTreeData"
:normalizer="normalizer"
v-model="TERRITORIALITY"
placeholder="请选择部门"
no-options-text="暂无数据"
no-children-text="暂无数据"
style="width: 100%;"
/>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="申请状态">
<el-select v-model="AUDIT_STATUS" placeholder="请选择申请状态" style="width: 100%;">
<el-option v-for="item in statusList" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="10px">
<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 ref="multipleTable" :data="varList" :header-cell-style="{'font-weight': 'bold','color': '#000'}" tooltip-effect="dark" border fit highlight-current-row>
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CREATTIME" label="申请时间" align="center" />
<el-table-column prop="CREATOR" label="申请人员" align="center" />
<el-table-column prop="SUPERVISION_DEPARTMENT_NAME" label="安监部门" align="center" />
<el-table-column prop="MANAGER_DEPT_NAME" label="主管部门" align="center" />
<el-table-column prop="TERRITORIALITY_DEPARTMENT_NAME" label="属地管理部门" align="center" />
<el-table-column prop="TRAIN_DATE" label="申请年份" align="center" >
<template slot-scope="{row}">
{{ new Date(row.CREATTIME).getFullYear() }}
</template>
</el-table-column>
<el-table-column prop="AUDIT_STATUS" label="申请状态" align="center" >
<template slot-scope="{row}">
<span v-if="row.AUDIT_STATUS === 0"></span>
<span v-if="row.AUDIT_STATUS === 1"></span>
<span v-if="row.AUDIT_STATUS === 2"></span>
<span v-if="row.AUDIT_STATUS === 3"></span>
</template>
</el-table-column>
<el-table-column prop="PASS_COUNT" label="审核通过人数" align="center" /> <!-- 已更新为申请状态中的审核通过人员数-->
<el-table-column prop="USER_COUNT" label="申请人数" align="center" />
<el-table-column label="操作" align="center" width="200">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleShow(row)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div/>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
<users ref="users"/>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import users from './users'
export default {
components: { Pagination, Treeselect, users },
directives: { waves },
data() {
return {
listQuery: {
page: 1,
limit: 10
},
total: 0,
varList: [],
treeData: [],
companyTreeData: [],
normalizer(node) {
return {
id: node.id,
label: node.name,
children: node.nodes
}
},
MANAGER: null,
TERRITORIALITY: null,
statusList: [{ value: 0, label: '待审核' }, { value: 1, label: '审核中' }, { value: 2, label: '待培训' }, { value: 3, label: '已完成' }],
AUDIT_STATUS: '',
KEYWORDS: ''
}
},
created() {
this.getList()
this.getTreeData()
},
methods: {
getQuery() {
this.$refs.multipleTable.clearSelection()
this.listQuery = {
page: 1,
limit: 10
}
this.getList()
},
goKeyReset() {
this.MANAGER = null
this.TERRITORIALITY = null
this.AUDIT_STATUS = ''
this.KEYWORDS = ''
this.getQuery()
},
getList() {
this.listLoading = true
requestFN(
'/trainingbatch/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
MANAGER: this.MANAGER,
TERRITORIALITY: this.TERRITORIALITY,
AUDIT_STATUS: this.AUDIT_STATUS,
KEYWORDS: this.KEYWORDS,
TYPE: 2,
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
console.log(this.varList)
this.total = data.page.totalResult
})
.catch((e) => {
this.listLoading = false
})
},
//
getTreeData() {
requestFN(
'/regulatoryApi/department/listTree',
{}
).then((data) => {
this.treeData = JSON.parse(data.zTreeNodes)
}).catch((e) => {
})
requestFN(
'/companyApi/department/listTree',
{ CORPINFO_ID: this.$parent.SUPERVISE_CORPINFO_ID }
).then((data) => {
this.companyTreeData = JSON.parse(data.zTreeNodes)
}).catch((e) => {
})
},
handleShow(row) {
this.$refs.users.init(row)
},
goBack() {
this.$parent.activeName = 'List'
}
}
}
</script>

View File

@ -0,0 +1,130 @@
<template>
<div>
<el-dialog :visible.sync="visible" :append-to-body="appendToBody" :before-close="beforeClose" title="审批" width="370px" destroy-on-close>
<el-form>
<el-form-item prop="TERRITORIALITY" label="集团单位 ">
<Treeselect
:options="jituanDanweiTreeData"
:normalizer="normalizer"
v-model="corp_id"
placeholder="请选择集团单位 "
no-options-text="暂无数据"
no-children-text="暂无数据"
style="width: 100%;"
@select="getInfo($event)"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="visible = false"> </el-button>
<el-button type="primary" @click="sendMessage()"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import vueQr from 'vue-qr'
import Treeselect from '@riophae/vue-treeselect'
import { requestFN } from '@/utils/request'
export default {
components: { Treeselect, vueQr },
props: {
appendToBody: {
type: Boolean,
default: false
}
},
data() {
return {
visible: false,
jituanDanwei: '',
loading: false,
jituanDanweiTreeData: [],
normalizer(node) {
return {
id: node.id,
label: node.name,
children: node.nodes
}
},
corp_id: null,
corp_name: '',
heirloom: {}
}
},
methods: {
init(e) {
this.visible = true
this.getCorpinfo()
this.heirloom = JSON.stringify(e)
},
getCorpinfo() {
requestFN(
'/corpinfo/getDataForEditByCorpInfoId',
{
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
tm: new Date().getTime()
}
).then((data) => {
this.corpinfo = data.pd
// jtdw002 1e6dbbe16004402f8d2c0e52afd9a676
// jtdw003 3a854eefa7894e06aaa1a2611bca80f6
// jtdw004 020578a4c1f04bc692ee25145c2efbe5
// jtdw005 90966974de3c4b83aca6f8fd6432d5c2
if (data.pd.CORP_TYPE == 'jtdw002') {
this.jituanDanwei = '1e6dbbe16004402f8d2c0e52afd9a676'
}
if (data.pd.CORP_TYPE == 'jtdw003') {
this.jituanDanwei = '3a854eefa7894e06aaa1a2611bca80f6'
}
if (data.pd.CORP_TYPE == 'jtdw004') {
this.jituanDanwei = '020578a4c1f04bc692ee25145c2efbe5'
}
if (data.pd.CORP_TYPE == 'jtdw005') {
this.jituanDanwei = '90966974de3c4b83aca6f8fd6432d5c2'
}
this.getTreeData()
})
},
getTreeData() {
if (this.jituanDanwei) {
requestFN(
'/companyApi/department/listTree',
{ CORPINFO_ID: this.jituanDanwei }
).then((data) => {
this.jituanDanweiTreeData = JSON.parse(data.zTreeNodes)
}).catch((e) => {
})
}
},
getInfo(e) {
console.log(e)
this.corp_name = e.name
},
beforeClose() {
this.corp_id = null
},
sendMessage(row) {
requestFN(
'/trainingbatch/sendMessage',
{
list: this.heirloom,
corp_id: this.corp_id,
corp_name: this.corp_name,
tm: new Date().getTime()
}
).then((data) => {
this.$message.success('推送成功')
this.visible = false
this.$emit('refresh', '')
})
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -0,0 +1,250 @@
<template>
<div>
<el-dialog :visible.sync="visible" :append-to-body="appendToBody" title="相关方安全告知培训合格证" width="370px">
<div v-for="item in peopleList" :key="item.CLASS_INFO_ID" style="height: 220px">
<div class="bg_table">
<div class="title">相关方安全告知培训合格证</div>
<div class="red">{{ item.CLASS_NO }}</div>
<table class="table">
<tr>
<td style="width: 120px">
<div class="text textone name">姓名</div>
</td>
<td style="width: 100px;">
<div class="text text1 tcenter">{{ item.NAME }}</div>
</td>
<td style="width: 86px">
<div class="text text2 tcenter">工种</div>
</td>
<td style="width: 148px;">
<div v-if="item.JOBS_TYPE" class="text tcenter ">{{ item.JOBS_TYPE }}</div>
<div v-else></div>
</td>
<td rowspan="4" style="width: 134px;">
<img v-if="!getShowPicture(item)" src="../../../../assets/images/peopleHead.png" alt="" style="width: 116px; height: 146px">
<img v-if="getShowPicture(item)" :src="config.fileUrl + item.PHOTO" alt="" style="width: 116px; height: 146px" @click="openPicture(config.fileUrl + item.PHOTO)">
</td>
</tr>
<tr>
<td>
<div class="text textone">资质</div>
</td>
<td colspan="3">
<div v-if="item.CERTIFICATE" class="text">{{ item.CERTIFICATE }}</div>
<div v-else></div>
</td>
</tr>
<tr>
<td>
<div class="text textone">培训时间</div>
</td>
<td colspan="3">
<div class="text">{{ item.OPENING_TIME }}</div>
</td>
</tr>
<tr>
<td>
<div class="text textone">有效期限</div>
</td>
<td colspan="3">
<div class="text">{{ item.VALIDITY_PERIOD_END }}</div>
</td>
</tr>
<tr>
<td>
<div class="text textone">所在单位</div>
</td>
<td colspan="3">
<div class="text">{{ item.DEPARTMENT_NAME }}</div>
</td>
<td rowspan="3" style="padding-top: 6px" @click="click(config.messageUrl + '?CLASS_INFO_ID=' + item.CLASS_INFO_ID)">
<vue-qr :text="config.messageUrl + '?CLASS_INFO_ID=' + item.CLASS_INFO_ID" :margin="0" :size="110" color-dark="#000" color-light="#fff"/>
</td>
</tr>
<tr>
<td>
<div class="text textone">身份证号</div>
</td>
<td colspan="3">
<div class="text">{{ item.CARD_ID }}</div>
</td>
</tr>
<tr>
<td>
<div class="text textone">手机</div>
</td>
<td colspan="3">
<div class="text">{{ item.PHONE }}</div>
</td>
</tr>
</table>
</div>
</div>
</el-dialog>
<QRCode ref="QRcode" append-to-body/>
<Picture ref="Picture" append-to-body/>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import vueQr from 'vue-qr'
import QRCode from './QRCode.vue'
import Picture from './picture.vue'
export default {
components: { QRCode, Picture, vueQr },
props: {
appendToBody: {
type: Boolean,
default: false
}
},
data() {
return {
config: config,
visible: false,
peopleList: [],
CLASS_MESSAGE_ID: '',
CLASS_INFO_ID: '',
USER_ID: '',
qrCodeStr: ''
}
},
methods: {
init(e) {
console.info(e)
if (e && e.CLASS_INFO_ID) {
this.CLASS_INFO_ID = e.CLASS_INFO_ID
}
if (e && e.CLASS_MESSAGE_ID) {
this.CLASS_MESSAGE_ID = e.CLASS_MESSAGE_ID
}
if (e && e.USER_ID) {
this.USER_ID = e.USER_ID
}
this.qrCodeStr = config.messageUrl + '?CLASS_INFO_ID=' + this.CLASS_INFO_ID
this.visible = true
this.getInfo()
},
getInfo() {
requestFN('/trainusers/getUserinfoList', {
CLASS_INFO_ID: this.CLASS_INFO_ID,
CLASS_MESSAGE_ID: this.CLASS_MESSAGE_ID,
USER_ID: this.USER_ID
})
.then((data) => {
this.peopleList = data.list
}).catch((e) => {
console.log(e)
})
},
getShowPicture(row) {
if (row.PHOTO && row.PHOTO !== '' && (row.PHOTO.indexOf('.jpg') >= 0 || row.PHOTO.indexOf('.png') >= 0 || row.PHOTO.indexOf('.jpeg') >= 0)) {
return true
}
},
click(e) {
this.$refs.QRcode.init({ qrCodeStr: e })
},
openPicture(src) {
this.$refs.Picture.init({ src: src })
}
}
}
</script>
<style lang="scss" scoped>
.name{
width: 120px;
overflow: hidden;//
white-space: nowrap; //
text-overflow: ellipsis;//
}
.red {
width: 660px;
color: #ff0000;
margin-left: 34px;
font-size: 24px;
}
.bg_table {
background: url("../../../../assets/tablebg.jpg") no-repeat bottom center;
background-size: 100%;
width: 660px;
height: 430px;
border: 4px solid #453d3a;
transform: scale(0.5);
transform-origin: top left;
.title {
font-size: 28px;
text-align: center;
margin-top: 34px;
font-weight: bold;
color: #000000;
}
.table {
border-collapse: collapse;
width: 590px;
color: #453d3a;
font-size: 20px;
margin: 34px;
text-align: left;
margin-top: 10px;
.tcenter {
text-align: center
}
.w60 {
width: 100px;
}
.w74 {
width: 148px
}
th, td {
border: 2px solid #453d3a;
text-align: left;
height: 40px;
padding: 0 16px;
box-sizing: border-box;
.textone {
width: 80px;
text-align: justify;
text-align-last: justify;
text-justify: distribute-all-lines;
margin: 0 auto;
}
.text1 {
width: 60px;
text-align: justify;
text-align-last: justify;
text-justify: distribute-all-lines;
margin: 0 auto;
}
.text2 {
width: 50px;
text-align: justify;
text-align-last: justify;
text-justify: distribute-all-lines;
margin: 0 auto;
}
.text {
}
}
}
}
</style>

View File

@ -0,0 +1,513 @@
<template>
<div class="app-container">
<el-dialog
v-if="visible"
:visible.sync="visible"
:before-close="handleClose"
:append-to-body="true"
title="申请详情"
width="60%">
<div class="level-title mt-20" style="display: flex;justify-content: space-between;">
<h1>申请信息</h1>
</div>
<table class="table-ui" style="margin-bottom: 20px;">
<tr>
<th style="width: 17%">申请人</th>
<td style="width: 17%">{{ pd.CREATOR }}</td>
<th style="width: 17%">申请时间</th>
<td style="width: 17%">{{ pd.CREATTIME }}</td>
<th style="width: 17%">备注</th>
<td style="width: 15%">{{ pd.DESCR }}</td>
</tr>
<tr>
<th style="width: 30px">安监部门</th>
<td style="width: 50px">{{ pd.SUPERVISION_DEPARTMENT_NAME }}</td>
<th style="width: 30px">审核人</th>
<td style="width: 50px">{{ pd.SUPERVISION_USER_NAME }}</td>
<th style="width: 30px">审核时间</th>
<td style="width: 50px">{{ pd.SUPERVISION_TIME }}</td>
</tr>
<tr>
<th>主管部门</th>
<td>{{ pd.MANAGER_DEPT_NAME }}</td>
<th>审核人</th>
<td>{{ pd.MANAGER_USER_NAME }}</td>
<th>审核时间</th>
<td>{{ pd.MANAGER_TIME }}</td>
</tr>
<tr>
<th>属地管理部门</th>
<td>{{ pd.TERRITORIALITY_DEPARTMENT_NAME }}</td>
<th>审核人</th>
<td>{{ pd.TERRITORIALITY_USER_NAME }}</td>
<th>审核时间</th>
<td>{{ pd.TERRITORIALITY_TIME }}</td>
</tr>
<tr v-if="pd.AUDIT_DESCR">
<th>股份公司意见</th>
<td colspan="5">{{ pd.AUDIT_DESCR }}</td>
</tr>
<tr v-if="pd.CORP_AUDIT_DESCR">
<th>分公司意见</th>
<td colspan="5">{{ pd.CORP_AUDIT_DESCR }}</td>
</tr>
</table>
<div class="level-title">
<h1>申请人员列表</h1>
</div>
<el-table ref="multipleTable" :data="userList" :header-cell-style="{'font-weight': 'bold','color': '#000'}" tooltip-effect="dark" border fit highlight-current-row>
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="USERNAME" label="用户名" align="center" />
<el-table-column prop="NAME" label="姓名" align="center" />
<el-table-column prop="DEPARTMENT_NAME" label="部门" align="center" />
<el-table-column prop="STATE" label="审核状态" align="center" >
<template slot-scope="{row}">
<el-tag v-if="row.MANAGER_STATE === 0 || row.SUPERVISION_STATE === 0 || row.TERRITORIALITY_STATE === 0" type="danger"></el-tag>
<el-tag v-else-if="row.MANAGER_STATE === 1 && row.SUPERVISION_STATE === 1 && row.TERRITORIALITY_STATE === 1" type="success">审核通过</el-tag>
<el-tag v-else type="success">待审核</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="200" >
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleShow(row.USER_ID)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div/>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getUserList" />
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="closeWindow"> </el-button>
</div>
</el-dialog>
<el-dialog
v-if="userInfoDialog"
:visible.sync="userInfoDialog"
:append-to-body="true"
title="查看"
width="60%">
<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>{{ userDetailForm.NAME }}</td>
<th>性别</th>
<td>{{ userDetailForm.SEX === '0' ? '男' : '女' }}</td>
</tr>
<tr>
<th>出生年月</th>
<td>{{ userDetailForm.DATE_OF_BIRTH }}</td>
<th>年龄</th>
<td>{{ userDetailForm.AGE }}</td>
<th>手机号</th>
<td>{{ userDetailForm.PHONE }}</td>
</tr>
<tr>
<th>身份证</th>
<td>{{ userDetailForm.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>{{ userDetailForm.minzuName ? userDetailForm.minzuName : '暂无信息' }}</td>
<th>婚姻状况</th>
<td>{{ userDetailForm.MARITALSTATUS === '0' ? '未婚' : '已婚' }}</td>
<th>政治面貌</th>
<td>{{ userDetailForm.zzName }} {{
userDetailForm.zzName == '中共党员' ? '入党时间' + userDetailForm.POLITICAL_TIME : ''
}}
</td>
</tr>
<tr>
<th>户口所在地</th>
<td>{{ userDetailForm.HKLOCAL ? userDetailForm.HKLOCAL : '暂无信息' }}</td>
<th>现住址</th>
<td>{{ userDetailForm.ADDRESS ? userDetailForm.ADDRESS : '暂无信息' }}</td>
<th>联系电话</th>
<td>{{ userDetailForm.PHONE }}</td>
</tr>
<tr>
<th>文化程度</th>
<td>{{ userDetailForm.DEGREE_OF_EDUCATION_NAME }}</td>
<th>岗位名称(工种)</th>
<td colspan="5">{{ userDetailForm.POST_ID }}</td>
</tr>
<tr>
<th>是否缴纳社保</th>
<td :colspan="userDetailForm.IS_SOCIAL === '1' ? '':5">{{ formatLabel(userDetailForm.IS_SOCIAL) }}</td>
<th v-if="userDetailForm.IS_SOCIAL === '1'"></th>
<td v-if="userDetailForm.IS_SOCIAL === '1'">{{ userDetailForm.SOCIAL_NUMBER }}</td>
<th v-if="userDetailForm.IS_SOCIAL === '1'"></th>
<td v-if="userDetailForm.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(userDetailForm.IS_LEVEL_THREE) }}</td>
<th v-if="userDetailForm.IS_LEVEL_THREE == 1"></th>
<td v-if="userDetailForm.IS_LEVEL_THREE == 1 && photosOfLevel.length>0" colspan="5">
<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>{{ formatLabel(userDetailForm.IS_BF) }}</td>
<th>是否特殊工种</th>
<td>{{ formatLabel(userDetailForm.IS_SPECIAL_JOB) }}</td>
<th>是否流动人员</th>
<td>{{ formatLabel(userDetailForm.ISFLOW) }}</td>
</tr>
</table>
<div class="level-title">
<h1>培训记录</h1>
</div>
<el-table
:data="trainRecordList"
:header-cell-style="{'font-weight': 'bold','color': '#000'}"
tooltip-effect="dark"
border
fit
highlight-current-row>
<el-table-column type="selection" width="55" align="center"/>
<el-table-column type="index" label="序号" width="50" align="center"/>
<el-table-column prop="CLASS_NAME" label="班级名称" align="center"/>
<el-table-column prop="OPENING_TIME" label="开班时间" align="center"/>
<el-table-column prop="TRAINING_TYPE_NAME" label="培训类型" align="center"/>
<el-table-column prop="PLACE_NAME" label="培训地点" align="center"/>
<el-table-column label="培训有效期" align="center">
<template slot-scope="{row}">
<span>{{ formatDate(row.VALIDITY_PERIOD_START) }} {{ formatDate(row.VALIDITY_PERIOD_END) }}</span>
</template>
</el-table-column>
</el-table>
<div v-if="userDetailForm.IS_SPECIAL_JOB == '1'" class="level-title">
<h1>特种作业人员信息</h1>
</div>
<table v-for="(item,index) in specialUsersList" :key="index" class="table-ui" style="margin-bottom: 20px;">
<tr>
<th style="width: 150px">证书名称</th>
<td style="width: 150px">{{ item.CERTIFICATE }}</td>
<th style="width: 150px">作业类别</th>
<td style="width: 180px">{{ item.SPECIAL_TYPE_NAME }}</td>
<th style="width: 150px">操作项目</th>
<td>{{ item.OPERATION_TYPE_NAME }}</td>
</tr>
<tr>
<th>特种作业证书编号</th>
<td>{{ item.SPECIAL_NUMBER }}</td>
<th>发证机关</th>
<td colspan="3">{{ item.ISSUING_AUTHORITY }}</td>
</tr>
<tr>
<th>复审时间</th>
<td>{{ item.REVIEW_TIME }}</td>
<th>有效期</th>
<td colspan="3">{{ item.VALIDITY_TIME_START }} {{ item.VALIDITY_TIME_END }}</td>
</tr>
</table>
<div
v-if="detailForm.SUPERVISION_STATE === 0 || detailForm.MANAGER_STATE === 0 || detailForm.TERRITORIALITY_STATE === 0"
class="level-title mt-20">
<h1>打回信息</h1>
</div>
<table
v-if="detailForm.SUPERVISION_STATE === 0 || detailForm.MANAGER_STATE === 0 || detailForm.TERRITORIALITY_STATE === 0"
class="table-ui"
style="margin-bottom: 20px;">
<tr>
<th>打回人</th>
<td v-if="detailForm.SUPERVISION_STATE === 0">{{ detailForm.SUPERVISION_USER_NAME }}</td>
<td v-if="detailForm.MANAGER_STATE === 0">{{ detailForm.MANAGER_USER_NAME }}</td>
<td
v-if="detailForm.TERRITORIALITY_STATE === 0 && detailForm.MANAGER_USER_NAME !== detailForm.TERRITORIALITY_USER_NAME">
{{ detailForm.TERRITORIALITY_USER_NAME }}
</td>
<th>打回原由</th>
<td v-if="detailForm.SUPERVISION_STATE === 0">{{ detailForm.SUPERVISION_OPINION }}</td>
<td v-if="detailForm.MANAGER_STATE === 0">{{ detailForm.MANAGER_OPINION }}</td>
<td
v-if="detailForm.TERRITORIALITY_STATE === 0 && detailForm.MANAGER_USER_NAME !== detailForm.TERRITORIALITY_USER_NAME">
{{ detailForm.TERRITORIALITY_OPINION }}
</td>
</tr>
</table>
<div slot="footer" class="dialog-footer">
<el-button @click="userInfoDialog = false"> </el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="QRCodeDialog" title="查看二维码" width="680px" class="top-dialog">
<div class="table-qrcode" style="text-align: center;padding-top: 30px;">
<vue-qr :text="qrcodeStr" :margin="0" :size="300" color-dark="#000" color-light="#fff" />
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="QRCodeDialog = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import vueQr from 'vue-qr'
import dateformat from '@/utils/dateformat'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
components: {
Pagination,
vueQr
},
data() {
return {
config: config,
contractFileList: [], //
insuranceFileList: [], //
userInfoDialog: false,
QRCodeDialog: false,
qrcodeStr: '',
userDetailForm: {},
userEntryForm: {},
specialUsersList: {},
imgUrl: '',
wenhuachengduList: [], //
userCardIDPhotoFile: [], //
postList: [], //
trainRecordList: [], //
visible: false,
pd: {},
userList: [],
listQuery: {
page: 1,
limit: 10
},
total: 0,
photosOfLevel: []
}
},
methods: {
formatDate(date, column) {
if (date) {
return dateformat(date, 'YYYY-MM-DD')
} else {
return ''
}
},
init(e) {
if (e) {
this.pd = e
}
this.visible = true
this.userList = []
this.getDict()
this.getUserList()
},
//
getDict: function() {
requestFN(
'/dictionaries/getLevels',
{
DICTIONARIES_ID: '1144b16d85f14b108ea7859e2be9d001'
}
).then((data) => {
this.flowAreaList = data.list
}).catch((e) => {
})
requestFN(
'dictionaries/getLevels',
{ DICTIONARIES_ID: 'd7d80f08d73a4accbccf4fd3d8d1d867' }
).then((data) => {
this.wenhuachengduList = data.list
}).catch((e) => {
this.listLoading = false
})
requestFN(
'dictionaries/getLevels',
{ DICTIONARIES_ID: '09e36ac01e9540f8bc84eab1c1a78754' }
).then((data) => {
this.postList = data.list
}).catch((e) => {
this.listLoading = false
})
},
//
getUserList() {
requestFN(
'/trainingbatch/batchUserList?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
TRAININGBATCH_ID: this.pd.TRAININGBATCH_ID
}
).then((data) => {
this.userList = data.varList
this.total = data.page.totalResult
}).catch((e) => {
})
},
//
showQRCode(id) {
this.QRCodeDialog = true
const arr = [{ USER_ID: id, CODE_TYPE: '1' }]
this.qrcodeStr = JSON.stringify(arr)
},
//
async handleShow(USER_ID) {
await this.getUserInfoById(USER_ID)
await this.getOtherUserInfoById(USER_ID)
this.userInfoDialog = true
},
getUserInfoById(id) {
return new Promise((resolve, reject) => {
requestFN(
'/user/getFloatPersonDetailById',
{
USER_ID: id,
TRAININGBATCH_ID: this.pd.TRAININGBATCH_ID,
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID
}
).then((data) => {
this.userDetailForm = Object.assign(this.userDetailForm, data.userDetail)
this.userEntryForm = Object.assign(this.userEntryForm, data.eCard)
if (this.userDetailForm.PHOTO) {
this.imgUrl = config.fileUrl + this.userDetailForm.PHOTO
}
this.trainRecordList = data.recordList
// this.insuranceFileList = data.insuranceFile
// this.contractFileList = data.contractFile
resolve()
}).catch((e) => {
reject()
})
})
},
getOtherUserInfoById(id) {
return new Promise((resolve, reject) => {
requestFN(
'user/getDetailByUserIdAndCorpInfoId',
{
USER_ID: id,
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
CER_TYPE: '7498057c4c1f4a11b9a960e66ea04a7a'
}
).then((data) => {
Object.assign(this.userDetailForm, data.pd)
this.userPhotoFile = data.userPhotoFile
if (this.userPhotoFile.length > 0) {
this.imgUrl = config.fileUrl + this.userPhotoFile[0].FILEPATH
}
this.insuranceFileList = data.insuranceFile
this.specialUsersList = data.specialUsers
this.contractFileList = data.contractFile
this.userCardIDPhotoFile = data.userCardIDPhotoFile
this.socialPhotoFile = data.socialPhotoFile
this.gongshangbaoxianFile = data.gongshangbaoxianFile
resolve()
}).catch((e) => {
reject()
})
})
},
//
formatLabel(value) {
if (value == '1') {
return '是'
} else if (value == '0') {
return '否'
} else {
return ''
}
},
//
formatDictioariesLabel(value, type) {
var list = []
if (type == '0') {
list = this.wenhuachengduList
} else if (type == '1') {
list = this.postList
}
if (value) {
if (list.length > 0) {
var data = ''
for (let i = 0; i < list.length; i++) {
const obj = list[i]
if (value == obj.BIANMA) {
data = obj.NAME
break
}
}
return data
} else {
return value
}
} else {
return ''
}
},
handleClose() {
this.visible = false
},
closeWindow() {
this.handleClose()
}
}
}
</script>

View File

@ -0,0 +1,23 @@
<template>
<component :is="activeName" />
</template>
<script>
import List from './components/list'
import Record from './components/record'
export default {
components: {
List: List,
Record: Record
},
data() {
return {
activeName: 'List',
SUPERVISE_CORPINFO_ID: ''
}
}
}
</script>
<style scoped>
</style>

View File

@ -7,6 +7,13 @@
<el-input v-model="KEYWORDS" placeholder="请输入用户名"/>
</el-form-item>
</el-col>
<el-col v-if="false" :span="6">
<el-form-item label="推送状态">
<el-select v-model="SENDSTATUS" placeholder="请选择推送状态" style="width: 100%;" clearable>
<el-option v-for="item in sendStatusList" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
</el-form-item>
</el-col>
<el-col v-if="false" :span="6">
<el-form-item label="培训状态">
<el-select v-model="STATUS" placeholder="请选择培训状态" style="width: 100%;" clearable>
@ -25,6 +32,11 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col>
<div style="font-size: 10px; color: red">温馨提示用户要上传身份证正反面身份证照片数量是2张, 才能进行人员培训</div>
</el-col>
</el-row>
</el-form>
<el-table
ref="multipleTable"
@ -105,6 +117,8 @@ export default {
value: 2,
label: '已培训(合格)'
}, { value: 3, label: '已培训(不合格)' }, { value: 9, label: '申请中' }],
sendStatusList:[{value:'0', label:'未推送'},{value:'1', label:'已推送'}],
SENDSTATUS:'0',
STATUS: '',
add: false, //
del: false, //

View File

@ -1,22 +1,64 @@
<template>
<div>
<el-dialog
v-loading="loading"
:visible.sync="visible"
:append-to-body="appendToBody"
:before-close="beforeClose"
title="推送"
width="500px"
width="1100px"
destroy-on-close>
<el-form label-position="right" label-width="100px">
<el-form-item prop="TERRITORIALITY" label="集团单位 ">
<el-select v-model="corp_id" placeholder="请选择集团单位 " style="width: 90%" @change="getInfo">
<el-option
v-for="item in jituanDanweiTreeData"
:key="item.CORPINFO_ID"
:label="item.CORP_NAME"
:value="JSON.stringify(item)"/>
</el-select>
</el-form-item>
<el-form ref="form" :model="form" :rules="rules" label-width="200px" label-position="right" type="flex">
<el-row>
<el-col :span="12">
<el-form-item prop="APPOINT_CORP_ID" label="单位 ">
<el-select v-model="corp_id" filterable placeholder="请选择单位 " style="width: 300px" @change="getInfo">
<el-option
v-for="item in jituanDanweiTreeData"
:key="item.CORPINFO_ID"
:label="item.CORP_NAME"
:value="JSON.stringify(item)"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="APPOINT_DEPARTMENT_ID" label="指定部门:">
<Treeselect
:options="departmentTree"
:normalizer="normalizer"
:default-expand-level="3"
v-model="form.APPOINT_DEPARTMENT_ID"
placeholder="请选择部门"
no-options-text="暂无数据"
no-children-text="暂无数据"
style="width: 300px"
@select="getPeopleList($event)"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop="APPOINT_USER_ID" label="指定审批人:">
<el-select v-model="form.user" style="width: 300px" placeholder="请选择" @change="chooseUser">
<el-option v-for="item in peopleList" :key="item.USER_ID" :value="JSON.stringify(item)" :label="item.NAME"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop="APPOINT_ANNEX" label="承诺书:">
<upload-file
:file-list.sync="form.APPOINT_ANNEX"
:multiple="false"
:accept="'.pdf,.jpg,.png,doc,docx'"
:limit="20"
:size="1024"
:upload-type="1"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="visible = false"> </el-button>
@ -30,9 +72,11 @@
import vueQr from 'vue-qr'
import Treeselect from '@riophae/vue-treeselect'
import { requestFN } from '@/utils/request'
import uploadFile from '../../../util/uploadFile/index.vue'
import { upload } from '@/utils/upload'
export default {
components: { Treeselect, vueQr },
components: { Treeselect, vueQr, uploadFile },
props: {
appendToBody: {
type: Boolean,
@ -48,7 +92,43 @@ export default {
corp_id: null,
corp_name: '',
heirloom: {},
listFlag: false
listFlag: false,
departmentTree: [],
peopleList: [],
normalizer(node) {
return {
id: node.id,
label: node.name,
children: node.nodes
}
},
form: {
STATUS: null,
APPOINT_CORP_ID: '',
APPOINT_CORP_NAME: '',
APPOINT_DEPARTMENT_ID: null,
APPOINT_DEPARTMENT_NAME: '',
APPOINT_USER_ID: '',
APPOINT_USER_NAME: '',
APPOINT_ANNEX: [],
user: '',
tm: new Date().getTime(),
list: []
},
rules: {
APPOINT_DEPARTMENT_ID: [
{ required: true, message: '请选择指定部门', trigger: 'change' }
],
APPOINT_USER_ID: [
{ required: true, message: '请选择指定审批人', trigger: 'change' }
],
APPOINT_CORP_ID: [
{ required: true, message: '请选择企业', trigger: 'change' }
],
APPOINT_ANNEX: [
{ required: true, message: '请上传文件', trigger: 'change' }
]
}
}
},
methods: {
@ -75,37 +155,104 @@ export default {
'/department/getPreventCrop',
).then((data) => {
this.jituanDanweiTreeData = data.data
this.jituanDanweiTreeData.push({ CORPINFO_ID: '1', CORP_NAME: '秦皇岛港股份有限公司' })
}).catch((e) => {
})
},
getInfo(e) {
const info = JSON.parse(e)
this.corp_name = info.CORP_NAME
this.form.APPOINT_CORP_ID = info.CORPINFO_ID
this.form.APPOINT_CORP_NAME = info.CORP_NAME
this.form.APPOINT_DEPARTMENT_ID = null
this.form.APPOINT_DEPARTMENT_NAME = ''
this.form.APPOINT_USER_ID = ''
this.form.APPOINT_USER_NAME = ''
this.form.user = ''
this.getDepartmentTree()
},
beforeClose() {
this.corp_id = null
this.visible = false
this.form = {
STATUS: null,
APPOINT_CORP_ID: '',
APPOINT_CORP_NAME: '',
APPOINT_DEPARTMENT_ID: null,
APPOINT_DEPARTMENT_NAME: '',
APPOINT_USER_ID: '',
APPOINT_USER_NAME: '',
user: '',
tm: new Date().getTime(),
list: []
}
},
sendMessage() {
const corp_id = JSON.parse(this.corp_id).CORPINFO_ID
requestFN(
'/trainingbatch/sendMessage',
{
list: this.heirloom,
corp_id: corp_id,
corp_name: this.corp_name,
tm: new Date().getTime()
}
).then((data) => {
if (data.code !== '0') {
this.$message.error(data.msg)
this.$refs.form.validate((valid) => {
if (!valid) {
this.$message.error('请填写完整信息')
} else {
this.$message.success('推送成功')
this.visible = false
this.$emit('refresh', '')
if (this.form.APPOINT_CORP_ID === this.form.APPOINT_DEPARTMENT_ID) {
this.$message.error('不能选择主部门或主账号')
return
}
this.form.list = this.heirloom
const formData = new FormData()
Object.keys(this.form).map(key => {
formData.append(key, this.form[key])
})
for (let i = 0; i < this.form.APPOINT_ANNEX.length; i++) {
formData.append('chenNuoShu', this.form.APPOINT_ANNEX[i].raw)
}
this.loading = true
upload('/trainingbatch/sendMessage', formData
).then((data) => {
if (data.code !== '0') {
this.$message.error(data.msg)
} else {
this.$message.success('推送成功')
this.visible = false
this.$emit('refresh', '')
this.beforeClose()
this.loading = false
}
})
}
})
},
getDepartmentTree() {
requestFN(
'/companyApi/department/listTree',
{ CORPINFO_ID: this.form.APPOINT_CORP_ID }
).then((data) => {
this.departmentTree = this.removeEmptyChildren(JSON.parse(data.zTreeNodes))
}).catch((e) => {
console.log(e)
})
},
getPeopleList(e) {
this.form.APPOINT_DEPARTMENT_NAME = e.name
requestFN(
'/companyApi/user/listAll',
{
DEPARTMENT_ID: e.id,
CORPINFO_ID: JSON.parse(this.corp_id).CORPINFO_ID
}
).then((data) => {
this.form.APPOINT_USER_ID = ''
this.form.APPOINT_USER_NAME = ''
this.form.user = ''
this.peopleList = data.userList
}).catch((e) => {
console.log(e)
})
},
chooseUser(e) {
const entity = JSON.parse(e)
this.form.APPOINT_USER_ID = entity.USER_ID
this.form.APPOINT_USER_NAME = entity.NAME
}
}
}
</script>

View File

@ -107,6 +107,68 @@
</td>
</tr>
<tr>
<th>是否按期缴纳工伤保险</th>
<td :colspan="userDetailForm.IS_INJURIES_PAY === '1' ? '':5">{{ formatLabel(userDetailForm.IS_INJURIES_PAY) }}</td>
<th v-if="userDetailForm.IS_INJURIES_PAY === '1'"></th>
<td v-if="userDetailForm.IS_INJURIES_PAY === '1'">{{ userDetailForm.IS_INJURIES_PAY_TIME }}</td>
<th v-if="userDetailForm.IS_INJURIES_PAY === '1'"></th>
<td v-if="userDetailForm.IS_INJURIES_PAY === '1'">
<span>
<viewer>
<img
v-for="item in gongshangbaoxianFile"
:src="config.fileUrl + item.FILEPATH"
:key="item.IMGFILES_ID"
width="40"
height="40"
style="object-fit: cover;">
</viewer>
</span>
</td>
</tr>
<tr>
<th>是否缴纳商业保险</th>
<td :colspan="userDetailForm.ISPAY === '1' ? '' : 5">
{{ formatLabel(userDetailForm.ISPAY) }}
</td>
<th v-if="userDetailForm.ISPAY === '1'"></th>
<td v-if="userDetailForm.ISPAY === '1'">
<span>
<viewer>
<img
v-for="item in insuranceFileList"
:src="config.fileUrl + item.FILEPATH"
:key="item.IMGFILES_ID"
width="40"
height="40"
style="object-fit: cover;">
</viewer>
</span>
</td>
<th v-if="userDetailForm.ISPAY === '1'"></th>
<td v-if="userDetailForm.ISPAY === '1'">{{ userDetailForm.ISPAY_NUMBER }}</td>
</tr>
<tr>
<th>是否签订劳动合同</th>
<td :colspan="userDetailForm.IS_SIGN_LABOR === '1' ? '' : 5">
{{ formatLabel(userDetailForm.IS_SIGN_LABOR) }}
</td>
<th v-if="userDetailForm.IS_SIGN_LABOR === '1'"></th>
<td v-if="userDetailForm.IS_SIGN_LABOR === '1'" colspan="3">
<span>
<viewer>
<img
v-for="item in contractFileList"
:src="config.fileUrl + item.FILEPATH"
:key="item.IMGFILES_ID"
width="40"
height="40"
style="object-fit: cover;">
</viewer>
</span>
</td>
</tr>
<tr/><tr>
<th>是否参加三级安全培训</th>
<td>{{ formatLabel(userDetailForm.IS_LEVEL_THREE) }}</td>
<th v-if="userDetailForm.IS_LEVEL_THREE == 1"></th>

View File

@ -39,14 +39,16 @@ export default {
},
info: {
type: String,
default: '文件大小不超过500kb'
default: '文件大小不超过500MB'
}
},
data() {
return {
dialogImageUrl: '',
dialogVisible: false,
disabled: false
disabled: false,
file: {},
file_name: ''
}
},
methods: {
@ -63,15 +65,29 @@ export default {
const isLt2M = file.size / 1024 / 1024 < this.fileSize
if (!isLt2M) {
this.$message.error('上传视频大小不能超过 ' + this.fileSize + 'MB!')
this.$refs.uploadFile.clearFiles()
this.$refs.uploadFile.handleRemove(file)
return false
}
let nameNumber = 0
for (let j = 0; j < fileList.length; j++) {
if (fileList[j].name === file.name) {
nameNumber = nameNumber + 1
}
}
if (nameNumber > 1) {
this.$message.error('文件名重复,请重新选择!')
this.$refs.uploadFile.handleRemove(file)
return false
}
this.$emit('update:fileList', fileList)
},
onRemove(file, fileList) {
this.$emit('update:fileList', fileList)
},
handleExceed(files, fileList) {
console.log(files, fileList)
this.$message.warning(`当前限制选择 ${this.limit} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`)
}
}

View File

@ -1,11 +1,16 @@
const config = {
weburl: 'http://192.168.151.43:8088/', // 前台地址
// weburl: 'http://192.168.151.43:8088/', // 前台地址
// httpurl: 'http://192.168.151.43:8088/', // 后台地址
httpurl: '/api', // 后台地址
weburl: 'http://192.168.0.49:8088/', // 前台地址
httpurl: 'http://192.168.0.49:8088/', // 后台地址
qyurl: 'http://192.168.151.43:8088/', // 企业前台
adminurl: 'https://www.qdkjchina.com/qa-prevention-admin/',
// 正式
fileUrl: 'https://qgqy.qhdsafety.com/file/', // 附件服务器地址,
// fileUrl: 'http://192.168.192.201:8991/file/', // 附件服务器地址,
// 测试
fileUrl: 'http://wwag.qhdsafety.com/file/', // 附件服务器地址,
publicKey: 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2zCyUYSD0pNrbtaYdvGfHfWoRV+fo/2N9O2PLLz/jZvMkigkq4eAq4JO+Ek0wDHI9WxP6iTSLYCHhIOs9CQTPvyldJFm8riZtQZlBTD8Plkb3rjrgwTqbBi3w3+HKYdkSvGFXJIdSOPbpXnj5BzN8vlVaybs24R/vpUzG9178lwIDAQAB',
httpJgUrl: 'http://192.168.151.56:8092/',
messageUrl: 'http://192.168.151.56:8082/static/qrcode/views/xgf_hgz/index.html'

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -71,7 +71,7 @@
<a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a>
</div>
-->
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript">

View File

@ -321,7 +321,7 @@
<div style="padding: 0 20px;">
<a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a>
</div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript">

View File

@ -82,7 +82,7 @@
<script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript">

View File

@ -119,7 +119,7 @@
</div>
</div>
</div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript">

View File

@ -36,7 +36,7 @@
<van-image-preview v-model="show" :images="images" :start-position="startPosition">
</van-image-preview>
</div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript">
var vm = new Vue({
el: '#app',

View File

@ -113,7 +113,7 @@
<van-image-preview v-model="show" :images="images" :start-position="startPosition">
</van-image-preview>
</div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript">
var vm = new Vue({
el: '#app',

View File

@ -70,7 +70,7 @@
<div style="padding: 0 20px;">
<a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a>
</div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript">

View File

@ -85,7 +85,7 @@
</ul>
</div>
</div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script>

View File

@ -321,7 +321,7 @@
<div style="padding: 0 20px;">
<a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a>
</div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript">

View File

@ -82,7 +82,7 @@
<script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript">

View File

@ -60,7 +60,7 @@
<div style="padding: 0 20px;margin-top:20px">
<a href="javascript:;" class="weui-btn bg-blue" style="font-size: 14px;line-height:2.6;" onclick="back()">返回列表</a>
</div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../bi/js/pre-loader.js"></script>
<script src="../../../bi/js/sweetalert.min.js"></script>
<script type="text/javascript">

View File

@ -160,7 +160,7 @@
<div class="text textone">所在单位</div>
</td>
<td colspan="3">
<div class="text">{{ message.DEPARTMENT_NAME }}</div>
<div class="text">{{ message.BELONG_TO_CORP_NAME }}</div>
</td>
<td rowspan="3">
<div class="qrcode"></div>
@ -303,8 +303,8 @@
<div class="training_records">
<table>
<tr>
<td>培训开始时间</td>
<td>培训结束时间</td>
<td>培训时间</td>
<td>有效期限</td>
<td>培训部门</td>
<td>培训结果</td>
</tr>
@ -366,7 +366,7 @@
</van-cell-group>
</div>
</div>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript">
var vm = new Vue({
el: '#app',

1
更新.md Normal file
View File

@ -0,0 +1 @@
升级内容: 企业端PC 1、新增-三人以上风险分布图菜单-分公司进行上传维护 2、新增-人员聚集分布图菜单-分公司进行上传维护 3、新增-人员培训申请-分公司进行申请培训 4、新增-相关方人员撤场申请审批-分公司审批相关方人员撤回申请 监管端PC 1、新增-三人以上风险分布图菜单,查看分公司数据 2、新增-人员聚集分布图菜单,查看分公司数据 3、优化-重点工程菜单-搜索条件可以手动输入,主管部门和监管部门可以选择全部企业 4、优化-入场告知培训管理-优化审核流程 相关方PC 1、新增-人员推送申请-相关方对分公司推送人员 2、新增-人员撤回申请-相关方对分公司申请撤回人员 企业端APP 1、优化-动火作业-监火改为选择部门 2、新增-查看重点工程监控视频 3、新增-重点工程创建人审核开工申请和结束申请 监管端APP 1、新增-查看重点工程监控视频 2、新增-重点工程创建人审核开工申请和结束申请 一公司app 1、新增-原来动火作业改为国标新动火作业审批流程