kuaishoubind.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790
  1. <template>
  2. <view style="position: relative;">
  3. <!-- 胶囊 -->
  4. <mvBar :mysNavConfig="mysNavConfig"></mvBar>
  5. <view :style="{marginTop:navH}"></view>
  6. <view class="home">
  7. <view class="card" v-if="!loading">
  8. <view class="head">
  9. <image
  10. src="https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/lQLPDhrXwll1_NcjI7AD0T3viYtxQwGOvh1SwG0A_35_35.png"
  11. mode="aspectFill">
  12. </image>
  13. <span>快手账号绑定</span>
  14. </view>
  15. <view class="body">
  16. <view>
  17. <!-- 绑定成功展示信息 v-if -->
  18. <view v-if="isBindKuaishou">
  19. <!-- 左侧图片和文字 -->
  20. <view class="task-info-left" style="display: flex;">
  21. <!-- 图片 -->
  22. <image class="head-img" :src="head_uri"></image>
  23. <view class="task-info-txt">
  24. <p style="margin-bottom: 15rpx;">{{nick_name}}</p>
  25. <p style="color: #81838f;">剩余100天</p>
  26. </view>
  27. </view>
  28. <view class="sale_txt">
  29. <p>粉丝数:<span>{{fansCount}}</span></p>
  30. <p>近30日橱窗销量:<span style="padding-left: 30rpx;">{{saleNum_30}}</span></p>
  31. </view>
  32. </view>
  33. <!-- 分割线 -->
  34. <view class="heng-line"></view>
  35. <!-- 点击弹窗 toggle(触发)-->
  36. <button class="btn1" @click="getqrcode('center')">
  37. {{ isBindKuaishou ? '刷新授权' : '添加快手账号' }}
  38. </button>
  39. </view>
  40. </view>
  41. </view>
  42. </view>
  43. <!-- 普通弹窗 公众号-->
  44. <uni-popup ref="popup4" class="share" background-color="#fff" @change="change" :maskClick="true">
  45. <view class="popup-content" :class="{ 'popup-height': type === 'left' || type === 'right' }">
  46. <view class="sharepage">
  47. <view class="projecttext1">
  48. <span>快手账号登录</span>
  49. </view>
  50. <view class="sharetxt">
  51. <text style="color:#9a9a9a ;">
  52. 截屏或下载二维码,使用快手APP\n
  53. 打开[首页-搜索-扫一扫]后扫码进行
  54. </text>
  55. </view>
  56. <!-- 授权码展示 -->
  57. <view class="sharemap">
  58. <!-- 根据 countdownTime 的值为 image 元素应用不同的类名 -->
  59. <image :class="{'expired-image': countdownTime <= 0, 'active-image': countdownTime > 0}"
  60. :src="qrcodeURL" mode=""></image>
  61. <!-- 条件渲染:当 countdownTime 小于等于 0 时显示蒙版 -->
  62. <image v-if="countdownTime <= 0"
  63. src="https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/qrOOD.png"
  64. style="width: 150rpx;height: 150rpx;position: absolute;top: 240rpx;left: 200rpx;"></image>
  65. </view>
  66. <view style="margin: 30rpx 0;">
  67. <button class="butmin1" size="mini" @tap="freshqrcode" :disabled="countdownTime > 0">
  68. {{ countdownTime > 0 ? `刷新二维码(${countdownTime}秒后到期)` : '刷新二维码 (已过期)' }}
  69. </button>
  70. </view>
  71. <view class="importentInfo1">
  72. <view class="sharetxt1" style="font-size: 22rpx;">
  73. <text style="white-space: pre-line; text-align: left;line-height: 1;">
  74. 登录成功后: \n
  75. ·同步账号基础信息及查看账号运营数据\n
  76. ·获得免费领样权限\n
  77. ·获得承接快手悬赏任务权限\n
  78. ·为达人橱窗快速选品\n
  79. ·为直播带货快速选品\n
  80. ·样叽专属高佣商品,同一商品,更高佣金\n
  81. ·变现种草任务参与资质\n
  82. </text>
  83. </view>
  84. </view>
  85. <view style="margin: 30rpx 0;">
  86. <button class="butmin" size="mini" @tap="saveImage">下载二维码至手机</button>
  87. </view>
  88. </view>
  89. </view>
  90. </uni-popup>
  91. </view>
  92. </template>
  93. <script>
  94. import mvBar from "@/components/mys_navBar/mysNavBar";
  95. import htzImageUpload from '@/components/htz-image-upload/htz-image-upload.vue';
  96. import getPolicyEncode from '@/components/obs/getPolicy.js';
  97. import getSignature from '@/components/obs/GetSignature.js';
  98. export default {
  99. components: {
  100. mvBar,
  101. htzImageUpload,
  102. },
  103. data() {
  104. return {
  105. countdownTime: 100, // 初始倒计时时间(秒)
  106. intervalId: null, // 计时器 ID
  107. qrcodeURL: 'https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/lQLPDhrXwll1_NcjI7AD0T3viYtxQwGOvh1SwG0A_35_35.png', // 用来保存二维码URL的变量
  108. // qrcodeURL: '',
  109. head_uri: 'https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/lQLPDhrXwll1_NcjI7AD0T3viYtxQwGOvh1SwG0A_35_35.png',
  110. nick_name: "",
  111. navH: getApp().globalData.navHeight,
  112. hasClicked: false,
  113. loading: true,
  114. accountId: '',
  115. platform: {
  116. platform_id: '',
  117. platform_name: '',
  118. platform_icon: '',
  119. },
  120. isBind: true,
  121. isBindKuaishou: true,
  122. imageData: [],
  123. formData: {
  124. platform_nickname: '',
  125. fans_count: '',
  126. home_page_url: '',
  127. home_page_capture_url: ''
  128. },
  129. // 二维码地址
  130. imageUrl: '',
  131. index: 0,
  132. fansLabel: "选择单位",
  133. fansCount: null,
  134. saleNum_30: 0,
  135. fansCountInfo: 1,
  136. fansRange: [{
  137. value: 1,
  138. label: '个'
  139. },
  140. {
  141. value: 10000,
  142. label: '万'
  143. },
  144. {
  145. value: 100000000,
  146. label: '亿'
  147. }
  148. ],
  149. mysNavConfig: {
  150. /* 开启单页显示首页图标 */
  151. isHome: true,
  152. /* 固定导航 */
  153. navFixed: true,
  154. /* 标题 (屏幕中心居中 两边图标中心居中使用slot center1) */
  155. navTitle: {
  156. text: "社媒账号绑定",
  157. color: "",
  158. fontSize: "32rpx", // px upx rpx
  159. fontWeight: "normal", // 100 - 700
  160. },
  161. btnType: "type2",
  162. onLeftClick: '',
  163. /* type2 按钮 */
  164. type2Config: {
  165. // 左图标
  166. leftPath: "/static/img/png2.png",
  167. // 右图标
  168. rightPath: "/static/img/png4.png",
  169. // 圆角
  170. radius: "40rpx",
  171. },
  172. }, // 密码登录校验规则
  173. bindRules: {
  174. name: {
  175. rules: [{
  176. required: true,
  177. errorMessage: '请输入昵称'
  178. }]
  179. },
  180. home_img: {
  181. rules: [{
  182. required: true,
  183. errorMessage: '请上传主页截图',
  184. }]
  185. }
  186. },
  187. urlRegList: [
  188. /(.*)http(s?)\:\/\/((www\.)?)(xiaohongshu\.com)(.*)/,
  189. /(.*)http(s?)\:\/\/((www\.)?)((v\.)?)(douyin\.com)(.*)/,
  190. /(.*)http(s?)\:\/\/((www\.)?)((m\.)?)(weibo\.(com|cn))(.*)/,
  191. /(.*)http(s?)\:\/\/((www\.)?)((v|kpfshanghai)\.m\.chenzhongtech\.com)(.*)/,
  192. /(.*)http(s?)\:\/\/((www\.)?)(b23\.tv)(.*)/,
  193. /(.*)http(s?)\:\/\/((www\.)?)((m\.)?)(dianping\.(com|cn))(.*)/,
  194. /(.*)http(s?)\:\/\/((www\.)?)(zhihu\.com)(.*)/,
  195. ]
  196. }
  197. },
  198. onReady() {},
  199. async onShow() {},
  200. async onLoad(options) {
  201. await this.checkaccount()
  202. this.platform.platform_id = parseInt(options.platform_id)
  203. if (options.account_id) {
  204. this.accountId = parseInt(options.account_id)
  205. this.isBind = false
  206. }
  207. this.loading = true;
  208. uni.showLoading({
  209. title: '加载中'
  210. });
  211. await this.getinfo();
  212. if (!this.isBind) {
  213. // await this.getaccount()
  214. };
  215. this.loading = false;
  216. uni.hideLoading();
  217. },
  218. methods: {
  219. checkaccount() {
  220. this.$https.get('/youngee/c/t/g/check-account').then(res => {
  221. // todo:得到用户数据并赋值 ,头像、粉丝,
  222. console.log("Backend response res:", res);
  223. // 如果后端响应了您想要的结果,则关闭 uni-popup,并停止向后端发送请求
  224. //如果/kuangshouauth执行完毕(存在含tid的数据)
  225. if (res.data.code != -1) {
  226. this.nick_name = res.data.data.nick_name
  227. this.head_uri = res.data.data.head_uri
  228. this.fansCount = res.data.data.fan
  229. //继续往数据中填充30天销量字段
  230. this.$https.get('/youngee/c/t/g/query-sales-for30-days').then(res => {
  231. console.log("30days+++++++", res)
  232. this.saleNum_30 = res.data.data
  233. })
  234. this.isBindKuaishou = true
  235. //从数据库中取到accesstoken和
  236. } else {
  237. //没查到数据,没有绑定
  238. this.isBindKuaishou = false
  239. }
  240. }).catch(err => {
  241. console.error("Error:", err);
  242. });
  243. },
  244. // 获得二维码
  245. async getqrcode(type) {
  246. this.type4 = type;
  247. this.$refs.popup4.open(type);
  248. this.loading = true;
  249. uni.showLoading({
  250. title: '加载中',
  251. })
  252. // 从后端中请求二维码图片展示出来
  253. //达人id在后端通过session获取
  254. await this.$https.get('/youngee/c/t/g/display-qrcode').then(res => {
  255. this.qrcodeURL = res.data.data;
  256. })
  257. this.startCountdown();
  258. this.loading = false;
  259. uni.hideLoading();
  260. },
  261. // 倒计时结束才能点击
  262. async freshqrcode() {
  263. this.qrcodeURL =
  264. 'https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/lQLPDhrXwll1_NcjI7AD0T3viYtxQwGOvh1SwG0A_35_35.png'
  265. if (this.intervalId != null) {
  266. clearInterval(this.intervalId);
  267. this.countdownTime = 100;
  268. }
  269. //重新设置倒计时时间
  270. this.countdownTime = 100; // 重置为 10 秒
  271. this.loading = true;
  272. uni.showLoading({
  273. title: '加载中',
  274. })
  275. await this.$https.get('/youngee/c/t/g/display-qrcode').then(res => {
  276. this.qrcodeURL = res.data.data;
  277. console.log("refresh--url:", this.qrcodeURL);
  278. })
  279. // 启动倒计时计时器
  280. this.startCountdown();
  281. this.loading = false;
  282. uni.hideLoading();
  283. },
  284. // startCountdown() {
  285. // // 每秒减少剩余时间
  286. // this.intervalId = setInterval(() => {
  287. // if (this.countdownTime > 0) {
  288. // this.countdownTime--;
  289. // this.$https.get('/youngee/c/t/g/check-account').then(res => {
  290. // // todo:得到用户数据并赋值
  291. // console.log("Backend response res:", res);
  292. // // 如果后端响应了您想要的结果,则关闭 uni-popup,并停止向后端发送请求
  293. // if (res.data.code != -1 && this.intervalId != null) {
  294. // clearInterval(this.intervalId);
  295. // this.countdownTime = 100;
  296. // this.closepop() // 关闭 uni-popup
  297. // }
  298. // }).catch(err => {
  299. // console.error("Error:", err);
  300. // });
  301. // }
  302. // }, 1000); // 每秒执行一次
  303. // },
  304. startCountdown() {
  305. // 每秒减少剩余时间
  306. this.intervalId = setInterval(() => {
  307. if (this.countdownTime > 0) {
  308. this.countdownTime--;
  309. this.$https.get('/youngee/c/t/g/check-new-account').then(res => {
  310. // 如果后端响应了您想要的结果,则关闭 uni-popup,并停止向后端发送请求
  311. if (res.data.code == 0 && this.intervalId != null) {
  312. clearInterval(this.intervalId);
  313. this.countdownTime = 100;
  314. this.closepop() // 关闭 uni-popup
  315. }
  316. }).catch(err => {
  317. console.error("Error:", err);
  318. });
  319. }
  320. }, 1000); // 每秒执行一次
  321. },
  322. // startCountdown() {
  323. // // 每秒减少剩余时间
  324. // this.intervalId = setInterval(() => {
  325. // if (this.countdownTime > 0) {
  326. // this.countdownTime--;
  327. // }
  328. // }, 1000); // 每秒执行一次
  329. // },
  330. //unipop出现/消失自动触发
  331. async change(e) {
  332. if (this.loading) {
  333. this.loading = false;
  334. uni.hideLoading();
  335. }
  336. if (this.intervalId != null) {
  337. clearInterval(this.intervalId);
  338. this.countdownTime = 100;
  339. }
  340. await this.checkaccount()
  341. this.qrcodeURL =
  342. 'https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/lQLPDhrXwll1_NcjI7AD0T3viYtxQwGOvh1SwG0A_35_35.png'
  343. },
  344. // 保存图片
  345. async saveImage() {
  346. // showToast('保存成功')
  347. wx.downloadFile({
  348. url: 'https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/lQLPDhrXwll1_NcjI7AD0T3viYtxQwGOvh1SwG0A_35_35u',
  349. success: function(res) {
  350. wx.saveImageToPhotosAlbum({
  351. filePath: res.tempFilePath,
  352. success: function(data) {
  353. wx.showToast({
  354. title: "保存成功",
  355. icon: "success",
  356. duration: 2000
  357. })
  358. },
  359. fail: function(err) {
  360. console.log(err);
  361. },
  362. complete(res) {
  363. console.log(res);
  364. }
  365. })
  366. }
  367. })
  368. },
  369. closepop() {
  370. this.$refs.popup4.close()
  371. },
  372. // 默认信息表,获取平台logo
  373. getinfo() {
  374. return this.$https.get('/youngee/c/g/get-info-tables')
  375. .then(res => {
  376. let list = res.data.data.ThirdPlatform
  377. for (var i = 0; i < list.length; ++i) {
  378. if (list[i].id == this.platform.platform_id) {
  379. this.platform.platform_icon = list[i].platform_icon
  380. this.platform.platform_name = list[i].platform_name
  381. }
  382. }
  383. })
  384. },
  385. // getaccount() {
  386. // return this.$https.get('/youngee/c/t/g/get-talent-account')
  387. // .then(res => {
  388. // console.log(res)
  389. // if (res.data.code !== -3) {
  390. // this.account = res.data.data
  391. // this.imageData = []
  392. // for (var i = 0; i < this.account.length; i++) {
  393. // if (this.platform.platform_id == this.account[i].platform_id) {
  394. // this.hasClicked = true
  395. // this.formData.platform_nickname = this.account[i].platform_nickname
  396. // this.formData.fans_count = this.account[i].fans_count
  397. // this.formData.home_page_url = this.account[i].home_page_url
  398. // this.imageData.push(this.account[i].home_page_capture_url);
  399. // if (this.formData.fans_count >= 100000000) {
  400. // this.index = 2
  401. // this.fansCountInfo = this.fansRange[this.index].value;
  402. // this.fansLabel = this.fansRange[this.index].label;
  403. // this.fansCount = (this.formData.fans_count / 100000000).toFixed(1)
  404. // } else if (this.formData.fans_count >= 10000) {
  405. // this.index = 1
  406. // this.fansCountInfo = this.fansRange[this.index].value;
  407. // this.fansLabel = this.fansRange[this.index].label;
  408. // this.fansCount = (this.formData.fans_count / 10000).toFixed(1)
  409. // } else {
  410. // this.index = 0
  411. // this.fansCountInfo = this.fansRange[this.index].value;
  412. // this.fansLabel = this.fansRange[this.index].label;
  413. // this.fansCount = this.formData.fans_count
  414. // }
  415. // }
  416. // }
  417. // }
  418. // })
  419. // },
  420. exit() {
  421. uni.navigateBack()
  422. },
  423. // 粉丝量量级选择
  424. bindPickerChange: function(e) {
  425. if (this.index !== e.detail.value) {
  426. this.fansCount = null
  427. }
  428. this.index = e.detail.value;
  429. this.fansLabel = this.fansRange[this.index].label
  430. this.fansCountInfo = this.fansRange[this.index].value
  431. },
  432. ceshiChooseSuccess(tempFilePaths, e) { //选择图片返回
  433. console.log('ceshiChooseSuccess', tempFilePaths, e);
  434. if (e == 0) {
  435. this.store = 'talent_upload/' + this.guid() + '.png'
  436. // this.store = 'talent_upload/icon-whole-pipline.png'
  437. // this.store = 'youngee/talent_upload/icon-edit.2png'
  438. } else if (e == 1) {
  439. this.store = 'talent_upload/' + this.guid() + '.mp4'
  440. }
  441. /****************
  442. 以下代码是自定义上传逻辑,仅供参考
  443. ***************/
  444. this.imgUpload(tempFilePaths);
  445. /*******************************/
  446. },
  447. imgUpload(tempFilePaths) {
  448. let that = this
  449. let config = {
  450. AccessKeyId: 'IVW21DTGIIUBBAGXKK0Y', //AK
  451. SecretKey: 'Y01nEQNcLOATMw7uJwrk3yOdQZ2fqLhSnXcOKVDE', //SK
  452. EndPoint: 'https://horastar.obs.cn-east-3.myhuaweicloud.com', //上传文件的路径
  453. };
  454. let fileName = this.store; //指定上传到OBS桶中的对象名
  455. let OBSPolicy = { //设定policy内容
  456. "expiration": "2089-12-31T12:00:00.000Z",
  457. "conditions": [{
  458. "bucket": "horastar"
  459. }, //Bucket name
  460. // {"bucket": "goin"},
  461. {
  462. 'key': fileName
  463. }
  464. ]
  465. }
  466. let policyEncoded = getPolicyEncode(OBSPolicy); //计算policy编码值
  467. let signature = getSignature(policyEncoded, config.SecretKey); //计算signature
  468. uni.uploadFile({
  469. //url: config.EndPoint,
  470. url: config.EndPoint,
  471. filePath: tempFilePaths[0],
  472. name: 'file',
  473. formData: {
  474. 'AccessKeyID': config.AccessKeyId,
  475. 'policy': policyEncoded,
  476. 'signature': signature,
  477. 'key': fileName,
  478. },
  479. success: function(res) {
  480. console.log("res", res); //打印响应状态码
  481. if (res.statusCode == 204) {
  482. // that.imageData.push(config.EndPoint + '/' + fileName);
  483. let obs_url = config.EndPoint + '/' + fileName; //用你自己的 bucket 名替换星号
  484. that.imageData.push(obs_url)
  485. that.formData.home_page_capture_url = obs_url
  486. uni.showToast({
  487. title: '上传成功',
  488. icon: '成功'
  489. });
  490. } else {
  491. uni.showToast({
  492. title: '上传失败',
  493. icon: '失败'
  494. });
  495. }
  496. },
  497. fail: function(e) {
  498. console.log(e);
  499. uni.showToast({
  500. title: '上传失败',
  501. icon: '失败'
  502. });
  503. }
  504. })
  505. },
  506. guid() {
  507. return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  508. var r = Math.random() * 16 | 0,
  509. v = c == 'x' ? r : (r & 0x3 | 0x8);
  510. return v.toString(16);
  511. });
  512. },
  513. onInput(e) {
  514. console.log(e)
  515. e = (e.match(/^\d*(\.?\d{0,1})/g)[0]) || null
  516. // //重新赋值给input
  517. if (e < 0 || e > 9999.9) {
  518. uni.showToast({
  519. title: '请输入[1,9999.9]区间内的数',
  520. icon: 'none'
  521. })
  522. console.log('请输入[1,9999.9]区间内的数')
  523. }
  524. this.$nextTick(() => {
  525. this.fansCount = (e > 0 && e <= 9999.9) ? e : null
  526. })
  527. },
  528. onInput1(e) {
  529. // 验证是否是纯数字
  530. const isNumber = /^\d*$/.test(e)
  531. // 过滤非数字
  532. e = e.replace(/\D/g, '')
  533. if (!isNumber || e < 0 || e > 9999) {
  534. uni.showToast({
  535. title: '请输入[0,9999]区间的整数',
  536. icon: 'none'
  537. })
  538. console.log('请输入[0,9999]区间的整数')
  539. }
  540. this.$nextTick(() => {
  541. this.fansCount = (e >= 0 && e <= 9999 && e.match(/^\d*/g)[0]) ? e : null
  542. })
  543. }
  544. },
  545. }
  546. </script>
  547. <style>
  548. /deep/ .share .uni-popup .uni-popup__wrapper {
  549. width: 70% !important;
  550. border-radius: 15rpx !important;
  551. }
  552. </style>
  553. <style lang="scss" scoped>
  554. .importentInfo1 {
  555. margin-left: 59rpx;
  556. background-color: #efefef;
  557. border-radius: 8px;
  558. height: 370rpx;
  559. width: 400rpx;
  560. }
  561. // 主体样式
  562. .card {
  563. padding: 24rpx;
  564. margin-top: 30rpx;
  565. border: 1rpx solid #F0D232;
  566. background-color: #ffffff;
  567. margin: 0 10rpx;
  568. }
  569. .head {
  570. padding-top: 5%;
  571. padding: 0 0 0 1%;
  572. height: 80rpx;
  573. margin-top: 2%;
  574. }
  575. .head span {
  576. color: #333333;
  577. font-size: 80%;
  578. font-weight: 550;
  579. text-indent: 2em;
  580. }
  581. .head image {
  582. vertical-align: middle;
  583. width: 50rpx;
  584. height: 50rpx;
  585. display: inline-block;
  586. padding-right: 14rpx;
  587. }
  588. .task-info-txt {
  589. margin-top: 10rpx;
  590. margin-left: 20rpx;
  591. }
  592. .head-img {
  593. width: 120rpx;
  594. height: 120rpx;
  595. border-radius: 100rpx;
  596. }
  597. .sale_txt {
  598. margin-top: 30rpx;
  599. }
  600. .sale_txt p {
  601. margin-bottom: 17rpx;
  602. color: #81838f;
  603. }
  604. .sale_txt span {
  605. padding-left: 160rpx;
  606. }
  607. .home-link {
  608. /deep/.uni-easyinput__content-input {
  609. background-color: #EBEBEB;
  610. border-radius: 15rpx;
  611. }
  612. }
  613. .heng-line {
  614. margin-top: 60rpx;
  615. margin-bottom: 50rpx;
  616. border-bottom: 1rpx solid #DCDCDC;
  617. }
  618. .signupbtn p {
  619. font-size: 30rpx;
  620. }
  621. .exit-btn {
  622. width: 200rpx;
  623. text-align: center;
  624. padding: 10rpx 30rpx;
  625. background-color: #C0C0C0;
  626. border: 0;
  627. border-radius: 10rpx;
  628. color: #FFFFFF;
  629. font-size: 30rpx;
  630. line-height: 180%;
  631. }
  632. .btn1 {
  633. margin: 30rpx;
  634. font-size: 35rpx;
  635. color: #000;
  636. background-color: #F0D232;
  637. border: none;
  638. border-radius: 0;
  639. }
  640. //弹窗
  641. .share {
  642. text-align: center;
  643. line-height: 10rpx;
  644. margin-top: 10rpx;
  645. }
  646. .sharepage {
  647. // width: 90%;
  648. margin: 0 auto;
  649. // position: relative;
  650. }
  651. /deep/ .share.uni-popup .uni-popup__wrapper {
  652. width: 70%;
  653. border-radius: 15rpx;
  654. }
  655. .projecttext1 {
  656. // padding-top: 5%;
  657. padding: 0 0 0 1%;
  658. margin: 5% 0;
  659. text-align: center;
  660. }
  661. .projecttext1 image {
  662. vertical-align: middle;
  663. width: 80rpx;
  664. height: 80rpx;
  665. display: inline-block;
  666. padding-right: 14rpx;
  667. }
  668. .sharemap {
  669. margin: 0 auto;
  670. text-align: center;
  671. // margin-top: 15%;
  672. // margin-bottom: 15%;
  673. }
  674. .expired-image {
  675. width: 300rpx;
  676. height: 300rpx;
  677. background-color: #000;
  678. opacity: 0.2;
  679. /* 例如,设置透明度为 0.5 */
  680. }
  681. /* 定义活跃图片的样式 */
  682. .active-image {
  683. width: 300rpx;
  684. height: 300rpx;
  685. /* 如果有特定样式,可以在这里定义 */
  686. }
  687. .sharemap image {
  688. width: 300rpx;
  689. height: 300rpx;
  690. }
  691. .sharetxt {
  692. height: 100rpx;
  693. display: flex;
  694. flex-direction: column;
  695. align-items: center;
  696. justify-content: center;
  697. }
  698. .sharetxt1 {
  699. padding: 10rpx;
  700. height: 345rpx;
  701. display: flex;
  702. flex-direction: column;
  703. align-items: center;
  704. justify-content: center;
  705. }
  706. .sharetxt text {
  707. font-size: 24rpx;
  708. text-align: left;
  709. line-height: 20rpx
  710. }
  711. .butmin {
  712. // height: 48rpx;
  713. width: 380rpx;
  714. height: 65rpx;
  715. background-color: #FCCF41;
  716. line-height: 60rpx;
  717. font-weight: bold;
  718. }
  719. .butmin1 {
  720. // height: 48rpx;
  721. width: 400rpx;
  722. background-color: #ffffff;
  723. border: #000000 10rpx;
  724. line-height: 48rpx;
  725. color: #FCCF41;
  726. font-weight: bold;
  727. font-size: 20rpx;
  728. }
  729. </style>