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.

553 lines
24 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<modal-panel
addChildType="slot"
:modalTitle="title"
:OKButton="false"
:show="showPanel"
:mask="true"
modalWidth="60%"
modalClassName="common-info-content-style"
@callback="modalCallback"
>
<a-spin class="common-info-style" :spinning="spinning">
<div class="title-content-style">
<h1>{{clubName}}</h1>
</div>
<div class="content-style">
<vue-scroll :ops="listScroll" style="width: 100%;height:600px">
<div class="club-info-style">
<div class="title-box-style">社团信息</div>
<div class="info-row-style">
<div class="left-style">团员人数 / </div>
<div class="right-style">{{memberNum + '人'}}</div>
</div>
<div class="info-row-style">
<div class="left-style">社团简介 / </div>
<div class="right-style">
<vue-scroll :ops="listScroll" style="width: 100%;height:100px">
{{clubDescribe}}
</vue-scroll>
</div>
</div>
</div>
<div class="img-content-style">
<div class="title-box-style">社团图片</div>
<swiper class="banner" :options="swiperOption" ref="mySwiper">
<swiper-slide v-for="(item, index) in imgList" :key="index"
class="club-box-style">
<img-preview :imgObj="item"/>
</swiper-slide>
<div class="swiper-pagination" slot="pagination"></div>
</swiper>
</div>
<div class="info-content-style">
<div class="title-box-style">社团活动</div>
<!--<a-table :columns="columns" :dataSource="dataSource"-->
<!--:bordered="true" :pagination="false" :scroll="{ y: 120 }"/>-->
<div class="table-box-style">
<a-row class="header-row">
<a-col class="header-col" :span="2">序号</a-col>
<a-col class="header-col" :span="4">日期</a-col>
<a-col class="header-col" :span="9">活动名称</a-col>
<a-col class="header-col" :span="9">地点</a-col>
</a-row>
<div v-if="showDataSource && dataSource.length > 0" class="activity-list-scroll-style">
<vue-scroll :ops="listScroll" style="width: 100%;height:165px">
<a-row v-for="item in dataSource" :key="'activity_'+item.index" class="body-row">
<a-col class="body-col" :span="2">{{item.index}}</a-col>
<a-col class="body-col" :span="4">{{item.activityDate}}</a-col>
<a-col class="body-col" :span="9">{{item.activityName}}</a-col>
<a-col class="body-col" :span="9">{{item.activityPlace}}</a-col>
</a-row>
</vue-scroll>
</div>
<div v-if="showDataSource && dataSource.length === 0" class="no-data-div">
<a-empty/>
</div>
</div>
</div>
</vue-scroll>
</div>
</a-spin>
<div class="logo-content-style">
<img src="../assets/images/modalLogo.png" alt="" class="title-logo-png">
</div>
</modal-panel>
</template>
<script>
/*
* 图文详情弹出页面
*
* infoObj:{
* infoTitle:"",
* infoArr:[{'title':'发布人','value':'费利明'},{'title':'发布时间','value':'2022-06-30 1600'}]
* content:""
* }
*
*
* */
import {Modal, Table, Row, Col, Empty, Spin} from 'ant-design-vue';
import ModalPanel from "../../../components/common/modal/centerModalPanel.vue";
import {swiper, swiperSlide} from "vue-awesome-swiper";
import "swiper/dist/css/swiper.css";
import ImgPreview from '../common/imgPreview.vue';
import moment from 'moment';
export default{
props: {
show: {
type: Boolean,
default: false,
},
modalTitle: {
type: String,
default: "查看详情",
},
commonId: {
type: String,
default: ""
},
clubObj: {
type: Object,
default: () => {
}
},
commonQueryId: {
type: String,
default: ""
},
},
data(){
return {
spinning: false,
infoId: this.$props.commonId,
title: this.modalTitle, //弹出框标题
showPanel: this.show, //是否显示
listScroll: this.StaticParams.scrollOption,
//业务相关属性
clubId: this.$props.clubObj && this.$props.clubObj.club_id ? this.$props.clubObj.club_id : "",
clubName: this.$props.clubObj && this.$props.clubObj.club_name ? this.$props.clubObj.club_name : "",
memberNum: this.$props.clubObj && this.$props.clubObj.member_number ? this.$props.clubObj.member_number : 0,
clubDescribe: this.$props.clubObj && this.$props.clubObj.club_describe ? this.$props.clubObj.club_describe : "",
optionLeft: {
step: 1, // 数值越大速度滚动越快
limitMoveNum: 3, // 开始无缝滚动的数据量 this.dataList.length
hoverStop: true, // 是否开启鼠标悬停stop
direction: 2, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000 // 单步运动停止的时间(默认值1000ms)
},
swiperOption: {
autoplay: true,
speed: 1000,
loop: true,
slidesPerView: 5,
spaceBetween: 10,
// pagination: {
// el: ".swiper-pagination", //分页器
// clickable: true,
// },
},
imgList: [],//社团图片数据
activityList: [],//社团活动数据
columns: [
{
title: '序号',
dataIndex: 'index',
key: 'index',
align: "center",
width: 100
},
{
title: '日期',
dataIndex: 'activityDate',
key: 'activityDate',
align: "center",
width: 150
},
{
title: '活动名称',
dataIndex: 'activityName',
key: 'activityName',
align: "center"
},
{
title: '地点',
dataIndex: 'activityPlace',
key: 'activityPlace',
align: "center",
},
],//表格header
dataSource: [],//表格数据
showDataSource: false,
}
},
watch: {
commonId: function (newVal) {
this.infoId = newVal;
this.getDataInfo();
},
modalTitle: function (newData) {
this.title = newData;
},
show: function (newData) {
this.showPanel = newData;
},
clubObj: function (newData) {
this.clubId = newData.club_id;
this.clubName = newData.club_name;
this.memberNum = newData.member_number;
this.clubDescribe = newData.club_describe;
this.getDataexReport();
this.getDataexReport2();
}
},
mounted(){
// if (this.infoId && this.infoId !== "") {
// this.getDataInfo();
// }
//this.getDataexReport();
},
methods: {
//获取社团风暴图片
getDataexReport: function () {
let param = {
"access_token": "system_01##20200102030405##a6ce11eab94df48a6ce11eab",
"query": {
"query_id": "query_deyu_shetuan2",
"query_param": [
this.clubId + ""
]
},
"query_cache": 0,
"query_count": [],
"query_format": "json",
"query_group": []
}
this.imgList = [];
this.DataexReportInterface.callInterface([{
params: param,
method: "post",
}], (result) => {
if (result[0].data.success) {
let res = result[0].data.result;
if (res !== "") {
let dataList = JSON.parse(res);
if (dataList && dataList.length > 0) {
for (let i = 0, len = dataList.length; i < len; i++) {
let imgJson = dataList[i].attachment_json;
if (imgJson !== "") {
let imgArr = JSON.parse(imgJson);
this.imgList.push(imgArr);
}
}
}
}
}
})
},
//获取社团风暴活动
getDataexReport2: function () {
let param = {
"access_token": "system_01##20200102030405##a6ce11eab94df48a6ce11eab",
"query": {
"query_id": "query_deyu_shetuan3",
"query_param": [
this.clubId + ""
]
},
"query_cache": 0,
"query_count": [],
"query_format": "json",
"query_group": []
}
this.spinning = true;
this.showDataSource = false;
this.dataSource = [];
this.DataexReportInterface.callInterface([{
params: param,
method: "post",
}], (result) => {
this.showDataSource = true;
this.spinning = false;
if (result[0].data.success) {
let res = result[0].data.result;
if (res !== "") {
let dataList = JSON.parse(res);
if (dataList && dataList.length > 0) {
for (let i = 0; i < dataList.length; i++) {
let dataInfo = dataList[i];
let obj = {
index: i + 1,
activityDate: moment(dataInfo.activity_date.replace('T', ' ').replace('Z', '')).format("YYYY-MM-DD"),
activityName: dataInfo.activity_name,
activityPlace: dataInfo.activity_place,
}
this.dataSource.push(obj);
}
}
}
}
})
},
modalCallback: function (ary) {
if (ary[0] === "ok") {
//this.$emit("selectComplete", this.selectedDept);
} else {
this.infoTitle = "";
this.$emit("cancel", null);
}
},
},
components: {
AModal: Modal,
ModalPanel,
swiper,
swiperSlide,
ImgPreview,
ATable: Table,
ARow: Row,
ACol: Col,
AEmpty: Empty,
ASpin: Spin
}
}
</script>
<style scoped lang="scss">
@import "../assets/scss/style";
/deep/ .dialog-style {
.ant-modal-content {
padding-left: 100px;
padding-right: 10px;
background: #01123E;
.ant-modal-header {
height: 50px;
display: flex;
align-items: center;
background: #01123E;
border-bottom: 1px solid #1067B0;
margin-left: 100px;
.ant-modal-title {
color: #fff !important;
}
}
.ant-modal-body {
.common-info-style {
width: 100%;
height: 630px;
padding-right: 50px;
display: flex;
flex-direction: column;
.title-content-style {
width: 100%;
min-height: 30px;
display: flex;
justify-content: center;
align-items: center;
h1 {
color: #fff !important;
}
}
.content-style {
width: 100%;
height: 600px;
margin-top: 10px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.club-info-style {
width: calc(100% - 40px);
min-height: 180px;
display: flex;
flex-direction: column;
background-color: #4d5977;
border-radius: 5px;
color: white;
padding: 20px 10px 20px 30px;
position: relative;
justify-content: center;
margin: auto;
.title-box-style {
width: 30px;
height: 100px;
padding: 6px;
border-radius: 15px;
border: 1px solid $color-default-bright;
position: absolute;
left: -20px;
background-color: #011343;
color: $color-default-bright;
display: flex;
justify-content: center;
align-items: center;
}
.info-row-style {
width: 100%;
display: flex;
.left-style {
width: 100px;
text-align: right;
}
.right-style {
width: calc(100% - 100px);
padding-left: 10px;
}
}
}
.img-content-style {
width: calc(100% - 40px);
min-height: 130px;
display: flex;
flex-direction: column;
background-color: #4d5977;
border-radius: 5px;
color: white;
padding: 20px 10px 20px 30px;
position: relative;
justify-content: center;
margin: 10px auto;
.title-box-style {
width: 30px;
height: 100px;
padding: 6px;
border-radius: 15px;
border: 1px solid $color-default-bright;
position: absolute;
right: -15px;
background-color: #011343;
color: $color-default-bright;
display: flex;
justify-content: center;
align-items: center;
}
.banner {
width: 100%;
height: 90px;
padding-right: 20px;
.club-box-style {
width: 100px !important;
height: 100%;
display: flex;
flex-direction: column;
background-color: #2c4876;
border-radius: 5px;
position: relative;
}
}
}
.info-content-style {
width: calc(100% - 40px);
min-height: 250px;
display: flex;
flex-direction: column;
justify-content: center;
background-color: #4d5977;
border-radius: 5px;
color: white;
padding: 20px 10px 20px 30px;
position: relative;
margin: auto;
.title-box-style {
width: 30px;
height: 100px;
padding: 6px;
border-radius: 15px;
border: 1px solid $color-default-bright;
position: absolute;
left: -20px;
background-color: #011343;
color: $color-default-bright;
display: flex;
justify-content: center;
align-items: center;
top: 30%;
}
.table-box-style {
width: 100%;
height: 200px;
display: flex;
flex-direction: column;
.header-row {
.header-col {
height: 35px;
display: flex;
justify-content: center;
align-items: center;
background-color: #2b7cad;
color: white;
border: 1px solid $color-default-bright;
}
}
.activity-list-scroll-style {
width: 100%;
height: 165px;
display: flex;
flex-direction: column;
.body-row {
.body-col {
height: 30px;
display: flex;
justify-content: center;
align-items: center;
background-color: #011344;
color: $color-default-bright;
border: 1px solid $color-default-bright;
}
}
}
.no-data-div {
width: 100%;
height: 165px;
display: flex;
justify-content: center;
align-items: center;
background-color: #011344;
}
}
.ant-table-wrapper {
.ant-table-body {
table {
.ant-table-thead {
tr th {
background-color: #2b7cad;
color: white;
}
}
.ant-table-tbody {
tr td {
background-color: #011344;
color: $color-default-bright;
padding: 10px 16px !important;
}
}
}
}
.ant-table-placeholder {
background-color: #011344;
.ant-empty .ant-empty-description {
color: white;
}
}
}
}
}
}
.logo-content-style {
.title-logo-png {
vertical-align: middle;
border-style: none;
width: 240px;
height: 150px;
position: absolute;
top: -10px;
left: -10px;
}
}
}
}
}
</style>