epmet pc工作端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

432 lines
14 KiB

4 months ago
<template>
<div class="g-main">
<div class="m-search">
<el-form :inline="true" :model="formData" ref="ref_searchform" :label-width="'100px'">
<div>
4 months ago
<el-form-item label="所属街道" prop="street">
<el-select v-model="formData.street" placeholder="请选择" clearable>
<el-option v-for="item in streetData" :label="item.name" :value="item.id" :key="item.id" />
4 months ago
</el-select>
</el-form-item>
4 months ago
<el-form-item label="新村" prop="community">
<el-select v-model="formData.community" placeholder="请选择" clearable>
<el-option v-for="item in communityData" :label="item.name" :value="item.id" :key="item.id" />
4 months ago
</el-select>
</el-form-item>
<el-form-item>
<el-button style="margin-left:10px" @click="handleSearch" type="primary">查询</el-button>
<el-button style="margin-left:10px" @click="resetSearch" type="primary">重置</el-button>
</el-form-item>
</div>
</el-form>
</div>
<div class="m-table">
4 months ago
<el-table class="table" :data="tableData" border :height="tableHeight" v-loading="tableLoading" style="width: 100%;margin-top:16px" :cell-style="{height: '6vh'}">
4 months ago
<el-table-column label="排名" header-align="center" align="center" type="index" width="50"></el-table-column>
4 months ago
<el-table-column prop="street" header-align="center" align="center" label="所属街道" width="260"></el-table-column>
<el-table-column prop="community" header-align="center" align="center" label="新村" width="260"></el-table-column>
<!-- <el-table-column prop="community" header-align="center" align="center" label="村庄" width="260"></el-table-column>-->
<el-table-column prop="name" header-align="center" align="center" label="姓名" width="260"></el-table-column>
<el-table-column prop="idNum" header-align="center" align="center" label="身份证" width="260"></el-table-column>
<el-table-column prop="mobile" header-align="center" align="center" label="手机" width="260"></el-table-column>
<el-table-column prop="positions" header-align="center" align="center" label="岗位类型/当前职位" width="260"></el-table-column>
<el-table-column prop="totalScore" header-align="center" align="center" label="积分" width="260"></el-table-column>
<!-- <el-table-column label="操作" fixed="right" width="120" header-align="center" align="center" class="operate">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button type="text" style="color:#1C6AFD;" size="small" @click="handleDetail(scope.row)">查看</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
4 months ago
</el-table>
<div>
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="pageNo"
:page-sizes="[10, 20, 50]" :page-size="pageSize" layout="sizes, prev, pager, next, total" :total="total">
</el-pagination>
</div>
</div>
<el-dialog :visible.sync="detailShow" v-if="detailShow" formShow :close-on-click-modal="false"
:close-on-press-escape="false" :title="'活动详情'" width="76%" top="5vh" @closed="detailClosed">
<div class="section-title1">基本信息</div>
<div class="base-info-grid">
<div class="grid-row">
<div class="grid-cell avatar-cell">
<img src="@/assets/images/index/list-logo.png" alt class="avatar" />
</div>
<div class="grid-cell info-col left-col">
<div class="info-item">
<label>所属组织</label>
<span style="display: flex;align-items: center;">区委组织部</span>
</div>
<div class="info-item">
<label>岗位类型</label>
<span style="display: flex;align-items: center;">政策宣传岗·宣传思想纠纷调解岗·督促办理设施维护岗·制止破坏科技推广岗·传授技术</span>
</div>
<div class="info-item">
<label>手机号</label>
<span style="display: flex;align-items: center;">13309099990</span>
</div>
<div class="info-item">
<label>服务星级</label>
<span style="display: flex;align-items: center;">三星</span>
</div>
</div>
<div class="grid-cell info-col right-col">
<div class="info-item">
<label>党员属性</label>
<span style="display: flex;align-items: center;">无职党员</span>
</div>
<div class="info-item">
<label>姓名</label>
<span style="display: flex;align-items: center;">王军</span>
</div>
<div class="info-item">
<label>身份证</label>
<span style="display: flex;align-items: center;">3708**********2010</span>
</div>
<div class="info-item">
<label>备注说明</label>
<span style="display: flex;align-items: center;">-</span>
</div>
</div>
</div>
</div>
<div class="section-title">服务记录</div>
<div class="service-record-section">
<el-table :data="serviceList" border style="width: 100%" :header-cell-style="{background: '#f9fafe', color: '#768297', fontWeight: '500',fontSize:'14px'}">
<el-table-column align="center" prop="index" label="序号" width="80" />
<el-table-column align="center" prop="postType" label="岗位类型" />
<el-table-column align="center" prop="content" label="服务内容" min-width="200" />
<el-table-column align="center" prop="image" label="图片" width="100">
<template slot-scope="scope">
<el-image v-if="scope.row.image" :src="scope.row.image" style="width: 40px; height: 40px" fit="cover"/>
</template>
</el-table-column>
<el-table-column align="center" prop="location" label="服务地点" />
<el-table-column align="center" prop="time" label="服务时间" width="150" />
<el-table-column align="center" prop="score" label="所得积分" width="100" />
</el-table>
<el-pagination @size-change="handleSizeChange1" @current-change="handleCurrentChange1" :current-page="currentPage" :page-sizes="[5, 10, 20]"
:page-size="pageSize1" layout="prev, pager, next, jumper" :total="total1" style="margin-top: 20px; text-align: right"/>
</div>
</el-dialog>
</div>
</template>
<script>
4 months ago
import {requestGet, requestPost} from "@/js/dai/request";
4 months ago
import { mapGetters } from 'vuex'
let loading // 加载动画
export default {
data () {
return {
currentPage: 1,
pageSize1: 5,
total1: 6,
serviceList: [
{
index: 1,
postType: "政策宣传岗·宣传思想",
content: "向群众广泛宣传习近平新时代中国特色社会主义思想,宣传党的路线方针政策,协助组织做好群众的思想政治...",
image: "https://via.placeholder.com/40x40?text=图",
location: "XX新村XX村居委会",
time: "2025-08-14 09:00:00",
score: 1
},
{
index: 2,
postType: "纠纷调解岗·督促办理",
content: "调解张军和王虎两家土地纠纷问题",
image: "https://via.placeholder.com/40x40?text=图",
location: "XX新村XX村180号",
time: "2025-08-14 09:00:00",
score: 1
},
{
index: 3,
postType: "科技推广岗·传授技术",
content: '<el-button type="primary" icon="el-icon-video-play" size="mini">03:00</el-button>',
image: "https://via.placeholder.com/40x40?text=图",
location: "XX新村XX村32号",
time: "2025-08-14 09:00:00",
score: 1
},
{
index: 4,
postType: "设施维护岗·制止破坏",
content: "制止了两位想破坏小区建筑器材的行为",
image: "",
location: "XX新村XX村小广场",
time: "2025-08-14 09:00:00",
score: 1
},
{
index: 5,
postType: "科技推广岗·传授技术",
content: "传授给群众农作物培育技术,帮助群众发家致富",
image: "https://via.placeholder.com/40x40?text=图",
location: "XX新村XX村",
time: "2025-08-14 09:00:00",
score: 1
}
],
loading: false,
total: 0,
pageSize: 10,
pageNo: 0,
tableLoading: false,
formData: {
4 months ago
street: '',
community: '',
4 months ago
},
tableData: [],
formTitle: '新增活动',
detailShow: false,
detail:{},
4 months ago
nextTreeNodeData: [],
communityData: [],
streetData: [],
4 months ago
}
},
async mounted () {
const { user } = this.$store.state
this.communityActivityList()
4 months ago
this.getNextTreeNode()
this.getNextTreeNode1()
4 months ago
},
methods: {
4 months ago
async getNextTreeNode(){
const url = "/actual/base/communityBuilding/tree/nextTreeNode";
let params = {
level: 'community',
};
let { data, code, msg } = await requestGet(url, params);
if (code === 0) {
this.communityData = data.list
} else {
this.$message.error(msg)
}
},
async getNextTreeNode1(){
const url = "/actual/base/communityBuilding/tree/nextTreeNode";
let params = {
level: 'street',
};
let { data, code, msg } = await requestGet(url, params);
if (code === 0) {
this.streetData = data.list
} else {
this.$message.error(msg)
}
},
4 months ago
handleClose() {
this.$emit("close");
},
handleSizeChange1(val) {
this.pageSize = val;
},
handleCurrentChange1(val) {
this.currentPage = val;
},
async communityActivityList() {
4 months ago
const url = "/actual/base/scoreRecord/rank";
4 months ago
let params = {
pageSize: this.pageSize,
pageNo: this.pageNo,
...this.formData,
};
4 months ago
let { data, code, msg } = await requestGet(url, params);
4 months ago
if (code === 0) {
this.total = data.total
this.tableData = data.list
} else {
this.$message.error(msg)
}
},
async handleSearch () {
this.communityActivityList()
},
detailClosed () {
this.detailShow = false
},
async handleDetail (row) {
this.detailShow = true
this.formTitle = '详情'
},
resetForm(){
},
handleInitAdd (e) {
this.resetForm()
this.formTitle = '新增'
this.detailShow = true
},
//重置搜索条件
resetSearch () {
this.formData = {
4 months ago
street: '',
community: '',
4 months ago
}
this.pageSize = 10
this.pageNo = 1
// this.loadTable()
this.communityActivityList()
},
handleSizeChange (val) {
this.pageSize = val
this.pageNo = 1
// this.loadTable()
this.communityActivityList()
},
handleCurrentChange (val) {
this.pageNo = val
// this.loadTable()
this.communityActivityList()
},
},
computed: {
tableHeight () {
4 months ago
return this.$store.state.inIframe ? this.clientHeight - 350 + this.iframeHeight : this.clientHeight - 350
4 months ago
},
...mapGetters(['clientHeight', 'iframeHeight'])
},
}
</script>
<style lang="scss" scoped >
.g-main {
width: 100%;
}
.m-search {
background: #ffffff;
border-radius: 4px;
padding: 24px 10px 10px;
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
margin: 20px 7px 7px;
}
.m-table {
background: #ffffff;
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
border-radius: 4px;
margin-top: 15px;
padding: 24px 16px 10px;
margin: 16px 7px 7px;
}
.div_btn {
display: flex;
justify-content: space-between;
}
.page-container {
padding: 15px;
background: #fff;
}
.close-btn {
text-align: right;
font-size: 18px;
cursor: pointer;
color: #999;
margin-bottom: 10px;
}
.title {
font-size: 16px;
font-weight: bold;
margin-bottom: 15px;
}
.section-title {
font-size: 14px;
font-weight: bold;
margin: 30px 0 16px;
color: #333;
}
.section-title1 {
font-size: 14px;
font-weight: bold;
margin: 0px 0 16px;
color: #333;
}
/* 核心:网格边框样式 */
.base-info-grid {
width: 94%;
margin: auto;
border: 1px solid #e6e6e6;
border-radius: 4px;
display: flex;
flex-direction: column;
overflow: hidden;
}
.grid-row {
display: flex;
width: 100%;
}
.grid-cell {
border-right: 1px solid #e6e6e6;
border-bottom: 1px solid #e6e6e6;
box-sizing: border-box;
padding: 10px;
}
/* 最后一列去掉右侧边框 */
.grid-cell:last-child {
border-right: none;
}
/* 头像单元格 */
.avatar-cell {
width: 160px;
display: flex;
justify-content: center;
align-items: center;
border-bottom: none; /* 头像单元格只保留右侧边框 */
}
.avatar {
width: 100px;
height: 120px;
border-radius: 4px;
}
/* 信息列容器 */
.info-col {
flex: 1;
border-bottom: none; /* 信息列只保留内部项的边框 */
padding: 0;
}
/* 左右列均分 */
.left-col {
border-right: 1px solid #e6e6e6;
}
/* 单个信息项(带底部边框 + 标签值竖线分隔) */
.info-item {
padding: 10px;
border-bottom: 1px solid #e6e6e6;
display: flex;
align-items: center; /* 垂直居中,更美观 */
min-height: 40px; /* 统一行高 */
}
/* 最后一个信息项去掉底部边框 */
.info-col .info-item:last-child {
border-bottom: none;
}
/* 标签样式 - 核心新增竖线分隔 */
.info-item label {
width: 80px;
text-align: right;
font-weight: normal;
color: #666;
padding-right: 10px;
flex-shrink: 0;
/* 竖线样式 */
border-right: 1px solid #e6e6e6;
margin-right: 10px;
}
/* 内容样式 */
.info-item span {
flex: 1;
word-break: break-all;
height: 34px;
}
/* 服务记录区域样式 */
.service-record-section {
width: 94%;
margin: 20px auto 0;
}
</style>