themeActivity.vue 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <template>
  2. <view class="container theme-container">
  3. <view class="top-title" v-if="!type">
  4. <image class="img" />
  5. <text>{{ contentLabel }}</text>
  6. </view>
  7. <!-- 活动列表 -->
  8. <view>
  9. <view class="collect-ul">
  10. <view class="collect-ltem" v-for="(item, index) in collectList" :key="index">
  11. <view class="title-date" @click="goDetail(item)">
  12. <text :class="item.ActivityType == 1 ? '' : 'xianxia'">{{ item.ActivityType == 1 ? "线上" : "线下" }}</text>
  13. {{ item.ActivityTimeText }}
  14. </view>
  15. <view class="item-li">
  16. <view class="item-img" @click="goDetail(item)">
  17. <image :src="item.ImgUrl"> </image>
  18. <text v-if="item.ActiveState == 1" class="img-status begin">未开始</text>
  19. <text v-else-if="item.ActiveState == 2" class="img-status proceed">进行中</text>
  20. <text v-else class="img-status">已结束</text>
  21. <view class="img-type">
  22. <image :src="item.ImgUrlText" mode=""></image>
  23. </view>
  24. </view>
  25. <view class="item">
  26. <view class="item-text" @click="goDetail(item)">
  27. <text class="activity-title"> {{ item.ActivityName }} </text>
  28. <text class="text_twoLine" v-if="item.Expert">专家背景:{{ item.Expert }} </text>
  29. <text class="text_twoLine" v-if="item.DistinguishedGuest">嘉宾:{{ item.DistinguishedGuest }} </text>
  30. <text class="text_twoLine" v-if="item.Speaker">主讲人:{{ item.Speaker }}</text>
  31. </view>
  32. <block v-if="item.ActiveState == 1">
  33. <view :class="['bottom-box', item.ActivityTypeId == 1 && item.IsLimitPeople == 0 && 'expert-item', item.City && 'city']">
  34. <view class="city-img" v-if="item.City">
  35. <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/location.png"></image>
  36. {{ item.City }}
  37. </view>
  38. <view style="display: flex">
  39. <text v-if="item.IsShowOutboundCall && item.ActivityTypeId == 1" class="button" @click="signupIsAddOfCancel(item, 1)">{{ item.IsSignup == 1 ? "取消外呼" : "预约外呼" }}</text>
  40. <text v-if="item.IsShowAppointment" @click="summaryIsHandel(item)">{{ item.IsAppointment == 1 ? "取消纪要" : "预约纪要" }}</text>
  41. <text v-if="item.IsShowMeetingReminder" @click="meetingReminderAdd(item.ActivityId, item.IsCancelMeetingReminder)">
  42. {{ item.IsCancelMeetingReminder == 0 ? "消息提醒" : "取消提醒" }}
  43. </text>
  44. <view v-if="item.IsShowHelpSsk" style="width: 130rpx">
  45. <text @click="askingGo(item)">帮我带问</text>
  46. </view>
  47. <text v-if="item.IsShowOutboundCall && item.ActivityTypeId != 1" class="button" @click="signupIsAddOfCancel(item, 1)">{{ item.IsSignup == 1 ? "取消外呼" : "预约外呼" }}</text>
  48. <block v-if="item.IsShowSignup">
  49. <block v-if="item.IsCClassMeeting">
  50. <text class="button" @click="signupIsAddOfCancel(item, 3, 'CClass')">{{ item.IsSignup == 1 ? "取消报名" : "我要报名" }}</text>
  51. </block>
  52. <block v-else>
  53. <text class="button" v-if="item.IsSignup !== 1" @click="wanttosignup(item)">我要报名</text>
  54. <text class="button" v-else @click="signupIsAddOfCancel(item, 2)">{{ item.SignupType == 1 ? "取消外呼" : "取消报名" }}</text>
  55. </block>
  56. </block>
  57. </view>
  58. </view>
  59. </block>
  60. </view>
  61. </view>
  62. </view>
  63. <u-loadmore :status="status" icon-type="flower" :load-text="loadText" margin-top="20" v-if="totalPage > 1" />
  64. </view>
  65. <view class="select-box">
  66. <u-popup v-model="selectShow" mode="bottom">
  67. <view style="color: #333333; font-size: 28rpxrpx">请选择参会方式</view>
  68. <view style="color: #2c83ff" @click="signupIsAddOfCancel('', 1)">预约外呼</view>
  69. <view style="color: #2c83ff" @click="signupIsAddOfCancel('', 2)">自主拨入</view>
  70. <view style="color: #a9afb8" @click="selectShow = false">取消</view>
  71. </u-popup>
  72. </view>
  73. <!-- 所有自定义弹框 -->
  74. <modalDialog
  75. :isShow="isShow"
  76. :signupType="signupType"
  77. :goFollow="goFollow"
  78. :signupStatus="signupStatus"
  79. :hasPermission="hasPermission"
  80. :jurisdictionList="jurisdictionList"
  81. :editIsShow="editIsShow"
  82. :isCancelShow="isCancelShow"
  83. :idTypeCancel="idTypeCancel"
  84. @cancelShowBtn="cancelEnsure"
  85. :countryCode="countryCode"
  86. :mobileEdit="mobileEdit"
  87. :goOnNextStep="goOnNextStep"
  88. :isShowhasPermission="isShowhasPermission"
  89. :applyForIsShow="applyForIsShow"
  90. :mailboxBinding="mailboxBinding"
  91. />
  92. </view>
  93. <areaCode :isAreaCode="isAreaCode" :areaCode="areaCode" />
  94. <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
  95. </view>
  96. </template>
  97. <script>
  98. import { activity, User } from "@/config/api.js";
  99. import { Throttle } from "@/config/util.js";
  100. import modalDialog from "@/components/modalDialog.vue";
  101. import myMixin from "../components/index.js";
  102. import myActivityMixin from "../components/indexActivity.js";
  103. import areaCode from "@/activityPages/components/areaCode.vue";
  104. import freeCharge from "@/components/freeCharge";
  105. export default {
  106. mixins: [myMixin, myActivityMixin],
  107. data() {
  108. return {
  109. hasPermission: "", //是否有权限
  110. contentImg: "",
  111. contentLabel: "",
  112. label: "",
  113. type: "",
  114. permissionIds: "",
  115. whichDay: "",
  116. };
  117. },
  118. components: {
  119. areaCode,
  120. modalDialog,
  121. freeCharge,
  122. },
  123. methods: {
  124. async getActivityList() {
  125. const res = await activity.getActivityListNew({
  126. PageSize: this.pageSize,
  127. CurrentIndex: this.page_no,
  128. Label: this.type ? "" : this.label,
  129. ActiveState: 1,
  130. ActivityTypeId: this.type ? this.label : "",
  131. ChartPermissionIds: this.permissionIds,
  132. WhichDay: this.whichDay,
  133. });
  134. if (res.Ret === 200) {
  135. if (this.type) {
  136. uni.setNavigationBarTitle({
  137. title: this.type,
  138. });
  139. }
  140. this.contentImg = res.Data.ImgUrl;
  141. this.contentLabel = res.Data.Label;
  142. this.status = this.page_no < res.Data.Paging.Pages ? "loadmore" : "nomore";
  143. if (this.page_no === 1) {
  144. this.collectList = res.Data.List || [];
  145. if (this.refresh) {
  146. uni.stopPullDownRefresh();
  147. this.refresh = false;
  148. }
  149. } else {
  150. this.collectList = this.collectList.concat(res.Data.List);
  151. }
  152. }
  153. },
  154. //获取是否需要填写区号接口
  155. countryCcode() {
  156. User.countryCcode().then((res) => {
  157. if (res.Ret == 200) {
  158. this.isNeedAddCountryCode = res.Data.IsNeedAddCountryCode;
  159. }
  160. });
  161. },
  162. },
  163. onLoad(option) {
  164. this.label = option.title;
  165. this.type = option.type;
  166. this.permissionIds = option.permissionIds || "";
  167. this.whichDay = option.whichDay || "";
  168. this.getActivityList();
  169. this.countryCcode();
  170. },
  171. onShow() {
  172. this.$store.dispatch("checkHandle");
  173. },
  174. /* 触底 */
  175. onReachBottom: Throttle(function () {
  176. if (this.status === "nomore") return;
  177. this.status = "loading";
  178. this.page_no++;
  179. this.getActivityList();
  180. }),
  181. /* 下拉刷新 */
  182. onPullDownRefresh: Throttle(function () {
  183. this.page_no = 1;
  184. this.refresh = true;
  185. this.getActivityList();
  186. }),
  187. /** 用户点击分享 */
  188. onShareAppMessage: function (res) {
  189. return {
  190. title: this.isHorzMobile ? "好友向您推荐此内容,上传名片享查研观向免费月卡!" : this.type || this.label,
  191. path: "/activityPages/themeActivity/themeActivity?title=" + this.label + "&permissionIds=" + this.permissionIds + "&whichDay=" + this.whichDay + "&type=" + this.type,
  192. };
  193. },
  194. };
  195. </script>
  196. <style lang="scss" scoped>
  197. .theme-container {
  198. background: #f7f7f7;
  199. padding-bottom: 30rpx;
  200. position: relative;
  201. .top-title {
  202. position: sticky;
  203. top: 0;
  204. z-index: 99;
  205. background-color: #fff;
  206. display: flex;
  207. align-items: center;
  208. height: 96rpx;
  209. color: #3385ff;
  210. font-size: 30rpx;
  211. .img {
  212. width: 38rpx;
  213. height: 38rpx;
  214. }
  215. }
  216. .collect-ul {
  217. padding-top: 10rpx;
  218. }
  219. }
  220. @import "../components/indexActivity.scss";
  221. </style>