审核预览文件时增加输入框 初步调试

This commit is contained in:
BianLzhaoMin 2025-02-11 17:39:37 +08:00
parent de3a1dd6ed
commit 8d5ca641b1
7 changed files with 641 additions and 491 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -3,35 +3,21 @@
<div v-if="items.length === 0" class="no-files">
<img src="../../assets/file/no_file.png" alt="文件图标" />
</div>
<div
v-for="(item, index) in items"
:key="index"
class="file-item"
>
<div class="file-icon" @click="handView(item)" :title="item.fileName" style="cursor: pointer">
<img v-if="getIconPaths(item.fileName) === 'word.png'"
src="@/assets/file/word.png" alt="文件图标"
/>
<img v-else-if="getIconPaths(item.fileName) === 'excel.png'"
src="@/assets/file/excel.png" alt="文件图标"
/>
<img v-else-if="getIconPaths(item.fileName) === 'pdf.png'"
src="@/assets/file/pdf.png" alt="文件图标"
/>
<img v-else-if="getIconPaths(item.fileName) === 'txt.png'"
src="@/assets/file/txt.png" alt="文件图标"
/>
<img v-else-if="getIconPaths(item.fileName) === 'ppt.png'"
src="@/assets/file/ppt.png" alt="文件图标"
/>
<img v-else-if="getIconPaths(item.fileName) === 'png'"
:src="`${lookFile + item.filePath}`" alt="文件图标"
/>
<div v-for="(item, index) in items" :key="index" class="file-item">
<div class="file-icon" @click="handView(item)" :title="item.fileName" style="cursor: pointer">
<img v-if="getIconPaths(item.fileName) === 'word.png'" src="@/assets/file/word.png" alt="文件图标" />
<img v-else-if="getIconPaths(item.fileName) === 'excel.png'" src="@/assets/file/excel.png" alt="文件图标" />
<img v-else-if="getIconPaths(item.fileName) === 'pdf.png'" src="@/assets/file/pdf.png" alt="文件图标" />
<img v-else-if="getIconPaths(item.fileName) === 'txt.png'" src="@/assets/file/txt.png" alt="文件图标" />
<img v-else-if="getIconPaths(item.fileName) === 'ppt.png'" src="@/assets/file/ppt.png" alt="文件图标" />
<img v-else-if="getIconPaths(item.fileName) === 'png'" :src="`${lookFile + item.filePath}`" alt="文件图标" />
</div>
<div class="file-details">
<div class="file-name" :title="item.fileName">
{{ item.fileName.length > 8 ? item.fileName.substring(0, 8) + '....' + item.fileName.split('.').pop().toLowerCase() : item.fileName
{{
item.fileName.length > 8
? item.fileName.substring(0, 8) + '....' + item.fileName.split('.').pop().toLowerCase()
: item.fileName
}}
<div class="file-info">
<div class="file-size">{{ (item.fileSize / 1024).toFixed(2) + 'Kb' }}</div>
@ -40,14 +26,30 @@
</div>
</div>
</div>
<el-dialog title="文件预览" :visible.sync="viewOpen" width="90%" append-to-body>
<div style="width: 100%;height:720px">
<bns-kkFile-preview :items="filePreview" v-on:fillInComments="handleFillInComments"></bns-kkFile-preview>
<el-dialog title="文件预览" :visible.sync="viewOpen" width="90%" append-to-body @closed="onCloseFileDialog">
<div style="width: 100%; height: 720px">
<el-row>
<el-col :span="!isShowOptions ? 24 : 18">
<div>
<bns-kkFile-preview :items="filePreview" v-on:fillInComments="handleFillInComments"></bns-kkFile-preview>
</div>
</el-col>
<el-col :span="isShowOptions ? 6 : 0">
<div style="padding-left: 12px" v-if="isShowOptions">
<el-input
type="textarea"
:autosize="{ minRows: 30, maxRows: 50 }"
placeholder="请输入意见"
v-model="opinionValue"
maxlength="200"
show-word-limit
/>
</div>
</el-col>
</el-row>
</div>
</el-dialog>
</div>
</template>
<script>
import bnsKkFilePreview from '@/components/pro-tabs/bns-kkFile-preview.vue'
@ -56,17 +58,35 @@ import { lookFaceFile } from '@/utils/bonus'
export default {
components: {
'bns-kkFile-preview': bnsKkFilePreview
'bns-kkFile-preview': bnsKkFilePreview,
},
props: {
items: {
type: Array,
default: () => {
return {
label: ''
label: '',
}
}
}
},
},
//
isShowOptions: {
type: Boolean,
default: false,
},
// taps
opinionValueOther: {
type: String,
default: '',
},
},
watch: {
opinionValueOther: {
handler(newValue) {
this.opinionValue = newValue
},
deep: true,
},
},
data() {
return {
@ -74,10 +94,11 @@ export default {
filePreview: {
filePreviewUrl: '',
fileName: '',
showDownloadButton: false
showDownloadButton: false,
},
iconSrc: '',
lookFile: ''
lookFile: '',
opinionValue: '',
}
},
created() {
@ -92,13 +113,19 @@ export default {
this.viewOpen = true
this.filePreview = {
filePreviewUrl: item.filePath,
fileName: item.fileName
fileName: item.fileName,
}
},
handleFillInComments: function(e) {
handleFillInComments: function (e) {
console.log('handleFillInComments', e)
}
}
},
//
onCloseFileDialog() {
//
this.$emit('onCloseFileDialog', this.opinionValue)
},
},
}
</script>
<style scoped>

View File

@ -170,6 +170,12 @@ export default {
type: Number,
default: 1,
},
//
opinionValueOther: {
type: String,
default: () => '',
},
},
computed: {
store() {
@ -191,6 +197,15 @@ export default {
},
deep: true,
},
opinionValueOther: {
handler(newValue) {
if (newValue && this.isExamine) {
this.reason = newValue
}
},
deep: true,
},
},
data() {
return {

View File

@ -6,26 +6,26 @@ const cbc_iv = CryptoJS.enc.Utf8.parse('1234567812345678')
* 默认参数需要加密
* @type {boolean}
*/
const jia_mi=false;
const jia_mi = false
/**
* 默认后台会自动加密
* @type {boolean}
*/
const jie_mi=false;
const jie_mi = false
/**
* 加密
* @param word
* @returns {string}
*/
export const encryptCBC = function(word) {
if(!jia_mi){
return word;
export const encryptCBC = function (word) {
if (!jia_mi) {
return word
}
const srcs = CryptoJS.enc.Utf8.parse(word)
const encrypted = CryptoJS.AES.encrypt(srcs, cbc_key, {
iv: cbc_iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
padding: CryptoJS.pad.Pkcs7,
})
return encrypted.toString()
}
@ -35,14 +35,14 @@ export const encryptCBC = function(word) {
* @param word
* @returns {*}
*/
export const decryptCBC = function(word) {
if(!jie_mi){
return word;
export const decryptCBC = function (word) {
if (!jie_mi) {
return word
}
const encrypted = CryptoJS.AES.decrypt(word, cbc_key, {
iv: cbc_iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
padding: CryptoJS.pad.Pkcs7,
})
return encrypted.toString(CryptoJS.enc.Utf8)
}
@ -52,12 +52,12 @@ export const decryptCBC = function(word) {
* @param word
* @returns {string}
*/
export const encryptCBCTime= function(word) {
export const encryptCBCTime = function (word) {
const srcs = CryptoJS.enc.Utf8.parse(word)
const encrypted = CryptoJS.AES.encrypt(srcs, cbc_key, {
iv: cbc_iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
padding: CryptoJS.pad.Pkcs7,
})
return encrypted.toString()
}

View File

@ -7,28 +7,19 @@
placeholder="请输入关键字"
maxlength="60"
show-word-limit
clearable v-no-whitespace
clearable
v-no-whitespace
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="工程" prop="proName" v-if="hideOrNot">
<el-select v-model="queryParams.proName" placeholder="请选择工程" clearable>
<el-option
v-for="dict in proNameDict"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-option v-for="dict in proNameDict" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="审批状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择审批状态" clearable>
<el-option
v-for="dict in approvalStatus"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-option v-for="dict in approvalStatus" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item>
@ -36,10 +27,13 @@
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :style="{float:'right'}"></right-toolbar>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :style="{ float: 'right' }"></right-toolbar>
<el-table v-loading="loading" :data="proList" @selection-change="handleSelectionChange"
:index="indexContinuous(queryParams.pageNum, queryParams.pageSize)"
<el-table
v-loading="loading"
:data="proList"
@selection-change="handleSelectionChange"
:index="indexContinuous(queryParams.pageNum, queryParams.pageSize)"
>
<el-table-column label="序号" type="index" width="55" align="center" />
<el-table-column label="工程名称" align="center" prop="proName" />
@ -57,51 +51,49 @@
<el-table-column label="承包商负责人联系方式" align="center">
<template slot-scope="scope">
<!-- 检查是否存在身份证号 -->
<span v-if="scope.row.contractorPrincipalPhone">{{ hideSensitiveInfo(scope.row.contractorPrincipalPhone)
}}</span>
<span v-if="scope.row.contractorPrincipalPhone">
{{ hideSensitiveInfo(scope.row.contractorPrincipalPhone) }}
</span>
<span v-else>-</span>
</template>
</el-table-column>
<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-else>-</span>
</template>
<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-else>-</span>
</template>
</el-table-column>
<el-table-column label="操作" width="300px" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="examine(scope.row,1)"
@click="examine(scope.row, 1)"
v-if="scope.row.status === '1'"
v-hasPermi="['system:consApproval:approval']"
>审核
>
审核
</el-button>
<el-button
size="mini"
type="text"
@click="examine(scope.row,2)"
@click="examine(scope.row, 2)"
v-hasPermi="['system:consApproval:approval']"
v-else
>查看
>
查看
</el-button>
<el-button
size="mini"
type="text"
@click="auditRecord(scope.row)"
v-hasPermi="['system:audit:query']"
>审核记录
<el-button size="mini" type="text" @click="auditRecord(scope.row)" v-hasPermi="['system:audit:query']">
审核记录
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@ -145,20 +137,19 @@ export default {
keyword: undefined,
proName: undefined,
start: undefined,
status:'1'
status: '1',
},
//
form: {},
//
rules: {},
statusDict:{
"1" : "待审批",
"2" : "审批中",
"3" : "已通过",
"4" : "已驳回",
"5" : "已撤销"
}
statusDict: {
1: '待审批',
2: '审批中',
3: '已通过',
4: '已驳回',
5: '已撤销',
},
}
},
created() {
@ -171,7 +162,7 @@ export default {
this.getApprovalStatus()
},
methods: {
updateStatus(status){
updateStatus(status) {
return this.statusDict[status]
},
indexContinuous,
@ -180,7 +171,7 @@ export default {
getApprovalStatus() {
const params = {
dictType: 'sys_approval_state',
dictValue: ''
dictValue: '',
}
dictTableOption(params).then(response => {
this.approvalStatus = response.data
@ -189,7 +180,7 @@ export default {
/** 获取工程下拉选 */
getProOption() {
const params = {
id: ''
id: '',
}
getProOptions(params).then(res => {
this.proNameDict = res.data
@ -200,8 +191,8 @@ export default {
getList() {
this.loading = false
// this.queryParams.proId = this.$store.state.user.thisIds.proId;
this.queryParams.supUuid = this.$store.state.user.thisIds.supUuid;
this.queryParams.userType = this.$store.state.user.userType;
this.queryParams.supUuid = this.$store.state.user.thisIds.supUuid
this.queryParams.userType = this.$store.state.user.userType
getConsEntranceList(this.queryParams).then(response => {
this.proList = response.rows
this.total = response.total
@ -213,36 +204,51 @@ export default {
/** 打开审核页面 */
examine(row, type) {
if (type === 1) {
this.$router.push('/system/cons-approval-auth/consEntranceApproval/' + encryptCBC(JSON.stringify({
proId: row.proId,
taskId: row.taskId,
procInstId:row.procInsId,
finalCheck: row.finalCheck,
consUuid: row.consUuid,
isExamine: true,
btnShow: true,
showType: 2
})))
this.$router.push(
'/system/cons-approval-auth/consEntranceApproval/' +
encryptCBC(
JSON.stringify({
proId: row.proId,
taskId: row.taskId,
procInstId: row.procInsId,
finalCheck: row.finalCheck,
consUuid: row.consUuid,
isExamine: true,
btnShow: true,
showType: 2,
})
)
)
} else {
this.$router.push('/system/cons-approval-auth/consEntranceApproval/' + encryptCBC(JSON.stringify({
proId: row.proId,
taskId: row.taskId,
procInstId:row.procInsId,
finalCheck: row.finalCheck,
consUuid: row.consUuid,
isExamine: false,
btnShow: false,
showType: 1
})))
this.$router.push(
'/system/cons-approval-auth/consEntranceApproval/' +
encryptCBC(
JSON.stringify({
proId: row.proId,
taskId: row.taskId,
procInstId: row.procInsId,
finalCheck: row.finalCheck,
consUuid: row.consUuid,
isExamine: false,
btnShow: false,
showType: 1,
})
)
)
}
},
/** 打开审核记录页面 */
auditRecord(row) {
this.$router.push("/flow/auditRecord/" + encryptCBC(JSON.stringify({
taskId: row.taskId,
checkType:'2',
taskType: '存在'
})));
this.$router.push(
'/flow/auditRecord/' +
encryptCBC(
JSON.stringify({
taskId: row.taskId,
checkType: '2',
taskType: '存在',
})
)
)
},
/** 搜索按钮操作 */
handleQuery() {
@ -259,7 +265,7 @@ export default {
this.ids = selection.map(item => item.proId)
this.single = selection.length !== 1
this.multiple = !selection.length
}
}
},
},
}
</script>

View File

@ -1,10 +1,7 @@
<template>
<el-tabs v-model="activeName" @tab-click="handleClick" :style="{padding:'20px'}">
<el-tabs v-model="activeName" @tab-click="handleClick" :style="{ padding: '20px' }">
<el-tab-pane label="监理单位信息" name="first">
<bns-supervisor-info-tabs
:items="supervisoryUnitInformationItems"
>
</bns-supervisor-info-tabs>
<bns-supervisor-info-tabs :items="supervisoryUnitInformationItems"></bns-supervisor-info-tabs>
</el-tab-pane>
<el-tab-pane label="监理人员基本信息" name="second">
<div class="app-container">
@ -13,7 +10,8 @@
<el-input
v-model="queryParams.supervisorName"
maxlength="20"
show-word-limit v-no-whitespace
show-word-limit
v-no-whitespace
placeholder="请输入监理姓名"
clearable
@keyup.enter.native="handleQuery"
@ -22,14 +20,7 @@
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button
type="primary"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出
</el-button>
<el-button type="primary" plain icon="el-icon-download" size="mini" @click="handleExport">导出</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="supervisorList">
@ -44,17 +35,17 @@
<el-table-column label="岗位" align="center" prop="postName" />
<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,4)">查看</el-button>
<el-button size="mini" @click="handleShow(scope.row, 4)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="年龄" align="center" prop="age" />
@ -68,39 +59,37 @@
<el-table-column label="人脸照片" align="center" prop="faceUrl">
<template slot-scope="scope">
<el-popover placement="right" title="" trigger="hover">
<img :src="`${lookFaceFile+scope.row.faceUrl}`" :min-width="300" :height="300" alt="照片" />
<img slot="reference" :src="`${lookFaceFile+scope.row.faceUrl}`" style="max-height: 50px; max-width: 50px"
:alt="`${lookFaceFile+scope.row.faceUrl}`"
<img :src="`${lookFaceFile + scope.row.faceUrl}`" :min-width="300" :height="300" alt="照片" />
<img
slot="reference"
:src="`${lookFaceFile + scope.row.faceUrl}`"
style="max-height: 50px; max-width: 50px"
:alt="`${lookFaceFile + scope.row.faceUrl}`"
/>
</el-popover>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleView(scope.row)"
>查看
</el-button>
<el-button size="mini" type="text" @click="handleView(scope.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getSupervisorPersonList"
/>
<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>
@ -110,15 +99,25 @@
<el-row type="flex" justify="start" align="top" :gutter="gutterValue">
<el-col :span="11">
<el-form-item label-width="120px" label="姓名" prop="name">
<el-input v-model="formData.name" placeholder="请输入姓名" :disabled="true" clearable v-no-whitespace
:style="{width: '100%'}"
<el-input
v-model="formData.name"
placeholder="请输入姓名"
:disabled="true"
clearable
v-no-whitespace
:style="{ width: '100%' }"
></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label-width="120px" label="性别" prop="sex">
<el-input v-model="formData.sex" placeholder="请输入性别" :disabled="true" clearable v-no-whitespace
:style="{width: '100%'}"
<el-input
v-model="formData.sex"
placeholder="请输入性别"
:disabled="true"
clearable
v-no-whitespace
:style="{ width: '100%' }"
></el-input>
</el-form-item>
</el-col>
@ -126,15 +125,25 @@
<el-row type="flex" justify="start" align="top" :gutter="gutterValue">
<el-col :span="11">
<el-form-item label-width="120px" label="年龄" prop="age">
<el-input v-model="formData.age" placeholder="请输入年龄" :disabled="true" clearable v-no-whitespace
:style="{width: '100%'}"
<el-input
v-model="formData.age"
placeholder="请输入年龄"
:disabled="true"
clearable
v-no-whitespace
:style="{ width: '100%' }"
></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label-width="120px" label="身份证号码" prop="idCard">
<el-input v-model="formData.idCard" placeholder="请输入身份证号码" :disabled="true" clearable
:style="{width: '100%'}" v-no-whitespace
<el-input
v-model="formData.idCard"
placeholder="请输入身份证号码"
:disabled="true"
clearable
:style="{ width: '100%' }"
v-no-whitespace
></el-input>
</el-form-item>
</el-col>
@ -142,18 +151,30 @@
<el-row type="flex" justify="start" align="top" :gutter="gutterValue">
<el-col :span="11">
<el-form-item label-width="120px" label="联系方式" prop="phone">
<el-input v-model="formData.phone" placeholder="请输入联系方式" :disabled="true" clearable
:style="{width: '100%'}" v-no-whitespace
<el-input
v-model="formData.phone"
placeholder="请输入联系方式"
:disabled="true"
clearable
:style="{ width: '100%' }"
v-no-whitespace
></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label-width="120px" label="岗位" prop="postName">
<el-select v-model="formData.postName" placeholder="请选择岗位" :style="{width: '100%'}" clearable
:disabled="true"
<el-select
v-model="formData.postName"
placeholder="请选择岗位"
:style="{ width: '100%' }"
clearable
:disabled="true"
>
<el-option v-for="(item,index) in postList" :key="item.value" :label="item.label"
:value="item.value"
<el-option
v-for="(item, index) in postList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
@ -161,14 +182,17 @@
</el-row>
<el-row type="flex" justify="start" align="top" :gutter="gutterValue">
<el-col :span="24">
<el-form-item label-width="120px" label="人脸照片" :style="{width:'100%'}">
<img v-if="formData.facePhoto.length === 0" style="width:100px;height: 100px;margin-left: 45px;"
src="@/assets/file/no_file.png" alt="暂无文件"
>
<el-form-item label-width="120px" label="人脸照片" :style="{ width: '100%' }">
<img
v-if="formData.facePhoto.length === 0"
style="width: 100px; height: 100px; margin-left: 45px"
src="@/assets/file/no_file.png"
alt="暂无文件"
/>
<bns-file-list-tabs
v-else
:items="formData.facePhoto"
:style="{marginLeft:'45px'}"
:style="{ marginLeft: '45px' }"
></bns-file-list-tabs>
</el-form-item>
</el-col>
@ -176,14 +200,16 @@
<el-row type="flex" justify="start" align="top" :gutter="gutterValue">
<el-col :span="24">
<el-form-item label-width="120px" label="体检文件">
<img v-if="formData.physicalExaminationFile.length === 0"
style="width:100px;height: 100px;margin-left: 45px;" src="@/assets/file/no_file.png"
alt="暂无文件"
>
<img
v-if="formData.physicalExaminationFile.length === 0"
style="width: 100px; height: 100px; margin-left: 45px"
src="@/assets/file/no_file.png"
alt="暂无文件"
/>
<bns-file-list-tabs
v-else
:items="formData.physicalExaminationFile"
:style="{marginLeft:'45px'}"
:style="{ marginLeft: '45px' }"
></bns-file-list-tabs>
</el-form-item>
</el-col>
@ -191,13 +217,16 @@
<el-row type="flex" justify="start" align="top" :gutter="gutterValue">
<el-col :span="24">
<el-form-item label-width="120px" label="保险文件">
<img v-if="formData.insuranceFile.length === 0" style="width:100px;height: 100px;margin-left: 45px;"
src="@/assets/file/no_file.png" alt="暂无文件"
>
<img
v-if="formData.insuranceFile.length === 0"
style="width: 100px; height: 100px; margin-left: 45px"
src="@/assets/file/no_file.png"
alt="暂无文件"
/>
<bns-file-list-tabs
v-else
:items="formData.insuranceFile"
:style="{marginLeft:'45px'}"
:style="{ marginLeft: '45px' }"
></bns-file-list-tabs>
</el-form-item>
</el-col>
@ -205,13 +234,16 @@
<el-row type="flex" justify="start" align="top" :gutter="gutterValue">
<el-col :span="24">
<el-form-item label-width="120px" label="其他文件">
<img v-if="formData.otherFileList.length === 0" style="width:100px;height: 100px;margin-left: 45px;"
src="@/assets/file/no_file.png" alt="暂无文件"
>
<img
v-if="formData.otherFileList.length === 0"
style="width: 100px; height: 100px; margin-left: 45px"
src="@/assets/file/no_file.png"
alt="暂无文件"
/>
<bns-file-list-tabs
v-else
:items="formData.otherFileList"
:style="{marginLeft:'45px'}"
:style="{ marginLeft: '45px' }"
></bns-file-list-tabs>
</el-form-item>
</el-col>
@ -226,34 +258,50 @@
<el-tab-pane label="企业资质" name="third">
<bns-file-list-tabs
:items="enterpriseQualificationItems"
:isShowOptions="paramsData.isExamine"
:opinionValueOther="opinionValueOther"
@onCloseFileDialog="onCloseFileDialog"
></bns-file-list-tabs>
</el-tab-pane>
<el-tab-pane label="安全协议书" name="fourth">
<bns-file-list-tabs
:items="securityAgreementFileItems"
:isShowOptions="paramsData.isExamine"
:opinionValueOther="opinionValueOther"
@onCloseFileDialog="onCloseFileDialog"
></bns-file-list-tabs>
</el-tab-pane>
<el-tab-pane label="监理规划" name="five">
<bns-file-list-tabs
:items="supervisionPlanningItems"
:isShowOptions="paramsData.isExamine"
:opinionValueOther="opinionValueOther"
@onCloseFileDialog="onCloseFileDialog"
></bns-file-list-tabs>
</el-tab-pane>
<el-tab-pane label="实施细则" name="six">
<bns-file-list-tabs
:items="implementationRulesItems"
:isShowOptions="paramsData.isExamine"
:opinionValueOther="opinionValueOther"
@onCloseFileDialog="onCloseFileDialog"
></bns-file-list-tabs>
</el-tab-pane>
<el-tab-pane label="审批结果及意见" name="seven">
<bns-timeline-tabs :is-examine="paramsData.isExamine" :btn-show="paramsData.btnShow"
:show-type="paramsData.showType" :final-check="paramsData.finalCheck"
:items="formData.approvalItems" :audit-type="'审批信息'"
v-on:pass="approvalPass"
v-on:turnDown="approvalTurnDown"
v-on:finalInstance="approvalFinalInstance"
<bns-timeline-tabs
:is-examine="paramsData.isExamine"
:btn-show="paramsData.btnShow"
:show-type="paramsData.showType"
:final-check="paramsData.finalCheck"
:items="formData.approvalItems"
:audit-type="'审批信息'"
v-on:pass="approvalPass"
v-on:turnDown="approvalTurnDown"
v-on:finalInstance="approvalFinalInstance"
:opinionValueOther="opinionValueOther"
/>
</el-tab-pane>
</el-tabs>
</template>
<script>
import bnsSupervisorInfoTabs from '@/components/pro-tabs/bns-supervisor-info-tabs.vue'
@ -274,7 +322,7 @@ export default {
BnsTimelineTabs,
bnsSupervisorInfoTabs,
bnsFileListTabs,
bnsGenerateWorkCardTabs
bnsGenerateWorkCardTabs,
},
data() {
return {
@ -293,7 +341,7 @@ export default {
kkFilePreview: {
filePreviewUrl: '',
fileName: '',
showDownloadButton: false
showDownloadButton: false,
},
gutterValue: parseInt('21', 10),
//
@ -306,7 +354,7 @@ export default {
queryParams: {
pageNum: 1,
pageSize: 10,
supervisorName: undefined
supervisorName: undefined,
},
//
enterpriseQualificationItems: [],
@ -335,10 +383,12 @@ export default {
//
insuranceFile: [],
//
otherFileList: []
otherFileList: [],
},
paramsData: {},
lookFaceFile:''
lookFaceFile: '',
//
opinionValueOther: '',
}
},
created() {
@ -352,16 +402,15 @@ export default {
indexContinuous,
lookFaceFile,
hideSensitiveInfo,
approvalHistory(){
approvalHistory({taskId:this.paramsData.taskId}).then(res => {
approvalHistory() {
approvalHistory({ taskId: this.paramsData.taskId }).then(res => {
this.formData.approvalItems = res.data
})
},
getStatus() {
const params = {
dictType: 'sys_sup_post',
dictValue: ''
dictValue: '',
}
dictTableOption(params).then(response => {
this.postList = response.data
@ -382,13 +431,13 @@ export default {
1: '体检文件',
2: '保险文件',
3: '特殊工种文件',
4: '其他文件'
4: '其他文件',
}
selectFile({
classification: 9,
uuid: row.uuid,
informationType: informationType,
fromType: 3
fromType: 3,
}).then(response => {
console.log(response)
if (response.data.length === 0) {
@ -398,7 +447,7 @@ export default {
this.kkFilePreview = {
filePreviewUrl: response.data[0].filePath,
fileName: response.data[0].fileName,
showDownloadButton: false
showDownloadButton: false,
}
this.documentPreview = true
} else {
@ -412,7 +461,7 @@ export default {
getSupervisorList() {
this.loading = true
const params = {
proId: this.paramsData.proId
proId: this.paramsData.proId,
}
listSupervisor(params).then(response => {
this.supervisoryUnitInformationItems = response.data
@ -430,7 +479,7 @@ export default {
proId: this.paramsData.proId,
supId: this.paramsData.supId,
supUuid: this.paramsData.supUuid,
...this.queryParams
...this.queryParams,
}
listSupervisorPerson(params).then(response => {
console.log(response)
@ -446,7 +495,7 @@ export default {
classification: '1',
fromType: '1',
informationType: '1',
uuid : this.$store.state.user.thisIds.uuid
uuid: this.$store.state.user.thisIds.uuid,
}
selectFile(params).then(response => {
this.enterpriseQualificationItems = response.data
@ -459,7 +508,7 @@ export default {
classification: '1',
fromType: '1',
informationType: '2',
uuid : this.$store.state.user.thisIds.uuid
uuid: this.$store.state.user.thisIds.uuid,
}
selectFile(params).then(response => {
this.securityAgreementFileItems = response.data
@ -471,7 +520,7 @@ export default {
id: this.paramsData.proId,
classification: '1',
fromType: '1',
informationType: '9'
informationType: '9',
}
selectFile(params).then(response => {
this.supervisionPlanningItems = response.data
@ -483,7 +532,7 @@ export default {
id: this.paramsData.proId,
classification: '1',
fromType: '1',
informationType: '10'
informationType: '10',
}
selectFile(params).then(response => {
this.implementationRulesItems = response.data
@ -505,11 +554,15 @@ export default {
proId: this.paramsData.proId,
pageNum: 1,
pageSize: 10,
supervisorName: this.queryParams.supervisorName
supervisorName: this.queryParams.supervisorName,
}
this.derive('project/outsourcingPro/exportSupervisorPerson', {
...params
}, `监理人员基本信息.xlsx`)
this.derive(
'project/outsourcingPro/exportSupervisorPerson',
{
...params,
},
`监理人员基本信息.xlsx`
)
},
// tab tab
handleClick(tab, event) {
@ -523,7 +576,7 @@ export default {
id: row.id,
proId: row.proId,
uuid: row.uuid,
supUuid: row.supUuid
supUuid: row.supUuid,
}
this.getStatus()
listSupervisorPersonById(params).then(response => {
@ -546,35 +599,35 @@ export default {
name: row.name,
phone: row.phone,
postName: row.postName,
faceUrl: row.faceUrl
faceUrl: row.faceUrl,
}
},
/** 审核通过*/
approvalPass(e){
approvalPass(e) {
const param = {
reason:e,
reason: e,
...this.paramsData,
agree:"1"
agree: '1',
}
this.approval(param,"审批通过")
this.approval(param, '审批通过')
},
/**审核驳回*/
approvalTurnDown(e){
approvalTurnDown(e) {
const param = {
...e,
...this.paramsData,
agree:"2"
agree: '2',
}
this.approval(param,"退回成功")
this.approval(param, '退回成功')
},
/**终审*/
approvalFinalInstance(e){
approvalFinalInstance(e) {
const param = {
reason:e,
reason: e,
...this.paramsData,
agree:"3"
agree: '3',
}
this.approval(param,"终审成功")
this.approval(param, '终审成功')
},
/**
* 审批方法+
@ -582,23 +635,27 @@ export default {
* @param text
*/
getMyToDoNum,
approval(param,text){
approval(param, text) {
submitPersonApproval(param).then(response => {
this.getMyToDoNum()
if (response.code === 200) {
this.$message({
message: text,
type: 'success'
type: 'success',
})
this.$tab.closePage();
this.$tab.closePage()
} else {
this.$message({
message: response.msg,
type: 'error'
type: 'error',
})
}
})
}
}
},
//
onCloseFileDialog(val) {
this.opinionValueOther = val
},
},
}
</script>