..
This commit is contained in:
@@ -677,7 +677,7 @@ td.no-b {
|
||||
.flow-task-form .el-descriptions-item__label.is-bordered-label {
|
||||
background: rgb(248, 249, 250) !important;
|
||||
padding: 8px 12px !important;
|
||||
border: 1px solid rgb(221, 221, 221) !important;
|
||||
/*border: 1px solid rgb(221, 221, 221) !important;*/
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- 弹窗模式(默认) -->
|
||||
<template v-if="mode === 'dialog'">
|
||||
<!-- 触发按钮 -->
|
||||
<!-- <slot name="trigger">-->
|
||||
<!-- <el-button type="primary" size="small" @click="openDialog">二维码</el-button>-->
|
||||
<!-- </slot>-->
|
||||
|
||||
<!-- 弹出框 -->
|
||||
<el-dialog
|
||||
title="二维码"
|
||||
:visible.sync="dialogVisible"
|
||||
width="40%"
|
||||
append-to-body
|
||||
>
|
||||
<div class="qrcode-container" style="text-align: center;">
|
||||
<qrcode :value="url" :options="{ width: 126 }" class="signature-qrcode"></qrcode>
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="dialogVisible = false">关闭</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<!-- 内联模式 -->
|
||||
<template v-else-if="mode === 'inline'">
|
||||
<div class="qrcode-inline-container">
|
||||
<qrcode :value="url" :options="{ width: 126 }" class="signature-qrcode"></qrcode>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
module.exports = {
|
||||
name: 'QrCodeDisplay',
|
||||
props: {
|
||||
// 二维码内容
|
||||
url: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
// 显示模式:dialog(默认)或 inline
|
||||
mode: {
|
||||
type: String,
|
||||
default: 'dialog',
|
||||
validator: (value) => ['dialog', 'inline'].includes(value)
|
||||
},
|
||||
// 控制弹窗显示(可用于外部 v-model 控制)
|
||||
value: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: this.value // 初始化为传入的 value
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
// 同步 v-model 的 value 变化到 dialogVisible
|
||||
value(newVal) {
|
||||
this.dialogVisible = newVal
|
||||
},
|
||||
// 同步 dialogVisible 状态到外部(实现 v-model)
|
||||
dialogVisible(newVal) {
|
||||
this.$emit('input', newVal)
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
openDialog() {
|
||||
this.dialogVisible = true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.signature-qrcode {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.qrcode-container {
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
.qrcode-inline-container {
|
||||
display: inline-block;
|
||||
padding: 10px;
|
||||
border: 1px dashed #ccc;
|
||||
border-radius: 8px;
|
||||
}
|
||||
</style>
|
||||
@@ -324,6 +324,7 @@
|
||||
Vue.component("table-tool", httpVueLoader("/components/plugins/sysTableTool/index.vue?v=" + new Date().getTime()))
|
||||
Vue.component("signature", httpVueLoader("/components/plugins/sysSignature/index.vue?v=" + new Date().getTime()))
|
||||
Vue.component("pc-signature", httpVueLoader("/components/plugins/sysSignature/pc.vue?v=" + new Date().getTime()))
|
||||
Vue.component("qr-code-plus", httpVueLoader("/components/plugins/sysQrCode/index.vue?v=" + new Date().getTime()))
|
||||
Vue.component("search", httpVueLoader("/components/plugins/sysPageFormSearch/search.vue?v=" + new Date().getTime()))
|
||||
Vue.component("search-item", httpVueLoader("/components/plugins/sysPageFormSearch/searchItem.vue?v=" + new Date().getTime()))
|
||||
Vue.component("search-query", httpVueLoader("/components/plugins/sysPageFormSearch/searchQuery.vue?v=" + new Date().getTime()))
|
||||
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
<!--#
|
||||
layout("/layouts/v4/baseLayout.html"){
|
||||
#-->
|
||||
|
||||
<div id="approvalApp" v-cloak>
|
||||
<snaker-flow
|
||||
:task_id="taskId"
|
||||
:instance_id="instanceId"
|
||||
:business_id="businessId"
|
||||
:pjax_urls="{
|
||||
applicationInfo: '/platform/article/write/index_',
|
||||
taskForm: '/platform/article/write/index_'
|
||||
}"
|
||||
:pjax_config="{
|
||||
push: false,
|
||||
replace: false,
|
||||
timeout: 10000
|
||||
}"
|
||||
></snaker-flow>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: "#approvalApp",
|
||||
data() {
|
||||
return {
|
||||
taskId: null,
|
||||
instanceId: null,
|
||||
businessId: null,
|
||||
formConfig: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleTaskSubmitted() {},
|
||||
handleCancel() {
|
||||
window.history.back()
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.taskId = new URLSearchParams(window.location.search).get("taskId")
|
||||
this.instanceId = new URLSearchParams(window.location.search).get("instanceId")
|
||||
this.businessId = new URLSearchParams(window.location.search).get("businessId")
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
-48
@@ -1,48 +0,0 @@
|
||||
<div id="article_branch_union_approval_form">
|
||||
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
|
||||
<el-form-item label="审批意见" prop="approvalOpinion"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.approvalOpinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">-->
|
||||
<!-- <pc-signature v-model="formData.approvalSignature"></pc-signature>-->
|
||||
<!-- </el-form-item>-->
|
||||
</el-form>
|
||||
<snaker-flow-task-form-action @task-action="handleTaskAction"
|
||||
@cancel="handleCancel">
|
||||
</snaker-flow-task-form-action>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: "#article_branch_union_approval_form",
|
||||
data() {
|
||||
return {
|
||||
taskId: GetQueryString("taskId"),
|
||||
formData: {
|
||||
approval: "",
|
||||
approvalOpinion: ""
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleTaskAction(val) {
|
||||
console.log(val)
|
||||
this.$axios.post("/flow/common/executeTask", {
|
||||
data: JSON.stringify(val)
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("操作成功")
|
||||
// 发送完成消息
|
||||
window.parent.postMessage({
|
||||
type: "task-complete"
|
||||
}, "*")
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCancel(val) {
|
||||
console.log(val)
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
+74
-63
@@ -8,12 +8,12 @@ layout("/layouts/platform.html"){
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度">
|
||||
<el-date-picker
|
||||
:clearable="true"
|
||||
v-model="pageForm.year"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="年度"
|
||||
style="width: 100%"
|
||||
:clearable="true"
|
||||
v-model="pageForm.year"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="年度"
|
||||
style="width: 100%"
|
||||
></el-date-picker>
|
||||
</search-item>
|
||||
<search-item label="标题">
|
||||
@@ -36,7 +36,7 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column prop="unitName" label="投稿人单位"></el-table-column>
|
||||
<el-table-column prop="unionName" label="投稿人工会"></el-table-column>
|
||||
<el-table-column prop="submitTime" label="投稿时间"></el-table-column>
|
||||
<el-table-column prop="taskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
<template slot-scope="{row}">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
@@ -45,17 +45,10 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="200px" fixed="right">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="onOpen(row.id)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskState === 10" @click="openApproval(row)" size="mini" type="primary">
|
||||
审核
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
|
||||
@click="openRevoke(row.processInstanceTaskId)"
|
||||
size="mini"
|
||||
type="danger"
|
||||
>
|
||||
撤回
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -63,27 +56,27 @@ layout("/layouts/platform.html"){
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<el-dialog title="" :visible.sync="showApprovalForm" width="90%">
|
||||
<info ref="infoRef"></info>
|
||||
<el-row type="flex">
|
||||
<flow-form-button :task_id="taskId"></flow-form-button>
|
||||
|
||||
<!-- <el-button plain @click="$refs.guava.index()">取消</el-button>-->
|
||||
<!-- <el-button type="danger" @click="doApproval('BACK')">退回修改</el-button>-->
|
||||
<!-- <el-button type="primary" @click="doApproval('PASS')">同意</el-button>-->
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
|
||||
<template #public>
|
||||
<div v-if="showApprovalForm">
|
||||
<el-row type="flex">
|
||||
<flow-form-button :task_id="taskId"></flow-form-button>
|
||||
|
||||
<!-- <el-button plain @click="$refs.guava.index()">取消</el-button>-->
|
||||
<!-- <el-button type="danger" @click="doApproval('BACK')">退回修改</el-button>-->
|
||||
<!-- <el-button type="primary" @click="doApproval('PASS')">同意</el-button>-->
|
||||
</el-row>
|
||||
</div>
|
||||
<template #edit>
|
||||
<article-info ref="articleInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">
|
||||
{{formData.taskName}}
|
||||
</div>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":"
|
||||
class="flow-task-form">
|
||||
<el-form-item label="审批意见" prop="tf_opinion"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
|
||||
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</article-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
@@ -95,51 +88,68 @@ layout("/layouts/platform.html"){
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
components: { info },
|
||||
components: {
|
||||
"article-info": ARTICLE_INFO
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
approval: false
|
||||
},
|
||||
showApprovalForm: false,
|
||||
taskId: ""
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOpen(id) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(id)
|
||||
// 查看
|
||||
openView(row) {
|
||||
this.$refs.guava.edit(()=>{
|
||||
this.showApprovalForm = false
|
||||
this.$refs.articleInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
openApproval(row) {
|
||||
window.open("/flow/common/approval/form?taskId=" + row.taskId + "&instanceId=" + row.instanceId + "&businessId=" + row.businessNo)
|
||||
},
|
||||
doApproval(approvalType) {
|
||||
this.formData.bpmTaskApprovalType = approvalType
|
||||
this.$refs.approvalFormRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post("/platform/article/branchUnionApproval/approval", {
|
||||
approval: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
|
||||
// 审核
|
||||
openAudit(row) {
|
||||
this.$refs.guava.edit(()=>{
|
||||
this.showApprovalForm = true
|
||||
this.formData = {
|
||||
processTaskId: row.taskId,
|
||||
taskName: row.curTaskName
|
||||
}
|
||||
this.$refs.articleInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
openRevoke(taskId) {
|
||||
|
||||
// 提交
|
||||
handleTaskAction(val) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/executeTask", {
|
||||
data: JSON.stringify({
|
||||
...this.formData,
|
||||
submitType: val
|
||||
})
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 撤回
|
||||
onRevoke(row) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/article/branchUnionApproval/revoke", { taskId }).then((res) => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
@@ -147,6 +157,7 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
<div id="article-full-form">
|
||||
<el-descriptions :column="2" border class="flow-task-form">
|
||||
<el-descriptions-item label="投稿人姓名">{{ viewData.userName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="投稿人工号">{{ viewData.loginName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="投稿人单位">{{ viewData.unitName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="投稿人工会">{{ viewData.unionName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="投稿人联系方式">{{ viewData.mobile }}</el-descriptions-item>
|
||||
<el-descriptions-item label="稿件修改人联系方式">{{ viewData.mobile2 }}</el-descriptions-item>
|
||||
<el-descriptions-item label="投稿标题" :span="2">{{ viewData.title }}</el-descriptions-item>
|
||||
<el-descriptions-item label="投稿说明" :span="2">{{ viewData.excerpt }}</el-descriptions-item>
|
||||
<el-descriptions-item label="稿件" :span="2">
|
||||
<file-preview :files="viewData.files" complete_result></file-preview>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<template v-for="task in doneTasks">
|
||||
<div class="task-panel mt10">
|
||||
<div class="task-panel-header">
|
||||
{{ task.displayName }}
|
||||
</div>
|
||||
<el-descriptions border class="flow-task-form" :column="2" :key="task.id">
|
||||
<el-descriptions-item label="办理用户">{{ task.operator }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: "#article-full-form",
|
||||
data() {
|
||||
return {
|
||||
businessId: GetQueryString("businessId"),
|
||||
instanceId: GetQueryString("instanceId"),
|
||||
viewData: {},
|
||||
doneTasks: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
info() {
|
||||
this.$axios.post("/platform/article/common/info", { id: this.businessId }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.viewData = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
getDoneTasks() {
|
||||
this.$axios.post("/flow/common/doneTasks", { instanceId: this.instanceId }).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.doneTasks = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.info()
|
||||
this.getDoneTasks()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.task-panel{
|
||||
background: white;
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.task-panel-header{
|
||||
background: rgb(250, 250, 250);
|
||||
border: 1px solid rgb(228, 231, 237);
|
||||
border-bottom: none;
|
||||
padding: 12px 16px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
font-weight: 600;
|
||||
}
|
||||
</style>
|
||||
@@ -1,8 +1,9 @@
|
||||
const info = {
|
||||
const ARTICLE_INFO = {
|
||||
template: /*language=HTML*/ `
|
||||
<div class="">
|
||||
<div class="process-title">
|
||||
基础信息
|
||||
申请信息
|
||||
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
|
||||
</div>
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="投稿人姓名">{{ viewData.userName }}</el-descriptions-item>
|
||||
@@ -18,69 +19,82 @@ const info = {
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<div>
|
||||
<div v-for="nodeTask in viewData.nodeTasks" :key="nodeTask.id">
|
||||
<div class="process-title">
|
||||
{{nodeTask.nodeName}}
|
||||
</div>
|
||||
<el-descriptions :column="3" border v-for="task in nodeTask.tasks" :key="task.id"
|
||||
style="margin-bottom: 10px">
|
||||
<el-descriptions-item label="审核人">
|
||||
{{ task.actualOwnerLoginName + '-' + task.actualOwnerUserName}}
|
||||
<template v-for="task in doneTasks">
|
||||
<div class="mt10">
|
||||
<div class="process-title">{{ task.displayName }}</div>
|
||||
<el-descriptions border class="flow-task-form" :column="3" :key="task.id"
|
||||
v-if="task.ext.isFirstTaskNode">
|
||||
<el-descriptions-item label="申请用户">{{ task.ext.initiatorName
|
||||
}}({{task.ext.initiatorAccount}})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ task.endOn}}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">
|
||||
<div v-if="task.extVariable">
|
||||
<el-tag type="success" size="mini"
|
||||
v-if="task.extVariable.bpmTaskApprovalType === 'PASS'">同意
|
||||
</el-tag>
|
||||
<el-tag type="danger" size="mini"
|
||||
v-if="task.extVariable.bpmTaskApprovalType === 'BACK'">退回
|
||||
</el-tag>
|
||||
<el-tag type="danger" size="mini"
|
||||
v-if="task.extVariable.bpmTaskApprovalType === 'REJECT'">拒绝
|
||||
</el-tag>
|
||||
<template v-if="task.extVariable.bpmTaskApprovalType === 'DYNAMIC'">
|
||||
<el-tag v-if="task.extVariable.RESULT === 'BACK_TO_START'" type="danger"
|
||||
size="mini">
|
||||
退回至投稿人
|
||||
<span v-if="task.extVariable.processAgain===false">不需要重新走流程</span>
|
||||
<span v-if="task.extVariable.processAgain===true">需要重新走流程</span>
|
||||
</el-tag>
|
||||
<el-tag v-if="task.extVariable.RESULT === 'PASS'" type="success" size="mini">同意
|
||||
</el-tag>
|
||||
<el-tag v-if="task.extVariable.RESULT === 'BACK_TO_CLUB'" type="danger" size="mini">
|
||||
退回到协会
|
||||
</el-tag>
|
||||
<el-tag v-if="task.extVariable.RESULT === 'BACK_TO_UNION'" type="danger"
|
||||
size="mini">
|
||||
退回到分工会
|
||||
</el-tag>
|
||||
</template>
|
||||
</div>
|
||||
<el-descriptions-item label="申请时间">{{ task.finishTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理结果">
|
||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
|
||||
:value="task.ext.submitType"></dict-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" :span="3">
|
||||
{{ task.extVariable.approvalOpinion}}
|
||||
</el-descriptions>
|
||||
|
||||
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else>
|
||||
<el-descriptions-item label="办理用户">{{ task.taskFormData.userName
|
||||
}}({{task.taskFormData.loginName}})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理结果">
|
||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
|
||||
:value="task.ext.submitType"></dict-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="办理意见" v-if="!task.ext.isFirstTaskNode">{{
|
||||
task.taskFormData.opinion }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<slot></slot>
|
||||
|
||||
<snaker-chart ref="snakerChartRef"></snaker-chart>
|
||||
|
||||
</div>
|
||||
`,
|
||||
dicts: ["PROCESS_TASK_SUBMIT_TYPE"],
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
viewData: {}
|
||||
viewData: {},
|
||||
doneTasks: [],
|
||||
row: null
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 打开
|
||||
onOpen(row) {
|
||||
this.$axios.post("/platform/article/common/info", { id: row.businessKey }).then((res) => {
|
||||
this.row = row
|
||||
this.visible = true
|
||||
this.getInfo()
|
||||
this.getDoneTasks()
|
||||
},
|
||||
|
||||
// 获取申请信息
|
||||
getInfo() {
|
||||
this.$axios.post('/platform/article/common/info', {id: this.row.id}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.viewData = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 获取已办任务审批记录
|
||||
getDoneTasks() {
|
||||
this.$axios.post("/flow/common/doneTasks", {bizId: this.row.id}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.doneTasks = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 查看流程图
|
||||
openChart(){
|
||||
this.$refs.snakerChartRef.onOpenFull(this.row.instanceProcessDefineId,this.row.instanceId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,31 +1,24 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度">
|
||||
<el-date-picker v-model="pageForm.year" type="year" value-format="yyyy" placeholder="年度" style="width: 100%"></el-date-picker>
|
||||
<el-date-picker
|
||||
:clearable="true"
|
||||
v-model="pageForm.year"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="年度"
|
||||
style="width: 100%"
|
||||
></el-date-picker>
|
||||
</search-item>
|
||||
<search-item label="标题">
|
||||
<el-input v-model="pageForm.title" placeholder="标题" clearable></el-input>
|
||||
</search-item>
|
||||
<search-item label="所属工会">
|
||||
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable style="width: 100%">
|
||||
<el-option v-for="item in unionOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="所属单位:">
|
||||
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位" filterable clearable style="width: 100%">
|
||||
<el-option v-for="item in unitOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="投稿来源:">
|
||||
<el-select v-model="pageForm.origin" placeholder="请选择投稿来源" filterable clearable style="width: 100%">
|
||||
<el-option v-for="item in dict.type.ARTICLE_ORIGIN" :key="item.code" :label="item.label" :value="item.code"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
<el-card shadow="never">
|
||||
@@ -42,25 +35,20 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column prop="userName" label="投稿人姓名"></el-table-column>
|
||||
<el-table-column prop="unitName" label="投稿人单位"></el-table-column>
|
||||
<el-table-column prop="unionName" label="投稿人工会"></el-table-column>
|
||||
<el-table-column prop="clubName" label="投稿人协会"></el-table-column>
|
||||
<el-table-column prop="origin" label="投稿来源">
|
||||
<template slot-scope="{row}">{{dict.type.ARTICLE_ORIGIN.find(v=>v.code===row.origin)?.label}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="submitTime" label="投稿时间"></el-table-column>
|
||||
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="操作" fixed="right">
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="onOpen(row.id)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.processInstanceTaskStatus==='ACTIVE'" @click="openApproval(row)" size="mini" type="primary">
|
||||
审核
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
size="small"></enum-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="200px" fixed="right">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
|
||||
@click="openRevoke(row.processInstanceTaskId)"
|
||||
size="mini"
|
||||
type="danger"
|
||||
>
|
||||
撤回
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -68,31 +56,27 @@ layout("/layouts/platform.html"){
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<template #public>
|
||||
<info ref="infoRef"></info>
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">{{formData.processInstanceNodeName}}</div>
|
||||
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
|
||||
<el-form-item label="审核意见" prop="approvalOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.approvalOpinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
<el-form-item label="发布网址" prop="publishLink">
|
||||
<el-input v-model="formData.publishLink" placeholder="请输入网址" clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button plain @click="$refs.guava.index()">取消</el-button>
|
||||
<el-button type="danger" @click="doApproval('BACK_TO_START')">退回到投稿人</el-button>
|
||||
<el-button type="danger" @click="doApproval('BACK_TO_UNION')"
|
||||
v-if="currentRow.origin === 'ARTICLE_ORIGIN_UNION'">退回到分工会
|
||||
</el-button>
|
||||
<el-button type="danger" @click="doApproval('BACK_TO_CLUB')"
|
||||
v-if="currentRow.origin === 'ARTICLE_ORIGIN_CLUB'">退回到协会
|
||||
</el-button>
|
||||
<el-button type="danger" @click="doApproval('REJECT')">拒绝发布</el-button>
|
||||
<el-button type="primary" @click="doApproval('PASS')">同意发布</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
<template #edit>
|
||||
<article-info ref="articleInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">
|
||||
{{formData.taskName}}
|
||||
</div>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":"
|
||||
class="flow-task-form">
|
||||
<el-form-item label="审批意见" prop="tf_opinion"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
|
||||
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</article-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
@@ -104,88 +88,68 @@ layout("/layouts/platform.html"){
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
dicts: ["ARTICLE_ORIGIN"],
|
||||
components: { info },
|
||||
components: {
|
||||
"article-info": ARTICLE_INFO
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
approval: false
|
||||
},
|
||||
showApprovalForm: false,
|
||||
currentRow: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOpen(id) {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(id)
|
||||
})
|
||||
},
|
||||
openApproval(row) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.currentRow = row
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
this.formData = row.approvalParam
|
||||
this.showApprovalForm = true
|
||||
// 查看
|
||||
openView(row) {
|
||||
this.$refs.guava.edit(()=>{
|
||||
this.showApprovalForm = false
|
||||
this.$refs.articleInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
|
||||
// 动态审核
|
||||
doApproval(result) {
|
||||
this.formData.bpmTaskApprovalType = "DYNAMIC"
|
||||
if (result === 'BACK_TO_START') {
|
||||
this.$confirm('请确认投稿人重新提交后是否需要重新走审批流程?', '提示', {
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: '需要',
|
||||
cancelButtonText: '不需要',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.submitApproval(result, true);
|
||||
}).catch((action) => {
|
||||
if (action === 'cancel') {
|
||||
this.submitApproval(result, false);
|
||||
// 审核
|
||||
openAudit(row) {
|
||||
this.$refs.guava.edit(()=>{
|
||||
this.showApprovalForm = true
|
||||
this.formData = {
|
||||
processTaskId: row.taskId,
|
||||
taskName: row.curTaskName
|
||||
}
|
||||
this.$refs.articleInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
|
||||
// 提交
|
||||
handleTaskAction(val) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/executeTask", {
|
||||
data: JSON.stringify({
|
||||
...this.formData,
|
||||
submitType: val
|
||||
})
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.submitApproval(result, false);
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
submitApproval(result, processAgain) {
|
||||
this.$refs.approvalFormRef.validate((valid) => {
|
||||
if (valid) {
|
||||
if(result==="PASS" && (!this.formData.publishLink || this.formData.publishLink.length === 0)){
|
||||
this.$message.warning("同意发布请填写发布网址")
|
||||
return
|
||||
}
|
||||
this.$axios
|
||||
.post("/platform/article/examine/approval", {
|
||||
approval: JSON.stringify(this.formData),
|
||||
result: result,
|
||||
processAgain: processAgain,
|
||||
publishLink: this.formData.publishLink
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index();
|
||||
this.$message.success(res.msg);
|
||||
this.doSearch();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
openRevoke(taskId) {
|
||||
// 撤回
|
||||
onRevoke(row) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/article/clubApproval/revoke", { taskId }).then((res) => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
@@ -193,10 +157,9 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
created() {
|
||||
this.$businessTool.listUnit().then((res) => (this.unitOptions = res))
|
||||
this.$businessTool.listUnion().then((res) => (this.unionOptions = res))
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
|
||||
@@ -36,16 +36,13 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column label="操作" fixed="right" width="300px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="onOpen(row.id)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskKey === 'apply' || !row.instanceId" @click="onEdit(row)" size="mini"
|
||||
type="primary">
|
||||
编辑
|
||||
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onEdit(row)"
|
||||
size="mini" type="primary">编辑
|
||||
</el-button>
|
||||
<el-button v-if="['waiting'].includes(row.flow_status)" size="mini" type="danger"
|
||||
@click="onRevoke(row.id)">撤销
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
<el-button v-if="row.taskKey === 'apply' || !row.instanceId"
|
||||
@click="onDelete(row.id)" size="mini" type="danger">
|
||||
删除
|
||||
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onDelete(row.id)"
|
||||
size="mini" type="danger">删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -54,7 +51,7 @@ layout("/layouts/platform.html"){
|
||||
</el-card>
|
||||
|
||||
<template #view>
|
||||
<info ref="infoRef"></info>
|
||||
<article-info ref="infoRef"></article-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
@@ -66,49 +63,46 @@ layout("/layouts/platform.html"){
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
components: { info },
|
||||
components: {
|
||||
"article-info": ARTICLE_INFO
|
||||
},
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
methods: {
|
||||
// 查看
|
||||
onOpen(id) {
|
||||
this.$refs.guava.view(() => {
|
||||
this.$refs.infoRef.onOpen(id)
|
||||
})
|
||||
},
|
||||
// 编辑
|
||||
onEdit(row) {
|
||||
window.open("/flow/common/approval/form?taskId=" + (row.taskId || "") + "&instanceId=" + (row.instanceId || "") + "&businessId=" + row.id
|
||||
+ "&defineKey=XWTG")
|
||||
|
||||
// $.pjax({
|
||||
// url: "/platform/article/write?id=" + businessNo + "&taskId=" + taskId + "&instanceId=" + instanceId,
|
||||
// container: "#sub-app-container-main-content",
|
||||
// maxCacheLength: 0,
|
||||
// push: false,
|
||||
// replace: true,
|
||||
// fragment: "#sub-app-container-main-content",
|
||||
// timeout: 8000
|
||||
// })
|
||||
window.location.href = '/platform/article/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id
|
||||
},
|
||||
onRevoke(id) {
|
||||
this.$confirm("您确定要撤销申请吗?", "提示", {
|
||||
// 撤回
|
||||
onRevoke(row) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/article/write/revokeApply", { id }).then((resp) => {
|
||||
this.$message.success(resp.msg)
|
||||
this.doSearch()
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.startTaskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 删除
|
||||
onDelete(id) {
|
||||
this.$confirm("您确定要删除吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/article/mine/delete", { id: id }).then((res) => {
|
||||
this.$axios.post("/platform/article/mine/delete", {id: id}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.doSearch()
|
||||
this.$message.success(res.msg)
|
||||
|
||||
@@ -48,10 +48,9 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column prop="origin" label="投稿来源">
|
||||
<template slot-scope="{row}">{{dict.type.ARTICLE_ORIGIN.find(v=>v.code===row.origin)?.label}}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="100px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="onOpen(row.id)" size="mini" type="primary">查看</el-button>
|
||||
<el-button @click="onOpen(row)" size="mini" type="primary">查看</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -59,7 +58,7 @@ layout("/layouts/platform.html"){
|
||||
</el-card>
|
||||
|
||||
<template #public>
|
||||
<info ref="infoRef"></info>
|
||||
<article-info ref="articleInfoRef"></article-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
@@ -72,7 +71,9 @@ layout("/layouts/platform.html"){
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
dicts: ["ARTICLE_ORIGIN"],
|
||||
components: { info },
|
||||
components: {
|
||||
"article-info": ARTICLE_INFO
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
@@ -84,9 +85,9 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOpen(id) {
|
||||
onOpen(row) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(id)
|
||||
this.$refs.articleInfoRef.onOpen(row)
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
+74
-63
@@ -8,12 +8,12 @@ layout("/layouts/platform.html"){
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度">
|
||||
<el-date-picker
|
||||
:clearable="true"
|
||||
v-model="pageForm.year"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="年度"
|
||||
style="width: 100%"
|
||||
:clearable="true"
|
||||
v-model="pageForm.year"
|
||||
type="year"
|
||||
value-format="yyyy"
|
||||
placeholder="年度"
|
||||
style="width: 100%"
|
||||
></el-date-picker>
|
||||
</search-item>
|
||||
<search-item label="标题">
|
||||
@@ -36,7 +36,7 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column prop="unitName" label="投稿人单位"></el-table-column>
|
||||
<el-table-column prop="unionName" label="投稿人工会"></el-table-column>
|
||||
<el-table-column prop="submitTime" label="投稿时间"></el-table-column>
|
||||
<el-table-column prop="taskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
<template slot-scope="{row}">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
@@ -45,17 +45,10 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="200px" fixed="right">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="onOpen(row.id)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskState === 10" @click="openApproval(row)" size="mini" type="primary">
|
||||
审核
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
|
||||
@click="openRevoke(row.processInstanceTaskId)"
|
||||
size="mini"
|
||||
type="danger"
|
||||
>
|
||||
撤回
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -63,27 +56,27 @@ layout("/layouts/platform.html"){
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<el-dialog title="" :visible.sync="showApprovalForm" width="90%">
|
||||
<info ref="infoRef"></info>
|
||||
<el-row type="flex">
|
||||
<flow-form-button :task_id="taskId"></flow-form-button>
|
||||
|
||||
<!-- <el-button plain @click="$refs.guava.index()">取消</el-button>-->
|
||||
<!-- <el-button type="danger" @click="doApproval('BACK')">退回修改</el-button>-->
|
||||
<!-- <el-button type="primary" @click="doApproval('PASS')">同意</el-button>-->
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
|
||||
<template #public>
|
||||
<div v-if="showApprovalForm">
|
||||
<el-row type="flex">
|
||||
<flow-form-button :task_id="taskId"></flow-form-button>
|
||||
|
||||
<!-- <el-button plain @click="$refs.guava.index()">取消</el-button>-->
|
||||
<!-- <el-button type="danger" @click="doApproval('BACK')">退回修改</el-button>-->
|
||||
<!-- <el-button type="primary" @click="doApproval('PASS')">同意</el-button>-->
|
||||
</el-row>
|
||||
</div>
|
||||
<template #edit>
|
||||
<article-info ref="articleInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">
|
||||
{{formData.taskName}}
|
||||
</div>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":"
|
||||
class="flow-task-form">
|
||||
<el-form-item label="审批意见" prop="tf_opinion"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
|
||||
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</article-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
@@ -95,51 +88,68 @@ layout("/layouts/platform.html"){
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
components: { info },
|
||||
components: {
|
||||
"article-info": ARTICLE_INFO
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
approval: false
|
||||
},
|
||||
showApprovalForm: false,
|
||||
taskId: ""
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOpen(id) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(id)
|
||||
// 查看
|
||||
openView(row) {
|
||||
this.$refs.guava.edit(()=>{
|
||||
this.showApprovalForm = false
|
||||
this.$refs.articleInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
openApproval(row) {
|
||||
window.open("/flow/common/approval/form?taskId=" + row.taskId + "&instanceId=" + row.instanceId + "&businessId=" + row.businessNo)
|
||||
},
|
||||
doApproval(approvalType) {
|
||||
this.formData.bpmTaskApprovalType = approvalType
|
||||
this.$refs.approvalFormRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post("/platform/article/branchUnionApproval/approval", {
|
||||
approval: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
|
||||
// 审核
|
||||
openAudit(row) {
|
||||
this.$refs.guava.edit(()=>{
|
||||
this.showApprovalForm = true
|
||||
this.formData = {
|
||||
processTaskId: row.taskId,
|
||||
taskName: row.curTaskName
|
||||
}
|
||||
this.$refs.articleInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
openRevoke(taskId) {
|
||||
|
||||
// 提交
|
||||
handleTaskAction(val) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/executeTask", {
|
||||
data: JSON.stringify({
|
||||
...this.formData,
|
||||
submitType: val
|
||||
})
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 撤回
|
||||
onRevoke(row) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/article/branchUnionApproval/revoke", { taskId }).then((res) => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
@@ -147,6 +157,7 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
|
||||
@@ -64,8 +64,9 @@ layout("/layouts/platform.html"){
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button type="primary" plain @click="doSave">保存</el-button>
|
||||
<el-button type="primary" @click="doSubmit">提交</el-button>
|
||||
<el-button type="primary" plain @click="onSave">保存</el-button>
|
||||
<el-button type="primary" @click="onSubmit" v-if="!taskId">提交</el-button>
|
||||
<el-button type="primary" @click="onSubmitAgain" v-else>提交</el-button>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</div>
|
||||
@@ -85,9 +86,8 @@ layout("/layouts/platform.html"){
|
||||
store,
|
||||
data() {
|
||||
return {
|
||||
id: GetQueryString("id"),
|
||||
bizId: GetQueryString("bizId"),
|
||||
taskId: GetQueryString("taskId"),
|
||||
instanceId: GetQueryString("instanceId"),
|
||||
formData: {},
|
||||
formRules: {
|
||||
title: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||
@@ -102,7 +102,8 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
doSave() {
|
||||
// 保存
|
||||
onSave() {
|
||||
this.$refs.formRef.validateField(["title"], (errMsg) => {
|
||||
if (errMsg) {
|
||||
this.$message.warning("请填写标题")
|
||||
@@ -117,7 +118,9 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
})
|
||||
},
|
||||
doSubmit() {
|
||||
|
||||
// 提交
|
||||
onSubmit() {
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios.post("/platform/article/write/submit", {
|
||||
@@ -134,6 +137,26 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
|
||||
// 重新提交
|
||||
onSubmitAgain() {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post('/platform/article/write/submitAgain', {
|
||||
info: JSON.stringify(this.formData),
|
||||
taskId: GetQueryString("taskId")
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("提交成功")
|
||||
window.location.href = '/platform/article/mine'
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
checkPermission() {
|
||||
this.$axios.post("/platform/article/write/checkPermission").then((res) => {
|
||||
if (res.code === 0) {
|
||||
@@ -143,8 +166,8 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
|
||||
init() {
|
||||
if (this.id) {
|
||||
this.$axios.post("/platform/article/write/get", {id: this.id}).then((res) => {
|
||||
if (this.bizId) {
|
||||
this.$axios.post("/platform/article/write/get", {id: this.bizId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.formData = res.data
|
||||
}
|
||||
|
||||
@@ -1,183 +0,0 @@
|
||||
<div id="artile_write">
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":" class="flow-task-form">
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="投稿人姓名">{{formData.userName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="投稿人工号">{{formData.loginName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="投稿人单位">{{formData.unitName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="投稿人工会">{{formData.unionName}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="投稿来源" :span="2">
|
||||
<el-form-item prop="origin" label="投稿来源" label-width="0">
|
||||
<el-radio-group v-model="formData.origin" size="small">
|
||||
<el-radio border v-for="item in origins" :label="item.code" :key="item.code">{{item.name}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="投稿人协会" v-if="formData.origin === 'ARTICLE_ORIGIN_CLUB'">
|
||||
<el-form-item prop="clubId" label="投稿人协会" v-if="formData.origin === 'ARTICLE_ORIGIN_CLUB'">
|
||||
<el-select v-model="formData.clubId" placeholder="请选择" style="width: 100%">
|
||||
<el-option v-for="item in permission?.clubs" :key="item.id" :label="item.clubName" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="投稿人联系方式" :span="2">
|
||||
<el-form-item prop="title" label="投稿标题">
|
||||
<el-input v-model="formData.title" maxlength="100" show-word-limit placeholder="请输入标题"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="投稿人联系方式" :span="2">
|
||||
<el-form-item prop="mobile" label="投稿人联系方式">
|
||||
<el-input v-model="formData.mobile" placeholder="请输入投稿人联系方式"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="修改人联系方式" :span="2">
|
||||
<el-form-item prop="mobile2" label="修改人联系方式">
|
||||
<el-input v-model="formData.mobile2" placeholder="请输入修改人联系方式"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="投稿说明" :span="2">
|
||||
<el-form-item prop="excerpt" label="投稿说明">
|
||||
<el-input v-model="formData.excerpt" type="textarea" maxlength="500" show-word-limit placeholder="请输入投稿说明"></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="稿件" :span="2">
|
||||
<file-upload
|
||||
:value.sync="formData.files"
|
||||
:upload_number="5"
|
||||
upload_result_category="array"
|
||||
complete_result
|
||||
upload_mode="drag"
|
||||
></file-upload>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-form>
|
||||
<snaker-flow-task-form-action @task-action="handleTaskAction" @save-draft="handleSaveDraft" @cancel="handleCancel"></snaker-flow-task-form-action>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: "#artile_write",
|
||||
store,
|
||||
dicts: ["ARTICLE_ORIGIN"],
|
||||
computed: {
|
||||
origins() {
|
||||
if (this.dict?.type?.ARTICLE_ORIGIN && this.permission && this.permission.roles) {
|
||||
return this.dict.type.ARTICLE_ORIGIN.filter((item) => this.permission && this.permission.roles.includes(item.code))
|
||||
}
|
||||
return []
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
id: GetQueryString("businessId"),
|
||||
taskId: GetQueryString("taskId"),
|
||||
instanceId: GetQueryString("instanceId"),
|
||||
formData: {},
|
||||
formRules: {
|
||||
title: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
excerpt: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
clubId: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
files: [{ required: false, message: "必填", trigger: ["change", "blur"] }],
|
||||
origin: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
mobile: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
mobile2: [{ required: true, message: "必填", trigger: ["change", "blur"] }]
|
||||
},
|
||||
permission: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init() {
|
||||
if (this.id) {
|
||||
this.$axios.post("/platform/article/write/get", { id: this.id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.formData = res.data
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const { username, loginname, id, unit, union, mobile } = this.$store.state.user
|
||||
this.formData = {
|
||||
userName: username,
|
||||
loginName: loginname,
|
||||
userId: id,
|
||||
unitId: unit?.id,
|
||||
unitName: unit?.name,
|
||||
unionId: union?.id,
|
||||
unionName: union?.name,
|
||||
mobile: mobile,
|
||||
mobile2: mobile
|
||||
}
|
||||
}
|
||||
},
|
||||
checkPermission() {
|
||||
this.$axios.post("/platform/article/write/checkPermission").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.permission = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
handleTaskAction(val) {
|
||||
console.log(val)
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post("/flow/common/startInstanceAndExecute", {
|
||||
...val,
|
||||
bizData: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("操作成功")
|
||||
// 发送完成消息
|
||||
window.parent.postMessage(
|
||||
{
|
||||
type: "task-complete"
|
||||
},
|
||||
"*"
|
||||
)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
handleSaveDraft() {
|
||||
this.$message.success("保存成功")
|
||||
this.$refs.formRef.validateField(["title"], (errMsg) => {
|
||||
if (errMsg) {
|
||||
this.$message.warning("请填写标题")
|
||||
return
|
||||
}
|
||||
this.$axios
|
||||
.post("/flow/common/startInstance", {
|
||||
...val,
|
||||
bizData: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("操作成功")
|
||||
// 发送完成消息
|
||||
window.parent.postMessage(
|
||||
{
|
||||
type: "task-complete"
|
||||
},
|
||||
"*"
|
||||
)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
handleCancel() {}
|
||||
},
|
||||
created() {
|
||||
this.init()
|
||||
this.checkPermission()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
@@ -1,6 +1,6 @@
|
||||
const basicForm = {
|
||||
template: /*language=HTML*/ `
|
||||
<el-dialog :visible.sync="dialogVisible" title="基础设置">
|
||||
<el-dialog :visible.sync="dialogVisible" title="基础设置" width="70%">
|
||||
<div style="overflow-y: auto">
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="150px">
|
||||
<el-form-item label="类型" prop="category">
|
||||
@@ -198,7 +198,7 @@ const basicForm = {
|
||||
`,
|
||||
dicts: ["ACTIVITY_QSV_CATEGORY", "ACTIVITY_QSV_MODE", "ACTIVITY_QSV_REPEAT_MODE", "ACTIVITY_QSV_SCORE_MODE"],
|
||||
components: {
|
||||
"drawer-user-scope": httpVueLoader("/components/plugins/DrawerUserScope.vue")
|
||||
"drawer-user-scope": httpVueLoader("/components/module/activity/DrawerUserScope.vue")
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
@@ -31,8 +31,9 @@ layout("/layouts/platform.html"){
|
||||
</el-table-column>
|
||||
<el-table-column label="开始时间" prop="startTime" sortable></el-table-column>
|
||||
<el-table-column label="结束时间" prop="endTime" sortable></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="300px">
|
||||
<el-table-column label="操作" fixed="right" width="450px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="primary" @click="openQrCode(row.id)">二维码</el-button>
|
||||
<el-button size="mini" type="primary" @click="openEdit(row)">编辑</el-button>
|
||||
<el-button size="mini" type="primary" @click="openSubject(row.id)">题目设置</el-button>
|
||||
<el-button size="mini" type="danger" @click="onDelete(row.id)">删除</el-button>
|
||||
@@ -48,6 +49,9 @@ layout("/layouts/platform.html"){
|
||||
</guava>
|
||||
|
||||
<basic-form ref="basicFormRef" @refresh="pageData"></basic-form>
|
||||
|
||||
<qr-code-plus :url="signatureAddress" ref="qrCodePlusRef"></qr-code-plus>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
@@ -62,19 +66,30 @@ layout("/layouts/platform.html"){
|
||||
"subject-form": subjectForm
|
||||
},
|
||||
data() {
|
||||
return {}
|
||||
return {
|
||||
signatureAddress: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 编辑
|
||||
openEdit(row) {
|
||||
this.$refs.basicFormRef.onOpen(row.id)
|
||||
},
|
||||
|
||||
// 打开二维码
|
||||
openQrCode(id) {
|
||||
this.signatureAddress = '?id=' + id
|
||||
this.$refs.qrCodePlusRef.openDialog()
|
||||
},
|
||||
|
||||
// 题目设置
|
||||
openSubject(id) {
|
||||
this.$refs.guava.edit()
|
||||
this.$nextTick(() => {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.$refs.subjectFormRef.onOpen(id)
|
||||
})
|
||||
// this.$refs.subjectFormRef.onOpen(id)
|
||||
},
|
||||
|
||||
// 删除
|
||||
onDelete(id) {
|
||||
this.$confirm("您确认删除吗, 是否继续?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
|
||||
@@ -46,8 +46,7 @@ const subjectForm = {
|
||||
</div>
|
||||
<div v-if="subject.type === 'checkbox'">
|
||||
最大选择数:
|
||||
<el-input-number v-model="subject.maxMulti"
|
||||
placeholder="最多可选数量"></el-input>
|
||||
<el-input-number v-model="subject.maxMulti" placeholder="最多可选数量"></el-input-number>
|
||||
</div>
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="subject.hint"-->
|
||||
|
||||
@@ -22,6 +22,7 @@ const txtImport = {
|
||||
<p>B.选项B</p>
|
||||
<p>C.选项C</p>
|
||||
<p>D.选项D</p>
|
||||
<p style="margin-top: 10px;"><b>正确答案数量大于1时自动判断为多选题</b></p>
|
||||
</div>
|
||||
</div>
|
||||
<el-button type="text" icon="el-icon-question" size="small">格式说明</el-button>
|
||||
@@ -34,17 +35,18 @@ const txtImport = {
|
||||
v-model="inputText"
|
||||
placeholder="请粘贴题目内容,支持格式如:
|
||||
|
||||
1.单选题标题?(A)
|
||||
A.选项A
|
||||
B.选项B
|
||||
C.选项C
|
||||
D.选项D
|
||||
1.在()中,中国工人阶级第一次以独立的姿志登上政治舞台。(A)
|
||||
A.五四运动
|
||||
B.五州运动
|
||||
C.二七罢工
|
||||
D.安源路矿工人大要工
|
||||
|
||||
2.多选题标题?(ABC)
|
||||
A.选项A
|
||||
B.选项B
|
||||
C.选项C
|
||||
D.选项D"
|
||||
2.充分调动广大职工群众的( ),积极投身全面推进强国建设、民族复兴的伟大事业。(ABC)
|
||||
A.积极性
|
||||
B.主动性
|
||||
C.创造性
|
||||
D.创新性
|
||||
E.先进性"
|
||||
></textarea>
|
||||
</div>
|
||||
<div class="txt-import-action-buttons">
|
||||
@@ -117,7 +119,7 @@ D.选项D"
|
||||
this.parsedQuestions = [];
|
||||
this.statsText = '';
|
||||
},
|
||||
|
||||
|
||||
clearInput() {
|
||||
this.$confirm('确定要清空当前输入内容吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
@@ -128,7 +130,7 @@ D.选项D"
|
||||
this.$message.success('已清空输入内容');
|
||||
}).catch(() => {});
|
||||
},
|
||||
|
||||
|
||||
parseQuestions() {
|
||||
const input = this.inputText.trim();
|
||||
if (!input) {
|
||||
@@ -140,11 +142,11 @@ D.选项D"
|
||||
setTimeout(() => {
|
||||
try {
|
||||
const questionsGroups = this.splitIntoQuestions(input);
|
||||
|
||||
|
||||
if (questionsGroups.length === 0) {
|
||||
throw new Error('未识别到有效题目,请检查格式');
|
||||
}
|
||||
|
||||
|
||||
const parsedQuestions = [];
|
||||
questionsGroups.forEach((group, index) => {
|
||||
const result = this.parseOneQuestion(group, index + 1);
|
||||
@@ -152,10 +154,10 @@ D.选项D"
|
||||
parsedQuestions.push(result);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
this.parsedQuestions = parsedQuestions;
|
||||
this.updateStats();
|
||||
|
||||
|
||||
if (parsedQuestions.length === 0) {
|
||||
this.$message.warning('没有成功解析任何题目,请检查格式');
|
||||
} else if (parsedQuestions.length < questionsGroups.length) {
|
||||
@@ -170,12 +172,12 @@ D.选项D"
|
||||
}
|
||||
}, 300);
|
||||
},
|
||||
|
||||
|
||||
splitIntoQuestions(text) {
|
||||
const lines = text.split('\n').map(line => line.trim()).filter(line => line);
|
||||
const questions = [];
|
||||
let currentQuestion = [];
|
||||
|
||||
|
||||
lines.forEach(line => {
|
||||
if (/^\d+\./.test(line)) {
|
||||
if (currentQuestion.length > 0) {
|
||||
@@ -185,37 +187,37 @@ D.选项D"
|
||||
}
|
||||
currentQuestion.push(line);
|
||||
});
|
||||
|
||||
|
||||
if (currentQuestion.length > 0) {
|
||||
questions.push(currentQuestion.join('\n'));
|
||||
}
|
||||
|
||||
|
||||
return questions;
|
||||
},
|
||||
|
||||
|
||||
parseOneQuestion(questionText, sortNum) {
|
||||
const lines = questionText.split('\n').map(line => line.trim()).filter(line => line);
|
||||
|
||||
|
||||
const titleLine = lines[0];
|
||||
const titleMatch = titleLine.match(/^(\d+)\.(.+?)[((]([A-Z]+)[))]$/);
|
||||
|
||||
|
||||
if (!titleMatch) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
const questionNumber = titleMatch[1];
|
||||
const title = titleMatch[2].trim();
|
||||
const correctAnswerLetters = titleMatch[3].split('');
|
||||
|
||||
|
||||
const options = [];
|
||||
for (let i = 1; i < lines.length; i++) {
|
||||
const line = lines[i];
|
||||
const optionMatch = line.match(/^([A-Z])[..、\s](.+)$/);
|
||||
|
||||
|
||||
if (optionMatch) {
|
||||
const optionLetter = optionMatch[1];
|
||||
const optionText = optionMatch[2].trim();
|
||||
|
||||
|
||||
options.push({
|
||||
letter: optionLetter,
|
||||
text: optionLetter + '. ' + optionText,
|
||||
@@ -223,11 +225,11 @@ D.选项D"
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (options.length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
return this.createQuestionObject({
|
||||
questionNumber,
|
||||
title,
|
||||
@@ -237,18 +239,18 @@ D.选项D"
|
||||
isMultiple: correctAnswerLetters.length > 1
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
createQuestionObject(data) {
|
||||
const questionId = this.generateId();
|
||||
const formattedOptions = [];
|
||||
const correctOptionIds = [];
|
||||
|
||||
|
||||
data.options.forEach((option, index) => {
|
||||
const optionId = this.generateId();
|
||||
if (option.isCorrect) {
|
||||
correctOptionIds.push(optionId);
|
||||
}
|
||||
|
||||
|
||||
formattedOptions.push({
|
||||
id: optionId,
|
||||
subjectId: questionId,
|
||||
@@ -260,7 +262,7 @@ D.选项D"
|
||||
sortNum: index + 1
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
return {
|
||||
id: questionId,
|
||||
activityId: this.activityId,
|
||||
@@ -282,22 +284,22 @@ D.选项D"
|
||||
return (Math.random() * 16 | 0).toString(16);
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
getCorrectAnswerText(question) {
|
||||
if (!question || !question.options || !Array.isArray(question.options)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
const correctOptions = question.options.filter(opt => opt.isCorrect);
|
||||
if (correctOptions.length === 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
return correctOptions.map(opt => opt.text).join('、');
|
||||
},
|
||||
|
||||
updateStats() {
|
||||
this.statsText = '已解析 ' + this.parsedQuestions.length + ' 道题目 | ' +
|
||||
this.statsText = '已解析 ' + this.parsedQuestions.length + ' 道题目 | ' +
|
||||
'总分值 ' + (this.parsedQuestions.length * 10) + ' 分 | ';
|
||||
},
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const PROPOSAL_INFO_COMPONENT = {
|
||||
const PROPOSAL_INFO = {
|
||||
name: "ProposalInfo",
|
||||
/*language=HTML*/
|
||||
template: `
|
||||
@@ -67,265 +67,119 @@ const PROPOSAL_INFO_COMPONENT = {
|
||||
</el-table>
|
||||
</template>
|
||||
|
||||
<div class="process-title">
|
||||
附议人信息
|
||||
</div>
|
||||
<el-table :data="viewData.seconders" size="small">
|
||||
<el-table-column label="姓名" prop="createVariable.userName"></el-table-column>
|
||||
<el-table-column label="工号" prop="createVariable.loginName"></el-table-column>
|
||||
<el-table-column label="单位" prop="createVariable.unitName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="分工会" prop="createVariable.unionName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="代表团" prop="createVariable.delegationName"></el-table-column>
|
||||
<el-table-column label="邀请时间" prop="createdOn"></el-table-column>
|
||||
<el-table-column label="附议时间" prop="endOn"></el-table-column>
|
||||
<el-table-column label="附议结果" prop="extVariable.bpmTaskApprovalType">
|
||||
<template slot-scope="{row}">
|
||||
<span v-if="row.extVariable && row.extVariable.bpmTaskApprovalType">
|
||||
<el-tag size="mini" type="success"
|
||||
v-if="row.extVariable.bpmTaskApprovalType==='PASS'">同意</el-tag>
|
||||
<el-tag size="mini" type="danger"
|
||||
v-if="row.extVariable.bpmTaskApprovalType==='REJECT'">拒绝</el-tag>
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="签字" prop="extVariable.bpmTaskApprovalType">-->
|
||||
<!-- <template slot-scope="{row}">-->
|
||||
<!-- <el-image :src="row.extVariable.approvalSignature" v-if="row.extVariable && row.extVariable.approvalSignature"></el-image>-->
|
||||
<!-- </template>-->
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<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">
|
||||
<el-descriptions :column="3" border v-for="task in nodeTask.tasks" :key="task.id" style="margin-bottom: 10px">
|
||||
<el-descriptions-item label="审核人">{{ task.actualOwnerLoginName + '-' +
|
||||
task.actualOwnerUserName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ task.endOn}}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">
|
||||
<div v-if="task.extVariable">
|
||||
<el-tag type="success" size="mini"
|
||||
v-if="task.extVariable.bpmTaskApprovalType === 'PASS'">同意
|
||||
</el-tag>
|
||||
<el-tag type="danger" size="mini"
|
||||
v-if="task.extVariable.bpmTaskApprovalType === 'BACK'">退回重新填写
|
||||
</el-tag>
|
||||
<el-tag type="danger" size="mini"
|
||||
v-if="task.extVariable.bpmTaskApprovalType === 'REJECT'">建议撤销
|
||||
</el-tag>
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" :span="3">{{ task.extVariable.approvalOpinion}}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="签字" :span="3">-->
|
||||
<!-- <el-image :src="task.extVariable.approvalSignature"-->
|
||||
<!-- v-if="task.extVariable && task.extVariable.approvalSignature"-->
|
||||
<!-- class="signature-image"></el-image>-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
</el-descriptions>
|
||||
</div>
|
||||
<div v-if="nodeTask.nodeCode === 60">
|
||||
<el-descriptions :column="3" border v-for="task in nodeTask.tasks" :key="task.id">
|
||||
<el-descriptions-item label="审核人">{{ task.actualOwnerLoginName + '-' +
|
||||
task.actualOwnerUserName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ task.endOn}}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">
|
||||
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT"
|
||||
:value="task.extVariable.caseFilingResult">
|
||||
</dict-tag>
|
||||
</el-descriptions-item>
|
||||
<template
|
||||
v-if="task.extVariable.caseFilingResult!=='NOT' && task.extVariable.caseFilingResult!==''">
|
||||
<el-descriptions-item label="主办单位" :span="3">{{ task.extVariable.hostUnit}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="协办单位" :span="3">{{
|
||||
task.extVariable.helpUnits.join(',')}}
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
<el-descriptions-item label="审核意见" :span="3">{{ task.extVariable.approvalOpinion}}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="签字">-->
|
||||
<!-- <el-image :src="task.extVariable.approvalSignature"-->
|
||||
<!-- v-if="task.extVariable && task.extVariable.approvalSignature"-->
|
||||
<!-- class="signature-image"></el-image>-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
</el-descriptions>
|
||||
</div>
|
||||
|
||||
<div v-if="nodeTask.nodeCode === 63">
|
||||
<el-descriptions :column="3" border v-for="task in nodeTask.tasks" :key="task.id" style="margin-bottom: 10px">
|
||||
<el-descriptions-item label="承办单位">
|
||||
{{ task.createVariable.underTakeName}}
|
||||
({{ task.createVariable.isMaster ? '主办' : '协办'}})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核人">{{ task.actualOwnerLoginName + '-' +
|
||||
task.actualOwnerUserName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ task.endOn}}</el-descriptions-item>
|
||||
<el-descriptions-item label="能否承办" :span="3">
|
||||
{{task.extVariable.canTake}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核意见" :span="3">{{ task.extVariable.approvalOpinion}}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
|
||||
<div v-if="nodeTask.nodeCode === 70">
|
||||
<el-descriptions :column="3" border v-for="task in nodeTask.tasks" :key="task.id" style="margin-bottom: 10px;">
|
||||
<el-descriptions-item label="审核人">{{ task.actualOwnerLoginName + '-' +
|
||||
task.actualOwnerUserName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审核时间">{{ task.endOn}}</el-descriptions-item>
|
||||
<el-descriptions-item label="审核结果">
|
||||
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT"
|
||||
:value="task.extVariable.caseFilingResult">
|
||||
</dict-tag>
|
||||
</el-descriptions-item>
|
||||
<template
|
||||
v-if="task.extVariable.caseFilingResult!=='NOT' && task.extVariable.caseFilingResult!==''">
|
||||
<el-descriptions-item label="主办单位" :span="3">{{ task.extVariable.hostUnit}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="协办单位" :span="3">{{
|
||||
task.extVariable.helpUnits.join(',')}}
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
<el-descriptions-item label="审核意见" :span="3">{{ task.extVariable.approvalOpinion}}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="签字">-->
|
||||
<!-- <el-image :src="task.extVariable.approvalSignature"-->
|
||||
<!-- v-if="task.extVariable && task.extVariable.approvalSignature"-->
|
||||
<!-- class="signature-image"></el-image>-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
</el-descriptions>
|
||||
</div>
|
||||
|
||||
<div v-if="nodeTask.nodeCode === 80">
|
||||
<el-descriptions :column="3" border v-if="!hide_slave" v-for="task in nodeTask.tasks"
|
||||
:key="task.id" style="margin-bottom: 10px">
|
||||
<el-descriptions-item label="承办单位">
|
||||
<span class="text-primary">
|
||||
{{ task.createVariable.underTakeName}}
|
||||
({{ task.createVariable.isMaster ? '主办' : '协办'}})
|
||||
</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="答复人">{{ task.actualOwnerLoginName + '-' +
|
||||
task.actualOwnerUserName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="答复时间">{{ task.endOn}}</el-descriptions-item>
|
||||
<el-descriptions-item label="答复内容" :span="3">
|
||||
<div v-html="task.extVariable.approvalOpinion"></div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-descriptions :column="3" border v-if="hide_slave"
|
||||
v-for="task in nodeTask.tasks.filter(v=>v.createVariable?.isMaster == true)"
|
||||
:key="task.id" style="margin-bottom: 10px">
|
||||
<el-descriptions-item label="承办单位">
|
||||
<span class="text-primary">
|
||||
{{ task.createVariable.underTakeName}}
|
||||
({{ task.createVariable.isMaster ? '主办' : '协办'}})
|
||||
</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="答复人">{{ task.actualOwnerLoginName + '-' +
|
||||
task.actualOwnerUserName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="答复时间">{{ task.endOn}}</el-descriptions-item>
|
||||
<el-descriptions-item label="答复内容" :span="3">
|
||||
<div v-html="task.extVariable.approvalOpinion"></div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
<div v-if="nodeTask.nodeCode === 90">
|
||||
<el-descriptions :column="3" border v-for="task in nodeTask.tasks" :key="task.id" style="margin-bottom: 10px;">
|
||||
<el-descriptions-item label="承办单位">
|
||||
{{ task.createVariable.underTakeName}}
|
||||
({{ task.createVariable.isMaster ? '主办' : '协办'}})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="校领导">{{ task.actualOwnerLoginName + '-' +
|
||||
task.actualOwnerUserName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审批时间">{{ task.endOn}}</el-descriptions-item>
|
||||
<el-descriptions-item label="审批结果" :span="3">
|
||||
<el-tag size="mini" type="success" v-if="task.extVariable.bpmTaskApprovalType==='PASS'">
|
||||
同意
|
||||
</el-tag>
|
||||
<el-tag size="mini" type="danger"
|
||||
v-if="task.extVariable.bpmTaskApprovalType==='BACK_OTHER_NODE'">退回重新答复
|
||||
</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="审批意见" :span="3">
|
||||
{{ task.extVariable.approvalOpinion}}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="签字">-->
|
||||
<!-- <el-image :src="task.extVariable.approvalSignature"-->
|
||||
<!-- v-if="task.extVariable && task.extVariable.approvalSignature"-->
|
||||
<!-- class="signature-image"></el-image>-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
</el-descriptions>
|
||||
</div>
|
||||
<div v-if="nodeTask.nodeCode === 100">
|
||||
<el-descriptions :column="3" border v-for="task in nodeTask.tasks" :key="task.id">
|
||||
<el-descriptions-item label="反馈人">{{ task.actualOwnerLoginName + '-' +
|
||||
task.actualOwnerUserName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="反馈时间">{{ task.endOn}}</el-descriptions-item>
|
||||
<el-descriptions-item label="反馈结果">{{ task.extVariable.feedBackScore}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="反馈意见" :span="3">{{ task.extVariable.approvalOpinion}}
|
||||
</el-descriptions-item>
|
||||
<!-- <el-descriptions-item label="签字">-->
|
||||
<!-- <el-image :src="task.extVariable.approvalSignature"-->
|
||||
<!-- v-if="task.extVariable && task.extVariable.approvalSignature"-->
|
||||
<!-- class="signature-image"></el-image>-->
|
||||
<!-- </el-descriptions-item> -->
|
||||
</el-descriptions>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-dialog title="提案详情" :visible.sync="viewDialogVisible" width="1200px" append-to-body top="5vh">
|
||||
<div style="max-height: 80vh;overflow-y: auto">
|
||||
<proposal-info ref="infoDialogRef"></proposal-info>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<template v-for="task in doneTasks">
|
||||
<div class="mt10">
|
||||
<div class="process-title">{{ task.displayName }}</div>
|
||||
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-if="task.ext.isFirstTaskNode">
|
||||
<el-descriptions-item label="申请用户">{{ task.ext.initiatorName }}({{task.ext.initiatorAccount}})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申请时间">{{ task.finishTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理结果">
|
||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE" :value="task.ext.submitType"></dict-tag>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<!--邀请附议人-->
|
||||
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else-if="task.taskName === '85b7b9bd-d706-48cb-99a1-ef1370fb1819'">
|
||||
<el-descriptions-item label="办理用户">{{ task.taskFormData.userName }}({{task.taskFormData.loginName}})</el-descriptions-item>
|
||||
<el-descriptions-item label="办理时间" :span="2">{{ task.finishTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="附议人" :span="3" v-if="task.taskName === '85b7b9bd-d706-48cb-99a1-ef1370fb1819'">
|
||||
<el-table :data="task?.taskFormData?.seconder">
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginName"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex"></el-table-column>
|
||||
<el-table-column label="单位" prop="unitName"></el-table-column>
|
||||
<el-table-column label="分工会" prop="unionName"></el-table-column>
|
||||
<el-table-column label="代表团" prop="delegationName"></el-table-column>
|
||||
</el-table>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<!--提案委员会立案-->
|
||||
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else-if="task.taskName === '9846ab38-40c5-4093-bafc-a9b3b443338b'">
|
||||
<el-descriptions-item label="办理用户">{{ task.taskFormData.userName }}({{task.taskFormData.loginName}})</el-descriptions-item>
|
||||
<el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="立案结果">
|
||||
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT" :value="task.ext.caseFilingResult"></dict-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="主办单位" :span="3">{{task.ext.tf_hostUnitName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="协办单位" :span="3">{{task?.ext?.tf_helpUnitNames.join('、')}}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else>
|
||||
<el-descriptions-item label="办理用户">{{ task.taskFormData.userName }}({{task.taskFormData.loginName}})</el-descriptions-item>
|
||||
<el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理结果">
|
||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
|
||||
:value="task.ext.submitType"></dict-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="办理意见" :span="3" v-if="!task.ext.isFirstTaskNode">{{ task.taskFormData.opinion }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<slot></slot>
|
||||
</div>
|
||||
`,
|
||||
dicts: ["PROPOSAL_TYPE", "PROPOSAL_CASE_FILING_RESULT"],
|
||||
props:{
|
||||
hide_slave:false
|
||||
dicts: ["PROPOSAL_TYPE", "PROPOSAL_CASE_FILING_RESULT","PROCESS_TASK_SUBMIT_TYPE"],
|
||||
props: {
|
||||
hide_slave: false
|
||||
},
|
||||
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)
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
// 获取已办任务审批记录
|
||||
getDoneTasks() {
|
||||
this.$axios.post("/flow/common/doneTasks", {bizId: this.row.id}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.doneTasks = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
},
|
||||
style:
|
||||
/*language=CSS*/
|
||||
/*language=CSS*/
|
||||
`
|
||||
.proposal-info .el-descriptions__body .el-descriptions__table .el-descriptions-item__cell{
|
||||
text-align: left;
|
||||
.proposal-info .el-descriptions__body .el-descriptions__table .el-descriptions-item__cell {
|
||||
|
||||
}
|
||||
`
|
||||
}
|
||||
|
||||
@@ -25,24 +25,24 @@ layout("/layouts/platform.html"){
|
||||
<el-radio border :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="协办单位是否首先答复" prop="slaveUnitFirstReply" v-if="formData.slaveUnitNeedReply">
|
||||
<span slot="label">
|
||||
协办单位是否首先答复
|
||||
<el-tooltip content="开启后协办单位答复完成之后主办单位才可答复" placement="right">
|
||||
<i class="el-icon-question"></i>
|
||||
</el-tooltip>
|
||||
</span>
|
||||
<el-radio-group v-model="formData.slaveUnitFirstReply" size="small">
|
||||
<el-radio border :label="true">是</el-radio>
|
||||
<el-radio border :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="协办单位领导单位是否需要审批" prop="slaveUnitLeaderNeedApprove">
|
||||
<el-radio-group v-model="formData.slaveUnitLeaderNeedApprove" size="small">
|
||||
<el-radio border :label="true">是</el-radio>
|
||||
<el-radio border :label="false">否</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="协办单位是否首先答复" prop="slaveUnitFirstReply" v-if="formData.slaveUnitNeedReply">-->
|
||||
<!-- <span slot="label">-->
|
||||
<!-- 协办单位是否首先答复-->
|
||||
<!-- <el-tooltip content="开启后协办单位答复完成之后主办单位才可答复" placement="right">-->
|
||||
<!-- <i class="el-icon-question"></i>-->
|
||||
<!-- </el-tooltip>-->
|
||||
<!-- </span>-->
|
||||
<!-- <el-radio-group v-model="formData.slaveUnitFirstReply" size="small">-->
|
||||
<!-- <el-radio border :label="true">是</el-radio>-->
|
||||
<!-- <el-radio border :label="false">否</el-radio>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="协办单位领导单位是否需要审批" prop="slaveUnitLeaderNeedApprove">-->
|
||||
<!-- <el-radio-group v-model="formData.slaveUnitLeaderNeedApprove" size="small">-->
|
||||
<!-- <el-radio border :label="true">是</el-radio>-->
|
||||
<!-- <el-radio border :label="false">否</el-radio>-->
|
||||
<!-- </el-radio-group>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="撰写须知" prop="writeRemind">
|
||||
<text-editor v-model="formData.writeRemind"></text-editor>
|
||||
</el-form-item>
|
||||
|
||||
+138
-304
@@ -2,39 +2,41 @@
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style></style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="提案编号">
|
||||
<el-input v-model="pageForm.code" placeholder="提案编号" @keyup.enter.native="doSearch" clearable style="width: 100%"></el-input>
|
||||
<el-input v-model="pageForm.code" placeholder="提案编号" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
</search-item>
|
||||
<search-item label="提案名称">
|
||||
<el-input v-model="pageForm.name" placeholder="提案名称" @keyup.enter.native="doSearch" clearable style="width: 100%"></el-input>
|
||||
<el-input v-model="pageForm.name" placeholder="提案名称" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
</search-item>
|
||||
<search-item label="提案人姓名">
|
||||
<el-input
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人姓名"
|
||||
v-model="pageForm.createUserName"
|
||||
style="width: 100%"
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人姓名"
|
||||
v-model="pageForm.createUserName"
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
</search-item>
|
||||
<search-item label="提案人工号">
|
||||
<el-input
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人工号"
|
||||
v-model="pageForm.createUserLoginName"
|
||||
style="width: 100%"
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人工号"
|
||||
v-model="pageForm.createUserLoginName"
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
</search-item>
|
||||
<search-item label="教代会">
|
||||
<el-select @change="meetingChange" 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-select @change="meetingChange" 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-select>
|
||||
</search-item>
|
||||
</search>
|
||||
@@ -42,52 +44,31 @@ layout("/layouts/platform.html"){
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<el-button @click="openConsolidationApproval" size="small" type="primary" class="mr5">并案审核</el-button>
|
||||
<el-radio-group v-model="pageForm.approval" @change="$refs.tableRef.clearSelection();doSearch()" size="small">
|
||||
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
|
||||
<el-radio-button :label="true">已审核</el-radio-button>
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<el-table
|
||||
:data="tableData"
|
||||
ref="tableRef"
|
||||
@sort-change="pageOrder"
|
||||
header-align="center"
|
||||
style="width: 100%"
|
||||
:row-key="(val)=>{val.id + val.processInstanceTaskId}"
|
||||
>
|
||||
<el-table-column type="selection" :selectable="(row)=>row.processInstanceTaskStatus==='ACTIVE'"></el-table-column>
|
||||
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
|
||||
<el-table-column label="序号" width="50" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="提案编号" prop="code" width="120" sortable></el-table-column>
|
||||
<el-table-column label="提案编号" prop="code"></el-table-column>
|
||||
<el-table-column label="提案名称" prop="name" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="提案人" prop="createUserName"></el-table-column>
|
||||
<el-table-column label="提案类别" prop="typeName"></el-table-column>
|
||||
<el-table-column label="代表团" prop="delegationName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="立案结果" prop="caseFilingResult">
|
||||
<template scope="{row}">
|
||||
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT" :value="row.caseFilingResult"></dict-tag>
|
||||
<el-table-column label="届次" prop="sessionName"></el-table-column>
|
||||
<el-table-column label="代表团" prop="delegationName"></el-table-column>
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
<template slot-scope="{row}">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
size="small"></enum-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否并案" prop="isConsolidation" width="100">
|
||||
<template scope="{row}">
|
||||
<el-tag size="mini" v-if="row.isConsolidation" type="success">是</el-tag>
|
||||
<el-tag size="mini" v-else type="danger">否</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
|
||||
<el-button v-if="row.processInstanceTaskStatus==='ACTIVE'" @click="openApproval(row)" size="mini" type="primary">
|
||||
审核
|
||||
<el-table-column label="操作" fixed="right" width="300px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
|
||||
@click="openRevoke(row.processInstanceTaskId)"
|
||||
size="mini"
|
||||
type="danger"
|
||||
>
|
||||
撤回
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -95,236 +76,135 @@ layout("/layouts/platform.html"){
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<template #public>
|
||||
<proposal-info ref="infoRef"></proposal-info>
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">{{formData.processInstanceNodeName}}</div>
|
||||
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
|
||||
<el-form-item label="立案结果" prop="caseFilingResult" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-radio-group v-model="formData.caseFilingResult" size="small">
|
||||
<el-radio v-for="item in dict.type.PROPOSAL_CASE_FILING_RESULT" :label="item.code" border>{{item.label}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="主办单位"
|
||||
v-if="['CONFIRM_FILING','SUGGESTION'].includes(formData.caseFilingResult)"
|
||||
:rules="[{required:['CONFIRM_FILING','SUGGESTION'].includes(formData.caseFilingResult),message:'必填',trigger:['change','blur']}]"
|
||||
>
|
||||
<el-select v-model="formData.hostUnitId" clearable filterable style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in underTakeOptions"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
:key="item.id"
|
||||
:disabled="formData && formData.helpUnitIds.includes(item.id)"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="协办单位" v-if="['CONFIRM_FILING','SUGGESTION'].includes(formData.caseFilingResult)">
|
||||
<el-select v-model="formData.helpUnitIds" clearable filterable multiple style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in underTakeOptions"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
:key="item.id"
|
||||
:disabled="item.id===formData.hostUnitId"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="审核意见" prop="approvalOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.approvalOpinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">-->
|
||||
<!-- <pc-signature v-model="formData.approvalSignature"></pc-signature>-->
|
||||
<!-- </el-form-item>-->
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button plain @click="$refs.guava.index()">取消</el-button>
|
||||
<el-button type="danger" @click="doApproval('BACK')">退回重新填写</el-button>
|
||||
<el-button type="primary" @click="doApproval('PASS')">提交</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template #edit>
|
||||
<div class="process-title">并案提案列表</div>
|
||||
<el-table :data="consolidationProposalTableData" size="small">
|
||||
<el-table-column label="序号" width="50" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="提案编号" prop="code" width="120px" sortable></el-table-column>
|
||||
<el-table-column label="提案名称" prop="name" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="提案人" prop="createUserName" width="200px"></el-table-column>
|
||||
<el-table-column label="代表团" prop="delegationName" width="300px"></el-table-column>
|
||||
<el-table-column label="立案结果" prop="caseFilingResult" width="100px">
|
||||
<template scope="{row}">
|
||||
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT" :value="row.caseFilingResult"></dict-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否并案" prop="isConsolidation" width="100px">
|
||||
<template scope="{row}">
|
||||
<el-tag size="mini" v-if="row.isConsolidation" type="success">是</el-tag>
|
||||
<el-tag size="mini" v-else type="danger">否</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100px">
|
||||
<template scope="{row}">
|
||||
<el-link size="mini" type="primary" @click="openViewDialog(row)">查看</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<div class="process-title">{{consolidationFormData.processInstanceNodeName}}</div>
|
||||
<el-form :model="consolidationFormData" ref="consolidationFormRef" label-position="left" label-width="80px">
|
||||
<el-form-item label="立案结果" prop="caseFilingResult" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-radio-group v-model="consolidationFormData.caseFilingResult" size="small">
|
||||
<el-radio v-for="item in dict.type.PROPOSAL_CASE_FILING_RESULT" :label="item.code" border>{{item.label}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="主办单位"
|
||||
v-if="['CONFIRM_FILING','SUGGESTION'].includes(consolidationFormData.caseFilingResult)"
|
||||
:rules="[{required:['CONFIRM_FILING','SUGGESTION'].includes(consolidationFormData.caseFilingResult),message:'必填',trigger:['change','blur']}]"
|
||||
>
|
||||
<el-select v-model="consolidationFormData.hostUnitId" filterable clearable style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in underTakeOptions"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
:key="item.id"
|
||||
:disabled="consolidationFormData && consolidationFormData.helpUnitIds.includes(item.id)"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="协办单位" v-if="['CONFIRM_FILING','SUGGESTION'].includes(consolidationFormData.caseFilingResult)">
|
||||
<el-select v-model="consolidationFormData.helpUnitIds" filterable clearable multiple style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in underTakeOptions"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
:key="item.id"
|
||||
:disabled="item.id===consolidationFormData.hostUnitId"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="审核意见" prop="approvalOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="consolidationFormData.approvalOpinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
<el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<pc-signature v-model="consolidationFormData.approvalSignature"></pc-signature>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button plain @click="$refs.guava.index()">取消</el-button>
|
||||
<el-button type="primary" @click="doConsolidationApproval('PASS')">提交</el-button>
|
||||
</el-row>
|
||||
<proposal-info ref="proposalInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">
|
||||
{{formData.taskName}}
|
||||
</div>
|
||||
<el-form :model="formData" ref="formRef" label-width="120px" :rules="formRules" label-suffix="">
|
||||
<el-form-item label="立案结果" prop="caseFilingResult" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-radio-group v-model="formData.caseFilingResult" size="small">
|
||||
<el-radio v-for="item in dict.type.PROPOSAL_CASE_FILING_RESULT" :label="item.code" border>{{item.label}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="主办单位"
|
||||
v-if="['CONFIRM_FILING','SUGGESTION'].includes(formData.caseFilingResult)"
|
||||
:rules="[{required:['CONFIRM_FILING','SUGGESTION'].includes(formData.caseFilingResult),message:'必填',trigger:['change','blur']}]"
|
||||
>
|
||||
<el-select v-model="formData.tf_hostUnitId" filterable clearable style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in underTakeOptions"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
:key="item.id"
|
||||
:disabled="formData && formData.tf_helpUnitIds.includes(item.id)"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="协办单位" v-if="['CONFIRM_FILING','SUGGESTION'].includes(formData.caseFilingResult)">
|
||||
<el-select v-model="formData.tf_helpUnitIds" filterable clearable multiple style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in underTakeOptions"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
:key="item.id"
|
||||
:disabled="item.id===formData.tf_hostUnitId"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="审核意见" prop="approvalOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.approvalOpinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到提案人</el-button>
|
||||
<el-button @click="handleTaskAction(1)" size="small" type="primary">提交</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</proposal-info>
|
||||
</template>
|
||||
|
||||
<el-dialog title="提案详情" :visible.sync="viewDialogVisible" width="1200px" top="50px" append-to-body>
|
||||
<div style="max-height: 75vh; overflow-y: auto">
|
||||
<proposal-info ref="infoDialogRef"></proposal-info>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include("../../common/info.js"){}#-->
|
||||
const vue = new Vue({
|
||||
<!--#include('../../common/info.js'){}#-->
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
dicts: ["PROPOSAL_CASE_FILING_RESULT"],
|
||||
store,
|
||||
dicts: ["PROPOSAL_CASE_FILING_RESULT"],
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
"proposal-info": PROPOSAL_INFO_COMPONENT
|
||||
"proposal-info": PROPOSAL_INFO
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
sessionOptions: [],
|
||||
delegationOptions: [],
|
||||
underTakeOptions: [],
|
||||
formData: {
|
||||
hostUnitIds: null,
|
||||
helpUnitId: []
|
||||
},
|
||||
pageForm: {
|
||||
approval: false
|
||||
},
|
||||
formData: {
|
||||
tf_hostUnitId: null,
|
||||
tf_helpUnitIds: []
|
||||
},
|
||||
showApprovalForm: false,
|
||||
|
||||
//并案的提案列表
|
||||
consolidationProposalTableData: [],
|
||||
consolidationFormData: {},
|
||||
|
||||
viewDialogVisible: false
|
||||
sessionOptions: [],
|
||||
delegationOptions: [],
|
||||
underTakeOptions: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openView(row) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
openApproval(row) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
this.formData = row.approvalParam
|
||||
this.$set(this.formData, "caseFilingResult", null)
|
||||
this.$set(this.formData, "hostUnitId", null)
|
||||
this.$set(this.formData, "helpUnitIds", [])
|
||||
this.$set(this.formData, "helpUnitIds", [])
|
||||
this.$set(this.formData, "approvalOpinion", null)
|
||||
this.$set(this.formData, "proposalIds", [])
|
||||
openAudit(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = true
|
||||
this.formData = {
|
||||
processTaskId: row.taskId,
|
||||
taskName: row.curTaskName,
|
||||
tf_hostUnitId: null,
|
||||
tf_helpUnitIds: []
|
||||
}
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
doApproval(approvalType) {
|
||||
if (approvalType === "PASS") {
|
||||
this.formData.bpmTaskApprovalType = "DYNAMIC"
|
||||
this.formData.proposalIds = [this.formData.processInstanceBusinessId]
|
||||
this.$refs.approvalFormRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post(loc() + "/approval", {
|
||||
approval: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
|
||||
handleTaskAction(val) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/executeTask", {
|
||||
data: JSON.stringify({
|
||||
...this.formData,
|
||||
submitType: val,
|
||||
tf_hostUnitName: this.formData.tf_hostUnitId ? this.underTakeOptions.find(v => v.id === this.formData.tf_hostUnitId)?.name : null,
|
||||
tf_helpUnitNames: this.formData.tf_helpUnitIds.map(v => this.underTakeOptions.find(v2 => v2.id === v)?.name)
|
||||
})
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
} else if (approvalType === "BACK") {
|
||||
if (!this.formData.approvalOpinion) {
|
||||
this.$message.warning("请填写退回的审核意见")
|
||||
return
|
||||
}
|
||||
|
||||
this.formData.bpmTaskApprovalType = "DYNAMIC"
|
||||
this.$confirm("您确定要退回到提案人吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/approvalBack", this.formData).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
openRevoke(taskId) {
|
||||
|
||||
onRevoke(row) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/revoke", { taskId }).then((res) => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
@@ -333,71 +213,23 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
|
||||
//打开并案审核
|
||||
openConsolidationApproval() {
|
||||
const selection = this.$refs.tableRef.selection
|
||||
if (selection.length < 2) {
|
||||
this.$message.error("并案审核至少需要选择两条提案")
|
||||
return
|
||||
}
|
||||
this.consolidationProposalTableData = selection
|
||||
this.$refs.guava.edit()
|
||||
|
||||
this.consolidationFormData = selection[0].approvalParam
|
||||
this.$set(this.consolidationFormData, "caseFilingResult", null)
|
||||
this.$set(this.consolidationFormData, "hostUnitId", null)
|
||||
this.$set(this.consolidationFormData, "helpUnitIds", [])
|
||||
this.$set(this.consolidationFormData, "helpUnitIds", [])
|
||||
this.$set(this.consolidationFormData, "approvalOpinion", null)
|
||||
this.$set(
|
||||
this.consolidationFormData,
|
||||
"proposalIds",
|
||||
selection.map((v) => v.id)
|
||||
)
|
||||
},
|
||||
|
||||
openViewDialog(row) {
|
||||
this.viewDialogVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.infoDialogRef.onOpen(row.id)
|
||||
})
|
||||
},
|
||||
|
||||
//并案审核
|
||||
doConsolidationApproval() {
|
||||
this.consolidationFormData.bpmTaskApprovalType = "DYNAMIC"
|
||||
this.$refs.consolidationFormRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post(loc() + "/approval", {
|
||||
approval: JSON.stringify(this.consolidationFormData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$refs.tableRef.clearSelection()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//教代会change
|
||||
// 教代会
|
||||
async meetingChange(val) {
|
||||
this.formData.delegationId = null
|
||||
this.formData.committeeId = null
|
||||
this.delegationOptions = await proposal.getDelegation(val)
|
||||
this.committeeOptions = await this.getInstitutions(val)
|
||||
},
|
||||
// 代表团
|
||||
listDelegation() {
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", { sessionId: this.pageForm.sessionId }).then((res) => {
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.pageForm.sessionId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.delegationOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 查询开启的教代会
|
||||
listOpenSession() {
|
||||
this.$axios.post("/platform/proposal/common/listOpenSession").then((res) => {
|
||||
if (res.code === 0) {
|
||||
@@ -411,8 +243,9 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
|
||||
// 查询承办单位
|
||||
listUnderTake() {
|
||||
this.$axios.post(loc() + "/listUnderTake").then((res) => {
|
||||
this.$axios.post("/platform/proposal/common/listUnderTake").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.underTakeOptions = res.data
|
||||
}
|
||||
@@ -420,12 +253,13 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// this.pageData()
|
||||
this.listUnderTake()
|
||||
this.pageData()
|
||||
this.listOpenSession()
|
||||
this.listUnderTake()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
-48
@@ -1,48 +0,0 @@
|
||||
<div id="suggestion-box-apply-form" v-cloak>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":" class="flow-task-form">
|
||||
<el-form-item label="审批意见" prop="tf_opinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<snaker-flow-task-form-action @task-action="handleTaskAction" @cancel="handleCancel"></snaker-flow-task-form-action>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: "#suggestion-box-apply-form",
|
||||
store,
|
||||
data() {
|
||||
return {
|
||||
businessId: GetQueryString("businessId"),
|
||||
formData: {},
|
||||
formRules: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleTaskAction(val) {
|
||||
console.log(val)
|
||||
|
||||
this.$axios
|
||||
.post("/flow/common/executeTask", {
|
||||
data: JSON.stringify({
|
||||
...val,
|
||||
...this.formData
|
||||
})
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("操作成功")
|
||||
// 发送完成消息
|
||||
window.GlobalBroadcastChannel.postMessage({
|
||||
type: "task-complete",
|
||||
payload: val
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCancel(val) {
|
||||
console.log(val)
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
+94
-23
@@ -2,15 +2,17 @@
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<guava ref="guava">
|
||||
<div id="app">
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度">
|
||||
<el-date-picker v-model="pageForm.year" type="year" value-format="yyyy" placeholder="年度" style="width: 100%"></el-date-picker>
|
||||
<search-item label="提案名称">
|
||||
<el-input v-model="pageForm.name" placeholder="提案名称" @keyup.enter.native="doSearch" clearable style="width: 100%"></el-input>
|
||||
</search-item>
|
||||
<search-item label="标题">
|
||||
<el-input v-model="pageForm.title" placeholder="标题" clearable></el-input>
|
||||
<search-item label="教代会">
|
||||
<el-select @change="meetingChange" 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-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
@@ -32,49 +34,118 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
<template slot-scope="{row}">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
size="small"></enum-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="300px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回</el-button>
|
||||
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
|
||||
</el-button>
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</div>
|
||||
</guava>
|
||||
|
||||
<template #edit>
|
||||
<proposal-info ref="proposalInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">
|
||||
{{formData.taskName}}
|
||||
</div>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":"
|
||||
class="flow-task-form">
|
||||
<el-form-item label="审批意见" prop="tf_opinion"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到提案人</el-button>
|
||||
<el-button @click="handleTaskAction(20)" size="small" type="danger">不同意</el-button>
|
||||
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</proposal-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include('../../common/info.js'){}#-->
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
"proposal-info": PROPOSAL_INFO
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageDataUrl: "/platform/proposal/delegation/pageData",
|
||||
pageForm: {
|
||||
approval: false
|
||||
}
|
||||
},
|
||||
showApprovalForm: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openView(row) {
|
||||
window.open(
|
||||
"/flow/common/approval/form?taskId=" +
|
||||
row.taskId +
|
||||
"&instanceId=" +
|
||||
row.instanceId +
|
||||
"&businessId=" +
|
||||
row.businessNo +
|
||||
"&sessionId=" +
|
||||
row.sessionId
|
||||
)
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
openAudit(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = true
|
||||
this.formData = {
|
||||
processTaskId: row.taskId,
|
||||
taskName: row.curTaskName
|
||||
}
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
|
||||
handleTaskAction(val) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/executeTask", {
|
||||
data: JSON.stringify({
|
||||
...this.formData,
|
||||
submitType: val
|
||||
})
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
onRevoke(row) {
|
||||
console.log(row)
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
||||
+115
-120
@@ -2,192 +2,183 @@
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style></style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="提案编号">
|
||||
<el-input v-model="pageForm.code" placeholder="提案编号" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
</search-item>
|
||||
<search-item label="提案名称">
|
||||
<el-input
|
||||
v-model="pageForm.searchKeyword"
|
||||
placeholder="提案名称"
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
<el-input v-model="pageForm.name" placeholder="提案名称" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
</search-item>
|
||||
<search-item label="提案人姓名">
|
||||
<el-input
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人姓名"
|
||||
v-model="pageForm.createUserName"
|
||||
style="width: 100%"
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人姓名"
|
||||
v-model="pageForm.createUserName"
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
</search-item>
|
||||
<search-item label="提案人工号">
|
||||
<el-input
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人工号"
|
||||
v-model="pageForm.createUserLoginName"
|
||||
style="width: 100%"
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人工号"
|
||||
v-model="pageForm.createUserLoginName"
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
</search-item>
|
||||
<search-item label="教代会">
|
||||
<el-select @change="meetingChange" 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-select @change="meetingChange" 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-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<el-radio-group v-model="pageForm.approval" @change="doSearch" size="small">
|
||||
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
|
||||
<el-radio-button :label="true">已审核</el-radio-button>
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<el-table
|
||||
:data="tableData"
|
||||
@sort-change="pageOrder"
|
||||
size="small"
|
||||
header-align="center"
|
||||
style="width: 100%"
|
||||
:row-key="(val)=>{val.id + val.processInstanceTaskId}"
|
||||
>
|
||||
<el-table-column label="序号" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
|
||||
<el-table-column label="序号" width="50" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="提案编号" prop="code"></el-table-column>
|
||||
<el-table-column label="提案名称" prop="name" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="提案人" prop="createUserName"></el-table-column>
|
||||
<el-table-column label="提案类别" prop="typeName"></el-table-column>
|
||||
<el-table-column label="届次" prop="sessionName"></el-table-column>
|
||||
<el-table-column label="代表团" prop="delegationName"></el-table-column>
|
||||
<el-table-column label="立案结果" prop="caseFilingResult">
|
||||
<template scope="{row}">
|
||||
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT" :value="row.caseFilingResult"></dict-tag>
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="taskName" label="承办类型"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
<template slot-scope="{row}">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
size="small"></enum-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否并案" prop="isConsolidation">
|
||||
<template scope="{row}">
|
||||
<el-tag size="mini" v-if="row.isConsolidation" type="success">是</el-tag>
|
||||
<el-tag size="mini" v-else type="danger">否</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="当前节点" prop="processInstanceNodeName"></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="primary" @click="onOpen(row)">查看</el-button>
|
||||
<el-button v-if="row.processInstanceTaskStatus==='ACTIVE'" @click="openApproval(row)" size="mini" type="primary">
|
||||
反馈
|
||||
<el-table-column label="操作" fixed="right" width="300px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">答复
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
|
||||
@click="openRevoke(row.processInstanceTaskId)"
|
||||
size="mini"
|
||||
type="danger"
|
||||
>
|
||||
撤回
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
<template #public>
|
||||
<proposal-info ref="infoRef"></proposal-info>
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">{{formData.processInstanceNodeName}}</div>
|
||||
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
|
||||
<el-form-item label="反馈评价" prop="feedBackScore" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-radio-group v-model="formData.feedBackScore">
|
||||
<el-radio :label="item.code" border v-for="item in dict.type.PROPOSAL_FEEDBACK_UNIT" :key="item.code" size="small">
|
||||
{{item.label}}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="反馈内容" prop="approvalOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input type="textarea" v-model="formData.approvalOpinion" max="1000" :rows="5"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<pc-signature v-model="formData.approvalSignature"></pc-signature>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button plain @click="$refs.guava.index()">取消</el-button>
|
||||
<el-button type="primary" @click="doApproval('DYNAMIC')">提交</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
|
||||
<template #edit>
|
||||
<proposal-info ref="proposalInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">
|
||||
{{formData.taskName}}
|
||||
</div>
|
||||
<el-form :model="formData" ref="formRef" label-width="120px" :rules="formRules" label-suffix="">
|
||||
<el-form-item label="满意度" prop="tf_feedback" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-radio-group v-model="formData.tf_feedback" size="small">
|
||||
<el-radio v-for="item in dict.type.PROPOSAL_FEEDBACK" :key="item.code" :label="item.code" border>{{item.label}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="审批意见" prop="tf_opinion"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
<el-button @click="handleTaskAction(1)" size="small" type="primary">提交</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</proposal-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include("../../common/info.js"){}#-->
|
||||
<!--#include('../../common/info.js'){}#-->
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
dicts: ["PROPOSAL_FEEDBACK_UNIT", "PROPOSAL_CASE_FILING_RESULT"],
|
||||
dicts: ["PROPOSAL_FEEDBACK"],
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
"proposal-info": PROPOSAL_INFO_COMPONENT
|
||||
"proposal-info": PROPOSAL_INFO
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
approval: false
|
||||
},
|
||||
formData: {},
|
||||
showApprovalForm: false,
|
||||
sessionOptions: [],
|
||||
delegationOptions: []
|
||||
delegationOptions: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOpen(row) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
openView(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
|
||||
openApproval(row) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
this.formData = row.approvalParam
|
||||
this.$set(this.formData, "implementState", null)
|
||||
this.$set(this.formData, "approvalOpinion", null)
|
||||
openAudit(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = true
|
||||
})
|
||||
},
|
||||
|
||||
doApproval(approvalType) {
|
||||
this.formData.bpmTaskApprovalType = approvalType
|
||||
this.$refs.approvalFormRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post(loc() + "/approval", {
|
||||
approval: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
this.formData = {
|
||||
processTaskId: row.taskId,
|
||||
taskKey: row.taskKey,
|
||||
taskName: row.taskName,
|
||||
}
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
|
||||
openRevoke(taskId) {
|
||||
handleTaskAction(val) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
const formData = {
|
||||
...this.formData,
|
||||
submitType: val
|
||||
}
|
||||
// 不满意
|
||||
if(this.formData.tf_feedback === 'DISSATISFIED'){
|
||||
formData.tf_hostUnitId = "da59e22f2a744a128b4f71c037c8d32e"
|
||||
}
|
||||
this.$axios.post("/flow/common/executeTask", {
|
||||
data: JSON.stringify(formData)
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 撤销
|
||||
onRevoke(row) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/revoke", { taskId }).then((res) => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
@@ -196,19 +187,24 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
|
||||
//教代会change
|
||||
// 教代会
|
||||
async meetingChange(val) {
|
||||
this.formData.delegationId = null
|
||||
this.formData.committeeId = null
|
||||
this.listDelegation()
|
||||
this.delegationOptions = await proposal.getDelegation(val)
|
||||
this.committeeOptions = await this.getInstitutions(val)
|
||||
},
|
||||
|
||||
// 代表团
|
||||
listDelegation() {
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", { sessionId: this.pageForm.sessionId }).then((res) => {
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.pageForm.sessionId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.delegationOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 查询开启的教代会
|
||||
listOpenSession() {
|
||||
this.$axios.post("/platform/proposal/common/listOpenSession").then((res) => {
|
||||
if (res.code === 0) {
|
||||
@@ -220,16 +216,15 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
del() {},
|
||||
openView(id) {}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
this.listOpenSession()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
+16
-14
@@ -28,30 +28,32 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column label="提案类别" prop="typeName"></el-table-column>
|
||||
<el-table-column label="届次" prop="sessionName"></el-table-column>
|
||||
<el-table-column label="代表团" prop="delegationName"></el-table-column>
|
||||
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="taskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
<template slot-scope="{row}">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
size="small"></enum-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="400px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
|
||||
<el-button v-if="[10,40,61].includes(row.processInstanceNodeCode)" size="mini" type="primary" @click="openEdit(row)">
|
||||
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" size="mini" type="primary" @click="openEdit(row)">
|
||||
编辑提案
|
||||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="onOpenInviteSeconder(row)"
|
||||
v-if="[10,20,40,61].includes(row.processInstanceNodeCode)"
|
||||
v-if="row.taskKey === '85b7b9bd-d706-48cb-99a1-ef1370fb1819' || row.taskKey === '74458b33-ad6e-46c4-b8d9-1aa897142b25'"
|
||||
>
|
||||
邀请附议人
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="[20].includes(row.processInstanceNodeCode) && !row.nextTaskIsComplete"
|
||||
size="mini"
|
||||
type="danger"
|
||||
@click="openRevoke(row)"
|
||||
>
|
||||
<el-button v-if="row.canRevoke" size="mini" type="danger" @click="openRevoke(row)">
|
||||
撤销
|
||||
</el-button>
|
||||
<el-button v-if="[10,40,50,61].includes(row.processInstanceNodeCode)" size="mini" type="danger" @click="del(row.id)">
|
||||
<!-- v-if="row.taskKey === 'startTask' || !row.instanceId"-->
|
||||
<el-button size="mini" type="danger" @click="del(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
@@ -77,7 +79,7 @@ layout("/layouts/platform.html"){
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
"proposal-info": PROPOSAL_INFO_COMPONENT,
|
||||
"proposal-info": PROPOSAL_INFO,
|
||||
"invite-seconder": PROPOSAL_INVITE_SECONDER_COMPONENT
|
||||
},
|
||||
data() {
|
||||
@@ -93,7 +95,7 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
openEdit(row) {
|
||||
this.$store.dispatch("pjaxRoute", "/platform/proposal/write?id=" + row.id)
|
||||
window.location.href = '/platform/proposal/write?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id
|
||||
},
|
||||
openRevoke(row) {
|
||||
this.$confirm("您确定要撤销申请吗?", "提示", {
|
||||
@@ -121,8 +123,8 @@ layout("/layouts/platform.html"){
|
||||
async meetingChange(val) {
|
||||
this.formData.delegationId = null
|
||||
this.formData.committeeId = null
|
||||
this.delegationOptions = await proposal.getDelegation(val)
|
||||
this.committeeOptions = await this.getInstitutions(val)
|
||||
//this.delegationOptions = await proposal.getDelegation(val)
|
||||
//this.committeeOptions = await this.getInstitutions(val)
|
||||
},
|
||||
listSession() {
|
||||
this.$axios.post("/platform/proposal/common/listSession").then((res) => {
|
||||
|
||||
+24
-24
@@ -69,24 +69,26 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
|
||||
this.listDelegation()
|
||||
this.pageData()
|
||||
|
||||
const { seconderNum } = this.config
|
||||
const {seconderNum} = this.config
|
||||
this.$alert(
|
||||
"(1)请至少选择<span style='color: orange;font-weight: bold'>" +
|
||||
seconderNum +
|
||||
"</span>位以上(含" +
|
||||
seconderNum +
|
||||
"位)代表附议。<br>\n" +
|
||||
"(2)邀请附议人后将不能再编辑提案,请确认提案内容后再邀请附议人。<br>",
|
||||
seconderNum +
|
||||
"</span>位以上(含" +
|
||||
seconderNum +
|
||||
"位)代表附议。<br>\n" +
|
||||
"(2)邀请附议人后将不能再编辑提案,请确认提案内容后再邀请附议人。<br>",
|
||||
{
|
||||
title: "温馨提醒",
|
||||
type: "warning",
|
||||
dangerouslyUseHTMLString: true,
|
||||
confirmButtonText: "确定",
|
||||
callback: () => {}
|
||||
callback: () => {
|
||||
}
|
||||
}
|
||||
)
|
||||
},
|
||||
detail(id) {},
|
||||
detail(id) {
|
||||
},
|
||||
invite() {
|
||||
const selection = this.$refs.tableRef.selection
|
||||
if (selection.length === 0) {
|
||||
@@ -100,20 +102,18 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios
|
||||
.post("/platform/proposal/mine/inviteSeconder", {
|
||||
proposalId: this.record.id,
|
||||
seconders: JSON.stringify(loginNames)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.$refs.tableRef.clearSelection()
|
||||
this.pageData()
|
||||
this.visible = false
|
||||
this.$emit("refresh", null)
|
||||
}
|
||||
})
|
||||
this.$axios.post("/platform/proposal/mine/inviteSeconder", {
|
||||
proposalId: this.record.id,
|
||||
seconders: JSON.stringify(loginNames)
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.$refs.tableRef.clearSelection()
|
||||
this.pageData()
|
||||
this.visible = false
|
||||
this.$emit("refresh", null)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
pageData() {
|
||||
@@ -133,7 +133,7 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
|
||||
|
||||
//查询代表团
|
||||
listDelegation() {
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", { sessionId: this.record.sessionId }).then((res) => {
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.record.sessionId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.delegationOptions = res.data
|
||||
}
|
||||
@@ -141,7 +141,7 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
|
||||
},
|
||||
|
||||
async getConfig() {
|
||||
const { code, data } = await this.$axios.post("/platform/proposal/common/config")
|
||||
const {code, data} = await this.$axios.post("/platform/proposal/common/config")
|
||||
if (code === 0) {
|
||||
this.config = data
|
||||
}
|
||||
|
||||
+113
-132
@@ -2,204 +2,181 @@
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style></style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="提案编号">
|
||||
<el-input v-model="pageForm.code" placeholder="提案编号" @keyup.enter.native="doSearch" clearable style="width: 100%"></el-input>
|
||||
<el-input v-model="pageForm.code" placeholder="提案编号" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
</search-item>
|
||||
<search-item label="提案名称">
|
||||
<el-input
|
||||
v-model="pageForm.name"
|
||||
placeholder="提案名称"
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
<el-input v-model="pageForm.name" placeholder="提案名称" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
</search-item>
|
||||
<search-item label="提案人姓名">
|
||||
<el-input
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人姓名"
|
||||
v-model="pageForm.createUserName"
|
||||
style="width: 100%"
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人姓名"
|
||||
v-model="pageForm.createUserName"
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
</search-item>
|
||||
<search-item label="提案人工号">
|
||||
<el-input
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人工号"
|
||||
v-model="pageForm.createUserLoginName"
|
||||
style="width: 100%"
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人工号"
|
||||
v-model="pageForm.createUserLoginName"
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
</search-item>
|
||||
<search-item label="教代会">
|
||||
<el-select @change="meetingChange" 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-select @change="meetingChange" 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-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<el-radio-group v-model="pageForm.approval" @change="doSearch" size="small">
|
||||
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
|
||||
<el-radio-button :label="true">已审核</el-radio-button>
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<el-table
|
||||
:data="tableData"
|
||||
@sort-change="pageOrder"
|
||||
header-align="center"
|
||||
style="width: 100%"
|
||||
:row-key="(val)=>{val.id + val.processInstanceTaskId}"
|
||||
>
|
||||
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
|
||||
<el-table-column label="序号" width="50" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="提案编号" prop="code" width="120" sortable></el-table-column>
|
||||
<el-table-column label="提案编号" prop="code"></el-table-column>
|
||||
<el-table-column label="提案名称" prop="name" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="提案人" prop="createUserName"></el-table-column>
|
||||
<el-table-column label="提案类别" prop="typeName"></el-table-column>
|
||||
<el-table-column label="届次" prop="sessionName"></el-table-column>
|
||||
<el-table-column label="代表团" prop="delegationName"></el-table-column>
|
||||
<el-table-column label="立案结果" prop="caseFilingResult">
|
||||
<template scope="{row}">
|
||||
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT" :value="row.caseFilingResult"></dict-tag>
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="taskName" label="承办类型"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
<template slot-scope="{row}">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
size="small"></enum-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否并案" prop="isConsolidation" width="100">
|
||||
<template scope="{row}">
|
||||
<el-tag size="mini" v-if="row.isConsolidation" type="success">是</el-tag>
|
||||
<el-tag size="mini" v-else type="danger">否</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否主办" prop="isMasterUnderTake">
|
||||
<template scope="{row}">
|
||||
<el-tag v-if="row.isMasterUnderTake" size="mini" type="success">是</el-tag>
|
||||
<el-tag v-else size="mini" type="info">否</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="承办单位" prop="underTakeName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="primary" @click="onOpen(row)">查看</el-button>
|
||||
<el-button v-if="row.processInstanceTaskStatus==='ACTIVE'" @click="openApproval(row)" size="mini" type="primary">
|
||||
审核
|
||||
<el-table-column label="操作" fixed="right" width="300px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
|
||||
@click="openRevoke(row.processInstanceTaskId)"
|
||||
size="mini"
|
||||
type="danger"
|
||||
>
|
||||
撤回
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
<template #public>
|
||||
<proposal-info ref="infoRef" :hide_slave="true"></proposal-info>
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">{{formData.processInstanceNodeName}}</div>
|
||||
|
||||
<el-alert v-if="formData.isConsolidation" type="success" title="提醒:本提案已并案,您只需审批一次即可!"></el-alert>
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
|
||||
<el-form-item label="承办单位">
|
||||
<el-input :value="formData.underTakeName" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="审批意见" prop="approvalOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.approvalOpinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">-->
|
||||
<!-- <pc-signature v-model="formData.approvalSignature"></pc-signature>-->
|
||||
<!-- </el-form-item>-->
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button plain @click="$refs.guava.index()">取消</el-button>
|
||||
<el-button type="danger" @click="doApproval('BACK_OTHER_NODE')">退回重新答复</el-button>
|
||||
<el-button type="primary" @click="doApproval('PASS')">同意</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
<template #edit>
|
||||
<proposal-info ref="proposalInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">
|
||||
{{formData.taskName}}
|
||||
</div>
|
||||
<el-form :model="formData" ref="formRef" label-width="120px" :rules="formRules" label-suffix="">
|
||||
<el-form-item label="审批意见" prop="tf_opinion"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
<el-button @click="handleTaskAction(4)" size="small" type="danger">退回重新答复
|
||||
</el-button>
|
||||
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意答复</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</proposal-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include("../../common/info.js"){}#-->
|
||||
<!--#include('../../common/info.js'){}#-->
|
||||
|
||||
const vue = new Vue({
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
dicts: ["PROPOSAL_CASE_FILING_RESULT"],
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
"proposal-info": PROPOSAL_INFO_COMPONENT
|
||||
"proposal-info": PROPOSAL_INFO
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
sessionOptions: [],
|
||||
delegationOptions: [],
|
||||
showApprovalForm: false,
|
||||
pageForm: {
|
||||
approval: false
|
||||
}
|
||||
},
|
||||
formData: {},
|
||||
showApprovalForm: false,
|
||||
sessionOptions: [],
|
||||
delegationOptions: [],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOpen(row) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
openView(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
|
||||
openApproval(row) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
this.formData = row.approvalParam
|
||||
this.$set(this.formData, "implementState", null)
|
||||
this.$set(this.formData, "approvalOpinion", null)
|
||||
this.formData.isConsolidation = row.isConsolidation
|
||||
this.formData.underTakeName = row.underTakeName
|
||||
this.formData.underTakeId = row.underTakeId
|
||||
openAudit(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = true
|
||||
})
|
||||
},
|
||||
|
||||
doApproval(approvalType) {
|
||||
this.formData.bpmTaskApprovalType = approvalType
|
||||
this.$refs.approvalFormRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post(loc() + "/approval", {
|
||||
approval: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
this.formData = {
|
||||
processTaskId: row.taskId,
|
||||
taskKey: row.taskKey,
|
||||
taskName: row.taskName,
|
||||
}
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
|
||||
openRevoke(taskId) {
|
||||
handleTaskAction(val) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
const formData = {
|
||||
...this.formData,
|
||||
submitType: val
|
||||
}
|
||||
// 退回
|
||||
if(val === 4){
|
||||
formData.taskName = "85cf23da-2dd5-4007-a1e9-bd9bfddc68f0"
|
||||
formData.tf_hostUnitId = "da59e22f2a744a128b4f71c037c8d32e"
|
||||
}
|
||||
this.$axios.post("/flow/common/executeTask", {
|
||||
data: JSON.stringify(formData)
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 撤销
|
||||
onRevoke(row) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/revoke", { taskId }).then((res) => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
@@ -207,20 +184,25 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
})
|
||||
},
|
||||
//教代会change
|
||||
|
||||
// 教代会
|
||||
async meetingChange(val) {
|
||||
this.formData.delegationId = null
|
||||
this.formData.committeeId = null
|
||||
this.delegationOptions = await proposal.getDelegation(val)
|
||||
this.committeeOptions = await this.getInstitutions(val)
|
||||
},
|
||||
|
||||
// 代表团
|
||||
listDelegation() {
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", { sessionId: this.pageForm.sessionId }).then((res) => {
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.pageForm.sessionId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.delegationOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 查询开启的教代会
|
||||
listOpenSession() {
|
||||
this.$axios.post("/platform/proposal/common/listOpenSession").then((res) => {
|
||||
if (res.code === 0) {
|
||||
@@ -232,16 +214,15 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
del() {},
|
||||
openView(id) {}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
this.listOpenSession()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
-48
@@ -1,48 +0,0 @@
|
||||
<div id="suggestion-box-apply-form" v-cloak>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":" class="flow-task-form">
|
||||
<el-form-item label="审批意见" prop="tf_opinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<snaker-flow-task-form-action @task-action="handleTaskAction" @cancel="handleCancel"></snaker-flow-task-form-action>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: "#suggestion-box-apply-form",
|
||||
store,
|
||||
data() {
|
||||
return {
|
||||
businessId: GetQueryString("businessId"),
|
||||
formData: {},
|
||||
formRules: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleTaskAction(val) {
|
||||
console.log(val)
|
||||
|
||||
this.$axios
|
||||
.post("/flow/common/executeTask", {
|
||||
data: JSON.stringify({
|
||||
...val,
|
||||
...this.formData
|
||||
})
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("操作成功")
|
||||
// 发送完成消息
|
||||
window.GlobalBroadcastChannel.postMessage({
|
||||
type: "task-complete",
|
||||
payload: val
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCancel(val) {
|
||||
console.log(val)
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
+93
-23
@@ -2,15 +2,17 @@
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<guava ref="guava">
|
||||
<div id="app">
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度">
|
||||
<el-date-picker v-model="pageForm.year" type="year" value-format="yyyy" placeholder="年度" style="width: 100%"></el-date-picker>
|
||||
<search-item label="提案名称">
|
||||
<el-input v-model="pageForm.name" placeholder="提案名称" @keyup.enter.native="doSearch" clearable style="width: 100%"></el-input>
|
||||
</search-item>
|
||||
<search-item label="标题">
|
||||
<el-input v-model="pageForm.title" placeholder="标题" clearable></el-input>
|
||||
<search-item label="教代会">
|
||||
<el-select @change="meetingChange" 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-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
@@ -32,49 +34,117 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
<template slot-scope="{row}">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" size="small"></enum-tag>
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
size="small"></enum-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="300px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回</el-button>
|
||||
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
|
||||
</el-button>
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</div>
|
||||
</guava>
|
||||
|
||||
<template #edit>
|
||||
<proposal-info ref="proposalInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">
|
||||
{{formData.taskName}}
|
||||
</div>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":"
|
||||
class="flow-task-form">
|
||||
<el-form-item label="审批意见" prop="tf_opinion"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
<el-button @click="handleTaskAction(20)" size="small" type="danger">不同意</el-button>
|
||||
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</proposal-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include('../../common/info.js'){}#-->
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
"proposal-info": PROPOSAL_INFO
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageDataUrl: "/platform/proposal/seconded/pageData",
|
||||
pageForm: {
|
||||
approval: false
|
||||
}
|
||||
},
|
||||
showApprovalForm: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openView(row) {
|
||||
window.open(
|
||||
"/flow/common/approval/form?taskId=" +
|
||||
row.taskId +
|
||||
"&instanceId=" +
|
||||
row.instanceId +
|
||||
"&businessId=" +
|
||||
row.businessNo +
|
||||
"&sessionId=" +
|
||||
row.sessionId
|
||||
)
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
openAudit(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = true
|
||||
this.formData = {
|
||||
processTaskId: row.taskId,
|
||||
taskName: row.curTaskName
|
||||
}
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
|
||||
handleTaskAction(val) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/executeTask", {
|
||||
data: JSON.stringify({
|
||||
...this.formData,
|
||||
submitType: val
|
||||
})
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
onRevoke(row) {
|
||||
console.log(row)
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
||||
+133
-295
@@ -2,292 +2,193 @@
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style></style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="提案编号">
|
||||
<el-input v-model="pageForm.code" placeholder="提案编号" @keyup.enter.native="doSearch" clearable style="width: 100%"></el-input>
|
||||
<el-input v-model="pageForm.code" placeholder="提案编号" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
</search-item>
|
||||
<search-item label="提案名称">
|
||||
<el-input v-model="pageForm.name" placeholder="提案名称" @keyup.enter.native="doSearch" clearable style="width: 100%"></el-input>
|
||||
<el-input v-model="pageForm.name" placeholder="提案名称" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
</search-item>
|
||||
<search-item label="提案人姓名">
|
||||
<el-input
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人姓名"
|
||||
v-model="pageForm.createUserName"
|
||||
style="width: 100%"
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人姓名"
|
||||
v-model="pageForm.createUserName"
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
</search-item>
|
||||
<search-item label="提案人工号">
|
||||
<el-input
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人工号"
|
||||
v-model="pageForm.createUserLoginName"
|
||||
style="width: 100%"
|
||||
@keyup.enter.native="doSearch"
|
||||
clearable
|
||||
placeholder="请输入提案人工号"
|
||||
v-model="pageForm.createUserLoginName"
|
||||
style="width: 100%"
|
||||
></el-input>
|
||||
</search-item>
|
||||
<search-item label="教代会">
|
||||
<el-select @change="meetingChange" 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-select @change="meetingChange" 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-select>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<el-radio-group v-model="pageForm.transfer" @change="doSearch" size="small" v-if="$auth.hasRole('PROPOSAL_UNIT_LEADER')">
|
||||
<el-radio-button :label="true">已转办</el-radio-button>
|
||||
<el-radio-button :label="false">未转办</el-radio-button>
|
||||
</el-radio-group>
|
||||
|
||||
<el-radio-group v-model="pageForm.approval" @change="doSearch" size="small" v-if="!pageForm.transfer" class="ml5">
|
||||
<el-radio-button :label="true">已答复</el-radio-button>
|
||||
<el-radio-button :label="false">未答复</el-radio-button>
|
||||
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
|
||||
<el-radio-button :label="true">已审核</el-radio-button>
|
||||
<el-radio-button :label="false">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</table-tool>
|
||||
<el-table
|
||||
:data="tableData"
|
||||
@sort-change="pageOrder"
|
||||
header-align="center"
|
||||
style="width: 100%"
|
||||
:row-key="(val)=>{val.id + val.processInstanceTaskId}"
|
||||
>
|
||||
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
|
||||
<el-table-column label="序号" width="50" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="提案编号" prop="code" width="120px" sortable></el-table-column>
|
||||
<el-table-column label="提案编号" prop="code"></el-table-column>
|
||||
<el-table-column label="提案名称" prop="name" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="提案人" prop="createUserName"></el-table-column>
|
||||
<el-table-column label="提案类别" prop="typeName"></el-table-column>
|
||||
<el-table-column label="届次" prop="sessionName"></el-table-column>
|
||||
<el-table-column label="代表团" prop="delegationName"></el-table-column>
|
||||
<el-table-column label="立案结果" prop="caseFilingResult">
|
||||
<template scope="{row}">
|
||||
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT" :value="row.caseFilingResult"></dict-tag>
|
||||
<el-table-column prop="curTaskName" label="当前节点"></el-table-column>
|
||||
<el-table-column prop="taskName" label="承办类型"></el-table-column>
|
||||
<el-table-column prop="instanceState" label="流程状态">
|
||||
<template slot-scope="{row}">
|
||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||
size="small"></enum-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否并案" prop="isConsolidation" width="100px">
|
||||
<template scope="{row}">
|
||||
<el-tag size="mini" v-if="row.isConsolidation" type="success">是</el-tag>
|
||||
<el-tag size="mini" v-else type="danger">否</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="承办单位" prop="underTakeName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="是否主办" prop="isMasterUnderTake" width="100px">
|
||||
<template scope="{row}">
|
||||
<el-tag v-if="row.isMasterUnderTake" size="mini" type="success">是</el-tag>
|
||||
<el-tag v-else size="mini" type="info">否</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="转办答复人" prop="underTakeTransferUserName" v-if="$auth.hasRole('PROPOSAL_UNIT_LEADER')">
|
||||
<template scope="{row}">
|
||||
<span v-if="row.underTakeReplyIsTransfer">{{row.underTakeTransferUserName?.join(',') || '-'}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="操作" fixed="right" width="300px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="primary" @click="onOpen(row)">查看</el-button>
|
||||
<el-button v-if="row.processInstanceTaskStatus==='ACTIVE'" @click="openApproval(row)" size="mini" type="primary">
|
||||
答复
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">答复
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="row.processInstanceTaskStatus==='ACTIVE' && $auth.hasRole('PROPOSAL_UNIT_LEADER')"
|
||||
@click="openTransfer(row)"
|
||||
size="mini"
|
||||
type="primary"
|
||||
>
|
||||
转办答复
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
|
||||
@click="openRevoke(row.processInstanceTaskId)"
|
||||
size="mini"
|
||||
type="danger"
|
||||
>
|
||||
撤回
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="row.processInstanceTaskStatus==='TRANSFER' && !row.nextTransferTaskIsComplete"
|
||||
@click="openRevokeTransfer(row.processInstanceTaskId)"
|
||||
size="mini"
|
||||
type="danger"
|
||||
>
|
||||
撤回转办
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
<template #public>
|
||||
<proposal-info ref="infoRef"></proposal-info>
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">{{formData.processInstanceNodeName}}</div>
|
||||
|
||||
<el-alert v-if="formData.isConsolidation" type="success" title="提醒:本提案已并案,您只需答复一次即可!"></el-alert>
|
||||
<el-divider></el-divider>
|
||||
|
||||
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
|
||||
<el-form-item label="承办单位">
|
||||
<el-input :value="formData.underTakeName" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="落实情况" prop="implementState" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<dict-select v-model="formData.implementState" code="PROPOSAL_REPLY_IMPLEMENT"></dict-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="答复内容" prop="approvalOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<text-editor v-model="formData.approvalOpinion"></text-editor>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">-->
|
||||
<!-- <pc-signature v-model="formData.approvalSignature"></pc-signature>-->
|
||||
<!-- </el-form-item>-->
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button plain @click="$refs.guava.index()">取消</el-button>
|
||||
<el-button type="primary" @click="doApproval('DYNAMIC')">提交</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
<template #edit>
|
||||
<proposal-info ref="proposalInfoRef">
|
||||
<div v-if="showApprovalForm">
|
||||
<div class="process-title">
|
||||
{{formData.taskName}}
|
||||
</div>
|
||||
<el-form :model="formData" ref="formRef" label-width="120px" :rules="formRules" label-suffix="">
|
||||
<el-form-item label="承办单位">
|
||||
<el-input :value="formData.underTakeName" disabled></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="落实情况" prop="implementState" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">-->
|
||||
<!-- <dict-select v-model="formData.implementState" code="PROPOSAL_REPLY_IMPLEMENT"></dict-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<el-form-item label="答复内容" prop="tf_opinion"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<text-editor v-model="formData.tf_opinion"></text-editor>
|
||||
</el-form-item>
|
||||
<el-form-item label="校领导" prop="tf_nextNodeOperator"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-select v-model="formData.tf_nextNodeOperator" placeholder="请选择校领导">
|
||||
<el-option :key="item.id" :label="item.userName" :value="item.userId"
|
||||
v-for="item in candidates"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end">
|
||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||
<el-button @click="handleTaskAction(1)" size="small" type="primary">提交</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
</proposal-info>
|
||||
</template>
|
||||
|
||||
<el-dialog title="转办答复" :visible.sync="transferDialogVisible" width="50%">
|
||||
<el-form :model="transferFormData" ref="transferFormRef" label-position="left" label-width="80px">
|
||||
<el-form-item label="提案名称">
|
||||
<el-input :value="transferFormData.name" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="转办人" prop="transferUserLoginName" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-select
|
||||
v-model="transferFormData.transferUserLoginName"
|
||||
remote
|
||||
:remote-method="queryTransferUser"
|
||||
filterable
|
||||
placeholder="可按姓名或工号搜索需要转办的用户"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option :key="item.id" :label="item.label" :value="item.loginname" v-for="item in transferUserOptions"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button plain @click="transferDialogVisible=false">取消</el-button>
|
||||
<el-button type="primary" @click="doTransfer">提交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include("../../common/info.js"){}#-->
|
||||
<!--#include('../../common/info.js'){}#-->
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
dicts: ["PROPOSAL_CASE_FILING_RESULT"],
|
||||
store,
|
||||
dicts: ["PROPOSAL_CASE_FILING_RESULT"],
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
"proposal-info": PROPOSAL_INFO_COMPONENT
|
||||
"proposal-info": PROPOSAL_INFO
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
approval: false
|
||||
},
|
||||
formData: {},
|
||||
showApprovalForm: false,
|
||||
sessionOptions: [],
|
||||
delegationOptions: [],
|
||||
pageForm: {
|
||||
approval: false,
|
||||
transfer: false
|
||||
},
|
||||
showApprovalForm: false,
|
||||
transferFormData: {},
|
||||
transferDialogVisible: false,
|
||||
transferUserOptions: []
|
||||
candidates: [],
|
||||
supportCandidate: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onOpen(row) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
openView(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = false
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
openAudit(row) {
|
||||
this.loadCandidates(row.taskId)
|
||||
|
||||
|
||||
this.$refs.guava.edit(() => {
|
||||
this.showApprovalForm = true
|
||||
this.formData = {
|
||||
processTaskId: row.taskId,
|
||||
taskKey: row.taskKey,
|
||||
taskName: row.taskName,
|
||||
hostUnitId: null,
|
||||
helpUnitIds: []
|
||||
}
|
||||
this.$refs.proposalInfoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
|
||||
//检查能否答复
|
||||
checkCanReply(taskId) {
|
||||
return this.$axios.post(loc() + "/checkCanReply", { taskId })
|
||||
},
|
||||
|
||||
openApproval(row) {
|
||||
this.checkCanReply(row.processInstanceTaskId).then((res) => {
|
||||
if (res.code === 0) {
|
||||
if (res.data && res.data.errMsg) {
|
||||
this.$alert(res.data.errMsg, "提示", {
|
||||
type: "warning",
|
||||
dangerouslyUseHTMLString: true,
|
||||
confirmButtonText: "已线下沟通,开始答复",
|
||||
cancelButtonText: "关闭",
|
||||
showCancelButton: true
|
||||
})
|
||||
.then(()=>{
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
this.formData = row.approvalParam
|
||||
this.$set(this.formData, "implementState", null)
|
||||
this.formData.isConsolidation = row.isConsolidation
|
||||
this.formData.underTakeName = row.underTakeName
|
||||
this.formData.underTakeId = row.underTakeId
|
||||
this.showApprovalForm = true
|
||||
})
|
||||
})
|
||||
.catch()
|
||||
} else {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.infoRef.onOpen(row.id)
|
||||
this.formData = row.approvalParam
|
||||
this.$set(this.formData, "implementState", null)
|
||||
if(row.isMasterUnderTake){
|
||||
this.$set(this.formData, "approvalOpinion", res.data.allSlaveApprovalOpinion)
|
||||
}else{
|
||||
this.$set(this.formData, "approvalOpinion", null)
|
||||
}
|
||||
if(res.data?.task?.endOn){
|
||||
this.$set(this.formData, "approvalOpinion", res.data?.task?.extVariable?.approvalOpinion)
|
||||
this.$set(this.formData, "implementState", res.data?.task?.extVariable?.implementState)
|
||||
}
|
||||
this.formData.isConsolidation = row.isConsolidation
|
||||
this.formData.underTakeName = row.underTakeName
|
||||
this.formData.underTakeId = row.underTakeId
|
||||
this.showApprovalForm = true
|
||||
})
|
||||
handleTaskAction(val) {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post("/flow/common/executeTask", {
|
||||
data: JSON.stringify({
|
||||
...this.formData,
|
||||
submitType: val
|
||||
})
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
doApproval(approvalType) {
|
||||
this.formData.bpmTaskApprovalType = approvalType
|
||||
this.$refs.approvalFormRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post(loc() + "/approval", {
|
||||
approval: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.index()
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
openRevoke(taskId) {
|
||||
// 撤销
|
||||
onRevoke(row) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/revoke", { taskId }).then((res) => {
|
||||
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
@@ -296,98 +197,36 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
|
||||
openRevokeTransfer(taskId) {
|
||||
this.$confirm("您确定要撤回转办吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/revokeTransfer", { taskId }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
//打开转办答复
|
||||
openTransfer(row) {
|
||||
// this.checkCanReply(row.processInstanceTaskId).then((res) => {
|
||||
// if (res.code === 0) {
|
||||
// if (res.data && res.data.errMsg) {
|
||||
// this.$alert(res.data.errMsg, "提示", {
|
||||
// type: "warning"
|
||||
// })
|
||||
// .then()
|
||||
// .catch()
|
||||
// } else {
|
||||
// this.transferFormData = {
|
||||
// name: row.name,
|
||||
// proposalId: row.id,
|
||||
// underTakeId: row.underTakeId,
|
||||
// processInstanceId: row.processInstanceId,
|
||||
// processInstanceTaskId: row.processInstanceTaskId,
|
||||
// transferUserLoginName: null
|
||||
// }
|
||||
// this.transferDialogVisible = true
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
this.transferFormData = {
|
||||
name: row.name,
|
||||
proposalId: row.id,
|
||||
underTakeId: row.underTakeId,
|
||||
processInstanceId: row.processInstanceId,
|
||||
processInstanceTaskId: row.processInstanceTaskId,
|
||||
transferUserLoginName: null
|
||||
}
|
||||
this.transferDialogVisible = true
|
||||
},
|
||||
|
||||
//搜索转办人
|
||||
queryTransferUser(keyword) {
|
||||
if (keyword) {
|
||||
this.$axios.post(loc() + "/queryTransferUser", { keyword }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.transferUserOptions = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
doTransfer() {
|
||||
this.$refs.transferFormRef.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post(loc() + "/transfer", {
|
||||
transfer: JSON.stringify(this.transferFormData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.transferDialogVisible = false
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
// 加载候选人列表
|
||||
loadCandidates(taskId) {
|
||||
$.get("/flow/common/candidate", {taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.candidates = res.data.candidates
|
||||
this.supportCandidate = res.data.support
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
//教代会change
|
||||
|
||||
// 教代会
|
||||
async meetingChange(val) {
|
||||
this.formData.delegationId = null
|
||||
this.formData.committeeId = null
|
||||
this.delegationOptions = await proposal.getDelegation(val)
|
||||
this.committeeOptions = await this.getInstitutions(val)
|
||||
},
|
||||
|
||||
// 代表团
|
||||
listDelegation() {
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", { sessionId: this.pageForm.sessionId }).then((res) => {
|
||||
this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.pageForm.sessionId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.delegationOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 查询开启的教代会
|
||||
listOpenSession() {
|
||||
this.$axios.post("/platform/proposal/common/listOpenSession").then((res) => {
|
||||
if (res.code === 0) {
|
||||
@@ -399,16 +238,15 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
del() {},
|
||||
openView(id) {}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
this.listOpenSession()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
|
||||
+104
-84
@@ -27,28 +27,33 @@ layout("/layouts/platform.html"){
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属教代会" prop="sessionId">
|
||||
<el-select
|
||||
@change="meetingChange"
|
||||
clearable
|
||||
filterable
|
||||
placeholder="所属教代会"
|
||||
v-model="formData.sessionId"
|
||||
style="width: 100%"
|
||||
@change="meetingChange"
|
||||
clearable
|
||||
filterable
|
||||
placeholder="所属教代会"
|
||||
v-model="formData.sessionId"
|
||||
style="width: 100%"
|
||||
>
|
||||
<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-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属代表团" prop="delegationId">
|
||||
<el-select clearable filterable placeholder="所属代表团" v-model="formData.delegationId" style="width: 100%" disabled>
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in delegationOptions"></el-option>
|
||||
<el-select clearable filterable placeholder="所属代表团" v-model="formData.delegationId"
|
||||
style="width: 100%" disabled>
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in delegationOptions"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="所属委员会" prop="committeeId" v-if="formData.mannerCode=='W03'">
|
||||
<el-select clearable filterable placeholder="所属委员会" v-model="formData.committeeId" style="width: 100%">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in committeeOptions"></el-option>
|
||||
<el-select clearable filterable placeholder="所属委员会" v-model="formData.committeeId"
|
||||
style="width: 100%">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||
v-for="item in committeeOptions"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -76,7 +81,8 @@ layout("/layouts/platform.html"){
|
||||
<el-col :span="12">
|
||||
<el-form-item label="提案方式" prop="source">
|
||||
<el-select v-model="formData.source" style="width: 100%">
|
||||
<el-option :key="item.code" :label="item.name" :value="item.code" v-for="item in sourceOptions"></el-option>
|
||||
<el-option :key="item.code" :label="item.name" :value="item.code"
|
||||
v-for="item in sourceOptions"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -86,7 +92,8 @@ layout("/layouts/platform.html"){
|
||||
<el-col :span="12">
|
||||
<el-form-item label="提案类别" prop="typeId">
|
||||
<el-select v-model="formData.typeId" style="width: 100%">
|
||||
<el-option :key="item.code" :label="item.name" :value="item.id" v-for="item in typeOptions"></el-option>
|
||||
<el-option :key="item.code" :label="item.name" :value="item.id"
|
||||
v-for="item in typeOptions"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -100,37 +107,38 @@ layout("/layouts/platform.html"){
|
||||
</el-tooltip>
|
||||
</span>
|
||||
<el-input
|
||||
v-model="formData.excerpt"
|
||||
type="textarea"
|
||||
autosize
|
||||
:autosize="{ minRows: 4, maxRows: 4}"
|
||||
placeholder="提案摘要"
|
||||
v-model="formData.excerpt"
|
||||
type="textarea"
|
||||
autosize
|
||||
:autosize="{ minRows: 4, maxRows: 4}"
|
||||
placeholder="提案摘要"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="提案内容和依据" prop="brief">
|
||||
<text-editor v-model="formData.brief" key="brief" placeholder="提案内容和依据"></text-editor>
|
||||
</el-form-item>
|
||||
<el-form-item label="改进建议和措施" prop="measures">
|
||||
<text-editor v-model="formData.measures" key="measures" placeholder="改进建议和措施"></text-editor>
|
||||
<text-editor v-model="formData.measures" key="measures"
|
||||
placeholder="改进建议和措施"></text-editor>
|
||||
</el-form-item>
|
||||
<el-form-item label="附件上传" prop="files">
|
||||
<file-upload
|
||||
:value.sync="formData.files"
|
||||
:upload_number="5"
|
||||
upload_result_category="array"
|
||||
upload_mode="drag"
|
||||
complete_result
|
||||
:value.sync="formData.files"
|
||||
:upload_number="5"
|
||||
upload_result_category="array"
|
||||
upload_mode="drag"
|
||||
complete_result
|
||||
></file-upload>
|
||||
</el-form-item>
|
||||
|
||||
<!--# if(@auth.getPrincipalProperty('loginname')!='20130316'){ #-->
|
||||
<el-form-item label="电子签名" prop="signature">
|
||||
<pc-signature v-model="formData.signature"></pc-signature>
|
||||
</el-form-item>
|
||||
<!--# } #-->
|
||||
</el-form>
|
||||
<el-row justify="end" type="flex" v-if="showButton">
|
||||
<el-button @click="doSave" type="primary">保存到我的提案</el-button>
|
||||
<el-button @click="onSave" type="primary">保存</el-button>
|
||||
<el-button type="primary" @click="onSubmit" v-if="!taskId">提交</el-button>
|
||||
<el-button type="primary" @click="onSubmitAgain" v-else>提交</el-button>
|
||||
</el-row>
|
||||
</template>
|
||||
</el-card>
|
||||
@@ -152,6 +160,9 @@ layout("/layouts/platform.html"){
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
bizId: GetQueryString("bizId"),
|
||||
taskId: GetQueryString("taskId"),
|
||||
|
||||
formData: {},
|
||||
sessionOptions: [],
|
||||
sourceOptions: [],
|
||||
@@ -159,22 +170,22 @@ layout("/layouts/platform.html"){
|
||||
committeeOptions: [],
|
||||
typeOptions: [],
|
||||
formRules: {
|
||||
createUserName: [{ required: true, message: "请填写提案人", trigger: ["blur", "change"] }],
|
||||
createTime: [{ required: true, message: "请填写提案时间", trigger: ["blur", "change"] }],
|
||||
name: [{ required: true, message: "请填写提案名称", trigger: ["blur", "change"] }],
|
||||
source: [{ required: true, message: "请选择提案方式", trigger: ["blur", "change"] }],
|
||||
delegationId: [{ required: true, message: "请选择所属代表团", trigger: ["blur", "change"] }],
|
||||
sessionId: [{ required: true, message: "请选择所属教代会", trigger: ["blur", "change"] }],
|
||||
committeeId: [{ required: true, message: "请选择所属委员会", trigger: ["blur", "change"] }],
|
||||
typeId: [{ required: true, message: "请选择提案类别", trigger: ["blur", "change"] }],
|
||||
implementUnitId: [{ required: false, message: "请选择建以落实部门", trigger: ["blur", "change"] }],
|
||||
sign: [{ required: true, message: "请扫描二维码进行签字", trigger: ["blur", "change"] }],
|
||||
excerpt: [{ required: true, message: "请填写", trigger: ["blur", "change"] }],
|
||||
brief: [{ required: true, message: "请填写", trigger: ["blur", "change"] }],
|
||||
measures: [{ required: true, message: "请填写", trigger: ["blur", "change"] }],
|
||||
unitName: [{ required: true, message: "请填写", trigger: ["blur", "change"] }],
|
||||
mobile: [{ required: true, message: "请填写", trigger: ["blur", "change"] }],
|
||||
signature: [{ required: true, message: "请扫描二维码进行签字", trigger: ["blur", "change"] }]
|
||||
createUserName: [{required: true, message: "请填写提案人", trigger: ["blur", "change"]}],
|
||||
createTime: [{required: true, message: "请填写提案时间", trigger: ["blur", "change"]}],
|
||||
name: [{required: true, message: "请填写提案名称", trigger: ["blur", "change"]}],
|
||||
source: [{required: true, message: "请选择提案方式", trigger: ["blur", "change"]}],
|
||||
delegationId: [{required: true, message: "请选择所属代表团", trigger: ["blur", "change"]}],
|
||||
sessionId: [{required: true, message: "请选择所属教代会", trigger: ["blur", "change"]}],
|
||||
committeeId: [{required: true, message: "请选择所属委员会", trigger: ["blur", "change"]}],
|
||||
typeId: [{required: true, message: "请选择提案类别", trigger: ["blur", "change"]}],
|
||||
implementUnitId: [{required: false, message: "请选择建以落实部门", trigger: ["blur", "change"]}],
|
||||
sign: [{required: true, message: "请扫描二维码进行签字", trigger: ["blur", "change"]}],
|
||||
excerpt: [{required: true, message: "请填写", trigger: ["blur", "change"]}],
|
||||
brief: [{required: true, message: "请填写", trigger: ["blur", "change"]}],
|
||||
measures: [{required: true, message: "请填写", trigger: ["blur", "change"]}],
|
||||
unitName: [{required: true, message: "请填写", trigger: ["blur", "change"]}],
|
||||
mobile: [{required: true, message: "请填写", trigger: ["blur", "change"]}],
|
||||
signature: [{required: false, message: "请扫描二维码进行签字", trigger: ["blur", "change"]}]
|
||||
},
|
||||
proposalConfig: {},
|
||||
noticeDialogVisible: false,
|
||||
@@ -183,7 +194,7 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async doSave() {
|
||||
async onSave() {
|
||||
const valid = await this.$refs["addForm"].validate()
|
||||
if (valid) {
|
||||
if (!this.formData.name || this.formData.name.trim().length < 1) {
|
||||
@@ -195,41 +206,53 @@ layout("/layouts/platform.html"){
|
||||
return
|
||||
}
|
||||
|
||||
this.$axios.post(loc() + "/save", { info: JSON.stringify(this.formData) }).then((res) => {
|
||||
this.$axios.post("/platform/proposal/write/save", {info: JSON.stringify(this.formData)}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.formData = res.data
|
||||
this.$store.dispatch("pjaxRoute", "/platform/proposal/mine")
|
||||
window.location.href = '/platform/proposal/mine'
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
async doSubmit() {
|
||||
const valid = await this.$refs["addForm"].validate()
|
||||
if (valid) {
|
||||
const confirm = await this.$confirm("确定要提交此提案吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
})
|
||||
if ("confirm" === confirm) {
|
||||
let data = clone(this.formData)
|
||||
if (data.files) {
|
||||
data.files = JSON.stringify(data.files)
|
||||
}
|
||||
const resp = await this.$axios.post(loc() + "/doSubmit", {
|
||||
data: JSON.stringify(data)
|
||||
})
|
||||
if (resp.code === 0) {
|
||||
this.$message.success(resp.msg)
|
||||
// location.href = "/platform/proposal/transact/compose"
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
// 提交
|
||||
onSubmit() {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post('/platform/proposal/write/submit', {info: JSON.stringify(this.formData)}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("提交成功")
|
||||
window.location.href = '/platform/proposal/mine'
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 重新提交
|
||||
onSubmitAgain() {
|
||||
this.$confirm("您确定要提交吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
this.$axios.post('/platform/proposal/write/submitAgain', {
|
||||
info: JSON.stringify(this.formData),
|
||||
taskId: GetQueryString("taskId")
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success("提交成功")
|
||||
window.location.href = '/platform/proposal/mine'
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 获取提案类别
|
||||
listProposalType() {
|
||||
this.$axios.post("/platform/proposal/common/listProposalType").then((res) => {
|
||||
if (res.code === 0) {
|
||||
@@ -238,6 +261,7 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
|
||||
// 获取配置
|
||||
getProposalConfig() {
|
||||
return this.$axios.post("/platform/proposal/common/config").then((res) => {
|
||||
if (res.code === 0) {
|
||||
@@ -255,13 +279,17 @@ layout("/layouts/platform.html"){
|
||||
// this.delegationOptions = await proposal.getDelegation(val)
|
||||
// this.committeeOptions = await this.getInstitutions(val)
|
||||
},
|
||||
|
||||
// 获取代表团
|
||||
listDelegation() {
|
||||
return this.$axios.post("/platform/proposal/common/listDelegation", { sessionId: this.formData.sessionId }).then((res) => {
|
||||
return this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.formData.sessionId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.delegationOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 查询开启的教代会
|
||||
listOpenSession(isModify = false) {
|
||||
this.$axios.post("/platform/proposal/common/listOpenSession").then(async (res) => {
|
||||
if (res.code === 0) {
|
||||
@@ -278,7 +306,7 @@ layout("/layouts/platform.html"){
|
||||
|
||||
//查询自己有权限的撰写方式
|
||||
listSource() {
|
||||
return this.$axios.post("/platform/proposal/write/listSource", { sessionId: this.formData.sessionId }).then((res) => {
|
||||
return this.$axios.post("/platform/proposal/write/listSource", {sessionId: this.formData.sessionId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.sourceOptions = res.data
|
||||
}
|
||||
@@ -287,7 +315,7 @@ layout("/layouts/platform.html"){
|
||||
|
||||
//查询自己有权限的代表团
|
||||
searchMineDelegation() {
|
||||
return this.$axios.post("/platform/proposal/write/searchMineDelegation", { sessionId: this.formData.sessionId }).then((res) => {
|
||||
return this.$axios.post("/platform/proposal/write/searchMineDelegation", {sessionId: this.formData.sessionId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$set(this.formData, "delegationId", res.data)
|
||||
}
|
||||
@@ -295,22 +323,14 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
|
||||
init() {
|
||||
const id = GetQueryString("id")
|
||||
if (id) {
|
||||
this.$axios.post(loc() + "/detail", { id }).then((res) => {
|
||||
if (this.bizId) {
|
||||
this.$axios.post("/platform/proposal/write/detail", {id: this.bizId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.formData = res.data
|
||||
this.listOpenSession(true)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$confirm('本届提案征集已结束!', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
})
|
||||
this.showButton = false
|
||||
|
||||
// this.noticeDialogVisible = true
|
||||
this.listOpenSession(false)
|
||||
this.$set(this.formData, "createUserId", this.$store.state.user.id)
|
||||
|
||||
@@ -21,8 +21,8 @@ const SUGGESTION_INFO = {
|
||||
v-if="task.ext.isFirstTaskNode">
|
||||
<el-descriptions-item label="申请用户">{{ task.ext.initiatorName
|
||||
}}({{task.ext.initiatorAccount}})
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申请时间">{{ task.finishTime }}</el-descriptions-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申请时间">{{ task.finishTime }}</el-descriptions-item>
|
||||
<el-descriptions-item label="办理结果">
|
||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
|
||||
:value="task.ext.submitType"></dict-tag>
|
||||
@@ -88,8 +88,8 @@ const SUGGESTION_INFO = {
|
||||
},
|
||||
|
||||
// 查看流程图
|
||||
openChart(){
|
||||
this.$refs.snakerChartRef.onOpenFull(this.row.instanceProcessDefineId,this.row.instanceId)
|
||||
openChart() {
|
||||
this.$refs.snakerChartRef.onOpenFull(this.row.instanceProcessDefineId, this.row.instanceId)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,26 +5,43 @@ layout("/layouts/platform.html"){
|
||||
<div id="app" v-cloak>
|
||||
<el-card shadow="never">
|
||||
<snaker-start slot="header" label="意见箱" define_key="JYXC"></snaker-start>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":"
|
||||
class="flow-task-form">
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="姓名">{{formData.userName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="工号">{{formData.loginName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="单位">{{formData.unitName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="工会">{{formData.unionName}}</el-descriptions-item>
|
||||
<el-descriptions-item label="标题" :span="2">
|
||||
<el-form-item prop="title" label="标题">
|
||||
<el-input v-model="formData.title" maxlength="100" show-word-limit
|
||||
placeholder="请输入标题"></el-input>
|
||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="130px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓名" prop="userName">
|
||||
<el-input v-model="formData.userName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="填写意见建议内容" :span="2">
|
||||
<el-form-item prop="content" label="填写意见建议内容">
|
||||
<el-input v-model="formData.content" type="textarea" maxlength="500" show-word-limit
|
||||
placeholder="请输入内容"></el-input>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工号" prop="loginName">
|
||||
<el-input v-model="formData.loginName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="单位" prop="unitName">
|
||||
<el-input v-model="formData.unitName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工会" prop="unionName">
|
||||
<el-input v-model="formData.unionName" readonly></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item prop="title" label="标题">
|
||||
<el-input v-model="formData.title" maxlength="100" show-word-limit
|
||||
placeholder="请输入标题"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="content" label="意见建议内容">
|
||||
<el-input v-model="formData.content" type="textarea" maxlength="500" show-word-limit
|
||||
rows="5"
|
||||
placeholder="请输入内容"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end" class="mt20">
|
||||
<el-button type="primary" plain @click="onSave">保存</el-button>
|
||||
|
||||
@@ -39,10 +39,8 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column label="操作" fixed="right" width="200px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
|
||||
</el-button>
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||
</el-button>
|
||||
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核</el-button>
|
||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
+28
-3
@@ -13,6 +13,7 @@ layout("/layouts/platform.html"){
|
||||
formData="yyyy"
|
||||
type="year"
|
||||
placeholder="选择年份"
|
||||
clearable
|
||||
></el-date-picker>
|
||||
</search-item>
|
||||
<search-item label="届数">
|
||||
@@ -41,7 +42,8 @@ layout("/layouts/platform.html"){
|
||||
<i class="fa fa-circle" :class="row.enable ? 'text-success' : 'text-danger'" style="margin-left: 5px"></i>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="collectStartTime" label="提案征集开始时间"></el-table-column>
|
||||
<el-table-column prop="collectEndTime" label="提案征集结束时间"></el-table-column>
|
||||
<el-table-column label="操作" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="primary" @click="openEdit(scope.row.id)">编辑</el-button>
|
||||
@@ -53,7 +55,7 @@ layout("/layouts/platform.html"){
|
||||
</el-card>
|
||||
|
||||
<el-dialog :title="formData.id ? '编辑':'新增'" :visible.sync="dialogFormVisible" width="60%" :close-on-click-modal="false">
|
||||
<el-form :model="formData" ref="formRef" size="small" label-width="120px" :rules="formRules">
|
||||
<el-form :model="formData" ref="formRef" size="small" label-width="140px" :rules="formRules">
|
||||
<el-form-item prop="year" label="年份">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
@@ -94,6 +96,27 @@ layout("/layouts/platform.html"){
|
||||
延用上一次教代会的组织机构及代表信息,包含【筹备领导小组;资格审查小组;主席团;执行委员会;专门委员会;代表团;教代会代表】。
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="collectStartTime" label="提案征集开始时间">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
v-model="formData.collectStartTime"
|
||||
type="datetime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="选择时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="collectEndTime" label="提案征集结束时间">
|
||||
<el-date-picker
|
||||
style="width: 100%"
|
||||
v-model="formData.collectEndTime"
|
||||
type="datetime"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
placeholder="选择时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogFormVisible = false">取 消</el-button>
|
||||
@@ -115,7 +138,9 @@ layout("/layouts/platform.html"){
|
||||
c: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
enable: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
description: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
isExtend: [{ required: true, message: "必填", trigger: ["change", "blur"] }]
|
||||
isExtend: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
collectStartTime: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
collectEndTime: [{ required: true, message: "必填", trigger: ["change", "blur"] }]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user