activityItem.vue 23 KB

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