douyinbind.vue 20 KB

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