detail.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874
  1. <template>
  2. <view class="content">
  3. <view class="bgc">
  4. <view class="content1">
  5. <view class="left relative">
  6. <image :src="dataObj.circleHead?dataObj.circleHead:'../../static/imgs/logo.png'" mode="aspectFill" class="img"></image>
  7. <view class="share">
  8. <button class="shareBtn" type="default" data-name="shareBtn" open-type="share">
  9. <image style='width:30rpx;height:30rpx;position: absolute;top: 2px;right: 2px;' src="@/static/imgs/share1.png" mode="aspectFill">
  10. </image>
  11. </button>
  12. </view>
  13. </view>
  14. <view class="right">
  15. <view class="top flex flex-between">
  16. <view class="text">
  17. {{dataObj.circleName}}({{dataObj.cardNum}})
  18. </view>
  19. <span class="join" @click="$u.debounce(addCircle, 500)" v-if="!dataObj.circleCardInfo">
  20. <uni-icons type="plusempty" size="12" color="#fff"
  21. style="margin:0 10rpx;font-weight: bold;"></uni-icons>加入
  22. </span>
  23. <span class="join" @click="exitCircle" v-else>
  24. 退出
  25. </span>
  26. </view>
  27. <view style='flex-wrap: wrap;' class="bottom flex">
  28. <view v-for="item in dataObj.circleLabel" class="text">
  29. {{item}}
  30. </view>
  31. </view>
  32. </view>
  33. </view>
  34. <view class="content2">
  35. <view class="top flex-between">
  36. <view class="span">
  37. <span :class="selectIndex==0?'active':'text'" @click="changeCardStatus(0)">全部</span>
  38. <span @click="changeCardStatus(1)" :class="selectIndex==1?'active':'text'">已交换</span>
  39. <span @click="changeCardStatus(2)" :class="selectIndex==2?'active':'text'">未交换</span>
  40. </view>
  41. <view class="right flex">
  42. <view class="flex" v-if="dataObj.circleCardInfo" @click="myCardClick">
  43. <image src="../../static/imgs/cirlce/account.png" mode="widthFix"
  44. style="width: 36rpx;margin-right: 15rpx;height: auto;"></image>我的名片
  45. </view>
  46. <view class="">
  47. <image src="../../static/imgs/card/buju1.png" mode="widthFix"
  48. style="width: 50rpx;margin-left: 30rpx;height: 50rpx;" v-if="layout==1" @click="changeLayout(2)"></image>
  49. <image src="../../static/imgs/card/buju2.png" mode="widthFix"
  50. style="width: 50rpx;margin-left: 30rpx;height: 50rpx;" v-if="layout==2" @click="changeLayout(1)"></image>
  51. </view>
  52. </view>
  53. </view>
  54. </view>
  55. </view>
  56. <view class="relative" style='top:150px;'>
  57. <mescroll-uni height='1200' :up="upOption" :down="downOption" ref="mescrollRef" @init="mescrollInit" @up="upCallback" @down="downCallback" >
  58. <view class="content3" v-for="(item,index) in changeCardList"
  59. :style="item.currentBackground?'background:url('+item.currentBackground+');background-size:100% 100%':''"
  60. :key="index" v-if="layout==1">
  61. <view class="flex item">
  62. <view class="top flex">
  63. <view class="left">
  64. <u--image :src="item.headSculpture?item.headSculpture:'https://cdn.uviewui.com/uview/album/1.jpg'" shape="circle" width="66px"
  65. height="66px"></u--image>
  66. </view>
  67. <view class="right">
  68. <view class="row1">
  69. <text class="name">{{item.name}}</text>
  70. <text class="post">{{item.post}}</text>
  71. </view>
  72. <view class="row2">
  73. {{item.companyName}}
  74. </view>
  75. </view>
  76. </view>
  77. </view>
  78. <view class="line">
  79. <image src="../../static/imgs/cirlce/line.png" mode="widthFix" style="width: 95%;height: auto;"></image>
  80. </view>
  81. <view class="bottom" v-if="item.scopeOfBusiness">
  82. {{item.scopeOfBusiness}}
  83. </view>
  84. <view class="bottom no-text" v-else>
  85. 暂无业务描述
  86. </view>
  87. <view class="flex btn" v-if="item.lookPage==1||item.notDisplay!=1">
  88. <image @click='toHome(item)' src="../../static/imgs/cirlce/home.png" mode="widthFix" style="width: 32rpx;height: auto;"
  89. v-if="item.lookPage==1&&item.personalHomeId"></image>
  90. <image src="../../static/imgs/cirlce/change.png" mode="widthFix" style="width: 32rpx;;height: auto"
  91. @click="changeCard(item)" v-if="item.notDisplay!=1"></image>
  92. </view>
  93. </view>
  94. <view class="layout2" v-if="layout==2">
  95. <view class="list_box">
  96. <view class="list-item" v-for="(item,index) in changeCardList" :key="index" @click="itemClick(item,index)">
  97. <view class="left">
  98. <view class="icon-box">
  99. <image :src="item.headSculpture?item.headSculpture:'https://cdn.uviewui.com/uview/album/1.jpg'" style="width: 70rpx;height:70rpx;border-radius: 20rpx;"></image>
  100. </view>
  101. <view class="name">
  102. {{item.name}}
  103. </view>
  104. <view class="name">
  105. {{item.post}}
  106. </view>
  107. </view>
  108. <view class="right">
  109. <view class="flex btn" v-if="item.lookPage==1||item.notDisplay!=1">
  110. <image @click='toHome(item)' src="../../static/imgs/cirlce/home.png" mode="widthFix" style="width: 32rpx;height: auto;"
  111. v-if="item.lookPage==1&&item.personalHomeId"></image>
  112. <image src="../../static/imgs/cirlce/change.png" mode="widthFix" style="width: 32rpx;;height: auto;margin-left: 20rpx;"
  113. @click="changeCard(item)" v-if="item.notDisplay!=1"></image>
  114. </view>
  115. </view>
  116. </view>
  117. </view>
  118. </view>
  119. </mescroll-uni>
  120. </view>
  121. <u-picker :immediateChange ="true" @cancel="isShowCard=false" :show="isShowCard" :columns="cardList" keyName="cardBusiness"
  122. @confirm="cardConfirm"></u-picker>
  123. <u-toast ref="uToast"></u-toast>
  124. <u-modal :show="show" :content='content' @confirm="$u.debounce(joinCircle, 500)" showCancelButton
  125. @cancel="show=false" @close="show=false" closeOnClickOverlay></u-modal>
  126. <u-modal :show="show1" content='确定退出圈子' @confirm="$u.debounce(exitCircleConfirm, 500)" showCancelButton
  127. @cancel="show1=false" @close="show1=false" closeOnClickOverlay></u-modal>
  128. <u-modal :show="isShowChangeCard" content='确定交换名片?' @confirm="$u.debounce(confirmChangeSubmit, 500)"
  129. showCancelButton @cancel="isShowChangeCard=false" @close="isShowChangeCard=false"
  130. closeOnClickOverlay></u-modal>
  131. <!-- #ifdef MP-WEIXIN -->
  132. <u-modal :show="showAuthorizePhone" :showConfirmButton="false">
  133. <view class="slot-content">
  134. <view class="auth-card">
  135. <view class="">
  136. <img class="avatar-img" src="@/static/imgs/logo.png" mode="widthFix">
  137. </view>
  138. <view class="content">手机登录后才能查看名片哦~</view>
  139. </view>
  140. <view class="auth-btncard">
  141. <view class="btn-unok">
  142. <u-button :customStyle="customStyleUnOk" @click="showAuthorizePhone=false" :plain="true">
  143. 拒绝</u-button>
  144. </view>
  145. <view class="btn-ok">
  146. <u-button :customStyle="customStyleOk" open-type="getPhoneNumber"
  147. @getphonenumber="getPhoneNumber"> 立即登录</u-button>
  148. </view>
  149. </view>
  150. </view>
  151. </u-modal>
  152. <u-modal :show="showAuthorizeUser" :showConfirmButton="false">
  153. <view class="slot-content">
  154. <view class="auth-card">
  155. <view class="">
  156. <img class="avatar-img" src="/static/imgs/logo.png" mode="widthFix">
  157. </view>
  158. <view class="content">邀请您补全个人信息<br></br>(昵称、头像)</view>
  159. <view style="margin-left: 100rpx;margin-right: 100rpx">
  160. <u-form :model="userInfo" ref="uForm">
  161. <u-form-item label="头像">
  162. <button class="avatar-wrapper" open-type="chooseAvatar" @chooseavatar="onChooseAvatar"
  163. slot="right">
  164. <image class="avatar"
  165. :src="userInfo.head?userInfo.head:'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'">
  166. </image>
  167. </button>
  168. </u-form-item>
  169. <u-form-item label="昵称">
  170. <u-input inputAlign='right' v-model="userInfo.nickname" class="weui-input"
  171. @blur="userNameInput" placeholder="请输入昵称" border="false" />
  172. <!-- <input type="nickname" :value="userInfo.nickname" class="weui-input" @blur="userNameInput" placeholder="请输入昵称"/> -->
  173. </u-form-item>
  174. </u-form>
  175. </view>
  176. </view>
  177. <view class="auth-btncard">
  178. <view class="btn-unok"><u-button :customStyle="customStyleUnOk" @click="authUser(0)">
  179. 拒绝</u-button>
  180. </view>
  181. <view class="btn-ok">
  182. <u-button :customStyle="customStyleOk" @click="authUser(1)"> 允许</u-button>
  183. </view>
  184. </view>
  185. </view>
  186. </u-modal>
  187. <!-- #endif -->
  188. </view>
  189. </template>
  190. <script>
  191. var that;
  192. import {
  193. pathToBase64,
  194. base64ToPath
  195. } from 'image-tools'
  196. import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
  197. export default {
  198. mixins: [MescrollMixin], // 使用mixin
  199. data() {
  200. return {
  201. layout:1,
  202. showAuthorizeUser: false,
  203. showAuthorizePhone: false,
  204. customStyleUnOk: {
  205. marginTop: '20rpx',
  206. color: '#18254C',
  207. border: '2px solid #18254C',
  208. "border-radius": "10px",
  209. fontSize: "32rpx"
  210. },
  211. customStyleOk: {
  212. marginTop: '20rpx',
  213. color: '#fff',
  214. border: '2px solid #18254C',
  215. "border-radius": "10px",
  216. fontSize: "32rpx",
  217. background: "#18254C"
  218. },
  219. userInfo: {
  220. head: '',
  221. nickname: '',
  222. phone: '',
  223. },
  224. downOption: {
  225. auto: false,
  226. textColor: '#bbb'
  227. },
  228. upOption: {
  229. page: {
  230. size: 10 // 每页数据的数量,默认10
  231. },
  232. auto: false,
  233. noMoreSize: 1,
  234. textNoMore: '没有更多了~',
  235. textColor: '#bbb'
  236. },
  237. selectIndex: 0,
  238. isShowChangeCard: false,
  239. show1:false,
  240. dataObj: {
  241. circleName: '',
  242. cardNum: '',
  243. circleLabel: []
  244. },
  245. canReset: false,
  246. cardList: [],
  247. isShowCard: false,
  248. show: false,
  249. content: '加入后其他用户查看您的名片和主页,确认加入圈子?',
  250. cardId: '',
  251. id: '',
  252. changeCardList: [],
  253. cardStatus: '',
  254. isMyCard: false,
  255. swapNameCards: false,
  256. selectMycard: {},
  257. selectRowCard: {}
  258. };
  259. },
  260. onShow() {
  261. if (uni.getStorageSync("userInfo").phone) {
  262. this.$nextTick(function() {
  263. that.mescroll.resetUpScroll()
  264. });
  265. }else {
  266. this.showAuthorizePhone = true
  267. }
  268. },
  269. onLoad(options) {
  270. that = this
  271. console.log(options)
  272. this.id = options.val
  273. this.userInfo = uni.getStorageSync("userInfo")
  274. },
  275. onShareAppMessage(res) {
  276. if (res.from === 'button') {
  277. let path = `/pages/circle/detail?val=${that.dataObj.id}`
  278. return {
  279. title:`${that.userInfo.nickname}邀请您加入${that.dataObj.circleName}圈子`,
  280. path: path,
  281. };
  282. }
  283. },
  284. methods: {
  285. changeLayout(type){
  286. this.layout = type
  287. },
  288. //获取昵称输入内容
  289. userNameInput(e) {
  290. this.userInfo.nickname = e.detail.value
  291. },
  292. async onChooseAvatar(e) {
  293. this.$set(this.userInfo, "head", await this.toBase64(e.detail.avatarUrl))
  294. },
  295. toBase64(url) {
  296. return new Promise(resolve => {
  297. pathToBase64(url).then(path => {
  298. resolve(path);
  299. }).catch(error => {
  300. console.log(error)
  301. })
  302. })
  303. },
  304. async authUser(type) {
  305. //同步信息,没有头像和昵称自动生成
  306. this.userInfo = await this.$request.syncInfo(this.userInfo)
  307. if (this.userInfo.openId) {
  308. uni.setStorageSync("userInfo", that.userInfo)
  309. that.showAuthorizeUser = false
  310. that.mescroll.resetUpScroll()
  311. }
  312. },
  313. async getPhoneNumber(e) {
  314. that.userInfo = await this.$request.wxlogin()
  315. this.$nextTick(function() {
  316. that.userInfo.phone = that.$request.getPhone(e, that.userInfo)
  317. that.showAuthorizePhone = false
  318. that.showAuthorizeUser = true
  319. });
  320. },
  321. toHome(item){
  322. uni.navigateTo({
  323. url:'/pages/circle/lookHome?id='+item.personalHomeId
  324. })
  325. },
  326. confirmChangeSubmit() {
  327. this.$request.baseRequest('admin.unimall.cardExchangeInfo', 'add', {
  328. cardExchangeInfo: JSON.stringify({
  329. sendId: this.userInfo.id,
  330. receiveId: this.selectRowCard.receiveId,
  331. sendCardId: this.selectMycard.id,
  332. receiveCardId: this.selectRowCard.id,
  333. circleName: this.dataObj.circleName
  334. }),
  335. }, failres => {
  336. console.log('res+++++', failres.errmsg)
  337. uni.showToast({
  338. icon:"none",
  339. title: failres.errmsg,
  340. duration: 3000
  341. });
  342. uni.hideLoading()
  343. }).then(res => {
  344. this.isShowChangeCard = false
  345. uni.showToast({
  346. icon:"success",
  347. title: '操作成功!',
  348. duration: 2000
  349. });
  350. setTimeout(() => {
  351. this.mescroll.resetUpScroll()
  352. }, 500)
  353. })
  354. },
  355. changeMyCard() {
  356. this.$request.baseRequest('admin.unimall.circleCardInfo', 'update', {
  357. circleCardInfo: JSON.stringify({
  358. circleId: this.dataObj.id,
  359. cardId: this.cardId,
  360. commonId: this.userInfo.id
  361. }),
  362. }, failres => {
  363. console.log('res+++++', failres.errmsg)
  364. uni.showToast({
  365. icon:"none",
  366. title: failres.errmsg,
  367. duration: 3000
  368. });
  369. uni.hideLoading()
  370. }).then(res => {
  371. this.isShowCard = false
  372. uni.showToast({
  373. icon:"success",
  374. title: '更改圈子名片成功!',
  375. duration: 2000
  376. });
  377. this.mescroll.resetUpScroll()
  378. })
  379. },
  380. myCardClick() {
  381. this.isShowCard = true
  382. this.isMyCard = true
  383. },
  384. changeCardStatus(val) {
  385. this.selectIndex = val
  386. this.cardStatus = val
  387. this.getCardList({
  388. num: 1,
  389. size: 10
  390. })
  391. },
  392. exitCircle() {
  393. console.log(11111)
  394. this.show1=true
  395. },
  396. exitCircleConfirm(){
  397. this.$request.baseRequest('admin.unimall.circleCardInfo', 'delete', {
  398. id: this.dataObj.circleCardInfo.id,
  399. }, failres => {
  400. console.log('res+++++', failres.errmsg)
  401. uni.showToast({
  402. icon:"none",
  403. title: failres.errmsg,
  404. duration: 3000
  405. });
  406. uni.hideLoading()
  407. }).then(res => {
  408. this.isShowCard = false
  409. this.show1=false
  410. uni.showToast({
  411. icon:"success",
  412. title: '退出成功!',
  413. duration: 2000
  414. });
  415. this.mescroll.resetUpScroll()
  416. })
  417. },
  418. cardConfirm(e) {
  419. console.log("e", e)
  420. this.cardId = e.value[0].id
  421. if (this.isMyCard) {
  422. this.changeMyCard()
  423. } else if (this.swapNameCards) {
  424. this.selectMycard = e.value[0]
  425. this.isShowCard = false
  426. this.isShowChangeCard = true
  427. } else {
  428. this.joinCircle()
  429. }
  430. },
  431. joinCircle() {
  432. this.$request.baseRequest('admin.unimall.circleCardInfo', 'add', {
  433. circleCardInfo: JSON.stringify({
  434. circleId: this.dataObj.id,
  435. cardId: this.cardId,
  436. commonId: this.userInfo.id
  437. }),
  438. }, failres => {
  439. console.log('res+++++', failres.errmsg)
  440. uni.showToast({
  441. icon:"none",
  442. title: failres.errmsg,
  443. duration: 3000
  444. });
  445. uni.hideLoading()
  446. }).then(res => {
  447. this.isShowCard = false
  448. this.show = false
  449. uni.showToast({
  450. icon:"success",
  451. title: '加入成功!',
  452. duration: 2000
  453. });
  454. this.mescroll.resetUpScroll()
  455. })
  456. },
  457. addCircle() {
  458. if (this.cardList[0].length == 1) {
  459. // console.log(this.cardList[0])
  460. this.cardId = this.cardList[0][0].id
  461. this.show = true
  462. } else if (this.cardList[0].length > 1) {
  463. this.isShowCard = true
  464. } else {
  465. uni.showToast({
  466. icon:"none",
  467. title: '您还没有自己的名片,请创建后再加入圈子!',
  468. duration: 2000
  469. });
  470. // this.$refs.uToast.show({
  471. // type: 'error',
  472. // message: "您还没有自己的名片,请创建后再加入圈子",
  473. // })
  474. }
  475. },
  476. getCardList(page) {
  477. uni.showLoading({
  478. title: '数据加载中'
  479. })
  480. this.$request.baseRequest('admin.unimall.circleManagementInfo', 'circleCardlist', {
  481. commonId: this.userInfo.id,
  482. id: this.dataObj.id,
  483. status: this.cardStatus,
  484. page: page.num,
  485. limit: page.size,
  486. }, failres => {
  487. console.log('res+++++', failres.errmsg)
  488. uni.hideLoading()
  489. uni.showToast({
  490. icon:"none",
  491. title: failres.errmsg,
  492. duration: 3000
  493. });
  494. }).then(res => {
  495. uni.hideLoading()
  496. console.log(11)
  497. let curPageData = res.data.items;
  498. let totalPage = res.data.total;
  499. let curPageLen = curPageData.length;
  500. this.mescroll.endByPage(curPageLen, totalPage);
  501. console.log(res.data)
  502. // this.makeData(res.data)
  503. if (page.num == 1) this.changeCardList = []; //如果是第一页需手动置空列表
  504. this.changeCardList = this.changeCardList.concat(curPageData); //追加新数据
  505. for(let i = 0;i<this.changeCardList.length;i++){
  506. if(this.changeCardList[i].scopeOfBusiness&&this.changeCardList[i].scopeOfBusiness.length>90){
  507. this.changeCardList[i].scopeOfBusiness = this.changeCardList[i].scopeOfBusiness.substr(0,90) + '...' ;
  508. }
  509. }
  510. })
  511. },
  512. async upCallback(page) {
  513. //获取名片
  514. await this.$request.baseRequest('admin.unimall.cardManagementInfo', 'list', {
  515. commonId: this.userInfo.id
  516. }, failres => {
  517. console.log('res+++++', failres.errmsg)
  518. uni.showToast({
  519. icon:"none",
  520. title: failres.errmsg,
  521. duration: 3000
  522. });
  523. }).then(res => {
  524. this.cardList = [res.data.items]
  525. })
  526. await this.$request.baseRequest('admin.unimall.circleManagementInfo', 'get', {
  527. commonId: this.userInfo.id,
  528. id: this.id
  529. }, failres => {
  530. console.log('res+++++', failres.errmsg)
  531. uni.hideLoading()
  532. uni.showToast({
  533. icon:"none",
  534. title: failres.errmsg,
  535. duration: 3000
  536. });
  537. }).then(res => {
  538. console.log(res.data)
  539. this.dataObj = res.data
  540. this.dataObj.circleLabel = res.data.circleLabel.split(",")
  541. })
  542. this.getCardList(page)
  543. },
  544. changeCard(val) {
  545. if(!this.dataObj.circleCardInfo){
  546. uni.showToast({
  547. icon:"none",
  548. title: "请先加入圈子!",
  549. duration: 2000
  550. });
  551. }else{
  552. this.selectRowCard = val
  553. this.swapNameCards = true
  554. this.isShowCard = true
  555. }
  556. },
  557. }
  558. }
  559. </script>
  560. <style lang="scss" scoped>
  561. .bgc {
  562. background-color: #112253;
  563. padding-bottom: 100rpx;
  564. position:fixed;
  565. top:0;
  566. width:100%;
  567. }
  568. .content1 {
  569. display: flex;
  570. padding: 40rpx;
  571. box-sizing: border-box;
  572. .right {
  573. width: 100%;
  574. display: flex;
  575. flex-direction: column;
  576. justify-content: space-evenly;
  577. .top {
  578. width: 100%;
  579. .text {
  580. color: #fff;
  581. font-weight: bold;
  582. }
  583. .join {
  584. background: #0A173D;
  585. color: #fff;
  586. position: absolute;
  587. right: 0rpx;
  588. padding: 15rpx 20rpx;
  589. font-size: 26rpx;
  590. border-radius: 50rpx 0rpx 0rpx 50rpx;
  591. }
  592. }
  593. .bottom {
  594. .text {
  595. color: #ffffff50;
  596. background: #f1f5ff20;
  597. padding: 10rpx 20rpx;
  598. margin:0 10rpx 10rpx 0;
  599. border-radius: 10rpx;
  600. font-size: 26rpx;
  601. }
  602. }
  603. }
  604. }
  605. .no-text {
  606. color: #969393;
  607. }
  608. .img {
  609. width: 122rpx;
  610. height: 122rpx;
  611. border-radius: 10px;
  612. margin-right: 30rpx;
  613. }
  614. .content2 {
  615. padding: 0 40rpx 40rpx 40rpx;
  616. box-sizing: border-box;
  617. .text {
  618. font-size: 26rpx;
  619. font-weight: 500;
  620. color: #FFFFFF;
  621. opacity: 0.5;
  622. margin-right: 56rpx;
  623. }
  624. .active {
  625. font-size: 32rpx;
  626. font-weight: bold;
  627. color: #FFFFFF;
  628. position: relative;
  629. margin-right: 56rpx;
  630. }
  631. .active:after {
  632. position: absolute;
  633. bottom: -20rpx;
  634. content: '';
  635. width: 50%;
  636. height: 6rpx;
  637. border-radius: 40rpx;
  638. background: #FFFFFF;
  639. right: 0;
  640. left: 0;
  641. margin: auto;
  642. }
  643. .right {
  644. color: #D7C08B;
  645. font-size: 26rpx;
  646. }
  647. }
  648. .content3 {
  649. position: relative;
  650. border-radius: 30rpx;
  651. background: red;
  652. box-sizing: border-box;
  653. height:400rpx;
  654. .item {
  655. align-items: flex-start;
  656. padding: 34rpx 40rpx 0 40rpx;
  657. }
  658. .top {
  659. .left {
  660. margin-right: 36rpx;
  661. }
  662. .right {
  663. .row1 {
  664. margin-bottom: 10rpx;
  665. .name {
  666. font-size: 38rpx;
  667. font-weight: bold;
  668. color: #000000;
  669. margin-right: 26rpx;
  670. }
  671. .post {
  672. font-size: 26rpx;
  673. font-weight: 500;
  674. color: #666666;
  675. }
  676. }
  677. .row2 {
  678. font-size: 26rpx;
  679. font-weight: bold;
  680. color: #333333;
  681. }
  682. }
  683. }
  684. .bottom {
  685. padding: 20rpx 60rpx 0rpx 60rpx;
  686. font-size: 26rpx;
  687. }
  688. .btn {
  689. background: #11225350;
  690. width: 145rpx;
  691. display: flex;
  692. justify-content: space-evenly;
  693. padding: 15rpx 0;
  694. border-radius: 32rpx;
  695. position: absolute;
  696. top: 35rpx;
  697. right: 40rpx;
  698. }
  699. }
  700. .line {
  701. text-align: center;
  702. }
  703. .shareBtn{
  704. background-color: #9E9E9E !important;
  705. position: absolute;
  706. top: 0;
  707. right: 30rpx;
  708. height: 40rpx;
  709. padding: 0;
  710. margin: 0;
  711. width: 40rpx;
  712. border-radius: 0 10px 0 27rpx;
  713. }
  714. .slot-content {
  715. width: 100%;
  716. }
  717. .auth-btncard {
  718. display: flex !important;
  719. justify-content: space-between !important;
  720. .btn-unok {
  721. width: 40%;
  722. }
  723. .btn-ok {
  724. width: 40%;
  725. }
  726. }
  727. .auth-card {
  728. text-align: center;
  729. .avatar-img {
  730. width: 250rpx;
  731. }
  732. .title {
  733. font-size: 20rpx;
  734. }
  735. .content {
  736. font-size: 32rpx;
  737. font-weight: bold;
  738. color: #1A1A1A;
  739. margin-bottom: 30rpx;
  740. }
  741. }
  742. .avatar-wrapper {
  743. color: #333 !important;
  744. border: none !important;
  745. border-radius: 0 !important;
  746. background-color: transparent !important;
  747. padding: 0;
  748. }
  749. .avatar-wrapper::after {
  750. border: none !important;
  751. }
  752. .avatar {
  753. width: 100rpx;
  754. height: 100rpx;
  755. overflow: hidden;
  756. border-radius: 100%;
  757. }
  758. /deep/.u-popup__content {
  759. border-radius: 20rpx !important;
  760. }
  761. /* 主体样式 */
  762. .list_box {
  763. width: 100%;
  764. .list-item {
  765. padding: 10px 10px;
  766. border-bottom: 1px solid #eee;
  767. display: flex;
  768. justify-content: space-between;
  769. align-items: center;
  770. transition: all .5s;
  771. &:active{
  772. background-color: #EEEEEE;
  773. }
  774. .left {
  775. display: flex;
  776. align-items: center;
  777. .icon-box {
  778. width: 70rpx;
  779. height: 70rpx;
  780. border-radius: 10px;
  781. box-shadow: 3px 3px 7px #bebebe,
  782. -3px -3px 7px #ffffff;
  783. display: flex;
  784. justify-content: center;
  785. align-items: center;
  786. image {
  787. width: 70%;
  788. height: 70%;
  789. }
  790. text::before {
  791. font-size: 20px;
  792. }
  793. }
  794. .name {
  795. margin-left: 10px;
  796. font-size: 30rpx;
  797. color: #FFFFFF;
  798. text-shadow: 1px 1px 3px #000;
  799. }
  800. }
  801. .right {
  802. display: flex;
  803. align-items: center;
  804. .rightText {
  805. margin-right: 5px;
  806. color: #999;
  807. font-size: 12px;
  808. }
  809. }
  810. }
  811. }
  812. .layout2{
  813. background: #9e9e9e94;
  814. margin: 0 20rpx;
  815. border-radius: 20rpx
  816. }
  817. </style>