Compare commits

..

No commits in common. "八项作业" and "main" have entirely different histories.

55 changed files with 9655 additions and 9254 deletions

View File

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

View File

@ -54,18 +54,6 @@ Vue.config.productionTip = false
Vue.use(Element, {
size: Cookies.get('size') || 'small' // set element-ui default size
})
// 树数据结构去除空子级
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',

View File

@ -1,174 +0,0 @@
<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

@ -1,21 +0,0 @@
<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="这里输入用户名..." @blur="goCheck()" />
<el-input v-model="form.USERNAME" :disabled="dialogType == 'editUser'" placeholder="这里输入用户名..." />
</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="这里输入身份证号..." @blur="goCheck()"/>
<el-input v-model="form.CARD_ID" placeholder="这里输入身份证号..."/>
</el-form-item>
</el-col>
<el-col :span="12">
@ -88,17 +88,10 @@
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">
@ -190,7 +183,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col v-show="form.POLITICAL_STATUS === 'zhonggongdangyuan'" :span="12">
<el-col v-if="form.POLITICAL_STATUS=='zhonggongdangyuan'" :span="12">
<el-form-item label="入党时间" prop="POLITICAL_TIME">
<el-date-picker
v-model="form.POLITICAL_TIME"
@ -241,165 +234,74 @@
</el-col>
</el-row>
<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-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-form>
</div>
<div class="ui-height"/>
<div class="ui-foot">
<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 v-show="dialogType == 'saveUser'" :loading="buttonLoading" type="success" @click="confirm"> </el-button>
<el-button plain type="info" @click="goBack"> </el-button>
</div>
</div>
@ -545,8 +447,6 @@ export default {
callback()
}
return {
ISCHECK: false,
ISPUSH: false,
buttonLoading: false,
DEPARTMENT_NAME: '',
dayTime: [],
@ -590,7 +490,7 @@ export default {
],
rules: {
NAME: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
NATIONALITY: [{ required: true, message: '民族不能为空', trigger: 'blur' }],
NATIONALITY: [{ required: false, message: '民族不能为空', trigger: 'blur' }],
IS_BF: [{ required: true, message: '请选择是否缴纳保险', trigger: 'blur' }],
IS_SOCIAL: [{ required: true, message: '请选择是否缴纳社保', trigger: 'blur' }],
POLITICAL_STATUS: [{ required: true, message: '请选择政治面貌', trigger: 'blur' }],
@ -598,7 +498,7 @@ export default {
USERNAME: [
{ required: true, message: '用户名不能为空', trigger: 'blur' },
{
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0-9]|18[0-9]|19[0-9])\d{8}$/,
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[0-9])\d{8}$/,
message: '用户名为手机号,请正确输入'
},
{ validator: hasName, trigger: 'blur' }
@ -648,7 +548,6 @@ export default {
},
{ validator: hasCARD, trigger: 'blur' }
],
EMAIL: [{ required: true, message: '电子邮箱不能为空', trigger: 'blur' }],
AGE: [{ required: true, message: '年龄不能为空', trigger: 'blur' },
{
pattern: /^\d{2}$/,
@ -835,79 +734,6 @@ 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
@ -1062,39 +888,12 @@ 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.append('CORPINFO_ID', JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID)
upload(
'/user/' + this.dialogType,
formData
).then((data) => {
this.goPush(data.pd)
this.$parent.activeName = 'List'
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>
@ -87,7 +87,6 @@
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>
@ -134,8 +133,8 @@
<el-input v-model="form.AGE" type="number" placeholder="这里输入年龄..." disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="户口所在地" prop="HKLOCAL" class="input-width">
@ -171,6 +170,7 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="政治面貌" prop="POLITICAL_STATUS">
@ -184,7 +184,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,6 +197,7 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="是否缴纳社保" prop="IS_SOCIAL">
@ -235,100 +236,6 @@
</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">
@ -398,8 +305,7 @@
</div>
<div class="ui-height"/>
<div class="ui-foot">
<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 :loading="buttonLoading" type="success" @click="confirm"> </el-button>
<el-button plain type="info" @click="goBack"> </el-button>
</div>
</div>
@ -545,8 +451,6 @@ export default {
callback()
}
return {
ISCHECK: false,
USER_ID: "",
imgDelKey: [],
zhebaoUpload: false, //
photosOfLevel: false, //
@ -593,12 +497,12 @@ export default {
rules: {
NAME: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
POLITICAL_STATUS: [{ required: true, message: '请选择政治面貌', trigger: 'blur' }],
NATIONALITY: [{ required: true, message: '请选择民族', trigger: 'blur' }],
NATIONALITY: [{ required: false, 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[0-9]|18[0-9]|19[0-9])\d{8}$/,
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[0-9])\d{8}$/,
message: '用户名为手机号,请正确输入'
},
{ validator: hasName, trigger: 'blur' }
@ -635,7 +539,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[0-9]|18[0-9]|19[0-9])\d{8}$/,
pattern: /^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[0-9])\d{8}$/,
message: '请输入正确的手机号码'
}],
ROLE_ID: [{ required: true, message: '请选择角色', trigger: 'change' }],
@ -894,81 +798,6 @@ 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) => {
@ -1141,8 +970,7 @@ export default {
},
//
confirm() {
this.$refs.form.validate((valid, errorFields) => {
console.log(errorFields)
this.$refs.form.validate(valid => {
if (valid) {
if (this.form.userCardFile.length < 2) {
this.$message.error('请上传身份证正反面照片')
@ -1180,33 +1008,6 @@ 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) {
@ -1234,10 +1035,11 @@ export default {
formData
).then((data) => {
this.$message.success('保存成功!')
this.goPush(data.pd)
this.$parent.activeName = 'List'
this.listLoading = false
this.buttonLoading = false
}).catch((e) => {
this.$message.success('保存失败!')
this.listLoading = false
this.buttonLoading = false
})
@ -1286,24 +1088,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
@ -1347,6 +1149,7 @@ export default {
}
})
},
changeLearnerCategory() {
this.form.LEARNERCATEGORY = ''
if (this.form.LEARNERCATEGORYSTATUS === 'select') {
@ -1363,6 +1166,7 @@ export default {
this.form.LEARNERCATEGORYSTATUS = 'select'
}
},
//
hasButton() {
var keys = 'user:add,user:del,user:edit'
@ -1427,6 +1231,7 @@ export default {
this.form.insuranceFileList.push(file)
this.hideInsuranceUpload = fileList.length >= 4
},
// remove
handleInsuranceFileRemove(file, fileList) {
this.form.insuranceFileList = fileList
@ -1445,6 +1250,7 @@ export default {
this.form.contractFileList.push(file)
this.hideContractUpload = fileList.length >= 4
},
// remove
handleContractFileRemove(file, fileList) {
this.form.contractFileList = fileList

View File

@ -118,7 +118,12 @@
<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"></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 == 9"></el-tag>
</span>
<span v-else />
@ -141,11 +146,10 @@
<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)"></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>
<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>
</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>
@ -458,47 +462,6 @@ 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
},
@ -635,8 +598,7 @@ export default {
PHONE: row.PHONE,
CARD_ID: row.CARD_ID,
DEPARTMENT_NAME: row.DEPARTMENT_NAME,
CORPINFO_ID: row.CORPINFO_ID,
ISPUSH: row.ISPUSH
CORPINFO_ID: row.CORPINFO_ID
}
).then((data) => {
if (data.result == 'success') {
@ -672,8 +634,7 @@ export default {
DEPART_STATE: this.DEPART_STATE,
BASIC_STATE: this.BASIC_STATE,
CARD_ID: this.ID_CARD,
USER_ID: this.USER_ID,
ISPUSH: '1'
USER_ID: this.USER_ID
}
).then((data) => {
this.listLoading = false
@ -694,7 +655,7 @@ export default {
})
},
//
enableORDisable(ISUSE, row) {
enableORDisable(ISUSE, USER_ID) {
this.$confirm(ISUSE === '0' ? '确定要启用该账户吗?' : '确定要禁用该账户吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@ -704,8 +665,8 @@ export default {
requestFN(
'/user/editisuse',
{
USER_ID: row.USER_ID,
ISUSE: ISUSE
USER_ID,
ISUSE
}
).then(() => {
this.$message({
@ -715,8 +676,7 @@ export default {
this.listLoading = false
this.varList = []
this.listQuery.page = 1
row.ISUSE = ISUSE
this.goPush(row)
this.getList()
}).catch((e) => {
this.listLoading = false
})
@ -791,24 +751,11 @@ export default {
dangerouslyUseHTMLString: true
})
} else {
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.$message({
message: '导入成功。</br>一共解析了' + data.importCount + '条数据。</br>其中新增' + data.saveCount + '条数据。' + '修改' + data.updCount + '条数据。</br>',
dangerouslyUseHTMLString: true,
type: 'success'
})
this.dialogFormDaoru = false
this.getList()
}

View File

@ -7,8 +7,8 @@
<h1>人员信息</h1>
</div>
<tr>
<th style="width: 200px">照片</th>
<td style="width: 400px">
<th>照片</th>
<td>
<span v-if="imgUrl != ''">
<div class="img-flex">
<viewer>
@ -18,9 +18,9 @@
</span>
<span v-else/>
</td>
<th style="width: 200px">姓名</th>
<th>姓名</th>
<td>{{ dataForm.NAME }}</td>
<th width="200px">性别</th>
<th>性别</th>
<td>{{ dataForm.SEX === '0' ? '男' : '女' }}</td>
</tr>
<tr>
@ -102,68 +102,6 @@
</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>
@ -187,7 +125,7 @@
<th>是否特殊工种</th>
<td >{{ formatLabel(dataForm.IS_SPECIAL_JOB) }}</td>
<th>是否流动人员</th>
<td colspan="3">{{ formatLabel(dataForm.ISFLOW) }}</td>
<td >{{ formatLabel(dataForm.ISFLOW) }}</td>
</tr>
</table>
</div>
@ -308,11 +246,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

@ -1,326 +0,0 @@
<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

@ -1,41 +0,0 @@
<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,23 +41,16 @@
<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">
@ -69,7 +62,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">
@ -92,7 +85,6 @@
v-model="dataForm.POSSESSION"
:options="areaList"
:props="areaProps"
:append-to-body="false"
:placeholder="dataForm.COMPANY_AREA"
style="width: 100%"
@change="cascaderChange"
@ -192,7 +184,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>
@ -504,7 +496,7 @@ export default {
corpName: '',
AUDIT_STATE: '',
dataForm: {
MAIN_DEPARTMENT: null,
MAIN_DEPARTMENT: '',
businessLicenseDate: [],
STATE: '',
SUPERVISE_CORPINFO_DEPT_NAME: '',
@ -692,11 +684,11 @@ export default {
],
TOTAL_ASSETS: [
{ required: true, message: '资产总额不能为空', trigger: 'blur' },
{ min: 1, max: 15, message: '请正确的资产总额', trigger: 'blur' }
{ min: 1, max: 5, message: '请正确的资产总额', trigger: 'blur' }
],
REGISTERED_CAPITAL: [
{ required: true, message: '注册资金不能为空', trigger: 'blur' },
{ min: 1, max: 15, message: '请正确的注册资金', trigger: 'blur' }
{ min: 1, max: 5, message: '请正确的注册资金', trigger: 'blur' }
],
EMPLOYMENT_FORM: [{ required: true, message: '请选择用工形式', trigger: 'blur' }],
SELECT_FORMS: [{ required: true, message: '请选择选取形式', trigger: 'blur' }]
@ -768,7 +760,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()
@ -852,11 +844,6 @@ export default {
{}
).then((data) => {
this.treeData = JSON.parse(data.zTreeNodes)
this.treeData.push({
id: '0',
name: '无',
nodes: []
})
resolve()
}).catch((e) => {
reject()
@ -890,7 +877,6 @@ 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) {
@ -909,16 +895,37 @@ 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
if (this.dataForm.MAIN_DEPARTMENT.indexOf('[') > -1) {
this.dataForm.MAIN_DEPARTMENT = JSON.parse(this.dataForm.MAIN_DEPARTMENT)
} else {
this.dataForm.MAIN_DEPARTMENT = [this.dataForm.MAIN_DEPARTMENT]
}
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
} else {
this.getDictByDicId('f2598ba72e864eadabf0ca4b664d26b9').then(data => {
this.hylxList = data
})
}
//
if (data.dep) {
this.mainDepartment = data.dep.MAIN_REGULATORY_DEPARTMENT_NAME
this.regulatoryDepartment = data.dep.REGULATORY_DEPARTMENT_NAME
}
console.log('this.form', this.form) */
resolve()
}).catch((e) => {
console.log(e)
this.$message({
message: '操作失败',
type: 'error'
@ -929,6 +936,9 @@ 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
@ -942,6 +952,11 @@ export default {
this.$refs.corpOfTypeRef.handleNodeClick(node)
})
}
// const nodea = {}
// nodea.id = this.form.TRAINTYPE
// this.$nextTick(() => { // 使
// this.$refs.keyHyRef.handleNodeClick(nodea)
// })
this.$forceUpdate()
},
/** 上级企业选择 Begin */
@ -1024,7 +1039,6 @@ 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,6 +16,11 @@
@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"
@ -78,6 +83,23 @@
<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>
@ -364,7 +386,6 @@ 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

@ -1,174 +0,0 @@
<template>
<div v-if="!isDetails" class="app-container">
<div class="page">
<el-form label-width="130px">
<div class="filter-container">
<el-form-item label="关键字1">
<el-input v-model="search.value1" placeholder="关键字1" class="filter-item" style="width: 200px;" />
</el-form-item>
<el-form-item label="关键字2">
<el-input v-model="search.value2" placeholder="关键字2" class="filter-item" style="width: 200px;" />
</el-form-item>
<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>
</div>
</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="APPLICANT" label="发起人" align="center" />
<el-table-column prop="GUARDIAN" label="监护人" align="center" />
<el-table-column prop="ACCEPT" label="验收人" align="center" />
<el-table-column prop="ACCEPT_CONFESS" label="接受交底人" align="center" />
<el-table-column prop="CONFESS" label="安全交底人" align="center" />
<el-table-column label="操作" align="center" width="250">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="procedure(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="onDetails(row.EW_RU_TASK_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="getList" />
</div>
</div>
<CourseSteps :dialog-visible="dialogVisible" :agency-list="agencyList" :step-active="1" :step-data="stepData" @close="onClose" />
</div>
<Details v-else :EW_RU_TASK_ID="EW_RU_TASK_ID" :split-list="[2,2,2,2,2,1,3,1,1,1,1,1,1,1,1]" title="盲板抽堵安全作业票" @back="onBack" />
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import Details from '../components/details.vue'
import CourseSteps from '../components/courseSteps.vue'
export default {
directives: { waves },
components: {
Pagination,
Details,
CourseSteps
},
data() {
return {
total: 0,
isDetails: false,
listLoading: false,
dialogVisible: false,
search: {
value1: '',
value2: ''
},
listQuery: {
page: 1,
limit: 10
},
tableHead: [],
varList: [],
stepData: [],
EW_RU_TASK_ID: '',
agencyList: []
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.EW_RU_TASK_ID
},
procedure(row) {
this.listLoading = true
requestFN(
'/app/Task/getAgencyList',
{
CORP_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
ID: row.EW_RU_TASK_ID,
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID
}
).then((data) => {
this.listLoading = false
this.agencyList = data.list
this.dialogVisible = !this.dialogVisible
}).catch((e) => {
this.listLoading = false
})
},
onClose() {
this.dialogVisible = false
},
onDetails(id) {
this.EW_RU_TASK_ID = id
this.isDetails = true
},
getList() {
this.listLoading = true
requestFN(
'/Task/getFormList',
{
showCount: this.listQuery.limit,
currentPage: this.listQuery.page,
KEYWORD: this.search.KEYWORDS,
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
TYPE_CODE: 'blindBoard'
}
).then((data) => {
const resData = data.list.list
this.listLoading = false
this.varList = this.getListTableData(resData, 'TYPE_NAME', 'TYPE_DESCRIBE')
this.total = data.list.totalCount
}).catch((e) => {
this.listLoading = false
})
},
getQuery() {
console.log(this.search, '查詢')
this.listQuery.page = 1
this.getList()
},
goKeyReset() {
this.search = {
value1: '',
value2: ''
}
this.listQuery.page = 1
this.getList()
},
getListTableData(list, name) {
const newList = []
list.forEach(jobs => {
const valueData = {
ID: jobs.task.ID
}
jobs.jobs.forEach(item => {
valueData.DEPARTMENT_ID = item.DEPARTMENT_ID
valueData.EW_RU_TASK_ID = item.EW_RU_TASK_ID
valueData[item[name]] = item.USER_NAME
})
newList.push(valueData)
})
return newList
},
onBack() {
this.isDetails = false
}
}
}
</script>
<style scoped lang="scss">
.filter-container {
display: flex;
align-items: center;
.search-item {
margin-right: 10px;
}
}
</style>

View File

@ -1,178 +0,0 @@
<template>
<div v-if="!isDetails" class="app-container">
<div class="page">
<el-form label-width="130px">
<div class="filter-container">
<el-form-item label="关键字1">
<el-input v-model="search.value1" placeholder="关键字1" class="filter-item" style="width: 200px;" />
</el-form-item>
<el-form-item label="关键字2">
<el-input v-model="search.value2" placeholder="关键字2" class="filter-item" style="width: 200px;" />
</el-form-item>
<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>
</div>
</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="APPLICANT" label="发起人" align="center" />
<el-table-column prop="SAFETY_USER" label="有关部门意见" align="center" />
<el-table-column prop="ACCEPT_CONFESS_USER" label="接受交底人" align="center" />
<el-table-column prop="CONFESS_USER" label="安全交底人" align="center" />
<el-table-column prop="PRODUCTION_USER" label="所在单位意见" align="center" />
<el-table-column prop="LEADER_USER" label="审批部门意见" align="center" />
<el-table-column prop="GUARDIAN_USER" label="监护人" align="center" />
<el-table-column prop="CONSTRUCTION_USER" label="作业负责人" align="center" />
<el-table-column prop="ACCEPT_USER" label="完成验收" align="center" />
<el-table-column label="操作" align="center" width="250">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="procedure(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="onDetails(row.EW_RU_TASK_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="getList" />
</div>
</div>
<CourseSteps :dialog-visible="dialogVisible" :agency-list="agencyList" :step-data="stepData" @close="onClose" />
</div>
<Details v-else :EW_RU_TASK_ID="EW_RU_TASK_ID" :split-list="[2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1]" title="动土安全作业票" @back="onBack" />
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import Details from '../components/details.vue'
import CourseSteps from '../components/courseSteps.vue'
export default {
directives: { waves },
components: {
Pagination,
Details,
CourseSteps
},
data() {
return {
total: 0,
isDetails: false,
listLoading: false,
dialogVisible: false,
search: {
value1: '',
value2: ''
},
listQuery: {
page: 1,
limit: 10
},
tableHead: [],
varList: [],
stepData: [],
EW_RU_TASK_ID: '',
agencyList: []
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.EW_RU_TASK_ID
},
procedure(row) {
this.listLoading = true
requestFN(
'/app/Task/getAgencyList',
{
CORP_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
ID: row.EW_RU_TASK_ID,
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID
}
).then((data) => {
this.listLoading = false
this.agencyList = data.list
this.dialogVisible = !this.dialogVisible
}).catch((e) => {
this.listLoading = false
})
},
onClose() {
this.dialogVisible = false
},
onDetails(id) {
this.EW_RU_TASK_ID = id
this.isDetails = true
},
getList() {
this.listLoading = true
requestFN(
'/Task/getFormList',
{
showCount: this.listQuery.limit,
currentPage: this.listQuery.page,
KEYWORD: this.search.KEYWORDS,
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
TYPE_CODE: 'breakGround'
}
).then((data) => {
const resData = data.list.list
this.listLoading = false
this.varList = this.getListTableData(resData, 'TYPE_NAME', 'TYPE_DESCRIBE')
this.total = data.list.totalCount
}).catch((e) => {
this.listLoading = false
})
},
getQuery() {
console.log(this.search, '查詢')
this.listQuery.page = 1
this.getList()
},
goKeyReset() {
this.search = {
value1: '',
value2: ''
}
this.listQuery.page = 1
this.getList()
},
getListTableData(list, name) {
const newList = []
list.forEach(jobs => {
const valueData = {
ID: jobs.task.ID
}
jobs.jobs.forEach(item => {
valueData.DEPARTMENT_ID = item.DEPARTMENT_ID
valueData.EW_RU_TASK_ID = item.EW_RU_TASK_ID
valueData[item[name]] = item.USER_NAME
})
newList.push(valueData)
})
return newList
},
onBack() {
this.isDetails = false
}
}
}
</script>
<style scoped lang="scss">
.filter-container {
display: flex;
align-items: center;
.search-item {
margin-right: 10px;
}
}
</style>

View File

@ -1,73 +0,0 @@
<script>
export default {
props: {
dialogVisible: {
type: Boolean,
default: false
},
stepData: {
type: Array,
default: () => {
return []
}
},
agencyList: {
type: Array,
default: () => {
return []
}
}
},
data() {
return {}
},
methods: {
onClose() {
this.$emit('close')
}
}
}
</script>
<template>
<el-dialog
:visible.sync="dialogVisible"
:before-close="onClose"
title="提示"
width="70%">
<div class="el-steps el-steps--horizontal">
<div v-for="(item, index) in agencyList" :title="item.NODE_DESC" :key="item.EW_RU_JOB_ID" class="step-item el-step is-horizontal is-center">
<div :class="item.STEP_FLAG === '1' ? 'is-success':'is-wait'" class="el-step__head">
<div class="el-step__line">
<i v-if="item.STEP_FLAG === '1'" class="el-step__line-inner" />
</div>
<div class="el-step__icon is-text">
<i v-if="item.STEP_FLAG === '1'" class="el-step__icon-inner is-status el-icon-check"/>
<div v-else class="el-step__icon-inner">{{ index + 1 }}</div>
</div>
</div>
<div class="el-step__main">
<div :class="item.STEP_FLAG === '1' ? 'is-success':'is-wait'" class="el-step__title">{{ item.NODE_DESC }}</div>
<div :class="item.STEP_FLAG === '1' ? 'is-success':'is-wait'" class="el-step__description">
<div>{{ item.USER_NAME }}</div>
</div>
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="onClose"></el-button>
</div>
</el-dialog>
</template>
<style scoped lang="scss">
.sign-box {
margin: 60px 60px 0;
display: flex;
justify-content: space-between;
color: red;
}
.step-item {
flex: 1;
}
</style>

View File

@ -1,160 +0,0 @@
<script>
import { requestFN } from '@/utils/request'
export default {
props: {
EW_RU_TASK_ID: {
type: String,
default: ''
},
title: {
type: String,
default: ''
},
code: {
type: String,
default: ''
},
splitList: {
type: Array,
default: () => {
return []
}
}
},
data() {
return {
config: config,
form: {},
simpleQues: [],
jobsList: []
}
},
created() {
this.getData()
},
methods: {
goBack() {
this.$emit('back')
},
getData() {
this.listLoading = true
requestFN(
'/Task/getInfo',
{
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
EW_RU_TASK_ID: this.EW_RU_TASK_ID
}
).then((data) => {
this.jobsList = data.list.jobs
this.form = this.handleArr(data.list.fromTrans)
this.simpleQues = this.getSimpleQues(data.list.simpleQues)
}).catch((e) => {
this.listLoading = false
})
},
getSimpleQues(data) {
data = data.map(item => {
if (item.answers.length > 0) {
item.text = item.answers.reduce((pre, cur) => {
return (pre.TEXT_INFO + pre.ANSWER) + ',' + (cur.TEXT_INFO + cur.ANSWER)
})
}
return item
})
return data
},
handleArr(arr) {
const res = []
for (let i = 0; i < this.splitList.length - 1; i++) {
res.push(arr.splice(0, this.splitList[i]))
}
return res
}
}
}
</script>
<template>
<div class="app-container">
<el-page-header content="审批表详情" @back="goBack"/>
<div class="level-title">
<h1>{{ title }}</h1>
<div v-if="code" class="level-code">:{{ code }}</div>
</div>
<table class="table-ui">
<tr v-for="(item, index) in form" :key="index">
<template v-for="child in item">
<td v-if="child.TYPE === 0 || child.TYPE === 5" class="bbg">{{ child.ITEM }}</td>
<td v-if="child.TYPE === 3" class="bbg" colspan="6">{{ child.ITEM }}</td>
<td v-if="child.TYPE === 0" :colspan="item.length < 2 ? 6 : item.length === 2 ? 3 : ''">{{ child.ITEM_VALUE }}</td>
<td v-if="child.TYPE === 1" :key="child.LINK_ID" colspan="6">
<div>{{ child.ITEM }}</div>
<div class="table-content">
<el-image :src="config.fileUrl + child.ITEM_VALUE" :preview-src-list="[child.ITEM_VALUE]" style="width: 100px; height: 100px"/>
</div>
</td>
<td v-if="child.TYPE === 5" colspan="6">
<div class="table-content-right">
<span>{{ child.ITEM }}:</span>
<el-image :src="config.fileUrl + child.ITEM_VALUE" :preview-src-list="[child.ITEM_VALUE]" style="width: 100px; height: 100px"/>
</div>
</td>
<td v-if="child.TYPE === 4" colspan="6" >
<table class="table-ui">
<template v-for="(children) in child.list">
<tr :key="children.EW_RU_TASK_REPORT_FORMS_ID">
<template v-for="list in children.list" >
<td :key="list.EW_RU_TASK_REPORT_FORMS_ID + '1'" class="bbg">{{ list.ITEM }}</td>
<td :key="list.EW_RU_TASK_REPORT_FORMS_ID + '2'" colspan="2">{{ list.ITEM_VALUE }}</td>
</template>
</tr>
</template>
</table>
</td>
</template>
</tr>
<tr>
<td v-if="simpleQues.length > 0" colspan="6">
<table class="table-ui">
<tr>
<td>序号</td>
<td>安全措施</td>
<td>是否涉及</td>
<td>确认人</td>
</tr>
<tr v-for="(item,index) in simpleQues" :key="index">
<td>{{ index }}</td>
<td>{{ `${item.QUESTION} ${item.text ? item.text :''}` }}</td>
<td>{{ item.TEXT_INFO }}</td>
<td>确认人</td>
</tr>
</table>
</td>
</tr>
<tr v-for="item in jobsList" :key="item.EW_RU_JOB_ID">
<td class="bbg">{{ item.TYPE_DESCRIBE }}</td>
<td colspan="6">{{ item.USER_NAME }}</td>
</tr>
</table>
</div>
</template>
<style scoped lang="scss">
.table-content {
display: flex;
justify-content: space-between;
margin-top: 20px;
}
.table-content-right {
display: flex;
justify-content: flex-end;
align-items: flex-end;
span {
padding: 10px;
}
}
.bbg-head {
width: 100%;
}
</style>

View File

@ -1,177 +0,0 @@
<template>
<div v-if="!isDetails" class="app-container">
<div class="page">
<el-form label-width="130px">
<div class="filter-container">
<el-form-item label="关键字1">
<el-input v-model="search.value1" placeholder="关键字1" class="filter-item" style="width: 200px;" />
</el-form-item>
<el-form-item label="关键字2">
<el-input v-model="search.value2" placeholder="关键字2" class="filter-item" style="width: 200px;" />
</el-form-item>
<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>
</div>
</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="APPLICANT" label="发起人" align="center" />
<el-table-column prop="CONFESS_USER" label="安全交底人" align="center" />
<el-table-column prop="ACCEPT_CONFESS_USER" label="接受交底人" align="center" />
<el-table-column prop="APPROVE_USER" label="所在单位意见" align="center" />
<el-table-column prop="GUARDIAN_USER" label="监护人" align="center" />
<el-table-column prop="CONFIRM_USER" label="作业负责人" align="center" />
<el-table-column prop="ANALYZE_USER" label="气体检测" align="center" />
<el-table-column prop="ACCEPT_USER" label="完成验收" align="center" />
<el-table-column label="操作" align="center" width="250">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="procedure(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="onDetails(row.EW_RU_TASK_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="getList" />
</div>
</div>
<CourseSteps :dialog-visible="dialogVisible" :agency-list="agencyList" :step-data="stepData" @close="onClose" />
</div>
<Details v-else :EW_RU_TASK_ID="EW_RU_TASK_ID" :split-list="[2,1,2,2,2,2,1,1,1,1]" title="受限空间安全作业票" @back="onBack" />
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import Details from '../components/details.vue'
import CourseSteps from '../components/courseSteps.vue'
export default {
directives: { waves },
components: {
Pagination,
Details,
CourseSteps
},
data() {
return {
total: 0,
isDetails: false,
listLoading: false,
dialogVisible: false,
search: {
value1: '',
value2: ''
},
listQuery: {
page: 1,
limit: 10
},
tableHead: [],
varList: [],
stepData: [],
EW_RU_TASK_ID: '',
agencyList: []
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.EW_RU_TASK_ID
},
procedure(row) {
this.listLoading = true
requestFN(
'/app/Task/getAgencyList',
{
CORP_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
ID: row.EW_RU_TASK_ID,
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID
}
).then((data) => {
this.listLoading = false
this.agencyList = data.list
this.dialogVisible = !this.dialogVisible
}).catch((e) => {
this.listLoading = false
})
},
onClose() {
this.dialogVisible = false
},
onDetails(id) {
this.EW_RU_TASK_ID = id
this.isDetails = true
},
getList() {
this.listLoading = true
requestFN(
'/Task/getFormList',
{
showCount: this.listQuery.limit,
currentPage: this.listQuery.page,
KEYWORD: this.search.KEYWORDS,
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
TYPE_CODE: 'confinedSpace'
}
).then((data) => {
const resData = data.list.list
this.listLoading = false
this.varList = this.getListTableData(resData, 'TYPE_NAME', 'TYPE_DESCRIBE')
this.total = data.list.totalCount
}).catch((e) => {
this.listLoading = false
})
},
getQuery() {
console.log(this.search, '查詢')
this.listQuery.page = 1
this.getList()
},
goKeyReset() {
this.search = {
value1: '',
value2: ''
}
this.listQuery.page = 1
this.getList()
},
getListTableData(list, name) {
const newList = []
list.forEach(jobs => {
const valueData = {
ID: jobs.task.ID
}
jobs.jobs.forEach(item => {
valueData.DEPARTMENT_ID = item.DEPARTMENT_ID
valueData.EW_RU_TASK_ID = item.EW_RU_TASK_ID
valueData[item[name]] = item.USER_NAME
})
newList.push(valueData)
})
return newList
},
onBack() {
this.isDetails = false
}
}
}
</script>
<style scoped lang="scss">
.filter-container {
display: flex;
align-items: center;
.search-item {
margin-right: 10px;
}
}
</style>

View File

@ -1,176 +0,0 @@
<template>
<div v-if="!isDetails" class="app-container">
<div class="page">
<el-form label-width="130px">
<div class="filter-container">
<el-form-item label="关键字1">
<el-input v-model="search.value1" placeholder="关键字1" class="filter-item" style="width: 200px;" />
</el-form-item>
<el-form-item label="关键字2">
<el-input v-model="search.value2" placeholder="关键字2" class="filter-item" style="width: 200px;" />
</el-form-item>
<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>
</div>
</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="APPLICANT" label="发起人" align="center" />
<el-table-column prop="AUDIT_USER" label="用电单位意见" align="center" />
<el-table-column prop="ACCEPT_CONFESS_USER" label="接受交底人" align="center" />
<el-table-column prop="APPROVE_USER" label="消防、安全管理意见" align="center" />
<el-table-column prop="GUARDIAN_USER" label="监护人" align="center" />
<el-table-column prop="CONFIRM_USER" label="作业负责人" align="center" />
<el-table-column prop="ACCEPT_USER" label="完成验收" align="center" />
<el-table-column label="操作" align="center" width="250">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="procedure(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="onDetails(row.EW_RU_TASK_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="getList" />
</div>
</div>
<CourseSteps :dialog-visible="dialogVisible" :agency-list="agencyList" :step-data="stepData" @close="onClose" />
</div>
<Details v-else :EW_RU_TASK_ID="EW_RU_TASK_ID" :split-list="[2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1]" title="临时用电许可证" @back="onBack" />
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import Details from '../components/details.vue'
import CourseSteps from '../components/courseSteps.vue'
export default {
directives: { waves },
components: {
Pagination,
Details,
CourseSteps
},
data() {
return {
total: 0,
isDetails: false,
listLoading: false,
dialogVisible: false,
search: {
value1: '',
value2: ''
},
listQuery: {
page: 1,
limit: 10
},
tableHead: [],
varList: [],
stepData: [],
agencyList: [],
EW_RU_TASK_ID: ''
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.EW_RU_TASK_ID
},
procedure(row) {
this.listLoading = true
requestFN(
'/app/Task/getAgencyList',
{
CORP_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
ID: row.EW_RU_TASK_ID,
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID
}
).then((data) => {
this.agencyList = data.list
this.dialogVisible = !this.dialogVisible
this.listLoading = false
}).catch((e) => {
this.listLoading = false
})
},
onClose() {
this.dialogVisible = false
},
onDetails(id) {
this.EW_RU_TASK_ID = id
this.isDetails = true
},
getList() {
this.listLoading = true
requestFN(
'/Task/getFormList',
{
showCount: this.listQuery.limit,
currentPage: this.listQuery.page,
KEYWORD: this.search.KEYWORDS,
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
TYPE_CODE: 'electricity'
}
).then((data) => {
const resData = data.list.list
this.listLoading = false
this.varList = this.getListTableData(resData, 'TYPE_NAME', 'TYPE_DESCRIBE')
this.total = data.list.totalCount
}).catch((e) => {
this.listLoading = false
})
},
getQuery() {
console.log(this.search, '查詢')
this.listQuery.page = 1
this.getList()
},
goKeyReset() {
this.search = {
value1: '',
value2: ''
}
this.listQuery.page = 1
this.getList()
},
getListTableData(list, name) {
const newList = []
list.forEach(jobs => {
const valueData = {
ID: jobs.task.ID
}
jobs.jobs.forEach(item => {
valueData.DEPARTMENT_ID = item.DEPARTMENT_ID
valueData.EW_RU_TASK_ID = item.EW_RU_TASK_ID
valueData[item[name]] = item.USER_NAME
})
newList.push(valueData)
})
return newList
},
onBack() {
this.isDetails = false
}
}
}
</script>
<style scoped lang="scss">
.filter-container {
display: flex;
align-items: center;
.search-item {
margin-right: 10px;
}
}
</style>

View File

@ -1,177 +0,0 @@
<template>
<div v-if="!isDetails" class="app-container">
<div class="page">
<el-form label-width="130px">
<div class="filter-container">
<el-form-item label="关键字1">
<el-input v-model="search.value1" placeholder="关键字1" class="filter-item" style="width: 200px;" />
</el-form-item>
<el-form-item label="关键字2">
<el-input v-model="search.value2" placeholder="关键字2" class="filter-item" style="width: 200px;" />
</el-form-item>
<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>
</div>
</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="APPLICANT" label="发起人" align="center" />
<el-table-column prop="AUDIT_USER" label="所在单位意见" align="center" />
<el-table-column prop="ACCEPT_CONFESS_USER" label="接受交底人" align="center" />
<el-table-column prop="CONFESS_USER" label="安全交底人" align="center" />
<el-table-column prop="AUDIT_USER" label="审核部门意见" align="center" />
<el-table-column prop="GUARDIAN_USER" label="监护人" align="center" />
<el-table-column prop="LEADER_USER" label="作业负责人" align="center" />
<el-table-column prop="ACCEPT_USER" label="完成验收" align="center" />
<el-table-column label="操作" align="center" width="250">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="procedure(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="onDetails(row.EW_RU_TASK_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="getList" />
</div>
</div>
<CourseSteps :dialog-visible="dialogVisible" :agency-list="agencyList" :step-data="stepData" @close="onClose" />
</div>
<Details v-else :EW_RU_TASK_ID="EW_RU_TASK_ID" :split-list="[2, 1, 2, 2, 2, 2, 1, 1, 1, 1]" title="高处安全作业票" @back="onBack" />
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import Details from '../components/details.vue'
import CourseSteps from '../components/courseSteps.vue'
export default {
directives: { waves },
components: {
Pagination,
Details,
CourseSteps
},
data() {
return {
total: 0,
isDetails: false,
listLoading: false,
dialogVisible: false,
search: {
value1: '',
value2: ''
},
listQuery: {
page: 1,
limit: 10
},
tableHead: [],
varList: [],
stepData: [],
EW_RU_TASK_ID: '',
agencyList: []
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.EW_RU_TASK_ID
},
procedure(row) {
this.listLoading = true
requestFN(
'/app/Task/getAgencyList',
{
CORP_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
ID: row.EW_RU_TASK_ID,
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID
}
).then((data) => {
this.listLoading = false
this.agencyList = data.list
this.dialogVisible = !this.dialogVisible
}).catch((e) => {
this.listLoading = false
})
},
onClose() {
this.dialogVisible = false
},
onDetails(id) {
this.EW_RU_TASK_ID = id
this.isDetails = true
},
getList() {
this.listLoading = true
requestFN(
'/Task/getFormList',
{
showCount: this.listQuery.limit,
currentPage: this.listQuery.page,
KEYWORD: this.search.KEYWORDS,
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
TYPE_CODE: 'highWork'
}
).then((data) => {
const resData = data.list.list
this.listLoading = false
this.varList = this.getListTableData(resData, 'TYPE_NAME', 'TYPE_DESCRIBE')
this.total = data.list.totalCount
}).catch((e) => {
this.listLoading = false
})
},
getQuery() {
console.log(this.search, '查詢')
this.listQuery.page = 1
this.getList()
},
goKeyReset() {
this.search = {
value1: '',
value2: ''
}
this.listQuery.page = 1
this.getList()
},
getListTableData(list, name) {
const newList = []
list.forEach(jobs => {
const valueData = {
ID: jobs.task.ID
}
jobs.jobs.forEach(item => {
valueData.DEPARTMENT_ID = item.DEPARTMENT_ID
valueData.EW_RU_TASK_ID = item.EW_RU_TASK_ID
valueData[item[name]] = item.USER_NAME
})
newList.push(valueData)
})
return newList
},
onBack() {
this.isDetails = false
}
}
}
</script>
<style scoped lang="scss">
.filter-container {
display: flex;
align-items: center;
.search-item {
margin-right: 10px;
}
}
</style>

View File

@ -1,178 +0,0 @@
<template>
<div v-if="!isDetails" class="app-container">
<div class="page">
<el-form label-width="130px">
<div class="filter-container">
<el-form-item label="关键字1">
<el-input v-model="search.value1" placeholder="关键字1" class="filter-item" style="width: 200px;" />
</el-form-item>
<el-form-item label="关键字2">
<el-input v-model="search.value2" placeholder="关键字2" class="filter-item" style="width: 200px;" />
</el-form-item>
<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>
</div>
</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="APPLICANT" label="发起人" align="center" />
<el-table-column prop="CONSTRUCTION_USER" label="所在单位意见" align="center" />
<el-table-column prop="ACCEPT_CONFESS_USER" label="接受交底人" align="center" />
<el-table-column prop="CONFESS_USER" label="安全交底人" align="center" />
<el-table-column prop="LEADER_USER" label="作业指挥意见" align="center" />
<el-table-column prop="GUARDIAN_USER" label="监护人" align="center" />
<el-table-column prop="APPROVE_USER" label="审批部门意见" align="center" />
<el-table-column prop="AUDIT_USER" label="审核部门意见" align="center" />
<el-table-column prop="ACCEPT_USER" label="完工验收人" align="center" />
<el-table-column label="操作" align="center" width="250">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="procedure(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="onDetails(row.EW_RU_TASK_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="getList" />
</div>
</div>
<CourseSteps :dialog-visible="dialogVisible" :agency-list="agencyList" :step-data="stepData" @close="onClose" />
</div>
<Details v-else :EW_RU_TASK_ID="EW_RU_TASK_ID" :split-list="[2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1]" title="吊装安全作业票" @back="onBack" />
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import Details from '../components/details.vue'
import CourseSteps from '../components/courseSteps.vue'
export default {
directives: { waves },
components: {
Pagination,
Details,
CourseSteps
},
data() {
return {
total: 0,
isDetails: false,
listLoading: false,
dialogVisible: false,
search: {
value1: '',
value2: ''
},
listQuery: {
page: 1,
limit: 10
},
tableHead: [],
varList: [],
stepData: [],
EW_RU_TASK_ID: '',
agencyList: []
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.EW_RU_TASK_ID
},
procedure(row) {
this.listLoading = true
requestFN(
'/app/Task/getAgencyList',
{
CORP_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
ID: row.EW_RU_TASK_ID,
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID
}
).then((data) => {
this.listLoading = false
this.agencyList = data.list
this.dialogVisible = !this.dialogVisible
}).catch((e) => {
this.listLoading = false
})
},
onClose() {
this.dialogVisible = false
},
onDetails(id) {
this.EW_RU_TASK_ID = id
this.isDetails = true
},
getList() {
this.listLoading = true
requestFN(
'/Task/getFormList',
{
showCount: this.listQuery.limit,
currentPage: this.listQuery.page,
KEYWORD: this.search.KEYWORDS,
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
TYPE_CODE: 'hoisting'
}
).then((data) => {
const resData = data.list.list
this.listLoading = false
this.varList = this.getListTableData(resData, 'TYPE_NAME', 'TYPE_DESCRIBE')
this.total = data.list.totalCount
}).catch((e) => {
this.listLoading = false
})
},
getQuery() {
console.log(this.search, '查詢')
this.listQuery.page = 1
this.getList()
},
goKeyReset() {
this.search = {
value1: '',
value2: ''
}
this.listQuery.page = 1
this.getList()
},
getListTableData(list, name) {
const newList = []
list.forEach(jobs => {
const valueData = {
ID: jobs.task.ID
}
jobs.jobs.forEach(item => {
valueData.DEPARTMENT_ID = item.DEPARTMENT_ID
valueData.EW_RU_TASK_ID = item.EW_RU_TASK_ID
valueData[item[name]] = item.USER_NAME
})
newList.push(valueData)
})
return newList
},
onBack() {
this.isDetails = false
}
}
}
</script>
<style scoped lang="scss">
.filter-container {
display: flex;
align-items: center;
.search-item {
margin-right: 10px;
}
}
</style>

View File

@ -1,177 +0,0 @@
<template>
<div v-if="!isDetails" class="app-container">
<div class="page">
<el-form label-width="130px">
<div class="filter-container">
<el-form-item label="关键字1">
<el-input v-model="search.value1" placeholder="关键字1" class="filter-item" style="width: 200px;" />
</el-form-item>
<el-form-item label="关键字2">
<el-input v-model="search.value2" placeholder="关键字2" class="filter-item" style="width: 200px;" />
</el-form-item>
<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>
</div>
</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="APPLICANT" label="发起人" align="center" />
<el-table-column prop="ISSUING_PRINCIPAL" label="动火许可签发单位" align="center" />
<el-table-column prop="HOT_WORK_AFTER" label="动火后现场管辖单位确认" align="center" />
<el-table-column prop="MONITORING_THE_CONSTRUCTION_SIT" label="延时监火" align="center" />
<el-table-column prop="PERSON_CONFIRM" label="现场负责人确认" align="center" />
<el-table-column prop="HOT_WORK" label="动火单位(部门)负责人" align="center" />
<el-table-column prop="SITE_DIRECTOR" label="动火许可证" align="center" />
<el-table-column prop="UNIT_LEADER" label="现场管辖单位负责人审核" align="center" />
<el-table-column label="操作" align="center" width="250">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="procedure(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="onDetails(row.EW_RU_TASK_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="getList" />
</div>
</div>
<CourseSteps :dialog-visible="dialogVisible" :agency-list="agencyList" :step-data="stepData" @close="onClose" />
</div>
<Details v-else :EW_RU_TASK_ID="EW_RU_TASK_ID" :split-list="[2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1]" title="动火安全作业票" @back="onBack" />
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import Details from '../components/details.vue'
import CourseSteps from '../components/courseSteps.vue'
export default {
directives: { waves },
components: {
Pagination,
Details,
CourseSteps
},
data() {
return {
total: 0,
isDetails: false,
listLoading: false,
dialogVisible: false,
search: {
value1: '',
value2: ''
},
listQuery: {
page: 1,
limit: 10
},
tableHead: [],
varList: [],
stepData: [],
EW_RU_TASK_ID: '',
agencyList: []
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.EW_RU_TASK_ID
},
procedure(row) {
this.listLoading = true
requestFN(
'/app/Task/getAgencyList',
{
CORP_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
ID: row.EW_RU_TASK_ID,
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID
}
).then((data) => {
this.listLoading = false
this.agencyList = data.list
this.dialogVisible = !this.dialogVisible
}).catch((e) => {
this.listLoading = false
})
},
onClose() {
this.dialogVisible = false
},
onDetails(id) {
this.EW_RU_TASK_ID = id
this.isDetails = true
},
getList() {
this.listLoading = true
requestFN(
'/Task/getFormList',
{
showCount: this.listQuery.limit,
currentPage: this.listQuery.page,
KEYWORD: this.search.KEYWORDS,
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
TYPE_CODE: 'hotWork'
}
).then((data) => {
const resData = data.list.list
this.listLoading = false
this.varList = this.getListTableData(resData, 'TYPE_NAME', 'TYPE_DESCRIBE')
this.total = data.list.totalCount
}).catch((e) => {
this.listLoading = false
})
},
getQuery() {
console.log(this.search, '查詢')
this.listQuery.page = 1
this.getList()
},
goKeyReset() {
this.search = {
value1: '',
value2: ''
}
this.listQuery.page = 1
this.getList()
},
getListTableData(list, name) {
const newList = []
list.forEach(jobs => {
const valueData = {
ID: jobs.task.ID
}
jobs.jobs.forEach(item => {
valueData.DEPARTMENT_ID = item.DEPARTMENT_ID
valueData.EW_RU_TASK_ID = item.EW_RU_TASK_ID
valueData[item[name]] = item.USER_NAME
})
newList.push(valueData)
})
return newList
},
onBack() {
this.isDetails = false
}
}
}
</script>
<style scoped lang="scss">
.filter-container {
display: flex;
align-items: center;
.search-item {
margin-right: 10px;
}
}
</style>

View File

@ -1,179 +0,0 @@
<template>
<div v-if="!isDetails" class="app-container">
<div class="page">
<el-form label-width="130px">
<div class="filter-container">
<el-form-item label="关键字1">
<el-input v-model="search.value1" placeholder="关键字1" class="filter-item" style="width: 200px;" />
</el-form-item>
<el-form-item label="关键字2">
<el-input v-model="search.value2" placeholder="关键字2" class="filter-item" style="width: 200px;" />
</el-form-item>
<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>
</div>
</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="APPLICANT" label="发起人" align="center" />
<el-table-column prop="CONSTRUCTION_USER" label="作业负责人" align="center" />
<el-table-column prop="ANALYZE_USER" label="气体分析人" align="center" />
<el-table-column prop="SAFETY_USER" label="消防、安全管理意见" align="center" />
<el-table-column prop="ACCEPT_CONFESS_USER" label="接受交底人" align="center" />
<el-table-column prop="CONFESS_USER" label="安全交底人" align="center" />
<el-table-column prop="LEADER_USER" label="审批部门意见" align="center" />
<el-table-column prop="PRODUCTION_USER" label="所在单位意见" align="center" />
<el-table-column prop="GUARDIAN_USER" label="监护人" align="center" />
<el-table-column prop="ACCEPT_USER" label="完工验收" align="center" />
<el-table-column label="操作" align="center" width="250">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-plus" size="mini" @click="procedure(row)"></el-button>
<el-button type="primary" icon="el-icon-document" size="mini" @click="onDetails(row.EW_RU_TASK_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="getList" />
</div>
</div>
<CourseSteps :dialog-visible="dialogVisible" :agency-list="agencyList" :step-data="stepData" @close="onClose" />
</div>
<Details v-else :EW_RU_TASK_ID="EW_RU_TASK_ID" :split-list="[2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1]" title="断路安全作业票" @back="onBack" />
</template>
<script>
import Pagination from '@/components/Pagination' // el-pagination
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves' // waves directive
import Details from '../components/details.vue'
import CourseSteps from '../components/courseSteps.vue'
export default {
directives: { waves },
components: {
Pagination,
Details,
CourseSteps
},
data() {
return {
total: 0,
isDetails: false,
listLoading: false,
dialogVisible: false,
search: {
value1: '',
value2: ''
},
listQuery: {
page: 1,
limit: 10
},
tableHead: [],
varList: [],
stepData: [],
EW_RU_TASK_ID: '',
agencyList: []
}
},
created() {
this.getList()
},
methods: {
getRowKey(row) {
return row.EW_RU_TASK_ID
},
procedure(row) {
this.listLoading = true
requestFN(
'/app/Task/getAgencyList',
{
CORP_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
ID: row.EW_RU_TASK_ID,
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID
}
).then((data) => {
this.listLoading = false
this.agencyList = data.list
this.dialogVisible = !this.dialogVisible
}).catch((e) => {
this.listLoading = false
})
},
onClose() {
this.dialogVisible = false
},
onDetails(id) {
this.EW_RU_TASK_ID = id
this.isDetails = true
},
getList() {
this.listLoading = true
requestFN(
'/Task/getFormList',
{
showCount: this.listQuery.limit,
currentPage: this.listQuery.page,
KEYWORD: this.search.KEYWORDS,
CORPINFO_ID: JSON.parse(sessionStorage.getItem('user')).CORPINFO_ID,
TYPE_CODE: 'cutRoad'
}
).then((data) => {
const resData = data.list.list
this.listLoading = false
this.varList = this.getListTableData(resData, 'TYPE_NAME', 'TYPE_DESCRIBE')
this.total = data.list.totalCount
}).catch((e) => {
this.listLoading = false
})
},
getQuery() {
console.log(this.search, '查詢')
this.listQuery.page = 1
this.getList()
},
goKeyReset() {
this.search = {
value1: '',
value2: ''
}
this.listQuery.page = 1
this.getList()
},
getListTableData(list, name) {
const newList = []
list.forEach(jobs => {
const valueData = {
ID: jobs.task.ID
}
jobs.jobs.forEach(item => {
valueData.DEPARTMENT_ID = item.DEPARTMENT_ID
valueData.EW_RU_TASK_ID = item.EW_RU_TASK_ID
valueData[item[name]] = item.USER_NAME
})
newList.push(valueData)
})
return newList
},
onBack() {
this.isDetails = false
}
}
}
</script>
<style scoped lang="scss">
.filter-container {
display: flex;
align-items: center;
.search-item {
margin-right: 10px;
}
}
</style>

View File

@ -45,10 +45,12 @@
<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="100">
<el-table-column label="操作" align="center" width="250">
<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>
<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>
</template>
</el-table-column>
</el-table>

View File

@ -1,36 +0,0 @@
<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

@ -1,320 +0,0 @@
<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

@ -1,269 +0,0 @@
<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

@ -1,36 +0,0 @@
<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

@ -1,198 +0,0 @@
<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

@ -1,130 +0,0 @@
<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

@ -1,250 +0,0 @@
<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

@ -1,513 +0,0 @@
<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

@ -1,23 +0,0 @@
<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,13 +7,6 @@
<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>
@ -32,11 +25,6 @@
</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"
@ -117,8 +105,6 @@ 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,64 +1,22 @@
<template>
<div>
<el-dialog
v-loading="loading"
:visible.sync="visible"
:append-to-body="appendToBody"
:before-close="beforeClose"
title="推送"
width="1100px"
width="500px"
destroy-on-close>
<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 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>
<div slot="footer" class="dialog-footer">
<el-button @click="visible = false"> </el-button>
@ -72,11 +30,9 @@
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, uploadFile },
components: { Treeselect, vueQr },
props: {
appendToBody: {
type: Boolean,
@ -92,43 +48,7 @@ export default {
corp_id: null,
corp_name: '',
heirloom: {},
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' }
]
}
listFlag: false
}
},
methods: {
@ -155,104 +75,37 @@ 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.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()
this.corp_name = info.CORP_NAME
},
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() {
this.$refs.form.validate((valid) => {
if (!valid) {
this.$message.error('请填写完整信息')
} else {
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() {
const corp_id = JSON.parse(this.corp_id).CORPINFO_ID
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',
'/trainingbatch/sendMessage',
{
DEPARTMENT_ID: e.id,
CORPINFO_ID: JSON.parse(this.corp_id).CORPINFO_ID
list: this.heirloom,
corp_id: corp_id,
corp_name: this.corp_name,
tm: new Date().getTime()
}
).then((data) => {
this.form.APPOINT_USER_ID = ''
this.form.APPOINT_USER_NAME = ''
this.form.user = ''
this.peopleList = data.userList
}).catch((e) => {
console.log(e)
if (data.code !== '0') {
this.$message.error(data.msg)
} else {
this.$message.success('推送成功')
this.visible = false
this.$emit('refresh', '')
}
})
},
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,68 +107,6 @@
</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,16 +39,14 @@ export default {
},
info: {
type: String,
default: '文件大小不超过500MB'
default: '文件大小不超过500kb'
}
},
data() {
return {
dialogImageUrl: '',
dialogVisible: false,
disabled: false,
file: {},
file_name: ''
disabled: false
}
},
methods: {
@ -65,29 +63,15 @@ export default {
const isLt2M = file.size / 1024 / 1024 < this.fileSize
if (!isLt2M) {
this.$message.error('上传视频大小不能超过 ' + this.fileSize + 'MB!')
this.$refs.uploadFile.handleRemove(file)
this.$refs.uploadFile.clearFiles()
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,17 +1,10 @@
const config = {
// weburl: 'http://192.168.151.43:8088/', // 前台地址
// httpurl: 'http://192.168.151.43:8088/', // 后台地址
weburl: 'http://192.168.0.49:8088/', // 前台地址
httpurl: 'http://192.168.0.49:8088/', // 后台地址
weburl: 'http://192.168.151.43:8088/', // 前台地址
httpurl: 'http://192.168.151.43:8088/', // 后台地址
qyurl: 'http://192.168.151.43:8088/', // 企业前台
adminurl: 'https://www.qdkjchina.com/qa-prevention-admin/',
// 正式
// fileUrl: 'http://192.168.192.201:8991/file/', // 附件服务器地址,
// 测试
fileUrl: 'http://wwag.qhdsafety.com/file/', // 附件服务器地址,
fileUrl: 'https://qgqy.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'

9404
static/qrcode/assets/js/jquery-1.7.2.js vendored Normal file

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-3.7.1.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.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-3.7.1.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.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-3.7.1.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.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-3.7.1.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.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-3.7.1.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.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-3.7.1.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.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-3.7.1.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.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-3.7.1.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.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-3.7.1.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.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-3.7.1.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.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-3.7.1.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.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.BELONG_TO_CORP_NAME }}</div>
<div class="text">{{ message.DEPARTMENT_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>
@ -347,7 +347,7 @@
</van-image-preview>
</div>
</div>
<script type="text/javascript" src="../../assets/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../assets/js/jquery-1.7.2.js"></script>
<script type="text/javascript">
var vm = new Vue({
el: '#app',

View File

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