activityItem.vue 26 KB

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