activityItem.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710
  1. <template>
  2. <view class="container-activity-item" @click="goDetail(list)">
  3. <view class="content-sign">
  4. <view :class="[list.ActivityType === 0 ? 'is-down' : 'is-up', 'is-up-down']">{{ list.ActivityType === 0 ? "线下" : "线上" }}</view>
  5. <view :class="[list.ActiveState === 1 ? 'is-down-state' : list.ActiveState === 2 ? 'is-up-state' : 'is-end', 'is-up-down', 'state']">
  6. {{ list.ActiveState === 1 ? "未开始" : list.ActiveState === 2 ? "进行中" : "已结束" }}
  7. </view>
  8. </view>
  9. <view class="content-type"> {{ list.ActivityTypeName || "专项产业调研" }}</view>
  10. <view :class="['content-title', 'text-Line' ,list.ResearchTheme && 'content-min-hight']" v-if="list.ActivityName || list.ResearchTheme">
  11. {{ list.ActivityName || list.ResearchTheme }}
  12. </view>
  13. <view style="display: flex" class="content-text content-min-hight text_twoLine" v-if="list.ActivityTimeText && list.SourceType !== 1">
  14. <text style="flex-shrink: 0"> 活动时间:</text>
  15. <text> {{ list.ActivityTimeText }}</text>
  16. </view>
  17. <view class="content-text text-Line" v-else>
  18. {{ list.Host ? "主持人:" : list.Expert ? "专家背景:" : "" }}
  19. {{ list.Host ? list.Host : list.Expert ? list.Expert : "" }}
  20. </view>
  21. <view class="content-time" v-if="list.SourceType == 1">
  22. {{ list.ActivityTimeText }}
  23. </view>
  24. <view v-if="list.City" class="content-city">
  25. <image src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/location.png"></image>
  26. {{ list.City }}
  27. </view>
  28. <view :class="['content-btn', isEndBtnSlide(list) > 2 && 'content-btn-end']">
  29. <block v-if="list.SourceType === 1">
  30. <block v-if="list.ActiveState == 1">
  31. <text class="item-btn btn-solid" v-if="list.IsShowOutboundCall && list.ActivityTypeId == 1" @click.stop="signupIsAddOfCancel(list, 1)">{{
  32. list.IsSignup == 1 ? "取消外呼" : "预约外呼"
  33. }}</text>
  34. <text class="item-btn" v-if="list.IsShowAppointment" @click.stop="summaryIsHandel(list)">{{ list.IsAppointment == 1 ? "取消纪要" : "预约纪要" }}</text>
  35. <text class="item-btn" v-if="list.IsShowMeetingReminder" @click.stop="meetingReminderAdd(list, list.IsCancelMeetingReminder)">
  36. {{ list.IsCancelMeetingReminder == 0 ? "消息提醒" : "取消提醒" }}
  37. </text>
  38. <view class="item-btn" v-if="list.IsShowHelpSsk" style="width: 130rpx">
  39. <text @click.stop="askingGo(list)">帮我带问</text>
  40. </view>
  41. <text class="item-btn" v-if="list.IsShowOutboundCall && list.ActivityTypeId != 1" @click.stop="signupIsAddOfCancel(list, 1)">{{ list.IsSignup == 1 ? "取消外呼" : "预约外呼" }}</text>
  42. <text class="item-btn" v-if="list.IsShowDetails" @click.stop="goDetail(list)">查看详情</text>
  43. <block v-if="list.IsShowSignup">
  44. <block v-if="list.IsCClassMeeting">
  45. <text class="item-btn btn-solid" @click.stop="signupIsAddOfCancel(list, 3, 'CClass')">{{ list.IsSignup == 1 ? "取消报名" : "我要报名" }}</text>
  46. </block>
  47. <block v-else>
  48. <text class="item-btn btn-solid" v-if="list.IsSignup !== 1" @click.stop="wanttosignup(list)">我要报名</text>
  49. <text class="item-btn btn-solid" v-else @click.stop="signupIsAddOfCancel(list, 2)">{{ list.SignupType == 1 ? "取消外呼" : "取消报名" }}</text>
  50. </block>
  51. </block>
  52. </block>
  53. <text v-if="list.IsShowHelpSsk && list.ActiveState == 2" class="item-btn" @click="askingGo(list, '提问')">实时提问</text>
  54. </block>
  55. <view class="bottom-box real-time" v-else>
  56. <view class="bottom-box">
  57. <view class="" style="width: 130rpx"> </view>
  58. <text class="item-btn" @click.stop="lookImg(list)">行程安排</text>
  59. <block v-if="list.TripStatus == 2">
  60. <text v-if="list.ActiveState == 1" class="item-btn btn-solid" @click.stop="applyOfcancel(list)">{{ list.IsTrip == 0 ? "我要报名" : "取消报名" }}</text>
  61. </block>
  62. <block v-else>
  63. <text class="item-btn btn-solid" v-if="list.IsSignup !== 1" @click.stop="interest(list)">感兴趣</text>
  64. <text class="item-btn btn-solid" @click.stop="beNotInterested(list)" v-else>已预报名</text>
  65. </block>
  66. </view>
  67. </view>
  68. </view>
  69. <image v-if="list.TripStatus == 2" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/confirm_XC_new.png" class="content-img"></image>
  70. <image v-if="list.TripStatus == 1" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/Y_apply_new.png" class="content-img"></image>
  71. <!-- 所有自定义弹框 -->
  72. <modalDialog
  73. :isShow="isShow"
  74. :signupType="signupType"
  75. :goFollow="goFollow"
  76. :hasPermission="hasPermission"
  77. :jurisdictionList="jurisdictionList"
  78. :editIsShow="editIsShow"
  79. :isCancelShow="isCancelShow"
  80. :idTypeCancel="idTypeCancel"
  81. :countryCode="countryCode"
  82. :mobileEdit="mobileEdit"
  83. :goOnNextStep="goOnNextStep"
  84. :isShowhasPermission="isShowhasPermission"
  85. :applyForIsShow="applyForIsShow"
  86. :mailboxBinding="mailboxBinding"
  87. />
  88. <u-modal
  89. v-model="specialGoFollowShow"
  90. :content-style="{ fontSize: '32rpx' }"
  91. :show-cancel-button="show_cancel_button"
  92. confirm-text="知道了"
  93. :show-confirm-button="show_confirm_button"
  94. :show-title="false"
  95. :cancel-style="{ borderRight: '1rpx solid #EBEBEB' }"
  96. :confirm-style="{ fontWeight: '700' }"
  97. :mask-close-able="specialIsHintShow"
  98. @confirm="ininModalHandler"
  99. @cancel="ininModalHandler"
  100. >
  101. <view class="slot-content">
  102. <block v-if="specialPopupMsg">
  103. <text>{{ specialAccounts }}</text>
  104. <text class="light-hint">{{ specialPopupMsg }}</text>
  105. </block>
  106. <rich-text v-else :nodes="specialAccounts"></rich-text>
  107. </view>
  108. </u-modal>
  109. <view class="select-box">
  110. <u-popup v-model="selectShow" mode="bottom">
  111. <view style="color: #333333; font-size: 28rpxrpx">请选择参会方式</view>
  112. <view style="color: #2c83ff" @click.stop="signupIsAddOfCancel('', 1)">预约外呼</view>
  113. <view style="color: #2c83ff" @click.stop="signupIsAddOfCancel('', 2)">自主拨入</view>
  114. <view style="color: #a9afb8" @click.stop="selectShow = false">取消</view>
  115. </u-popup>
  116. </view>
  117. </view>
  118. </template>
  119. <script>
  120. import myActivityMixin from "@/components/activity/indexActivity.js";
  121. import modalDialog from "../modalDialog.vue";
  122. import { activity, User } from "@/config/api.js";
  123. export default {
  124. name: "",
  125. components: { modalDialog },
  126. props: {
  127. list: {
  128. type: Object,
  129. default: {},
  130. required: true,
  131. },
  132. },
  133. data() {
  134. return {
  135. /**/
  136. tabsActive: 0,
  137. /**/
  138. /* 共用的弹框 */
  139. isShow: false, //弹框
  140. signupType: "", //关注类型
  141. goFollow: false, //是否关注公众号
  142. hasPermission: "", //是否有权限
  143. jurisdictionList: {},
  144. editIsShow: false, //外呼莫泰框
  145. isCancelShow: false,
  146. idTypeCancel: {
  147. id: "",
  148. type: 1,
  149. cutId: "",
  150. state: "",
  151. isNum: false,
  152. },
  153. countryCode: "", //外呼区号
  154. mobileEdit: "", //外呼手机号
  155. goOnNextStep: "", //设置外呼号后弹出哪个
  156. isShowhasPermission: false, //拨打销售电话
  157. applyForIsShow: false, //潜在用户
  158. mailboxBinding: false, //是否绑定邮箱
  159. selectShow: false, //
  160. specialIsHintShow: false, // 按钮的显示
  161. specialGoFollowShow: false, // 弹框的隐藏显示
  162. specialAccounts: `您已开启【专项调研】新活动通知<br/><br/>请关注【查研观向小助手】公众号,及时获取微信消息提醒`,
  163. specialIsFollow: false, // 是否关注
  164. specialPopupMsg: "", // 消息的文案
  165. show_cancel_button: false, // 取消按钮的隐藏显示
  166. show_confirm_button: false, // 确定按钮的隐藏显示
  167. };
  168. },
  169. computed: {},
  170. watch: {},
  171. created() {},
  172. mounted() {},
  173. methods: {
  174. isEndBtnSlide(item) {
  175. let isKey = ["IsShowOutboundCall", "IsShowAppointment", "IsShowMeetingReminder", "IsShowHelpSsk", "IsShowDetails", "IsShowSignup"];
  176. let arr = [];
  177. Object.keys(item).forEach((key) => {
  178. if (isKey.includes(key)) {
  179. item[key] && arr.push(item[key]);
  180. }
  181. });
  182. return arr.length;
  183. },
  184. // 我要报名
  185. wanttosignup(item) {
  186. this.activityIdAdd = item.ActivityId;
  187. if (item.YidongActivityId) {
  188. this.goDetail(item);
  189. return;
  190. } else if (item.IsLimitPeople == 1 && item.ActivityTypeName == "公司调研电话会") {
  191. this.selectShow = true;
  192. } else {
  193. this.activityIdAdd = "";
  194. this.signupIsAddOfCancel(item, 3);
  195. }
  196. },
  197. //报名/取消报名
  198. signupIsAddOfCancel(item, type, valName = "") {
  199. let id = this.activityIdAdd || item.ActivityId;
  200. let itemData = item;
  201. if (item && item.IsSignup == 1) {
  202. const str = item.ActivityTime.replace(/-/g, "/");
  203. const date = new Date(str);
  204. const times = date.getTime();
  205. const num = new Date().getTime();
  206. if (times - num <= 3600000) {
  207. uni.showModal({
  208. confirmText: "知道了",
  209. showCancel: false,
  210. confirmColor: "#3385FF",
  211. content: type == 1 ? "活动开始前1小时内无法取消预约外呼,请联系对口销售处理" : "活动开始前1小时内无法取消报名,请联系对口销售处理",
  212. });
  213. return;
  214. }
  215. uni.showModal({
  216. content: type == 1 ? "您要取消此次活动预约外呼吗?" : "您要取消此次活动的报名吗?",
  217. confirmColor: "#3385FF",
  218. cancelColor: "#606266",
  219. success: async (res) => {
  220. if (res.confirm) {
  221. const res = await activity.signupCancel({ ActivityId: item.ActivityId, SignupType: type });
  222. if (res.Ret === 200) {
  223. this.parentDataEmit(item, "IsSignup", 0);
  224. this.init();
  225. type == 1
  226. ? uni.showToast({
  227. title: "预约外呼已取消",
  228. duration: 2000,
  229. })
  230. : uni.showToast({
  231. title: "已取消报名",
  232. duration: 2000,
  233. });
  234. if (valName === "我的") {
  235. this.getActivityList();
  236. }
  237. }
  238. }
  239. },
  240. });
  241. } else {
  242. let timer = null;
  243. if (this.flag) return;
  244. clearTimeout(timer);
  245. this.flag = true;
  246. this.selectShow = false;
  247. activity
  248. .signupAdd({
  249. ActivityId: id,
  250. SignupType: type,
  251. })
  252. .then((res) => {
  253. if (res.Ret == 200) {
  254. this.hasPermission = res.Data.HasPermission;
  255. this.jurisdictionList = res.Data;
  256. if (this.hasPermission == 1) {
  257. item.SignupType = type;
  258. this.signupType = valName == "CClass" ? "CClass" : res.Data.SignupType;
  259. this.countryCode = res.Data.CountryCode;
  260. this.mobileEdit = res.Data.Mobile;
  261. this.goOnNextStep = res.Data.GoFollow;
  262. this.idTypeCancel = {
  263. cutId: res.Data.ActivityId,
  264. state: 1,
  265. };
  266. if (res.Data.GoBindEmail) {
  267. this.mailboxBinding = true;
  268. return;
  269. }
  270. if (res.Data.SignupStatus !== "Success") {
  271. this.isShow = true;
  272. } else {
  273. if (res.Data.GoOutboundMobile) {
  274. this.editIsShow = true;
  275. } else if (res.Data.GoFollow) {
  276. this.goFollow = res.Data.GoFollow;
  277. } else if (res.Data.SignupStatus == "Success") {
  278. this.isShow = true;
  279. }
  280. this.parentDataEmit(item, "IsSignup", 1);
  281. }
  282. } else if (this.hasPermission == 2) {
  283. this.isShowhasPermission = true;
  284. } else if (this.hasPermission == 3 || this.hasPermission == 4 || this.hasPermission == 5) {
  285. this.applyForIsShow = true;
  286. }
  287. }
  288. });
  289. timer = setTimeout(() => {
  290. this.flag = false;
  291. }, 500);
  292. }
  293. },
  294. // 弹框的初始化
  295. init() {
  296. this.signupType = "";
  297. this.goFollow = false;
  298. this.isShow = false;
  299. this.isCancelShow = false;
  300. },
  301. //添加消息提醒接口
  302. meetingReminderAdd(item, type) {
  303. if (type != 0) {
  304. this.meetingReminderCancel(item);
  305. return;
  306. }
  307. activity
  308. .meetingReminderAdd({
  309. ActivityId: item.ActivityId,
  310. })
  311. .then((res) => {
  312. if (res.Ret == 200) {
  313. this.hasPermission = res.Data.HasPermission;
  314. this.jurisdictionList = res.Data;
  315. if (this.hasPermission == 1) {
  316. if ((res.Data.GoFollow && res.Data.SignupStatus !== "Success") || !res.Data.GoFollow) {
  317. this.isShow = true;
  318. } else {
  319. this.goFollow = res.Data.GoFollow;
  320. }
  321. this.signupType = 999;
  322. this.idTypeCancel = {
  323. cutId: res.Data.ActivityId,
  324. state: 1,
  325. name: "conference",
  326. };
  327. this.parentDataEmit(item, "IsCancelMeetingReminder", 1);
  328. } else if (this.hasPermission == 2) {
  329. this.isShowhasPermission = true;
  330. } else if (this.hasPermission == 3 || this.hasPermission == 4 || this.hasPermission == 5) {
  331. this.applyForIsShow = true;
  332. }
  333. }
  334. });
  335. },
  336. //取消消息提醒接口
  337. meetingReminderCancel(item) {
  338. activity
  339. .meetingReminderCancel({
  340. ActivityId: item.ActivityId,
  341. })
  342. .then((res) => {
  343. if (res.Ret == 200) {
  344. uni.showModal({
  345. confirmText: "知道了",
  346. confirmColor: "#3385FF",
  347. content: res.Msg,
  348. showCancel: false,
  349. success: (res) => {
  350. if (this.isrefresh) return this.getActivityList();
  351. if (res.confirm) {
  352. this.parentDataEmit(item, "IsCancelMeetingReminder", 0);
  353. }
  354. },
  355. });
  356. }
  357. });
  358. },
  359. //帮我带问
  360. async askingGo(item, type = "") {
  361. const res = await activity.checkAskActivity({ ActivityId: item.ActivityId });
  362. if (res.Ret == 200) {
  363. this.hasPermission = res.Data.HasPermission;
  364. this.jurisdictionList = res.Data;
  365. if (this.hasPermission == 1) {
  366. uni.navigateTo({
  367. url: "/activityPages/generationAsk/generationAsk?id=" + item.ActivityId + "&type=" + type,
  368. });
  369. } else if (this.hasPermission == 2) {
  370. this.isShowhasPermission = true;
  371. } else if (this.hasPermission == 3 || this.hasPermission == 4 || this.hasPermission == 5) {
  372. this.applyForIsShow = true;
  373. }
  374. }
  375. },
  376. // 弹框的初始化
  377. init() {
  378. this.signupType = "";
  379. this.goFollow = false;
  380. this.isShow = false;
  381. this.isCancelShow = false;
  382. },
  383. //预约纪要、取消预约纪要
  384. async summaryIsHandel(item, type = "") {
  385. if (item.IsAppointment == 0) {
  386. const res = await activity.postAppointmentAdd({ ActivityId: item.ActivityId });
  387. if (res.Ret == 200) {
  388. this.hasPermission = res.Data.HasPermission;
  389. this.jurisdictionList = res.Data;
  390. if (this.hasPermission == 1) {
  391. this.signupType = "summaryIsHandel";
  392. this.goOnNextStep = res.Data.GoFollow;
  393. if (res.Data.SignupStatus !== "Success") {
  394. this.isShow = true;
  395. } else {
  396. if (res.Data.GoFollow) {
  397. this.goFollow = res.Data.GoFollow;
  398. } else if (res.Data.SignupStatus == "Success") {
  399. this.isShow = true;
  400. }
  401. this.parentDataEmit(item, "IsAppointment", 1);
  402. }
  403. } else if (this.hasPermission == 2) {
  404. this.isShowhasPermission = true;
  405. } else if (this.hasPermission == 3 || this.hasPermission == 4 || this.hasPermission == 5) {
  406. this.applyForIsShow = true;
  407. }
  408. }
  409. } else {
  410. uni.showModal({
  411. content: "确定要取消预约本场调研的纪要吗?",
  412. confirmColor: "#3385FF",
  413. cancelColor: "#606266",
  414. success: async (res) => {
  415. if (res.confirm) {
  416. const res = await activity.postAppointmentCancel({ ActivityId: item.ActivityId });
  417. if (res.Ret === 200) {
  418. this.parentDataEmit(item, "IsAppointment", 0);
  419. this.init();
  420. if (type === "我的") {
  421. this.getActivityList();
  422. }
  423. }
  424. }
  425. },
  426. });
  427. }
  428. },
  429. //去往详情页面
  430. goDetail(item) {
  431. if (item.SourceType !== 1) {
  432. this.$store.dispatch("checkHandle", "/activityPages/specialDetail/specialDetail?id=" + item.ActivityId);
  433. } else {
  434. this.$store.dispatch("checkHandle", "/activityPages/activityDetail/activityDetail?id=" + item.ActivityId);
  435. }
  436. },
  437. // 查看行程的事件
  438. lookImg(item) {
  439. uni.previewImage({
  440. urls: [item.TripImgLink], //查看图片的数组
  441. });
  442. },
  443. // 点击感兴趣
  444. async interest(item) {
  445. const res = await activity.postSpecialSignupAdd({
  446. ActivityId: item.ActivityId,
  447. });
  448. if (res.Ret === 200) {
  449. this.modalShow(res);
  450. if (res.Data.SignupStatus == 1) {
  451. this.parentDataEmit(item, "IsSignup", 1);
  452. }
  453. }
  454. },
  455. // 报名或者取消报名
  456. async applyOfcancel(item, type = "") {
  457. this.show_confirm_button = true;
  458. if ((type != "back" && item.IsTrip == 1) || (type == "back" && item.IsSignup == 1)) {
  459. // 取消报名
  460. const str = item.ActivityTime.replace(/-/g, "/");
  461. const date = new Date(str);
  462. const times = date.getTime();
  463. const num = new Date().getTime();
  464. let twoDays = times - num <= 3600000 * 48;
  465. uni.showModal({
  466. content: twoDays ? "活动开始前48小时内,取消报名仍会维持扣点,确定要取消报名吗?" : "您要取消此次专项调研的预报名吗?",
  467. confirmColor: "#3385FF",
  468. cancelColor: "#606266",
  469. success: async (res) => {
  470. if (res.confirm) {
  471. const res = await activity.activityApecialCancel({
  472. ActivityId: item.ActivityId,
  473. });
  474. if (res.Ret === 200) {
  475. uni.showToast({
  476. title: "已取消",
  477. duration: 2000,
  478. });
  479. item.TripNum > 0 && (item.TripNum -= 1);
  480. type == "back" ? this.parentDataEmit(item, "IsSignup", 0) : this.parentDataEmit(item, "IsTrip", 0);
  481. }
  482. }
  483. },
  484. });
  485. } else {
  486. // 报名
  487. const res = await activity.activityApecialAdd({ ActivityId: item.ActivityId });
  488. if (res.Ret == 200) {
  489. this.modalShow(res);
  490. if (res.Data.SignupStatus == 1) {
  491. type == "back" ? this.parentDataEmit(item, "IsSignup", 1) : this.parentDataEmit(item, "IsTrip", 1);
  492. }
  493. }
  494. }
  495. },
  496. // 弹框的数据重置
  497. ininModalHandler() {
  498. this.show_cancel_button = false;
  499. this.show_confirm_button = false;
  500. this.specialIsHintShow = false;
  501. this.specialGoFollowShow = false;
  502. this.isCancelBtn = false;
  503. },
  504. // 显示弹框
  505. modalShow(res) {
  506. this.show_confirm_button = true;
  507. this.specialGoFollowShow = true;
  508. this.specialAccounts = res.Data.PopupMsg;
  509. this.specialPopupMsg = res.Data.PopupMsg2;
  510. },
  511. // 已预报名、就是不感兴趣
  512. beNotInterested(item) {
  513. uni.showModal({
  514. content: "您要取消此次专研调研的预报名吗?",
  515. confirmColor: "#3385FF",
  516. cancelColor: "#606266",
  517. success: async (res) => {
  518. if (res.confirm) {
  519. const res = await activity.postSpecialSignupAdd({
  520. ActivityId: item.ActivityId,
  521. });
  522. if (res.Ret === 200) {
  523. this.parentDataEmit(item, "IsSignup", 0);
  524. }
  525. }
  526. },
  527. });
  528. },
  529. // 新调研通知
  530. async specialFollow() {
  531. this.show_confirm_button = true;
  532. if (this.specialIsFollow) {
  533. uni.showModal({
  534. content: "您要取消【专项调研】新活动通知吗?",
  535. confirmColor: "#3385FF",
  536. cancelColor: "#606266",
  537. success: async (res) => {
  538. if (res.confirm) {
  539. const res = await activity.postSpecialFollow();
  540. if (res.Ret === 200) {
  541. this.specialIsFollow = !this.specialIsFollow;
  542. }
  543. }
  544. },
  545. });
  546. } else {
  547. const res = await activity.postSpecialFollow();
  548. if (res.Ret === 200) {
  549. this.show_cancel_button = true;
  550. this.specialIsFollow = !this.specialIsFollow;
  551. this.specialGoFollowShow = true;
  552. }
  553. }
  554. },
  555. parentDataEmit(item, value, num) {
  556. let index = this.$parent.newDataList.findIndex((key) => key.Activity && key.Activity.ActivityId === item.ActivityId);
  557. this.$parent.newDataList[index].Activity[value] = num;
  558. },
  559. },
  560. };
  561. </script>
  562. <style scoped lang="scss">
  563. .container-activity-item {
  564. position: relative;
  565. width: 100%;
  566. background: #ffffff;
  567. box-shadow: 0rpx 3rpx 8rpx 0rpx rgba(0, 0, 0, 0.16);
  568. border-radius: 8rpx;
  569. padding: 20rpx;
  570. margin-bottom: 20rpx;
  571. font-size: 24rpx;
  572. overflow: hidden;
  573. .content-sign {
  574. display: flex;
  575. .is-up-down {
  576. width: 110rpx;
  577. height: 40rpx;
  578. text-align: center;
  579. line-height: 40rpx;
  580. border-radius: 4rpx;
  581. color: #fff;
  582. }
  583. .is-up {
  584. background: linear-gradient(90deg, #0151ff 0%, #01b9ff 100%);
  585. }
  586. .is-up-state {
  587. background-color: #01a7ff;
  588. }
  589. .is-down-state {
  590. background: #ff9110;
  591. }
  592. .is-down {
  593. background: linear-gradient(90deg, #ff8a05 0%, #ffb74d 100%);
  594. }
  595. .is-end {
  596. background: #dddddd;
  597. }
  598. .state {
  599. border-radius: 4rpx 0 4rpx 0;
  600. margin-left: 10rpx;
  601. }
  602. }
  603. .content-type {
  604. font-size: 32rpx;
  605. font-weight: 500;
  606. color: #333333;
  607. line-height: 38rpx;
  608. margin: 10rpx 0;
  609. }
  610. .content-title {
  611. font-size: 28rpx;
  612. font-weight: 400;
  613. color: #333333;
  614. line-height: 44rpx;
  615. }
  616. .content-text {
  617. font-size: 28rpx;
  618. font-weight: 400;
  619. color: #999999;
  620. line-height: 44rpx;
  621. margin: 10rpx 0;
  622. }
  623. .content-time {
  624. color: #333333;
  625. margin-bottom: 15rpx;
  626. }
  627. .content-city {
  628. display: flex;
  629. justify-content: flex-end;
  630. align-items: center;
  631. color: #3385ff;
  632. image {
  633. width: 27rpx;
  634. height: 32rpx;
  635. margin-right: 8rpx;
  636. }
  637. }
  638. .content-img {
  639. position: absolute;
  640. top: 49rpx;
  641. right: 0;
  642. width: 205rpx;
  643. height: 119rpx;
  644. }
  645. .content-min-hight {
  646. min-height: 88rpx;
  647. }
  648. .content-btn {
  649. display: flex;
  650. overflow: hidden;
  651. overflow-x: auto;
  652. margin-top: 20rpx;
  653. justify-content: flex-end;
  654. .item-btn {
  655. color: #3385ff;
  656. display: flex;
  657. align-items: center;
  658. justify-content: center;
  659. width: 113rpx;
  660. height: 42rpx;
  661. border-radius: 4rpx;
  662. border: 1rpx solid #3385ff;
  663. margin-left: 20rpx;
  664. flex-shrink: 0;
  665. }
  666. .btn-solid {
  667. background: #3385ff;
  668. border: none;
  669. color: #fff;
  670. }
  671. }
  672. .content-btn-end {
  673. justify-content: flex-start;
  674. }
  675. .bottom-box {
  676. display: flex;
  677. }
  678. .text-Line {
  679. text-overflow: -o-ellipsis-lastline;
  680. overflow: hidden;
  681. text-overflow: ellipsis;
  682. display: -webkit-box;
  683. -webkit-box-orient: vertical;
  684. word-wrap: break-word;
  685. word-break: break-all;
  686. -webkit-line-clamp: 3;
  687. line-clamp: 3;
  688. }
  689. .select-box {
  690. width: 100%;
  691. view {
  692. height: 95prx;
  693. line-height: 95rpx;
  694. text-align: center;
  695. font-size: 32rpx;
  696. border-bottom: 1rpx solid #ebebeb;
  697. }
  698. }
  699. }
  700. </style>