278 lines
12 KiB
HTML
278 lines
12 KiB
HTML
<!--#
|
|
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>
|
|
<el-card shadow="never">
|
|
<div class="search">
|
|
<div class="search-item">
|
|
<div class="search-item-label">教代会:</div>
|
|
<div class="search-item-option">
|
|
<el-select @change="meetingChange" filterable placeholder="请选择教代会"
|
|
style="width: 80%" v-model="pageForm.meetingId">
|
|
<el-option
|
|
:label="item.jdhallname"
|
|
:value="item.id"
|
|
v-for="item in meetingOptions">
|
|
</el-option>
|
|
</el-select>
|
|
</div>
|
|
</div>
|
|
<div class="search-item">
|
|
<div class="search-item-label"></div>
|
|
<div class="search-item-option">
|
|
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入内容"
|
|
style="width: 90%" v-model="pageForm.searchKeyword">
|
|
<el-select placeholder="查询类型" slot="prepend" style="width: 110px;"
|
|
v-model="pageForm.searchName">
|
|
<el-option label="提案名称" value="proposalName"></el-option>
|
|
<el-option label="编号" value="proposalCode"></el-option>
|
|
</el-select>
|
|
</el-input>
|
|
</div>
|
|
</div>
|
|
<div class="search-item">
|
|
<div class="search-item-label"></div>
|
|
<div class="search-item-option">
|
|
<el-input @keyup.enter.native="doSearch" clearable placeholder="请输入内容"
|
|
style="width: 90%" v-model="pageForm.searchKeyword2">
|
|
<el-select placeholder="查询类型" slot="prepend" style="width: 100px;"
|
|
v-model="pageForm.searchName2">
|
|
<el-option label="提案人" value="su.username"></el-option>
|
|
<!-- <el-option label="附议人" value="seconded.username"></el-option>-->
|
|
</el-select>
|
|
</el-input>
|
|
</div>
|
|
</div>
|
|
<div class="search-query">
|
|
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
|
|
</div>
|
|
</div>
|
|
</el-card>
|
|
|
|
<el-card class="mt20" shadow="never">
|
|
<table-tool :app="this" label="提案信息">
|
|
|
|
</table-tool>
|
|
|
|
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" align="center"
|
|
header-align="center"
|
|
row-key="id"
|
|
>
|
|
<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}" v-else-if="column.prop=='determineTypeCode'">
|
|
{{row.determineTypeCode=='emphasis'?'是':'否'}}
|
|
</template>
|
|
<template scope="{row}" v-else-if="column.prop=='isConjoin'">
|
|
{{row.isConjoin?'是':'否'}}
|
|
</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: [],
|
|
unionOptions: [],
|
|
unitOptions: [],
|
|
pageForm: {
|
|
searchName: "proposalName",
|
|
searchName2: "su.username",
|
|
searchKeyword2: '',
|
|
stateCode: '',
|
|
meetingId: '',
|
|
delegationId: '',
|
|
proposalResult: [],
|
|
proposalTypes: [],
|
|
levyStates: []
|
|
},
|
|
tableColumns: [
|
|
{prop: 'oldProposalCode', label: '草案编号', width: "120", checked: 0},
|
|
{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: 'mannerCode', label: '提案方式编码', sortable: true, checked: 0},
|
|
{prop: 'mannerName', label: '提案方式', sortable: true},
|
|
{prop: 'meetingName', label: '届次', sortable: true, checked: 0},
|
|
{prop: 'delegationCode', label: '代表团编码', sortable: true, checked: 0},
|
|
{prop: 'delegationName', label: '代表团', sortable: true, checked: 0},
|
|
{prop: 'resultName', label: '立案结果', sortable: true},
|
|
// {prop: 'underTakeNames', label: '承办单位', sortable: true},
|
|
{prop: 'isConjoin', label: '是否并案', sortable: true},
|
|
{prop: 'determineTypeCode', label: '是否重点', sortable: true},
|
|
{prop: 'stateName', label: '提案状态', sortable: true}
|
|
],
|
|
levyAuditOptions: [
|
|
{label: '未提交', value: 0},
|
|
{label: '未附议', value: 1},
|
|
{label: '附议中', value: 2},
|
|
{label: '待团长审核', value: 3},
|
|
{label: '团长已审核', value: 4},
|
|
]
|
|
}
|
|
},
|
|
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.location.href = "/platform/proposal/statistics/summary/oneProposalExport?proposalId=" + id
|
|
},
|
|
async meetingChange(val) {
|
|
this.pageForm.delegationId = null
|
|
this.delegationOptions = await getDelegation(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()
|
|
},
|
|
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()
|
|
},
|
|
checkLevyState(type) {
|
|
this.pageForm.levyStates = [type]
|
|
|
|
// let idx = this.pageForm.levyStates.indexOf(type)
|
|
// if (idx !== -1) {
|
|
// this.pageForm.levyStates.splice(idx, 1)
|
|
// } else {
|
|
// this.pageForm.levyStates.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.levyStates = JSON.stringify(pageForm.levyStates)
|
|
|
|
$.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.delegationOptions = await getDelegation(this.pageForm.meetingId)
|
|
this.unionOptions = await getUnions(null)
|
|
this.unitOptions = await getUnits(null)
|
|
this.pageData();
|
|
}
|
|
})
|
|
</script>
|
|
<!--#
|
|
}
|
|
#--> |