douyinbind.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637
  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 src="https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/pingtai2.png" mode="aspectFill">
  10. </image>
  11. <span>抖音账号绑定</span>
  12. </view>
  13. <view class="body">
  14. <view>
  15. <!-- 放用户信息 -->
  16. <view>
  17. <p>用户抖音平台头像昵称等信息展示</p>
  18. <p>用户抖音平台头像昵称等信息展示</p>
  19. <p>用户抖音平台头像昵称等信息展示</p>
  20. </view>
  21. <!-- 分割线 -->
  22. <view class="heng-line"></view>
  23. <!-- 点击弹窗 toggle(触发)-->
  24. <button class="btn1" @click="getqrcode('center')">
  25. 添加抖音账号</button>
  26. </view>
  27. </view>
  28. </view>
  29. </view>
  30. <!-- 普通弹窗 公众号-->
  31. <uni-popup ref="popup4" class="share" background-color="#fff" @change="change" :maskClick="true">
  32. <view class="popup-content" :class="{ 'popup-height': type === 'left' || type === 'right' }">
  33. <view class="sharepage">
  34. <view class="projecttext1">
  35. <span>抖音账号登录</span>
  36. </view>
  37. <view class="sharetxt">
  38. <text style="color:#9a9a9a ;">
  39. 截屏或下载二维码,使用抖音APP\n
  40. 打开[首页-搜索-扫一扫]后扫码进行
  41. </text>
  42. </view>
  43. <view class="sharemap">
  44. <!-- <image src="https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/kefu.jpeg"
  45. style="width: 400rpx;height: 400rpx;" mode=""></image> -->
  46. <image :src="qrcodeURL" style="width: 300rpx;height: 300rpx;" mode=""></image>
  47. </view>
  48. <view style="margin: 30rpx 0;">
  49. <button class="butmin1" size="mini" @tap="freshqrcode">刷新二维码(300s后到期)</button>
  50. </view>
  51. <!--
  52. ·同步账号基础信息及查看账号运营数据\n
  53. ·获得免费领样权限\n
  54. ·获得承接抖音悬赏任务权限\n
  55. ·为达人橱窗快速选品\n
  56. ·为直播带货快速选品\n
  57. ·样叽专属高佣商品,同一商品,更高佣金\n
  58. ·变现种草任务参与资质\n -->
  59. <view class="importentInfo1">
  60. <view class="sharetxt1" style="font-size: 22rpx;">
  61. <text style="white-space: pre-line; text-align: left;line-height: 1;">
  62. 登录成功后: \n
  63. ·同步账号基础信息及查看账号运营数据\n
  64. ·获得免费领样权限\n
  65. ·获得承接抖音悬赏任务权限\n
  66. ·为达人橱窗快速选品\n
  67. ·为直播带货快速选品\n
  68. ·样叽专属高佣商品,同一商品,更高佣金\n
  69. ·变现种草任务参与资质\n
  70. </text>
  71. </view>
  72. </view>
  73. <view style="margin: 30rpx 0;">
  74. <button class="butmin" size="mini" @tap="saveImage">下载二维码至手机</button>
  75. </view>
  76. </view>
  77. </view>
  78. </uni-popup>
  79. </view>
  80. </template>
  81. <script>
  82. import mvBar from "@/components/mys_navBar/mysNavBar";
  83. import htzImageUpload from '@/components/htz-image-upload/htz-image-upload.vue';
  84. import getPolicyEncode from '@/components/obs/getPolicy.js';
  85. import getSignature from '@/components/obs/GetSignature.js';
  86. import puppeteer from 'puppeteer'
  87. export default {
  88. components: {
  89. mvBar,
  90. htzImageUpload,
  91. },
  92. data() {
  93. return {
  94. qrcodeURL: '', // 用来保存二维码URL的变量
  95. navH: getApp().globalData.navHeight,
  96. hasClicked: false,
  97. loading: true,
  98. accountId: '',
  99. platform: {
  100. platform_id: '',
  101. platform_name: '',
  102. platform_icon: '',
  103. },
  104. isBind: true,
  105. imageData: [],
  106. formData: {
  107. platform_nickname: '',
  108. fans_count: '',
  109. home_page_url: '',
  110. home_page_capture_url: ''
  111. },
  112. // 二维码地址
  113. imageUrl: '',
  114. index: 0,
  115. fansLabel: "选择单位",
  116. fansCount: null,
  117. fansCountInfo: 1,
  118. fansRange: [{
  119. value: 1,
  120. label: '个'
  121. },
  122. {
  123. value: 10000,
  124. label: '万'
  125. },
  126. {
  127. value: 100000000,
  128. label: '亿'
  129. }
  130. ],
  131. mysNavConfig: {
  132. /* 开启单页显示首页图标 */
  133. isHome: true,
  134. /* 固定导航 */
  135. navFixed: true,
  136. /* 标题 (屏幕中心居中 两边图标中心居中使用slot center1) */
  137. navTitle: {
  138. text: "社媒账号绑定",
  139. color: "",
  140. fontSize: "32rpx", // px upx rpx
  141. fontWeight: "normal", // 100 - 700
  142. },
  143. btnType: "type2",
  144. onLeftClick: '',
  145. /* type2 按钮 */
  146. type2Config: {
  147. // 左图标
  148. leftPath: "/static/img/png2.png",
  149. // 右图标
  150. rightPath: "/static/img/png4.png",
  151. // 圆角
  152. radius: "40rpx",
  153. },
  154. }, // 密码登录校验规则
  155. bindRules: {
  156. name: {
  157. rules: [{
  158. required: true,
  159. errorMessage: '请输入昵称'
  160. }]
  161. },
  162. home_img: {
  163. rules: [{
  164. required: true,
  165. errorMessage: '请上传主页截图',
  166. }]
  167. }
  168. },
  169. urlRegList: [
  170. /(.*)http(s?)\:\/\/((www\.)?)(xiaohongshu\.com)(.*)/,
  171. /(.*)http(s?)\:\/\/((www\.)?)((v\.)?)(douyin\.com)(.*)/,
  172. /(.*)http(s?)\:\/\/((www\.)?)((m\.)?)(weibo\.(com|cn))(.*)/,
  173. /(.*)http(s?)\:\/\/((www\.)?)((v|kpfshanghai)\.m\.chenzhongtech\.com)(.*)/,
  174. /(.*)http(s?)\:\/\/((www\.)?)(b23\.tv)(.*)/,
  175. /(.*)http(s?)\:\/\/((www\.)?)((m\.)?)(dianping\.(com|cn))(.*)/,
  176. /(.*)http(s?)\:\/\/((www\.)?)(zhihu\.com)(.*)/,
  177. ]
  178. }
  179. },
  180. onReady() {},
  181. async onShow() {},
  182. async onLoad(options) {
  183. this.platform.platform_id = parseInt(options.platform_id)
  184. if (options.account_id) {
  185. this.accountId = parseInt(options.account_id)
  186. this.isBind = false
  187. }
  188. this.loading = true;
  189. uni.showLoading({
  190. title: '加载中'
  191. });
  192. await this.getinfo();
  193. if (!this.isBind) {
  194. await this.getaccount()
  195. };
  196. this.loading = false;
  197. uni.hideLoading();
  198. },
  199. methods: {
  200. // 获得二维码
  201. getqrcode(type) {
  202. this.type4 = type;
  203. this.$refs.popup4.open(type);
  204. console.log('into func*************');
  205. uni.request({
  206. url: 'https://open.douyin.com/oauth/get_qrcode/?passport_jssdk_version=1.0.13&passport_jssdk_type=pro&aid=1128&language=zh&client_key=awi77xl5kpl16hmi&scope=user_info%2Ctrial.whitelist&next=https%3A%2F%2Fwww.younggee.com%2Fdouyinauth&jump_type=native&optional_scope_check=&optional_scope_uncheck=&customize_params=%7B%22comment_id%22%3A%22%22%2C%22source%22%3A%22pc_auth%22%2C%22not_skip_confirm%22%3A%22true%22%2C%22enter_from%22%3A%22%22%7D&account_sdk_source=web&account_sdk_source_info=7e276d64776172647760466a6b66707777606b667c273f3d292772606761776c736077273f63646976602927756970626c6b76273f5e27466d776a68602555414325556970626c6b272927466d776a68602555414325536c6072607727582927756077686c76766c6a6b76273f5e7e276b646860273f2762606a696a6664716c6a6b2729277671647160273f2775776a6875712778297e276b646860273f276b6a716c636c6664716c6a6b762729277671647160273f2775776a6875712778297e276b646860273f27736c61606a5a666475717077602729277671647160273f2775776a6875712778297e276b646860273f276470616c6a5a666475717077602729277671647160273f2775776a68757127785829276c6b6b60774d606c626d71273f31333729276c6b6b6077526c61716d273f343c373529276a707160774d606c626d71273f3435363529276a70716077526c61716d273f343c343d292767606d64736c6a77273f7e27716a70666d273f63646976602927686a707660273f7177706029276e607c476a647761273f717770607829277260676269273f7e27736077766c6a6b273f27526067424925342b35252d4a75606b424925405625372b3525466d776a686c70682c27292773606b616a77273f275260674e6c7127292777606b6160776077273f275260674e6c7125526067424927782927776074706076715a6d6a7671273f276a75606b2b616a707c6c6b2b666a68272927776074706076715a7564716d6b646860273f272a75696471636a77682a6a6470716d2a666a6b6b6066712a2778&passport_ztsdk=3.0.18&passport_verify=1.0.12&biz_trace_id=c8fab9c7&sign=522f8cd42965082a746c62fccfa426c5e2cc6ab2f4f13be00e433f68aa51eeb8&qs=6466666a706b715a76616e5a766a70776660296466666a706b715a76616e5a766a707766605a6c6b636a29646c6129676c7f5a71776466605a6c612966696c606b715a6e607c29667076716a686c7f605a756477646876296f7068755a717c75602969646b6270646260296b607d71296a75716c6a6b64695a76666a75605a666d60666e&msToken=DDc81_VkM-V4QJaHKg2C2Lvg5f-6Agu5VDxr9qnaheVbVQJpbU5KxsDtmpcgi20Vx1oWHiVypYFKXCiTyY-lofrSzcWtJNjZzzFek5r8scIhiFTzh1h3nOFayJFCqHo%3D&a_bogus=DjWwBR0XmDIPffWk51VLfY3q3UH3YDtV0afLMDg1VVvCj639HMTm9exL4HTvdWRjLT%2FAIegjy4hbO3xprQQ90Hwf7WhO%2F2CZmy00cMlM59TjUZ4nCfumE0DF-vUUSaBB5vlUrOXgqXlHFbYsAnAn4XKUbfqca1hMHjkrPVrUfptsH6W%3D',
  207. method: 'GET',
  208. success: (res) => {
  209. // 将响应结果存储在data中的变量中,以便在页面上显示或打印
  210. this.qrcodeURL = 'data:image/png;base64,' + res.data.data.qrcode;
  211. console.log("res ", res); // 可以在控制台打印响应结果
  212. console.log("this.qrcodeURL ", this.qrcodeURL); // 可以在控制台打印响应结果
  213. }
  214. })
  215. },
  216. // 刷新二维码 下面的url一周时间左右以后,持续请求报错非法请求
  217. freshqrcode() {
  218. uni.request({
  219. url: 'https://open.douyin.com/oauth/get_qrcode/?passport_jssdk_version=1.0.13&passport_jssdk_type=pro&aid=1128&language=zh&client_key=awi77xl5kpl16hmi&scope=user_info%2Ctrial.whitelist&next=https%3A%2F%2Fwww.younggee.com%2Fdouyinauth&jump_type=native&optional_scope_check=&optional_scope_uncheck=&customize_params=%7B%22comment_id%22%3A%22%22%2C%22source%22%3A%22pc_auth%22%2C%22not_skip_confirm%22%3A%22true%22%2C%22enter_from%22%3A%22%22%7D&account_sdk_source=web&account_sdk_source_info=7e276d64776172647760466a6b66707777606b667c273f3d292772606761776c736077273f63646976602927756970626c6b76273f5e27466d776a68602555414325556970626c6b272927466d776a68602555414325536c6072607727582927756077686c76766c6a6b76273f5e7e276b646860273f2762606a696a6664716c6a6b2729277671647160273f2775776a6875712778297e276b646860273f276b6a716c636c6664716c6a6b762729277671647160273f2775776a6875712778297e276b646860273f27736c61606a5a666475717077602729277671647160273f2775776a6875712778297e276b646860273f276470616c6a5a666475717077602729277671647160273f2775776a68757127785829276c6b6b60774d606c626d71273f31333729276c6b6b6077526c61716d273f343c373529276a707160774d606c626d71273f3435363529276a70716077526c61716d273f343c343d292767606d64736c6a77273f7e27716a70666d273f63646976602927686a707660273f7177706029276e607c476a647761273f717770607829277260676269273f7e27736077766c6a6b273f27526067424925342b35252d4a75606b424925405625372b3525466d776a686c70682c27292773606b616a77273f275260674e6c7127292777606b6160776077273f275260674e6c7125526067424927782927776074706076715a6d6a7671273f276a75606b2b616a707c6c6b2b666a68272927776074706076715a7564716d6b646860273f272a75696471636a77682a6a6470716d2a666a6b6b6066712a2778&passport_ztsdk=3.0.18&passport_verify=1.0.12&biz_trace_id=c8fab9c7&sign=522f8cd42965082a746c62fccfa426c5e2cc6ab2f4f13be00e433f68aa51eeb8&qs=6466666a706b715a76616e5a766a70776660296466666a706b715a76616e5a766a707766605a6c6b636a29646c6129676c7f5a71776466605a6c612966696c606b715a6e607c29667076716a686c7f605a756477646876296f7068755a717c75602969646b6270646260296b607d71296a75716c6a6b64695a76666a75605a666d60666e&msToken=DDc81_VkM-V4QJaHKg2C2Lvg5f-6Agu5VDxr9qnaheVbVQJpbU5KxsDtmpcgi20Vx1oWHiVypYFKXCiTyY-lofrSzcWtJNjZzzFek5r8scIhiFTzh1h3nOFayJFCqHo%3D&a_bogus=DjWwBR0XmDIPffWk51VLfY3q3UH3YDtV0afLMDg1VVvCj639HMTm9exL4HTvdWRjLT%2FAIegjy4hbO3xprQQ90Hwf7WhO%2F2CZmy00cMlM59TjUZ4nCfumE0DF-vUUSaBB5vlUrOXgqXlHFbYsAnAn4XKUbfqca1hMHjkrPVrUfptsH6W%3D',
  220. method: 'GET',
  221. success: (res) => {
  222. // 将响应结果存储在data中的变量中,以便在页面上显示或打印
  223. this.qrcodeURL = 'data:image/png;base64,' + res.data.data.qrcode;
  224. console.log("refresh ", res); // 可以在控制台打印响应结果
  225. console.log("freshqrcodeURL ", this.qrcodeURL); // 可以在控制台打印响应结果
  226. }
  227. })
  228. },
  229. //弹出层
  230. change(e) {
  231. console.log('当前模式:' + e.type + ',状态:' + e.show);
  232. },
  233. // 保存图片
  234. async saveImage() {
  235. // showToast('保存成功')
  236. wx.downloadFile({
  237. url: 'https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/pingtai2u',
  238. success: function(res) {
  239. wx.saveImageToPhotosAlbum({
  240. filePath: res.tempFilePath,
  241. success: function(data) {
  242. wx.showToast({
  243. title: "保存成功",
  244. icon: "success",
  245. duration: 2000
  246. })
  247. },
  248. fail: function(err) {
  249. console.log(err);
  250. },
  251. complete(res) {
  252. console.log(res);
  253. }
  254. })
  255. }
  256. })
  257. },
  258. closepop() {
  259. this.$refs.popup4.close()
  260. },
  261. // 默认信息表,获取平台logo
  262. getinfo() {
  263. return this.$https.get('/youngee/c/g/get-info-tables')
  264. .then(res => {
  265. let list = res.data.data.ThirdPlatform
  266. for (var i = 0; i < list.length; ++i) {
  267. if (list[i].id == this.platform.platform_id) {
  268. this.platform.platform_icon = list[i].platform_icon
  269. this.platform.platform_name = list[i].platform_name
  270. }
  271. }
  272. })
  273. },
  274. getaccount() {
  275. return this.$https.get('/youngee/c/t/g/get-talent-account')
  276. .then(res => {
  277. console.log(res)
  278. if (res.data.code !== -3) {
  279. this.account = res.data.data
  280. this.imageData = []
  281. for (var i = 0; i < this.account.length; i++) {
  282. if (this.platform.platform_id == this.account[i].platform_id) {
  283. this.hasClicked = true
  284. this.formData.platform_nickname = this.account[i].platform_nickname
  285. this.formData.fans_count = this.account[i].fans_count
  286. this.formData.home_page_url = this.account[i].home_page_url
  287. this.imageData.push(this.account[i].home_page_capture_url);
  288. if (this.formData.fans_count >= 100000000) {
  289. this.index = 2
  290. this.fansCountInfo = this.fansRange[this.index].value;
  291. this.fansLabel = this.fansRange[this.index].label;
  292. this.fansCount = (this.formData.fans_count / 100000000).toFixed(1)
  293. } else if (this.formData.fans_count >= 10000) {
  294. this.index = 1
  295. this.fansCountInfo = this.fansRange[this.index].value;
  296. this.fansLabel = this.fansRange[this.index].label;
  297. this.fansCount = (this.formData.fans_count / 10000).toFixed(1)
  298. } else {
  299. this.index = 0
  300. this.fansCountInfo = this.fansRange[this.index].value;
  301. this.fansLabel = this.fansRange[this.index].label;
  302. this.fansCount = this.formData.fans_count
  303. }
  304. }
  305. }
  306. }
  307. })
  308. },
  309. exit() {
  310. uni.navigateBack()
  311. },
  312. // 粉丝量量级选择
  313. bindPickerChange: function(e) {
  314. if (this.index !== e.detail.value) {
  315. this.fansCount = null
  316. }
  317. this.index = e.detail.value;
  318. this.fansLabel = this.fansRange[this.index].label
  319. this.fansCountInfo = this.fansRange[this.index].value
  320. },
  321. ceshiChooseSuccess(tempFilePaths, e) { //选择图片返回
  322. console.log('ceshiChooseSuccess', tempFilePaths, e);
  323. if (e == 0) {
  324. this.store = 'talent_upload/' + this.guid() + '.png'
  325. // this.store = 'talent_upload/icon-whole-pipline.png'
  326. // this.store = 'youngee/talent_upload/icon-edit.2png'
  327. } else if (e == 1) {
  328. this.store = 'talent_upload/' + this.guid() + '.mp4'
  329. }
  330. /****************
  331. 以下代码是自定义上传逻辑,仅供参考
  332. ***************/
  333. this.imgUpload(tempFilePaths);
  334. /*******************************/
  335. },
  336. imgUpload(tempFilePaths) {
  337. let that = this
  338. let config = {
  339. AccessKeyId: 'IVW21DTGIIUBBAGXKK0Y', //AK
  340. SecretKey: 'Y01nEQNcLOATMw7uJwrk3yOdQZ2fqLhSnXcOKVDE', //SK
  341. EndPoint: 'https://horastar.obs.cn-east-3.myhuaweicloud.com', //上传文件的路径
  342. };
  343. let fileName = this.store; //指定上传到OBS桶中的对象名
  344. let OBSPolicy = { //设定policy内容
  345. "expiration": "2089-12-31T12:00:00.000Z",
  346. "conditions": [{
  347. "bucket": "horastar"
  348. }, //Bucket name
  349. // {"bucket": "goin"},
  350. {
  351. 'key': fileName
  352. }
  353. ]
  354. }
  355. let policyEncoded = getPolicyEncode(OBSPolicy); //计算policy编码值
  356. let signature = getSignature(policyEncoded, config.SecretKey); //计算signature
  357. uni.uploadFile({
  358. //url: config.EndPoint,
  359. url: config.EndPoint,
  360. filePath: tempFilePaths[0],
  361. name: 'file',
  362. formData: {
  363. 'AccessKeyID': config.AccessKeyId,
  364. 'policy': policyEncoded,
  365. 'signature': signature,
  366. 'key': fileName,
  367. },
  368. success: function(res) {
  369. console.log("res", res); //打印响应状态码
  370. if (res.statusCode == 204) {
  371. // that.imageData.push(config.EndPoint + '/' + fileName);
  372. let obs_url = config.EndPoint + '/' + fileName; //用你自己的 bucket 名替换星号
  373. that.imageData.push(obs_url)
  374. that.formData.home_page_capture_url = obs_url
  375. uni.showToast({
  376. title: '上传成功',
  377. icon: '成功'
  378. });
  379. } else {
  380. uni.showToast({
  381. title: '上传失败',
  382. icon: '失败'
  383. });
  384. }
  385. },
  386. fail: function(e) {
  387. console.log(e);
  388. uni.showToast({
  389. title: '上传失败',
  390. icon: '失败'
  391. });
  392. }
  393. })
  394. },
  395. guid() {
  396. return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  397. var r = Math.random() * 16 | 0,
  398. v = c == 'x' ? r : (r & 0x3 | 0x8);
  399. return v.toString(16);
  400. });
  401. },
  402. onInput(e) {
  403. console.log(e)
  404. e = (e.match(/^\d*(\.?\d{0,1})/g)[0]) || null
  405. // //重新赋值给input
  406. if (e < 0 || e > 9999.9) {
  407. uni.showToast({
  408. title: '请输入[1,9999.9]区间内的数',
  409. icon: 'none'
  410. })
  411. console.log('请输入[1,9999.9]区间内的数')
  412. }
  413. this.$nextTick(() => {
  414. this.fansCount = (e > 0 && e <= 9999.9) ? e : null
  415. })
  416. },
  417. onInput1(e) {
  418. // 验证是否是纯数字
  419. const isNumber = /^\d*$/.test(e)
  420. // 过滤非数字
  421. e = e.replace(/\D/g, '')
  422. if (!isNumber || e < 0 || e > 9999) {
  423. uni.showToast({
  424. title: '请输入[0,9999]区间的整数',
  425. icon: 'none'
  426. })
  427. console.log('请输入[0,9999]区间的整数')
  428. }
  429. this.$nextTick(() => {
  430. this.fansCount = (e >= 0 && e <= 9999 && e.match(/^\d*/g)[0]) ? e : null
  431. })
  432. }
  433. },
  434. }
  435. </script>
  436. <style>
  437. /deep/ .share .uni-popup .uni-popup__wrapper {
  438. width: 70% !important;
  439. border-radius: 15rpx !important;
  440. }
  441. </style>
  442. <style lang="scss" scoped>
  443. .importentInfo1 {
  444. margin-left: 59rpx;
  445. background-color: #efefef;
  446. border-radius: 8px;
  447. height: 370rpx;
  448. width: 400rpx;
  449. }
  450. // 主体样式
  451. .card {
  452. padding: 24rpx;
  453. margin-top: 30rpx;
  454. border: 1rpx solid #F0D232;
  455. background-color: #ffffff;
  456. margin: 0 10rpx;
  457. }
  458. .head {
  459. padding-top: 5%;
  460. padding: 0 0 0 1%;
  461. height: 80rpx;
  462. margin-top: 2%;
  463. }
  464. .head span {
  465. color: #333333;
  466. font-size: 80%;
  467. font-weight: 550;
  468. text-indent: 2em;
  469. }
  470. .head image {
  471. vertical-align: middle;
  472. width: 50rpx;
  473. height: 50rpx;
  474. display: inline-block;
  475. padding-right: 14rpx;
  476. }
  477. .home-link {
  478. /deep/.uni-easyinput__content-input {
  479. background-color: #EBEBEB;
  480. border-radius: 15rpx;
  481. }
  482. }
  483. .heng-line {
  484. margin-top: 60rpx;
  485. margin-bottom: 50rpx;
  486. border-bottom: 1rpx solid #DCDCDC;
  487. }
  488. .signupbtn p {
  489. font-size: 30rpx;
  490. }
  491. .exit-btn {
  492. width: 200rpx;
  493. text-align: center;
  494. padding: 10rpx 30rpx;
  495. background-color: #C0C0C0;
  496. border: 0;
  497. border-radius: 10rpx;
  498. color: #FFFFFF;
  499. font-size: 30rpx;
  500. line-height: 180%;
  501. }
  502. .btn1 {
  503. margin: 30rpx;
  504. font-size: 35rpx;
  505. color: #000;
  506. background-color: #F0D232;
  507. border: none;
  508. border-radius: 0;
  509. }
  510. //弹窗
  511. .share {
  512. text-align: center;
  513. line-height: 10rpx;
  514. margin-top: 10rpx;
  515. }
  516. .sharepage {
  517. // width: 90%;
  518. margin: 0 auto;
  519. // position: relative;
  520. }
  521. /deep/ .share.uni-popup .uni-popup__wrapper {
  522. width: 70%;
  523. border-radius: 15rpx;
  524. }
  525. .projecttext1 {
  526. // padding-top: 5%;
  527. padding: 0 0 0 1%;
  528. margin: 5% 0;
  529. text-align: center;
  530. }
  531. .projecttext1 image {
  532. vertical-align: middle;
  533. width: 80rpx;
  534. height: 80rpx;
  535. display: inline-block;
  536. padding-right: 14rpx;
  537. }
  538. .sharemap {
  539. margin: 0 auto;
  540. text-align: center;
  541. // margin-top: 15%;
  542. // margin-bottom: 15%;
  543. }
  544. .sharemap image {
  545. width: 400rpx;
  546. height: 400rpx;
  547. }
  548. .sharetxt {
  549. height: 100rpx;
  550. display: flex;
  551. flex-direction: column;
  552. align-items: center;
  553. justify-content: center;
  554. }
  555. .sharetxt1 {
  556. padding: 10rpx;
  557. height: 345rpx;
  558. display: flex;
  559. flex-direction: column;
  560. align-items: center;
  561. justify-content: center;
  562. }
  563. .sharetxt text {
  564. font-size: 24rpx;
  565. text-align: left;
  566. line-height: 20rpx
  567. }
  568. .butmin {
  569. // height: 48rpx;
  570. width: 380rpx;
  571. height: 65rpx;
  572. background-color: #FCCF41;
  573. line-height: 60rpx;
  574. font-weight: bold;
  575. }
  576. .butmin1 {
  577. // height: 48rpx;
  578. width: 400rpx;
  579. background-color: #ffffff;
  580. border: #000000 10rpx;
  581. line-height: 48rpx;
  582. color: #FCCF41;
  583. font-weight: bold;
  584. font-size: 20rpx;
  585. }
  586. </style>