kuaishoubind.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791
  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. //data ==-1表示数据库中没有数据 -2表示token过期。
  226. if (res.data.code == 0) {
  227. this.nick_name = res.data.data.nick_name
  228. this.head_uri = res.data.data.head_uri
  229. this.fansCount = res.data.data.fan
  230. //继续往数据中填充30天销量字段
  231. this.$https.get('/youngee/c/t/g/query-sales-for30-days').then(res => {
  232. console.log("30days+++++++", res)
  233. this.saleNum_30 = res.data.data
  234. })
  235. this.isBindKuaishou = true
  236. //从数据库中取到accesstoken和
  237. } else {
  238. //没查到数据,或者token过期
  239. this.isBindKuaishou = false
  240. }
  241. }).catch(err => {
  242. console.error("Error:", err);
  243. });
  244. },
  245. // 获得二维码
  246. async getqrcode(type) {
  247. this.type4 = type;
  248. this.$refs.popup4.open(type);
  249. this.loading = true;
  250. uni.showLoading({
  251. title: '加载中',
  252. })
  253. // 从后端中请求二维码图片展示出来
  254. //达人id在后端通过session获取
  255. await this.$https.get('/youngee/c/t/g/display-qrcode').then(res => {
  256. this.qrcodeURL = res.data.data;
  257. })
  258. this.startCountdown();
  259. this.loading = false;
  260. uni.hideLoading();
  261. },
  262. // 倒计时结束才能点击
  263. async freshqrcode() {
  264. this.qrcodeURL =
  265. 'https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/lQLPDhrXwll1_NcjI7AD0T3viYtxQwGOvh1SwG0A_35_35.png'
  266. if (this.intervalId != null) {
  267. clearInterval(this.intervalId);
  268. this.countdownTime = 100;
  269. }
  270. //重新设置倒计时时间
  271. this.countdownTime = 100; // 重置为 10 秒
  272. this.loading = true;
  273. uni.showLoading({
  274. title: '加载中',
  275. })
  276. await this.$https.get('/youngee/c/t/g/display-qrcode').then(res => {
  277. this.qrcodeURL = res.data.data;
  278. console.log("refresh--url:", this.qrcodeURL);
  279. })
  280. // 启动倒计时计时器
  281. this.startCountdown();
  282. this.loading = false;
  283. uni.hideLoading();
  284. },
  285. // startCountdown() {
  286. // // 每秒减少剩余时间
  287. // this.intervalId = setInterval(() => {
  288. // if (this.countdownTime > 0) {
  289. // this.countdownTime--;
  290. // this.$https.get('/youngee/c/t/g/check-account').then(res => {
  291. // // todo:得到用户数据并赋值
  292. // console.log("Backend response res:", res);
  293. // // 如果后端响应了您想要的结果,则关闭 uni-popup,并停止向后端发送请求
  294. // if (res.data.code != -1 && this.intervalId != null) {
  295. // clearInterval(this.intervalId);
  296. // this.countdownTime = 100;
  297. // this.closepop() // 关闭 uni-popup
  298. // }
  299. // }).catch(err => {
  300. // console.error("Error:", err);
  301. // });
  302. // }
  303. // }, 1000); // 每秒执行一次
  304. // },
  305. startCountdown() {
  306. // 每秒减少剩余时间
  307. this.intervalId = setInterval(() => {
  308. if (this.countdownTime > 0) {
  309. this.countdownTime--;
  310. this.$https.get('/youngee/c/t/g/check-new-account').then(res => {
  311. // 如果后端响应了您想要的结果,则关闭 uni-popup,并停止向后端发送请求
  312. if (res.data.code == 0 && this.intervalId != null) {
  313. clearInterval(this.intervalId);
  314. this.countdownTime = 100;
  315. this.closepop() // 关闭 uni-popup
  316. }
  317. }).catch(err => {
  318. console.error("Error:", err);
  319. });
  320. }
  321. }, 1000); // 每秒执行一次
  322. },
  323. // startCountdown() {
  324. // // 每秒减少剩余时间
  325. // this.intervalId = setInterval(() => {
  326. // if (this.countdownTime > 0) {
  327. // this.countdownTime--;
  328. // }
  329. // }, 1000); // 每秒执行一次
  330. // },
  331. //unipop出现/消失自动触发
  332. async change(e) {
  333. if (this.loading) {
  334. this.loading = false;
  335. uni.hideLoading();
  336. }
  337. if (this.intervalId != null) {
  338. clearInterval(this.intervalId);
  339. this.countdownTime = 100;
  340. }
  341. await this.checkaccount()
  342. this.qrcodeURL =
  343. 'https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/lQLPDhrXwll1_NcjI7AD0T3viYtxQwGOvh1SwG0A_35_35.png'
  344. },
  345. // 保存图片
  346. async saveImage() {
  347. // showToast('保存成功')
  348. wx.downloadFile({
  349. url: 'https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/lQLPDhrXwll1_NcjI7AD0T3viYtxQwGOvh1SwG0A_35_35u',
  350. success: function(res) {
  351. wx.saveImageToPhotosAlbum({
  352. filePath: res.tempFilePath,
  353. success: function(data) {
  354. wx.showToast({
  355. title: "保存成功",
  356. icon: "success",
  357. duration: 2000
  358. })
  359. },
  360. fail: function(err) {
  361. console.log(err);
  362. },
  363. complete(res) {
  364. console.log(res);
  365. }
  366. })
  367. }
  368. })
  369. },
  370. closepop() {
  371. this.$refs.popup4.close()
  372. },
  373. // 默认信息表,获取平台logo
  374. getinfo() {
  375. return this.$https.get('/youngee/c/g/get-info-tables')
  376. .then(res => {
  377. let list = res.data.data.ThirdPlatform
  378. for (var i = 0; i < list.length; ++i) {
  379. if (list[i].id == this.platform.platform_id) {
  380. this.platform.platform_icon = list[i].platform_icon
  381. this.platform.platform_name = list[i].platform_name
  382. }
  383. }
  384. })
  385. },
  386. // getaccount() {
  387. // return this.$https.get('/youngee/c/t/g/get-talent-account')
  388. // .then(res => {
  389. // console.log(res)
  390. // if (res.data.code !== -3) {
  391. // this.account = res.data.data
  392. // this.imageData = []
  393. // for (var i = 0; i < this.account.length; i++) {
  394. // if (this.platform.platform_id == this.account[i].platform_id) {
  395. // this.hasClicked = true
  396. // this.formData.platform_nickname = this.account[i].platform_nickname
  397. // this.formData.fans_count = this.account[i].fans_count
  398. // this.formData.home_page_url = this.account[i].home_page_url
  399. // this.imageData.push(this.account[i].home_page_capture_url);
  400. // if (this.formData.fans_count >= 100000000) {
  401. // this.index = 2
  402. // this.fansCountInfo = this.fansRange[this.index].value;
  403. // this.fansLabel = this.fansRange[this.index].label;
  404. // this.fansCount = (this.formData.fans_count / 100000000).toFixed(1)
  405. // } else if (this.formData.fans_count >= 10000) {
  406. // this.index = 1
  407. // this.fansCountInfo = this.fansRange[this.index].value;
  408. // this.fansLabel = this.fansRange[this.index].label;
  409. // this.fansCount = (this.formData.fans_count / 10000).toFixed(1)
  410. // } else {
  411. // this.index = 0
  412. // this.fansCountInfo = this.fansRange[this.index].value;
  413. // this.fansLabel = this.fansRange[this.index].label;
  414. // this.fansCount = this.formData.fans_count
  415. // }
  416. // }
  417. // }
  418. // }
  419. // })
  420. // },
  421. exit() {
  422. uni.navigateBack()
  423. },
  424. // 粉丝量量级选择
  425. bindPickerChange: function(e) {
  426. if (this.index !== e.detail.value) {
  427. this.fansCount = null
  428. }
  429. this.index = e.detail.value;
  430. this.fansLabel = this.fansRange[this.index].label
  431. this.fansCountInfo = this.fansRange[this.index].value
  432. },
  433. ceshiChooseSuccess(tempFilePaths, e) { //选择图片返回
  434. console.log('ceshiChooseSuccess', tempFilePaths, e);
  435. if (e == 0) {
  436. this.store = 'talent_upload/' + this.guid() + '.png'
  437. // this.store = 'talent_upload/icon-whole-pipline.png'
  438. // this.store = 'youngee/talent_upload/icon-edit.2png'
  439. } else if (e == 1) {
  440. this.store = 'talent_upload/' + this.guid() + '.mp4'
  441. }
  442. /****************
  443. 以下代码是自定义上传逻辑,仅供参考
  444. ***************/
  445. this.imgUpload(tempFilePaths);
  446. /*******************************/
  447. },
  448. imgUpload(tempFilePaths) {
  449. let that = this
  450. let config = {
  451. AccessKeyId: 'IVW21DTGIIUBBAGXKK0Y', //AK
  452. SecretKey: 'Y01nEQNcLOATMw7uJwrk3yOdQZ2fqLhSnXcOKVDE', //SK
  453. EndPoint: 'https://horastar.obs.cn-east-3.myhuaweicloud.com', //上传文件的路径
  454. };
  455. let fileName = this.store; //指定上传到OBS桶中的对象名
  456. let OBSPolicy = { //设定policy内容
  457. "expiration": "2089-12-31T12:00:00.000Z",
  458. "conditions": [{
  459. "bucket": "horastar"
  460. }, //Bucket name
  461. // {"bucket": "goin"},
  462. {
  463. 'key': fileName
  464. }
  465. ]
  466. }
  467. let policyEncoded = getPolicyEncode(OBSPolicy); //计算policy编码值
  468. let signature = getSignature(policyEncoded, config.SecretKey); //计算signature
  469. uni.uploadFile({
  470. //url: config.EndPoint,
  471. url: config.EndPoint,
  472. filePath: tempFilePaths[0],
  473. name: 'file',
  474. formData: {
  475. 'AccessKeyID': config.AccessKeyId,
  476. 'policy': policyEncoded,
  477. 'signature': signature,
  478. 'key': fileName,
  479. },
  480. success: function(res) {
  481. console.log("res", res); //打印响应状态码
  482. if (res.statusCode == 204) {
  483. // that.imageData.push(config.EndPoint + '/' + fileName);
  484. let obs_url = config.EndPoint + '/' + fileName; //用你自己的 bucket 名替换星号
  485. that.imageData.push(obs_url)
  486. that.formData.home_page_capture_url = obs_url
  487. uni.showToast({
  488. title: '上传成功',
  489. icon: '成功'
  490. });
  491. } else {
  492. uni.showToast({
  493. title: '上传失败',
  494. icon: '失败'
  495. });
  496. }
  497. },
  498. fail: function(e) {
  499. console.log(e);
  500. uni.showToast({
  501. title: '上传失败',
  502. icon: '失败'
  503. });
  504. }
  505. })
  506. },
  507. guid() {
  508. return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  509. var r = Math.random() * 16 | 0,
  510. v = c == 'x' ? r : (r & 0x3 | 0x8);
  511. return v.toString(16);
  512. });
  513. },
  514. onInput(e) {
  515. console.log(e)
  516. e = (e.match(/^\d*(\.?\d{0,1})/g)[0]) || null
  517. // //重新赋值给input
  518. if (e < 0 || e > 9999.9) {
  519. uni.showToast({
  520. title: '请输入[1,9999.9]区间内的数',
  521. icon: 'none'
  522. })
  523. console.log('请输入[1,9999.9]区间内的数')
  524. }
  525. this.$nextTick(() => {
  526. this.fansCount = (e > 0 && e <= 9999.9) ? e : null
  527. })
  528. },
  529. onInput1(e) {
  530. // 验证是否是纯数字
  531. const isNumber = /^\d*$/.test(e)
  532. // 过滤非数字
  533. e = e.replace(/\D/g, '')
  534. if (!isNumber || e < 0 || e > 9999) {
  535. uni.showToast({
  536. title: '请输入[0,9999]区间的整数',
  537. icon: 'none'
  538. })
  539. console.log('请输入[0,9999]区间的整数')
  540. }
  541. this.$nextTick(() => {
  542. this.fansCount = (e >= 0 && e <= 9999 && e.match(/^\d*/g)[0]) ? e : null
  543. })
  544. }
  545. },
  546. }
  547. </script>
  548. <style>
  549. /deep/ .share .uni-popup .uni-popup__wrapper {
  550. width: 70% !important;
  551. border-radius: 15rpx !important;
  552. }
  553. </style>
  554. <style lang="scss" scoped>
  555. .importentInfo1 {
  556. margin-left: 59rpx;
  557. background-color: #efefef;
  558. border-radius: 8px;
  559. height: 370rpx;
  560. width: 400rpx;
  561. }
  562. // 主体样式
  563. .card {
  564. padding: 24rpx;
  565. margin-top: 30rpx;
  566. border: 1rpx solid #F0D232;
  567. background-color: #ffffff;
  568. margin: 0 10rpx;
  569. }
  570. .head {
  571. padding-top: 5%;
  572. padding: 0 0 0 1%;
  573. height: 80rpx;
  574. margin-top: 2%;
  575. }
  576. .head span {
  577. color: #333333;
  578. font-size: 80%;
  579. font-weight: 550;
  580. text-indent: 2em;
  581. }
  582. .head image {
  583. vertical-align: middle;
  584. width: 50rpx;
  585. height: 50rpx;
  586. display: inline-block;
  587. padding-right: 14rpx;
  588. }
  589. .task-info-txt {
  590. margin-top: 10rpx;
  591. margin-left: 20rpx;
  592. }
  593. .head-img {
  594. width: 120rpx;
  595. height: 120rpx;
  596. border-radius: 100rpx;
  597. }
  598. .sale_txt {
  599. margin-top: 30rpx;
  600. }
  601. .sale_txt p {
  602. margin-bottom: 17rpx;
  603. color: #81838f;
  604. }
  605. .sale_txt span {
  606. padding-left: 160rpx;
  607. }
  608. .home-link {
  609. /deep/.uni-easyinput__content-input {
  610. background-color: #EBEBEB;
  611. border-radius: 15rpx;
  612. }
  613. }
  614. .heng-line {
  615. margin-top: 60rpx;
  616. margin-bottom: 50rpx;
  617. border-bottom: 1rpx solid #DCDCDC;
  618. }
  619. .signupbtn p {
  620. font-size: 30rpx;
  621. }
  622. .exit-btn {
  623. width: 200rpx;
  624. text-align: center;
  625. padding: 10rpx 30rpx;
  626. background-color: #C0C0C0;
  627. border: 0;
  628. border-radius: 10rpx;
  629. color: #FFFFFF;
  630. font-size: 30rpx;
  631. line-height: 180%;
  632. }
  633. .btn1 {
  634. margin: 30rpx;
  635. font-size: 35rpx;
  636. color: #000;
  637. background-color: #F0D232;
  638. border: none;
  639. border-radius: 0;
  640. }
  641. //弹窗
  642. .share {
  643. text-align: center;
  644. line-height: 10rpx;
  645. margin-top: 10rpx;
  646. }
  647. .sharepage {
  648. // width: 90%;
  649. margin: 0 auto;
  650. // position: relative;
  651. }
  652. /deep/ .share.uni-popup .uni-popup__wrapper {
  653. width: 70%;
  654. border-radius: 15rpx;
  655. }
  656. .projecttext1 {
  657. // padding-top: 5%;
  658. padding: 0 0 0 1%;
  659. margin: 5% 0;
  660. text-align: center;
  661. }
  662. .projecttext1 image {
  663. vertical-align: middle;
  664. width: 80rpx;
  665. height: 80rpx;
  666. display: inline-block;
  667. padding-right: 14rpx;
  668. }
  669. .sharemap {
  670. margin: 0 auto;
  671. text-align: center;
  672. // margin-top: 15%;
  673. // margin-bottom: 15%;
  674. }
  675. .expired-image {
  676. width: 300rpx;
  677. height: 300rpx;
  678. background-color: #000;
  679. opacity: 0.2;
  680. /* 例如,设置透明度为 0.5 */
  681. }
  682. /* 定义活跃图片的样式 */
  683. .active-image {
  684. width: 300rpx;
  685. height: 300rpx;
  686. /* 如果有特定样式,可以在这里定义 */
  687. }
  688. .sharemap image {
  689. width: 300rpx;
  690. height: 300rpx;
  691. }
  692. .sharetxt {
  693. height: 100rpx;
  694. display: flex;
  695. flex-direction: column;
  696. align-items: center;
  697. justify-content: center;
  698. }
  699. .sharetxt1 {
  700. padding: 10rpx;
  701. height: 345rpx;
  702. display: flex;
  703. flex-direction: column;
  704. align-items: center;
  705. justify-content: center;
  706. }
  707. .sharetxt text {
  708. font-size: 24rpx;
  709. text-align: left;
  710. line-height: 20rpx
  711. }
  712. .butmin {
  713. // height: 48rpx;
  714. width: 380rpx;
  715. height: 65rpx;
  716. background-color: #FCCF41;
  717. line-height: 60rpx;
  718. font-weight: bold;
  719. }
  720. .butmin1 {
  721. // height: 48rpx;
  722. width: 400rpx;
  723. background-color: #ffffff;
  724. border: #000000 10rpx;
  725. line-height: 48rpx;
  726. color: #FCCF41;
  727. font-weight: bold;
  728. font-size: 20rpx;
  729. }
  730. </style>