meetingOverEn.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  1. <template>
  2. <!--<view style="padding-bottom: 110rpx;" :style="{ backgroundColor:backgroundcolorApp }">-->
  3. <view style="padding-bottom: 110rpx;background-color: #fff;">
  4. <!-- 顶部导航栏 -->
  5. <!--<uni-nav-bar status-bar=true fixed=true left-icon="arrowleft" :background-color="navbarColor" color="#ffffff" @clickLeft="navigateBack">-->
  6. <uni-nav-bar status-bar=true fixed=true left-icon="arrowleft" :background-color="'#538BE7'" color="#ffffff"
  7. @clickLeft="navigateBack">
  8. <text slot="default" style="text-align: center; flex: 1; font-size: 18px; font-weight: bold;">Detail</text>
  9. <!-- <button slot="right" @click="toFeedback(feedbackId)" class="sunmit-btn" type="submit" hover-class="button-hover" :style="{color:backgroundcolorApp}">Feedback</button> -->
  10. <!-- 反馈和分享按钮 -->
  11. <view class="navbar-right" slot="right">
  12. <view class="message-box right-item" @click="showMenu">
  13. <u-icon name="share-fill" color="white" size="50"></u-icon>
  14. </view>
  15. </view>
  16. </uni-nav-bar>
  17. <!-- 点击分享按钮后出现的按钮 -->
  18. <view class="menu" :class="{ 'menuOn':menuflag }">
  19. <button @click="toFeedback(feedbackId)" class="sunmit-btn" hover-class="button-hover">Feedback</button>
  20. <button @click="share" class="sunmit-btn" hover-class="button-hover">Share</button>
  21. </view>
  22. <!-- 图片 -->
  23. <view class="topimage" :style="{'margin-top': systemInfo.statusBarHeight+'px'}" style="padding: 32upx;">
  24. <image :src="websiteUrl + meetingListDetail.meetingPicUrl + '?custom=600_390'" mode=""></image>
  25. </view>
  26. <!-- 会议介绍 -->
  27. <view class="meeting-intry" :class="{'meeting-intry-load':loadflag}" :style="{color:fontColor}">
  28. <view style="display: flex;justify-content: space-between;margin-bottom: 20rpx;">
  29. <view class="font-tb">{{moment(meetingListDetail.meetingStartDate).format('YYYY-MM-DD')}}</view>
  30. <view class="font-tb">{{meetingListDetail.meetingPlaceEn}}</view>
  31. </view>
  32. <view style="font-size: 40rpx;font-weight: 700;">{{meetingListDetail.meetingNameEn}}</view>
  33. <view class="font-centre">{{meetingListDetail.meetingIntroductionEn}}</view>
  34. <!-- 加载更多 -->
  35. <view class="load" @click="loadMore" v-if="loadbutton">{{loadtext}}</view>
  36. </view>
  37. <!-- 会议议程 -->
  38. <view class="agenda" v-if="conferenceAgenda" :style="{color:fontColor}">
  39. <view class="toptext">Draft Agenda</view>
  40. <!-- <view class="icon-arrowdown">
  41. <uni-icons type="arrowdown" size="25" class="top-arrowdown" color="#aaaaaa"></uni-icons>
  42. <uni-icons type="arrowdown" size="25" color="#aaaaaa"></uni-icons>
  43. </view> -->
  44. <!-- 列表部分 -->
  45. <view class="listBox" v-html="meetingListDetail.meetingYichengEn"></view>
  46. </view>
  47. <!-- 会议相关 -->
  48. <!-- 相关链接 -->
  49. <view class="agenda" v-if="link_flag" :style="{color:fontColor}">
  50. <view class="toptext">RELATED LINKS</view>
  51. <view v-for="(item,index) in meetingOutInfoFile" :key="index" @click="">
  52. <view v-for="(items,indexs) in item.list" :key="indexs" style="display: flex;">
  53. <view style="margin-right: 15rpx;">{{++index}}</view>
  54. <view @click="download(items.attachmentSavePath)" style="text-decoration: underline;">
  55. {{item.titleEn}}</view>
  56. </view>
  57. </view>
  58. </view>
  59. <!-- 相关观点 -->
  60. <view class="agenda" v-if="view_flag" :style="{color:fontColor}">
  61. <view class="toptext">RELATED VIEW</view>
  62. <view class="viewpoint" v-for="(item,index) in meetingOutInfoGuandian" :key="index"
  63. @click="toViewpoint(item.id)">
  64. {{item.speakGuestEn}}
  65. </view>
  66. </view>
  67. <!-- 相关图片视频 -->
  68. <view class="agenda" v-if="img_flag" :style="{color:fontColor}">
  69. <view class="toptext">RELATED IMAGE&MID</view>
  70. <view class="uni-padding-wrap">
  71. <view class="page-section swiper">
  72. <view class="page-section-spacing">
  73. <swiper class="swiper" next-margin="140rpx" :autoplay="autoplay" :interval="interval"
  74. :duration="duration">
  75. <swiper-item v-for="(item,index) in imgData">
  76. <image class="myImage" :src="websiteUrl + item + '?custom=400_260'" mode=""
  77. @click="navigateTo(item.id)"></image>
  78. </swiper-item>
  79. </swiper>
  80. </view>
  81. </view>
  82. </view>
  83. </view>
  84. <!-- 相关新闻 -->
  85. <view class="agenda" v-if="news_flag" :style="{color:fontColor}">
  86. <view class="toptext">RELATED News</view>
  87. <view style="display: flex;margin-bottom: 20rpx;" v-for="(item,index) in meetingOutInfoNews" :key="index"
  88. @click="toNewsDetail(item.id)">
  89. <view style="width: 30rpx;margin-right: 15rpx;">{{++index}}</view>
  90. <view style="text-decoration: underline;">{{item.titleEn}}</view>
  91. </view>
  92. </view>
  93. <!-- 底部报名按钮 -->
  94. <button type="default" class="bottomBtn" disabled="true"
  95. style="background-color: #d7d7d7;color: #FFFFFF;">END</button>
  96. <!-- title 分享的分类 summary 分享的介绍 href 分享的地址 8.8.20.112:19001-->
  97. <share v-show="ifShare == true" :show="ifShare" @closeShare="share" :title="'会议服务'"
  98. :summary="meetingListDetail.meetingName"
  99. :href="'https://m.geidcp.com/#/pages/conference/meetingIndexCh/meetingDetail?' + 'id=' + meetingListDetail.id"
  100. :imageUrl="websiteUrl + meetingListDetail.meetingPicUrl +'?custom=600_390'">
  101. </share>
  102. </view>
  103. </template>
  104. <script>
  105. import uniNavBar from "@/components/uni-nav-bar/uni-nav-bar.vue";
  106. import uniIcons from "@/components/uni-icons/uni-icons.vue";
  107. import share from '@/pages/conference/share.vue';
  108. export default {
  109. data() {
  110. return {
  111. background: ['color1', 'color2', 'color3'],
  112. // indicatorDots: true,
  113. autoplay: false,
  114. interval: 2000,
  115. duration: 500,
  116. //``````````````````````````
  117. link_flag: true, //决定相关链接是否显示
  118. view_flag: true, //决定相关观点是否显示
  119. img_flag: true, //决定相关图片是否显示
  120. news_flag: true, //决定相关新闻是否显示
  121. loadflag: false, //加载全部样式flag
  122. //```````````````````````
  123. num: '1',
  124. meetingListDetail: {},
  125. meetingOutInfoFile: {}, //相关文件链接
  126. meetingOutInfoGuandian: {}, //观点
  127. meetingOutInfoNews: {}, //新闻
  128. conferenceAgenda: true, //决定会议议程是否显示
  129. agendaData: '',
  130. imgData: [],
  131. backgroundcolorApp: '', //背景色
  132. navbarColor: '', //导航栏背景色
  133. fontColor: '', //字体颜色
  134. feedbackId: '', //传给反馈的id
  135. loadtext: 'MORE', //加载更多按钮的文字
  136. ifShare: false,
  137. loadbutton: true, //加载按钮flag
  138. menuflag: false, //弹出反馈和分享按钮
  139. }
  140. },
  141. components: {
  142. uniIcons,
  143. uniNavBar,
  144. share
  145. },
  146. methods: {
  147. async getList(id) {
  148. const res = await this.$myRequest({
  149. url: '/meeting/meetingOutInfos/findMeetingDetail/',
  150. data: {
  151. id: id
  152. },
  153. header: {
  154. ANON: true
  155. }
  156. });
  157. // this.bannerData = []
  158. // console.log(opt)
  159. this.backgroundcolorApp = res.data.basicInfo.backgroundcolorForApp //背景色
  160. this.navbarColor = res.data.basicInfo.backgroundcolorForApp //导航栏背景色
  161. if (!this.backgroundcolorApp) {
  162. this.fontColor = '#333333'
  163. this.navbarColor = '#3387ff'
  164. }
  165. this.meetingListDetail = res.data.basicInfo
  166. this.meetingOutInfoFile = res.data.meetingOutInfo.file.filter(item => {
  167. return item.list.length > 0 && item.titleEn != ''
  168. })
  169. this.meetingOutInfoGuandian = res.data.meetingOutInfo.guandian
  170. this.meetingOutInfoNews = res.data.meetingOutInfo.news.filter(item => {
  171. return item.languageType == 'en' && item.titleEn && item.titleEn != ''
  172. })
  173. if (res.data.meetingOutInfo.image.length) {
  174. let filterdFile = [];
  175. res.data.meetingOutInfo.image.forEach((item) => {
  176. if (item.photoType == "meeting_yicheng") {
  177. filterdFile.push(item);
  178. } else if (item.photoType == "meeting_pro_img") {
  179. item.list.forEach((_item) => {
  180. this.imgData.push(_item.attachmentSavePath);
  181. });
  182. }
  183. });
  184. if (filterdFile[0].list.length) {
  185. this.agendaData = filterdFile[0].list[0].attachmentSavePath;
  186. } else {
  187. this.agendaData = '';
  188. }
  189. } else {
  190. this.agendaData = '';
  191. this.imgData = [];
  192. }
  193. //如果当会议议程没有时,直接去掉会议议程部分
  194. if (res.data.basicInfo.meetingYichengEn == '') {
  195. this.conferenceAgenda = false
  196. }
  197. if (this.meetingOutInfoFile == '') {
  198. this.link_flag = false
  199. }
  200. if (this.meetingOutInfoGuandian == '') {
  201. this.view_flag = false
  202. }
  203. if (this.imgData == '') {
  204. this.img_flag = false
  205. }
  206. if (this.meetingOutInfoNews == '') {
  207. this.news_flag = false
  208. }
  209. if (this.meetingListDetail.meetingIntroductionEn.length < 540) {
  210. this.loadbutton = false
  211. }
  212. },
  213. navigateBack() {
  214. uni.navigateBack();
  215. },
  216. toNewsDetail(id) {
  217. uni.navigateTo({
  218. url: "newsDetailEn?id=" + id
  219. })
  220. },
  221. toViewpoint(id) {
  222. uni.navigateTo({
  223. url: "viewpointEn?id=" + id
  224. })
  225. },
  226. toFeedback(id) {
  227. let user = uni.getStorageSync('user');
  228. let token = uni.getStorageSync('Auth-Token');
  229. let path = "/pages/conference/meetingIndexEn/meetingFeedbackEn?id=" + id;
  230. if (user && token) {
  231. uni.navigateTo({
  232. url: path
  233. })
  234. } else {
  235. uni.setStorageSync('pathReminder', path)
  236. uni.showToast({
  237. title: 'please login',
  238. icon: 'none'
  239. })
  240. setTimeout(() => {
  241. uni.navigateTo({
  242. url: "/pages/public/login?back=1&language=en"
  243. })
  244. }, 1000)
  245. }
  246. },
  247. download(url) {
  248. uni.downloadFile({
  249. url: url,
  250. success: function(res) {
  251. var filePath = res.tempFilePath;
  252. uni.openDocument({
  253. filePath: filePath,
  254. success: function(res) {
  255. console.log('打开文档成功');
  256. }
  257. });
  258. }
  259. });
  260. console.log(url)
  261. },
  262. changeIndicatorDots(e) {
  263. this.indicatorDots = !this.indicatorDots
  264. },
  265. changeAutoplay(e) {
  266. this.autoplay = !this.autoplay
  267. },
  268. intervalChange(e) {
  269. this.interval = e.target.value
  270. },
  271. durationChange(e) {
  272. this.duration = e.target.value
  273. },
  274. //加载更多按钮
  275. loadMore() {
  276. this.loadflag = !this.loadflag
  277. if (!this.loadflag) {
  278. this.loadtext = 'MORE'
  279. } else {
  280. this.loadtext = 'PICK UP'
  281. }
  282. },
  283. //分享和反馈显示按钮
  284. showMenu() {
  285. this.menuflag = !this.menuflag
  286. },
  287. //分享
  288. share() {
  289. this.ifShare = !this.ifShare;
  290. },
  291. },
  292. onLoad(option) {
  293. // console.log("option.id", option.id)
  294. this.feedbackId = option.id
  295. this.getList(option.id)
  296. },
  297. onShow() {
  298. // console.log('====',this.meetingListDetail)
  299. }
  300. }
  301. </script>
  302. <style>
  303. page {}
  304. .iconsback {
  305. width: 30px;
  306. height: 30px;
  307. line-height: 30px;
  308. text-align: center;
  309. position: fixed;
  310. top: 72rpx;
  311. left: 20rpx;
  312. z-index: 1;
  313. background: rgba(200, 200, 200, .7);
  314. border-radius: 50%;
  315. }
  316. .iconsback:active {
  317. background: rgba(200, 200, 200, 1);
  318. }
  319. .topimage {
  320. width: 100%;
  321. height: 460rpx;
  322. }
  323. .topimage image {
  324. width: 100%;
  325. height: 100%;
  326. }
  327. .meeting-intry {
  328. position: relative;
  329. width: 686rpx;
  330. height: 900rpx;
  331. overflow: hidden;
  332. margin: auto;
  333. margin-bottom: 40rpx;
  334. padding: 42rpx 0rpx;
  335. /*background-color: rgb(0,0,0,0.2);*/
  336. color: #000;
  337. border-radius: 24rpx;
  338. }
  339. .meeting-intry-load {
  340. height: auto;
  341. }
  342. /* 文字样式 */
  343. .font-tb {
  344. font-size: 24rpx;
  345. }
  346. .font-centre {
  347. font-size: 28rpx;
  348. line-height: 56rpx;
  349. margin: 20rpx 0;
  350. }
  351. /* 加载全部内容 */
  352. .load {
  353. width: 100%;
  354. height: 30px;
  355. position: absolute;
  356. bottom: 0px;
  357. left: 0px;
  358. /*background: rgb(134 134 134);*/
  359. background: #fff;
  360. text-align: center;
  361. font-size: 20px;
  362. color: rgba(0, 0, 0, .37);
  363. }
  364. /* 会议议程部分样式 */
  365. .agenda {
  366. position: relative;
  367. width: 686rpx;
  368. margin: auto;
  369. margin-bottom: 40rpx;
  370. padding: 50rpx 30rpx 50rpx 30rpx;
  371. border-top: 2px solid #DCDCDC;
  372. /*background-color: rgb(0,0,0,0.2);*/
  373. color: #000;
  374. border-radius: 24rpx;
  375. overflow: hidden;
  376. }
  377. .toptext {
  378. font-size: 40rpx;
  379. font-weight: 700;
  380. margin-bottom: 20rpx;
  381. text-align: center;
  382. font-style: italic;
  383. /* color: #9fee4c; */
  384. }
  385. .icon-arrowdown {
  386. position: absolute;
  387. top: -30rpx;
  388. right: 26rpx;
  389. width: 50rpx;
  390. height: 50rpx;
  391. }
  392. .top-arrowdown {
  393. position: absolute;
  394. top: -16rpx;
  395. left: 0;
  396. }
  397. .bottomBtn {
  398. position: fixed;
  399. bottom: 0;
  400. width: 100%;
  401. height: 110rpx;
  402. font-size: 48rpx;
  403. text-align: center;
  404. line-height: 110rpx;
  405. border: 0px;
  406. }
  407. .viewpoint {
  408. display: inline-block;
  409. margin: 10rpx 20rpx 24rpx 0;
  410. padding: 10rpx 28rpx;
  411. background-color: #99aae8;
  412. font-size: 14px;
  413. border: 1px transparent solid;
  414. border-image: linear-gradient(to top, #d00d0d, #040101) 1 10;
  415. }
  416. /* 轮播图部分 */
  417. image {
  418. width: 230px;
  419. height: 160px;
  420. }
  421. .sunmit-btn {
  422. width: 85px;
  423. height: 30px;
  424. line-height: 30px;
  425. font-size: 14px;
  426. /* color: #FFFFFF; */
  427. /* background-color: #2d79e5; */
  428. background-color: #FFFFFF;
  429. padding: 0 10px;
  430. border-radius: 18px;
  431. }
  432. .button-hover[type=submit] {
  433. opacity: .75;
  434. transform: scale(0.95, 0.95);
  435. }
  436. .menu {
  437. /* background-color: pink; */
  438. width: 172rpx;
  439. height: 0rpx;
  440. position: fixed;
  441. top: 100rpx;
  442. right: 10rpx;
  443. overflow: hidden;
  444. z-index: 9;
  445. transition: all 0.3s ease-in-out 0s;
  446. opacity: 0;
  447. transform: scale(0);
  448. }
  449. .menuOn {
  450. height: auto;
  451. opacity: 1;
  452. transform: scale(1);
  453. }
  454. .menu>button {
  455. margin-bottom: 10rpx;
  456. }
  457. </style>