my.vue 41 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601
  1. <template>
  2. <view>
  3. <!-- 公共组件-每个页面必须引入 -->
  4. <public-module></public-module>
  5. <!-- 头部信息Start -->
  6. <view class="headers " :style="headerStyle">
  7. <view class="dis a-c j-c">
  8. <text>我的</text>
  9. <view class="headers-right">
  10. <view class="dis a-c">
  11. <image src="/static/home/customerService1.png" mode=""></image>
  12. <text>客服</text>
  13. </view>
  14. </view>
  15. </view>
  16. </view>
  17. <image :src="superiorIdentityData.backImageurl" mode="" style="width: 100%;height: 771rpx;position: absolute;">
  18. </image>
  19. <view class="Personnel">
  20. <view class="dis a-c Personnel-info">
  21. <view class="Personnel-img" @click="updateAvatar">
  22. <image :src="avatar" class="avatar" mode=""></image>
  23. <image src="/static/image/my/updateAvatar.png" mode=""></image>
  24. </view>
  25. <view class="dis f-c ml-3">
  26. <view class="full-name">
  27. <text>{{ userInfo.sysUser.userName }}</text>
  28. </view>
  29. <view class=" dis f-c digit">
  30. <text>手机号:{{userInfo.sysUser.mobile}}</text>
  31. <text>工号:{{ userInfo.sysUser.userId}}</text>
  32. </view>
  33. </view>
  34. </view>
  35. <!-- 角色选项卡切换 -->
  36. <view class="customTab dis a-c j-s" :style="{ backgroundImage: `url(${superiorIdentityData.tabline})`}">
  37. <view class="tab-item dis a-c j-c" :class="index==customTabIndex?'tab-item-active':''"
  38. :style="{width:`${100/roleIdentityList.length}%`}" v-for="(item,index) in roleIdentityList"
  39. :key="index" @click="customTabChange(item,index)">
  40. {{item.gradeName}}
  41. </view>
  42. </view>
  43. <!-- 角色名片 -->
  44. <view class="characterCard dis a-c j-s"
  45. :style="{ backgroundImage: `url(${superiorIdentityData.roleCard})` }">
  46. <!-- 角色状态标签 -->
  47. <view class="statusTag" :style="{background:superiorIdentityData.statusTagbackColor}">
  48. {{superiorIdentityData.lockingState==0?'未解锁':superiorIdentityData.lockingState==1?'已解锁':'已过期'}}
  49. </view>
  50. <!-- icon -->
  51. <image class="gradeIcon" :src="gradeIconstyle" mode=""></image>
  52. <view class="dis f-c content" @click="benefitsNavigate(superiorIdentityData.grade)">
  53. <!-- name -->
  54. <view class="title dis mb-1" :style="{color:superiorIdentityData.titleColor}">
  55. <text class="font-weight">{{superiorIdentityData.gradeName}}会员</text>
  56. <u-icon name="arrow-right" :color="superiorIdentityData.titleColor" size="36"></u-icon>
  57. <text class="expiryTime" v-if="superiorIdentityData.grade!='1'"
  58. :style="{color:superiorIdentityData.textColor}">{{superiorIdentityData.lockingState==0?'':superiorIdentityData.lockingState==1?`${superiorIdentityData.expiryDate}过期`:`已过期${superiorIdentityData.expiryDate || 0}天`}}
  59. </text>
  60. </view>
  61. <!-- 进度条 -->
  62. <view class="progressBar">
  63. <text
  64. :style="{color:superiorIdentityData.textColor}">{{superiorIdentityData.grade=='1'?'100':superiorIdentityData.proportional}}/100</text>
  65. <view class="line" :style="{background:superiorIdentityData.progressBarlineColor}">
  66. <view class="jindu"
  67. :style="{width: `${ Number(superiorIdentityData.proportional)}%`,background:superiorIdentityData.progressBarColor}">
  68. </view>
  69. </view>
  70. </view>
  71. <!-- 提示信息 -->
  72. <view class="comment mt-2 dis a-c ">
  73. <image class="commenticon" src="/static/image/my/grade/crown.png" mode=""></image>
  74. <text class="ml-1" :style="{color:superiorIdentityData.textColor}"
  75. v-if="superiorIdentityData.grade=='1'">
  76. 永久有效
  77. </text>
  78. <text v-else class="ml-1" :style="{color:superiorIdentityData.textColor}">
  79. {{superiorIdentityData.lockingState==0?'完成任务即可升级为该会员等级':superiorIdentityData.lockingState==2?`截止${superiorIdentityData.unlockDeadline}完成任务,可重新成为改为该会员等级`: superiorIdentityData.lockingState==1 && superiorIdentityData.prompt?'当前职级本阶段无需保级':'在期限内完成任务,可继续保持该会员等级身份'}}
  80. </text>
  81. </view>
  82. </view>
  83. <view class="btn" :style="{color:superiorIdentityData.textColor}" @click="upgradeNow"
  84. v-if="superiorIdentityData.grade!='1' && !superiorIdentityData.prompt">
  85. {{superiorIdentityData.lockingState==1?'去保级':'去升级'}}
  86. </view>
  87. </view>
  88. <!-- 权益 -->
  89. <!-- <view class="benefits mt-3 dis f-c">
  90. <view class="dis j-s a-c header">
  91. <view class="dis title">
  92. <image :src="backLogo" mode=""></image>
  93. <text class="ml-1"
  94. v-if="superiorIdentityData.lockingState==0 && !superiorIdentityData.upgrade || superiorIdentityData.lockingState==2">解锁成为“{{superiorIdentityData.gradeName}}”获取更多权益</text>
  95. <text class="ml-1"
  96. v-if="superiorIdentityData.lockingState==0 && superiorIdentityData.upgrade">恭喜您已达成升级为{{superiorIdentityData.gradeName}}的条件</text>
  97. <text class="ml-1"
  98. v-if="superiorIdentityData.lockingState==1">恭喜您成为{{superiorIdentityData.gradeName}}</text>
  99. </view>
  100. <view
  101. v-if="superiorIdentityData.lockingState==0 && !superiorIdentityData.upgrade || superiorIdentityData.lockingState==2 && !superiorIdentityData.upgrade"
  102. class="tag" @click="upgradeTask">完成任务</view>
  103. <view
  104. v-if="superiorIdentityData.lockingState==0 && superiorIdentityData.upgrade && !superiorIdentityData.upgradeStatus || superiorIdentityData.lockingState==2 && superiorIdentityData.upgrade && !superiorIdentityData.upgradeStatus"
  105. class="tag" @click="requestUnlock">申请解锁</view>
  106. <view v-if="superiorIdentityData.upgradeStatus" class="tag">申请中</view>
  107. <view v-if="superiorIdentityData.lockingState==1" class="tag" @click="benefitsNavigate">查看权益</view>
  108. </view>
  109. <view class="content">
  110. <view class="item dis f-c ">
  111. <view class="dis a-c">
  112. <text>发展{{superiorIdentityData.gradeName}}团队</text>
  113. <u-icon name="arrow-right" color="#333" size="26"></u-icon>
  114. </view>
  115. <text>横向扩展团队,为收益添薪</text>
  116. </view>
  117. <view class="item dis f-c ml-3">
  118. <view class="dis a-c ">
  119. <text
  120. v-if="superiorIdentityData.lockingState==2">{{superiorIdentityData.lockCommission || 0}}元佣金</text>
  121. <text v-else>{{superiorIdentityData.ratio}}%</text>
  122. <u-icon name="arrow-right" color="#333" size="26"></u-icon>
  123. </view>
  124. <text v-if="superiorIdentityData.lockingState==2">{{superiorIdentityData.zeroDays}}天后清0</text>
  125. <text v-else>每单保费的佣金比例</text>
  126. </view>
  127. </view>
  128. </view> -->
  129. <!-- 身份解锁进度条 -->
  130. <!-- <view class="multiIdentityUnlockProgress dis ">
  131. <view class="step dis f-c" v-for="(item,index) in filteredBackLogoList" :key="index"
  132. v-if="item.grade!=1">
  133. <view class="dis a-c">
  134. <view class="progressBar">
  135. <view class="sche-bg-jindu"
  136. :style="{width:progressBarClass(item),borderRadius:borderRadiusClass(item)}">
  137. </view>
  138. </view>
  139. <view class=" dis a-c j-c " :class="roleStatusClass(item)">
  140. <image class="rolelogo" :src="getRoleImage(item)" mode="">
  141. </image>
  142. </view>
  143. </view>
  144. <text class="title dis j-end">{{item.gradeName}}</text>
  145. </view>
  146. </view> -->
  147. <!-- 身份解锁进度条 -->
  148. <view class="withdrawal-box">
  149. <view class="dis a-c j-c withdrawal-title">
  150. <text>可提现总金额</text>
  151. </view>
  152. <view class="dis a-s j-c withdrawal-sum">
  153. <text>¥</text>
  154. <text>{{ getApplication.cashFee || 0 }} </text>
  155. </view>
  156. <view class="withdrawal-income dis f-wrap">
  157. <view class="dis f-c a-c" @click="incomeClick">
  158. <view class="dis">
  159. <text>累计佣金</text>
  160. <u-icon name="arrow-right" color="#666" size="18"></u-icon>
  161. </view>
  162. <text class="sum">¥{{ getApplication.totalAmount || 0 }} </text>
  163. </view>
  164. <view class="dis f-c a-c">
  165. <view class="dis ">
  166. <text>已提现佣金</text>
  167. <u-icon name="arrow-right" color="#666" size="18"></u-icon>
  168. </view>
  169. <text class="sum">¥{{ getApplication.historyFee || 0 }}</text>
  170. </view>
  171. <view class="dis f-c a-c" @click="incomingTransferLog">
  172. <view class="dis ">
  173. <text>已转入佣金</text>
  174. <u-icon name="arrow-right" color="#666" size="18"></u-icon>
  175. </view>
  176. <text class="sum">¥{{ getApplication.transferAmount || 0 }}</text>
  177. </view>
  178. <view class="dis f-c a-c" @click="untransferredRecords">
  179. <view class="dis ">
  180. <text>未转入佣金</text>
  181. <u-icon name="arrow-right" color="#666" size="18"></u-icon>
  182. </view>
  183. <text class="sum">¥{{ getApplication.unreportedAmount || 0 }}</text>
  184. </view>
  185. <view class="dis f-c a-c" @click="accountFreezeRecord">
  186. <view class="dis ">
  187. <text>已冻结佣金</text>
  188. <u-icon name="arrow-right" color="#666" size="18"></u-icon>
  189. </view>
  190. <text class="sum">¥{{ getApplication.frozenAmount || 0 }}</text>
  191. </view>
  192. <view class="dis f-c a-c" @click="accountExpireRecord">
  193. <view class="dis ">
  194. <text>已过期佣金</text>
  195. <u-icon name="arrow-right" color="#666" size="18"></u-icon>
  196. </view>
  197. <text class="sum">¥{{ getApplication.expiredAmount || 0 }}</text>
  198. </view>
  199. </view>
  200. <view class="withdrawal-fun" @click="toWithdraw">提现</view>
  201. </view>
  202. <view class="cell-item mt-2">
  203. <view class="item dis a-c " @click="promotionCode">
  204. <image src="/static/code.png" mode=""></image>
  205. <text>我的推广码</text>
  206. <u-icon name="arrow-right" color="#232832" size="22"></u-icon>
  207. </view>
  208. <view class="item dis a-c " @tap="accountTool('/pages/wallet/bankCard')">
  209. <image src="/static/image/my/bankCard.png" mode=""></image>
  210. <text>银行卡</text>
  211. <u-icon name="arrow-right" color="#232832" size="22"></u-icon>
  212. </view>
  213. <view class="item dis a-c " @tap="tool">
  214. <image src="/static/image/my/Frame.png" mode=""></image>
  215. <text>设置</text>
  216. <u-icon name="arrow-right" color="#232832" size="22"></u-icon>
  217. </view>
  218. </view>
  219. <view class=" dis a-c j-s" style="margin: 0px 16px;">
  220. <view class="withdrawal-record">
  221. <i></i>
  222. <text>提现记录</text>
  223. </view>
  224. <view class="search" @click="searchPopup">
  225. <text>自定义时间</text>
  226. <i></i>
  227. </view>
  228. </view>
  229. <view class="withdrawal-flow">
  230. <view class="withdrawal-card" v-for="(val,index) in withdrawalData" :key="index"
  231. @click="viewWithdrawal(val)">
  232. <view class="dis j-s">
  233. <view>
  234. <view style="line-height: 18px;">提现</view>
  235. <text style="font-size: 10px;color: #999999;">{{ val.createTime }}</text>
  236. </view>
  237. <view class="dis a-c">
  238. <view style="text-align: right;">
  239. <view style="line-height: 18px;">-{{ val.cashFee }}</view>
  240. <text class="withdrawal-status" v-if="val.status == '0'"
  241. style="background: #EAF0FF;color: #2D6DFF;">提现中</text>
  242. <text class="withdrawal-status" v-if="val.status == '1'"
  243. style="background: #E3FBE7;color: #18B63B;">已提现</text>
  244. <text class="withdrawal-status" v-if="val.status == '2'"
  245. style="background: #FFECEC ;color: #F74141;">提现失败</text>
  246. </view>
  247. <image src="/static/icon/you.png" mode=""></image>
  248. </view>
  249. </view>
  250. </view>
  251. </view>
  252. </view>
  253. <my-date-picker ref="datePicker" @confirmPickDate="confirmPickDate" />
  254. <u-popup v-model="ShowModalCode" mode="center" border-radius="15">
  255. <view style="width: 323px;" id="pdfContentsDiv">
  256. <view class="ShowModalCode-style">
  257. <text>推广码</text>
  258. <text @tap="ShowModalCode = false">×</text>
  259. </view>
  260. <view class="ShowModalCode-con">
  261. <text v-if="userInfo.sysUser.grade==4">请扫码下载掌柜科技APP</text>
  262. <text v-else>请扫码下载掌柜合伙人APP</text>
  263. <image :src="workImg" mode="widthFix" lazy-load style="width: 150px;"></image>
  264. </view>
  265. <view class="dis" style="justify-content: space-around;padding:0 60px 20px 60px;">
  266. <view class="share-style" @click="sendPayCode">
  267. <image src="/static/image/my/weixin.png" mode="">
  268. <text>微信好友</text>
  269. </view>
  270. <view class="share-style" @tap="saveImage()">
  271. <image src="/static/image/my/baocun.png" mode="">
  272. <text>保存图片</text>
  273. </view>
  274. <view class="share-style" @click="duplicate">
  275. <image src="/static/image/my/fenxiang.png" mode="">
  276. <text>链接分享</text>
  277. </view>
  278. </view>
  279. </view>
  280. </u-popup>
  281. <u-action-sheet :list="Avatarlist" v-model="updateAvatarShow" border-radius="20"></u-action-sheet>
  282. </view>
  283. </template>
  284. <script>
  285. import myDatePicker from '../components/date-picker.vue';
  286. import QR from "@/common/wxqrcode.js"
  287. import html2canvas from 'html2canvas'
  288. import store from '@/store';
  289. import {
  290. mapState,
  291. mapMutations
  292. } from "vuex"
  293. export default {
  294. components: {
  295. myDatePicker
  296. },
  297. data() {
  298. return {
  299. customTabPadding: '0 40rpx',
  300. customTabIndex: 0,
  301. updateAvatarShow: false, //头像工具
  302. Avatarlist: [{
  303. text: '点赞',
  304. color: 'blue',
  305. fontSize: 28,
  306. subText: '感谢您的点赞'
  307. }, {
  308. text: '分享'
  309. }, ],
  310. supportStaffUrl: '',
  311. ShowModalCode: false,
  312. info: ["", ""],
  313. current: 0,
  314. mode: 'default',
  315. headerStyle: {
  316. backgroundColor: 'transparent',
  317. backgroundImage: '',
  318. backgroundSize: '',
  319. backgroundPosition: '',
  320. boxShadow: ''
  321. // 其他样式属性...
  322. },
  323. showBackground: false,
  324. prevScrollTop: 0,
  325. avatar: "/static/image/my/wuxingb.png",
  326. getApplication: {},
  327. withdrawalData: [],
  328. backImage: '',
  329. backLogo: '',
  330. workImg: '',
  331. pathUrl: '',
  332. type: uni.getStorageSync('type'),
  333. roleIdentityList: [], //角色身份列表
  334. //身份图片list
  335. gradeimageList: [{
  336. grade: 1,
  337. backImageurl: "/static/image/my/grade/gradeback1.png", //身份背景图
  338. logourl: "/static/image/my/benefits/active1.png", //身份logo
  339. lockedUrl: '/static/image/my/grade/locked1.png', //已解锁
  340. tabline: "/static/image/my/grade/tabline1.png", //tab切换图
  341. roleCard: "/static/image/my/grade/roleCard1.png", //card卡片图
  342. statusTagbackColor: "linear-gradient( 80deg, #FFC525 0%, #FFE16D 100%)", //状态背景色
  343. titleColor: "#FF6D20", //标题颜色
  344. progressBarColor: "#FFD032", //进度条颜色
  345. progressBarlineColor: "#FFD032", //进度条背景色
  346. textColor: "#FF790C", //其他文字颜色
  347. },
  348. {
  349. grade: 2,
  350. backImageurl: "/static/image/my/grade/gradeback2.png",
  351. logourl: "/static/image/my/benefits/active2.png",
  352. unlockedUrl: '/static/image/my/grade/unlocked.png', //未解锁
  353. lockedUrl: '/static/image/my/grade/locked2.png', //已解锁
  354. expiredUrl: '/static/image/my/grade/expired2.png', //已锁定
  355. tabline: "/static/image/my/grade/tabline2.png", //tab切换图
  356. roleCard: "/static/image/my/grade/roleCard2.png",
  357. statusTagbackColor: "linear-gradient( 80deg, #A87CFF 0%, #CCBFFF 100%)", //状态背景色
  358. titleColor: "#632FFE", //标题颜色
  359. progressBarColor: "#9A83FF", //进度条颜色
  360. progressBarlineColor: "linear-gradient( 90deg, #FFFFFF 0%, #F2EBFF 100%)", //进度条背景色
  361. textColor: "#6B41F1", //其他文字颜色
  362. },
  363. {
  364. grade: 3,
  365. backImageurl: "/static/image/my/grade/gradeback3.png",
  366. logourl: "/static/image/my/benefits/active3.png",
  367. unlockedUrl: '/static/image/my/grade/unlocked.png', //未解锁
  368. lockedUrl: '/static/image/my/grade/locked3.png', //已解锁
  369. expiredUrl: '/static/image/my/grade/expired3.png', //已锁定
  370. tabline: "/static/image/my/grade/tabline3.png", //tab切换图
  371. roleCard: "/static/image/my/grade/roleCard3.png",
  372. statusTagbackColor: "linear-gradient( 80deg, #3AB4FF 0%, #7DCCFF 100%)", //状态背景色
  373. titleColor: "#0963D9", //标题颜色
  374. progressBarColor: "#2B99FF", //进度条颜色
  375. progressBarlineColor: "linear-gradient( 90deg, #FFFFFF 0%, #D1F6FF 100%)", //进度条背景色
  376. textColor: "#1766E4", //其他文字颜色
  377. },
  378. {
  379. grade: 4,
  380. backImageurl: "/static/image/my/grade/gradeback4.png",
  381. logourl: "/static/image/my/benefits/active4.png",
  382. unlockedUrl: '/static/image/my/grade/unlocked.png', //未解锁
  383. lockedUrl: '/static/image/my/grade/locked4.png', //已解锁
  384. expiredUrl: '/static/image/my/grade/expired4.png', //已锁定
  385. tabline: "/static/image/my/grade/tabline4.png", //tab切换图
  386. roleCard: "/static/image/my/grade/roleCard4.png",
  387. statusTagbackColor: "linear-gradient( 80deg, #5FCAFC 0%, #84D0FF 100%)", //状态背景色
  388. titleColor: "#004385", //标题颜色
  389. progressBarColor: "#70CEFF", //进度条颜色
  390. progressBarlineColor: "linear-gradient( 90deg, #FFFFFF 0%, #D1F6FF 100%)", //进度条背景色
  391. textColor: "#0066AA", //其他文字颜色
  392. }
  393. ],
  394. superiorIdentityData: {},
  395. }
  396. },
  397. computed: {
  398. ...mapState(['userInfo', "userCheckInfo", ]),
  399. gradeText() {
  400. const gradeMap = {
  401. 1: '创始人',
  402. 2: '管理人',
  403. 3: '合伙人',
  404. 4: '工作室'
  405. }
  406. return gradeMap[this.userInfo.sysUser.grade] || ''
  407. },
  408. //过滤数组
  409. filteredBackLogoList() {
  410. return this.roleIdentityList.filter(item => item.grade != 1)
  411. },
  412. gradeIconstyle() {
  413. return this.superiorIdentityData.lockingState == 0 ? this.superiorIdentityData.unlockedUrl :
  414. this.superiorIdentityData.lockingState == 1 ?
  415. this.superiorIdentityData.lockedUrl : this.superiorIdentityData.expiredUrl
  416. }
  417. },
  418. async onLoad() {
  419. await this.queryIdentityInformation(); //获取身份列表
  420. this.backImage = this.roleIdentityList.find(val => val.grade == this.userInfo.sysUser.grade)
  421. .backImageurl; //获取背景图
  422. this.backLogo = this.roleIdentityList.find(val => val.grade == this.userInfo.sysUser.grade)
  423. .logourl; //获取logo
  424. },
  425. async onShow() {
  426. let userInfoRes = await this.$http.get('/newAppPartner/getUserInfo', {
  427. type: uni.getStorageSync('type')
  428. });
  429. if (userInfoRes) {
  430. store.commit('setUserModules', {
  431. title: 'userInfo',
  432. data: {
  433. sysUser: {
  434. ...userInfoRes.data
  435. }
  436. }
  437. })
  438. }
  439. this.queryIdentityInformation();
  440. let res = await this.$http.get('/newAppPartner/newGetFee'); //获取账户金额
  441. if (res.code == 200) {
  442. this.getApplication = res.data || [];
  443. }
  444. if (this.userInfo.sysUser.sex == 'F') {
  445. this.avatar = "/static/image/my/nv.png"
  446. }
  447. if (this.userInfo.sysUser.sex == 'M') {
  448. this.avatar = "/static/image/my/nan.png"
  449. }
  450. if (this.userInfo.sysUser.insUploadFiles && this.userInfo.sysUser.insUploadFiles.url) {
  451. this.avatar = this.$base.baseUrl + this.userInfo.sysUser.insUploadFiles.url;
  452. }
  453. this.WithdrawalqueryData()
  454. },
  455. onPageScroll(e) {
  456. this.handleScroll(e);
  457. },
  458. mounted() {
  459. this.getWechatData()
  460. uni.pageScrollTo({
  461. scrollTop: 0,
  462. duration: 0
  463. });
  464. uni.$on('scroll', this.handleScroll);
  465. },
  466. destroyed() {
  467. uni.$off('scroll', this.handleScroll);
  468. },
  469. methods: {
  470. ...mapMutations(['emptyUserInfo']),
  471. //角色tab切换
  472. customTabChange(item, index) {
  473. this.superiorIdentityData = item;
  474. this.backImage = this.superiorIdentityData.backImageurl; //切换背景
  475. this.customTabIndex = index;
  476. this.handleScroll({
  477. scrollTop: 24
  478. });
  479. },
  480. //转入记录
  481. incomingTransferLog() {
  482. uni.navigateTo({
  483. url: '/pages/institutional/incomingTransferLog?grade='
  484. })
  485. },
  486. //未转入
  487. untransferredRecords() {
  488. uni.navigateTo({
  489. url: '/pages/institutional/untransferredRecords?grade='
  490. })
  491. },
  492. //过期
  493. accountExpireRecord() {
  494. uni.navigateTo({
  495. url: '/pages/institutional/accountFreezeRecord?appStatus=2&grade='
  496. })
  497. },
  498. //冻结
  499. accountFreezeRecord() {
  500. uni.navigateTo({
  501. url: '/pages/institutional/accountFreezeRecord?appStatus=1&grade='
  502. })
  503. },
  504. //获取角色列表
  505. async queryIdentityInformation() {
  506. let res = await this.$http.get('/newAppPartner/queryIdentityInformation'); //获取各级身份
  507. if (res.code == 200) {
  508. const hasGradeOne = res.data.some(item => item.grade == 1);
  509. if (!hasGradeOne) {
  510. this.customTabPadding = '0 80rpx',
  511. this.gradeimageList = this.gradeimageList.map((item, index) => {
  512. return {
  513. ...item,
  514. tabline: `/static/image/my/grade/istabline${index+1}.png`
  515. };
  516. });
  517. }
  518. const merged = res.data.map(itemA => {
  519. const gradeimageinfo = this.gradeimageList.find(itemB => itemB.grade === itemA.grade);
  520. return {
  521. ...itemA,
  522. ...gradeimageinfo
  523. }; // 合并两个对象
  524. });
  525. this.roleIdentityList = merged;
  526. this.superiorIdentityData = this.roleIdentityList.find(item => item.grade == this.userInfo.sysUser
  527. .grade) //获取当前用户最高身份的数据信息
  528. const index = this.roleIdentityList.findIndex(item => item.grade == this.userInfo.sysUser.grade);
  529. this.customTabIndex = index;
  530. this.handleScroll({
  531. scrollTop: 24
  532. });
  533. } else {
  534. uni.showToast({
  535. title: res.msg,
  536. icon: 'none'
  537. })
  538. }
  539. },
  540. //申请解锁
  541. async requestUnlock() {
  542. console.log(this.superiorIdentityData);
  543. let res = await this.$http.post('/partner/submitLiftingRecord', {
  544. grade: this.superiorIdentityData.grade,
  545. upgradeType: this.superiorIdentityData.lockingState == 2 ? '1' : '0'
  546. });
  547. if (res.code == '200') {
  548. uni.showToast({
  549. title: res.msg,
  550. icon: 'none',
  551. });
  552. this.queryIdentityInformation() //申请解锁后更新身份
  553. } else {
  554. uni.showToast({
  555. title: res.msg,
  556. icon: 'none',
  557. });
  558. }
  559. },
  560. // 获取角色状态类名
  561. roleStatusClass(item) {
  562. return item.lockingState == 0 ? 'role-unlocked' : 'role-isUnlocked'
  563. },
  564. // 获取角色图片
  565. getRoleImage(item) {
  566. if (item.lockingState == 0) {
  567. return item.upgrade ? item.waitingToUnlockurl : item.isUnlockedurl
  568. } else if (item.lockingState == 1) {
  569. return item.logourl
  570. }
  571. return item.isLockedurl
  572. },
  573. //控制进度条占比
  574. progressBarClass(item) {
  575. if (item.progressBar == 0) {
  576. return '0%'
  577. } else if (item.progressBar == 1) {
  578. return '50%'
  579. } else {
  580. return '100%'
  581. }
  582. },
  583. //控制进度条圆角
  584. borderRadiusClass(item) {
  585. const {
  586. grade,
  587. progressBar
  588. } = item;
  589. if (grade == 4) {
  590. return progressBar == 1 ? '100px' : '100px 0 0 100px';
  591. }
  592. return progressBar == 1 ? '0 100px 100px 0' : '0';
  593. },
  594. // 权益跳转
  595. benefitsNavigate(grade) {
  596. uni.navigateTo({
  597. url: "/pages/my/benefits?grade=" + grade,
  598. })
  599. },
  600. //去升级
  601. async upgradeNow() {
  602. // let params = {
  603. // grade: Number(this.superiorIdentityData.grade),
  604. // lockingState: this.superiorIdentityData.lockingState,
  605. // lockCommission: this.superiorIdentityData.lockCommission,
  606. // zeroDays: this.superiorIdentityData.zeroDays,
  607. // fallAmount: this.superiorIdentityData.fallAmount,
  608. // }
  609. // uni.navigateTo({
  610. // url: "/pages/my/upgradeTask?info=" + JSON.stringify(params),
  611. // })
  612. if (this.superiorIdentityData.unlockedStatus) {
  613. let params = {
  614. grade: Number(this.superiorIdentityData.grade),
  615. lockingState: this.superiorIdentityData.lockingState,
  616. lockCommission: this.superiorIdentityData.lockCommission,
  617. zeroDays: this.superiorIdentityData.zeroDays,
  618. fallAmount: this.superiorIdentityData.fallAmount,
  619. }
  620. uni.navigateTo({
  621. url: "/pages/my/upgradeTask?info=" + JSON.stringify(params),
  622. })
  623. } else {
  624. uni.showToast({
  625. title: '先解锁上一级',
  626. icon: 'none',
  627. });
  628. }
  629. },
  630. //完成任务
  631. upgradeTask() {
  632. uni.navigateTo({
  633. url: "/pages/my/upgradeTask?info=" + JSON.stringify(this.superiorIdentityData),
  634. })
  635. },
  636. //修改头像
  637. async updateAvatar() {
  638. let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
  639. count: 1,
  640. sizeType: ['compressed']
  641. });
  642. if (chooseImageRes) {
  643. console.log(chooseImageRes);
  644. this.chooseAvatar(chooseImageRes.tempFilePaths[0]);
  645. } else {}
  646. },
  647. chooseAvatar(src) {
  648. uni.navigateTo({
  649. url: '/pages/my/avatarCropper?src=' + src,
  650. })
  651. },
  652. searchPopup() {
  653. this.$refs.datePicker.open()
  654. },
  655. sendPayCode() {
  656. if (this.pathUrl) {
  657. uni.share({
  658. provider: "weixin",
  659. scene: "WXSceneSession",
  660. type: 2,
  661. imageUrl: this.pathUrl
  662. })
  663. }
  664. },
  665. showLoading() {
  666. uni.showLoading({
  667. title: '正在生成图片'
  668. });
  669. },
  670. hideLoading() {
  671. uni.hideLoading();
  672. this.loading = false;
  673. },
  674. //页面截图转路径
  675. receiveRenderData(val) {
  676. uni.downloadFile({
  677. url: val,
  678. success(res) {
  679. // 这时会产生一个临时路径,在应用本次启动期间可以正常使用。
  680. if (res.statusCode == 200) {
  681. // 需要将图片保存到相册
  682. uni.saveImageToPhotosAlbum({
  683. filePath: res
  684. .tempFilePath, // 图片文件路径,可以是临时文件路径也可以是永久文件路径,不支持网络图片路径
  685. success(res) {
  686. uni.showToast({
  687. title: '保存成功',
  688. icon: 'none'
  689. })
  690. // 如果保存成功需要打开查看,请使用以下方法,同时也支持打开文件
  691. uni.openDocument({
  692. filePath: res.savedFilePath,
  693. success(res) {},
  694. fail(err) {
  695. uni.showToast({
  696. title: '手机不支持该文件类型,请安装wps或office应用',
  697. icon: 'none'
  698. })
  699. }
  700. })
  701. },
  702. fail(err) {
  703. uni.showToast({
  704. title: '图片保存失败',
  705. icon: 'none'
  706. })
  707. }
  708. })
  709. } else {
  710. uni.showToast({
  711. title: '下载失败,请稍后再试',
  712. icon: 'none'
  713. })
  714. }
  715. },
  716. fail(err) {
  717. uni.showToast({
  718. title: '下载失败,请稍后再试',
  719. icon: 'none'
  720. })
  721. }
  722. })
  723. },
  724. saveImage() {
  725. setTimeout(() => {
  726. this.$ownerInstance.callMethod('showLoading')
  727. const dom = document.getElementById('pdfContentsDiv') // 需要生成图片内容的 dom 节点
  728. html2canvas(dom, {
  729. width: dom.clientWidth, //dom 原始宽度
  730. height: dom.clientHeight,
  731. scrollY: 0, // html2canvas默认绘制视图内的页面,需要把scrollY,scrollX设置为0
  732. scrollX: 0,
  733. useCORS: true, //支持跨域
  734. // allowTaint: false,
  735. scale: 2, // 设置生成图片的像素比例,默认是1,如果生成的图片模糊的话可以开启该配置项
  736. }).then((canvas) => {
  737. // 生成成功
  738. this.$ownerInstance.callMethod('hideLoading')
  739. this.$ownerInstance.callMethod('receiveRenderData', canvas.toDataURL(
  740. 'image/png'))
  741. console.log()
  742. }).catch(err => {
  743. // 生成失败 弹出提示弹窗
  744. this.$ownerInstance.callMethod('_errAlert', `【生成图片失败,请重试】${err}`)
  745. })
  746. }, 300)
  747. },
  748. // 链接分享
  749. duplicate() {
  750. uni.setClipboardData({
  751. data: this.pathUrl,
  752. success: function() {
  753. console.log('复制成功');
  754. uni.showToast({
  755. title: '链接已复制成功',
  756. icon: 'success',
  757. duration: 2000
  758. });
  759. },
  760. fail: function() {
  761. console.log('复制失败');
  762. // 可以添加错误处理或用户友好的提示
  763. }
  764. });
  765. },
  766. async promotionCode() {
  767. this.ShowModalCode = true
  768. let pageRequest = {
  769. pageNum: 1,
  770. pageSize: 50,
  771. columnFilters: {
  772. apptype: {
  773. name: "apptype",
  774. value: "apk",
  775. },
  776. appid: {
  777. name: "appid",
  778. value: this.userInfo.sysUser.grade == 4 ? "__UNI__D4FE29A" : '__UNI__2041321',
  779. }
  780. }
  781. }
  782. let res = await this.$http.post('/sysVersion/findPage', pageRequest);
  783. if (res.code == 200) {
  784. this.ShowModalCode = true
  785. this.pathUrl = res.data.content[0].path
  786. this.workImg = QR.createQrCodeImg(res.data.content[0].path, {
  787. size: parseInt(200) //二维码大小
  788. })
  789. }
  790. },
  791. confirmPickDate(dateStr, dateStr1) {
  792. console.log(dateStr, dateStr1);
  793. if (dateStr) {
  794. dateStr += ' 00:00:01'
  795. }
  796. if (dateStr1) {
  797. dateStr1 += ' 23:59:59'
  798. }
  799. this.WithdrawalqueryData(dateStr, dateStr1)
  800. },
  801. viewWithdrawal(item) {
  802. uni.navigateTo({
  803. url: "/pages/my/withdrawalDetail?key=" + encodeURIComponent(JSON.stringify(item))
  804. })
  805. },
  806. async toWithdraw() {
  807. let res = await this.$http.post('/userBank/getUserBankList', {
  808. auditStatus: "1",
  809. delFlag: '0'
  810. });
  811. if (res.data.length) {
  812. this.navigate({
  813. url: `/pages/wallet/withdraw?amount=${this.getApplication.cashFee}`,
  814. }, "navigateTo", true)
  815. } else {
  816. uni.showToast({
  817. title: '暂无审核通过的银行卡,不可提现',
  818. duration: 3000,
  819. icon: "none"
  820. });
  821. }
  822. },
  823. async accountTool(path) {
  824. if (path) {
  825. if (path == '/pages/wallet/bankCard') {
  826. let res = await this.$http.post('/userBank/getUserBankList', {
  827. auditStatus: '',
  828. });
  829. if (!res.data.length) {
  830. this.navigate({
  831. url: '/pages/wallet/bindBank',
  832. complete: () => {
  833. setTimeout(() => {
  834. uni.showToast({
  835. title: '请先绑定银行卡',
  836. duration: 3000,
  837. icon: "none"
  838. });
  839. }, 500);
  840. }
  841. }, "navigateTo", true)
  842. } else {
  843. this.navigate({
  844. url: path,
  845. }, "navigateTo", true)
  846. }
  847. } else {
  848. this.navigate({
  849. url: path,
  850. }, "navigateTo", true)
  851. }
  852. } else {
  853. uni.showToast({
  854. title: '功能待开发...',
  855. icon: "none"
  856. });
  857. }
  858. },
  859. async WithdrawalqueryData(beginTime, endTime) {
  860. let params = {
  861. "endTime": endTime || '',
  862. "beginTime": beginTime || '',
  863. }
  864. let res = await this.$http.post('/sysAgencyFeeApproval/queryOperateInfo', params);
  865. if (res.code == '200') {
  866. this.withdrawalData = res.data
  867. }
  868. },
  869. handleScroll(e) {
  870. const scrollTop = e.scrollTop;
  871. if (scrollTop > this.prevScrollTop) {
  872. // 向下滚动
  873. this.showBackground = true; // 显示背景图
  874. } else if (scrollTop < 50) {
  875. // 在顶部附近,隐藏背景图
  876. this.showBackground = false;
  877. } else {
  878. // 向上滚动
  879. this.showBackground = true; // 显示背景图
  880. }
  881. this.headerStyle.backgroundColor = this.showBackground ? '#fff' : 'transparent';
  882. this.headerStyle.backgroundImage = this.showBackground ?
  883. `url("${this.superiorIdentityData.backImageurl}")` : '';
  884. this.headerStyle.backgroundSize = this.showBackground ? 'cover' : '';
  885. // this.headerStyle.backgroundPosition = this.showBackground ? 'center' : '';
  886. this.prevScrollTop = scrollTop;
  887. },
  888. //跳转设置
  889. tool() {
  890. uni.navigateTo({
  891. url: "/pages/set/set"
  892. })
  893. },
  894. logout() {
  895. this.emptyUserInfo();
  896. uni.clearStorage({
  897. success: function() {}
  898. });
  899. setTimeout(() => {
  900. uni.reLaunch({
  901. url: "/pages/login/login"
  902. })
  903. return true;
  904. }, 500);
  905. },
  906. incomeClick() {
  907. let info = this.roleIdentityList.find(item => item.grade == this.userInfo.sysUser.grade)
  908. uni.navigateTo({
  909. url: '/pages/institutional/myEarnings?info=' + JSON.stringify(info)
  910. })
  911. // uni.navigateTo({
  912. // url: "/pages/my/commission"
  913. // })
  914. },
  915. // 去账单明细
  916. toBillDetails(type) {
  917. this.navigate({
  918. url: `/pages/wallet/billDetails${type}`,
  919. }, "navigateTo", true)
  920. },
  921. // 去账单明细
  922. toWallet(type) {
  923. this.navigate({
  924. url: "/pages/wallet/wallet"
  925. }, "navigateTo", true)
  926. },
  927. //获取企业微信客服地址,是否展示
  928. getWechatData() {
  929. this.$http.get('/sys/qy/wechat/find/picture').then(res => {
  930. this.supportStaffUrl = res.data.supportStaffUrl
  931. })
  932. },
  933. //点击跳转企业微信客服
  934. weChatService() {
  935. uni.share({
  936. provider: "weixin",
  937. openCustomerServiceChat: true,
  938. customerUrl: this.supportStaffUrl, //企业微信地址
  939. corpid: 'wwfe67d19509d43ec5', //企业id
  940. success: (res) => {},
  941. fail: (err) => {}
  942. });
  943. },
  944. }
  945. }
  946. </script>
  947. <style lang="scss" scoped>
  948. * {
  949. // outline: 1px solid red !important;
  950. }
  951. .headers {
  952. position: fixed;
  953. top: 0;
  954. left: 0;
  955. height: auto;
  956. width: 100%;
  957. z-index: 999999;
  958. padding: 16px;
  959. padding-top: 40px;
  960. text {
  961. font-size: 18px;
  962. font-weight: 700;
  963. color: #333333;
  964. }
  965. .headers-right {
  966. position: absolute;
  967. right: 30rpx;
  968. display: flex;
  969. justify-content: space-between;
  970. text {
  971. font-size: 24rpx;
  972. color: #333;
  973. }
  974. image {
  975. width: 28rpx;
  976. height: 28rpx;
  977. margin-right: 5rpx;
  978. }
  979. }
  980. }
  981. .Personnel {
  982. height: auto;
  983. width: 100%;
  984. background: transparent;
  985. background-size: 100% 100%;
  986. padding: 90px 0 20rpx 0;
  987. box-sizing: border-box;
  988. position: relative;
  989. }
  990. .Personnel-title {
  991. position: absolute;
  992. right: 0;
  993. top: 135px;
  994. background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
  995. border-radius: 16px 0px 0px 16px;
  996. color: #fff;
  997. padding: 2px 6px 2px 10px;
  998. image {
  999. display: inline-block;
  1000. width: 15px;
  1001. height: 15px;
  1002. vertical-align: -2px;
  1003. margin-right: 3px;
  1004. }
  1005. }
  1006. .Personnel-img {
  1007. position: relative;
  1008. .avatar {
  1009. width: 60px;
  1010. height: 60px;
  1011. border-radius: 50%;
  1012. }
  1013. image:last-child {
  1014. display: inline-block;
  1015. width: 40rpx;
  1016. height: 40rpx;
  1017. position: absolute;
  1018. bottom: 0;
  1019. right: 0;
  1020. }
  1021. }
  1022. /* 我的钱包Start */
  1023. .my-wallet {
  1024. .wallet-body {
  1025. width: 100%;
  1026. height: auto;
  1027. padding: 8px 16px;
  1028. background: #FFFFFF;
  1029. box-shadow: 0px 4px 10px 0px #DAE3F4;
  1030. border-radius: 6px;
  1031. margin-top: 10px;
  1032. .route {
  1033. text {
  1034. font-size: 12px;
  1035. color: #333;
  1036. font-weight: 400;
  1037. }
  1038. image {
  1039. width: 45px;
  1040. height: 40px;
  1041. }
  1042. }
  1043. .money {
  1044. padding: 8px 0;
  1045. background-color: #F9F8FD;
  1046. border-radius: 4px;
  1047. margin-top: 8px;
  1048. text {
  1049. font-size: 12px;
  1050. color: #333;
  1051. font-weight: 400;
  1052. }
  1053. }
  1054. }
  1055. }
  1056. .Personnel-info {
  1057. font-size: 14px;
  1058. color: #152F63;
  1059. padding: 0 30rpx;
  1060. box-sizing: border-box;
  1061. }
  1062. .full-name {
  1063. margin-top: 10rpx;
  1064. color: #152F63;
  1065. font-weight: bold;
  1066. font-size: 36rpx;
  1067. line-height: 1;
  1068. }
  1069. .digit {
  1070. box-sizing: border-box;
  1071. width: 100%;
  1072. font-size: 24rpx;
  1073. color: #152F63;
  1074. margin-top: 26rpx;
  1075. line-height: 1;
  1076. text:first-child {
  1077. margin-bottom: 20rpx;
  1078. }
  1079. }
  1080. .withdrawal-box {
  1081. background: #FFFFFF;
  1082. border-radius: 5px 5px 5px 5px;
  1083. padding: 18px 16px;
  1084. margin: 26rpx 30rpx 0;
  1085. box-sizing: border-box;
  1086. .withdrawal-title {
  1087. width: 100%;
  1088. height: 100%;
  1089. text:first-child {
  1090. font-weight: 400;
  1091. font-size: 12px;
  1092. color: #999999;
  1093. }
  1094. }
  1095. .withdrawal-sum {
  1096. color: #333333;
  1097. font-weight: bold;
  1098. line-height: 32px;
  1099. text:first-child {
  1100. font-size: 17px;
  1101. line-height: 38px;
  1102. }
  1103. text:last-child {
  1104. font-size: 26px;
  1105. }
  1106. }
  1107. .withdrawal-income {
  1108. margin: 10px 0;
  1109. background: rgba(240, 248, 255, 0.5);
  1110. border-radius: 2px 2px 2px 2px;
  1111. padding: 20rpx 20rpx 0;
  1112. >view {
  1113. width: 50%;
  1114. margin-bottom: 20rpx;
  1115. text {
  1116. font-weight: 400;
  1117. font-size: 10px;
  1118. color: #666666;
  1119. display: block;
  1120. }
  1121. .sum {
  1122. margin-top: 3px;
  1123. font-weight: 700;
  1124. font-size: 17px;
  1125. color: #333333;
  1126. line-height: 20px;
  1127. display: block;
  1128. }
  1129. }
  1130. }
  1131. .withdrawal-fun {
  1132. background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
  1133. border-radius: 5px 5px 5px 5px;
  1134. color: #fff;
  1135. font-size: 16px;
  1136. text-align: center;
  1137. line-height: 42px;
  1138. }
  1139. }
  1140. .cell-item {
  1141. background: #FFFFFF;
  1142. border-radius: 10rpx 10rpx 10rpx 10rpx;
  1143. padding: 0 30rpx;
  1144. margin: 20rpx 30rpx 0;
  1145. box-sizing: border-box;
  1146. .item {
  1147. padding: 25rpx 0;
  1148. box-sizing: border-box;
  1149. border-bottom: 1rpx solid #eee;
  1150. font-size: 28rpx;
  1151. color: #333;
  1152. image {
  1153. width: 40rpx;
  1154. height: 40rpx;
  1155. margin-right: 20rpx;
  1156. }
  1157. .u-icon {
  1158. margin-left: auto;
  1159. }
  1160. }
  1161. .item:last-child {
  1162. border: none;
  1163. }
  1164. }
  1165. .withdrawal-record {
  1166. font-weight: 700;
  1167. font-size: 16px;
  1168. color: #333333;
  1169. i {
  1170. display: inline-block;
  1171. margin-right: 5px;
  1172. width: 2px;
  1173. height: 20px;
  1174. background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
  1175. }
  1176. }
  1177. .withdrawal-flow {
  1178. margin: 8px 16px;
  1179. overflow: hidden;
  1180. background: #FFFFFF;
  1181. border-radius: 5px 5px 5px 5px;
  1182. font-size: 16px;
  1183. color: #333333;
  1184. .withdrawal-card {
  1185. border-bottom: 1px solid #EEEEEE;
  1186. padding: 15px 0;
  1187. margin: 0 15px;
  1188. image {
  1189. display: inline-block;
  1190. width: 11px;
  1191. height: 11px;
  1192. margin-left: 5px;
  1193. }
  1194. .withdrawal-status {
  1195. padding: 2px 5px;
  1196. font-size: 10px;
  1197. border-radius: 1px 1px 1px 1px;
  1198. }
  1199. }
  1200. }
  1201. .search {
  1202. text {
  1203. font-size: 14px;
  1204. color: #666666;
  1205. }
  1206. i {
  1207. margin-left: 2px;
  1208. display: inline-block;
  1209. width: 0;
  1210. height: 0;
  1211. border: 4px solid;
  1212. border-color: #666666;
  1213. border-bottom: 4px solid transparent;
  1214. border-right: 4px solid transparent;
  1215. border-left: 4px solid transparent;
  1216. }
  1217. }
  1218. .ShowModalCode-style {
  1219. // display: block;
  1220. font-weight: 600;
  1221. font-size: 16px;
  1222. color: #333333;
  1223. border-bottom: 1px solid #EEEEEE;
  1224. padding: 15px;
  1225. text-align: center;
  1226. position: relative;
  1227. text:last-child {
  1228. position: absolute;
  1229. right: 20px;
  1230. color: #999999;
  1231. font-size: 24px;
  1232. line-height: 26px;
  1233. }
  1234. }
  1235. .ShowModalCode-con {
  1236. padding: 20px;
  1237. text-align: center;
  1238. font-size: 16px;
  1239. color: #333333;
  1240. image {
  1241. margin: 0 auto;
  1242. margin-top: 15px;
  1243. }
  1244. }
  1245. .share-style {
  1246. image {
  1247. width: 45px;
  1248. height: 45px
  1249. }
  1250. text {
  1251. font-size: 12px;
  1252. }
  1253. }
  1254. // 权益
  1255. .benefits {
  1256. background: #FFFFFF;
  1257. border-radius: 10rpx 10rpx 10rpx 10rpx;
  1258. padding: 20rpx 0 0;
  1259. box-sizing: border-box;
  1260. .header {
  1261. padding: 0 30rpx;
  1262. box-sizing: border-box;
  1263. image {
  1264. width: 37rpx;
  1265. height: 42rpx;
  1266. }
  1267. .tag {
  1268. padding: 3rpx 17rpx;
  1269. box-sizing: border-box;
  1270. background: linear-gradient(132deg, #2DD9FF 0%, #2D6DFF 100%);
  1271. border-radius: 4rpx 4rpx 4rpx 4rpx;
  1272. font-size: 24rpx;
  1273. color: #FFFFFF;
  1274. }
  1275. .title {
  1276. font-size: 28rpx;
  1277. color: #333;
  1278. }
  1279. }
  1280. .content {
  1281. width: 100%;
  1282. padding: 20rpx 30rpx 30rpx;
  1283. box-sizing: border-box;
  1284. background: linear-gradient(180deg, #F0F8FF 0%, rgba(240, 248, 255, 0) 100%);
  1285. border-radius: 0rpx 0rpx 10rpx 10rpx;
  1286. margin-top: 16rpx;
  1287. display: grid;
  1288. grid-template-columns: repeat(2, 1fr);
  1289. grid-template-rows: auto;
  1290. .item {
  1291. text:first-child {
  1292. font-size: 30rpx;
  1293. color: #333;
  1294. font-weight: bold;
  1295. }
  1296. text:last-child {
  1297. font-size: 24rpx;
  1298. color: #666;
  1299. }
  1300. }
  1301. .item:first-child {
  1302. border-right: 1rpx solid #E0F2FF;
  1303. }
  1304. }
  1305. }
  1306. ///////
  1307. .multiIdentityUnlockProgress {
  1308. background-color: #fff;
  1309. padding: 20rpx 46rpx 20rpx 30rpx;
  1310. box-sizing: border-box;
  1311. border-radius: 10rpx;
  1312. margin: 10px 0;
  1313. .step {
  1314. width: 38%;
  1315. height: auto;
  1316. .progressBar {
  1317. position: relative;
  1318. background-color: #F0F0F0;
  1319. height: 14rpx;
  1320. flex: 1;
  1321. .sche-bg-jindu {
  1322. position: absolute;
  1323. left: 0;
  1324. top: 0;
  1325. height: 14rpx;
  1326. background: #2DD9FF;
  1327. }
  1328. }
  1329. //已解锁
  1330. .role-isUnlocked {
  1331. width: 66rpx;
  1332. height: 66rpx;
  1333. border-radius: 50%;
  1334. background: #F0F7FF;
  1335. border: 4rpx solid #2DD9FF;
  1336. padding: 7rpx 10rpx;
  1337. box-sizing: border-box;
  1338. }
  1339. //未解锁
  1340. .role-unlocked {
  1341. width: 66rpx;
  1342. height: 66rpx;
  1343. border-radius: 50%;
  1344. background: #F0F0F0;
  1345. padding: 7rpx 10rpx;
  1346. box-sizing: border-box;
  1347. }
  1348. .rolelogo {
  1349. width: 38rpx;
  1350. height: 43rpx;
  1351. }
  1352. .title {
  1353. font-size: 30rpx;
  1354. color: #333;
  1355. margin-top: 20rpx;
  1356. margin-right: -12rpx;
  1357. }
  1358. }
  1359. .step:first-child {
  1360. width: 24%;
  1361. .progressBar {
  1362. border-radius: 100px 0 0 100px;
  1363. .sche-bg-jindu {
  1364. border-radius: 100px 0 0 100px;
  1365. }
  1366. }
  1367. }
  1368. .step:last-child {
  1369. .role-isUnlocked {}
  1370. }
  1371. }
  1372. //tab切换
  1373. .customTab {
  1374. width: 100%;
  1375. height: 85rpx;
  1376. margin-top: 30rpx;
  1377. background-size: 100% 100%;
  1378. .tab-item {
  1379. font-size: 28rpx;
  1380. color: #999;
  1381. }
  1382. .tab-item-active {
  1383. font-size: 32rpx;
  1384. color: #333;
  1385. font-weight: bold;
  1386. }
  1387. }
  1388. // 角色名片
  1389. .characterCard {
  1390. position: relative;
  1391. background-size: 100% 100%;
  1392. padding: 58rpx 48rpx 25rpx 30rpx;
  1393. box-sizing: border-box;
  1394. border-radius: 20rpx;
  1395. margin: 30rpx 30rpx 0;
  1396. .statusTag {
  1397. position: absolute;
  1398. top: 0;
  1399. left: 0;
  1400. padding: 5rpx 20rpx;
  1401. box-sizing: border-box;
  1402. border-radius: 20rpx 0rpx 20rpx 0rpx;
  1403. font-size: 20rpx;
  1404. color: #fff;
  1405. font-weight: bold;
  1406. }
  1407. .gradeIcon {
  1408. width: 140rpx;
  1409. height: 168rpx;
  1410. position: absolute;
  1411. top: 0;
  1412. right: 40rpx;
  1413. }
  1414. .content {
  1415. width: 72%;
  1416. .title {
  1417. font-size: 36rpx;
  1418. .font-weight {
  1419. line-height: 1.5;
  1420. }
  1421. .expiryTime {
  1422. font-size: 20rpx;
  1423. margin-left: auto;
  1424. margin-top: 16rpx;
  1425. }
  1426. }
  1427. .progressBar {
  1428. text {
  1429. font-size: 26rpx;
  1430. }
  1431. .line {
  1432. position: relative;
  1433. width: 100%;
  1434. height: 8rpx;
  1435. background: linear-gradient(90deg, #FFFFFF 0%, #D1F6FF 100%);
  1436. border-radius: 100px;
  1437. overflow: hidden;
  1438. .jindu {
  1439. position: absolute;
  1440. left: 0;
  1441. top: 0;
  1442. height: 8rpx;
  1443. background: #70CEFF;
  1444. border-radius: 100px;
  1445. }
  1446. }
  1447. }
  1448. .comment {
  1449. .commenticon {
  1450. width: 60rpx;
  1451. height: 60rpx;
  1452. }
  1453. text {
  1454. font-size: 24rpx;
  1455. line-height: 1.4;
  1456. flex: 1;
  1457. }
  1458. }
  1459. }
  1460. .btn {
  1461. align-self: flex-end;
  1462. background: rgba(255, 255, 255, 0.8);
  1463. border-radius: 50rpx 50rpx 50rpx 50rpx;
  1464. margin-left: 45rpx;
  1465. font-size: 28rpx;
  1466. padding: 3rpx 20rpx;
  1467. box-sizing: border-box;
  1468. }
  1469. }
  1470. </style>