This commit is contained in:
haozq 2025-04-01 09:37:11 +08:00
commit d73d381f2b
9 changed files with 608 additions and 548 deletions

View File

@ -10,7 +10,7 @@
<div style="height: 90%" v-else>
<el-timeline :reverse="reverse">
<el-timeline-item
v-for="(item, index) in items"
v-for="(item, index) in auditRecordList"
:key="index"
:timestamp="item.time"
placement="top"
@ -214,8 +214,9 @@ export default {
// if (item.isActive == 1) return 'currentLight'
if (item.auditStatus == 1 || item.auditStatus == 3) return 'highlight'
if (item.auditStatus == 2) return 'rejectHighlight'
if (item.auditStatus == null) return 'normal'
if (item.auditStatus == 4) return 'currentLight'
if (item.auditStatus == null && this.endAuditingIndex < 0) return 'normal'
if ((item.auditStatus == null || item.auditStatus == 4) && this.endAuditingIndex > -1) return 'currentGary'
if (item.auditStatus == 4 && this.endAuditingIndex < 0) return 'currentLight'
}
},
@ -224,15 +225,21 @@ export default {
return (item, index) => {
if (item.auditStatus == 1 || item.auditStatus == 3) return '√'
if (item.auditStatus == 2) return 'X'
if (item.auditStatus == null) return ''
if (item.auditStatus == 4) return '?'
if (item.auditStatus == null || this.endAuditingIndex > -1) return ''
if (item.auditStatus == 4 && this.endAuditingIndex < 0) return '?'
}
},
},
watch: {
items: {
handler: function (val) {
console.log('=----------------', val)
console.log('=----------------items9996', val)
const endIndex = val.findIndex(item => item.status === '终审通过')
this.endAuditingIndex = endIndex
if (endIndex > -1) {
this.auditRecordList = val.slice(0, endIndex + 1)
}
},
deep: true,
},
@ -267,6 +274,10 @@ export default {
code: 1,
num: 0,
assignNum: 0,
// 3.31bug
auditRecordList: [],
endAuditingIndex: -1,
}
},
mounted() {
@ -428,6 +439,18 @@ export default {
border-radius: 5px;
background: #f56c6c;
}
.currentGary {
/* Add any specific styles for the highlighted state */
padding: 8px;
/* border: 1px solid green; */
width: 50%;
text-align: center;
height: 50px;
font-size: 14px;
margin-top: 2px;
border-radius: 5px;
background: rgb(153, 153, 153);
}
.currentLight {
/* Add any specific styles for the highlighted state */
padding: 8px;

View File

@ -576,56 +576,62 @@ export default {
this.uploadData = []
for (let i = 0; i < jsonData.length; i++) {
if (
StrUtil.isBlank(jsonData[i][1]) ||
StrUtil.isBlank(jsonData[i][2]) ||
StrUtil.isBlank(jsonData[i][3]) ||
StrUtil.isBlank(jsonData[i][4]) ||
StrUtil.isBlank(jsonData[i][5])
jsonData[i].length > 0 &&
(StrUtil.isBlank(jsonData[i][1]) ||
StrUtil.isBlank(jsonData[i][2]) ||
StrUtil.isBlank(jsonData[i][3]) ||
StrUtil.isBlank(jsonData[i][4]) ||
StrUtil.isBlank(jsonData[i][5]))
) {
this.errorLine.push(jsonData[i][0])
} else {
const answers = jsonData[i][3].split('|@|')
const questionOptionArr = jsonData[i][2].split('|@|')
mappedAnswers = answers.map(answer => {
return answer
.split('.')
.map(letter => letter.charCodeAt(0) - 65)
.join('.')
})
for (let j = 0; j < mappedAnswers.length; j++) {
if (mappedAnswers[j] >= questionOptionArr.length) {
if (i !== 0) {
this.errorCorrectAnswers.push(jsonData[i][0])
if (jsonData[i].length > 0) {
const answers = jsonData[i][3].split('|@|')
const questionOptionArr = jsonData[i][2].split('|@|')
mappedAnswers = answers.map(answer => {
return answer
.split('.')
.map(letter => letter.charCodeAt(0) - 65)
.join('.')
})
for (let j = 0; j < mappedAnswers.length; j++) {
if (mappedAnswers[j] >= questionOptionArr.length) {
if (i !== 0) {
this.errorCorrectAnswers.push(jsonData[i][0])
}
}
}
}
}
const rowData = {
questionId: jsonData[i][0],
content: jsonData[i][1],
questionAnswerVoList: jsonData[i][2],
correctAnswer: jsonData[i][3],
analysis: jsonData[i][4],
questionType: jsonData[i][5],
if (jsonData[i].length > 0) {
const rowData = {
questionId: jsonData[i][0],
content: jsonData[i][1],
questionAnswerVoList: jsonData[i][2],
correctAnswer: jsonData[i][3],
analysis: jsonData[i][4],
questionType: jsonData[i][5],
}
this.excelData.push(rowData)
const rowDatas = {
questionId: jsonData[i][0],
content: jsonData[i][1],
questionAnswerVoList: [],
correctAnswer: mappedAnswers.join(','),
analysis: jsonData[i][4],
questionType: this.questionType[jsonData[i][5]],
}
let arr = jsonData[i][2].split('|@|')
console.log('arr', arr)
for (let j = 0; j < arr.length; j++) {
rowDatas.questionAnswerVoList.push({
options: arr[j],
sort: j,
})
}
this.uploadData.push(rowDatas)
}
this.excelData.push(rowData)
const rowDatas = {
questionId: jsonData[i][0],
content: jsonData[i][1],
questionAnswerVoList: [],
correctAnswer: mappedAnswers.join(','),
analysis: jsonData[i][4],
questionType: this.questionType[jsonData[i][5]],
}
let arr = jsonData[i][2].split('|@|')
console.log('arr', arr)
for (let j = 0; j < arr.length; j++) {
rowDatas.questionAnswerVoList.push({
options: arr[j],
sort: j,
})
}
this.uploadData.push(rowDatas)
}
console.log('excelData', this.excelData)
if (this.excelData.length > 999) {

View File

@ -53,8 +53,8 @@ export default {
if (hasDoubleAt) {
this.approvalItems = res.data.map(item => ({
...item,
// reason: item.reason.split('@@')[4] || '',
reason: item.reason.replaceAll('@', ''),
reason: item.reason.split('@@')[4] || '',
// reason: item.reason.replaceAll('@', ''),
}))
} else {
this.approvalItems = res.data

View File

@ -212,7 +212,14 @@
</div>
</el-dialog>
<el-dialog :title="`人员基础数据导入`" :visible.sync="personBasicOpen" width="60%" style="height: 1000px">
<el-dialog
:title="`人员基础数据导入`"
:visible.sync="personBasicOpen"
width="60%"
style="height: 1000px"
v-if="personBasicOpen"
@close="onCloseDialog"
>
<div style="padding: 15px; width: 100%; height: 750px">
<el-steps :active="active" :finish-status="statusUpload" align-center>
<el-step title="选择文件"></el-step>
@ -784,6 +791,7 @@ export default {
personClose() {
this.personBasicOpen = false
this.formPerson.fileList = []
this.onCloseDialog()
},
before() {
this.active--
@ -802,7 +810,7 @@ export default {
},
importExcel: debounce(function () {
this.loading = true
// this.loading = true
let data = []
for (let i = 1; i < this.excelData.length; i++) {
data.push(this.excelData[i])
@ -824,7 +832,7 @@ export default {
this.formPerson.fileList = []
this.excelData = []
this.getSubPersonList()
this.loading = false
// this.loading = false
} else {
this.errorCode = response.msg
this.active = 3
@ -885,46 +893,54 @@ export default {
this.errorLine = []
let uuid = StrUtil.generateSimpleUUID()
for (let i = 0; i < jsonData.length; i++) {
console.log('jsonData', jsonData)
if (
StrUtil.isBlank(jsonData[i][1]) ||
StrUtil.isBlank(jsonData[i][2]) ||
StrUtil.isBlank(jsonData[i][3]) ||
StrUtil.isBlank(jsonData[i][4]) ||
StrUtil.isBlank(jsonData[i][5]) ||
StrUtil.isBlank(jsonData[i][6]) ||
StrUtil.isBlank(jsonData[i][7]) ||
StrUtil.isBlank(jsonData[i][8]) ||
StrUtil.isBlank(jsonData[i][9]) ||
StrUtil.isBlank(jsonData[i][10])
jsonData[i].length > 0 &&
(StrUtil.isBlank(jsonData[i][1]) ||
StrUtil.isBlank(jsonData[i][2]) ||
StrUtil.isBlank(jsonData[i][3]) ||
StrUtil.isBlank(jsonData[i][4]) ||
StrUtil.isBlank(jsonData[i][5]) ||
StrUtil.isBlank(jsonData[i][6]) ||
StrUtil.isBlank(jsonData[i][7]) ||
StrUtil.isBlank(jsonData[i][8]) ||
StrUtil.isBlank(jsonData[i][9]) ||
StrUtil.isBlank(jsonData[i][10]))
) {
this.errorLine.push(jsonData[i][0])
console.log('this.errorLine', this.errorLine)
} else {
if (jsonData[i][10] === '特殊工种' && StrUtil.isBlank(jsonData[i][11])) {
if (jsonData[i].length > 0 && jsonData[i][10] === '特殊工种' && StrUtil.isBlank(jsonData[i][11])) {
this.errorLine.push(jsonData[i][0])
console.log('this.errorLine', this.errorLine)
}
}
const rowData = {
arg0: jsonData[i][0],
arg1: jsonData[i][1],
arg2: jsonData[i][2],
arg3: jsonData[i][3],
arg4: jsonData[i][4],
arg5: jsonData[i][5],
arg6: jsonData[i][6],
arg7: jsonData[i][7],
arg8: jsonData[i][8],
arg9: jsonData[i][9],
arg10: jsonData[i][10],
arg11: jsonData[i][11],
uuid: uuid,
personType: jsonData[i][10] === '特殊工种' ? '1' : jsonData[i][10] === '普通职工' ? '2' : '0',
sex: jsonData[i][2] === '男' ? '0' : '1',
if (jsonData[i].length > 0) {
const rowData = {
arg0: jsonData[i][0],
arg1: jsonData[i][1],
arg2: jsonData[i][2],
arg3: jsonData[i][3],
arg4: jsonData[i][4],
arg5: jsonData[i][5],
arg6: jsonData[i][6],
arg7: jsonData[i][7],
arg8: jsonData[i][8],
arg9: jsonData[i][9],
arg10: jsonData[i][10],
arg11: jsonData[i][11],
uuid: uuid,
personType: jsonData[i][10] === '特殊工种' ? '1' : jsonData[i][10] === '普通职工' ? '2' : '0',
sex: jsonData[i][2] === '男' ? '0' : '1',
}
const isDuplicate = this.excelData.some(item => item.arg4 === rowData.arg4)
if (isDuplicate) {
this.errorPhone.push(rowData.arg4)
}
this.excelData.push(rowData)
}
const isDuplicate = this.excelData.some(item => item.arg4 === rowData.arg4)
if (isDuplicate) {
this.errorPhone.push(rowData.arg4)
}
this.excelData.push(rowData)
}
if (this.excelData.length > 999) {
this.$message.warning('数据量大于1000行')
@ -1052,6 +1068,12 @@ export default {
}
})
},
//
onCloseDialog() {
this.excelData = []
this.active = 1
},
},
}
</script>

View File

@ -2143,45 +2143,49 @@ export default {
let uuid = StrUtil.generateSimpleUUID()
for (let i = 0; i < jsonData.length; i++) {
if (
StrUtil.isBlank(jsonData[i][1]) ||
StrUtil.isBlank(jsonData[i][2]) ||
StrUtil.isBlank(jsonData[i][3]) ||
StrUtil.isBlank(jsonData[i][4]) ||
StrUtil.isBlank(jsonData[i][5]) ||
StrUtil.isBlank(jsonData[i][6]) ||
StrUtil.isBlank(jsonData[i][7]) ||
StrUtil.isBlank(jsonData[i][8]) ||
StrUtil.isBlank(jsonData[i][9]) ||
StrUtil.isBlank(jsonData[i][10])
jsonData[i].length > 0 &&
(StrUtil.isBlank(jsonData[i][1]) ||
StrUtil.isBlank(jsonData[i][2]) ||
StrUtil.isBlank(jsonData[i][3]) ||
StrUtil.isBlank(jsonData[i][4]) ||
StrUtil.isBlank(jsonData[i][5]) ||
StrUtil.isBlank(jsonData[i][6]) ||
StrUtil.isBlank(jsonData[i][7]) ||
StrUtil.isBlank(jsonData[i][8]) ||
StrUtil.isBlank(jsonData[i][9]) ||
StrUtil.isBlank(jsonData[i][10]))
) {
this.errorLine.push(jsonData[i][0])
} else {
if (jsonData[i][10] === '特殊工种' && StrUtil.isBlank(jsonData[i][11])) {
if (jsonData[i][10] === '特殊工种' && StrUtil.isBlank(jsonData[i][11]) && jsonData[i].length > 0) {
this.errorLine.push(jsonData[i][0])
}
}
const rowData = {
arg0: jsonData[i][0],
arg1: jsonData[i][1],
arg2: jsonData[i][2],
arg3: jsonData[i][3],
arg4: jsonData[i][4],
arg5: jsonData[i][5],
arg6: jsonData[i][6],
arg7: jsonData[i][7],
arg8: jsonData[i][8],
arg9: jsonData[i][9],
arg10: jsonData[i][10],
arg11: jsonData[i][11],
uuid: uuid,
personType: jsonData[i][10] === '特殊工种' ? '1' : jsonData[i][10] === '普通职工' ? '2' : '0',
sex: jsonData[i][2] === '男' ? '0' : '1',
if (jsonData[i].length > 0) {
const rowData = {
arg0: jsonData[i][0],
arg1: jsonData[i][1],
arg2: jsonData[i][2],
arg3: jsonData[i][3],
arg4: jsonData[i][4],
arg5: jsonData[i][5],
arg6: jsonData[i][6],
arg7: jsonData[i][7],
arg8: jsonData[i][8],
arg9: jsonData[i][9],
arg10: jsonData[i][10],
arg11: jsonData[i][11],
uuid: uuid,
personType: jsonData[i][10] === '特殊工种' ? '1' : jsonData[i][10] === '普通职工' ? '2' : '0',
sex: jsonData[i][2] === '男' ? '0' : '1',
}
const isDuplicate = this.excelData.some(item => item.arg4 === rowData.arg4)
if (isDuplicate) {
this.errorPhone.push(rowData.arg4)
}
this.excelData.push(rowData)
}
const isDuplicate = this.excelData.some(item => item.arg4 === rowData.arg4)
if (isDuplicate) {
this.errorPhone.push(rowData.arg4)
}
this.excelData.push(rowData)
}
if (this.excelData.length > 999) {
this.$message.warning('数据量大于1000行')

View File

@ -29,15 +29,10 @@
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="personQueryParams.status" placeholder="请选择状态" clearable>
<el-option
v-for="dict in statusDict"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-option v-for="dict in statusDict" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item style="display: flex; justify-content: flex-end;">
<el-form-item style="display: flex; justify-content: flex-end">
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQueryPerson">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQueryPerson">重置</el-button>
</el-form-item>
@ -58,22 +53,22 @@
<el-table-column label="特殊工种种类" width="100" align="center" prop="specialJobType" />
<el-table-column label="体检文件" width="100" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="handleShow(scope.row,1)">查看</el-button>
<el-button size="mini" @click="handleShow(scope.row, 1)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="保险文件" width="100" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="handleShow(scope.row,2)">查看</el-button>
<el-button size="mini" @click="handleShow(scope.row, 2)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="特殊工种文件" width="100" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="handleShow(scope.row,3)">查看</el-button>
<el-button size="mini" @click="handleShow(scope.row, 3)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="其他文件" width="100" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="handleShow(scope.row,4)">查看</el-button>
<el-button size="mini" @click="handleShow(scope.row, 4)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="性别" width="50" align="center" prop="sex" />
@ -99,9 +94,17 @@
<el-table-column label="人脸照片" align="center" prop="faceUrl">
<template slot-scope="scope">
<el-popover placement="right" title="" trigger="hover">
<img :src="`${scope.row.facePath ? lookFaceFile+scope.row.facePath : ''}`" :min-width="300" :height="300" alt="照片" />
<img slot="reference" :src="`${scope.row.facePath ? lookFaceFile+scope.row.facePath : ''}`" style="max-height: 50px; max-width: 50px"
:alt="`${scope.row.facePath ? lookFaceFile+scope.row.facePath : ''}`"
<img
:src="`${scope.row.facePath ? lookFaceFile + scope.row.facePath : ''}`"
:min-width="300"
:height="300"
alt="照片"
/>
<img
slot="reference"
:src="`${scope.row.facePath ? lookFaceFile + scope.row.facePath : ''}`"
style="max-height: 50px; max-width: 50px"
:alt="`${scope.row.facePath ? lookFaceFile + scope.row.facePath : ''}`"
/>
</el-popover>
</template>
@ -109,14 +112,11 @@
<el-table-column label="审批状态" align="center" prop="intoStatus">
<template slot-scope="scope">
<!-- 检查是否存在身份证号 -->
<span v-if="scope.row.intoStatus">{{ updateStatus(scope.row.intoStatus)
}}</span>
<span v-if="scope.row.intoStatus">{{ updateStatus(scope.row.intoStatus) }}</span>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="150" align="center"
class-name="small-padding fixed-width"
>
<el-table-column label="操作" fixed="right" width="150" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
@ -124,28 +124,19 @@
@click="handleApprove(scope.row)"
v-if="scope.row.status == '1'"
v-has-permission="['system:subPersonApply:list']"
>审批
>
审批
</el-button>
<el-button
size="mini"
type="text"
v-else
@click="handleView(scope.row)"
>查看
</el-button>
<el-button
size="mini"
type="text"
v-hasPermi="['system:audit:query']"
@click="handleAuditRecord(scope.row)"
>审核记录
<el-button size="mini" type="text" v-else @click="handleView(scope.row)">查看</el-button>
<el-button size="mini" type="text" v-hasPermi="['system:audit:query']" @click="handleAuditRecord(scope.row)">
审核记录
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="personTotal>0"
v-show="personTotal > 0"
:total="personTotal"
:page.sync="personQueryParams.pageNum"
:limit.sync="personQueryParams.pageSize"
@ -153,12 +144,12 @@
/>
<el-dialog title="文件查看" :visible.sync="document" width="80%" top="5vh" append-to-body>
<div style="width: 100%;height:720px">
<div style="width: 100%; height: 720px">
<bns-file-list-tabs :items="fileList" />
</div>
</el-dialog>
<el-dialog title="文件查看" :visible.sync="documentPreview" width="80%" top="5vh" append-to-body>
<div style="width: 100%;height:720px">
<div style="width: 100%; height: 720px">
<bns-kkFile-preview :items="kkFilePreview"></bns-kkFile-preview>
</div>
</el-dialog>
@ -178,10 +169,11 @@ import { selectFile } from '@/api/tool/select'
export default {
components: {
bnsKkFilePreview, bnsFileListTabs,
bnsKkFilePreview,
bnsFileListTabs,
BnsPersonApprovalTabs,
bnsConsPersonDetailsTabs,
bnsGenerateWorkCardTabs
bnsGenerateWorkCardTabs,
},
data() {
return {
@ -191,12 +183,12 @@ export default {
name: undefined,
status: '1',
admissionDate: undefined,
departureDate: undefined
departureDate: undefined,
},
personList: [],
proOptions: [],//
consOptions: [],//
subOptions: [],//
proOptions: [], //
consOptions: [], //
subOptions: [], //
personTotal: 0,
loading: false,
constructionPersonnelOpen: false,
@ -206,43 +198,38 @@ export default {
kkFilePreview: {
filePreviewUrl: '',
fileName: '',
showDownloadButton: false
showDownloadButton: false,
},
statusDict: [
{
value: '1',
label: '待审批'
label: '待审批',
},
{
value: '2',
label: '审批中'
label: '审批中',
},
{
value: '3',
label: '已通过'
label: '已通过',
},
{
value: '4',
label: '已驳回'
label: '已驳回',
},
{
value: '5',
label: '已撤销'
}
label: '已撤销',
},
],
auditStatusDict: {
'1':
'待审批',
'2':
'审批中',
'3':
'已通过',
'4':
'已驳回',
'5':
'已撤销'
1: '待审批',
2: '审批中',
3: '已通过',
4: '已驳回',
5: '已撤销',
},
lookFaceFile:''
lookFaceFile: '',
}
},
created() {
@ -266,13 +253,13 @@ export default {
1: '体检文件',
2: '保险文件',
3: '特殊工种文件',
4: '其他文件'
4: '其他文件',
}
selectFile({
classification: 9,
uuid: row.uuid,
informationType: informationType,
fromType: 2
fromType: 2,
}).then(response => {
console.log(response)
if (response.data.length === 0) {
@ -282,7 +269,7 @@ export default {
this.kkFilePreview = {
filePreviewUrl: response.data[0].filePath,
fileName: response.data[0].fileName,
showDownloadButton: false
showDownloadButton: false,
}
this.documentPreview = true
} else {
@ -295,7 +282,7 @@ export default {
//
getProOption() {
const params = {
id: ''
id: '',
}
getProOptions(params).then(res => {
this.proOptions = res.data
@ -304,7 +291,7 @@ export default {
//
getConsOption() {
const params = {
id: ''
id: '',
}
getConsOptions(params).then(res => {
this.consOptions = res.data
@ -313,7 +300,7 @@ export default {
//
getSubOption() {
const params = {
id: ''
id: '',
}
getSubOptions(params).then(res => {
this.subOptions = res.data
@ -330,11 +317,11 @@ export default {
consUuid: this.$store.state.user.userType === '00' ? '' : consUuid,
type: '入场',
enterType: '业主-分包审核',
...this.personQueryParams
...this.personQueryParams,
}
getList(params).then(res => {
this.personList = res.rows
this.total = res.total
this.personTotal = res.total
this.loading = false
})
},
@ -350,52 +337,63 @@ export default {
name: undefined,
status: undefined,
admissionDate: undefined,
departureDate: undefined
departureDate: undefined,
}
this.getList()
},
//
handleApprove(row) {
this.$router.push('/system/subManagement-personApproval-auth/personApproval/' + encryptCBC(JSON.stringify({
uuid: row.uuid,
taskId: row.taskId,
procInstId: row.procInsId,
contUuid: row.contUuid,
consUuid: row.consUuid,
subUuid: row.subUuid,
showType: 2,
isExamine: true,
btnShow: true,
finalCheck: row.finalCheck
})))
this.$router.push(
'/system/subManagement-personApproval-auth/personApproval/' +
encryptCBC(
JSON.stringify({
uuid: row.uuid,
taskId: row.taskId,
procInstId: row.procInsId,
contUuid: row.contUuid,
consUuid: row.consUuid,
subUuid: row.subUuid,
showType: 2,
isExamine: true,
btnShow: true,
finalCheck: row.finalCheck,
})
)
)
},
//
handleView(row) {
this.$router.push('/system/subManagement-personApproval-auth/personApproval/' + encryptCBC(JSON.stringify({
uuid: row.uuid,
taskId: row.taskId,
procInstId: row.procInsId,
contUuid: row.contUuid,
consUuid: row.consUuid,
subUuid: row.subUuid,
showType: 1,
isExamine: false,
btnShow: false,
finalCheck: row.finalCheck
})))
this.$router.push(
'/system/subManagement-personApproval-auth/personApproval/' +
encryptCBC(
JSON.stringify({
uuid: row.uuid,
taskId: row.taskId,
procInstId: row.procInsId,
contUuid: row.contUuid,
consUuid: row.consUuid,
subUuid: row.subUuid,
showType: 1,
isExamine: false,
btnShow: false,
finalCheck: row.finalCheck,
})
)
)
},
//
handleAuditRecord(row) {
this.$router.push("/flow/auditRecord/" + encryptCBC(JSON.stringify({
taskId: row.taskId,
checkType:'2'
})));
}
}
this.$router.push(
'/flow/auditRecord/' +
encryptCBC(
JSON.stringify({
taskId: row.taskId,
checkType: '2',
})
)
)
},
},
}
</script>
<style scoped lang="scss">
</style>
<style scoped lang="scss"></style>

View File

@ -29,15 +29,10 @@
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="personQueryParams.status" placeholder="请选择状态" clearable>
<el-option
v-for="dict in statusDict"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-option v-for="dict in statusDict" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item style="display: flex; justify-content: flex-end;">
<el-form-item style="display: flex; justify-content: flex-end">
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQueryPerson">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQueryPerson">重置</el-button>
</el-form-item>
@ -58,22 +53,22 @@
<el-table-column label="特殊工种种类" width="100" align="center" prop="specialJobType" />
<el-table-column label="体检文件" width="100" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="handleShow(scope.row,1)">查看</el-button>
<el-button size="mini" @click="handleShow(scope.row, 1)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="保险文件" width="100" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="handleShow(scope.row,2)">查看</el-button>
<el-button size="mini" @click="handleShow(scope.row, 2)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="特殊工种文件" width="100" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="handleShow(scope.row,3)">查看</el-button>
<el-button size="mini" @click="handleShow(scope.row, 3)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="其他文件" width="100" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="handleShow(scope.row,4)">查看</el-button>
<el-button size="mini" @click="handleShow(scope.row, 4)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="性别" width="50" align="center" prop="sex" />
@ -99,52 +94,43 @@
<el-table-column label="人脸照片" align="center" prop="faceUrl">
<template slot-scope="scope">
<el-popover placement="right" title="" trigger="hover">
<img :src="`${scope.row.facePath ? lookFaceFile+scope.row.facePath : ''}`" :min-width="300" :height="300" alt="照片" />
<img slot="reference" :src="`${scope.row.facePath ? lookFaceFile+scope.row.facePath : ''}`" style="max-height: 50px; max-width: 50px"
:alt="`${scope.row.facePath ? lookFaceFile+scope.row.facePath : ''}`"
<img
:src="`${scope.row.facePath ? lookFaceFile + scope.row.facePath : ''}`"
:min-width="300"
:height="300"
alt="照片"
/>
<img
slot="reference"
:src="`${scope.row.facePath ? lookFaceFile + scope.row.facePath : ''}`"
style="max-height: 50px; max-width: 50px"
:alt="`${scope.row.facePath ? lookFaceFile + scope.row.facePath : ''}`"
/>
</el-popover>
</template>
</el-table-column>
<el-table-column label="审批状态" align="center" prop="intoStatus" >
<el-table-column label="审批状态" align="center" prop="intoStatus">
<template slot-scope="scope">
<!-- 检查是否存在身份证号 -->
<span v-if="scope.row.intoStatus">{{ updateStatus(scope.row.intoStatus)
}}</span>
<span v-if="scope.row.intoStatus">{{ updateStatus(scope.row.intoStatus) }}</span>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="150" align="center"
class-name="small-padding fixed-width"
>
<el-table-column label="操作" fixed="right" width="150" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
v-if="scope.row.status == '1'"
@click="handleApprove(scope.row)"
>审批
<el-button size="mini" type="text" v-if="scope.row.status == '1'" @click="handleApprove(scope.row)">
审批
</el-button>
<el-button
size="mini"
type="text"
v-else
@click="handleView(scope.row)"
>查看
</el-button>
<el-button
size="mini"
type="text"
v-hasPermi="['system:audit:query']"
@click="handleAuditRecord(scope.row)"
>审核记录
<el-button size="mini" type="text" v-else @click="handleView(scope.row)">查看</el-button>
<el-button size="mini" type="text" v-hasPermi="['system:audit:query']" @click="handleAuditRecord(scope.row)">
审核记录
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="personTotal>0"
v-show="personTotal > 0"
:total="personTotal"
:page.sync="personQueryParams.pageNum"
:limit.sync="personQueryParams.pageSize"
@ -152,12 +138,12 @@
/>
<el-dialog title="文件查看" :visible.sync="document" width="80%" top="5vh" append-to-body>
<div style="width: 100%;height:720px">
<div style="width: 100%; height: 720px">
<bns-file-list-tabs :items="fileList" />
</div>
</el-dialog>
<el-dialog title="文件查看" :visible.sync="documentPreview" width="80%" top="5vh" append-to-body>
<div style="width: 100%;height:720px">
<div style="width: 100%; height: 720px">
<bns-kkFile-preview :items="kkFilePreview"></bns-kkFile-preview>
</div>
</el-dialog>
@ -177,11 +163,12 @@ import bnsFileListTabs from '@/components/pro-tabs/bns-file-list-tabs.vue'
import bnsKkFilePreview from '@/components/pro-tabs/bns-kkFile-preview.vue'
export default {
components: {
bnsKkFilePreview, bnsFileListTabs,
bnsKkFilePreview,
bnsFileListTabs,
BnsPersonApprovalDetailsTabs,
BnsPersonApprovalTabs,
bnsConsPersonDetailsTabs,
bnsGenerateWorkCardTabs
bnsGenerateWorkCardTabs,
},
data() {
return {
@ -191,13 +178,13 @@ export default {
name: undefined,
status: '1',
admissionDate: undefined,
departureDate: undefined
departureDate: undefined,
},
statusDict: [],
personList: [],
proOptions: [],//
consOptions: [],//
subOptions: [],//
proOptions: [], //
consOptions: [], //
subOptions: [], //
personTotal: 0,
loading: true,
constructionPersonnelOpen: false,
@ -207,16 +194,16 @@ export default {
kkFilePreview: {
filePreviewUrl: '',
fileName: '',
showDownloadButton: false
showDownloadButton: false,
},
auditStatusDict:{
"1" : "待审批",
"2" : "审批中",
"3" : "已通过",
"4" : "已驳回",
"5" : "已撤销"
auditStatusDict: {
1: '待审批',
2: '审批中',
3: '已通过',
4: '已驳回',
5: '已撤销',
},
lookFaceFile:''
lookFaceFile: '',
}
},
created() {
@ -231,7 +218,7 @@ export default {
indexContinuous,
lookFaceFile,
hideSensitiveInfo,
updateStatus(status){
updateStatus(status) {
return this.auditStatusDict[status]
},
/** 文件查看按钮操作 */
@ -241,13 +228,13 @@ export default {
1: '体检文件',
2: '保险文件',
3: '特殊工种文件',
4: '其他文件'
4: '其他文件',
}
selectFile({
classification: 9,
uuid: row.uuid,
informationType: informationType,
fromType: 2
fromType: 2,
}).then(response => {
console.log(response)
if (response.data.length === 0) {
@ -257,7 +244,7 @@ export default {
this.kkFilePreview = {
filePreviewUrl: response.data[0].filePath,
fileName: response.data[0].fileName,
showDownloadButton: false
showDownloadButton: false,
}
this.documentPreview = true
} else {
@ -268,9 +255,9 @@ export default {
})
},
//
getProOption(){
getProOption() {
const params = {
id: ''
id: '',
}
getProOptions(params).then(res => {
this.proOptions = res.data
@ -279,105 +266,116 @@ export default {
getStatus() {
const params = {
dictType: 'sys_approval_state',
dictValue: ''
dictValue: '',
}
dictTableOption(params).then(response => {
this.statusDict = response.data;
});
this.statusDict = response.data
})
},
//
getConsOption(){
getConsOption() {
const params = {
id: ''
id: '',
}
getConsOptions(params).then(res => {
this.consOptions = res.data
})
},
//
getSubOption(){
getSubOption() {
const params = {
id: ''
id: '',
}
getSubOptions(params).then(res => {
this.subOptions = res.data
})
},
getList(){
getList() {
const proId = this.$store.state.user.thisIds.proId,
consUuid = this.$store.state.user.thisIds.consUuid,
userType= this.$store.state.user.userType
console.log(proId,consUuid)
userType = this.$store.state.user.userType
console.log(proId, consUuid)
const params = {
proId : proId,
consUuid : consUuid,
proId: proId,
consUuid: consUuid,
type: '出场',
userType:userType,
userType: userType,
enterType: '业主-分包审核',
...this.personQueryParams
...this.personQueryParams,
}
getList(params).then(res => {
this.personList = res.rows
this.total = res.total
this.personTotal = res.total
this.loading = false
})
},
//
handleQueryPerson(){
handleQueryPerson() {
this.personQueryParams.pageNum = 1
this.getList()
},
//
resetQueryPerson(){
this.loading = true;
this.resetForm("personQueryForm");
this.handleQueryPerson();
resetQueryPerson() {
this.loading = true
this.resetForm('personQueryForm')
this.handleQueryPerson()
},
//
handleApprove(row){
this.$router.push("/system/subManagement-personApproval-auth/personApproval/" + encryptCBC(JSON.stringify({
uuid:row.uuid,
taskId:row.taskId,
procInstId:row.procInsId,
contUuid:row.contUuid,
consUuid:row.consUuid,
subUuid:row.subUuid,
showType:2,
isExamine:true,
btnShow:true,
finalCheck: row.finalCheck,
auditType:'出场'
})));
handleApprove(row) {
this.$router.push(
'/system/subManagement-personApproval-auth/personApproval/' +
encryptCBC(
JSON.stringify({
uuid: row.uuid,
taskId: row.taskId,
procInstId: row.procInsId,
contUuid: row.contUuid,
consUuid: row.consUuid,
subUuid: row.subUuid,
showType: 2,
isExamine: true,
btnShow: true,
finalCheck: row.finalCheck,
auditType: '出场',
})
)
)
},
//
handleView(row){
this.$router.push("/system/subManagement-personApproval-auth/personApproval/" + encryptCBC(JSON.stringify({
uuid:row.uuid,
taskId:row.taskId,
procInstId:row.procInsId,
contUuid:row.contUuid,
consUuid:row.consUuid,
subUuid:row.subUuid,
showType:1,
isExamine:false,
btnShow:false,
finalCheck: row.finalCheck,
auditType:'出场'
})));
handleView(row) {
this.$router.push(
'/system/subManagement-personApproval-auth/personApproval/' +
encryptCBC(
JSON.stringify({
uuid: row.uuid,
taskId: row.taskId,
procInstId: row.procInsId,
contUuid: row.contUuid,
consUuid: row.consUuid,
subUuid: row.subUuid,
showType: 1,
isExamine: false,
btnShow: false,
finalCheck: row.finalCheck,
auditType: '出场',
})
)
)
},
//
handleAuditRecord(row){
this.$router.push("/flow/auditRecord/" + encryptCBC(JSON.stringify({
taskId: row.taskId,
checkType:'2'
})));
handleAuditRecord(row) {
this.$router.push(
'/flow/auditRecord/' +
encryptCBC(
JSON.stringify({
taskId: row.taskId,
checkType: '2',
})
)
)
},
}
},
}
</script>
<style scoped lang="scss">
</style>
<style scoped lang="scss"></style>

View File

@ -981,8 +981,12 @@ export default {
uuid: this.$store.state.user.thisIds.uuid,
parentUuid: this.$store.state.user.thisIds.parentUuid,
}
if (this.formData.enterpriseQualificationFiles.length === 0 || this.formData.securityAgreementFiles.length === 0 ||
this.formData.supervisionPlanningFiles.length === 0 || this.formData.implementationRulesFiles.length === 0) {
if (
this.formData.enterpriseQualificationFiles.length === 0 ||
this.formData.securityAgreementFiles.length === 0 ||
this.formData.supervisionPlanningFiles.length === 0 ||
this.formData.implementationRulesFiles.length === 0
) {
this.$message({
message: '请先上传企业资质、安全协议书、监理规划、实施细则文件!',
type: 'error',
@ -997,7 +1001,7 @@ export default {
if (response.msg === '部分人员文件不存在,请先仔细核对,上传相关文件!') {
this.$message({
message: '部分人员文件不存在,请先仔细核对,上传相关文件!',
type: 'error'
type: 'error',
})
// return false
isReturn = true
@ -1005,77 +1009,78 @@ export default {
} catch (error) {
this.$message({
message: '文件检查失败,请稍后重试!',
type: 'error'
type: 'error',
})
// return false
}
}
if(isReturn) return
this.$refs[formName].validate(valid => {
if (submitType === '提交' && !valid) {
return this.$modal.msgError('请完善全部上传信息')
}
console.log(this.formData)
const reqData = new FormData()
this.formData.proId = this.$store.state.user.thisIds.proId
this.formData.supId = this.$store.state.user.thisIds.supId
this.formData.supUuid = this.$store.state.user.thisIds.supUuid
this.formData.uuid = this.$store.state.user.thisIds.uuid
this.formData.delFileIds = this.delFileIds.join(',')
this.formData.submitType = submitType
reqData.append('params', JSON.stringify(this.formData))
if (isReturn) return
this.$refs[formName].validate(valid => {
if (submitType === '提交' && !valid) {
return this.$modal.msgError('请完善全部上传信息')
}
console.log(this.formData)
const reqData = new FormData()
this.formData.proId = this.$store.state.user.thisIds.proId
this.formData.supId = this.$store.state.user.thisIds.supId
this.formData.supUuid = this.$store.state.user.thisIds.supUuid
this.formData.uuid = this.$store.state.user.thisIds.uuid
this.formData.delFileIds = this.delFileIds.join(',')
this.formData.submitType = submitType
reqData.append('params', JSON.stringify(this.formData))
// 使 Promise.all
Promise.all([
this.getFileData(this.formData.enterpriseQualificationFiles),
this.getFileData(this.formData.securityAgreementFiles),
this.getFileData(this.formData.supervisionPlanningFiles),
this.getFileData(this.formData.implementationRulesFiles),
]).then(
([
enterpriseQualificationFiles,
securityAgreementFiles,
supervisionPlanningFiles,
implementationRulesFiles,
]) => {
if (!enterpriseQualificationFiles || enterpriseQualificationFiles.length === 0) {
reqData.append('enterpriseQualificationFiles', new Blob())
} else {
enterpriseQualificationFiles.forEach(item => reqData.append('enterpriseQualificationFiles', item))
}
if (!securityAgreementFiles || securityAgreementFiles.length === 0) {
reqData.append('securityAgreementFiles', new Blob())
} else {
securityAgreementFiles.forEach(item => reqData.append('securityAgreementFiles', item))
}
if (!supervisionPlanningFiles || supervisionPlanningFiles.length === 0) {
reqData.append('supervisionPlanningFiles', new Blob())
} else {
supervisionPlanningFiles.forEach(item => reqData.append('supervisionPlanningFiles', item))
}
if (!implementationRulesFiles || implementationRulesFiles.length === 0) {
reqData.append('implementationRulesFiles', new Blob())
} else {
implementationRulesFiles.forEach(item => reqData.append('implementationRulesFiles', item))
}
addSupervisoryApply(reqData)
.then(response => {
if (submitType === '提交') {
this.submitApply()
} else {
this.loading = false
this.$modal.msgSuccess('保存成功')
this.$tab.closePage()
}
})
.catch(error => {
//
this.loading = false
this.$modal.msgError('提交失败')
})
})
})
// 使 Promise.all
Promise.all([
this.getFileData(this.formData.enterpriseQualificationFiles),
this.getFileData(this.formData.securityAgreementFiles),
this.getFileData(this.formData.supervisionPlanningFiles),
this.getFileData(this.formData.implementationRulesFiles),
]).then(
([
enterpriseQualificationFiles,
securityAgreementFiles,
supervisionPlanningFiles,
implementationRulesFiles,
]) => {
if (!enterpriseQualificationFiles || enterpriseQualificationFiles.length === 0) {
reqData.append('enterpriseQualificationFiles', new Blob())
} else {
enterpriseQualificationFiles.forEach(item => reqData.append('enterpriseQualificationFiles', item))
}
if (!securityAgreementFiles || securityAgreementFiles.length === 0) {
reqData.append('securityAgreementFiles', new Blob())
} else {
securityAgreementFiles.forEach(item => reqData.append('securityAgreementFiles', item))
}
if (!supervisionPlanningFiles || supervisionPlanningFiles.length === 0) {
reqData.append('supervisionPlanningFiles', new Blob())
} else {
supervisionPlanningFiles.forEach(item => reqData.append('supervisionPlanningFiles', item))
}
if (!implementationRulesFiles || implementationRulesFiles.length === 0) {
reqData.append('implementationRulesFiles', new Blob())
} else {
implementationRulesFiles.forEach(item => reqData.append('implementationRulesFiles', item))
}
addSupervisoryApply(reqData)
.then(response => {
if (submitType === '提交') {
this.submitApply()
} else {
this.loading = false
this.$modal.msgSuccess('保存成功')
this.$tab.closePage()
}
})
.catch(error => {
//
this.loading = false
this.$modal.msgError('提交失败')
})
}
)
})
},
/**
* 提交审批
@ -1383,32 +1388,36 @@ export default {
let uuid = StrUtil.generateSimpleUUID()
for (let i = 0; i < jsonData.length; i++) {
if (
StrUtil.isBlank(jsonData[i][1]) ||
StrUtil.isBlank(jsonData[i][2]) ||
StrUtil.isBlank(jsonData[i][3]) ||
StrUtil.isBlank(jsonData[i][4]) ||
StrUtil.isBlank(jsonData[i][5]) ||
StrUtil.isBlank(jsonData[i][6])
jsonData[i].length > 0 &&
(StrUtil.isBlank(jsonData[i][1]) ||
StrUtil.isBlank(jsonData[i][2]) ||
StrUtil.isBlank(jsonData[i][3]) ||
StrUtil.isBlank(jsonData[i][4]) ||
StrUtil.isBlank(jsonData[i][5]) ||
StrUtil.isBlank(jsonData[i][6]))
) {
this.errorLine.push(jsonData[i][0])
}
const rowData = {
arg0: jsonData[i][0],
arg1: jsonData[i][1],
arg2: jsonData[i][2],
arg3: jsonData[i][3],
arg4: jsonData[i][4],
arg5: jsonData[i][5],
arg6: jsonData[i][6],
uuid: uuid,
personType: jsonData[i][6] === '监理负责人' ? '1' : '2',
sex: jsonData[i][2] === '男' ? '0' : '1',
if (jsonData[i].length > 0) {
const rowData = {
arg0: jsonData[i][0],
arg1: jsonData[i][1],
arg2: jsonData[i][2],
arg3: jsonData[i][3],
arg4: jsonData[i][4],
arg5: jsonData[i][5],
arg6: jsonData[i][6],
uuid: uuid,
personType: jsonData[i][6] === '监理负责人' ? '1' : '2',
sex: jsonData[i][2] === '男' ? '0' : '1',
}
const isDuplicate = this.excelData.some(item => item.arg5 === rowData.arg5)
if (isDuplicate) {
this.errorPhone.push(rowData.arg5)
}
this.excelData.push(rowData)
}
const isDuplicate = this.excelData.some(item => item.arg5 === rowData.arg5)
if (isDuplicate) {
this.errorPhone.push(rowData.arg5)
}
this.excelData.push(rowData)
}
if (this.excelData.length > 999) {
this.$message.warning('数据量大于1000行')

View File

@ -4,8 +4,10 @@
<el-form-item label="施工人员姓名" label-width="120px" prop="name">
<el-input
v-model="personQueryParams.name"
placeholder="请输入施工人员姓名" v-no-whitespace
maxlength="20" show-word-limit
placeholder="请输入施工人员姓名"
v-no-whitespace
maxlength="20"
show-word-limit
clearable
@keyup.enter.native="handleQueryPerson"
/>
@ -22,15 +24,10 @@
</el-form-item>
<el-form-item label="审批状态" prop="status">
<el-select v-model="personQueryParams.status" placeholder="请选择审批状态" clearable>
<el-option
v-for="dict in statusDict"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-option v-for="dict in statusDict" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item style="display: flex; justify-content: flex-end;">
<el-form-item style="display: flex; justify-content: flex-end">
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQueryPerson">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQueryPerson">重置</el-button>
</el-form-item>
@ -50,22 +47,22 @@
<el-table-column label="特殊工种种类" width="100" align="center" prop="specialJobType" />
<el-table-column label="体检文件" width="100" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="handleShow(scope.row,1)">查看</el-button>
<el-button size="mini" @click="handleShow(scope.row, 1)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="保险文件" width="100" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="handleShow(scope.row,2)">查看</el-button>
<el-button size="mini" @click="handleShow(scope.row, 2)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="特殊工种文件" width="100" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="handleShow(scope.row,3)">查看</el-button>
<el-button size="mini" @click="handleShow(scope.row, 3)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="其他文件" width="100" align="center">
<template slot-scope="scope">
<el-button size="mini" @click="handleShow(scope.row,4)">查看</el-button>
<el-button size="mini" @click="handleShow(scope.row, 4)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="性别" width="50" align="center" prop="sex" />
@ -91,64 +88,55 @@
<el-table-column label="人脸照片" align="center" prop="faceUrl">
<template slot-scope="scope">
<el-popover placement="right" title="" trigger="hover">
<img :src="`${scope.row.facePath ? lookFaceFile+scope.row.facePath : ''}`" :min-width="300" :height="300" alt="照片" />
<img slot="reference" :src="`${scope.row.facePath ? lookFaceFile+scope.row.facePath : ''}`" style="max-height: 50px; max-width: 50px"
:alt="`${scope.row.facePath ? lookFaceFile+scope.row.facePath : ''}`"
<img
:src="`${scope.row.facePath ? lookFaceFile + scope.row.facePath : ''}`"
:min-width="300"
:height="300"
alt="照片"
/>
<img
slot="reference"
:src="`${scope.row.facePath ? lookFaceFile + scope.row.facePath : ''}`"
style="max-height: 50px; max-width: 50px"
:alt="`${scope.row.facePath ? lookFaceFile + scope.row.facePath : ''}`"
/>
</el-popover>
</template>
</el-table-column>
<el-table-column label="审批状态" align="center" prop="intoStatus" >
<el-table-column label="审批状态" align="center" prop="intoStatus">
<template slot-scope="scope">
<!-- 检查是否存在身份证号 -->
<span v-if="scope.row.intoStatus">{{ updateStatus(scope.row.intoStatus)
}}</span>
<span v-if="scope.row.intoStatus">{{ updateStatus(scope.row.intoStatus) }}</span>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="150" align="center"
class-name="small-padding fixed-width"
>
<el-table-column label="操作" fixed="right" width="150" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
v-if="scope.row.status == '1'"
@click="handleApprove(scope.row)"
>审批
<el-button size="mini" type="text" v-if="scope.row.status == '1'" @click="handleApprove(scope.row)">
审批
</el-button>
<el-button
size="mini"
type="text"
v-else
@click="handleView(scope.row)"
>查看
</el-button>
<el-button
size="mini"
type="text"
v-hasPermi="['system:audit:query']"
@click="handleAuditRecord(scope.row)"
>审核记录
<el-button size="mini" type="text" v-else @click="handleView(scope.row)">查看</el-button>
<el-button size="mini" type="text" v-hasPermi="['system:audit:query']" @click="handleAuditRecord(scope.row)">
审核记录
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="personTotal>0"
v-show="personTotal > 0"
:total="personTotal"
:page.sync="personQueryParams.pageNum"
:limit.sync="personQueryParams.pageSize"
@pagination="getList"
/>
<el-dialog title="文件查看" :visible.sync="document" width="80%" top="5vh" append-to-body>
<div style="width: 100%;height:720px">
<div style="width: 100%; height: 720px">
<bns-file-list-tabs :items="fileList" />
</div>
</el-dialog>
<el-dialog title="文件查看" :visible.sync="documentPreview" width="80%" top="5vh" append-to-body>
<div style="width: 100%;height:720px">
<div style="width: 100%; height: 720px">
<bns-kkFile-preview :items="kkFilePreview"></bns-kkFile-preview>
</div>
</el-dialog>
@ -158,7 +146,7 @@
import { hideSensitiveInfo, indexContinuous, lookFaceFile } from '@/utils/bonus'
import bnsConsPersonDetailsTabs from '@/components/pro-tabs/bns-cons-person-details-tabs.vue'
import bnsGenerateWorkCardTabs from '@/components/pro-tabs/bns-generate-work-card-tabs.vue'
import {getProOptions, getConsOptions, getList} from '@/api/pro/subManagement/approval/personApproval'
import { getProOptions, getConsOptions, getList } from '@/api/pro/subManagement/approval/personApproval'
import BnsPersonApprovalTabs from '@/components/pro-tabs/bns-person-approval-tabs.vue'
import BnsPersonApprovalDetailsTabs from '@/components/pro-tabs/bns-person-approval-details-tabs.vue'
import { dictTableOption, selectFile } from '@/api/tool/select'
@ -168,11 +156,12 @@ import bnsFileListTabs from '@/components/pro-tabs/bns-file-list-tabs.vue'
import bnsKkFilePreview from '@/components/pro-tabs/bns-kkFile-preview.vue'
export default {
components: {
bnsKkFilePreview, bnsFileListTabs,
bnsKkFilePreview,
bnsFileListTabs,
BnsPersonApprovalDetailsTabs,
BnsPersonApprovalTabs,
bnsConsPersonDetailsTabs,
bnsGenerateWorkCardTabs
bnsGenerateWorkCardTabs,
},
data() {
return {
@ -185,28 +174,28 @@ export default {
consName: undefined,
},
personList: [],
proOptions: [],//
consOptions: [],//
proOptions: [], //
consOptions: [], //
//
statusDict: [],
personTotal: 0,
loading: false,
constructionPersonnelOpen: false,
auditStatusDict:{
"1" : "待审批",
"2" : "审批中",
"3" : "已通过",
"4" : "已驳回",
"5" : "已撤销"
auditStatusDict: {
1: '待审批',
2: '审批中',
3: '已通过',
4: '已驳回',
5: '已撤销',
},
lookFaceFile:'',
lookFaceFile: '',
document: false,
documentPreview: false,
fileList: [],
kkFilePreview: {
filePreviewUrl: '',
fileName: '',
showDownloadButton: false
showDownloadButton: false,
},
}
},
@ -221,22 +210,22 @@ export default {
indexContinuous,
lookFaceFile,
hideSensitiveInfo,
updateStatus(status){
updateStatus(status) {
return this.auditStatusDict[status]
},
//
getProOption(){
getProOption() {
const params = {
id: ''
id: '',
}
getProOptions(params).then(res => {
this.proOptions = res.data
})
},
//
getConsOption(){
getConsOption() {
const params = {
id: ''
id: '',
}
getConsOptions(params).then(res => {
this.proOptions = res.data
@ -246,11 +235,11 @@ export default {
getStatus() {
const params = {
dictType: 'sys_approval_state',
dictValue: ''
dictValue: '',
}
dictTableOption(params).then(response => {
this.statusDict = response.data;
});
this.statusDict = response.data
})
},
/** 文件查看按钮操作 */
handleShow(row, informationType) {
@ -259,13 +248,13 @@ export default {
1: '体检文件',
2: '保险文件',
3: '特殊工种文件',
4: '其他文件'
4: '其他文件',
}
selectFile({
classification: 9,
uuid: row.uuid,
informationType: informationType,
fromType: 2
fromType: 2,
}).then(response => {
console.log(response)
if (response.data.length === 0) {
@ -275,7 +264,7 @@ export default {
this.kkFilePreview = {
filePreviewUrl: response.data[0].filePath,
fileName: response.data[0].fileName,
showDownloadButton: false
showDownloadButton: false,
}
this.documentPreview = true
} else {
@ -286,19 +275,19 @@ export default {
})
},
/** 人员出场查询 */
getList(){
getList() {
const proId = this.$store.state.user.thisIds.proId
const consUuid = this.$store.state.user.thisIds.consUuid
const supUuid = this.$store.state.user.thisIds.supUuid
const userType = this.$store.state.user.userType
const params = {
proId : proId,
consUuid : consUuid,
proId: proId,
consUuid: consUuid,
supUuid: supUuid,
userType:userType,
userType: userType,
type: '出场',
enterType: '承包审核',
...this.personQueryParams
...this.personQueryParams,
}
getList(params).then(res => {
this.personList = res.rows
@ -308,57 +297,68 @@ export default {
},
//
handleQueryPerson(){
this.personQueryParams.pageNum = 1;
this.getList();
handleQueryPerson() {
this.personQueryParams.pageNum = 1
this.getList()
},
//
resetQueryPerson(){
this.resetForm("personQueryForm");
this.handleQueryPerson();
resetQueryPerson() {
this.resetForm('personQueryForm')
this.handleQueryPerson()
},
//
handleApprove(row){
this.$router.push("/system/subManagement-personApproval-auth/personApproval/" + encryptCBC(JSON.stringify({
uuid:row.uuid,
taskId:row.taskId,
procInstId:row.procInsId,
contUuid:row.contUuid,
consUuid:row.consUuid,
showType:2,
isExamine:true,
btnShow:true,
finalCheck: row.finalCheck,
auditType:'出场'
})));
handleApprove(row) {
this.$router.push(
'/system/subManagement-personApproval-auth/personApproval/' +
encryptCBC(
JSON.stringify({
uuid: row.uuid,
taskId: row.taskId,
procInstId: row.procInsId,
contUuid: row.contUuid,
consUuid: row.consUuid,
showType: 2,
isExamine: true,
btnShow: true,
finalCheck: row.finalCheck,
auditType: '出场',
})
)
)
},
//
handleView(row){
this.$router.push("/system/subManagement-personApproval-auth/personApproval/" + encryptCBC(JSON.stringify({
uuid:row.uuid,
taskId:row.taskId,
procInstId:row.procInsId,
contUuid:row.contUuid,
consUuid:row.consUuid,
showType:1,
isExamine:false,
btnShow:false,
finalCheck: row.finalCheck,
auditType:'出场'
})));
handleView(row) {
this.$router.push(
'/system/subManagement-personApproval-auth/personApproval/' +
encryptCBC(
JSON.stringify({
uuid: row.uuid,
taskId: row.taskId,
procInstId: row.procInsId,
contUuid: row.contUuid,
consUuid: row.consUuid,
showType: 1,
isExamine: false,
btnShow: false,
finalCheck: row.finalCheck,
auditType: '出场',
})
)
)
},
//
handleAuditRecord(row){
this.$router.push("/flow/auditRecord/" + encryptCBC(JSON.stringify({
taskId: row.taskId,
checkType:'2'
})));
handleAuditRecord(row) {
this.$router.push(
'/flow/auditRecord/' +
encryptCBC(
JSON.stringify({
taskId: row.taskId,
checkType: '2',
})
)
)
},
}
},
}
</script>
<style scoped lang="scss">
</style>
<style scoped lang="scss"></style>