This commit is contained in:
=
2026-08-20 08:40:44 +08:00
6 changed files with 23 additions and 15 deletions
@@ -101,7 +101,8 @@ public class ProposalExpeditingController {
$condition $condition
"""); """);
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
cnd.and("t.taskName", "in", List.of("master_reply", "slave_reply", "opinion_master_reply")); // 催办列表只展示现行 WF 承办答复环节中尚未完成的主办、二次答复及意见答复任务。
cnd.and("t.taskName", "in", List.of("unit_reply", "two_unit_reply", "opinion_unit_reply"));
if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name()) && !AuthUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name())) { if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name()) && !AuthUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name())) {
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
@@ -47,6 +47,7 @@ public class ProposalControlController {
@SaCheckPermission("proposal.control") @SaCheckPermission("proposal.control")
@ApiOperation("分页列表") @ApiOperation("分页列表")
public Result pageData(@Valid ProposalSearchParam pageForm) { public Result pageData(@Valid ProposalSearchParam pageForm) {
// 状态调整属于提案业务,只保留能够关联到 proposal_info 的 WF 任务,排除其他业务流程产生的空白行。
Sql sql = Sqls.create(""" Sql sql = Sqls.create("""
SELECT SELECT
info.*, info.*,
@@ -72,7 +73,7 @@ public class ProposalControlController {
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10 LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10
LEFT JOIN proposal_info info ON info.id = ins.businessNo INNER JOIN proposal_info info ON info.id = ins.businessNo
LEFT JOIN proposal_type type ON type.id = info.typeId LEFT JOIN proposal_type type ON type.id = info.typeId
LEFT JOIN teacher_congress_session tcs ON tcs.id = info.sessionId LEFT JOIN teacher_congress_session tcs ON tcs.id = info.sessionId
LEFT JOIN teacher_congress_delegation tcd ON tcd.id = info.delegationId LEFT JOIN teacher_congress_delegation tcd ON tcd.id = info.delegationId
@@ -10,7 +10,7 @@ layout("/layouts/platform.html"){
<search @search="doSearch"> <search @search="doSearch">
<search-item label="教代会"> <search-item label="教代会">
<el-select @change="meetingChange" clearable filterable placeholder="所属教代会" <el-select @change="meetingChange" clearable filterable placeholder="所属教代会"
v-model="pageForm.sessionId"> v-model="pageForm.searchSessionId">
<el-option :key="item.id" :label="item.fullName" :value="item.id" <el-option :key="item.id" :label="item.fullName" :value="item.id"
v-for="item in sessionOptions"></el-option> v-for="item in sessionOptions"></el-option>
</el-select> </el-select>
@@ -277,7 +277,7 @@ layout("/layouts/platform.html"){
this.listDelegation() this.listDelegation()
}, },
listDelegation() { listDelegation() {
this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.pageForm.sessionId}).then((res) => { this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.pageForm.searchSessionId}).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.delegationOptions = res.data this.delegationOptions = res.data
} }
@@ -288,7 +288,7 @@ layout("/layouts/platform.html"){
if (res.code === 0) { if (res.code === 0) {
this.sessionOptions = res.data this.sessionOptions = res.data
if (this.sessionOptions) { if (this.sessionOptions) {
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id) this.$set(this.pageForm, "searchSessionId", this.sessionOptions[0].id)
this.listDelegation() this.listDelegation()
this.pageData() this.pageData()
} }
@@ -10,7 +10,7 @@ layout("/layouts/platform.html"){
<search @search="doSearch"> <search @search="doSearch">
<search-item label="教代会"> <search-item label="教代会">
<el-select @change="meetingChange" clearable filterable placeholder="所属教代会" <el-select @change="meetingChange" clearable filterable placeholder="所属教代会"
v-model="pageForm.sessionId"> v-model="pageForm.searchSessionId">
<el-option :key="item.id" :label="item.fullName" :value="item.id" <el-option :key="item.id" :label="item.fullName" :value="item.id"
v-for="item in sessionOptions"></el-option> v-for="item in sessionOptions"></el-option>
</el-select> </el-select>
@@ -207,7 +207,7 @@ layout("/layouts/platform.html"){
this.listDelegation() this.listDelegation()
}, },
listDelegation() { listDelegation() {
this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.pageForm.sessionId}).then((res) => { this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.pageForm.searchSessionId}).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.delegationOptions = res.data this.delegationOptions = res.data
} }
@@ -218,7 +218,7 @@ layout("/layouts/platform.html"){
if (res.code === 0) { if (res.code === 0) {
this.sessionOptions = res.data this.sessionOptions = res.data
if (this.sessionOptions) { if (this.sessionOptions) {
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id) this.$set(this.pageForm, "searchSessionId", this.sessionOptions[0].id)
this.listDelegation() this.listDelegation()
this.pageData() this.pageData()
} }
@@ -9,7 +9,7 @@ layout("/layouts/platform.html"){
<el-card shadow="never"> <el-card shadow="never">
<search @search="doSearch"> <search @search="doSearch">
<search-item label="教代会"> <search-item label="教代会">
<el-select @change="meetingChange" clearable filterable placeholder="所属教代会" v-model="pageForm.sessionId"> <el-select @change="meetingChange" clearable filterable placeholder="所属教代会" v-model="pageForm.searchSessionId">
<el-option :key="item.id" :label="item.fullName" :value="item.id" v-for="item in sessionOptions"></el-option> <el-option :key="item.id" :label="item.fullName" :value="item.id" v-for="item in sessionOptions"></el-option>
</el-select> </el-select>
</search-item> </search-item>
@@ -181,7 +181,7 @@ layout("/layouts/platform.html"){
this.listDelegation() this.listDelegation()
}, },
listDelegation() { listDelegation() {
this.$axios.post("/platform/proposal/common/listDelegation", { sessionId: this.pageForm.sessionId }).then((res) => { this.$axios.post("/platform/proposal/common/listDelegation", { sessionId: this.pageForm.searchSessionId }).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.delegationOptions = res.data this.delegationOptions = res.data
} }
@@ -192,7 +192,7 @@ layout("/layouts/platform.html"){
if (res.code === 0) { if (res.code === 0) {
this.sessionOptions = res.data this.sessionOptions = res.data
if (this.sessionOptions) { if (this.sessionOptions) {
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id) this.$set(this.pageForm, "searchSessionId", this.sessionOptions[0].id)
this.listDelegation() this.listDelegation()
this.pageData() this.pageData()
} }
@@ -6,7 +6,7 @@ layout("/layouts/platform.html"){
<el-card shadow="never"> <el-card shadow="never">
<search @search="doSearch"> <search @search="doSearch">
<search-item label="教代会"> <search-item label="教代会">
<el-select @change="meetingChange" clearable filterable placeholder="所属教代会" v-model="pageForm.sessionId"> <el-select @change="doSearch" clearable filterable placeholder="所属教代会" v-model="pageForm.sessionId">
<el-option :key="item.id" :label="item.fullName" :value="item.id" v-for="item in sessionOptions"></el-option> <el-option :key="item.id" :label="item.fullName" :value="item.id" v-for="item in sessionOptions"></el-option>
</el-select> </el-select>
</search-item> </search-item>
@@ -85,6 +85,7 @@ layout("/layouts/platform.html"){
el: "#app", el: "#app",
store, store,
mixins: [initTableMixins], mixins: [initTableMixins],
components: { components: {
"proposal-info": PROPOSAL_INFO "proposal-info": PROPOSAL_INFO
}, },
@@ -111,11 +112,12 @@ layout("/layouts/platform.html"){
jumpForm: { jumpForm: {
targetTaskName: "", targetTaskName: "",
tf_audit: true tf_audit: true
} },
sessionOptions:[],
} }
}, },
created() { created() {
this.pageData() // 默认届次确定后再加载表格,避免无届次请求覆盖已按届次筛选的结果。
this.listOpenSession() this.listOpenSession()
}, },
methods: { methods: {
@@ -173,10 +175,14 @@ layout("/layouts/platform.html"){
listOpenSession() { listOpenSession() {
this.$axios.post("/platform/proposal/common/listOpenSession").then((res) => { this.$axios.post("/platform/proposal/common/listOpenSession").then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.sessionOptions = res.data this.sessionOptions = res.data || []
if (this.sessionOptions && this.sessionOptions.length) { if (this.sessionOptions && this.sessionOptions.length) {
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id) this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id)
this.pageData() this.pageData()
} else {
// 没有开启的教代会时保持空列表,避免发起无届次的全量流程查询。
this.tableData = []
this.$set(this.pageForm, "totalCount", 0)
} }
} }
}) })