186 lines
8.5 KiB
HTML
186 lines
8.5 KiB
HTML
<!--#
|
|
layout("/layouts/platform.html"){
|
|
#-->
|
|
|
|
<div id="app" v-cloak>
|
|
<guava>
|
|
<el-card shadow="never">
|
|
<el-row :gutter="20" type="flex">
|
|
<el-col :span="12">
|
|
<el-select @change="getData()" filterable placeholder="请选择教代会"
|
|
style="width: 100%" v-model="meetingId">
|
|
<el-option
|
|
:label="item.jdhallname"
|
|
:value="item.id"
|
|
v-for="item in meetingOptions">
|
|
</el-option>
|
|
</el-select>
|
|
</el-col>
|
|
<el-col :span="6" class="text-center">
|
|
<el-radio-group v-model="analysisType">
|
|
<el-radio-button :label="1">按征集分析</el-radio-button>
|
|
<el-radio-button :label="2">按办理分析</el-radio-button>
|
|
</el-radio-group>
|
|
</el-col>
|
|
<el-col :span="6" class="text-center">
|
|
<el-radio-group @change="displayTypeChange" v-model="displayType">
|
|
<el-radio-button :label="1">显示数量</el-radio-button>
|
|
<el-radio-button :label="2">显示占比</el-radio-button>
|
|
</el-radio-group>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
|
|
</el-card>
|
|
<el-card class="mt20" shadow="never">
|
|
<el-table :data="displayType===1?tableData:tableData2" show-summary v-loading="loading">
|
|
<el-table-column align="center" header-align="center" label="序号" type="index"
|
|
width="50"></el-table-column>
|
|
<el-table-column align="center" header-align="center" label="提案类型" prop="typeName">
|
|
<template scope="{row}">
|
|
<el-link @click="selectProposalByType(row)" type="primary">{{ row.typeName }}</el-link>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column align="center" header-align="center" label="数量" prop="totalCount"></el-table-column>
|
|
<el-table-column align="center" header-align="center" label="占比" prop="proportion"></el-table-column>
|
|
|
|
<el-table-column align="center" header-align="center" label="立案情况" v-if="analysisType==2">
|
|
<el-table-column align="center" header-align="center" label="立案" prop="laCount"></el-table-column>
|
|
<!-- <el-table-column align="center" header-align="center" label="重点提案" prop="zdCount"></el-table-column>-->
|
|
<el-table-column align="center" header-align="center" label="意见建议" prop="jyCount"></el-table-column>
|
|
<el-table-column align="center" header-align="center" label="不予立案" prop="caCount"></el-table-column>
|
|
</el-table-column>
|
|
<el-table-column align="center" header-align="center" label="代表反馈情况" v-if="analysisType===2">
|
|
<el-table-column align="center" header-align="center" label="满意" prop="myCount"
|
|
v-if="feedBackNames.includes('满意')"></el-table-column>
|
|
<el-table-column align="center" header-align="center" label="比较满意" prop="bjmyCount"
|
|
v-if="feedBackNames.includes('比较满意')"></el-table-column>
|
|
<el-table-column align="center" header-align="center" label="基本满意" prop="jbmyCount"
|
|
v-if="feedBackNames.includes('基本满意')"></el-table-column>
|
|
<el-table-column align="center" header-align="center" label="不满意" prop="bmyCount"
|
|
v-if="feedBackNames.includes('不满意')"></el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-card>
|
|
|
|
<template #view>
|
|
<proposal-info ref="info"></proposal-info>
|
|
</template>
|
|
</guava>
|
|
|
|
<el-dialog :title="typeDialogTitle" :visible.sync="typeDialogVisible" width="70%">
|
|
<el-table :data="typeTableData" :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>
|
|
|
|
</div>
|
|
|
|
<script>
|
|
var vue = new Vue({
|
|
el: '#app',
|
|
mixins: [initTableMixins],
|
|
data() {
|
|
return {
|
|
meetingOptions: [],
|
|
meetingId: '',
|
|
tableData: [],
|
|
tableData2: [],
|
|
loading: false,
|
|
analysisType: 1,
|
|
displayType: 1,
|
|
feedBackNames: [],
|
|
typeDialogVisible: false,
|
|
typeDialogTitle: null,
|
|
typeTableData: [],
|
|
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}],
|
|
}
|
|
},
|
|
methods: {
|
|
async getData() {
|
|
this.loading = true
|
|
const {data} = await $.post(loc() + '/getData', {teacherMeetingId: this.meetingId})
|
|
this.tableData = data
|
|
|
|
const data2 = JSON.parse(JSON.stringify(data))
|
|
|
|
this.tableData2 = data2.map(v => {
|
|
v.zdCount = (isNaN((v.zdCount / v.laCount * 100).toFixed(2)) ? '0.00' : (v.zdCount / v.laCount * 100).toFixed(2)) + "%"
|
|
v.jyCount = (v.jyCount / v.totalCount * 100).toFixed(2) + "%"
|
|
v.caCount = (v.caCount / v.totalCount * 100).toFixed(2) + "%"
|
|
|
|
v.laCount = (v.laCount / v.totalCount * 100).toFixed(2) + "%"
|
|
return v
|
|
})
|
|
|
|
setTimeout(() => {
|
|
this.loading = false
|
|
}, 200)
|
|
},
|
|
displayTypeChange(val) {
|
|
|
|
},
|
|
async getFeedBackNames() {
|
|
const data = await getDictOptions("proposal_feedback")
|
|
this.feedBackNames = data.map(v => v.name)
|
|
},
|
|
openView(row) {
|
|
this.$refs.guava.view()
|
|
this.$refs.info.openView(row.id)
|
|
this.typeDialogVisible = false
|
|
},
|
|
async selectProposalByType(row) {
|
|
const resp = await $.get(loc() + '/selectProposalByType', {
|
|
meetingId: this.meetingId,
|
|
typeId: row.typeId
|
|
})
|
|
this.typeDialogTitle = '<' + row.typeName + '>类型提案'
|
|
this.typeDialogVisible = true
|
|
if (resp.code === 0) {
|
|
this.typeTableData = resp.data
|
|
}
|
|
}
|
|
},
|
|
async created() {
|
|
this.meetingOptions = await proposal.getAllMeeting()
|
|
this.meetingId = this.meetingOptions.length ? this.meetingOptions[0].id : null
|
|
if (this.meetingId != null) {
|
|
this.getData()
|
|
}
|
|
this.getFeedBackNames()
|
|
}
|
|
})
|
|
|
|
</script>
|
|
|
|
|
|
<!--#
|
|
}
|
|
#-->
|