commit
This commit is contained in:
+2
-1
@@ -1,6 +1,7 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.controller.common;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.result.Result;
|
||||
@@ -33,7 +34,7 @@ public class ProposalCommonController {
|
||||
private ProposalCommonService proposalCommonService;
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal")
|
||||
@SaCheckPermission(value = {"proposal", "h5.proposal"}, mode = SaMode.OR)
|
||||
@ApiOperation("提案详情")
|
||||
public Result proposalInfo(@Valid String id) {
|
||||
return Result.success(proposalCommonService.info(id));
|
||||
|
||||
+4
-3
@@ -2,6 +2,7 @@ package com.budwk.app.zhgh.democratic.proposal.controller.transact;
|
||||
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import com.budwk.app.base.annotation.SLog;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
@@ -57,13 +58,13 @@ public class ProposalCommissionerController {
|
||||
|
||||
@At("/h5")
|
||||
@Ok("beetl:/platform/zhghh5/democratic/proposal/transact/commissioner/index.html")
|
||||
@SaCheckPermission("proposal.commissioner")
|
||||
@SaCheckPermission("h5.proposal.commissioner")
|
||||
public void h5Index() {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.commissioner")
|
||||
@SaCheckPermission(value = {"proposal.commissioner", "h5.proposal.commissioner"}, mode = SaMode.OR)
|
||||
public Result pageData(@Valid ProposalSearchParam pageForm, boolean approval) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
@@ -124,7 +125,7 @@ public class ProposalCommissionerController {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.commissioner")
|
||||
@SaCheckPermission(value = {"proposal.commissioner", "h5.proposal.commissioner"}, mode = SaMode.OR)
|
||||
@SLog(tag = "提案委员会委员意见", msg = "")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public Result doApproval(Long processTaskId, String proposalId, String opinion, String caseFilingResult, String caseFilingType) {
|
||||
|
||||
+10
-3
@@ -1,6 +1,7 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.controller.transact;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
@@ -56,8 +57,14 @@ public class ProposalCommitteeFilingController {
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At("/h5")
|
||||
@Ok("beetl:/platform/zhghh5/democratic/proposal/transact/committeeFiling/index.html")
|
||||
@SaCheckPermission("h5.proposal.committeeFiling")
|
||||
public void h5Index() {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.committeeFiling")
|
||||
@SaCheckPermission(value = {"proposal.committeeFiling", "h5.proposal.committeeFiling"}, mode = SaMode.OR)
|
||||
@ApiOperation("分页列表")
|
||||
public Result pageData(@Valid ProposalSearchParam pageForm, boolean approval) {
|
||||
Sql sql = Sqls.create("""
|
||||
@@ -122,14 +129,14 @@ public class ProposalCommitteeFilingController {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.committeeFiling")
|
||||
@SaCheckPermission(value = {"proposal.committeeFiling", "h5.proposal.committeeFiling"}, mode = SaMode.OR)
|
||||
@ApiOperation("查询提案分管校领导")
|
||||
public Result listBranchSchoolLeader(String keyword) {
|
||||
return Result.success(proposalCommitteeFilingService.listBranchSchoolLeader(keyword));
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.committeeFiling")
|
||||
@SaCheckPermission(value = {"proposal.committeeFiling", "h5.proposal.committeeFiling"}, mode = SaMode.OR)
|
||||
@ApiOperation("并案审核")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public Result merge(@Param("data") String data) {
|
||||
|
||||
+1
-1
@@ -191,7 +191,7 @@ public class ProposalPositiveSecondedController {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission(value = {"proposal.seconded", "h5.proposal.seconded", "proposal.schoolLeaderApproval", "h5.proposal.schoolLeaderApproval"}, mode = SaMode.OR)
|
||||
@SaCheckPermission(value = {"proposal.seconded", "h5.proposal.seconded", "proposal.commissioner", "h5.proposal.commissioner", "proposal.committeeFiling", "h5.proposal.committeeFiling", "proposal.schoolLeaderApproval", "h5.proposal.schoolLeaderApproval"}, mode = SaMode.OR)
|
||||
public Result listPositiveSeconded(String bizId) {
|
||||
List<ProposalSecond> list = dao.query(ProposalSecond.class, Cnd.where(ProposalSecond::getProposalId, "=", bizId).and(ProposalSecond::getMode, "=", false));
|
||||
return Result.success(list);
|
||||
|
||||
+5
-4
@@ -1,6 +1,7 @@
|
||||
package com.budwk.app.zhgh.democratic.proposal.controller.transact;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
@@ -53,13 +54,13 @@ public class ProposalSchoolLeaderApprovalController {
|
||||
|
||||
@At("/h5")
|
||||
@Ok("beetl:/platform/zhghh5/democratic/proposal/transact/schoolLeaderApproval/index.html")
|
||||
@SaCheckPermission("proposal.schoolLeaderApproval")
|
||||
@SaCheckPermission("h5.proposal.schoolLeaderApproval")
|
||||
public void h5Index() {
|
||||
}
|
||||
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.schoolLeaderApproval")
|
||||
@SaCheckPermission(value = {"proposal.schoolLeaderApproval", "h5.proposal.schoolLeaderApproval"}, mode = SaMode.OR)
|
||||
@ApiOperation("分页列表")
|
||||
public Result pageData(@Valid ProposalSearchParam pageForm, boolean approval) {
|
||||
// List<LabelValueVO> vos = processTaskService.jumpAbleTaskNameList(280L);
|
||||
@@ -127,7 +128,7 @@ public class ProposalSchoolLeaderApprovalController {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.schoolLeaderApproval")
|
||||
@SaCheckPermission(value = {"proposal.schoolLeaderApproval", "h5.proposal.schoolLeaderApproval"}, mode = SaMode.OR)
|
||||
@ApiOperation("获取主办单位")
|
||||
public Result getHostUnitId(){
|
||||
|
||||
@@ -137,7 +138,7 @@ public class ProposalSchoolLeaderApprovalController {
|
||||
|
||||
|
||||
@At
|
||||
@SaCheckPermission("proposal.schoolLeaderApproval")
|
||||
@SaCheckPermission(value = {"proposal.schoolLeaderApproval", "h5.proposal.schoolLeaderApproval"}, mode = SaMode.OR)
|
||||
@ApiOperation("执行任务")
|
||||
public Result executeTask(@Param("data") String data) {
|
||||
Dict args = Json.fromJson(Dict.class, data);
|
||||
|
||||
@@ -1,17 +1,85 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<configuration scan="false" scanPeriod="60000" debug="false">
|
||||
|
||||
<!-- 定义日志文件的存储路径 -->
|
||||
<!-- 日志存储路径 -->
|
||||
<property name="LOG_HOME" value="./logs"/>
|
||||
|
||||
<!-- 控制台输出配置 -->
|
||||
<!-- 控制台输出 -->
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- INFO级别日志文件配置 -->
|
||||
|
||||
<!--
|
||||
#################################################################################
|
||||
# #
|
||||
# 全文输出日志(一个文件存储)start #
|
||||
# #
|
||||
#################################################################################
|
||||
-->
|
||||
|
||||
<!-- 所有级别日志写入同一个文件 -->
|
||||
<appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_HOME}/app.log</file>
|
||||
<encoder>
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_HOME}/app-%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<maxHistory>300</maxHistory>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
|
||||
<!-- 框架日志级别(按需调整) -->
|
||||
<logger name="org.eclipse.jetty" level="INFO"/>
|
||||
<logger name="org.quartz" level="INFO"/>
|
||||
<logger name="org.nutz" level="DEBUG"/>
|
||||
|
||||
<!-- root logger:DEBUG 级别,输出到控制台和全量文件 -->
|
||||
<root level="DEBUG">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
<appender-ref ref="ALL_FILE"/>
|
||||
</root>
|
||||
|
||||
<!--
|
||||
#################################################################################
|
||||
# #
|
||||
# 全文输出日志(一个文件存储)end #
|
||||
# #
|
||||
#################################################################################
|
||||
-->
|
||||
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
#################################################################################
|
||||
# #
|
||||
# debug、info、error分文件输出 start #
|
||||
# #
|
||||
#################################################################################
|
||||
-->
|
||||
|
||||
<!-- DEBUG级别日志文件配置 -->
|
||||
<!--<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_HOME}/debug.log</file>
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>DEBUG</level>
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_HOME}/debug-%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<maxHistory>300</maxHistory>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
|
||||
<!– INFO级别日志文件配置 –>
|
||||
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_HOME}/info.log</file>
|
||||
<encoder>
|
||||
@@ -24,11 +92,11 @@
|
||||
</filter>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_HOME}/info-%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<maxHistory>30</maxHistory>
|
||||
<maxHistory>300</maxHistory>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
|
||||
<!-- ERROR级别日志文件配置 -->
|
||||
<!– ERROR级别日志文件配置 –>
|
||||
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${LOG_HOME}/error.log</file>
|
||||
<encoder>
|
||||
@@ -41,19 +109,31 @@
|
||||
</filter>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${LOG_HOME}/error-%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<maxHistory>30</maxHistory>
|
||||
<maxHistory>300</maxHistory>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
|
||||
<logger name="java" additivity="false" />
|
||||
<!– 框架日志级别 –>
|
||||
<!– <logger name="java" additivity="false" />–>
|
||||
<logger name="org.eclipse.jetty" level="INFO"/>
|
||||
<logger name="org.quartz" level="INFO"/>
|
||||
<logger name="org.nutz" level="DEBUG"/>
|
||||
|
||||
<!-- 日志级别和appender的关联 -->
|
||||
<!– 日志级别和appender的关联 –>
|
||||
<root level="DEBUG">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
<appender-ref ref="DEBUG_FILE"/>
|
||||
<appender-ref ref="INFO_FILE"/>
|
||||
<appender-ref ref="ERROR_FILE"/>
|
||||
</root>
|
||||
</root>-->
|
||||
|
||||
<!--
|
||||
#################################################################################
|
||||
# #
|
||||
# debug、info、error分文件输出 end #
|
||||
# #
|
||||
#################################################################################
|
||||
-->
|
||||
|
||||
</configuration>
|
||||
|
||||
|
||||
+51
-20
@@ -2,7 +2,7 @@
|
||||
layout("/layouts/platform_h5.html"){
|
||||
#-->
|
||||
<div id="app" v-cloak>
|
||||
<van-nav-bar @click-left="historyBack" left-arrow left-text="返回" title="委员会成员意见" placeholder
|
||||
<van-nav-bar @click-left="historyBack" left-arrow left-text="返回" title="提案委委员审议" placeholder
|
||||
fixed></van-nav-bar>
|
||||
<van-sticky offset-top="46px">
|
||||
<van-search
|
||||
@@ -18,7 +18,7 @@ layout("/layouts/platform_h5.html"){
|
||||
@change="doSearch"></van-dropdown-item>
|
||||
</van-dropdown-menu>
|
||||
<van-tabs v-model="pageForm.approvalText"
|
||||
@change="(val)=>{this.pageForm.approval = val==='1';this.doSearch();}">
|
||||
@change="approvalTabChange">
|
||||
<van-tab title="已审核" name="1"></van-tab>
|
||||
<van-tab title="未审核" name="0"></van-tab>
|
||||
</van-tabs>
|
||||
@@ -53,7 +53,7 @@ layout("/layouts/platform_h5.html"){
|
||||
|
||||
<proposal-info ref="proposalInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">提案委员会成员意见</div>
|
||||
<div class="process-title">提案委委员审议</div>
|
||||
<van-form ref="formRef">
|
||||
<van-field
|
||||
v-model="formData.caseFilingResultName"
|
||||
@@ -63,14 +63,14 @@ layout("/layouts/platform_h5.html"){
|
||||
:rules="[{ required: true, message: '请选择立案结果' }]"
|
||||
required
|
||||
is-link
|
||||
@click="showCaseFilingResultPicker = true"
|
||||
@click="openCaseFilingResultPicker"
|
||||
></van-field>
|
||||
<van-popup v-model="showCaseFilingResultPicker" position="bottom">
|
||||
<van-picker
|
||||
show-toolbar
|
||||
:columns="dict.type.PROPOSAL_CASE_FILING_RESULT.map(item => ({text: item.label, value: item.code}))"
|
||||
:columns="caseFilingResultColumns"
|
||||
@confirm="onCaseFilingResultConfirm"
|
||||
@cancel="showCaseFilingResultPicker = false"
|
||||
@cancel="hideCaseFilingResultPicker"
|
||||
></van-picker>
|
||||
</van-popup>
|
||||
|
||||
@@ -78,19 +78,19 @@ layout("/layouts/platform_h5.html"){
|
||||
<van-field
|
||||
v-model="formData.caseFilingTypeName"
|
||||
name="caseFilingTypeName"
|
||||
label="立案结果"
|
||||
label="立案类型"
|
||||
placeholder="请选择立案类型"
|
||||
:rules="[{ required: true, message: '请选择立案类型' }]"
|
||||
required
|
||||
is-link
|
||||
@click="showCaseFilingTypePicker = true"
|
||||
@click="openCaseFilingTypePicker"
|
||||
></van-field>
|
||||
<van-popup v-model="showCaseFilingTypePicker" position="bottom">
|
||||
<van-picker
|
||||
show-toolbar
|
||||
:columns="dict.type.PROPOSAL_CASE_FILING_TYPE.map(item => ({text: item.label, value: item.code}))"
|
||||
:columns="caseFilingTypeColumns"
|
||||
@confirm="onCaseFilingTypeConfirm"
|
||||
@cancel="showCaseFilingTypePicker = false"
|
||||
@cancel="hideCaseFilingTypePicker"
|
||||
></van-picker>
|
||||
</van-popup>
|
||||
</template>
|
||||
@@ -144,21 +144,39 @@ layout("/layouts/platform_h5.html"){
|
||||
components: {
|
||||
"proposal-info": PROPOSAL_INFO
|
||||
},
|
||||
computed: {
|
||||
caseFilingResultColumns() {
|
||||
return this.dict.type.PROPOSAL_CASE_FILING_RESULT.map(function (item) {
|
||||
return {text: item.label, value: item.code}
|
||||
})
|
||||
},
|
||||
caseFilingTypeColumns() {
|
||||
return this.dict.type.PROPOSAL_CASE_FILING_TYPE.map(function (item) {
|
||||
return {text: item.label, value: item.code}
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onReady() {
|
||||
this.listSession()
|
||||
},
|
||||
approvalTabChange(val) {
|
||||
this.$set(this.pageForm, "approval", val === "1")
|
||||
this.doSearch()
|
||||
},
|
||||
listSession() {
|
||||
this.$axios.post("/platform/proposal/common/listSession").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.sessionOptions = [
|
||||
this.$set(this, "sessionOptions", [
|
||||
{
|
||||
text: "全部届次",
|
||||
value: null
|
||||
}
|
||||
].concat(res.data.map((v) => ({text: v.fullName, value: v.id})))
|
||||
].concat(res.data.map(function (v) {
|
||||
return {text: v.fullName, value: v.id}
|
||||
})))
|
||||
if (this.sessionOptions.length > 0) {
|
||||
this.pageForm.sessionId = this.sessionOptions[0].value
|
||||
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].value)
|
||||
this.doSearch()
|
||||
}
|
||||
}
|
||||
@@ -166,26 +184,39 @@ layout("/layouts/platform_h5.html"){
|
||||
},
|
||||
|
||||
onView(row) {
|
||||
this.showApprovalForm = false
|
||||
this.$set(this, "showApprovalForm", false)
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
},
|
||||
|
||||
// 确定立案类型
|
||||
openCaseFilingResultPicker() {
|
||||
this.$set(this, "showCaseFilingResultPicker", true)
|
||||
},
|
||||
hideCaseFilingResultPicker() {
|
||||
this.$set(this, "showCaseFilingResultPicker", false)
|
||||
},
|
||||
openCaseFilingTypePicker() {
|
||||
this.$set(this, "showCaseFilingTypePicker", true)
|
||||
},
|
||||
hideCaseFilingTypePicker() {
|
||||
this.$set(this, "showCaseFilingTypePicker", false)
|
||||
},
|
||||
|
||||
// 确定立案结果
|
||||
onCaseFilingResultConfirm(value) {
|
||||
this.$set(this.formData, "caseFilingResultName", value.text)
|
||||
this.$set(this.formData, "caseFilingResult", value.value)
|
||||
this.showCaseFilingResultPicker = false
|
||||
this.$set(this, "showCaseFilingResultPicker", false)
|
||||
},
|
||||
|
||||
// 确定立案类型
|
||||
onCaseFilingTypeConfirm(value) {
|
||||
this.$set(this.formData, "caseFilingTypeName", value.text)
|
||||
this.$set(this.formData, "caseFilingType", value.value)
|
||||
this.showCaseFilingTypePicker = false
|
||||
this.$set(this, "showCaseFilingTypePicker", false)
|
||||
},
|
||||
|
||||
onApproval(row) {
|
||||
this.showApprovalForm = true
|
||||
this.$set(this, "showApprovalForm", true)
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
this.$set(this, "formData", {
|
||||
processTaskId: row.taskId,
|
||||
@@ -220,8 +251,8 @@ layout("/layouts/platform_h5.html"){
|
||||
|
||||
doSearch() {
|
||||
this.$nextTick(() => {
|
||||
this.pageForm.pageNumber = 1
|
||||
this.pageForm.totalCount = 0
|
||||
this.$set(this.pageForm, "pageNumber", 1)
|
||||
this.$set(this.pageForm, "totalCount", 0)
|
||||
this.$refs.tableListRef.doSearch()
|
||||
})
|
||||
},
|
||||
|
||||
+478
@@ -0,0 +1,478 @@
|
||||
<!--#
|
||||
layout("/layouts/platform_h5.html"){
|
||||
#-->
|
||||
<div id="app" v-cloak>
|
||||
<van-nav-bar @click-left="historyBack" left-arrow left-text="返回" title="提案委主任审批" placeholder fixed></van-nav-bar>
|
||||
<van-sticky offset-top="46px">
|
||||
<van-search
|
||||
v-model="pageForm.name"
|
||||
:show-action="false"
|
||||
:reverse-color="false"
|
||||
input-align="left"
|
||||
placeholder="请输入提案名称搜索"
|
||||
@search="doSearch"
|
||||
></van-search>
|
||||
<van-dropdown-menu :close-on-click-outside="false" :close-on-click-overlay="false">
|
||||
<van-dropdown-item v-model="pageForm.sessionId" :options="sessionOptions" :multiple="false"
|
||||
@change="doSearch"></van-dropdown-item>
|
||||
</van-dropdown-menu>
|
||||
<van-tabs v-model="pageForm.approvalText"
|
||||
@change="approvalTabChange">
|
||||
<van-tab title="已审核" name="1"></van-tab>
|
||||
<van-tab title="未审核" name="0"></van-tab>
|
||||
</van-tabs>
|
||||
</van-sticky>
|
||||
|
||||
<table-list api="/platform/proposal/committeeFiling/pageData" :page_form.sync="pageForm" @ready="onReady"
|
||||
ref="tableListRef"
|
||||
title="name">
|
||||
<template v-slot="{index,row}">
|
||||
<table-column label="提案编号">{{row.code}}</table-column>
|
||||
<table-column label="提案类别">{{row.typeName}}</table-column>
|
||||
<table-column label="提案人">{{row.createUserName}}</table-column>
|
||||
<table-column label="代表团">{{row.delegationName}}</table-column>
|
||||
<table-column label="附议同意数">{{row.agreeCount}}</table-column>
|
||||
<table-column label="当前节点">{{row.curTaskName}}</table-column>
|
||||
</template>
|
||||
<template #actions="{index,row}">
|
||||
<div class="action-btn" @click="onView(row)">
|
||||
<i class="fa fa-eye"></i>
|
||||
<span>查看</span>
|
||||
</div>
|
||||
<div class="action-btn" v-if="row.taskState === 10" @click="onApproval(row)">
|
||||
<i class="fa fa-edit"></i>
|
||||
<span>审核</span>
|
||||
</div>
|
||||
<div class="action-btn delete" v-if="row.canRevoke" @click="onRevoke(row)">
|
||||
<i class="fa fa-reply"></i>
|
||||
<span>撤回</span>
|
||||
</div>
|
||||
</template>
|
||||
</table-list>
|
||||
|
||||
<proposal-info ref="proposalInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">{{formData.taskName}}</div>
|
||||
<van-form ref="formRef">
|
||||
<van-field
|
||||
v-if="isCommitteeTask()"
|
||||
v-model="formData.tf_caseFilingResultName"
|
||||
name="tf_caseFilingResultName"
|
||||
label="立案结果"
|
||||
placeholder="请选择立案结果"
|
||||
:rules="[{ required: true, message: '请选择立案结果' }]"
|
||||
required
|
||||
is-link
|
||||
@click="openCaseFilingResultPicker"
|
||||
></van-field>
|
||||
<van-popup v-model="showCaseFilingResultPicker" position="bottom">
|
||||
<van-picker
|
||||
show-toolbar
|
||||
:columns="caseFilingResultColumns"
|
||||
@confirm="onCaseFilingResultConfirm"
|
||||
@cancel="hideCaseFilingResultPicker"
|
||||
></van-picker>
|
||||
</van-popup>
|
||||
|
||||
<van-field
|
||||
v-if="isCommitteeTask() && formData.tf_caseFilingResult === 'CONFIRM_FILING'"
|
||||
v-model="formData.tf_caseFilingTypeName"
|
||||
name="tf_caseFilingTypeName"
|
||||
label="立案类型"
|
||||
placeholder="请选择立案类型"
|
||||
:rules="[{ required: true, message: '请选择立案类型' }]"
|
||||
required
|
||||
is-link
|
||||
@click="openCaseFilingTypePicker"
|
||||
></van-field>
|
||||
<van-popup v-model="showCaseFilingTypePicker" position="bottom">
|
||||
<van-picker
|
||||
show-toolbar
|
||||
:columns="caseFilingTypeColumns"
|
||||
@confirm="onCaseFilingTypeConfirm"
|
||||
@cancel="hideCaseFilingTypePicker"
|
||||
></van-picker>
|
||||
</van-popup>
|
||||
|
||||
<van-field
|
||||
v-if="isCommitteeTask() && isUnitRequired()"
|
||||
v-model="formData.tf_masterUnitName"
|
||||
name="tf_masterUnitName"
|
||||
label="主办单位"
|
||||
placeholder="请选择主办单位"
|
||||
:rules="[{ required: true, message: '请选择主办单位' }]"
|
||||
required
|
||||
is-link
|
||||
@click="openMasterUnitPicker"
|
||||
></van-field>
|
||||
<van-popup v-model="showMasterUnitPicker" position="bottom">
|
||||
<van-picker
|
||||
show-toolbar
|
||||
:columns="underTakeColumns"
|
||||
@confirm="onMasterUnitConfirm"
|
||||
@cancel="hideMasterUnitPicker"
|
||||
></van-picker>
|
||||
</van-popup>
|
||||
|
||||
<van-field
|
||||
v-if="isCommitteeTask() && isUnitRequired()"
|
||||
v-model="formData.tf_slaveUnitNameStr"
|
||||
name="tf_slaveUnitNameStr"
|
||||
label="协办单位"
|
||||
placeholder="请选择协办单位"
|
||||
readonly
|
||||
is-link
|
||||
@click="openSlaveUnitPicker"
|
||||
></van-field>
|
||||
<van-popup v-model="showSlaveUnitPicker" position="bottom">
|
||||
<div style="padding: 12px 16px; display: flex; justify-content: space-between; align-items: center;">
|
||||
<van-button size="small" @click="hideSlaveUnitPicker">取消</van-button>
|
||||
<span>选择协办单位</span>
|
||||
<van-button size="small" type="primary" @click="onSlaveUnitConfirm">确定</van-button>
|
||||
</div>
|
||||
<van-checkbox-group v-model="slaveUnitTempIds" style="max-height: 320px; overflow-y: auto;">
|
||||
<van-cell-group>
|
||||
<van-cell
|
||||
v-for="item in underTakeOptions"
|
||||
:key="item.id"
|
||||
:title="item.name"
|
||||
clickable
|
||||
@click="toggleSlaveUnit(item)"
|
||||
>
|
||||
<van-checkbox
|
||||
slot="right-icon"
|
||||
:name="item.id"
|
||||
:disabled="item.id === formData.tf_masterUnitId"
|
||||
ref="slaveUnitCheckboxes"
|
||||
></van-checkbox>
|
||||
</van-cell>
|
||||
</van-cell-group>
|
||||
</van-checkbox-group>
|
||||
</van-popup>
|
||||
|
||||
<van-field
|
||||
v-if="isBranchSchoolLeaderRequired()"
|
||||
v-model="formData.userName"
|
||||
name="userName"
|
||||
label="分管校领导"
|
||||
placeholder="请选择分管校领导"
|
||||
required
|
||||
is-link
|
||||
@click="openBranchSchoolLeaderPicker"
|
||||
></van-field>
|
||||
<van-popup v-model="showBranchSchoolLeaderPicker" position="bottom">
|
||||
<van-picker
|
||||
show-toolbar
|
||||
:columns="branchSchoolLeaderColumns"
|
||||
@confirm="onBranchSchoolLeaderConfirm"
|
||||
@cancel="hideBranchSchoolLeaderPicker"
|
||||
></van-picker>
|
||||
</van-popup>
|
||||
|
||||
<van-field
|
||||
v-model="formData.approvalOpinion"
|
||||
name="approvalOpinion"
|
||||
label="审核意见"
|
||||
placeholder="请输入审核意见"
|
||||
:rules="[{ required: true, message: '请填写审核意见' }]"
|
||||
required
|
||||
maxlength="100"
|
||||
show-word-limit
|
||||
></van-field>
|
||||
</van-form>
|
||||
<div style="display: flex; justify-content: space-between; column-gap: 10px; padding: 10px">
|
||||
<van-button type="danger" block :loading="submitLoading" @click="handleTaskAction(6)">退回到提案人</van-button>
|
||||
<van-button type="primary" block :loading="submitLoading" @click="handleTaskAction(1)">提交</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</proposal-info>
|
||||
</div>
|
||||
<script nonce="${cspNonce!}">
|
||||
<!--#include("../../common/info.js"){}#-->
|
||||
|
||||
const vue = new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
dicts: ["PROPOSAL_CASE_FILING_RESULT", "PROPOSAL_CASE_FILING_TYPE"],
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
pageNumber: 1,
|
||||
pageSize: 10,
|
||||
totalCount: 0,
|
||||
name: null,
|
||||
sessionId: null,
|
||||
approvalText: "0",
|
||||
approval: false
|
||||
},
|
||||
sessionOptions: [],
|
||||
underTakeOptions: [],
|
||||
branchSchoolLeaderOptions: [],
|
||||
slaveUnitTempIds: [],
|
||||
formData: {},
|
||||
showApprovalForm: false,
|
||||
submitLoading: false,
|
||||
showCaseFilingResultPicker: false,
|
||||
showCaseFilingTypePicker: false,
|
||||
showMasterUnitPicker: false,
|
||||
showSlaveUnitPicker: false,
|
||||
showBranchSchoolLeaderPicker: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
"proposal-info": PROPOSAL_INFO
|
||||
},
|
||||
computed: {
|
||||
caseFilingResultColumns() {
|
||||
return this.dict.type.PROPOSAL_CASE_FILING_RESULT.map(function (item) {
|
||||
return {text: item.label, value: item.code}
|
||||
})
|
||||
},
|
||||
caseFilingTypeColumns() {
|
||||
return this.dict.type.PROPOSAL_CASE_FILING_TYPE.map(function (item) {
|
||||
return {text: item.label, value: item.code}
|
||||
})
|
||||
},
|
||||
underTakeColumns() {
|
||||
return this.underTakeOptions.map(function (item) {
|
||||
return {text: item.name, value: item.id}
|
||||
})
|
||||
},
|
||||
branchSchoolLeaderColumns() {
|
||||
return this.branchSchoolLeaderOptions.map(function (item) {
|
||||
return {text: item.label, value: item.id}
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onReady() {
|
||||
this.listSession()
|
||||
this.listUnderTake()
|
||||
this.listBranchSchoolLeader()
|
||||
},
|
||||
approvalTabChange(val) {
|
||||
this.$set(this.pageForm, "approval", val === "1")
|
||||
this.doSearch()
|
||||
},
|
||||
listSession() {
|
||||
this.$axios.post("/platform/proposal/common/listSession").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$set(this, "sessionOptions", [{
|
||||
text: "全部届次",
|
||||
value: null
|
||||
}].concat(res.data.map(function (v) {
|
||||
return {text: v.fullName, value: v.id}
|
||||
})))
|
||||
if (this.sessionOptions.length > 0) {
|
||||
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].value)
|
||||
this.doSearch()
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
listUnderTake() {
|
||||
this.$axios.post("/platform/proposal/common/listUnderTake").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$set(this, "underTakeOptions", res.data)
|
||||
}
|
||||
})
|
||||
},
|
||||
listBranchSchoolLeader() {
|
||||
this.$axios.post("/platform/proposal/committeeFiling/listBranchSchoolLeader", {keyword: ""}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$set(this, "branchSchoolLeaderOptions", res.data)
|
||||
}
|
||||
})
|
||||
},
|
||||
onView(row) {
|
||||
this.$set(this, "showApprovalForm", false)
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
},
|
||||
onApproval(row) {
|
||||
this.$set(this, "showApprovalForm", true)
|
||||
this.$set(this, "formData", {
|
||||
processTaskId: row.taskId,
|
||||
taskKey: row.taskKey,
|
||||
taskName: row.curTaskName,
|
||||
userId: null,
|
||||
userName: null,
|
||||
tf_caseFilingResult: null,
|
||||
tf_caseFilingResultName: null,
|
||||
tf_caseFilingType: null,
|
||||
tf_caseFilingTypeName: null,
|
||||
tf_masterUnitId: null,
|
||||
tf_masterUnitName: null,
|
||||
tf_slaveUnitIds: [],
|
||||
tf_slaveUnitNames: [],
|
||||
tf_slaveUnitNameStr: null,
|
||||
approvalOpinion: null
|
||||
})
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
},
|
||||
isCommitteeTask() {
|
||||
return this.formData.taskKey === "committee"
|
||||
},
|
||||
isCommitteeDirectorOpinionTask() {
|
||||
return this.formData.taskKey === "committee_director_opinion"
|
||||
},
|
||||
isUnitRequired() {
|
||||
return ["CONFIRM_FILING", "SUGGESTION"].includes(this.formData.tf_caseFilingResult)
|
||||
},
|
||||
isBranchSchoolLeaderRequired() {
|
||||
return this.isCommitteeDirectorOpinionTask() || (this.isCommitteeTask() && this.formData.tf_caseFilingResult === "CONFIRM_FILING")
|
||||
},
|
||||
openCaseFilingResultPicker() {
|
||||
this.$set(this, "showCaseFilingResultPicker", true)
|
||||
},
|
||||
hideCaseFilingResultPicker() {
|
||||
this.$set(this, "showCaseFilingResultPicker", false)
|
||||
},
|
||||
openCaseFilingTypePicker() {
|
||||
this.$set(this, "showCaseFilingTypePicker", true)
|
||||
},
|
||||
hideCaseFilingTypePicker() {
|
||||
this.$set(this, "showCaseFilingTypePicker", false)
|
||||
},
|
||||
openMasterUnitPicker() {
|
||||
this.$set(this, "showMasterUnitPicker", true)
|
||||
},
|
||||
hideMasterUnitPicker() {
|
||||
this.$set(this, "showMasterUnitPicker", false)
|
||||
},
|
||||
hideSlaveUnitPicker() {
|
||||
this.$set(this, "showSlaveUnitPicker", false)
|
||||
},
|
||||
openBranchSchoolLeaderPicker() {
|
||||
this.$set(this, "showBranchSchoolLeaderPicker", true)
|
||||
},
|
||||
hideBranchSchoolLeaderPicker() {
|
||||
this.$set(this, "showBranchSchoolLeaderPicker", false)
|
||||
},
|
||||
onCaseFilingResultConfirm(value) {
|
||||
this.$set(this.formData, "tf_caseFilingResultName", value.text)
|
||||
this.$set(this.formData, "tf_caseFilingResult", value.value)
|
||||
this.$set(this.formData, "tf_caseFilingType", null)
|
||||
this.$set(this.formData, "tf_caseFilingTypeName", null)
|
||||
if (!this.isUnitRequired()) {
|
||||
this.clearUnits()
|
||||
}
|
||||
this.$set(this, "showCaseFilingResultPicker", false)
|
||||
},
|
||||
onCaseFilingTypeConfirm(value) {
|
||||
this.$set(this.formData, "tf_caseFilingTypeName", value.text)
|
||||
this.$set(this.formData, "tf_caseFilingType", value.value)
|
||||
this.$set(this, "showCaseFilingTypePicker", false)
|
||||
},
|
||||
onMasterUnitConfirm(value) {
|
||||
this.$set(this.formData, "tf_masterUnitName", value.text)
|
||||
this.$set(this.formData, "tf_masterUnitId", value.value)
|
||||
var slaveIds = this.formData.tf_slaveUnitIds.filter(function (id) {
|
||||
return id !== value.value
|
||||
})
|
||||
this.setSlaveUnits(slaveIds)
|
||||
this.$set(this, "showMasterUnitPicker", false)
|
||||
},
|
||||
openSlaveUnitPicker() {
|
||||
this.$set(this, "slaveUnitTempIds", this.formData.tf_slaveUnitIds.slice())
|
||||
this.$set(this, "showSlaveUnitPicker", true)
|
||||
},
|
||||
toggleSlaveUnit(item) {
|
||||
if (item.id === this.formData.tf_masterUnitId) {
|
||||
return
|
||||
}
|
||||
var index = this.slaveUnitTempIds.indexOf(item.id)
|
||||
var nextIds = this.slaveUnitTempIds.slice()
|
||||
if (index >= 0) {
|
||||
nextIds.splice(index, 1)
|
||||
} else {
|
||||
nextIds.push(item.id)
|
||||
}
|
||||
this.$set(this, "slaveUnitTempIds", nextIds)
|
||||
},
|
||||
onSlaveUnitConfirm() {
|
||||
this.setSlaveUnits(this.slaveUnitTempIds)
|
||||
this.$set(this, "showSlaveUnitPicker", false)
|
||||
},
|
||||
setSlaveUnits(ids) {
|
||||
var names = this.underTakeOptions.filter(function (item) {
|
||||
return ids.includes(item.id)
|
||||
}).map(function (item) {
|
||||
return item.name
|
||||
})
|
||||
this.$set(this.formData, "tf_slaveUnitIds", ids)
|
||||
this.$set(this.formData, "tf_slaveUnitNames", names)
|
||||
this.$set(this.formData, "tf_slaveUnitNameStr", names.join(","))
|
||||
},
|
||||
clearUnits() {
|
||||
this.$set(this.formData, "tf_masterUnitId", null)
|
||||
this.$set(this.formData, "tf_masterUnitName", null)
|
||||
this.setSlaveUnits([])
|
||||
},
|
||||
onBranchSchoolLeaderConfirm(value) {
|
||||
this.$set(this.formData, "userName", value.text)
|
||||
this.$set(this.formData, "userId", value.value)
|
||||
this.$set(this, "showBranchSchoolLeaderPicker", false)
|
||||
},
|
||||
async handleTaskAction(val) {
|
||||
if (this.submitLoading) {
|
||||
return
|
||||
}
|
||||
try {
|
||||
await this.$refs.formRef.validate()
|
||||
if (val === 1 && this.isBranchSchoolLeaderRequired() && !this.formData.userId) {
|
||||
this.$toast("请选择分管校领导")
|
||||
return
|
||||
}
|
||||
this.$dialog.confirm({
|
||||
title: "提示",
|
||||
message: "您确定要提交吗?"
|
||||
}).then(() => {
|
||||
var data = Object.assign({}, this.formData)
|
||||
data.submitType = val
|
||||
data.tf_helpunitreply = this.formData.tf_slaveUnitIds.length > 0 ? "HAS_HELP_UNIT" : "NO_HELP_UNIT"
|
||||
|
||||
this.$set(this, "submitLoading", true)
|
||||
this.$axios.post("/flow/common/executeTask", {
|
||||
data: JSON.stringify(data)
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.proposalInfoRef.onClose()
|
||||
this.$toast.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
}).finally(() => {
|
||||
this.$set(this, "submitLoading", false)
|
||||
})
|
||||
}).catch(() => {
|
||||
|
||||
})
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
},
|
||||
onRevoke(row) {
|
||||
this.$dialog.confirm({
|
||||
title: "提示",
|
||||
message: "您确定要撤回吗?"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$toast.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
doSearch() {
|
||||
this.$nextTick(() => {
|
||||
this.$set(this.pageForm, "pageNumber", 1)
|
||||
this.$set(this.pageForm, "totalCount", 0)
|
||||
this.$refs.tableListRef.doSearch()
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
Reference in New Issue
Block a user