187 lines
8.9 KiB
HTML
187 lines
8.9 KiB
HTML
<!--#
|
|
layout("/layouts/platform.html"){
|
|
#-->
|
|
<style>
|
|
.el-table-container {
|
|
padding-top: 0;
|
|
}
|
|
</style>
|
|
|
|
<div id="app" v-cloak>
|
|
|
|
<guava ref="guava">
|
|
<template>
|
|
<el-card shadow="never">
|
|
<el-row type="flex">
|
|
<el-col>
|
|
<span>教代会:</span>
|
|
<el-select @change="meetingChange" placeholder="请选择教代会" v-model="pageForm.meetingId"
|
|
filterable style="width: 80%;margin-right: 20px">
|
|
<el-option
|
|
v-for="item in meetingOptions"
|
|
:label="item.jdhallname"
|
|
:value="item.id">
|
|
</el-option>
|
|
</el-select>
|
|
</el-col>
|
|
|
|
<el-col>
|
|
<span>承办单位:</span>
|
|
<el-select @change="pageData()" placeholder="请选择承办单位"
|
|
v-model="pageForm.undertakeId"
|
|
filterable clearable style="width: 80%">
|
|
<el-option
|
|
v-for="item in undertakeOptions"
|
|
:label="item.unitName"
|
|
:value="item.id">
|
|
</el-option>
|
|
</el-select>
|
|
</el-col>
|
|
</el-row>
|
|
</el-card>
|
|
|
|
<el-table :data="tableData" class="mt20" show-summary>
|
|
<el-table-column align="center" header-align="center" label="序号" type="index"></el-table-column>
|
|
<el-table-column label="单位名称" prop="unitName" align="center" header-align="center">
|
|
<template scope="{row}">
|
|
<el-link @click="selectProposalByUnit(row)" type="primary">{{ row.unitName }}</el-link>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column header-align="center" label="提案总数" prop="totalCount" sortable></el-table-column>
|
|
<el-table-column label="主办提案" align="center" header-align="center">
|
|
<el-table-column align="center" header-align="center" label="提案数量"
|
|
prop="masterTotalCount"
|
|
sortable></el-table-column>
|
|
<el-table-column align="center" header-align="center" label="已答复"
|
|
prop="masterHasReplyCount" sortable></el-table-column>
|
|
<el-table-column align="center" header-align="center" label="未答复"
|
|
prop="masterNotReplyCount" sortable></el-table-column>
|
|
<el-table-column align="center" header-align="center" label="已结案"
|
|
prop="masterFinishCount" sortable></el-table-column>
|
|
</el-table-column>
|
|
<el-table-column align="center" header-align="center" label="协办提案" v-if="showSlaveTableColumn">
|
|
<el-table-column align="center" label="提案数量" prop="slaveTotalCount"
|
|
sortable
|
|
header-align="center"></el-table-column>
|
|
<el-table-column align="center" label="已答复" prop="slaveHasReplyCount"
|
|
header-align="center" sortable></el-table-column>
|
|
<el-table-column align="center" label="未答复" prop="slaveNotReplyCount"
|
|
header-align="center" sortable></el-table-column>
|
|
<el-table-column align="center" label="已结案" prop="slaveFinishCount"
|
|
header-align="center" sortable></el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
|
|
<el-dialog :title="dialogTitle" :visible.sync="undertakeVisible" width="70%">
|
|
<el-table :data="undertakeTableData" :size="tableSize" 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>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-dialog>
|
|
</template>
|
|
|
|
<template #view>
|
|
<proposal-info ref="info"></proposal-info>
|
|
</template>
|
|
</guava>
|
|
|
|
</div>
|
|
|
|
<script>
|
|
var vue = new Vue({
|
|
el: '#app',
|
|
mixins: [initTableMixins],
|
|
data() {
|
|
return {
|
|
dialogTitle: '',
|
|
undertakeVisible: false,
|
|
undertakeOptions: [],
|
|
meetingOptions: [],
|
|
undertakeTableData: [],
|
|
pageForm: {},
|
|
tableColumns: [
|
|
{prop: 'proposalCode', label: '提案编号', width: "120", sortable: true, disabled: true},
|
|
{prop: 'proposalName', label: '提案名称', width: "300", disabled: true},
|
|
{prop: 'username', label: '提案人', disabled: true},
|
|
{prop: 'typeName', label: '提案类型', sortable: true},
|
|
{prop: 'meetingName', label: '届次', sortable: true},
|
|
{prop: 'delegationName', label: '代表团', sortable: true},
|
|
{prop: 'resultName', label: '立案结果', sortable: true},
|
|
{prop: 'stateName', label: '提案状态', sortable: true}],
|
|
showSlaveTableColumn: false
|
|
}
|
|
},
|
|
components: {
|
|
'proposal-info': httpVueLoader('/components/proposal/ProposalInfo.vue'),
|
|
'proposal-table': httpVueLoader('/components/proposal/ProposalTable.vue'),
|
|
},
|
|
methods: {
|
|
async meetingChange() {
|
|
this.undertakeOptions = await proposal.getUndertakeByMeeting(this.pageForm.meetingId)
|
|
await this.pageData()
|
|
},
|
|
async selectProposalByUnit(row) {
|
|
const resp = await $.get(loc() + '/selectProposalByUnit', {
|
|
meetingId: this.pageForm.meetingId,
|
|
underTakeId: row.id
|
|
})
|
|
this.dialogTitle = row.unitName + '所承办提案'
|
|
this.undertakeVisible = true
|
|
if (resp.code === 0) {
|
|
this.undertakeTableData = resp.data
|
|
}
|
|
},
|
|
openView(row) {
|
|
this.$refs.guava.view()
|
|
this.$refs.info.openView(row.id)
|
|
this.undertakeVisible = false
|
|
},
|
|
async pageData() {
|
|
sublime.showLoadingbar()
|
|
this.tableLoading = true
|
|
const resp = await $.post(loc() + "/pageData", this.pageForm)
|
|
sublime.closeLoadingbar()
|
|
this.tableLoading = false
|
|
if (resp.code === 0) {
|
|
resp.data.forEach(v => {
|
|
v.satisfiedRate = isNaN((v.satisfied / v.total) * 100) ? 0 : ((v.satisfied / v.total) * 100).toFixed(1)
|
|
})
|
|
this.tableData = resp.data
|
|
} else {
|
|
this.$notify.error({title: '失败', message: resp.msg});
|
|
}
|
|
},
|
|
async initTableSlaveColumns() {
|
|
const config = await proposal.getProposalConfig()
|
|
this.showSlaveTableColumn = config.slaveUnitConfig && config.slaveUnitConfig.isNeedReply
|
|
}
|
|
},
|
|
async created() {
|
|
this.meetingOptions = await proposal.getAllMeeting()
|
|
this.pageForm.meetingId = this.meetingOptions.length ? this.meetingOptions[0].id : ''
|
|
this.undertakeOptions = await proposal.getUndertakeByMeeting(this.pageForm.meetingId)
|
|
await this.pageData()
|
|
this.initTableSlaveColumns()
|
|
}
|
|
})
|
|
</script>
|
|
<!--#
|
|
}
|
|
#--> |