Files
dvcp_v2_webapp/project/biaopin/AppGeneralElection/components/electionList.vue
2023-11-20 10:25:54 +08:00

149 lines
4.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<section class="electionList">
<ai-list>
<ai-title slot="title" title="换届选举" isShowBottomBorder />
<template #content>
<ai-search-bar>
<template #left>
<el-button size="small" type="primary" icon="iconfont iconAdd" @click="toAdd('')" >添加</el-button>
<ai-select v-model="search.status" @change=";(page.current = 1), getList()" placeholder="请选择状态" :selectList="dict.getDict('electionStatus')"></ai-select>
</template>
<template #right>
<el-input v-model="search.title" class="search-input" size="small" v-throttle="() => {(page.current = 1), getList()} " placeholder="标题" clearable @change="getList" @clear="page.current = 1, (search.title = ''), getList()" suffix-icon="iconfont iconSearch">
</el-input>
</template>
</ai-search-bar>
<ai-table :tableData="tableData" :total="page.total" :current.sync="page.current" :size.sync="page.size" @getList="getList" :col-configs="colConfigs" :dict="dict">
<el-table-column slot="options" label="操作" fixed="right" align="center">
<template slot-scope="{ row }">
<el-button type="text" @click.native="toAdd(row.id)">详情</el-button>
<el-button type="text" v-show="row.status!=2" :disabled="row.status==2" @click.native="startEnd(row.id, row.status)">{{row.status == 0? '开启':'结束'}}</el-button>
<el-button type="text" v-show="row.status != 0" @click.native="toStatistics(row.id)">统计</el-button>
<el-button type="text" @click.native="handleDelete(row.id)">删除</el-button>
</template>
</el-table-column>
</ai-table>
</template>
</ai-list>
</section>
</template>
<script>
export default {
name: 'electionList',
props: {
instance: Function,
dict: Object
},
data () {
return {
search: {
status: '', // 0、未开始1、进行中2、已结束
title: '',
},
page: {
current: 1,
size: 10,
total: 0,
},
tableData: [],
}
},
created () {
this.$dict.load('electionStatus', 'electionMethod').then(()=> {
this.getList()
})
},
computed: {
colConfigs() {
return [
{prop: "title", label: "标题", align: "left", showOverflowTooltip: true},
{prop: "organizationName", label: "所属支部", align: "center"},
{prop: "electionMethod", label: "选举方式", align: "center",dict:"electionMethod"},
{prop: "chooseNumber", label: "应选人数", align: "center"},
{prop: "status", label: "状态", align: "center",width: "180px", dict: "electionStatus"},
{ slot: "options", },
]
}
},
methods: {
getList() {
this.instance.post(`/app/appgeneralelectioninfo/list`,null,{
params: {
...this.page,
...this.search,
}
}).then(res=> {
if(res?.data) {
this.tableData = res.data.records
this.page.total = res.data.total
}
})
},
toAdd(id) {
this.$emit('change', {
type: 'electionAdd',
params: {
id: id || '',
}
})
},
handleDelete(id) {
this.$confirm('确定删除该数据?').then(() => {
this.instance.post(`/app/appgeneralelectioninfo/delete?ids=${id}`).then(res=>{
if(res.code == 0) {
this.$message.success('删除成功!')
this.getList()
}
})
})
},
reset() {
this.search = {
status: '',
title: '',
}
this.getList()
},
// 开启、结束
startEnd(id, status) {
let title = ''
let bool = null
let tips = ''
if(status == 0) {
title = '未到投票开始时间,确定要提前开始吗?'
bool = true
tips = '开启成功'
} else if(status == 1) {
title = '投票正在进行中,确定要提前结束吗?'
bool = false
tips = '结束成功'
}
this.$confirm(title).then(() => {
this.instance.post(`/app/appgeneralelectioninfo/start-end?id=${id}&start=${bool}`).then(res=>{
if(res.code == 0) {
this.$message.success(tips)
this.getList()
}
})
})
},
// 统计
toStatistics(id) {
this.$emit('change', {
type: 'Statistics',
params: {
id: id || '',
}
})
},
}
}
</script>
<style lang="scss" scoped>
.electionList {
height: 100%;
}
</style>