activityItem.vue 25 KB

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