..
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="课程">
|
||||
<el-select v-model="pageForm.courseId" placeholder="请选择课程" clearable>
|
||||
<el-option v-for="item in coursesOptions" :key="item.id" :value="item.id"
|
||||
:label="item.title"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="开始时间">
|
||||
<el-date-picker v-model="pageForm.startDate" type="date" placeholder="请选择开始时间"
|
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd" clearable>
|
||||
</el-date-picker>
|
||||
</search-item>
|
||||
<search-item label="结束时间">
|
||||
<el-date-picker v-model="pageForm.endDate" type="date" placeholder="请选择结束时间"
|
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd" clearable>
|
||||
</el-date-picker>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
<el-card shadow="never">
|
||||
<el-table :data="tableData">
|
||||
<el-table-column label="序号" width="80" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginname"></el-table-column>
|
||||
<el-table-column label="姓名" prop="username"></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="totalWatchTime"></el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: '#app',
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
tableData: [],
|
||||
coursesOptions: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
pageData() {
|
||||
this.$axios.post('/platform/edu/personRank/ranking', this.pageForm).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.tableData = res.data.list
|
||||
this.pageForm.totalCount = res.data.totalCount
|
||||
}
|
||||
})
|
||||
},
|
||||
listCourses() {
|
||||
this.$axios.post('/platform/edu/personRank/courses').then(res => {
|
||||
if (res.code === 0) {
|
||||
this.coursesOptions = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.listCourses()
|
||||
this.pageData()
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,77 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="课程">
|
||||
<el-select v-model="pageForm.courseId" placeholder="请选择课程" clearable>
|
||||
<el-option v-for="item in coursesOptions" :key="item.id" :value="item.id"
|
||||
:label="item.title"></el-option>
|
||||
</el-select>
|
||||
</search-item>
|
||||
<search-item label="开始时间">
|
||||
<el-date-picker v-model="pageForm.startDate" type="date" placeholder="请选择开始时间"
|
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd" clearable>
|
||||
</el-date-picker>
|
||||
</search-item>
|
||||
<search-item label="结束时间">
|
||||
<el-date-picker v-model="pageForm.endDate" type="date" placeholder="请选择结束时间"
|
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd" clearable>
|
||||
</el-date-picker>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
<el-card shadow="never">
|
||||
<el-table :data="tableData">
|
||||
<el-table-column label="序号" width="80" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="分工会名称" prop="unionName"></el-table-column>
|
||||
<el-table-column label="分工会编码" prop="unionCode"></el-table-column>
|
||||
<el-table-column label="参与人数" prop="participantCount"></el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: '#app',
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
tableData: [],
|
||||
coursesOptions: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
pageData() {
|
||||
this.$axios.post('/platform/edu/unionRank/ranking', this.pageForm).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.tableData = res.data.list
|
||||
this.pageForm.totalCount = res.data.totalCount
|
||||
}
|
||||
})
|
||||
},
|
||||
listCourses() {
|
||||
this.$axios.post('/platform/edu/unionRank/courses').then(res => {
|
||||
if (res.code === 0) {
|
||||
this.coursesOptions = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.listCourses()
|
||||
this.pageData()
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -21,6 +21,9 @@ const PROPOSAL_INFO = {
|
||||
<el-descriptions-item label="提案类别">
|
||||
{{viewData.typeName}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="建议承办单位">
|
||||
{{viewData.suggestUnits}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="立案结果" :span="2">
|
||||
<dict-tag :options="dict.type.PROPOSAL_CASE_FILING_RESULT"
|
||||
:value="viewData.caseFilingResult"></dict-tag>
|
||||
|
||||
@@ -0,0 +1,279 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.nodes-title {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
color: #303133;
|
||||
}
|
||||
|
||||
.nodes-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.node-card {
|
||||
background: #fff;
|
||||
padding: 20px;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
border-top: 4px solid var(--theme-color);
|
||||
transition: all 0.3s ease;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
min-height: 80px;
|
||||
}
|
||||
|
||||
.node-card:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.node-icon {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 50%;
|
||||
background: var(--theme-color);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 16px;
|
||||
font-size: 24px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.node-content {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.node-name {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
color: #303133;
|
||||
margin-bottom: 8px;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.node-count {
|
||||
font-size: 28px;
|
||||
font-weight: 700;
|
||||
color: var(--theme-color);
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.node-card.selected {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
|
||||
border-top-width: 4px;
|
||||
}
|
||||
|
||||
.node-card.selected .node-icon {
|
||||
transform: scale(1.1);
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.nodes-title {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.nodes-grid {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 15px;
|
||||
}
|
||||
|
||||
.node-card {
|
||||
padding: 16px;
|
||||
min-height: 70px;
|
||||
}
|
||||
|
||||
.node-icon {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
font-size: 20px;
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
.node-name {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.node-count {
|
||||
font-size: 24px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="教代会">
|
||||
<el-select @change="sessionChange" 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" class="mt10">
|
||||
<div slot="header" class="nodes-title">统计看板</div>
|
||||
<div class="nodes-grid">
|
||||
<div
|
||||
v-for="(node, index) in nodes"
|
||||
:key="node.id"
|
||||
class="node-card"
|
||||
:class="{ selected: pageForm.selectNodeId === node.id }"
|
||||
:style="'--theme-color:' + getThemeColor(index)"
|
||||
@click="selectNode(node,index)"
|
||||
>
|
||||
<div class="node-icon">
|
||||
<i class="fa fa-tasks"></i>
|
||||
</div>
|
||||
<div class="node-content">
|
||||
<div class="node-name">{{ node.name || '未命名节点' }}</div>
|
||||
<div class="node-count">{{ node.count || 0 }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never" class="mt10">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="nodes-title">{{ tableCardTitle }}</span>
|
||||
</div>
|
||||
<el-table :data="tableData" @sort-change="pageOrder" header-align="center" style="width: 100%" row-key="id">
|
||||
<el-table-column label="序号" width="50" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="提案编号" prop="code" width="100px" show-overflow-tooltip></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"></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>
|
||||
</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="masterUnitName" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column label="协办单位" prop="slaveUnitNames" show-overflow-tooltip></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="操作" fixed="right" width="200px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<template #view>
|
||||
<proposal-info ref="infoRef"></proposal-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include("../common/info.js"){}#-->
|
||||
|
||||
new Vue({
|
||||
el: '#app',
|
||||
dicts: ["PROPOSAL_TYPE", "PROPOSAL_CASE_FILING_RESULT"],
|
||||
components: {
|
||||
"proposal-info": PROPOSAL_INFO
|
||||
},
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
sessionOptions: [],
|
||||
nodes: [],
|
||||
pageForm: {
|
||||
selectNodeId: null,
|
||||
selectNodeType: null,
|
||||
pageSize: 5
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 查看
|
||||
openView(row) {
|
||||
this.$refs.guava.view(() => {
|
||||
this.$refs.infoRef.onOpen(row)
|
||||
})
|
||||
},
|
||||
|
||||
// 届次改变
|
||||
sessionChange() {
|
||||
this.getNodes()
|
||||
this.doSearch()
|
||||
},
|
||||
|
||||
// 获取届次
|
||||
listSession() {
|
||||
this.$axios.post("/platform/proposal/common/listSession").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.sessionOptions = res.data
|
||||
if (this.sessionOptions) {
|
||||
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id)
|
||||
this.getNodes()
|
||||
this.doSearch()
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 获取节点
|
||||
getNodes() {
|
||||
this.$axios.post('/platform/proposal/dashboard/listNode', {sessionId: this.pageForm.sessionId}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.nodes = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 获取主题色
|
||||
getThemeColor(index) {
|
||||
const colors = ['#409EFF', '#67C23A', '#E6A23C', '#F56C6C', '#909399', '#722ED1']
|
||||
return colors[index % colors.length]
|
||||
},
|
||||
|
||||
// 节点选择
|
||||
selectNode(node, index) {
|
||||
this.pageForm.selectNodeId = node.id
|
||||
this.pageForm.selectNodeType = node.type
|
||||
this.doSearch()
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
tableCardTitle() {
|
||||
if (this.pageForm.selectNodeId) {
|
||||
const selectedNode = this.nodes.find(node => node.id === this.pageForm.selectNodeId)
|
||||
return selectedNode ? selectedNode.name : '提案总数'
|
||||
}
|
||||
return '提案总数'
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.listSession()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+34
-13
@@ -9,12 +9,15 @@ layout("/layouts/platform.html"){
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<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-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>
|
||||
</el-card>
|
||||
@@ -38,21 +41,22 @@ layout("/layouts/platform.html"){
|
||||
<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="row.taskKey === 'startTask' || !row.instanceId" 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="row.taskKey === '85b7b9bd-d706-48cb-99a1-ef1370fb1819' || row.taskKey === '74458b33-ad6e-46c4-b8d9-1aa897142b25'"
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="onOpenInviteSeconder(row)"
|
||||
v-if="row.taskKey === '85b7b9bd-d706-48cb-99a1-ef1370fb1819' || row.taskKey === '74458b33-ad6e-46c4-b8d9-1aa897142b25'"
|
||||
>
|
||||
邀请附议人
|
||||
</el-button>
|
||||
<el-button v-if="row.canRevoke" size="mini" type="danger" @click="openRevoke(row)">
|
||||
撤销
|
||||
</el-button>
|
||||
<!-- v-if="row.taskKey === 'startTask' || !row.instanceId"-->
|
||||
<!-- v-if="row.taskKey === 'startTask' || !row.instanceId"-->
|
||||
<el-button size="mini" type="danger" @click="del(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
@@ -112,7 +116,7 @@ layout("/layouts/platform.html"){
|
||||
})
|
||||
},
|
||||
onOpenInviteSeconder(row) {
|
||||
this.$axios.post(loc() + "/inviteCheck", { id: row.id }).then((res) => {
|
||||
this.$axios.post(loc() + "/inviteCheck", {id: row.id}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$refs.guava.public(() => {
|
||||
this.$refs.inviteSeconderRef.onOpen(row)
|
||||
@@ -134,13 +138,13 @@ layout("/layouts/platform.html"){
|
||||
}
|
||||
})
|
||||
},
|
||||
withdraw({ processInstId }) {
|
||||
withdraw({processInstId}) {
|
||||
this.$confirm("您确定要撤回吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/withdraw", { processInstId }).then((res) => {
|
||||
this.$axios.post(loc() + "/withdraw", {processInstId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
@@ -154,18 +158,35 @@ layout("/layouts/platform.html"){
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post(loc() + "/delete", { id }).then((res) => {
|
||||
this.$axios.post(loc() + "/delete", {id}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 检测操作
|
||||
checkOperation() {
|
||||
const operation = GetQueryString("operation")
|
||||
const bizId = GetQueryString("bizId")
|
||||
if (!operation) return
|
||||
if (operation === "invite" && bizId) {
|
||||
// 邀请附议人
|
||||
this.$axios.post('/platform/proposal/mine/selectOne',{id: bizId}).then(res=>{
|
||||
if (res.code === 0) {
|
||||
this.onOpenInviteSeconder(res.data)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
created() {
|
||||
this.listSession()
|
||||
this.pageData()
|
||||
this.checkOperation()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
+48
-26
@@ -19,30 +19,51 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-divider class="mt10 mb10"></el-divider>
|
||||
<table-tool>
|
||||
<el-button size="small" @click="invite" type="primary" icon="el-icon-plus"
|
||||
:disabled="pageForm.isInvite">邀请
|
||||
</el-button>
|
||||
<el-radio-group v-model="pageForm.isInvite" @change="doSearch" size="small" style="margin-left: 5px;">
|
||||
<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="getRowKey">
|
||||
<el-table-column type="selection" reserve-selection v-if="!pageForm.isInvite"></el-table-column>
|
||||
<el-table-column label="序号" width="50px" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginName"></el-table-column>
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex"></el-table-column>
|
||||
<el-table-column label="代表团" prop="delegationName"></el-table-column>
|
||||
<!-- <el-table-column label="操作" width="150px">-->
|
||||
<!-- <template scope="{row}">-->
|
||||
<!-- <el-button size="mini" type="primary" @click="invite(row)">邀请</el-button>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
<div>
|
||||
<table-tool label="代表数据">
|
||||
<!-- <el-button size="small" @click="invite" type="primary" icon="el-icon-plus"-->
|
||||
<!-- :disabled="pageForm.isInvite">邀请-->
|
||||
<!-- </el-button>-->
|
||||
<el-radio-group v-model="pageForm.isInvite" @change="doSearch" size="small" style="margin-left: 5px;">
|
||||
<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="getRowKey">
|
||||
<el-table-column type="selection" reserve-selection v-if="!pageForm.isInvite"></el-table-column>
|
||||
<el-table-column label="序号" width="50px" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginName"></el-table-column>
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex"></el-table-column>
|
||||
<el-table-column label="代表团" prop="delegationName"></el-table-column>
|
||||
<!-- <el-table-column label="操作" width="150px">-->
|
||||
<!-- <template scope="{row}">-->
|
||||
<!-- <el-button size="mini" type="primary" @click="invite(row)">邀请</el-button>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</div>
|
||||
|
||||
<el-divider class="mt10 mb10"></el-divider>
|
||||
<div v-if="$refs.tableRef">
|
||||
<table-tool label="当前已选择"></table-tool>
|
||||
|
||||
<el-table :data="$refs.tableRef.selection">
|
||||
<el-table-column label="序号" width="50px" type="index"></el-table-column>
|
||||
<el-table-column label="工号" prop="loginName"></el-table-column>
|
||||
<el-table-column label="姓名" prop="userName"></el-table-column>
|
||||
<el-table-column label="性别" prop="sex"></el-table-column>
|
||||
<el-table-column label="代表团" prop="delegationName"></el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-row type="flex" justify="center" class="p10">
|
||||
<el-button @click="">取消</el-button>
|
||||
<el-button @click="invite" type="primary">邀请</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
`,
|
||||
mixins: [initTableMixins],
|
||||
@@ -52,7 +73,8 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
|
||||
secondedNum: 0,
|
||||
record: {},
|
||||
pageForm: {
|
||||
isInvite: false
|
||||
isInvite: false,
|
||||
pageSize: 5
|
||||
},
|
||||
config: {},
|
||||
delegationOptions: []
|
||||
@@ -93,7 +115,7 @@ const PROPOSAL_INVITE_SECONDER_COMPONENT = {
|
||||
invite() {
|
||||
const selection = this.$refs.tableRef.selection
|
||||
if (selection.length === 0) {
|
||||
this.$message.warning("请先选择附议人后在点击邀请")
|
||||
this.$message.warning("请先选择附议人后再邀请")
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
+165
@@ -0,0 +1,165 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app">
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<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-item label="提案名称">
|
||||
<el-input v-model="pageForm.name" placeholder="提案名称" @keyup.enter.native="doSearch" clearable
|
||||
style="width: 100%"></el-input>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<!-- <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" 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="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 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="100px">
|
||||
<template slot-scope="{row}">
|
||||
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<template #edit>
|
||||
<proposal-info ref="proposalInfoRef"></proposal-info>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
<!--#include('../../common/info.js'){}#-->
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
store,
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
"proposal-info": PROPOSAL_INFO
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
pageForm: {
|
||||
approval: false
|
||||
},
|
||||
showApprovalForm: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openView(row) {
|
||||
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.$refs.formRef.validate(valid => {
|
||||
if (!valid) return
|
||||
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("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 教代会
|
||||
async meetingChange(val) {
|
||||
this.formData.delegationId = null
|
||||
this.formData.committeeId = null
|
||||
this.doSearch()
|
||||
},
|
||||
|
||||
// 查询开启的教代会
|
||||
listOpenSession() {
|
||||
this.$axios.post("/platform/proposal/common/listOpenSession").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.sessionOptions = res.data
|
||||
if (this.sessionOptions) {
|
||||
this.$set(this.pageForm, "sessionId", this.sessionOptions[0].id)
|
||||
this.pageData()
|
||||
this.listDelegation()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
this.listOpenSession()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
+52
-21
@@ -99,21 +99,21 @@ layout("/layouts/platform.html"){
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- <el-form-item label="提案摘要" prop="excerpt">-->
|
||||
<!-- <span slot="label">-->
|
||||
<!-- 提案摘要-->
|
||||
<!-- <el-tooltip content="请简述提案内容和依据、改进建议和措施摘要" placement="right">-->
|
||||
<!-- <i class="el-icon-question"></i>-->
|
||||
<!-- </el-tooltip>-->
|
||||
<!-- </span>-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="formData.excerpt"-->
|
||||
<!-- type="textarea"-->
|
||||
<!-- autosize-->
|
||||
<!-- :autosize="{ minRows: 4, maxRows: 4}"-->
|
||||
<!-- placeholder="提案摘要"-->
|
||||
<!-- ></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <el-form-item label="提案摘要" prop="excerpt">-->
|
||||
<!-- <span slot="label">-->
|
||||
<!-- 提案摘要-->
|
||||
<!-- <el-tooltip content="请简述提案内容和依据、改进建议和措施摘要" placement="right">-->
|
||||
<!-- <i class="el-icon-question"></i>-->
|
||||
<!-- </el-tooltip>-->
|
||||
<!-- </span>-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="formData.excerpt"-->
|
||||
<!-- type="textarea"-->
|
||||
<!-- autosize-->
|
||||
<!-- :autosize="{ minRows: 4, maxRows: 4}"-->
|
||||
<!-- placeholder="提案摘要"-->
|
||||
<!-- ></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
<el-form-item label="调研情况" prop="researchFindings">
|
||||
<el-input
|
||||
@@ -125,6 +125,13 @@ layout("/layouts/platform.html"){
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="建议承办单位" prop="suggestUnits">
|
||||
<el-select v-model="formData.suggestUnits" multiple style="width: 100%">
|
||||
<el-option :key="item.id" :label="item.name" :value="item.name"
|
||||
v-for="item in suggestUnitOptions"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="案由" prop="brief">
|
||||
<text-editor v-model="formData.brief" key="brief" placeholder="案由"></text-editor>
|
||||
</el-form-item>
|
||||
@@ -142,9 +149,9 @@ layout("/layouts/platform.html"){
|
||||
></file-upload>
|
||||
</el-form-item>
|
||||
|
||||
<!-- <el-form-item label="电子签名" prop="signature">-->
|
||||
<!-- <pc-signature v-model="formData.signature"></pc-signature>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- <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="isWriteTime">
|
||||
<el-button type="primary" @click="onSave">保存</el-button>
|
||||
@@ -189,7 +196,7 @@ layout("/layouts/platform.html"){
|
||||
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"]}],
|
||||
suggestUnits: [{required: true, message: "请选择建议承办单位", trigger: ["blur", "change"]}],
|
||||
sign: [{required: true, message: "请扫描二维码进行签字", trigger: ["blur", "change"]}],
|
||||
excerpt: [{required: true, message: "请填写", trigger: ["blur", "change"]}],
|
||||
researchFindings: [{required: true, message: "请填写", trigger: ["blur", "change"]}],
|
||||
@@ -202,7 +209,10 @@ layout("/layouts/platform.html"){
|
||||
proposalConfig: {},
|
||||
noticeDialogVisible: false,
|
||||
|
||||
isWriteTime: true
|
||||
isWriteTime: true,
|
||||
|
||||
// 建议承办单位
|
||||
suggestUnitOptions: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -243,10 +253,20 @@ layout("/layouts/platform.html"){
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
const loading = createLoading('正在提交中')
|
||||
this.$axios.post('/platform/proposal/write/submit', {info: JSON.stringify(this.formData)}).then(res => {
|
||||
loading.close()
|
||||
if (res.code === 0) {
|
||||
this.$message.success("提交成功")
|
||||
commonUtil.pjaxPush('/platform/proposal/mine')
|
||||
this.$confirm("提交成功,是否立即去邀请附议人?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
}).then(() => {
|
||||
commonUtil.pjaxPush('/platform/proposal/mine?bizId=' + res.data.id + "&operation=invite")
|
||||
}).catch(() => {
|
||||
commonUtil.pjaxPush('/platform/proposal/mine')
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -312,6 +332,16 @@ layout("/layouts/platform.html"){
|
||||
// this.committeeOptions = await this.getInstitutions(val)
|
||||
},
|
||||
|
||||
|
||||
// 建议承办单位
|
||||
listSuggestUnit() {
|
||||
this.$axios.post("/platform/proposal/common/listUnderTake").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.suggestUnitOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 获取代表团
|
||||
listDelegation() {
|
||||
return this.$axios.post("/platform/proposal/common/listDelegation", {sessionId: this.formData.sessionId}).then((res) => {
|
||||
@@ -394,6 +424,7 @@ layout("/layouts/platform.html"){
|
||||
},
|
||||
created() {
|
||||
this.init()
|
||||
this.listSuggestUnit()
|
||||
this.listProposalType()
|
||||
this.getProposalConfig()
|
||||
}
|
||||
|
||||
+44
-14
@@ -19,6 +19,18 @@ const HEAD_FORM_TEMPLATE = {
|
||||
placeholder="请输入工号或者姓名"
|
||||
style="width: 100%"></user-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="viceUserId" label="副团长">
|
||||
<user-select v-model="formData.viceUserId"
|
||||
v-if="headDialogFormVisible"
|
||||
api="/platform/teacherCongress/delegation/notHeadUser"
|
||||
:api_params="{sessionId:formData.sessionId,delegationId:formData.delegationId}"
|
||||
api_input_key_name="keyWord"
|
||||
:option_list="viceHeadOptions"
|
||||
option_value="userId"
|
||||
:option_label_func="(item)=>{return item.userName + item.loginName + '(' + item.unitName + ')'}"
|
||||
placeholder="请输入工号或者姓名"
|
||||
style="width: 100%"></user-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="headDialogFormVisible = false">取 消</el-button>
|
||||
@@ -31,12 +43,15 @@ const HEAD_FORM_TEMPLATE = {
|
||||
formData: {},
|
||||
headDialogFormVisible: false,
|
||||
headOptions: [],
|
||||
viceHeadOptions: [],
|
||||
sessionOptions: [],
|
||||
|
||||
formRules: {
|
||||
sessionId: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
name: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
code: [{ required: true, message: "必填", trigger: ["change", "blur"] }]
|
||||
sessionId: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||
name: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||
code: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||
userId: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||
viceUserId: [{required: true, message: "必填", trigger: ["change", "blur"]}]
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -51,19 +66,34 @@ const HEAD_FORM_TEMPLATE = {
|
||||
sessionId,
|
||||
delegationId
|
||||
}
|
||||
// this.findHeadUser()
|
||||
this.findHeadUser()
|
||||
},
|
||||
|
||||
// findHeadUser() {
|
||||
// this.$axios.post("/platform/teacherCongress/delegation/headUser", this.formData).then((res) => {
|
||||
// if (res.code === 0) {
|
||||
// if (res.data) {
|
||||
// this.headOptions = [res.data]
|
||||
// this.$set(this.formData, "userId", res.data.id)
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
// },
|
||||
// 查询团长副团长
|
||||
findHeadUser() {
|
||||
this.$axios.post("/platform/teacherCongress/delegation/headUser", {
|
||||
...this.formData,
|
||||
type: 'TEACHER_CONGRESS_DELEGATION_HEAD'
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
if (res.data) {
|
||||
this.headOptions = [res.data]
|
||||
this.$set(this.formData, "userId", res.data.id)
|
||||
}
|
||||
}
|
||||
})
|
||||
this.$axios.post("/platform/teacherCongress/delegation/headUser", {
|
||||
...this.formData,
|
||||
type: 'TEACHER_CONGRESS_VICE_DELEGATION_HEAD'
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
if (res.data) {
|
||||
this.viceHeadOptions = [res.data]
|
||||
this.$set(this.formData, "viceUserId", res.data.id)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
doSubmitHead() {
|
||||
this.$refs.headFormRef.validate((valid) => {
|
||||
|
||||
+1
@@ -26,6 +26,7 @@ layout("/layouts/platform.html"){
|
||||
<el-table-column label="编码" prop="code" width="150px"></el-table-column>
|
||||
<el-table-column label="教代会" prop="sessionName"></el-table-column>
|
||||
<el-table-column label="团长" prop="delegationHead"></el-table-column>
|
||||
<el-table-column label="副团长" prop="viceDelegationHead"></el-table-column>
|
||||
<el-table-column label="操作" width="300">
|
||||
<template slot-scope="scope">
|
||||
<el-link @click="$refs.auFormRef.onOpen(scope.row.id)" size="mini" type="primary">编辑</el-link>
|
||||
|
||||
Reference in New Issue
Block a user