企业破产重整计划或者和解协议执行

This commit is contained in:
chenxf 2026-01-30 09:58:52 +08:00
parent 2082e8832a
commit 55e44bff1d
5 changed files with 1585 additions and 0 deletions

View File

@ -623,3 +623,148 @@ export function checkIllegalStart(data) {
data
})
}
// ========== 企业破产重整计划或者和解协议执行相关接口 ==========
/**
* 获取机构树
*/
export function getOrgunits(orgNumber, orgLevel) {
return request({
url: '/user/getOrgunits',
method: 'get',
useResponseData: true,
params: { orgNumber, orgLevel }
})
}
/**
* 判断是否是管理员
*/
export function getIsUserProp() {
return request({
url: '/user/getIsUserProp',
method: 'get',
useResponseData: true
})
}
/**
* 获取在列严的企业用于申请暂时屏蔽失信信息
*/
export function entSeriousIllegalPage(data) {
return request({
url: '/RpeiExeInfo/listXrSeriousIllegalListEnt',
method: 'post',
data,
useResponseData: true
})
}
/**
* 获取破产重整执行任务列表
*/
export function listRpeiExeInfoTask(data) {
return request({
url: '/RpeiExeInfo/listRpeiExeInfoTask',
method: 'post',
data,
useResponseData: true
})
}
/**
* 获取破产重整执行信息列表
*/
export function listRpeiExeInfo(data) {
return request({
url: '/RpeiExeInfo/listRpeiExeInfo',
method: 'post',
data,
useResponseData: true
})
}
/**
* 保存新的破产重整执行任务
*/
export function rpeiExeInfoTaskSaveIvdAcceptNew(data) {
return request({
url: '/RpeiExeInfo/saveIvdAcceptList',
method: 'post',
data,
useResponseData: true
})
}
/**
* 根据业务序列号获取任务详情
*/
export function rpeiExeInfoTaskByBizSeqNo(params) {
return request({
url: '/RpeiExeInfo/selectByBizSeqNo',
method: 'get',
params,
useResponseData: true
})
}
/**
* 获取指定主体的严重违法失信列表
*/
export function xrSeriousIllegalListByPripId(data) {
return request({
useResponseData: true,
url: '/serIllegalList/getIllegalListByPripId',
method: 'post',
data
})
}
/**
* 业务流程控制审批驳回等
*/
export function RpeiExeInfoProcessControl(data) {
return request({
url: '/RpeiExeInfo/processControl',
method: 'post',
data,
useResponseData: true
})
}
/**
* 获取业务相关的附件列表
*/
export function xrAttachmentListByBizSepNo(data) {
return request({
url: '/attachment/listByBizSepNo',
method: 'post',
data,
useResponseData: true
})
}
/**
* 删除附件
*/
export function xrAttachmentDelLawFile(params) {
return request({
url: '/xrAttachment/delLawFile',
method: 'post',
params,
useResponseData: true
})
}
/**
* 获取业务审批意见列表
*/
export function xrOpinionListByBizSeqNo(params) {
return request({
url: '/xrOpinion/listByBizSeqNo',
method: 'post',
params,
useResponseData: true
})
}

View File

@ -1627,6 +1627,50 @@ export const constantRoutes = [{
},
hidden: true
},
// ========== 企业破产重整计划或者和解协议执行 ==========
{
path: 'rpeiExeInfo/todo',
name: 'IllegalRpeiExeInfotodo',
component: () =>
import('@/views/illegal/remove/rpeiExeInfo/list'),
meta: {
title: '企业破产重整计划或者和解协议',
type: 'todo'
}
},
{
path: 'rpeiExeInfo/history',
name: 'IllegalRpeiExeInfohistory',
component: () =>
import('@/views/illegal/remove/rpeiExeInfo/list'),
meta: {
title: '企业破产重整计划或者和解协议执行记录',
type: 'history'
},
hidden: true
},
{
path: 'rpeiExeInfo/todo/handle',
name: 'IllegalRpeiExeInfoTodoHandle',
component: () =>
import('@/views/illegal/remove/rpeiExeInfo/handle'),
meta: {
title: '企业破产重整计划或者和解协议执行办理',
type: 'todo'
},
hidden: true
},
{
path: 'rpeiExeInfo/history/handle',
name: 'IllegalRpeiExeInfoHistoryHandle',
component: () =>
import('@/views/illegal/remove/rpeiExeInfo/handle'),
meta: {
title: '企业破产重整计划或者和解协议执行详情',
type: 'history'
},
hidden: true
},
{
path: 'corrections',
name: 'illegalCorrections',

View File

@ -0,0 +1,265 @@
<template>
<el-dialog
:title="title"
:visible.sync="visible"
width="90vw"
top="153px"
custom-class="dialog-abnormal-list"
>
<edit-table
v-if="visible"
v-model="tableData"
:table-prop="tableProp"
:fields="fields"
:show-search-form="true"
row-key="pripid"
:search-form-prop="searchFormProp"
:search-loader="searchLoader"
:selected.sync="selected"
/>
<div slot="footer">
<el-button type="primary" plain @click="visible = false">取消</el-button>
<el-button type="primary" @click="confirm">办理</el-button>
</div>
</el-dialog>
</template>
<script>
import { entSeriousIllegalPage, getIsUserProp, listRpeiExeInfo } from '@/api/illegal'
export default {
props: {
type: {
type: String,
default: () => {
return ''
}
}
},
data() {
return {
visible: false,
tableData: [],
selected: [],
params: '',
searchFormProp: {
formConfig: {
labelWidth: '100px',
labelPosition: 'right',
gutter: 32
}
},
tableProp: {
emitLoadOnCreate: true,
tableConfig: {
rowKey: 'illegallistid',
selection: true,
tableSelectionProps: {
reserveSelection: true,
selectable: (row, index) => {
return this.selected.length === 0 || this.selected[0] === row
}
},
disableSelectAll: false,
showIndex: true,
indexWidth: '100px',
showPagination: true,
tableProps: {
headerCellStyle: { background: '#F5F5F5!important', color: '#333333!important', padding: '0px' },
headerRowStyle: { height: '48px' },
rowStyle: { height: '48px' },
cellStyle: { padding: '16px 0', color: '#333' }
}
}
}
}
},
computed: {
// eslint-disable-next-line vue/return-in-computed-property
title() {
if (this.params === 'add') {
return '重整计划或者和解协议需要暂时屏蔽失信的企业信息'
} else if (this.params === 'update') {
return '企业破产重整计划或者和解协议执行信息'
}
},
fields() {
return [
{
type: 'input',
label: '统一社会信用代码/注册号',
prop: 'searchUscc',
span: 8,
tableProps: {
showOverflowTooltip: true,
formatter: (row, column, cellValue, index) => {
return `${row.uniscid || row.regno || ''}`
}
}
},
{
type: 'input',
label: ({ meta }) => {
return meta.isSearchForm ? '主体名称(精确)' : '主体名称'
},
prop: 'entname',
span: 8,
tableProps: {
showOverflowTooltip: true,
formatter: (row, column, cellValue, index) => {
return `${row.entname || ''}`
}
}
},
{
type: 'buttons',
showInTable: false,
hiddenLabel: true,
label: '搜索操作',
prop: '搜索操作',
span: 8,
formItemProp: {
labelWidth: '0px'
},
buttons: [
{
label: '查询',
type: 'primary',
handler: (scope) => {
const { meta } = scope
const { _editTable } = meta
const { editTableInstance } = _editTable
editTableInstance.search()
}
},
{
label: '重置',
type: 'primary',
buttonProps: {
plain: true
},
handler: (scope) => {
const { meta } = scope
const { _editTable } = meta
const { editTableInstance } = _editTable
editTableInstance.search({
reset: true
})
}
}
]
},
{
type: 'input',
label: '列入严重违法企业名单原因',
prop: 'serillreaString',
span: 8,
tableProps: {
showOverflowTooltip: true
},
showInForm: false,
showInTable: () => {
return this.params === 'add'
}
},
{
type: 'date-picker',
label: '列入日期',
prop: 'abntime',
showInForm: false,
showInTable: () => {
return this.params === 'add'
}
},
{
type: 'select',
label: '执行状态',
prop: 'exeState',
tableSort: 3,
span: 6,
showInForm: false,
options: () => {
return [
{ label: '执行期间', value: '1' },
{ label: '执行完毕', value: '2' },
{ label: '未执行成功', value: '3' }
]
},
showInTable: () => {
return this.params === 'update'
}
},
{
type: 'date-picker',
label: '执行日期',
prop: 'exeDate',
showInForm: false,
showInTable: () => {
return this.params === 'update'
}
}
]
}
},
created() {
//
getIsUserProp().then(res => {
this.data = {
...this.data,
userProp: res.userProp
}
})
},
methods: {
open(params) {
//
this.params = params || {}
this.selected = []
this.visible = true
},
searchLoader(pageParam, parseSearchFormData, instance) {
if (this.params === 'add') { //
return entSeriousIllegalPage({
size: pageParam.size,
current: pageParam.current,
entity: {
...parseSearchFormData
}
}).then((data) => {
return {
tableData: data.records,
total: data.total
}
})
} else if (this.params === 'update') { //
return listRpeiExeInfo({
size: pageParam.size,
current: pageParam.current,
entity: {
...parseSearchFormData
}
}).then((data) => {
return {
tableData: data.records,
total: data.total
}
})
}
},
confirm() {
this.$emit('confirm', {
selected: this.selected,
params: this.params
})
this.visible = false
}
}
}
</script>
<style lang="scss" scoped>
.no-data-message {
color: red;
text-align: center; /* 可选:让文字居中 */
font-size: 16px; /* 可选:设置字体大小 */
margin-top: 20px; /* 可选:增加顶部间距 */
}
</style>

View File

@ -0,0 +1,719 @@
<template>
<div class="page">
<easy-form
ref="EasyForm"
v-model="data"
:fields="fields"
:form-config="formConfig"
:buttons="buttons"
>
<template v-slot:divider="scope">
<div class="divider">
<span class="text">{{ scope.getPropValue(scope.field.label) }}</span>
</div>
</template>
<template v-slot:uploader="scope">
<div class="uploader">
<el-upload
:action="action"
:data="{
attachtype: '1',
bizseq: scope.formData.bizseq
}"
accept=".jpg,.png,.pdf,.doc,.docx,.xls,.xlsx,.rar,.zip,.7z"
multiple
:disabled="scope.isView"
:file-list="scope.formData[scope.field.prop]"
:before-remove="removeFile"
:on-preview="previewFile"
>
<el-button v-if="!scope.isView" size="small" plain type="primary">
<svg-icon icon-class="download" />
点击上传
</el-button>
<div v-if="!scope.isView" slot="tip" class="el-upload__tip">只能上传jpg/png/pdf/doc/docx/xls/xlsx/rar/zip/7z文件且单个文件不能超过20M</div>
</el-upload>
</div>
</template>
<template v-slot:steps="scope">
<div class="steps">
<el-steps v-if="scope.formData[scope.field.prop].length > 0" :active="0" finish-status="success">
<el-step v-for="step in scope.formData[scope.field.prop]" :key="step.key">
<template v-slot:description>
<div class="step-description">
<div>
<span class="step-description-label">{{ step.opinionType }}内容</span>
<span class="step-description-value">{{ step.opinionContent }}</span>
</div>
<div>
<span class="step-description-label">{{ step.opinionType }}</span>
<span class="step-description-value">{{ step.handler }}</span>
</div>
<div>
<span class="step-description-label">{{ step.opinionType }}日期</span>
<span class="step-description-value">{{ parseTime2(step.createTime, 'yyyy-MM-dd hh:mm') }}</span>
</div>
</div>
</template>
</el-step>
</el-steps>
<div v-else class="empty-tips">暂无历史信息</div>
</div>
</template>
<template v-slot:opinion="scope">
<div class="opinion-selector">
<span class="opinion-selector-text">常用语</span>
<el-select
v-model="scope.field.opinion"
size="medium"
placeholder="请选择常用语"
@change="(val)=>{
scope.formData[scope.field.prop] = val
scope.easyFormItemBindData.componentScope.formInstance.clearValidate(scope.field.prop)
}"
>
<el-option
v-for="item in scope.field.options"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</div>
</template>
<template v-slot:upperDept="scope">
<div class="opinion-selector">
<el-radio-group
v-model="localSelection"
@change="(val) => {
// isUpper
getUsersWithPermission(val === '上级部门处理人' ? 1 : 0);
scope.easyFormItemBindData.componentScope.formInstance.clearValidate(scope.field.prop);
}"
>
<el-radio label="当前部门处理人">当前部门处理人</el-radio>
<el-radio label="上级部门处理人">上级部门处理人</el-radio>
</el-radio-group>
</div>
</template>
<template v-slot:entListTable>
<easy-table
ref="EntListTable"
v-model="entListTableData"
:fields="entListFields"
:table-config="entListTableConfig"
:emit-load-on-create="true"
:on-load="loadEntListData"
/>
</template>
</easy-form>
</div>
</template>
<script>
import {
getOrgunits, RpeiExeInfoProcessControl, rpeiExeInfoTaskByBizSeqNo,
xrAttachmentDelLawFile,
xrAttachmentListByBizSepNo,
xrOpinionListByBizSeqNo, xrSeriousIllegalListByPripId
} from '@/api/illegal'
import { getUsersWithPermission } from '@/api/user'
import { createGlobalLoading, parseTime2 } from '@/utils'
import { findCurrentNode, findNextSequenceFlowList, taskInfo } from '@/api'
export default {
data() {
return {
authItemMap: [],
parseTime2,
action: process.env.VUE_APP_BASE_API + '/attachment/uploadFileByBizseq',
nextPerformerMap: [],
data: {},
status: '',
taskLikeId: '',
showFakeProgress: false,
type: this.$route.meta.type,
flowModel: [],
currentNodeID: '',
entListTableData: [],
localSelection: '当前部门处理人', //
entListFields: [
{
type: 'input',
label: '统一社会信用代码/注册号',
prop: 'uniscId',
tableProps: {
showOverflowTooltip: true,
width: '220px',
formatter: (row, column, cellValue, index) => {
return `${row.uniscId || row.regNo || ''}`
}
}
},
{
type: 'input',
label: '企业名称',
prop: 'entName',
tableProps: {
showOverflowTooltip: true,
width: '300px',
formatter: (row, column, cellValue, index) => {
return `${row.entName || ''}`
}
}
},
{
type: 'input',
label: '列入严重违法企业名单原因',
prop: 'serIllReaCn',
span: 8,
tableProps: {
showOverflowTooltip: true
},
showInForm: false
},
{
type: 'date-picker',
label: '列入日期',
prop: 'abnTime',
showInForm: false
}
],
entListTableConfig: {
selection: false,
showIndex: true,
indexWidth: '100px',
showPagination: true,
tableProps: {
headerCellStyle: { background: '#F5F5F5!important', color: '#333333!important', padding: '0px' },
headerRowStyle: { height: '48px' },
rowStyle: { height: '48px' },
cellStyle: { padding: '16px 0', color: '#333' }
}
},
formConfig: {
labelPosition: 'right',
buttonPosition: 'right',
gutter: 0,
isView: () => {
return this.readonly
}
},
fields: [
{
type: 'divider',
label: '企业破产重整计划或者和解协议执行信息'
},
{
type: 'input',
label: '统一社会信用代码/注册号',
prop: 'uniscId',
span: 10,
isView: true
},
{
type: 'input',
label: '企业名称',
prop: 'entName',
span: 14,
isView: true
},
{
type: 'input',
label: '登记机关',
prop: 'regAuthCn',
span: 10,
isView: true
},
{
type: 'select',
label: '重整计划或者和解协议执行状态',
prop: 'exeStateAft',
required: true,
span: 24,
options: [
{ label: '执行期间', value: '1' },
{ label: '执行完毕', value: '2' },
{ label: '未执行成功', value: '3' }
],
isView: ({ formData }) => {
return formData.status !== '0'
},
onChange: (scope, value, isFromUser) => {
if (isFromUser) {
if (value === '1') {
// ""handleType ""(3)
scope.formData.handleType = '3'
} else if (value === '2' || value === '3') {
// """"handleType ""(3)
scope.formData.handleType = '0'
}
//
scope.easyFormItemBindData.componentScope.formInstance.clearValidate(scope.field.prop)
}
}
},
{
type: 'date-picker',
label: '执行时间',
prop: 'exeDate',
required: true,
formProps: {
valueFormat: 'yyyy-MM-dd'
},
span: 12,
isView: ({ formData }) => {
return formData.status !== '0'
}
},
{
type: 'radio',
label: '对严重违法失信信息的处理',
prop: 'handleType',
required: true,
span: 24,
options: ({ formData }) => {
if (formData.exeStateAft === '1') {
// ""
return [
{ label: '暂时屏蔽严重违法失信信息', value: '3' }
]
} else if (formData.exeStateAft === '2' || formData.exeStateAft === '3') {
// ""
return [
{ label: '恢复严重违法失信名单公示', value: '0' }
]
} else {
//
return [
{ label: '恢复严重违法失信名单公示', value: '0' },
{ label: '暂时屏蔽严重违法失信信息', value: '3' }
]
}
},
isView: ({ formData }) => {
return formData.status !== '0'
}
},
{
type: 'slot',
slotName: 'uploader',
label: '材料列表',
prop: 'fileList',
defaultValue: () => {
return []
},
span: 24
},
{
type: 'divider',
label: '严重违法失信名单列表'
},
{
type: 'slot',
slotName: 'entListTable',
label: '严重违法失信名单列表',
hiddenLabel: true,
prop: 'entList',
span: 24
},
{
type: 'divider',
label: '历史处理信息'
},
{
type: 'slot',
slotName: 'steps',
label: '历史处理信息',
hiddenLabel: true,
prop: 'steps',
defaultValue: () => {
return []
},
span: 24
},
{
type: 'divider',
label: ({ formData }) => {
return ({
'0': '经办意见',
'1': '审核意见',
'2': '审批意见',
'7': '执法负责意见'
})[formData.status]
},
showInForm: () => {
return !this.readonly
}
},
{
type: 'radio',
label: '选择操作',
prop: 'isAgree',
required: true,
span: 24,
options: ({ formData }) => {
return this.flowModel
},
showInForm: () => {
return !this.readonly
},
onChange: (scope, value, isFromUser) => {
if (isFromUser) {
scope.formData.opinionContent = ''
}
}
},
{
type: 'select',
beforeSlotName: 'upperDept',
label: '下一步处理人',
prop: 'nextPerformerIds',
span: 12,
required: true,
options: () => {
return this.nextPerformerMap
},
showInForm: ({ formData }) => {
return !this.readonly && ['0', '1', '7'].includes(formData.status) && !['nullify', 'transfer', 'examineFinish', 'approveFinish', 'lawFinish', 'handleReturn', 'examineReturn', 'end', 'upApproveFinish'].includes(formData.isAgree)
}
},
{
type: 'textarea',
afterSlotName: 'opinion',
label: ({ formData }) => {
return ({
'0': '经办意见',
'1': '审核意见',
'2': '审批意见',
'7': '执法负责意见'
})[formData.status]
},
prop: 'opinionContent',
required: true,
span: 24,
opinion: '',
options: [
'同意',
'不同意'
],
showInForm: ({ formData }) => {
return !this.readonly && formData.isAgree !== 'transfer'
}
},
{
type: 'cascader',
label: '转办机关',
prop: 'nextOrgID',
required: true,
span: 24,
showInForm: ({ formData }) => {
return formData.isAgree === 'transfer' && formData.status === '0'
},
isView: ({ formData }) => {
return ['1', '2'].includes(formData.status) || this.readonly
},
formProps: {
props: { checkStrictly: true }
},
optionConfig: {
labelKeyName: 'label',
valueKeyName: 'orgUnitId'
},
options: () => {
return this.authItemMap
},
onCreated: ({ setOptionLoading }) => {
if (this.authItemMap.length === 0) {
setOptionLoading('authItem', getOrgunits().then((data) => {
this.authItemMap = data
}))
}
}
},
{
type: 'input',
label: '转办原因',
prop: 'transferReason',
required: true,
span: 24,
showInForm: ({ formData }) => {
return formData.isAgree === 'transfer' && formData.status === '0'
},
isView: ({ formData }) => {
return ['1', '2'].includes(formData.status) || this.readonly
}
}
],
buttons: [
{
label: '提交',
type: 'primary',
show: () => {
return !this.readonly
},
handler: ({ formInstance, getOptionValue }) => {
return formInstance.submitForm().then((formData) => {
const getConfirmMessage = (status, handleType) => {
if (status === '0' || status === '1') {
return '确定继续提交下一步?'
} else if (status === '2') {
const handleTypeText = {
'0': '确定恢复该企业的严重违法失信名单公示?',
'3': '确定暂时屏蔽该企业的失信信息?'
}
return handleTypeText[handleType] || '确定继续处理该企业的严重违法失信信息?'
} else {
return '是否继续提交?'
}
}
const confirmMessage = getConfirmMessage(formData.status, formData.handleType)
this.$confirm(confirmMessage, '提示', {
type: 'info',
customClass: 'type-1',
confirmHandlerPromise: () => {
// eslint-disable-next-line no-unused-vars
const { taskId, ...rpeiExeInfoTaskData } = formData
const nextPerformer = getOptionValue('nextPerformerIds') ? [getOptionValue('nextPerformerIds')] : []
return RpeiExeInfoProcessControl({
rpeiExeInfoTask: rpeiExeInfoTaskData, // 使taskId
bizSeqNo: formData.bizSeqNo,
nextNodeID: formData.isAgree,
nextPerformerIds: nextPerformer.map((item) => {
return item.value
}),
nextPerformerNames: nextPerformer?.label,
opinion: {
opinionContent: formData.opinionContent
},
currentNodeID: this.currentNodeID
}).then((data) => {
this.$message.success(`已完成对"${formData.entName}"的业务办理!`)
this.$router.push({
path: `/illegal/rpeiExeInfo/${this.$route.meta.type}`
})
})
}
})
})
}
}
]
}
},
computed: {
readonly() {
return this.type === 'history'
}
},
created() {
createGlobalLoading(() => {
return Promise.all([
xrOpinionListByBizSeqNo({
bizSeqNo: this.$route.query.bizseq
}).then((data) => {
this.data = {
...this.data,
steps: data.reverse()
}
}),
xrAttachmentListByBizSepNo({
bizseq: this.$route.query.bizseq,
attachtype: '1'
}).then((data) => {
this.data = {
...this.data,
fileList: data.map((item) => {
return {
...item,
name: item.filename
}
})
}
}),
rpeiExeInfoTaskByBizSeqNo({
bizSeqNo: this.$route.query.bizseq
}).then((busInfo) => {
this.data = {
...this.data,
...busInfo
}
const permission = ({
'0': 'xrExamine',
'1': 'xrApprove'
})[busInfo.status]
const ps = []
if (permission) {
ps.push(getUsersWithPermission(
permission,
this.$store.getters.orgId
).then((res) => {
this.nextPerformerMap = res.data.map((item) => {
return {
label: item.name,
value: item.primaryKey
}
})
}))
}
return Promise.all(ps)
}),
taskInfo({
bizSeqNo: this.$route.query.bizseq
}).then((data) => {
this.taskLikeId = data.taskLikeId
this.data = {
...this.data,
...data,
taskId: data.taskLikeId
}
findNextSequenceFlowList({
taskId: data.taskLikeId
}).then((data) => {
this.flowModel = data.map((item) => {
return {
label: item.name, value: item.nextNode.id
}
})
})
findCurrentNode({
taskId: data.taskLikeId
}).then((activity) => {
this.currentNodeID = activity.linkType
})
})
])
})
},
methods: {
stepStatus2CN(opinionType, approve) {
return `${approve === '1' ? '上级' : ''}` + ({
'handle': '经办',
'examine': '审核',
'approve': '审批'
})[opinionType]
},
removeFile(file) {
return xrAttachmentDelLawFile({
id: file.attachmentid
})
},
previewFile(file) {
window.open(`${process.env.VUE_APP_BASE_API}/xrAttachment/getMaterial?id=${file.attachmentid || file?.response?.data?.attachmentid}&bizseq=${file.bizseq}&attachtype=${file.attachtype}`, '_blank')
},
getUsersWithPermission(isUpper) {
const ps = []
const status = this.data.status || '0'
const permission = ({
'0': 'xrExamine',
'1': 'xrApprove'
})[status]
if (permission) {
ps.push(getUsersWithPermission(
permission,
this.$store.getters.orgId,
isUpper
).then((res) => {
this.nextPerformerMap = res.data.map((item) => {
return {
label: item.name,
value: item.primaryKey
}
})
}))
}
return Promise.all(ps)
},
loadEntListData(pageParam) {
// oper_type
const operType = this.$route.query.oper_type
// oper_type operationStatus
const operationStatus = operType === 'add' ? '0'
: operType === 'update' ? '3' : '0'
return xrSeriousIllegalListByPripId({
size: pageParam.size,
current: pageParam.current,
pripId: this.$route.query.pripid,
operationStatus: operationStatus
}).then((data) => {
return {
tableData: data,
total: data.total
}
})
}
}
}
</script>
<style lang="scss" scoped>
@import "~@/styles/abnormal-handle";
.opinion-selector{
margin-top: 18px;
display: flex;
.opinion-selector-text{
margin-right: 16px;
}
}
.steps{
padding: 20px 24px;
overflow: auto;
.el-steps{
position: relative;
width: max-content;
min-width: 100%;
&::before{
content: "";
position: absolute;
border: 2px solid #F5F5F5;
width: 100%;
top: 18px;
}
.el-step{
flex-basis: unset!important;
margin-right: 56px!important;
flex-shrink: 0;
/deep/ .el-step__head{
margin-bottom: 16px;
.el-step__line{
display: none;
}
.el-step__icon{
width: 36px;
height: 36px;
border-color: #2A8CE3;
color: #2A8CE3;
}
}
/deep/ .el-step__description{
padding-right: 0;
}
.step-description{
font-size: 14px;
max-width: 235px;
&>div{
margin-bottom: 8px;
}
.step-description-label{
color: #666666;
}
.step-description-value{
color: #333333;
}
}
}
}
.empty-tips{
text-align: center;
color: #999999;
}
.notice-content-wrapper {
.button-group {
margin-top: 10px;
text-align: right;
}
}
}
</style>

View File

@ -0,0 +1,412 @@
<template>
<div class="page">
<el-tabs v-model="type" type="card">
<el-tab-pane label="企业破产重整计划或者和解协议执行待办" name="todo" />
<el-tab-pane label="企业破产重整计划或者和解协议执行记录" name="history" />
</el-tabs>
<edit-table
ref="EditTable"
v-model="data"
:table-prop="tableProp"
:fields="fields"
:show-search-form="true"
row-key="id"
:search-form-prop="searchFormProp"
:search-loader="searchLoader"
@update:selected="(value)=>{selected = value}"
>
<template v-slot:table-top>
<div style="margin-bottom: 16px;">
<el-button
v-if="type === 'todo'"
type="primary"
@click="$refs.entList.open('add')"
>
申请暂时屏蔽失信信息
</el-button>
<el-button
v-if="type === 'todo'"
type="primary"
style="margin-left: 10px;"
plain
@click="$refs.entList.open('update')"
>
修改执行办理状态
</el-button>
</div>
</template>
<template v-slot:bus-status="{ row, field, formatter }">
<span
:class="{
['bus-status-'+row[field.prop]]: true
}"
>
{{ formatter(row[field.prop]) }}
</span>
</template>
</edit-table>
<EntList ref="entList" :type="$route.meta.type" @confirm="onSelectEnt" />
</div>
</template>
<script>
import {
listRpeiExeInfoTask, RpeiExeInfoProcessControl, rpeiExeInfoTaskSaveIvdAcceptNew
} from '@/api/illegal'
import { isTaskCreater } from '@/api'
import EntList from './EntList.vue'
export default {
components: {
EntList
},
data() {
return {
type: this.$route.meta.type,
authItemMap: [],
data: [],
isExSearch: false,
tableProp: {
emitLoadOnCreate: true,
tableConfig: {
showIndex: true,
indexWidth: '100px',
handlerWidth: '120px',
showPagination: true,
tableProps: {
headerCellStyle: { background: '#F5F5F5!important', color: '#333333!important', padding: '0px' },
headerRowStyle: { height: '48px' },
rowStyle: { height: '48px' },
cellStyle: { padding: '16px 0', color: '#333' }
}
},
buttons: [
{
label: '办理',
type: 'text',
show: () => {
return this.type === 'todo'
},
handler: (scope, { row }) => {
this.handle(row)
}
},
{
label: '详细',
type: 'text',
show: () => {
return this.type === 'history'
},
handler: (scope, { row }) => {
this.handle(row)
}
},
{
label: '作废',
type: 'text',
show: () => {
return this.type === 'todo'
},
handler: (scope, { row }) => {
this.cancel(row)
}
}
]
},
searchFormProp: {
formConfig: {
labelWidth: '100px',
labelPosition: 'right',
gutter: 32
}
},
fields: [
{
type: 'input',
label: '统一社会信用代码/注册号',
prop: 'searchUscc',
span: 6,
tableSort: 1,
tableProps: {
width: '200px',
showOverflowTooltip: true,
formatter: (row, column, cellValue, index) => {
return `${row.uniscId || row.regNo}`
}
}
},
{
type: 'input',
label: '主体名称',
prop: 'entName',
tableSort: 2,
span: 6,
tableProps: {
width: '230px',
showOverflowTooltip: true
}
},
{
type: 'date-picker',
label: '发起日期',
prop: 'applyTime',
tableSort: 4,
span: 6,
showInForm: false,
showInTable: () => {
return this.type === 'todo'
}
},
{
type: 'date-picker',
label: '执行日期',
prop: 'exeDate',
tableSort: 4,
span: 6,
showInForm: false,
showInTable: () => {
return this.type === 'history'
}
},
{
type: 'select',
label: '执行状态',
prop: 'exeStateAft',
tableSort: 3,
span: 6,
showInForm: false,
options: () => {
return [
{ label: '执行期间', value: '1' },
{ label: '执行完毕', value: '2' },
{ label: '未执行成功', value: '3' }
]
}
},
{
type: (scope) => {
const { isSearchForm } = scope.meta
return isSearchForm ? 'select' : 'slot'
},
slotName: 'bus-status',
label: '业务状态',
prop: 'status',
span: 6,
showInForm: true,
options: () => {
return [
{ label: '待受理', value: '0' },
{ label: '待审核', value: '1' },
{ label: '待审批', value: '2' },
{ label: '已通过', value: '3' },
{ label: '未通过', value: '4' },
{ label: '已作废', value: '5' },
{ label: '转办', value: '6' }
]
}
},
{
type: 'buttons',
showInTable: false,
hiddenLabel: true,
label: '搜索操作',
prop: '搜索操作',
span: 6,
formItemProp: {
labelWidth: '0px'
},
buttons: [
{
label: '查询',
type: 'primary',
handler: (scope) => {
const { meta } = scope
const { _editTable } = meta
const { editTableInstance } = _editTable
editTableInstance.search()
}
},
{
label: '重置',
type: 'primary',
buttonProps: {
plain: true
},
handler: (scope) => {
const { meta } = scope
const { _editTable } = meta
const { editTableInstance } = _editTable
editTableInstance.search({
reset: true
})
}
}
]
}
],
selected: []
}
},
watch: {
type(val) {
this.$router.replace({
path: `/illegal/rpeiExeInfo/${val}`
})
}
},
beforeRouteEnter(to, from, next) {
next((vm) => {
vm.$refs.EditTable.search({ reset: true })
vm.type = vm.$route.meta.type
})
},
methods: {
searchLoader(pageParam, parseSearchFormData, instance) {
return listRpeiExeInfoTask({
size: pageParam.size,
current: pageParam.current,
entity: {
...parseSearchFormData,
busType: this.$route.meta.type
}
}).then((data) => {
return {
tableData: data.records,
total: data.total
}
})
},
onSelectEnt(data) {
let entList = []
let params = ''
//
if (Array.isArray(data)) {
entList = data
} else if (typeof data === 'object' && data.selected) {
entList = data.selected
params = data.params || ''
}
if (entList.length > 0) {
//
const item = entList[0]
// params
const confirmTitle = params.type === 'add'
? '是否确认启动暂时屏蔽相关失信业务?'
: params.type === 'update'
? '是否确认修改执行办理状态?'
: '是否确认启动暂时屏蔽相关失信业务?'
this.$confirm(confirmTitle, '提示', {
type: 'info',
customClass: 'type-1',
confirmHandlerPromise: () => {
return rpeiExeInfoTaskSaveIvdAcceptNew({
operType: params,
rpeiExeInfo: item
}).then((data) => {
return this.$router.push({
path: `/illegal/rpeiExeInfo/${this.$route.meta.type}/handle`,
query: {
bizseq: data.bizSeqId,
pripid: item.pripid
}
})
})
}
})
} else {
this.$message.warning(`请选择至少一个主体`)
}
},
handle(row) {
if (row.status === '6') {
this.$confirm(`该业务由${row.openName}转到本单位,转办原因:${row.transferReason}`, '提示', {
type: 'info',
customClass: 'type-1',
confirmHandlerPromise: () => {
this.$message.error('业务创建失败:未知错误')
}
})
} else {
return this.$router.push({
path: `/illegal/rpeiExeInfo/${this.$route.meta.type}/handle`,
query: {
bizseq: row.bizSeqNo,
pripid: row.pripId
}
})
}
},
cancel(row) {
isTaskCreater({
bizSeqNo: row.bizSeqNo
}).then((data) => {
if (data) {
this.$confirm('是否确定删除该业务', '提示', {
type: 'info',
customClass: 'type-1',
confirmHandlerPromise: () => {
return RpeiExeInfoProcessControl({
rpeiExeInfoTask: row,
bizSeqNo: row.bizSeqNo,
nextNodeID: 'nullify',
nextPerformerIds: [],
opinion: {
opinionContent: '业务作废'
}
}).then((data) => {
this.$message.success(`已完成对"${row.entName}"的业务作废!`)
this.$router.go(0)
})
}
})
} else {
this.$message.warning(`当前用户不是该业务的发起人,无法删除该业务`)
}
})
}
}
}
</script>
<style lang="scss" scoped>
@import "~@/styles/abnormal-list";
.excel-import{
margin: 0 auto;
background: #F9F9F9;
width: 600px;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
padding: 24px;
.excel-tmp-download{
margin-bottom: 17px;
.el-button{
color: #999999;
margin-right: 24px;
}
}
.filelist-info{
width: calc(100% - 48px);
font-size: 16px;
}
}
.bus-status-0{
color: #2A8CE3;
}
.bus-status-1{
color: #32BBD6;
}
.bus-status-2{
color: #5E7AEB;
}
.bus-status-3{
color: #48B86E;
}
.bus-status-4{
color: #F4222D;
}
</style>