detail.vue 23 KB

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