Compare commits

...

4 Commits

Author SHA1 Message Date
chenxf 26383987bc 我的待办页面添加强制注销tab页
- 新增强制注销tab页,支持按子业务类型筛选(强制注销/拟强制注销公告/终止拟强制注销公告/恢复登记申请/营业执照作废公告)
- 搜索时bustype固定为50,下拉选择映射到subBusType字段
- 业务状态选项适配强制注销(待受理/待审核/待审批/已通过/未通过/已作废/转办)
- 业务类型名称回显支持子类型显示
- 办理按钮根据subBusType跳转到对应的强制注销办理页面
- 修复sessionStorage恢复时bustype=50导致下拉框异常的问题
2026-02-04 13:52:35 +08:00
chenxf ebd89a6e06 下载决定书 2026-02-04 11:42:28 +08:00
chenxf f120a27916 跳转到企业详情页 2026-02-04 10:12:01 +08:00
chenxf a3139c8fc0 强制注销业务增加公告期验证
发起强制注销业务时验证拟强制注销公告的公告期至是否已过期,未过期则阻止发起
2026-02-04 09:40:56 +08:00
6 changed files with 339 additions and 16 deletions

View File

@ -119,6 +119,18 @@ export default {
return '除名复议'
case '1006':
return '除名撤销'
case '50-0':
return '强制注销'
case '50-1':
return '拟强制注销公告'
case '50-2':
return '终止拟强制注销公告'
case '50-4':
return '恢复登记申请'
case '50-5':
return '营业执照作废公告'
case '50':
return '强制注销'
default:
return '未知业务类型'
}

View File

@ -77,14 +77,14 @@ service.interceptors.response.use(
store.dispatch('user/resetToken').then(() => {
location.reload()
})
} else {
if (error.config.throwError || error.config.useResponseData) { // 不被拦截处理
throw error.response
} else {
Message({
message: error.response.data.msg || '请求失败,服务器开小差了',
type: 'error'
})
if (error.config.throwError || error.config.useResponseData) { // 不被拦截处理
throw error.response
} else {
return error.response.data
}
}

View File

@ -144,11 +144,13 @@
v-model="entListTableData"
:fields="entListFields"
:table-config="entListTableConfig"
:buttons="entListButtons"
:emit-load-on-create="true"
:on-load="loadEntListData"
/>
</template>
</easy-form>
<Doc ref="doc" />
</div>
</template>
@ -164,12 +166,15 @@ import {
getDecisionContent, getForceNoticeContent,
xrForceDeregisterSpeListByBizSeqNo,
xrForceDeregisterSpeProcessControl,
xrForceDeregisterGetApprovalFormByBizSeqNo,
getOrgunits,
xrAttachmentDelLawFile,
xrAttachmentListByBizSepNo,
xrOpinionListByBizSeqNo
} from '@/api/force'
import Doc from './doc.vue'
export default {
components: { Doc },
data() {
return {
authItemMap: [],
@ -187,6 +192,16 @@ export default {
currentNodeID: '',
localSelection: '当前部门处理人', //
entListTableData: [],
entListButtons: [
{
label: '下载决定书',
type: 'text',
show: () => this.readonly,
handler: (scope, { row }) => {
this.printEntDoc(row)
}
}
],
entListFields: [
{
type: 'input',
@ -246,6 +261,7 @@ export default {
showIndex: true,
indexWidth: '100px',
showPagination: true,
handlerWidth: '120px',
tableProps: {
headerCellStyle: { background: '#F5F5F5!important', color: '#333333!important', padding: '0px' },
headerRowStyle: { height: '48px' },
@ -729,6 +745,14 @@ export default {
total: data.total
}
})
},
printEntDoc(row) {
xrForceDeregisterGetApprovalFormByBizSeqNo({
bizSeqNo: this.$route.query.bizSeqNo,
forceSpeId: row.forceSpeId
}).then((data = {}) => {
this.$refs.doc.open(data)
})
}
}
}

View File

@ -331,6 +331,19 @@ export default {
if (speList.length > 0) {
//
const item = speList[0]
//
const noticeTo = new Date(item.noticeTo)
const today = new Date()
// 0
today.setHours(0, 0, 0, 0)
noticeTo.setHours(0, 0, 0, 0)
if (noticeTo > today) {
this.$message.warning('公告期尚未结束,无法发起强制注销业务')
return
}
this.$confirm('是否确认启动强制注销业务', '提示', {
type: 'info',
customClass: 'type-1',

View File

@ -121,11 +121,11 @@
</div>
</template>
<template v-slot:entListTable>
<!-- &lt;!&ndash; 按钮组 &ndash;&gt;-->
<!-- <div class="button-group" style="margin-bottom: 10px; text-align: right;">-->
<!-- <el-button type="primary" @click="openAddDialog">添加主体</el-button>-->
<!-- <el-button type="danger" @click="openDeleteDialog">删除主体</el-button>-->
<!-- </div>-->
<!-- 按钮组 -->
<div v-if="data.status === '0'" class="button-group" style="margin-bottom: 10px; text-align: right;">
<el-button type="primary" @click="openAddDialog">添加主体</el-button>
<el-button type="danger" @click="openDeleteDialog">删除主体</el-button>
</div>
<easy-table
ref="EntListTable"
v-model="entListTableData"
@ -133,7 +133,11 @@
:table-config="entListTableConfig"
:emit-load-on-create="true"
:on-load="loadEntListData"
/>
>
<template v-slot:entNameSlot="scope">
<a class="ent-name-link" @click="goToEntDetail(scope.row)">{{ scope.row.entName || '' }}</a>
</template>
</easy-table>
</template>
</easy-form>
<!-- 引入 EntList 组件 -->
@ -195,15 +199,13 @@ export default {
}
},
{
type: 'input',
type: 'slot',
slotName: 'entNameSlot',
label: '主体名称',
prop: 'entName',
tableProps: {
showOverflowTooltip: true,
width: '300px',
formatter: (row, column, cellValue, index) => {
return `${row.entName || ''}`
}
width: '300px'
}
},
{
@ -692,6 +694,10 @@ export default {
entity => !selectedIds.includes(entity.pripid)
)
},
//
goToEntDetail(row) {
this.$router.push({ path: '/comprehensive/details', query: { pripid: row.pripId } })
},
generateNoticeContent(scope) {
this.generatingContent = true
getForceDeregisterContent(
@ -834,4 +840,12 @@ export default {
}
}
.ent-name-link {
color: #409EFF;
cursor: pointer;
&:hover {
text-decoration: underline;
}
}
</style>

View File

@ -2272,6 +2272,188 @@
:total="pageParam.total"
:current-page.sync="pageParam.curPage"
:page-sizes="[10, 20, 30, 40,50,100,200]"
layout="slot,total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChange"
@current-change="pageIndexChange"
>
<span>
{{ pageParam.curPage }} /
{{
(pageParam.total !== 0 ? parseInt((pageParam.total + pageParam.pageSize - 1) / pageParam.pageSize) : 1)
}}
</span>
</el-pagination>
</div>
</div>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="强制注销" name="forcederegister">
<span slot="label">强制注销<el-badge class="mark" :value="forcederegisternum" :hidden="forcederegisternum>0?false:true" /></span>
<div class="main-content">
<!--头部-查询-->
<div class="content-header">
<div class="body search-body">
<el-row style="margin-bottom:10px">
<el-col :span="10">
<el-row>
<label class="label-name_1u">受理编号</label>
<div class="search-input-box_1u">
<el-input
v-model="searchForm.acceptno"
clearable
type="text"
class="search-input"
placeholder="请输入受理编号"
@keyup.enter.native="search"
/>
</div>
</el-row>
</el-col>
<el-col :span="14">
<el-row>
<label class="label-name_2u">名称(模糊)</label>
<div class="search-input-box_2u">
<el-input
v-model="searchForm.searchName"
clearable
type="text"
class="search-input"
placeholder="请输入名称(模糊)"
@keyup.enter.native="search"
/>
</div>
</el-row>
</el-col>
</el-row>
<el-row style="margin-bottom:10px">
<el-col :span="10">
<label class="label-name_3u">业务类型</label>
<el-select
v-model="searchForm.bustype"
clearable
class="custom"
placeholder="请选择"
>
<el-option
v-for="item in bustypeOptions"
:key="item.label"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-col>
<el-col :span="11">
<label class="label-name_u">业务状态</label>
<el-select
v-model="searchForm.busstatus"
clearable
size="mini"
class="custom"
placeholder="请选择"
>
<el-option
v-for="item in sbusstatusOptions"
:key="item.label"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-col>
</el-row>
<el-row />
<el-col :span="24" :offset="1" style="margin-bottom: 10px;margin-top: 10px;">
<div class="btn-box" style="font-size: 14px">
<el-button type="primary" size="mini" @click="search">查询</el-button>
<el-button size="mini" @click="resetSearchForm()">重置</el-button>
</div>
</el-col>
</div>
</div>
<div class="content-body">
<div class="body">
<el-table
ref="multipleTable"
v-loading="loading"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
:fit="true"
:row-class-name="tableRowClassName"
:default-sort="{prop: 'sendertime', order: 'descending'}"
:header-cell-style="{background:'#8cc3fb',color:'#fff'}"
@sort-change="tableSortChange"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" min-width="30" align="center" />
<el-table-column prop="index" label="序号" min-width="30" align="center" />
<el-table-column prop="acceptno" sortable="custom" label="受理编号" min-width="90" align="left" />
<el-table-column
prop="busname"
sortable="custom"
:show-overflow-tooltip="true"
label="业务名称"
min-width="120"
align="left"
/>
<el-table-column
prop="bustypename"
sortable="custom"
:show-overflow-tooltip="true"
label="业务类型"
min-width="80"
align="left"
/>
<el-table-column
prop="busStatusName"
sortable="custom"
:show-overflow-tooltip="true"
label="业务状态"
min-width="80"
align="left"
/>
<el-table-column
prop="createTime"
sortable="custom"
label="创建日期"
min-width="60"
align="left"
:formatter="dateFormat"
/>
<el-table-column
prop="sendertime"
sortable="custom"
label="接收时间"
min-width="100"
align="left"
:formatter="dateFormat1"
/>
<el-table-column prop="sendername" sortable="custom" label="发送人" min-width="50" align="left" />
<el-table-column label="操作" min-width="100" align="left">
<template slot-scope="scope">
<div>
<el-button type="primary" size="mini" @click="gotoHandle(scope.row)">办理</el-button>
<el-button
v-if="tableData[scope.$index].isPassDissentApply"
type="primary"
size="mini"
@click="gotoPrintNotice(scope.row)"
>打印通知书
</el-button>
</div>
</template>
</el-table-column>
</el-table>
<div class="page-box">
<el-pagination
:disabled="loading"
:page-size="pageParam.pageSize"
:total="pageParam.total"
:current-page.sync="pageParam.curPage"
:page-sizes="[10, 20, 30, 40,50,100,200]"
layout="slot,total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChange"
@ -2936,6 +3118,7 @@ export default {
risknum: 0,
gzisnum: 0,
correctnum: 0,
forcederegisternum: 0,
statparam: {
customParamMap: {
userId: '',
@ -2981,6 +3164,10 @@ export default {
if (pageParam) {
this.pageParam = JSON.parse(pageParam)
this.searchForm = JSON.parse(pageParam).customParamMap
// tabsubBusTypebustype
if (this.activeName === 'forcederegister' && this.searchForm.bustype === '50') {
this.searchForm.bustype = this.searchForm.subBusType || ''
}
}
this.loadStatistic()
this.search()
@ -3143,6 +3330,23 @@ export default {
value: '41',
label: '列严勘误'
}]
} else if (this.activeName === 'forcederegister') { //
list = [{
value: '0',
label: '强制注销'
}, {
value: '1',
label: '拟强制注销公告'
}, {
value: '2',
label: '终止拟强制注销公告'
}, {
value: '4',
label: '恢复登记申请'
}, {
value: '5',
label: '营业执照作废公告'
}]
} else if (this.activeName === 'all') {
list = [
{
@ -3217,9 +3421,39 @@ export default {
}, {
value: '1006',
label: '撤销除名'
}, {
value: '50',
label: '强制注销'
}]
}
this.bustypeOptions = list
// tab使
if (this.activeName === 'forcederegister') {
this.sbusstatusOptions = [{
value: '0',
label: '待受理'
}, {
value: '1',
label: '待审核'
}, {
value: '2',
label: '待审批'
}, {
value: '3',
label: '已通过'
}, {
value: '4',
label: '未通过'
}, {
value: '5',
label: '已作废'
}, {
value: '6',
label: '转办'
}]
} else {
this.sbusstatusOptions = this.$options.data().sbusstatusOptions
}
this.search()
},
cellStyle(row, column, rowIndex, columnIndex) {
@ -3322,6 +3556,11 @@ export default {
this.searchForm.userId = this.user.primaryKey
this.pageParam.customParamMap = this.searchForm
this.$set(this.pageParam.customParamMap, 'type', this.activeName)
// tab: bustype50subBusType
if (this.activeName === 'forcederegister') {
this.pageParam.customParamMap = { ...this.searchForm, subBusType: this.searchForm.bustype || '', bustype: '50' }
this.$set(this.pageParam.customParamMap, 'type', this.activeName)
}
if (!sessionStorage.getItem('pageParam')) {
this.$set(this.pageParam.customParamMap, 'orderName', 'ISBACK')
this.$set(this.pageParam.customParamMap, 'orderType', 'DESC')
@ -3369,6 +3608,7 @@ export default {
this.risknum = res.data.risknum
this.gzisnum = res.data.gzisnum
this.correctnum = res.data.correctnum
this.forcederegisternum = res.data.forcederegisternum
})
},
//
@ -3388,7 +3628,9 @@ export default {
const pageStart = (this.pageParam.curPage - 1) * this.pageParam.pageSize
res.data.records.forEach(each => {
each.index = pageStart + i++
each.bustypename = this.$util.getTaskBusinessTypeName(each.bustype)
each.bustypename = each.bustype === '50' && each.subBusType != null
? this.$util.getTaskBusinessTypeName(each.bustype + '-' + each.subBusType)
: this.$util.getTaskBusinessTypeName(each.bustype)
each.busStatusName = this.$util.getTaskNodeName(each.currentNodeOrBizStatus)
// /
each.isPassDissentApply = false
@ -4335,6 +4577,24 @@ export default {
break
}
}
//
case '50': {
const subTypeRouteMap = {
'0': '/forceNotice/force/todo/handle',
'1': '/forceNotice/inclusion/todo/handle',
'2': '/forceNotice/remove/todo/handle',
'4': '/forceNotice/recovery/todo/handle',
'5': '/forceNotice/liccan/todo/handle'
}
const handlePath = subTypeRouteMap[row.subBusType]
if (handlePath) {
this.$router.push({
path: handlePath,
query: { bizSeqNo: row.bizseqid }
})
}
break
}
}
},
goToAbnormal(row) {