This commit is contained in:
那些花儿
2025-09-08 10:57:18 +08:00
parent a112f0d1ae
commit 15143a34ba
9 changed files with 272 additions and 317 deletions
@@ -56,13 +56,25 @@ public class ProposalSecondedController {
@Inject
private ProposalSecondedService proposalSecondedService;
@At("")
@Ok("beetl:/platform/zhgh/democratic/proposal/transact/seconded/index.html")
@SaCheckPermission("proposal.seconded")
public void index() {
}
@At(value = "/platform/h5/proposal/seconded",top = true)
@Ok("beetl:/platform/zhghh5/democratic/proposal/transact/seconded/index.html")
@SaCheckPermission("proposal.seconded")
public void h5Index() {
}
@At(value = "/platform/h5/proposal/seconded/approval",top = true)
@Ok("beetl:/platform/zhghh5/democratic/proposal/transact/seconded/approval.html")
@SaCheckPermission("proposal.seconded")
public void h5Approval(){
}
@At
@SaCheckPermission("proposal.seconded")
public Result pageData(@Valid ProposalSearchParam pageForm, boolean approval) {
@@ -121,14 +133,4 @@ public class ProposalSecondedController {
return Result.success(pagination);
}
@At
@SaCheckPermission("proposal.seconded")
@ApiOperation("附议")
@Aop(TransAop.READ_COMMITTED)
@SLog(tag = "提案", msg = "提案人附议")
public Result approval(@Valid @Param("approval") BpmTaskApprovalParam approvalParam) {
proposalSecondedService.approval(approvalParam);
return Result.success();
}
}
@@ -59,7 +59,7 @@ public class ProposalWriteController {
public void index() {
}
@At("")
@At(value = "/platform/h5/proposal/write",top = true)
@Ok("beetl:/platform/zhghh5/democratic/proposal/transact/write/index.html")
@SaCheckPermission("proposal.write")
public void h5Index(){
@@ -1,20 +0,0 @@
package com.budwk.app.zhgh.democratic.proposal.h5controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import io.swagger.annotations.Api;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
@IocBean
@At("/platform/h5/proposal/write")
@Ok("json:full")
@Api("h5提案撰写")
public class H5ProposalWriteController {
@At("")
@Ok("beetl:/platform/zhghh5/democratic/proposal/transact/write/index_.html")
@SaCheckPermission("h5.proposal.write")
public void index() {
}
}
@@ -1,9 +1,9 @@
const H5_PROPOSAL_INFO_COMPONENT = {
name: "ProposalInfo",
template: `
template: /*language=HTML*/ `
<div>
<div class="process-title">基本信息</div>
<van-cell-group>
<div class="process-title">基本信息</div>
<van-cell-group>
<van-cell title="提案名称">
<div style="font-weight:bold;">
{{ viewData.name }}
@@ -24,7 +24,7 @@ const H5_PROPOSAL_INFO_COMPONENT = {
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT"
:value="viewData.caseFilingResult"></dict-tag>
</van-cell>
<van-cell title="提案摘要">
<van-cell title="提案摘要">
<div slot="label" class="font-size1 van-color-text-primary break-all" style="white-space: normal;">
<div v-html="viewData.excerpt"></div>
</div>
@@ -35,195 +35,94 @@ const H5_PROPOSAL_INFO_COMPONENT = {
</div>
</van-cell>
<van-cell title="可行性分析">
<div slot="label" class="font-size1 van-color-text-primary break-all">
<div slot="label" class="font-size1 van-color-text-primary break-all">
<div v-html="viewData.measures"></div>
</div>
</div>
</van-cell>
<!-- <van-cell title="附件">
<div slot="label">
{{viewData.files}}
</div>
</van-cell>-->
<!-- <van-cell title="签字">-->
<!-- <div slot="label">-->
<!-- <van-image :src="viewData.signature"-->
<!-- style="width: 100%;height: 150px;border: 1px dashed"></van-image>-->
<!-- </div>-->
<!-- </van-cell>-->
</van-cell-group>
<div class="process-title">
<!-- <van-cell title="签字">-->
<!-- <div slot="label">-->
<!-- <van-image :src="viewData.signature"-->
<!-- style="width: 100%;height: 150px;border: 1px dashed"></van-image>-->
<!-- </div>-->
<!-- </van-cell>-->
</van-cell-group>
<div class="process-title">
附议人信息
</div>
<van-cell-group>
<van-cell title="提案名称" v-for="item in viewData.seconders">
<template slot="title">
</div>
<van-cell-group>
<van-cell title="提案名称" v-for="item in viewData.seconders">
<template slot="title">
<span class="font-size1">{{item.createVariable.userName}}</span>
<span class="margin-left10 font-size1 van-color-text-regular">/ {{item.createVariable.loginName}}</span>
</template>
<template slot="label">
<span class="font-size0 van-color-text-assist">{{item.createVariable.unitName}}</span>
</template>
<template>
</template>
<template slot="label">
<span class="font-size0 van-color-text-assist">{{item.createVariable.unitName}}</span>
</template>
<template>
<span class="font-size2 van-color-text-placeholder bold">
<span v-if="item.extVariable && item.extVariable.bpmTaskApprovalType">
<van-tag size="mini" type="success" v-if="item.extVariable.bpmTaskApprovalType==='PASS'">同意</van-tag>
<van-tag size="mini" type="success"
v-if="item.extVariable.bpmTaskApprovalType==='PASS'">同意</van-tag>
<van-tag size="mini" type="danger" v-if="item.extVariable.bpmTaskApprovalType==='REJECT'">拒绝</van-tag>
</span>
<span v-else>
<van-tag size="mini">未附议</van-tag>
</span>
</span>
</template>
</van-cell>
</van-cell-group>
<div>
<div v-for="nodeTask in viewData.nodeTasks" :key="nodeTask.id">
<div class="process-title" v-if="nodeTask.nodeCode !== 20">
{{nodeTask.nodeName}}
</div>
<div v-if="nodeTask.nodeCode === 30">
<van-cell-group v-for="task in nodeTask.tasks" :key="task.id">
<van-cell title="审核人">{{ task.actualOwnerLoginName + '-' + task.actualOwnerUserName}}</van-cell>
<van-cell title="审核时间">{{ task.endOn}}</van-cell>
<van-cell title="审核结果">
<div v-if="task.extVariable">
<van-tag type="success" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'PASS'">同意</van-tag>
<van-tag type="danger" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'BACK'">退回重新填写</van-tag>
<van-tag type="danger" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'REJECT'">建议撤销</van-tag>
</div>
</van-cell>
<van-cell title="审核意见">
<div style="white-space: normal">
{{ task.extVariable.approvalOpinion}}
</div>
</van-cell>
<!-- <van-cell title="签字">-->
<!-- <van-image :src="task.extVariable.approvalSignature"-->
<!-- v-if="task.extVariable && task.extVariable.approvalSignature"-->
<!-- class="signature-image"></van-image>-->
<!-- </van-cell>-->
</van-cell-group>
</div>
<div v-if="nodeTask.nodeCode === 60 || nodeTask.nodeCode === 70">
<van-cell-group v-for="task in nodeTask.tasks" :key="task.id">
<van-cell title="审核人">{{ task.actualOwnerLoginName + '-' + task.actualOwnerUserName}}</van-cell>
<van-cell title="审核时间">{{ task.endOn}}</van-cell>
<van-cell title="审核结果">
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT" :value="task.extVariable.caseFilingResult">
</dict-tag>
</van-cell>
<template v-if="task.extVariable.caseFilingResult!=='NOT' && task.extVariable.caseFilingResult!==''">
<van-cell title="主办单位" :span="3">{{ task.extVariable.hostUnit}}</van-cell>
<van-cell title="协办单位" :span="3">
<div style="white-space: normal">
{{ task.extVariable.helpUnits.join(',')}}
</div>
</van-cell>
</template>
<van-cell title="审核意见">
<div style="white-space: normal">
{{ task.extVariable.approvalOpinion}}
</div>
</van-cell>
<!-- <van-cell title="签字">-->
<!-- <van-image :src="task.extVariable.approvalSignature"-->
<!-- v-if="task.extVariable && task.extVariable.approvalSignature"-->
<!-- class="signature-image"></van-image>-->
<!-- </van-cell>-->
</van-cell-group>
</div>
<div v-if="nodeTask.nodeCode === 80">
<van-cell-group v-for="task in nodeTask.tasks" :key="task.id">
<van-cell title="承办单位">
{{ task.createVariable.underTakeName}}
({{ task.createVariable.isMaster ? '主办' : '协办'}})
</van-cell>
<van-cell title="答复人">{{ task.actualOwnerLoginName + '-' + task.actualOwnerUserName}}</van-cell>
<van-cell title="答复时间">{{ task.endOn}}</van-cell>
<van-cell title="答复内容">
<div v-html="task.extVariable.approvalOpinion"></div>
</van-cell>
<!-- <van-cell title="签字">-->
<!-- <van-image :src="task.extVariable.approvalSignature"-->
<!-- v-if="task.extVariable && task.extVariable.approvalSignature"-->
<!-- class="signature-image"></van-image>-->
<!-- </van-cell>-->
</van-cell-group>
</div>
<div v-if="nodeTask.nodeCode === 90">
<van-cell-group v-for="task in nodeTask.tasks" :key="task.id">
<van-cell title="承办单位">
{{ task.createVariable.underTakeName}}
({{ task.createVariable.isMaster ? '主办' : '协办'}})
</van-cell>
<van-cell title="校领导">{{ task.actualOwnerLoginName + '-' + task.actualOwnerUserName}}</van-cell>
<van-cell title="审批时间">{{ task.endOn}}</van-cell>
<van-cell title="审批结果" :span="3">
<van-tag size="mini" type="success" v-if="task.extVariable.bpmTaskApprovalType==='PASS'">同意</van-tag>
<van-tag size="mini" type="danger" v-if="task.extVariable.bpmTaskApprovalType==='BACK_OTHER_NODE'">退回重新答复</van-tag>
</van-cell>
<van-cell title="审批意见">
<div style="white-space: normal">
{{ task.extVariable.approvalOpinion}}
</div>
</van-cell>
<!-- <van-cell title="签字">-->
<!-- <van-image :src="task.extVariable.approvalSignature"-->
<!-- v-if="task.extVariable && task.extVariable.approvalSignature"-->
<!-- class="signature-image"></van-image>-->
<!-- </van-cell>-->
</van-cell-group>
</div>
<div v-if="nodeTask.nodeCode === 100">
<van-cell-group v-for="task in nodeTask.tasks" :key="task.id">
<van-cell title="反馈人">{{ task.actualOwnerLoginName + '-' + task.actualOwnerUserName}}</van-cell>
<van-cell title="反馈时间">{{ task.endOn}}</van-cell>
<van-cell title="反馈结果">
{{ task.extVariable.feedBackScore}}
</van-cell>
<van-cell title="反馈意见">
<div style="white-space: normal">
{{ task.extVariable.approvalOpinion}}
</div>
</van-cell>
<!-- <van-cell title="签字">-->
<!-- <van-image :src="task.extVariable.approvalSignature"-->
<!-- v-if="task.extVariable && task.extVariable.approvalSignature"-->
<!-- class="signature-image"></van-image>-->
<!-- </van-cell>-->
</van-cell-group>
</div>
</div>
</div>
</template>
</van-cell>
</van-cell-group>
<slot></slot>
</div>
`,
dicts: ["PROPOSAL_TYPE", "PROPOSAL_CASE_FILING_RESULT"],
`,
dicts: ["PROPOSAL_TYPE", "PROPOSAL_CASE_FILING_RESULT","PROCESS_TASK_SUBMIT_TYPE"],
data() {
return {
viewData: {},
doneTasks: [],
row: null,
viewDialogVisible: false
}
},
methods: {
onOpen(id) {
this.$axios.post("/platform/proposal/common/proposalInfo", { id }).then((res) => {
// 打开
onOpen(row) {
this.row = row
this.visible = true
this.getInfo()
this.getDoneTasks()
},
// 获取申请信息
getInfo() {
this.$axios.post("/platform/proposal/common/proposalInfo", {id: this.row.id}).then((res) => {
if (res.code === 0) {
this.viewData = res.data
}
})
},
// 查看提案
openView(id) {
// this.viewDialogVisible = true
// this.$nextTick(() => {
// this.$refs.infoDialogRef.onOpen(id)
// })
}
this.viewDialogVisible = true
this.$nextTick(() => {
this.$refs.infoDialogRef.onOpen(id)
})
},
// 获取已办任务审批记录
getDoneTasks() {
this.$axios.post("/flow/common/doneTasks", {bizId: this.row.id}).then((res) => {
if (res.code === 0) {
this.doneTasks = res.data
}
})
},
}
}
@@ -13,17 +13,45 @@ layout("/layouts/platform_h5.html"){
v-model="pageForm.name"
></van-search>
<van-dropdown-menu :close-on-click-outside="false" :close-on-click-overlay="false">
<van-dropdown-item :multiple="false" :options="sessionOptions" @change="sessionChange"
<van-dropdown-item :multiple="false" :options="sessionOptions" @change="doSearch"
v-model="pageForm.sessionId"></van-dropdown-item>
</van-dropdown-menu>
</van-sticky>
<table-list api="/platform/proposal/mine/pageData" :page_form.sync="pageForm" @ready="onReady" ref="tableListRef" title="name">
<table-list api="/platform/proposal/mine/pageData" :page_form.sync="pageForm" @ready="onReady" ref="tableListRef"
title="name">
<template v-slot="{index,row}">
<table-column label="提案类型">{{row.typeName}}</table-column>
<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.taskName}}</table-column>
</template>
<template #actions="{index,row}">
{{index}}
<div class="action-btn" @click="onView(row)">
<i class="fa fa-eye"></i>
<span>查看</span>
</div>
<div class="action-btn" v-if="row.taskKey === 'startTask' || !row.instanceId"
@click="onEdit(row)">
<i class="fa fa-edit"></i>
<span>编辑</span>
</div>
<div class="action-btn"
v-if="row.taskKey === '85b7b9bd-d706-48cb-99a1-ef1370fb1819' || row.taskKey === '74458b33-ad6e-46c4-b8d9-1aa897142b25'"
@click="onInvite(row)">
<i class="fa fa-user-plus"></i>
<span>邀请附议人</span>
</div>
<div class="action-btn delete" v-if="row.canRevoke" @click="onRevoke(item)">
<i class="fa fa-undo"></i>
<span>撤回</span>
</div>
<div class="action-btn delete" v-if="row.taskKey === 'startTask' || !row.instanceId"
@click="onDelete(row)">
<i class="fa fa-trash"></i>
<span>删除</span>
</div>
</template>
</table-list>
@@ -39,8 +67,8 @@ layout("/layouts/platform_h5.html"){
</van-popup>
</div>
<script>
<!--#include("inviteSeconder.js"){}#-->
<!--#include("../../common/info.js"){}#-->
<!--#include("inviteSeconder.js"){}#-->
const vue = new Vue({
el: "#app",
@@ -64,9 +92,6 @@ layout("/layouts/platform_h5.html"){
}
},
methods: {
sessionChange(val) {
this.doSearch()
},
listSession() {
this.$axios.post("/platform/proposal/common/listSession").then((res) => {
if (res.code === 0) {
@@ -84,38 +109,40 @@ layout("/layouts/platform_h5.html"){
})
},
openView(row) {
onView(row) {
this.infoShow = true
this.$nextTick(() => {
this.$refs.infoRef.onOpen(row.id)
})
},
openEdit(row) {
this.$pjaxReplace("/platform/h5/proposal/write?id=" + row.id)
onEdit(row) {
this.$pjaxReplace("/platform/h5/proposal/write?bizId=" + row.id + "&taskId=" + row.startTaskId)
},
pageData() {
this.$refs.tableListRef.pageData()
},
doSearch() {
this.pageForm.pageNumber = 1
this.pageForm.totalCount = 0
this.$refs.tableListRef.doSearch()
this.$nextTick(() => {
this.pageForm.pageNumber = 1
this.pageForm.totalCount = 0
this.$refs.tableListRef.doSearch()
})
},
openRevoke(row) {
onRevoke(row) {
this.$dialog
.confirm({
title: "提示",
message: "您确定要撤销申请吗?"
})
.then(() => {
this.$axios.post("/platform/proposal/mine/revokeApply", {id: row.id}).then((resp) => {
this.$axios.post("/flow/common/revokeTask", {taskId: row.startTaskId}).then((res) => {
this.$toast.success(resp.msg)
this.doSearch()
})
})
},
del(id) {
onDelete(id) {
this.$dialog
.confirm({
title: "提示",
@@ -130,8 +157,16 @@ layout("/layouts/platform_h5.html"){
})
})
},
onInvite(row) {
this.$axios.post("/platform/proposal/mine/inviteCheck", {id: row.id}).then((res) => {
if (res.code === 0) {
this.$refs.inviteSeconderRef.onOpen(row)
}
})
},
onReady() {
debugger
this.listSession()
}
}
@@ -23,9 +23,6 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
<span slot="title">
{{item.userName}}
({{item.loginName}})
<van-tag :plain="false">
{{item.sex || '未知'}}
</van-tag>
</span>
<span slot="label" class="font-size0 van-color-text-assist">
{{item.unitName}}
@@ -44,7 +41,6 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
:items-per-page="pageForm.pageSize"
@change="pageData"
></van-pagination>
{{tableSelection}}
<van-button @click="invite" type="primary" block :disabled="pageForm.isInvite" class="mt10">邀请</van-button>
</div>
</van-checkbox-group>
@@ -64,37 +60,39 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
isInvite: false,
searchKeyword: null
},
config: {},
isInvite: "0",
tableSelection: []
}
},
methods: {
onOpen(record) {
async onOpen(record) {
this.visible = true
this.record = record
await this.getConfig()
this.pageData()
},
detail(id) {
},
detail(id) {},
invite() {
if (this.tableSelection.length === 0) {
this.$toast("请先选择附议人后在点击邀请")
return
}
/* this.visible = false
this.$emit("refresh", null)*/
const loginNames = this.tableSelection.map((s) => s.loginName)
this.$axios
.post("/platform/proposal/mine/inviteSeconder", {
task: JSON.stringify({
processTaskId: this.record.processTaskId,
processInstId: this.record.processInstId
}),
const userName = this.tableSelection.map((s) => s.userName)
this.$dialog.confirm({
title: '提示',
message: "您确定要邀请" + userName.join("、") + "代表附议吗?",
}).then(() => {
this.$axios.post("/platform/proposal/mine/inviteSeconder", {
proposalId: this.record.id,
seconders: JSON.stringify(loginNames)
})
.then((res) => {
}).then((res) => {
if (res.code === 0) {
this.pageData()
this.$toast.success(res.msg)
@@ -103,14 +101,16 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
this.$emit("refresh", null)
}
})
}).catch(() => {
})
},
pageData() {
this.$axios
.post("/platform/proposal/mine/listSeconder", {
...this.pageForm,
sessionId: this.record.sessionId,
proposalId: this.record.id
})
this.$axios.post("/platform/proposal/mine/listSeconder", {
...this.pageForm,
sessionId: this.record.sessionId,
proposalId: this.record.id
})
.then((res) => {
if (res.code === 0) {
this.tableData = res.data.list
@@ -131,6 +131,13 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
tableRowToggle(index) {
console.log(index)
},
async getConfig() {
const {code, data} = await this.$axios.post("/platform/proposal/common/config")
if (code === 0) {
this.config = data
}
}
}
}
@@ -0,0 +1,34 @@
<!--#
layout("/layouts/platform_h5.html"){
#-->
<div id="app" v-cloak>
<info></info>
</div>
<script>
<!--#include("../../common/info.js"){}#-->
const vue = new Vue({
el: "#app",
store,
components: {
info: H5_PROPOSAL_INFO_COMPONENT
},
data() {
return {
}
},
methods:{
},
created(){
}
})
</script>
<!--#
}
#-->
@@ -21,28 +21,30 @@ layout("/layouts/platform_h5.html"){
</van-tabs>
</van-sticky>
<van-pull-refresh v-model="tableRefreshing" @refresh="doSearch" style="min-height: calc(100vh - 90px)">
<van-list v-if="tableData && tableData.length>0" v-model="tableLoading" :finished="tableFinished" finished-text="" @load="pageData">
<div v-for="row in tableData" :key="row.id" class="list-card">
<div class="list-card-body">
<div class="van-multi-ellipsis--l2" style="padding: 0 16px; font-weight: bold">{{row.name}}</div>
<van-cell :value="row.code" title="提案编号"></van-cell>
<van-cell :value="row.createUserName" title="提案人"></van-cell>
<van-cell :value="row.typeName" title="提案类型"></van-cell>
<van-cell :value="row.sessionName" title="届次"></van-cell>
<van-cell :value="row.delegationName" title="代表团"></van-cell>
<van-cell :value="row.processInstanceNodeName" title="当前节点"></van-cell>
<div class="list-card-footer">
<van-button size="small" @click="openView(row)">查看</van-button>
<van-button v-if="row.processInstanceTaskStatus==='ACTIVE'" @click="openApproval(row)" type="primary" size="small">
附议
</van-button>
</div>
</div>
<table-list api="/platform/proposal/seconded" :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.taskName}}</table-column>
</template>
<template #actions="{index,row}">
<div class="action-btn" @click="onView(row)">
<i class="fa fa-eye"></i>
<span>查看</span>
</div>
</van-list>
<van-empty v-else image="/assets/platform/plugins/vant-green/images/nodata/nodata.png" description="暂无数据"></van-empty>
</van-pull-refresh>
<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" v-if="row.taskState === 10" @click="onRevoke(row)">
<i class="fa fa-reply"></i>
<span>撤回</span>
</div>
</template>
</table-list>
<van-popup :style="{ height: '100%', width: '100%' }" position="right" safe-area-inset-bottom v-model="infoShow">
<van-sticky>
@@ -82,10 +84,6 @@ layout("/layouts/platform_h5.html"){
approvalText: "0",
approval: false
},
tableData: [],
tableLoading: false,
tableFinished: false,
tableRefreshing: false,
sessionOptions: [],
infoShow: false,
@@ -110,9 +108,12 @@ layout("/layouts/platform_h5.html"){
openApproval(row) {
this.infoShow = true
this.$nextTick(() => {
this.$refs.infoRef.onOpen(row.id)
this.formData = row.approvalParam
this.showApprovalForm = true
this.$refs.infoRef.onOpen(row.id)
this.formData = {
processTaskId: row.taskId,
taskName: row.curTaskName
}
})
},
doApproval(approvalType) {
@@ -7,11 +7,11 @@ layout("/layouts/platform_h5.html"){
</style>
<div id="app" v-cloak>
<van-nav-bar title="撰写提案" left-text="返回" left-arrow @click-left="onClickLeft" placeholder fixed z-index="999"
<van-nav-bar title="撰写提案" left-text="返回" left-arrow @click-left="historyBack" placeholder fixed z-index="999"
class="custom-nav"></van-nav-bar>
<div class="form-container">
<van-form ref="addForm" @submit="onSubmit">
<van-form ref="formRef">
<!-- 基本信息 -->
<van-cell-group title="基本信息">
<van-field
@@ -32,7 +32,7 @@ layout("/layouts/platform_h5.html"){
v-model="formData.sessionName"
is-link
readonly
name="教代会"
name="sessionName"
label="所属教代会"
placeholder="请选择所属教代会"
@click="showSessionPicker = true"
@@ -59,7 +59,7 @@ layout("/layouts/platform_h5.html"){
v-model="formData.committeeName"
is-link
readonly
name="委员会"
name="committeeName"
label="所属委员会"
placeholder="请选择所属委员会"
@click="showCommitteePicker = true"
@@ -76,6 +76,7 @@ layout("/layouts/platform_h5.html"){
<van-field
v-model="formData.unitName"
name="mobile"
label="单位"
readonly
:rules="[{ required: true, message: '请填写单位' }]"
@@ -94,9 +95,11 @@ layout("/layouts/platform_h5.html"){
<van-cell-group title="提案信息" class="form-group">
<van-field
v-model="formData.name"
name="name"
label="提案名称"
placeholder="请输入提案名称"
:rules="[{ required: true, message: '请填写提案名称' }]"
required
maxlength="100"
show-word-limit
></van-field>
@@ -124,7 +127,7 @@ layout("/layouts/platform_h5.html"){
v-model="formData.typeName"
is-link
readonly
name="提案类别"
name="typeName"
label="提案类别"
placeholder="请选择提案类别"
@click="showTypePicker = true"
@@ -144,12 +147,14 @@ layout("/layouts/platform_h5.html"){
<van-cell-group title="提案内容" class="form-group">
<van-field
v-model="formData.researchFindings"
name="researchFindings"
label="调研情况"
type="textarea"
rows="4"
autosize
placeholder="请输入调研情况"
:rules="[{ required: true, message: '请填写调研情况' }]"
required
></van-field>
<van-field
@@ -160,6 +165,7 @@ layout("/layouts/platform_h5.html"){
autosize
placeholder="请输入案由"
:rules="[{ required: true, message: '请填写案由' }]"
required
></van-field>
<van-field
@@ -170,6 +176,7 @@ layout("/layouts/platform_h5.html"){
autosize
placeholder="请输入建议措施"
:rules="[{ required: true, message: '请填写建议措施' }]"
required
></van-field>
</van-cell-group>
@@ -177,15 +184,15 @@ layout("/layouts/platform_h5.html"){
<!-- 附件上传 -->
<van-cell-group title="附件上传" class="form-group">
<van-field label="附件" name="files" required class="direction-column-field">
<h5-file-upload
slot="input"
:value.sync="formData.files"
:upload_number="10"
upload_mode="file"
upload_result_category="array"
upload_result_type="url"
complete_result
></h5-file-upload>
<!-- <h5-file-upload-->
<!-- slot="input"-->
<!-- :value.sync="formData.files"-->
<!-- :upload_number="10"-->
<!-- upload_mode="file"-->
<!-- upload_result_category="array"-->
<!-- upload_result_type="url"-->
<!-- complete_result-->
<!-- ></h5-file-upload>-->
</van-field>
</van-cell-group>
@@ -242,10 +249,6 @@ layout("/layouts/platform_h5.html"){
}
},
methods: {
onClickLeft() {
history.back();
},
// 选择器确认事件
onSessionConfirm(value) {
this.formData.sessionId = value.value;
@@ -278,12 +281,7 @@ layout("/layouts/platform_h5.html"){
async onSave() {
// 表单验证
try {
await this.$refs.addForm.validate();
if (!this.formData.name || this.formData.name.trim().length < 1) {
this.$toast("请填写提案名称");
return;
}
await this.$refs.formRef.validate();
this.$toast.loading({
message: '保存中...',
@@ -295,10 +293,7 @@ layout("/layouts/platform_h5.html"){
this.$toast.clear();
if (res.code === 0) {
this.$toast.success(res.msg);
this.formData = res.data;
setTimeout(() => {
pjaxReplace('/platform/h5/proposal/mine')
}, 1500);
pjaxReplace('/platform/h5/proposal/mine')
} else {
this.$toast.fail(res.msg || '保存失败');
}
@@ -316,7 +311,7 @@ layout("/layouts/platform_h5.html"){
// 提交
async onSubmit() {
try {
await this.$refs.addForm.validate();
await this.$refs.formRef.validate();
if (!this.formData.name || this.formData.name.trim().length < 1) {
this.$toast("请填写提案名称");
@@ -324,7 +319,7 @@ layout("/layouts/platform_h5.html"){
}
if (this.formData.brief.length < this.proposalConfig.briefMinLength) {
this.$toast("提案内容和依据最少为" + this.proposalConfig.briefMinLength + "字");
this.$toast("案由" + this.proposalConfig.briefMinLength + "字");
return;
}
@@ -342,9 +337,7 @@ layout("/layouts/platform_h5.html"){
this.$toast.clear();
if (res.code === 0) {
this.$toast.success("提交成功");
setTimeout(() => {
pjaxReplace('/platform/h5/proposal/mine')
}, 1500);
pjaxReplace('/platform/h5/proposal/mine')
} else {
this.$toast.fail(res.msg || '提交失败');
}
@@ -365,7 +358,7 @@ layout("/layouts/platform_h5.html"){
// 重新提交
async onSubmitAgain() {
try {
await this.$refs.addForm.validate();
await this.$refs.formRef.validate();
if (!this.formData.name || this.formData.name.trim().length < 1) {
this.$toast("请填写提案名称");
@@ -388,7 +381,7 @@ layout("/layouts/platform_h5.html"){
this.$axios.post('/platform/proposal/write/submitAgain', {
info: JSON.stringify(this.formData),
taskId: this.$utils.getQueryString("taskId")
taskId: this.taskId
}).then(res => {
this.$toast.clear();
if (res.code === 0) {
@@ -466,6 +459,10 @@ layout("/layouts/platform_h5.html"){
await this.searchMineDelegation();
// 检查是否在撰写时间内
this.checkWriteTime();
} else {
await this.listDelegation();
await this.listSource();
this.echoPicker()
}
}
});
@@ -508,28 +505,28 @@ layout("/layouts/platform_h5.html"){
});
},
// 回显
echoPicker() {
// 设置选择器显示值
this.$set(this.formData, "sessionName", this.sessionOptions.find(item => item.id === this.formData.sessionId)?.fullName)
const delegation = this.delegationOptions.find(item => item.id === this.formData.delegationId);
this.$set(this.formData, "delegationName", delegation?.name)
const source = this.sourceOptions.find(item => item.code === this.formData.source);
this.$set(this.formData, "sourceName", source?.name)
const type = this.typeOptions.find(item => item.id === this.formData.typeId);
this.$set(this.formData, "typeName", type?.name)
},
init() {
if (this.bizId) {
this.$axios.post("/platform/proposal/write/detail", {id: this.bizId}).then((res) => {
if (res.code === 0) {
this.formData = res.data;
// // 设置选择器显示值
// const delegation = this.delegationOptions.find(item => item.id === this.formData.delegationId);
// if (delegation) {
// this.formData.delegationName = delegation.name;
// }
//
// const source = this.sourceOptions.find(item => item.code === this.formData.source);
// if (source) {
// this.sourceName = source.name;
// }
//
// const type = this.typeOptions.find(item => item.id === this.formData.typeId);
// if (type) {
// this.typeName = type.name;
// }
this.listOpenSession(true);
}
});