first commit

This commit is contained in:
2026-09-08 19:49:21 +08:00
commit ebffbab428
7320 changed files with 1477614 additions and 0 deletions
@@ -0,0 +1,290 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.query-row {
height: 70px;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
}
.query-row:not(:last-child) {
border-bottom: 1px dashed rgb(230, 230, 230);
}
.query-row-title {
width: 120px;
}
.el-table-container {
padding-top: 0;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<!--# include("/platform/proposal/include/searchCnd.html"){}#-->
<el-card shadow="never" style="margin-top: 10px">
<table-tool label="提案信息" :app="this">
<template #func>
<el-button @click="exportAllProposal" type="primary" size="small">导出立案汇总表</el-button>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%" stripe border
:header-cell-style="{background:'#FAFAFA'}" row-key="id" @sort-change="pageOrder"
v-loading="tableLoading">
<el-table-column align="center" header-align="center" type="index" :index="indexMethod"
label="序号"
width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
>
<template scope="{row}" v-if="column.prop=='proposalName'">
<el-link @click="openView(row)" type="primary">{{ row.proposalName }}</el-link>
</template>
<template scope="{row:{resultName}}" v-else-if="column.prop==='resultName'">
{{resultName?resultName:'暂无' }}
</template>
<template v-else-if="column.prop==='pruMaster'" scope="{row:{pruMaster}}">
{{pruMaster?pruMaster:'暂无' }}
</template>
<template v-else-if="column.prop==='pruSlave'" scope="{row:{pruSlave}}">
{{pruSlave?pruSlave:'暂无' }}
</template>
</el-table-column>
<el-table-column label="操作" header-align="center" label="操作"
fixed="right" width="130px">
<template scope="{row}">
<el-button size="mini" icon="el-icon-printer" type="primary"
@click="oneProposalExport(row.id)">导出提案
</el-button>
</template>
</el-table-column>
</el-table>
<!-- <proposal-table :loading="tableLoading" :page="pageForm" :data="tableData" @order="pageOrder"
@view="openView">
<template #column>
<el-table-column label="提案结果" prop="resultName" align="center" header-align="center"
sortable>
<template scope="{row:{resultName}}">
<span>{{ resultName?resultName:'暂无' }}</span>
</template>
</el-table-column>
<el-table-column label="主办单位" prop="pruMaster" align="center" header-align="center"
sortable>
<template scope="{row:{pruMaster}}">
<span>{{ pruMaster?pruMaster:'暂无' }}</span>
</template>
</el-table-column>
<el-table-column label="协办单位" prop="pruSlave" align="center" header-align="center"
sortable>
<template scope="{row:{pruSlave}}">
<span>{{ pruSlave?pruSlave:'暂无' }}</span>
</template>
</el-table-column>
</template>
</proposal-table>-->
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #view>
<proposal-info ref="info"></proposal-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
resultOptions: [],
determineTypeOptions: [],
typeOptions: [],
meetingOptions: [],
stateOptions: [],
delegationOptions: [],
undertakeOptions: [],
unionOptions: [],
unitOptions: [],
pageForm: {
searchName: "proposalName",
searchName2: "su.username",
searchKeyword2: '',
stateCode: '',
meetingId: '',
unionId: '',
unitId: '',
delegationId: '',
proposalResult: [],
proposalTypes: [],
proposalDetermineTypes: []
},
tableColumns: [
{prop: 'proposalCode', label: '提案编号', width: "120", sortable: true, disabled: true},
{prop: 'proposalName', label: '提案名称', width: "300", disabled: true},
{prop: 'username', label: '提案人', disabled: true},
{prop: 'typeCode', label: '提案类型编码', sortable: true, checked: 0},
{prop: 'typeName', label: '提案类型', sortable: true},
{prop: 'delegationCode', label: '代表团编码', sortable: true, checked: 0},
{prop: 'delegationName', label: '代表团', sortable: true},
// {prop: '1', label: '是否立案'},
// {prop: '2', label: '重点提案', checked: 0},
{prop: 'resultName', label: '立案结果'},
{prop: 'pruMasterCode', label: '主办单位编码', sortable: true},
{prop: 'pruMaster', label: '主办单位'},
{prop: 'pruSlave', label: '协办单位'},
],
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
},
methods: {
exportAllProposal() {
const proposalTypes = JSON.stringify(this.pageForm.proposalTypes)
const proposalResult = JSON.stringify(this.pageForm.proposalResult)
const searchName2 = this.pageForm.searchName2
const searchKeyword2 = this.pageForm.searchKeyword2
const stateCode = this.pageForm.stateCode
const searchKeyword = this.pageForm.searchKeyword
const searchName = this.pageForm.searchName
const delegationId = this.pageForm.delegationId
const unionId = this.pageForm.unionId
const unitId = this.pageForm.unitId
const meetingId = this.pageForm.meetingId
let props = {}
this.tableColumns.forEach(v => {
props[v.prop] = v.label
})
window.open(loc() + "/exportAllProposal?proposalTypes=" + proposalTypes +
"&proposalResult=" + proposalResult +
"&searchName2=" + searchName2 +
"&searchKeyword2=" + searchKeyword2 +
"&stateCode=" + stateCode +
"&searchKeyword=" + searchKeyword +
"&searchName=" + searchName +
"&delegationId=" + delegationId +
"&unionId=" + unionId +
"&unitId=" + unitId +
"&meetingId=" + meetingId +
"&props=" + JSON.stringify(props))
},
oneProposalExport(id) {
window.open(loc() + '/oneProposalExport?proposalId=' + id)
},
async meetingChange(val) {
this.pageForm.delegationId = ''
this.delegationOptions = await proposal.getDelegation(val)
this.undertakeOptions = await proposal.getUndertakeByMeeting(val)
this.doSearch()
},
async delegationChange(val) {
this.pageForm.unionId = null
this.unionOptions = await getUnions(val)
this.doSearch()
},
async unionChange(val) {
this.pageForm.unitId = null
this.unitOptions = await getUnits(val)
this.doSearch()
},
tagToggle(optionsName, result) {
let idx = this.pageForm[optionsName].indexOf(result)
if (idx !== -1) {
this.pageForm[optionsName].splice(idx, 1)
} else {
this.pageForm[optionsName].push(result)
}
this.doSearch()
},
checkProposalResult(result) {
let idx = this.pageForm.proposalResult.indexOf(result)
if (idx !== -1) {
this.pageForm.proposalResult.splice(idx, 1)
} else {
this.pageForm.proposalResult.push(result)
}
this.doSearch()
},
checkProposalType(type) {
let idx = this.pageForm.proposalTypes.indexOf(type)
if (idx !== -1) {
this.pageForm.proposalTypes.splice(idx, 1)
} else {
this.pageForm.proposalTypes.push(type)
}
this.doSearch()
},
openView(row) {
this.$refs.guava.view()
this.$refs.info.openView(row.id)
},
pageData() {
sublime.showLoadingbar();
this.tableLoading = true
const pageForm = clone(this.pageForm)
pageForm.proposalTypes = JSON.stringify(pageForm.proposalTypes)
pageForm.proposalResult = JSON.stringify(pageForm.proposalResult)
pageForm.determineTypeOptions = JSON.stringify(pageForm.proposalDetermineTypes)
$.post(loc() + "/pageData", pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
}
},
async created() {
this.meetingOptions = await proposal.getAllMeeting()
this.pageForm.meetingId = this.meetingOptions.length ? this.meetingOptions[0].id : ''
this.stateOptions = await proposal.getOpenProposalState()
this.typeOptions = await proposal.getProposalType()
this.resultOptions = await getDictOptions("proposal_result")
this.determineTypeOptions = await getDictOptions("proposal_determine_type")
this.delegationOptions = await proposal.getDelegation(this.pageForm.meetingId)
this.undertakeOptions = await proposal.getUndertakeByMeeting(this.pageForm.meetingId)
this.unionOptions = await getUnions(null)
this.unitOptions = await getUnits(null)
this.pageData();
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,215 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<el-card shadow="never" class="mb20">
<div class="d-search-item btn-group tool-button">
<el-select v-model="pageForm.meetingId" placeholder="请选择教代会" @change="meetingChange"
filterable>
<el-option
v-for="item in meetingOptions"
:label="item.jdhallname"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="d-search-item btn-group tool-button">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
@keyup.enter.native="doSearch">
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
style="width: 110px;">
<el-option label="提案名称" value="proposalName"></el-option>
<el-option label="提案编号" value="proposalCode"></el-option>
</el-select>
</el-input>
</div>
<div class="d-search-item btn-group tool-button">
<el-input placeholder="请输入内容" v-model="pageForm.username" @keyup.enter.native="doSearch" clearable>
<template slot="prepend">提案人</template>
</el-input>
</div>
<div class="d-search-item btn-group tool-button">
<el-select v-model="pageForm.leaderId" placeholder="请选择分管校领导" filterable clearable
@change="leaderChange">
<el-option
v-for="i in leaderList"
:label="i.username"
:value="i.id"
:key="i.id"></el-option>
</el-select>
</div>
<div class="btn-group tool-button" style="margin-left: 10px">
<el-button type="primary" icon="el-icon-search" @click="doSearch"></el-button>
</div>
<div style="position: absolute;right: 20px;top: 20px;">
<el-button type="primary" @click="oneProposalExport">导出</el-button>
</div>
</el-card>
<el-card shadow="never" class="mt20">
<table-tool :app="this" label="提案信息" ref="tableTool">
</table-tool>
<el-table :data="tableData" v-loading="tableLoading" @sort-change="pageOrder"
row-key="id"
:key="tableKey"
:size="tableSize"
:tree-props="{children: 'children'}">
<el-table-column align="center" header-align="center" label="序号" type="index" width="80">
<template scope="scope">
<span>{{ scope.$index + (pageForm.pageNumber - 1) * pageForm.pageSize + 1 }} </span>
</template>
</el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
align="center"
header-align="center"
show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='proposalName'">
<el-link @click="openView(row)" type="primary">{{ row.proposalName }}</el-link>
</template>
<template scope="{row}" v-else-if="column.prop=='underTakeTypeName'">
<span>{{row.underTakeTypeName}}</span>
</template>
<template scope="{row}" v-else-if="column.prop=='secretary'">
<span>{{row.secretaryUserName}}</span>
</template>
<template scope="{row}" v-else-if="column.prop=='secretaryAuditInfo'">
<span class="text-primary" v-if="row.secretaryAuditInfo">已审批</span>
<span class="text-danger" v-else>未审批</span>
</template>
<template scope="{row}" v-else-if="column.prop=='leaderUserName'">
<span>{{row.leaderUserName}}</span>
</template>
<template scope="{row}" v-else-if="column.prop=='isAuditByLeaderSpla'">
<span class="text-primary" v-if="row.isAuditByLeaderSpla">已审批</span>
<span class="text-danger" v-else>未审批</span>
</template>
<template scope="{row}" v-else-if="column.prop=='isAuditByLeaderSpdf'">
<template v-if="row.resultCode==='determine'">
<span class="text-primary" v-if="row.isAuditByLeaderSpdf">已审批</span>
<span class="text-danger" v-else>未审批</span>
</template>
<template v-else>
<span class="text-muted">无需审批</span>
</template>
</template>
<!-- <template scope="{row}" v-else-if="column.prop=='isBranchLeaderAuditCase'">-->
<!-- <span :class="[row.branchLeaderReadUserName?'text-primary':'']">{{row.branchLeaderReadUserName?'已审批立案':'未审批立案'}}</span>-->
<!-- </template>-->
<!-- <template scope="{row}" v-else-if="column.prop=='isSecretaryAuditCase'">-->
<!-- <span :class="[row.secretaryReadUserName?'text-primary':'']">{{row.secretaryReadUserName?'已审批立案':'未审批立案'}}</span>-->
<!-- </template>-->
<!-- <template scope="{row}" v-else-if="column.prop=='leaderId'">-->
<!-- <span :class="[row.leaderId?'text-primary':'']">{{row.leaderId?'已审批答复':'未审批答复'}}</span>-->
<!-- </template>-->
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<template #view>
<proposal-info ref="info"></proposal-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
components: {
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
},
data() {
return {
meetingOptions: [],
tableLoading: false,
leaderList: [],
pageForm: {
searchName: "proposalName",
leaderId: '',
username: ''
},
tableColumns: [
{prop: 'proposalCode', label: '提案编号', width: "120", sortable: true, disabled: true},
{prop: 'proposalName', label: '提案名称', width: "300", disabled: true},
{prop: 'username', label: '提案人', disabled: true},
{prop: 'typeCode', label: '提案类型编码', sortable: true, checked: 0},
{prop: 'typeName', label: '提案类型', sortable: true, checked: 0},
{prop: 'unitName', label: '承办单位', sortable: true},
{prop: 'underTakeTypeName', label: '承办类型', sortable: true},
{prop: 'secretary', label: '校长、书记', sortable: true},
{prop: 'secretaryAuditInfo', label: '校长、书记审批', sortable: true},
{prop: 'leaderUserName', label: '分管校领导', sortable: true},
{prop: 'isAuditByLeaderSpla', label: '审批立案', sortable: true},
{prop: 'isAuditByLeaderSpdf', label: '审批答复', sortable: true}
],
}
},
methods: {
openView(row) {
this.$refs.guava.view()
this.$refs.info.openView(row.proposalId)
},
meetingChange() {
this.pageForm.pageNumber = 1
this.pageData()
},
leaderChange() {
this.pageForm.pageNumber = 1
this.pageData()
},
oneProposalExport() {
const {meetingId, searchKeyword, searchName, username, leaderId} = this.pageForm
window.open(loc() + "/exportAllProposal?meetingId=" + meetingId
+ "&searchKeyword=" + searchKeyword
+ "&searchName=" + searchName
+ "&username=" + username
+ "&leaderId=" + leaderId
)
},
async getLeaderList() {
const resp_data = await $.post(loc() + '/getLeaderList', this.pageForm)
this.leaderList = resp_data.data
},
async initTableColumns() {
// if (await proposal.getProposalIsNodeState(proposal.BRANCHLEADERREAD)) {
// this.tableColumns.splice(5, 0, {prop: 'branchLeaderReadUserName', label: '分管校领导', sortable: true},
// {prop: 'isBranchLeaderAuditCase', label: '审批立案', sortable: true})
// }
// if (await proposal.getProposalIsNodeState(proposal.PRINCIPALREAD)) {
// this.tableColumns.splice(5, 0, {prop: 'secretaryReadUserName', label: '校长、书记', sortable: true},
// {prop: 'isSecretaryAuditCase', label: '审批立案', sortable: true},)
// }
// //动态增加列 调用子组件生成列的方法重新生成
// this.$refs['tableTool'].getColumns()
}
},
async created() {
this.meetingOptions = await proposal.getAllMeeting()
this.pageForm.meetingId = this.meetingOptions.length ? this.meetingOptions[0].id : ''
await this.getLeaderList()
this.pageData()
this.initTableColumns()
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,226 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.query-row {
height: 70px;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
}
.query-row:not(:last-child) {
border-bottom: 1px dashed rgb(230, 230, 230);
}
.query-row-title {
width: 120px;
}
.el-table-container {
padding-top: 0;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<!--# include("/platform/proposal/include/searchCnd.html"){}#-->
<el-card shadow="never" style="margin-top: 10px">
<table-tool :app="this" label="提案信息">
<template #func>
</template>
</table-tool>
<el-table :data="tableData" :row-key="(row)=>{row.id}" :size="tableSize" @sort-change="pageOrder"
align="center"
header-align="center">
<el-table-column align="center" header-align="center" label="序号" type="index" width="80">
<template scope="scope">
<span>{{ scope.$index + (pageForm.pageNumber - 1) * pageForm.pageSize + 1 }} </span>
</template>
</el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
align="center"
header-align="center"
show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='proposalName'">
<el-link @click="openView(row)" type="primary">{{ row.proposalName }}</el-link>
</template>
<template scope="{row:{resultName}}" v-else-if="column.prop=='resultName'">
<span>{{ resultName?resultName:'暂无' }}</span>
</template>
<template scope="{row:{pruMaster}}" v-else-if="column.prop==='pruMaster'">
<span>{{ pruMaster?pruMaster:'暂无' }}</span>
</template>
<template scope="{row:{pruSlave}}" v-else-if="column.prop==='pruSlave'">
<span>{{ pruSlave?pruSlave:'暂无' }}</span>
</template>
</el-table-column>
<el-table-column fixed="right" header-align="center" label="操作"
label="操作" width="130px">
<template scope="{row}">
<el-button @click="oneProposalExport(row.id)" icon="el-icon-printer" size="mini"
type="primary">导出提案
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #view>
<proposal-info ref="info"></proposal-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
resultOptions: [],
typeOptions: [],
meetingOptions: [],
stateOptions: [],
delegationOptions: [],
undertakeOptions: [],
unionOptions: [],
unitOptions: [],
pageForm: {
searchName: "proposalName",
searchName2: "su.username",
searchKeyword2: '',
stateCode: '',
meetingId: '',
delegationId: '',
proposalResult: [],
proposalTypes: [],
proposalDetermineTypes: []
},
tableColumns: [
{prop: 'proposalCode', label: '提案编号', width: "120", sortable: true, disabled: true},
{prop: 'proposalName', label: '提案名称', width: "300", disabled: true},
{prop: 'username', label: '提案人', disabled: true},
{prop: 'typeCode', label: '提案类型编码', sortable: true, checked: 0},
{prop: 'typeName', label: '提案类型', sortable: true},
{prop: 'meetingName', label: '届次', sortable: true},
{prop: 'delegationCode', label: '代表团编码', sortable: true, checked: 0},
{prop: 'delegationName', label: '代表团', sortable: true},
{prop: 'resultName', label: '立案结果', sortable: true},
{prop: 'stateName', label: '提案状态', sortable: true},
{prop: 'pruMaster', label: '主办单位', sortable: true},
{prop: 'pruMasterCode', label: '主办单位编码', sortable: true, checked: 0},
{prop: 'pruSlave', label: '协办单位', sortable: true},
],
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
},
methods: {
oneProposalExport(id) {
window.open(loc() + '/oneProposalExport?proposalId=' + id)
},
async meetingChange(val) {
this.pageForm.delegationId = null
this.delegationOptions = await proposal.getDelegation(val)
this.undertakeOptions = await proposal.getUndertakeByMeeting(val)
this.doSearch()
},
async delegationChange(val) {
this.pageForm.unionId = null
this.unionOptions = await getUnions(val)
this.doSearch()
},
async unionChange(val) {
this.pageForm.unitId = null
this.unitOptions = await getUnits(val)
this.doSearch()
},
tagToggle(optionsName, result) {
let idx = this.pageForm[optionsName].indexOf(result)
if (idx !== -1) {
this.pageForm[optionsName].splice(idx, 1)
} else {
this.pageForm[optionsName].push(result)
}
this.doSearch()
},
checkProposalResult(result) {
let idx = this.pageForm.proposalResult.indexOf(result)
if (idx !== -1) {
this.pageForm.proposalResult.splice(idx, 1)
} else {
this.pageForm.proposalResult.push(result)
}
this.doSearch()
},
checkProposalType(type) {
let idx = this.pageForm.proposalTypes.indexOf(type)
if (idx !== -1) {
this.pageForm.proposalTypes.splice(idx, 1)
} else {
this.pageForm.proposalTypes.push(type)
}
this.doSearch()
},
openView(row) {
this.$refs.guava.view()
this.$refs.info.openView(row.id)
},
pageData() {
sublime.showLoadingbar();
this.tableLoading = true
const pageForm = clone(this.pageForm)
pageForm.proposalTypes = JSON.stringify(pageForm.proposalTypes)
pageForm.proposalResult = JSON.stringify(pageForm.proposalResult)
pageForm.determineTypeOptions = JSON.stringify(pageForm.proposalDetermineTypes)
$.post(loc() + "/pageData", pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
}
},
async created() {
this.meetingOptions = await proposal.getAllMeeting()
this.pageForm.meetingId = this.meetingOptions.length ? this.meetingOptions[0].id : ''
this.stateOptions = await proposal.getOpenProposalState()
this.typeOptions = await proposal.getProposalType()
this.resultOptions = await getDictOptions("proposal_result")
this.determineTypeOptions = await getDictOptions("proposal_determine_type")
this.delegationOptions = await proposal.getDelegation(this.pageForm.meetingId)
this.undertakeOptions = await proposal.getUndertakeByMeeting(this.pageForm.meetingId)
this.unionOptions = await getUnions(null)
this.unitOptions = await getUnits(null)
this.pageData();
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,263 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.query-row {
height: 70px;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
}
.query-row:not(:last-child) {
border-bottom: 1px dashed rgb(230, 230, 230);
}
.query-row-title {
width: 120px;
}
.el-table-container {
padding-top: 0;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<!--# include("/platform/proposal/include/searchCnd.html"){}#-->
<el-card shadow="never" style="margin-top: 10px">
<table-tool :app="this" label="提案信息">
<template #func>
<el-button @click="exportByTypeName" type="primary" size="small">按类型导出</el-button>
<el-button @click="exportByCnd" type="primary" size="small">按条件导出</el-button>
</template>
</table-tool>
<el-row>
<el-table :data="tableData" :row-key="()=>{new Date().getTime()}"
:size="tableSize"
@sort-change="pageOrder"
class="vi-table" style="width: 100%;margin-bottom: 20px" v-loading="tableLoading">
<el-table-column :index="indexMethod" align="center" header-align="center" label="序号"
type="index"
width="80px"></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
align="center"
header-align="center"
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='proposalName'">
<el-link @click="$refs.info.openView(row.id);$refs.guava.view()" type="primary">
{{row.proposalName}}
</el-link>
</template>
<template scope="{row:{pruMaster}}" v-else-if="column.prop=='pruMaster'">
<span>{{ pruMaster?pruMaster:'暂无' }}</span>
</template>
<template scope="{row:{pruSlave}}" v-else-if="column.prop=='pruSlave'">
<span>{{ pruSlave?pruSlave:'暂无' }}</span>
</template>
<template scope="{row}" v-else-if="column.prop==='brief'">
<span>{{removeHTMLTag(row.brief)}}</span>
</template>
<template scope="{row}" v-else-if="column.prop==='measures'">
<span>{{removeHTMLTag(row.measures)}}</span>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
<!-- <proposal-table :loading="tableLoading" :page="pageForm" :data="tableData" @order="pageOrder"-->
<!-- @view="openView">-->
<!-- <template #column>-->
<!-- <el-table-column label="提案结果" prop="resultName" align="center" header-align="center"-->
<!-- sortable>-->
<!-- <template scope="{row:{resultName}}">-->
<!-- <span>{{ resultName?resultName:'暂无' }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="主办单位" prop="pruMaster" align="center" header-align="center"-->
<!-- sortable>-->
<!-- <template scope="{row:{pruMaster}}">-->
<!-- <span>{{ pruMaster?pruMaster:'暂无' }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="协办单位" prop="pruSlave" align="center" header-align="center"-->
<!-- sortable>-->
<!-- <template scope="{row:{pruSlave}}">-->
<!-- <span>{{ pruSlave?pruSlave:'暂无' }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="操作" header-align="center" label="操作"-->
<!-- fixed="right" width="130px">-->
<!-- <template scope="{row}">-->
<!-- <el-button size="mini" icon="el-icon-printer" type="primary"-->
<!-- @click="oneProposalExport(row.id)">导出提案信息-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- </template>-->
<!-- </proposal-table>-->
</el-row>
</el-card>
</template>
<template #view>
<proposal-info ref="info"></proposal-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
resultOptions: [],
typeOptions: [],
meetingOptions: [],
stateOptions: [],
delegationOptions: [],
undertakeOptions: [],
unionOptions: [],
unitOptions: [],
pageForm: {
searchName: "proposalName",
searchName2: "su.username",
searchKeyword2: '',
stateCode: '',
meetingId: '',
delegationId: '',
proposalResult: [],
proposalTypes: [],
proposalDetermineTypes: []
},
tableColumns: [
{prop: 'proposalCode', label: '提案编号', sortable: true},
{prop: 'proposalName', label: '提案名称'},
{prop: 'username', label: '提案人'},
{prop: 'typeCode', label: '提案类型编码', sortable: true},
{prop: 'typeName', label: '提案类型', sortable: true},
{prop: 'brief', label: '案由', checked: 0},
{prop: 'measures', label: '建议措施', checked: 0},
{prop: 'meetingName', label: '教代会届次'},
{prop: 'delegationCode', label: '代表团编码', sortable: true, checked: 0},
{prop: 'delegationName', label: '代表团', sortable: true},
{prop: 'stateName', label: '提案状态'},
{prop: 'resultName', label: '立案结果', sortable: true},
{prop: 'pruMaster', label: '主办单位', sortable: true},
{prop: 'pruMasterCode', label: '主办单位编码', sortable: true, checked: 0},
{prop: 'pruSlave', label: '协办单位', sortable: true},
],
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
},
methods: {
exportByCnd() {
window.open(loc() + '/exportByCnd?cnd=' + JSON.stringify(this.pageForm) + '&tableColumns=' + JSON.stringify(this.tableColumns))
},
exportByTypeName(){
window.open(loc() + '/exportByTypeName?cnd=' + JSON.stringify(this.pageForm) + '&tableColumns=' + JSON.stringify(this.tableColumns))
},
oneProposalExport(id) {
window.location.href = "/platform/proposal/statistics/summary/oneProposalExport?proposalId=" + id
},
async meetingChange(val) {
this.pageForm.delegationId = null
this.delegationOptions = await proposal.getDelegation(val)
this.undertakeOptions = await proposal.getUndertakeByMeeting(val)
this.doSearch()
},
async delegationChange(val) {
this.pageForm.unionId = null
this.unionOptions = await getUnions(val)
this.doSearch()
},
async unionChange(val) {
this.pageForm.unitId = null
this.unitOptions = await getUnits(val)
this.doSearch()
},
tagToggle(optionsName, result) {
let idx = this.pageForm[optionsName].indexOf(result)
if (idx !== -1) {
this.pageForm[optionsName].splice(idx, 1)
} else {
this.pageForm[optionsName].push(result)
}
this.doSearch()
},
checkProposalResult(result) {
let idx = this.pageForm.proposalResult.indexOf(result)
if (idx !== -1) {
this.pageForm.proposalResult.splice(idx, 1)
} else {
this.pageForm.proposalResult.push(result)
}
this.doSearch()
},
checkProposalType(type) {
let idx = this.pageForm.proposalTypes.indexOf(type)
if (idx !== -1) {
this.pageForm.proposalTypes.splice(idx, 1)
} else {
this.pageForm.proposalTypes.push(type)
}
this.doSearch()
},
openView(row) {
this.$refs.guava.view()
this.$refs.info.openView(row.id)
},
pageData() {
sublime.showLoadingbar();
this.tableLoading = true
const pageForm = clone(this.pageForm)
pageForm.proposalTypes = JSON.stringify(pageForm.proposalTypes)
pageForm.proposalResult = JSON.stringify(pageForm.proposalResult)
pageForm.determineTypeOptions = JSON.stringify(pageForm.proposalDetermineTypes)
$.post(loc() + "/pageData", pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
}
},
async created() {
this.meetingOptions = await proposal.getAllMeeting()
this.pageForm.meetingId = this.meetingOptions.length ? this.meetingOptions[0].id : ''
this.stateOptions = await proposal.getOpenProposalState()
this.typeOptions = await proposal.getProposalType()
this.resultOptions = await getDictOptions("proposal_result")
this.determineTypeOptions = await getDictOptions("proposal_determine_type")
this.delegationOptions = await proposal.getDelegation(this.pageForm.meetingId)
this.undertakeOptions = await proposal.getUndertakeByMeeting(this.pageForm.meetingId)
this.unionOptions = await getUnions(null)
this.unitOptions = await getUnits(null)
this.pageData();
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,256 @@
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.query-row {
height: 70px;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
}
.query-row:not(:last-child) {
border-bottom: 1px dashed rgb(230, 230, 230);
}
.query-row-title {
width: 120px;
}
.el-table-container {
padding-top: 0;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<!--# include("/platform/proposal/include/searchCnd.html"){}#-->
<el-card shadow="never" style="margin-top: 10px">
<table-tool label="提案信息" :app="this">
<template #func>
<el-button type="primary" size="small" @click="exportAllProposal">导出全部提案</el-button>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%"
:header-cell-style="{background:'#FAFAFA'}" row-key="id" @sort-change="pageOrder"
v-loading="tableLoading">
<el-table-column align="center" header-align="center" type="index" :index="indexMethod"
label="序号"
width="80px"></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
>
<template scope="{row}" v-if="column.prop=='proposalName'">
<el-link @click="openView(row)" type="primary">{{ row.proposalName }}</el-link>
</template>
<template scope="{row:{resultName}}" v-else-if="column.prop==='resultName'">
{{resultName?resultName:'暂无' }}
</template>
<template v-else-if="column.prop==='pruMaster'" scope="{row:{pruMaster}}">
{{pruMaster?pruMaster:'暂未分配' }}
</template>
<template v-else-if="column.prop==='pruSlave'" scope="{row:{pruSlave}}">
{{pruSlave?pruSlave:'暂未分配' }}
</template>
</el-table-column>
<el-table-column label="操作" header-align="center" label="操作"
fixed="right" width="130px">
<template scope="{row}">
<el-button size="mini" icon="el-icon-printer" type="primary"
@click="oneProposalExport(row.id)">导出提案
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</template>
<template #view>
<proposal-info ref="info"></proposal-info>
</template>
</guava>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
resultOptions: [],
typeOptions: [],
meetingOptions: [],
stateOptions: [],
delegationOptions: [],
undertakeOptions: [],
unionOptions: [],
unitOptions: [],
pageForm: {
unionId: '',
unitId: '',
searchName: "proposalName",
searchName2: "su.username",
searchKeyword2: '',
stateCode: '',
meetingId: '',
delegationId: '',
proposalResult: [],
proposalTypes: [],
proposalDetermineTypes: []
},
tableColumns: [
{prop: 'proposalCode', label: '提案编号', width: "120", sortable: true, disabled: true},
{prop: 'proposalName', label: '提案名称', width: "300", disabled: true},
{prop: 'username', label: '提案人', disabled: true},
{prop: 'typeCode', label: '提案类型编码', sortable: true, checked: 0},
{prop: 'typeName', label: '提案类型', sortable: true},
{prop: 'meetingName', label: '届次', sortable: true},
{prop: 'delegationCode', label: '代表团编码', sortable: true, checked: 0},
{prop: 'delegationName', label: '代表团', sortable: true},
{prop: 'resultName', label: '立案结果', sortable: true},
{prop: 'stateName', label: '提案状态', sortable: true},
{prop: 'pruMaster', label: '主办单位', sortable: true},
{prop: 'pruMasterCode', label: '主办单位编码', sortable: true, checked: 0},
{prop: 'pruSlave', label: '协办单位', sortable: true},
],
}
},
components: {
'guava': httpVueLoader('/components/plugins/Guava.vue'),
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
},
methods: {
exportAllProposal() {
const proposalTypes = JSON.stringify(this.pageForm.proposalTypes)
const proposalResult = JSON.stringify(this.pageForm.proposalResult)
const searchName2 = this.pageForm.searchName2
const searchKeyword2 = this.pageForm.searchKeyword2
const stateCode = this.pageForm.stateCode
const searchKeyword = this.pageForm.searchKeyword
const searchName = this.pageForm.searchName
const delegationId = this.pageForm.delegationId
const unionId = this.pageForm.unionId
const unitId = this.pageForm.unitId
const meetingId = this.pageForm.meetingId
window.open(
loc() + "/exportAllProposal?proposalTypes=" + proposalTypes +
"&proposalResult=" + proposalResult +
"&searchName2=" + searchName2 +
"&searchKeyword2=" + searchKeyword2 +
"&stateCode=" + stateCode +
"&searchKeyword=" + searchKeyword +
"&searchName=" + searchName +
"&delegationId=" + delegationId +
"&unionId=" + unionId +
"&unitId=" + unitId +
"&meetingId=" + meetingId
)
},
oneProposalExport(id) {
window.open(loc() + '/oneProposalExport?proposalId=' + id)
},
async meetingChange(val) {
this.pageForm.delegationId = null
this.delegationOptions = await getDelegation(val)
this.undertakeOptions = await proposal.getUndertakeByMeeting(val)
this.doSearch()
},
async delegationChange(val) {
this.pageForm.unionId = null
this.unionOptions = await getUnions(val)
this.doSearch()
},
async unionChange(val) {
this.pageForm.unitId = null
this.unitOptions = await getUnits(val)
this.doSearch()
},
tagToggle(optionsName, result) {
let idx = this.pageForm[optionsName].indexOf(result)
if (idx !== -1) {
this.pageForm[optionsName].splice(idx, 1)
} else {
this.pageForm[optionsName].push(result)
}
this.doSearch()
},
checkProposalResult(result) {
let idx = this.pageForm.proposalResult.indexOf(result)
if (idx !== -1) {
this.pageForm.proposalResult.splice(idx, 1)
} else {
this.pageForm.proposalResult.push(result)
}
this.doSearch()
},
checkProposalType(type) {
let idx = this.pageForm.proposalTypes.indexOf(type)
if (idx !== -1) {
this.pageForm.proposalTypes.splice(idx, 1)
} else {
this.pageForm.proposalTypes.push(type)
}
this.doSearch()
},
openView(row) {
this.$refs.guava.view()
this.$refs.info.openView(row.id)
},
pageData() {
sublime.showLoadingbar();
this.tableLoading = true
const pageForm = clone(this.pageForm)
pageForm.proposalTypes = JSON.stringify(pageForm.proposalTypes)
pageForm.proposalResult = JSON.stringify(pageForm.proposalResult)
pageForm.determineTypeOptions = JSON.stringify(pageForm.proposalDetermineTypes)
$.post(loc() + "/pageData", pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
}
},
async created() {
this.meetingOptions = await proposal.getAllMeeting()
this.pageForm.meetingId = this.meetingOptions.length ? this.meetingOptions[0].id : ''
this.stateOptions = await getOpenProposalState()
this.typeOptions = await getProposalType()
this.resultOptions = await getDictOptions("proposal_result")
this.determineTypeOptions = await getDictOptions("proposal_determine_type")
this.delegationOptions = await getDelegation(this.pageForm.meetingId)
this.undertakeOptions = await proposal.getUndertakeByMeeting(this.pageForm.meetingId)
this.unionOptions = await getUnions(null)
this.unitOptions = await getUnits(null)
this.pageData();
}
})
</script>
<!--#
}
#-->