details.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026
  1. <template>
  2. <view class="details" v-if="opusInfo">
  3. <navbar :config="config">
  4. <!-- <view
  5. slot="left"
  6. >
  7. <view class="slotBox">
  8. <view class="hxicon back" @click="iconBtn">
  9. &#xe679;
  10. </view>
  11. </view>
  12. </view> -->
  13. </navbar>
  14. <!-- 头部图片 -->
  15. <swiper class="swiper" style="height: 584rpx;" indicator-dots="true" autoplay="true" interval="5000"
  16. duration="1500" circular="true">
  17. <swiper-item v-if="opusInfo.opus_type == 1">
  18. <!-- <video :src="opusInfo.media_address" style="width: 100%;height: 100%;" ></video> -->
  19. <!-- <j-video class="jvideo" :url="opusInfo.media_address" width="750rpx" height="100%"></j-video> -->
  20. <video class="jvideo" :src="opusInfo.media_address" width="750rpx" height="100%"></video>
  21. </swiper-item>
  22. <block v-if="">
  23. <swiper-item v-for="(item, index) in imglist" :key="index" @click="preImg(index)">
  24. <image :src="item" mode="widthFix" style="width: 100%;height: 100%;"></image>
  25. </swiper-item>
  26. </block>
  27. </swiper>
  28. <!-- <view class="top-image">
  29. <image src="../../../static/delImg/banenr.png" mode=""></image>
  30. </view> -->
  31. <view v-if="isMy == true ? isMy : false">
  32. <view v-if="opusInfo.opus_status==0"
  33. style="text-align: center;margin-top: 10rpx;color: orange;font-weight: 700; padding: 30rpx;">
  34. 待审核
  35. </view>
  36. <view v-if="opusInfo.opus_status==1"
  37. style="text-align: center;margin-top: 10rpx;color: #1a1a1a;font-weight: 700; padding: 30rpx;">
  38. </view>
  39. <view v-if="opusInfo.opus_status==2"
  40. style="text-align: center;margin-top: 10rpx;color: red;font-weight: 700; padding: 30rpx;">
  41. 审核不通过:
  42. <text style="color: #000000;font-weight: 400; ">{{opusInfo.audit_remark}}</text>
  43. </view>
  44. </view>
  45. <view class="title">
  46. {{ opusInfo.title }}
  47. </view>
  48. <!-- 标题 -->
  49. <view class="three-even">
  50. <view class="item" style="position: relative">
  51. <view class="good" @click="clickGood">
  52. <view v-if="likeNum == true">
  53. <!-- <image src="../../../static/login/good-job.png" mode=""></image> -->
  54. <text class="iconfont" style="font-size: 40rpx;color: #03341F;">&#xe610;</text>
  55. </view>
  56. <view v-else>
  57. <!-- <image src="../../../static/good.png" mode=""></image> -->
  58. <text class="iconfont" style="font-size: 40rpx;color: #03341F;">&#xe642;</text>
  59. </view>
  60. <view class="num">
  61. {{ opusInfo.like_num }}
  62. </view>
  63. </view>
  64. <view class="message" @click="shouMsg">
  65. <image :src="imgUrl+'/message.png'" mode=""></image>
  66. <view class="num">
  67. {{ opusInfo.comment_sum }}
  68. </view>
  69. </view>
  70. <!-- @click="share" -->
  71. <view class="link">
  72. <text class="iconfont link-item">&#xea1b;</text>
  73. <button class="iconfont" open-type="share">&#xea1b;</button>
  74. <!-- <text class="iconfont link-item">&#xea1b;</text> -->
  75. <view class="num">
  76. {{ opusInfo.share_num }}
  77. </view>
  78. </view>
  79. <view v-if="isMy == true ? isMy : false" style="
  80. position: absolute;
  81. right: 6rpx;
  82. color: #999999;
  83. padding: 10rpx 24rpx;
  84. " @click="delWorks">
  85. 删除
  86. </view>
  87. </view>
  88. </view>
  89. <!-- 个人信息 -->
  90. <view class="personal" @click="goToHomepage()">
  91. <view class="item">
  92. <image style="border-radius: 50%;" v-if="opusInfo.head_photo" :src="opusInfo.head_photo" mode="">
  93. </image>
  94. <image style="border-radius: 50%;" v-else :src="imgUrl+'/head-on.png'" mode=""></image>
  95. <view class="name-time">
  96. <view class="name">
  97. {{ opusInfo.nickname }}
  98. </view>
  99. <view class="time">
  100. {{ opusInfo.create_time }}
  101. </view>
  102. </view>
  103. <view class="follow-button" v-if="falg == false" @click.stop="goFollow">
  104. +关注
  105. </view>
  106. <view class="follow-button" v-if="falg == true" @click.stop="goFollow">
  107. 已关注
  108. </view>
  109. </view>
  110. </view>
  111. <!-- 简介 -->
  112. <view class="introduce">
  113. <view class="top">
  114. <view class="simple">
  115. <view class="line"> </view>
  116. <view class="item"> 简介 </view>
  117. </view>
  118. <view class="simple-content">
  119. {{ opusInfo.content }}
  120. </view>
  121. </view>
  122. </view>
  123. <!-- 简介 -->
  124. <view class="recommend">
  125. <view class="recommend-item">
  126. <view v-for="(item, index) in opusInfo.opus_goods_list" :key="item.id">
  127. <view class="componen-titem" v-if="index < goodIndex" @click="goProductDetail(item.goodsId)">
  128. <view class="img">
  129. <image style="border-radius: 10rpx;" :src="item.goods.cover" mode=""></image>
  130. </view>
  131. <view class="item">
  132. <view class="item-title">
  133. {{ item.goods.title }}
  134. </view>
  135. <view class="num">
  136. <view class="num-color">
  137. <rich-text :nodes="$mUtil.priceBigSmall(item.goods.min_sale_price)"></rich-text>
  138. </view>
  139. <view class="button" v-if="ispay"> 立即抢购 </view>
  140. </view>
  141. </view>
  142. </view>
  143. </view>
  144. <view class="see-more" v-if="
  145. opusInfo.opus_goods_list.length > 0 &&
  146. goodIndex <= opusInfo.opus_goods_list.length
  147. ">
  148. <view class="item" @click="goodIndex = 6" style="font-size: 28rpx; -webkit-transform: scale(0.8);">
  149. 查看更多商品 </view>
  150. <view class="iconfont u-font24 linge">&#xe645;</view>
  151. </view>
  152. </view>
  153. </view>
  154. <view class="stay-msg">
  155. <view class="title-top"> 精选留言 </view>
  156. <view class="msg-wap" v-if="opusInfo.user_comment_list.length > 0">
  157. <view class="character" v-for="item in opusInfo.user_comment_list" :key="item.id">
  158. <view class="image">
  159. <image v-if="item.head_photo" style="border-radius: 50%;" :src="item.head_photo" mode="">
  160. </image>
  161. <image v-else style="border-radius: 50%;" :src="imgUrl+'/head-on.png'" mode=""></image>
  162. </view>
  163. <view class="item">
  164. <view class="top u-text-width-two" > {{ item.nickname||item.mobile}} </view>
  165. <view class="time">
  166. {{ item.create_time }}
  167. </view>
  168. <view class="content">
  169. {{ item.content }}
  170. </view>
  171. </view>
  172. </view>
  173. </view>
  174. <nodata style="margin-bottom: 100rpx;" v-else :config="{ top: 0, content: '暂无数据~' }"></nodata>
  175. </view>
  176. <!-- 弹出层 -->
  177. <uni-popup ref="popup" type="bottom">
  178. <view class="show-bottom">
  179. <view class="top">
  180. <view class="line"> </view>
  181. <view class="item"> 添加评论 </view>
  182. <view class="deter-mine" @click="sendMsg()"> 发送 </view>
  183. </view>
  184. <view class="input">
  185. <textarea class="texterea-item" v-model="content" maxlength="100" placeholder="我要说两句"
  186. placeholder-style="color: #cccccc;padding:''22rpx 20rpx"></textarea>
  187. </view>
  188. </view>
  189. </uni-popup>
  190. <share ref="shares" :contentHeight="580" v-if="isvisible"></share>
  191. </view>
  192. </template>
  193. <script>
  194. import share from "./../../public/share";
  195. import jVideo from "../../../components/j-video/j-video.vue"
  196. let app = getApp()
  197. export default {
  198. components: {
  199. share,
  200. jVideo
  201. },
  202. data() {
  203. return {
  204. config: {
  205. back: true, //false是tolbar页面 是则不写
  206. title: "作品详情",
  207. color: "#fff",
  208. //背景颜色;参数一:透明度(0-1);参数二:背景颜色(array则为线性渐变,string为单色背景)
  209. backgroundColor: [1, ['#0B844A','#00a54e']],
  210. // leftSlot:true,
  211. },
  212. opusInfo: null,
  213. goodIndex: 2,
  214. imglist: [],
  215. falg: true,
  216. content: null,
  217. isvisible: false,
  218. likeNum: null,
  219. options: null,
  220. publisher_id: null,
  221. existence:true,
  222. imgUrl: this.$mConfig.staticUrl,
  223. ispay: app.globalData.openPay,
  224. fromShare: false // 是否分享过来的页面
  225. };
  226. },
  227. onLoad(options) {
  228. this.options = options.id;
  229. if(options.share == 1) {
  230. this.fromShare = true
  231. }
  232. this.browseList()
  233. console.log(this.imglist)
  234. console.log(this.imglist.length > 0)
  235. },
  236. onShareAppMessage(res) {
  237. this.$http
  238. .post(`/opus/cache-bbs`, {
  239. bbs_type: 2,
  240. model_type: 0,
  241. model_id: this.opusInfo.id,
  242. })
  243. .then((res) => {});
  244. let that = this
  245. return {
  246. title: this.opusInfo.title,
  247. path: "/pages/research/recommend/details?id=" + this.options + '&share=1',
  248. imageUrl: "",
  249. desc: "",
  250. content: '',
  251. success(res) {
  252. uni.showToast({
  253. title: "分享成功",
  254. });
  255. },
  256. fail(res) {
  257. uni.showToast({
  258. title: "分享失败",
  259. icon: "none",
  260. });
  261. },
  262. };
  263. },
  264. onShareTimeline(res) {
  265. let imgUrl;
  266. if (this.imglist.length > 0) {
  267. imgUrl = this.imglist.split(",")[0];
  268. }
  269. return {
  270. title: this.opusInfo.title,
  271. type: 0,
  272. query: "/pages/research/recommend/details?id=" + this.options + '&share=1',
  273. summary: "",
  274. imageUrl: imgUrl,
  275. };
  276. },
  277. onShow() {
  278. this.getDetail(this.options);
  279. },
  280. onUnload() {
  281. // uni.switchTab({
  282. // url:"/pages/research/recommend/recommend"
  283. // })
  284. // let pages = getCurrentPages();
  285. // let beforePage = pages[0];
  286. // // #ifdef H5
  287. // beforePage.isload();
  288. // // #endif
  289. // // #ifndef H5
  290. // beforePage.$vm.isload();
  291. // // #endif
  292. // uni.navigateBack({
  293. // delta: 2,
  294. // });
  295. },
  296. methods: {
  297. iconBtn() {
  298. if(this.fromShare) {
  299. uni.redirectTo({
  300. url: '/pages/index/home'
  301. });
  302. }else {
  303. uni.navigateBack();
  304. }
  305. },
  306. preImg(index) {
  307. console.log(111, index)
  308. uni.previewImage({
  309. urls: this.imglist,
  310. current: index
  311. })
  312. },
  313. doesItExist(id){
  314. this.$http.get("/opus/info/"+id).then((res)=>{
  315. if(res&&res.code==200){
  316. if(res.data==null){
  317. this.$mUtil.toast("该作品已被删除")
  318. }else{
  319. }
  320. }else{
  321. return false
  322. }
  323. })
  324. },
  325. share() {
  326. let token = uni.getStorageSync("apiToken");
  327. if (!token) {
  328. uni.navigateTo({
  329. url: "/pages/login/index",
  330. });
  331. } else {
  332. this.$http.get("/opus/info/"+this.options).then(res=>{
  333. if(res&&res.code==200){
  334. if(res.data==null){
  335. this.$mUtil.toast("该作品已被删除")
  336. return false
  337. }else{
  338. this.isvisible = true;
  339. this.$nextTick(() => {
  340. this.$refs.shares.shareInfo(
  341. "/?pageType=3&type=1&id=" + this.opusInfo.id,
  342. 'pages/down',
  343. this.opusInfo.title,
  344. "",
  345. this.opusInfo.cover
  346. );
  347. });
  348. }
  349. }
  350. })
  351. }
  352. },
  353. goProductDetail(id) {
  354. uni.navigateTo({
  355. url: "/pages/product/goods/goods?id=" +
  356. id +
  357. "&shareId=" +
  358. this.opusInfo.publisher_id,
  359. });
  360. },
  361. //浏览作品
  362. browseList() {
  363. this.$http
  364. .post("/opus/cache-bbs", {
  365. bbs_type: 0,
  366. model_type: 0,
  367. model_id: this.options,
  368. num: 1,
  369. })
  370. .then((res) => {
  371. if (res && res.code == 200) {}
  372. });
  373. },
  374. //删除自己的作品
  375. delWorks() {
  376. let that = this;
  377. uni.showModal({
  378. title: "你确定要删除你的作品吗?",
  379. success: function(res) {
  380. if (res.confirm) {
  381. that.$http.del(`/opus/delete/${that.options}`).then((res) => {
  382. if (res && res.code == 200) {
  383. console.log("删除成功");
  384. that.$mUtil.toast("删除成功");
  385. setTimeout(() => {
  386. uni.navigateBack()
  387. }, 1000);
  388. }
  389. });
  390. } else if (res.cancel) {
  391. console.log("用户取消");
  392. }
  393. },
  394. });
  395. },
  396. //点赞功能完成
  397. clickGood() {
  398. let token = uni.getStorageSync("apiToken")
  399. if (!token) {
  400. uni.navigateTo({
  401. url: "../register/login"
  402. })
  403. } else {
  404. if (this.likeNum == true) {
  405. this.$http.post(`/opus/cancel-like/${this.options}`).then((res) => {
  406. if (res && res.code == 200) {
  407. this.$mUtil.toast("已取消点赞");
  408. this.likeNum = false;
  409. this.opusInfo.like_num--;
  410. }
  411. });
  412. }
  413. if (this.likeNum == false) {
  414. this.$http
  415. .post("/opus/cache-bbs", {
  416. bbs_type: 1,
  417. model_type: 0,
  418. model_id: this.options,
  419. })
  420. .then((res) => {
  421. if (res && res.code == 200) {
  422. this.$mUtil.toast("点赞成功");
  423. this.opusInfo.like_num++;
  424. this.likeNum = true;
  425. }
  426. });
  427. }
  428. // var pages = getCurrentPages(); // 获取页面栈
  429. // var prevPage = pages[pages.length - 2]; // 上一个页面
  430. // console.log('prevPage', prevPage)
  431. // if (prevPage.$vm) {
  432. // } else {
  433. // }
  434. }
  435. },
  436. goToHomepage() {
  437. // console.log(this.opusInfo)
  438. this.publisherId = this.opusInfo.publisher_id
  439. // console.log(this.publisherId)
  440. uni.navigateTo({
  441. url: "../community/homepage?user_id=" + this.publisherId
  442. })
  443. },
  444. //点击关注
  445. goFollow() {
  446. let concernedUserId = this.opusInfo.publisher_id;
  447. if (this.falg == false) {
  448. this.$http
  449. .post("/concerns/concern", {
  450. concerned_user_id: concernedUserId,
  451. })
  452. .then((res) => {
  453. if (res && res.code == 200) {
  454. this.falg = true;
  455. this.$mUtil.toast("已关注对方");
  456. }
  457. });
  458. }
  459. if (this.falg == true) {
  460. console.log(222);
  461. this.$http
  462. .post("/concerns/cancel-concern", {
  463. concerned_user_id: concernedUserId,
  464. })
  465. .then((res) => {
  466. if (res && res.code == 200) {
  467. this.falg = false;
  468. this.$mUtil.toast("已取消关注");
  469. }
  470. });
  471. }
  472. },
  473. getDetail(id) {
  474. this.$http.get("/opus/info/" + id).then((res) => {
  475. if (res && res.code == 200) {
  476. if (res && res.data == null) {
  477. this.$mUtil.toast("该商品已被删除")
  478. setTimeout(() => {
  479. uni.navigateBack()
  480. }, 2000)
  481. } else {
  482. this.opusInfo = res.data;
  483. this.falg = res.data.is_concern;
  484. if(res.data.images) {
  485. this.imglist = res.data.images.split(",");
  486. }
  487. this.likeNum = res.data.is_like;
  488. console.log(res.data.is_me);
  489. this.isMy = res.data.is_me;
  490. }
  491. }
  492. });
  493. },
  494. more() {
  495. console.log(666);
  496. },
  497. //弹出评论框
  498. shouMsg() {
  499. let token = uni.getStorageSync("apiToken")
  500. if (!token) {
  501. uni.navigateTo({
  502. url: "../register/login"
  503. })
  504. } else {
  505. this.$refs.popup.open();
  506. }
  507. },
  508. //发送消息,暂时还没写,目前是关闭评论框
  509. sendMsg() {
  510. if (this.content == null) {
  511. this.$mUtil.toast("请填写留言内容");
  512. return false;
  513. }
  514. this.$http
  515. .post("/opus/comment/", {
  516. model_id: this.opusInfo.id,
  517. content: this.content,
  518. })
  519. .then((res) => {
  520. if (res && res.code == 200) {
  521. this.$mUtil.toast("留言成功");
  522. this.$refs.popup.close();
  523. this.getDetail(this.opusInfo.id);
  524. this.content = ""
  525. }
  526. });
  527. },
  528. },
  529. };
  530. </script>
  531. <style lang="scss" scoped>
  532. @font-face {
  533. font-family: 'hxicon';
  534. /* project id 2009392 */
  535. src: url(data:font/truetype;charset=utf-8;base64,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) format('truetype');
  536. }
  537. @font-face {
  538. font-family: 'iconfont';
  539. /* project id 2070236 */
  540. src: url('//at.alicdn.com/t/font_2070236_id1ac7qapa.eot');
  541. src: url('//at.alicdn.com/t/font_2070236_id1ac7qapa.eot?#iefix') format('embedded-opentype'),
  542. url('//at.alicdn.com/t/font_2070236_id1ac7qapa.woff2') format('woff2'),
  543. url('//at.alicdn.com/t/font_2070236_id1ac7qapa.woff') format('woff'),
  544. url('//at.alicdn.com/t/font_2070236_id1ac7qapa.ttf') format('truetype'),
  545. url('//at.alicdn.com/t/font_2070236_id1ac7qapa.svg#iconfont') format('svg');
  546. }
  547. .hxicon {
  548. font-family: hxicon;
  549. font-size: 20px;
  550. font-style: normal;
  551. /* #ifndef APP-PLUS-NVUE */
  552. -webkit-font-smoothing: antialiased;
  553. -webkit-text-stroke-width: 0.2px;
  554. -moz-osx-font-smoothing: grayscale;
  555. /* #endif */
  556. }
  557. /deep/ video {
  558. width: 750rpx;
  559. height: 90%;
  560. }
  561. .slotBox {
  562. .back {
  563. padding: 0 13rpx;
  564. }
  565. }
  566. .show-bottom {
  567. background-color: #ffffff;
  568. border-radius: 50rpx 50rpx 0 0;
  569. padding: 37rpx 30rpx 22rpx 30rpx;
  570. .input {
  571. .texterea-item {
  572. background-color: #fafafa;
  573. padding: 22rpx 20rpx;
  574. border-radius: 21rpx;
  575. margin: 22rpx 29rpx 4rpx 30rpx;
  576. }
  577. }
  578. .top {
  579. display: flex;
  580. align-items: center;
  581. .line {
  582. width: 6rpx;
  583. height: 26rpx;
  584. background-color: #0B844A;
  585. border-radius: 3rpx;
  586. }
  587. .item {
  588. font-size: 36rpx;
  589. color: #1a1a1a;
  590. font-weight: 700;
  591. margin-left: 14rpx;
  592. flex: 1;
  593. }
  594. .deter-mine {
  595. font-size: 30rpx;
  596. font-weight: 500;
  597. color: #1a1a1a;
  598. }
  599. }
  600. }
  601. .stay-msg {
  602. .title-top {
  603. font-size: 36rpx;
  604. font-weight: 700;
  605. color: #1a1a1a;
  606. padding: 28rpx 0 31rpx 32rpx;
  607. }
  608. .msg-wap {
  609. padding-bottom: constant(safe-area-inset-bottom);
  610. padding-bottom: env(safe-area-inset-bottom);
  611. }
  612. .character {
  613. padding-right: 30rpx;
  614. display: flex;
  615. margin-bottom: 40rpx;
  616. .image {
  617. margin-left: 32rpx;
  618. margin-right: 18rpx;
  619. image {
  620. width: 83rpx;
  621. height: 83rpx;
  622. }
  623. }
  624. .item {
  625. .top {
  626. font-size: 28rpx;
  627. font-weight: 400;
  628. color: #1a1a1a;
  629. }
  630. .time {
  631. font-size: 24rpx;
  632. color: #999999;
  633. font-weight: 500;
  634. }
  635. }
  636. }
  637. .character:nth-child(odd) {
  638. .content {
  639. font-size: 28rpx;
  640. font-weight: 500;
  641. color: #1a1a1a;
  642. margin-top: 15rpx;
  643. }
  644. }
  645. .character:nth-child(even) {
  646. .content {
  647. font-size: 28rpx;
  648. font-weight: 500;
  649. color: #999999;
  650. margin-top: 15rpx;
  651. }
  652. }
  653. }
  654. .recommend {
  655. width: 750rpx;
  656. padding-bottom: 40rpx;
  657. border-bottom: 10rpx solid #f5f5f5;
  658. .recommend-item {
  659. width: 720rpx;
  660. margin: 0 auto;
  661. .see-more {
  662. display: flex;
  663. justify-content: center;
  664. align-items: center;
  665. font-size: 22rpx;
  666. color: #999999;
  667. font-weight: 400;
  668. .linge {
  669. margin-left: 9rpx;
  670. }
  671. }
  672. }
  673. .componen-titem {
  674. margin: 0 auto;
  675. display: flex;
  676. padding: 30rpx 39rpx;
  677. .img {
  678. image {
  679. width: 139rpx;
  680. height: 139rpx;
  681. }
  682. }
  683. .item {
  684. margin-left: 19rpx;
  685. padding-right: 39rpx;
  686. width: 100%;
  687. height: 139rpx;
  688. display: flex;
  689. flex-direction: column;
  690. justify-content: space-between;
  691. .item-title {
  692. color: #1a1a1a;
  693. font-size: 24rpx;
  694. overflow: hidden;
  695. text-overflow: ellipsis;
  696. display: -webkit-box;
  697. -webkit-line-clamp: 2;
  698. -webkit-box-orient: vertical;
  699. word-wrap: break-word;
  700. word-break: break-all;
  701. white-space: normal !important;
  702. }
  703. .num {
  704. // margin-top: 18rpx;
  705. display: flex;
  706. justify-content: space-between;
  707. align-items: baseline;
  708. width: 100%;
  709. .num-color {
  710. color: #ff0000;
  711. .large {
  712. font-size: 38rpx;
  713. font-weight: 700;
  714. }
  715. .small {
  716. font-size: 20rpx;
  717. font-weight: Regular;
  718. }
  719. }
  720. }
  721. .button {
  722. padding: 12rpx 35rpx 11rpx 35rpx;
  723. background-color: #0B844A;
  724. border-radius: 32rpx;
  725. color: #ffffff;
  726. font-size: 28rpx;
  727. font-weight: 500;
  728. }
  729. }
  730. }
  731. }
  732. .introduce {
  733. padding: 40rpx 19rpx 40rpx 30rpx;
  734. border-bottom: 8rpx solid #f5f5f5;
  735. .practice {
  736. margin-top: 34rpx;
  737. .practice-item {
  738. display: flex;
  739. align-items: center;
  740. .simple {
  741. width: 6rpx;
  742. height: 26rpx;
  743. background: #0B844A;
  744. border-radius: 3rpx;
  745. }
  746. .practice-details {
  747. font-size: 28rpx;
  748. font-weight: 700;
  749. color: #1a1a1a;
  750. margin-left: 16rpx;
  751. }
  752. }
  753. .introduction-details {
  754. margin-top: 19rpx;
  755. font-size: 24rpx;
  756. color: #666666;
  757. font-weight: 500;
  758. text-align: left;
  759. .item {
  760. font-size: 24rpx;
  761. color: #666666;
  762. }
  763. }
  764. }
  765. .middle {
  766. margin-top: 34rpx;
  767. .middle-item {
  768. display: flex;
  769. align-items: center;
  770. .simple {
  771. width: 6rpx;
  772. height: 26rpx;
  773. background-color: #0B844A;
  774. border-radius: 3rpx;
  775. }
  776. .material {
  777. font-size: 28rpx;
  778. font-weight: 700;
  779. color: #1a1a1a;
  780. margin-left: 16rpx;
  781. }
  782. }
  783. .item-block {
  784. margin-top: 19rpx;
  785. font-size: 24rpx;
  786. font-weight: 400;
  787. color: #666;
  788. line-height: 38rpx;
  789. }
  790. }
  791. .top {
  792. .simple-content {
  793. color: #666666;
  794. font-weight: 400;
  795. font-size: 24rpx;
  796. margin-top: 19rpx;
  797. }
  798. .simple {
  799. display: flex;
  800. align-items: center;
  801. .line {
  802. width: 6rpx;
  803. height: 26rpx;
  804. line-height: 26rpx;
  805. background-color: #0B844A;
  806. border-radius: 3rpx;
  807. }
  808. .item {
  809. margin-left: 16rpx;
  810. font-size: 28rpx;
  811. font-weight: 700;
  812. color: #1a1a1a;
  813. }
  814. }
  815. }
  816. }
  817. .personal {
  818. border-bottom: 8rpx solid #f5f5f5;
  819. .item {
  820. display: flex;
  821. margin: 28rpx 30rpx 40rpx 30rpx;
  822. .follow-button {
  823. margin-top: 12rpx;
  824. color: #0B844A;
  825. font-size: 28rpx;
  826. font-weight: 400;
  827. padding: 10rpx 26rpx;
  828. background-color: rgba(218, 198, 161, 1);
  829. border-radius: 18rpx;
  830. height: 40rpx;
  831. line-height: 40rpx;
  832. }
  833. .name-time {
  834. margin-left: 18rpx;
  835. flex: 1;
  836. width: 100%;
  837. .name {
  838. overflow: hidden;
  839. white-space: nowrap;
  840. text-overflow: ellipsis;
  841. width: 400rpx;
  842. font-size: 28rpx;
  843. line-height: 40rpx;
  844. color: #1a1a1a;
  845. font-weight: 400;
  846. opacity: 1;
  847. letter-spacing: -1rpx;
  848. margin-bottom: 10rpx;
  849. }
  850. .time {
  851. font-size: 24rpx;
  852. font-weight: 500;
  853. line-height: 33rpx;
  854. color: #999999;
  855. opacity: 1;
  856. }
  857. }
  858. image {
  859. width: 83rpx;
  860. height: 83rpx;
  861. }
  862. }
  863. }
  864. .three-even {
  865. .item {
  866. display: flex;
  867. margin: 0 30rpx;
  868. padding-bottom: 45rpx;
  869. border-bottom: 1rpx solid #e6e6e6;
  870. justify-content: flex-start;
  871. .link {
  872. display: flex;
  873. align-items: center;
  874. position: relative;
  875. .link-item {
  876. color: #03341F;
  877. margin-left: 44rpx;
  878. margin-left: 44rpx;
  879. }
  880. .num {
  881. margin-left: 11rpx;
  882. color: #999;
  883. }
  884. button {
  885. opacity: 0;
  886. position: absolute;
  887. top: 0;
  888. left: 44rpx;
  889. z-index: 1;
  890. }
  891. }
  892. .message {
  893. display: flex;
  894. align-items: center;
  895. image {
  896. margin-left: 44rpx;
  897. width: 38rpx;
  898. height: 30rpx;
  899. }
  900. .num {
  901. margin-left: 11rpx;
  902. font-size: 24rpx;
  903. color: #999999;
  904. font-weight: 500;
  905. }
  906. }
  907. .good {
  908. display: flex;
  909. align-items: center;
  910. image {
  911. width: 37rpx;
  912. height: 37rpx;
  913. }
  914. .num {
  915. margin-left: 10rpx;
  916. font-size: 24rpx;
  917. color: #999999;
  918. font-weight: 500;
  919. }
  920. }
  921. }
  922. }
  923. .title {
  924. margin: 33rpx 36rpx 18rpx 10rpx;
  925. padding-left: 16rpx;
  926. font-size: 32rpx;
  927. font-weight: 700;
  928. color: #1a1a1a;
  929. }
  930. .top-image {
  931. width: 750rpx;
  932. height: 584rpx;
  933. image {
  934. width: 750rpx;
  935. height: 584rpx;
  936. }
  937. }
  938. </style>