aiccs/src/views/illegal/inclusion/Review.vue

581 lines
20 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="main-content abnormal">
<DetailHead result="业务受理" />
<div class="content-body">
<el-form ref="form" :model="form" label-width="230px" label-position="right" :rules="formRules">
<div class="form">
<div class="tab">
<div class="tab-title"><label>严重违法信息</label></div>
</div>
<div class="form-body">
<el-row class="lh0">
<el-form-item label="拟列入严重违法名单主体信息">
<el-button size="mini" type="primary" @click="showEntbaseList">查看严重违法企业名单<i class="el-icon el-icon-s-order" style="margin-left:5px" /></el-button>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="列入原因" prop="reason" class="bt0">
<el-col :span="24">
<el-input v-model="form.reason" type="textarea" style="width:100%" disabled />
</el-col>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="事实理由" class="bt0">
<el-col :span="24">
<el-input v-model="form.lostcreditexplain" type="textarea" style="width:100%" :autosize="{ minRows: 3, maxRows: 6 }" disabled />
</el-col>
</el-form-item>
</el-row>
<el-row class="p0">
<el-form-item label="材料上传" class="bt0 upload">
<el-upload
:action="uploadPath"
:data="{bizseq:bizseq}"
:on-remove="removeFile"
:on-success="uploadCallback"
:on-preview="previewFile"
multiple
:file-list="fileList"
style="max-width:800px;display: inline-block"
class="uploadFileList"
>
<div style="display: inline-block;">
<el-button size="small" style="display: inline-block;margin-right:10px" type="primary">点击上传</el-button>
<div slot="tip" style="display: inline-block;" class="el-upload__tip">只能上传jpg/png/pdf/doc/docx/xls/xlsx/rar/zip/7z文件且单个文件不能超过20M</div>
</div>
</el-upload>
</el-form-item>
</el-row>
</div>
</div>
<div class="form">
<div class="tab">
<div class="tab-title"><label>处理意见</label></div>
</div>
<div class="form-body history">
<div v-if="historyLog.length == 0" class="none">暂无历史意见</div>
<el-steps direction="vertical">
<el-step v-for="(each,index) in historyLog" :key="'historyLog'+index" :title="each.step + '' + each.handler + ' 处办日期:' + each.handledate" :description="each.opinioncontent" status="finish" />
</el-steps>
</div>
</div>
<div v-if="endApply === '2'" class="form">
<div class="tab">
<div class="tab-title"><label style="color: #bd2c00">结束原因</label></div>
</div>
<el-row>
<el-form>
<el-input v-model="endReason" type="textarea" style="display:inline-block;width:100%" disabled :autosize="{ minRows: 2, maxRows: 6 }" />
</el-form>
</el-row>
</div>
<div class="form">
<div class="tab">
<div class="tab-title"><label>审核意见</label></div>
</div>
<div class="form-body">
<el-row class="p0">
<el-form-item label="是否通过" prop="nextNode">
<el-radio v-model="form.nextNodeID" label="approveSerIllegal">通过</el-radio>
<!-- <el-radio v-model="form.nextNodeID" label="overSerIllegal">不通过</el-radio>-->
<el-radio v-model="form.nextNodeID" label="serIllegalEnter">回退</el-radio>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="审核意见" prop="opinion" class="bt0">
<el-col :span="24">
<el-input v-model="form.opinion" type="textarea" placeholder="请输入审核意见" style="width:100%" />
</el-col>
<el-col :span="12">
<label>常用语</label>
<el-select v-model="opinion" placeholder="请选择" class="custom" style="width:100%">
<el-option
v-for="item in opinionOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-col>
</el-form-item>
</el-row>
<el-row>
<el-form-item v-if="form.nextNodeID == 'approveSerIllegal'" class="bt0" label="审批人" prop="reviewerId">
<el-col :span="12">
<el-select v-model="form.reviewerId" placeholder="请选择审批人" class="custom" style="width:100%">
<el-option
v-for="item in reviewer"
:key="'reviewer'+item.primaryKey"
:label="item.name"
:value="item.primaryKey"
/>
</el-select>
</el-col>
</el-form-item>
</el-row>
</div>
</div>
</el-form>
<div class="submit-box">
<el-button type="primary" @click="submitForm">提交</el-button>
<el-button @click="$router.back()">返回</el-button>
</div>
</div>
<!-- <HandleDialog :show.sync="showEntbase" title="严重违法主体名单" style="width:50vw">
<el-table :data="dataShow" tooltip-effect="dark" style="width: 1200px" :fit="true" height="500px">
<el-table-column prop="index" label="序号" min-width="30" align="center" />
<el-table-column prop="uscc" label="统一社会信用代码/注册号" min-width="110" align="left" />
<el-table-column prop="name" :show-overflow-tooltip="true" label="名称" min-width="120" align="left" />
<el-table-column prop="estDate" label="成立时间" min-width="90" align="left" />
<el-table-column prop="address" :show-overflow-tooltip="true" label="经营地址" min-width="150" align="left" />
<el-table-column prop="lerepname" label="法定代表人" min-width="60" align="left" />
<el-table-column prop="typeName" :show-overflow-tooltip="true" label="企业类型" min-width="130" align="left" />
</el-table>
<el-row>
<el-col>
<el-pagination
:current-page="currentPage"
small
layout="prev, pager, next"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</el-col>
</el-row>
</HandleDialog> -->
<el-dialog
title="拟列入严重违法名单主体信息"
:visible.sync="showEntbase"
width="80%"
>
<el-table
:header-cell-style="{background:'#8cc3fb',color:'#fff'}"
:row-class-name="tableRowClassName"
:data="dataShow"
tooltip-effect="dark"
:fit="true"
height="500px"
>
<el-table-column prop="index" label="序号" min-width="30" align="center" />
<el-table-column prop="uscc" label="统一社会信用代码/注册号" min-width="110" align="left" />
<el-table-column prop="name" :show-overflow-tooltip="true" label="名称" min-width="120" align="left" />
<el-table-column prop="estDate" label="成立日期" min-width="90" align="left" />
<el-table-column prop="address" :show-overflow-tooltip="true" label="经营地址" min-width="150" align="left" />
<el-table-column prop="lerepname" label="法定代表人" min-width="60" align="left" />
<el-table-column prop="typeName" :show-overflow-tooltip="true" label="企业类型" min-width="130" align="left" />
</el-table>
<div>
<el-row>
<el-pagination
:current-page="currentPage"
small
layout="prev, pager, next"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</el-row>
</div>
</el-dialog>
</div>
</template>
<script>
import DetailHead from '@/components/DetailHead'
import HandleDialog from '@/components/HandleDialog'
import { removeAttachementById, listAttachmentByBizseq } from '@/api/attachment'
import { nextIllegalInclusionProcess, listIllegalByBizSeq } from '@/api/illegal'
import { getUsersWithPermission } from '@/api/user'
import { taskOpinion } from '@/api/task'
import { getConstant } from '@/api/system'
import { isMenHu } from '@/utils/utils'
export default {
components: {
HandleDialog: HandleDialog,
DetailHead: DetailHead
},
data() {
return {
bizseq: '',
workflowId: '',
uploadPath: `${process.env.VUE_APP_BASE_API}/attachment/uploadAdvance`,
showEntbase: false,
batchId: this.$route.query.batch,
entbase: [],
// 分页数据,这里用来保存每页切割后的数据
// 看起来格式是这样的[[{},{},{}],[{},{},{}]]
// 数组内套数组,每个数组就是一页数据
totalPageData: [],
// 共几页
pageNum: '',
// 每页显示数量
pageSize: 10,
// 当前显示页码
currentPage: 1,
// 总共多少条数据
total: 1,
// 当前要显示的数据
dataShow: [],
endApply: '',
endReason: '',
form: {
enterType: 'company',
nextNodeID: 'approveSerIllegal',
lostcreditexplain: '',
reason: '',
opinion: ''
},
formRules: {
reason: [
{ required: true, message: '请输入列入原因', trigger: 'blur' }
],
opinion: [
{ required: true, message: '请输入经办意见', trigger: ['blur', 'change'] }
],
reviewerId: [
{ required: true, message: '请选择审核人' }
]
},
reason: '',
opinion: '',
reasonOptions: [],
opinionOptions: [{
value: 0,
label: '拟同意'
}, {
value: 1,
label: '同意'
}, {
value: 2,
label: '不同意'
}],
historyLog: [],
exmainerOptions: [],
fileList: [],
user: JSON.parse(sessionStorage.getItem('user')),
reviewer: [{
primaryKey: 0,
name: '陈彦宇'
}, {
primaryKey: 1,
name: '郭翊'
}, {
primaryKey: 2,
name: '陈文云'
}, {
primaryKey: 3,
name: '王东'
}],
submitLoading: false
}
},
watch: {
// 原因渲染
reason() {
this.form.specause = this.reason
let name = ''
this.reasonOptions.forEach(each => {
if (this.reason === each.value) {
name = each.label
}
})
this.form.reason = name
},
// 意见渲染
opinion() {
let name = ''
this.opinionOptions.forEach(each => {
if (this.opinion === each.value) {
name = each.label
}
})
this.form.opinion = name
}
},
mounted() {
this.bizseq = this.$route.query.bizseq
this.workflowId = this.$route.query.workflowId
this.tasklistid = this.$route.query.tasklistid
// 加载常用语
this.opinionOptions = this.$util.getCommonWords(this.user.primaryKey)
// 加载处办记录
taskOpinion(this.workflowId).then(res => {
if (res.code === 0) {
res.data.forEach(each => {
switch (each.opiniontype) {
case '0': each.step = '经办人'; break
case '1': each.step = '审核人'; break
case '2': each.step = '审批人'; break
}
this.historyLog.push(each)
})
} else {
this.$message.error('加载处办记录失败')
}
})
// 加载严重违法企业名录主体
listIllegalByBizSeq(this.bizseq).then(res => {
if (res.code === 0) {
// 添加分页index
let i = 1
const pageStart = (this.currentPage - 1) * this.pageSize
res.data.forEach(each => {
each.index = pageStart + i++
each.name = each.entname
each.uscc = each.uniscid
each.estDate = this.$util.isNotEmpty(each.estDate) ? this.$util.formatDate.format(new Date(Date.parse(each.estDate)), 'yyyy-MM-dd') : ''
each.typeName = each.entTypeName
this.form.reason = each.serillreaString
this.form.lostcreditexplain = each.lostcreditexplain
this.endApply = each.endApply === 'null' ? '' : each.endApply
this.endReason = each.endReason === 'null' ? '' : each.endReason
this.entbase.push(each)
})
// 分页处理
this.total = this.entbase.length
// 计算页数
this.calcPageData()
} else {
this.$message.error('加载严重违法企业名录主体信息失败')
}
})
// 加载企业列入原因
getConstant('CD73').then(res => {
if (res.code === 0) {
const list = []
res.data.forEach(each => {
list.push({
value: each.code,
label: each.name
})
})
this.reasonOptions = list
if (this.$util.isNotEmpty(this.reason)) {
let name = ''
this.reasonOptions.forEach(each => {
if (this.reason === each.value) {
name = each.label
}
})
this.form.reason = name
}
}
})
// 加载审核人
this.loadReviewer()
// 加载附件清单
listAttachmentByBizseq(this.bizseq).then(data => {
data.forEach(each => {
each.id = each.attachmentid
each.name = each.filename
each.url = `${process.env.VUE_APP_DOWNLOAD_URL}/` + each.temppath
})
this.fileList = data
})
},
methods: {
tableRowClassName({ row, rowIndex }) {
if (rowIndex % 2 === 1) {
return 'warning-row'
}
},
// 计算页数
calcPageData() {
// 计算页数(根据后台数据的条数和每页显示数量算出一共几页,得0时设为1)
if (this.entbase.length >= 1) {
this.pageNum = Math.ceil(this.entbase.length / this.pageSize) || 1
console.log('总页数:', this.pageNum)
}
// 数据分组
for (let i = 0; i < this.pageNum; i++) {
// 每一页都是一个数组 形如 [['第一页的数据'],['第二页的数据'],['第三页数据']]
// 根据每页显示数量 将后台的数据分割到 每一页,假设pageSize为5 则第一页是1-5条即slice(0,5)第二页是6-10条即slice(5,10)...
this.totalPageData[i] = this.entbase.slice(this.pageSize * i, this.pageSize * (i + 1))
}
// 获取到数据后显示第一页内容,数组下标是从0开始的这里一定要减去1不然会丢失一组数据
this.dataShow = this.totalPageData[this.currentPage - 1]
console.log(this.dataShow)
},
// 每页条数发生变化
handleSizeChange(newPageSize) {
this.pageSize = newPageSize
// 重新计算页数并分组
this.calcPageData()
},
// 当前页码发生变化
handleCurrentChange(newPageNum) {
console.log('当前页码:', newPageNum)
this.currentPage = newPageNum
// 这里仍然不要忘记减去1
this.dataShow = this.totalPageData[newPageNum - 1]
},
// 上传文件预览
previewFile(file) {
window.open(file.url, '_blank')
},
// 发送提交
submitForm() {
this.$refs.form.validate(valid => {
if (!valid) return
this.$confirm('是否确认提交?', '提示').then(() => {
this.form.bizseq = this.bizseq
this.form.workflowid = this.workflowId
this.form.opiniontype = '1'
this.form.handler = this.user.username
this.form.handlerid = this.user.primaryKey
this.form.opinioncontent = this.form.opinion
this.form.tasklistid = this.tasklistid
this.form.nextPerformerids = this.form.reviewerId === undefined ? '' : this.form.reviewerId
for (const i in this.reviewer) {
if (this.reviewer[i].primaryKey === this.form.reviewerId) {
this.form.nextPerformerNames = this.reviewer[i].name
}
}
if (this.form.nextNodeID === 'serIllegalEnter') { // 回退不传接收人
this.form.nextPerformerids = ''
this.form.nextPerformerNames = ''
}
this.submitLoading = true
nextIllegalInclusionProcess(this.form).then(res => {
this.submitLoading = false
if (res.code === 0) {
this.$message.success('审核成功')
if (isMenHu()) {
// 信创门户环境跳转回待办
window.location.href = '/aiccs/#/todo/list'
} else {
this.$router.back()
}
}
})
}).catch(() => {})
})
},
uploadCallback(res, file) {
if (res.code === 0) {
file.id = res.data.attachmentid
}
},
// 查看严重违法主体名单
showEntbaseList() {
this.showEntbase = true
},
// 移除文件回调
removeFile(file) {
removeAttachementById(file.id).then(res => {
if (res.code === 0) {
this.$message.success('删除成功')
} else {
this.$message.error(res.msg)
}
})
},
// 加载审核人
loadReviewer() {
getUsersWithPermission('illegalInclusionExamine', this.user.orgId).then(res => {
if (res.code === 0) {
this.reviewer = res.data
}
})
}
}
}
</script>
<style lang="scss" scoped>
.main-content{
padding: 10pt;
font-size: $table-content-font-size;
.back-btn{
position:absolute;
right:40pt;
}
.content-header,.content-body{
background: white;
padding:20PX 10PX;
border:1PX solid #eee;
}
.content-header{
height:60PX;
display: flex;
align-items: center;
.title{
font-weight: 700;
font-size: $font-size-sub-title;
}
}
.content-body{
padding:20pt;
.tab{
.tab-title{
label{
display:inline-block;
}
}
}
.form{
margin-bottom: 20pt;
}
}
}
.el-row {
border-left: 1px solid $color-border;
}
.bt0{
/deep/.el-form-item__label{
border-top: 0!important;
}
/deep/.el-form-item__content{
border-top: 0!important;
}
}
</style>
<style lang="scss">
.main-content.abnormal{
.el-form-item{
margin-bottom:0;
background: $color-form-label;
.el-form-item__label{
font-size: $table-content-font-size;
padding-left: 10px;
border-top: 1px solid $color-border;
}
.el-form-item__content{
background: white;
padding: 10px;
font-size: $table-content-font-size;
border-top: 1px solid $color-border;
border-right: 1px solid $color-border;
border-left: 1px solid $color-border;
}
}
.el-form-item:last-child{
border-bottom: 1px solid $color-border;
}
.form-body.history{
padding:15px;
border:1px solid $color-border;
}
.el-form-item.is-error .custom .el-input__inner{
border-color:$color-border;
}
.el-textarea.is-disabled .el-textarea__inner{
color: #1c1e23;
}
.uploadFileList{
.el-upload-list__item{
display: inline-block;
width: auto;
}
}
}
</style>