login.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893
  1. <template>
  2. <view class="container">
  3. <!-- <image @click="navBack" src="../../static/images/index/close.png" style="width: 32upx;height: 32upx;margin-left: 46upx;"></image> -->
  4. <!-- 小程序状态下登录 -->
  5. <!-- #ifdef MP-WEIXIN -->
  6. <view class="login-box">
  7. <view class="mp_wxBox">
  8. <view>
  9. <view class="logo-box">
  10. <image src="@/static/images/jobApplicant/logo.svg" mode="scaleToFill" />
  11. </view>
  12. <view class="content">
  13. <view>申请获取以下权限</view>
  14. <text>获得你的公开信息(昵称,头像、地区等)</text>
  15. </view>
  16. <view
  17. v-if="weixinPhone == true || weixinPhone == 'true'"
  18. class="login-btn wechat"
  19. open-type="getPhoneNumber"
  20. @getphonenumber="getPhoneNumber"
  21. >
  22. <image src="@/static/images/jobApplicant/phone.svg" mode="scaleToFill" />
  23. 授权手机号
  24. </view>
  25. <button
  26. v-else
  27. style="background: rgba(13, 39, 247, 1); color: #ffffff"
  28. class="bottom"
  29. bindtap="getUserProfile"
  30. @tap="login()"
  31. >
  32. 授权登录
  33. </button>
  34. </view>
  35. </view>
  36. <view style="text-align: center">
  37. <view class="footer">
  38. <view class="check-box" @click="checked = !checked">
  39. <image
  40. src="@/static/images/jobApplicant/check.svg"
  41. v-if="checked"
  42. mode="scaleToFill"
  43. />
  44. <image
  45. src="@/static/images/jobApplicant/border.svg"
  46. v-else
  47. mode="scaleToFill"
  48. />
  49. </view>
  50. 已阅读并同意<navigator url="/my/setting/xieyi">《亿职赞用户协议》</navigator>
  51. 和<navigator url="/my/setting/mimi">《隐私协议》</navigator
  52. >,允许亿职赞统一管理本人账号信息
  53. </view>
  54. </view>
  55. </view>
  56. <!-- #endif -->
  57. <!-- #ifndef MP-WEIXIN -->
  58. <view style="text-align: center" class="login-box">
  59. <view class="logo-box">
  60. <image src="@/static/images/jobApplicant/logo.svg" mode="scaleToFill" />
  61. </view>
  62. <!-- <button class="confirm-btn" style="margin-top: 100rpx" @click="register">
  63. 手机号登录
  64. </button> -->
  65. <!-- #ifdef APP -->
  66. <view class="login-btn wechat" :class="{ disabled: !checked }"
  67. :disabled="checked" @click="login"
  68. ><image
  69. src="@/static/images/jobApplicant/wx.svg"
  70. mode="scaleToFill"
  71. />微信登录</view
  72. >
  73. <!-- #endif -->
  74. <view class="login-btn password" :class="{ disabled: !checked }"
  75. :disabled="checked" @click="register(1)"
  76. ><image
  77. src="@/static/images/jobApplicant/account.svg"
  78. mode="scaleToFill"
  79. />账号密码登录</view
  80. >
  81. <view class="login-btn wechat" :class="{ disabled: !checked }"
  82. :disabled="checked" @click="register(2)"
  83. ><image
  84. src="@/static/images/jobApplicant/phone.svg"
  85. mode="scaleToFill"
  86. />手机验证码登录</view
  87. >
  88. <view
  89. class=""
  90. v-if="isopen"
  91. @click="weixinLo"
  92. style="width: 100%; padding-top: 100rpx"
  93. >
  94. <view class="">
  95. <u-icon name="weixin-circle-fill" color="#5fcd73" size="100"></u-icon>
  96. </view>
  97. <view class="login-btn wechat"> 公众号快捷登录 </view>
  98. </view>
  99. <!-- 底部信息 -->
  100. <view class="footer">
  101. <view class="check-box" @click="checked = !checked">
  102. <image
  103. src="@/static/images/jobApplicant/check.svg"
  104. v-if="checked"
  105. mode="scaleToFill"
  106. />
  107. <image
  108. src="@/static/images/jobApplicant/border.svg"
  109. v-else
  110. mode="scaleToFill"
  111. />
  112. </view>
  113. 已阅读并同意<navigator url="/my/setting/xieyi">《亿职赞用户协议》</navigator>
  114. 和<navigator url="/my/setting/mimi">《隐私协议》</navigator
  115. >,允许亿职赞统一管理本人账号信息
  116. </view>
  117. <!-- <view class="footer">
  118. <u-checkbox shape="circle" v-model="checked"> </u-checkbox>
  119. <text>同意</text>
  120. 协议地址
  121. <navigator url="/my/setting/mimi" open-type="navigate">《隐私政策》</navigator>
  122. <navigator url="/my/setting/xieyi" open-type="navigate">《用户协议》</navigator>
  123. </view> -->
  124. </view>
  125. <!-- #endif -->
  126. </view>
  127. </template>
  128. <script>
  129. export default {
  130. data() {
  131. return {
  132. checked: false,
  133. mobile: "",
  134. code: "",
  135. weixinLogin: false,
  136. sending: false,
  137. sendTime: "获取验证码",
  138. count: 60,
  139. weixinPhone: false,
  140. sendDataList: {},
  141. sessionkey: "",
  142. phoneNum: false,
  143. isopen: false,
  144. };
  145. },
  146. onLoad(e) {
  147. if (e.inviterCode) {
  148. this.$queue.setData("inviterCode", e.inviterCode);
  149. }
  150. this.sessionkey = uni.getStorageSync("sessionkey");
  151. this.weixinPhone = uni.getStorageSync("weixinPhone");
  152. console.log(this.weixinPhone);
  153. if (uni.getStorageSync("sendDataList")) {
  154. this.sendDataList = uni.getStorageSync("sendDataList");
  155. }
  156. // //微信登录开启
  157. // this.$Request.getT('/app/common/type/53').then(res => {
  158. // if (res.code == 0) {
  159. // if (res.data && res.data.value && res.data.value == '是') {
  160. // // this.weixinLogin = true;
  161. // }
  162. // }
  163. // });
  164. this.$Request.getT("/app/common/type/188").then((res) => {
  165. if (res.code == 0) {
  166. if (res.data && res.data.value && res.data.value == "是") {
  167. this.phoneNum = true;
  168. }
  169. }
  170. });
  171. // #ifdef H5
  172. let ua = navigator.userAgent.toLowerCase();
  173. if (ua.indexOf("micromessenger") !== -1) {
  174. //公众号是否自动登录 108
  175. this.$Request.getT("/app/common/type/108").then((res) => {
  176. if (res.code == 0) {
  177. if (res.data && res.data.value && res.data.value == "是") {
  178. this.isopen = true;
  179. } else {
  180. this.isopen = false;
  181. }
  182. }
  183. });
  184. } else {
  185. this.isopen = false;
  186. }
  187. this.selbindwx();
  188. // #endif
  189. },
  190. methods: {
  191. selbindwx() {
  192. let ua = navigator.userAgent.toLowerCase();
  193. if (ua.indexOf("micromessenger") !== -1) {
  194. let openid = uni.getStorageSync("openid");
  195. let userId = uni.getStorageSync("userId");
  196. // let that = this;
  197. if (
  198. window.location.href.indexOf("?code=") !== -1 ||
  199. window.location.href.indexOf("&code=") !== -1
  200. ) {
  201. let code;
  202. if (window.location.href.indexOf("?code=") !== -1) {
  203. code = window.location.href.split("?code=")[1].split("&")[0];
  204. } else {
  205. code = window.location.href.split("&code=")[1].split("&")[0];
  206. }
  207. let data = {
  208. code: code,
  209. };
  210. this.$Request.getT("/app/Login/getOpenId", data).then((ret) => {
  211. if (ret.code == 0) {
  212. uni.setStorageSync("openid", ret.data);
  213. this.$Request
  214. .getT("/app/Login/openid/login", {
  215. openId: ret.data,
  216. })
  217. .then((res) => {
  218. if (res.code == 0) {
  219. uni.setStorageSync("token", res.token);
  220. uni.setStorageSync("userName", res.user.userName);
  221. uni.setStorageSync("avatar", res.user.avatar);
  222. uni.setStorageSync("phone", res.user.phone);
  223. uni.setStorageSync("invitationCode", res.user.invitationCode);
  224. this.$queue.setData("inviterCode", res.user.inviterCode);
  225. uni.setStorageSync("sex", res.user.sex);
  226. uni.setStorageSync("userId", res.user.userId);
  227. uni.setStorageSync("openId", res.user.openId);
  228. uni.setStorageSync("userType", res.user.userType);
  229. this.$Request.get("/app/UserVip/isUserVip").then((res) => {
  230. if (res.code == 0 && res.data && res.data.isVip == 2) {
  231. uni.setStorageSync("isVIP", true);
  232. } else {
  233. uni.setStorageSync("isVIP", false);
  234. }
  235. });
  236. //判断是否开启身份选择 是/否
  237. this.$Request.get("/app/common/type/339").then((rest) => {
  238. if (rest.code == 0) {
  239. if (rest.data.value == "是") {
  240. uni.reLaunch({
  241. url: "/pages/public/selectIdentity/selectIdentity",
  242. });
  243. } else {
  244. uni.navigateBack();
  245. }
  246. } else {
  247. uni.navigateBack();
  248. }
  249. });
  250. } else {
  251. uni.navigateTo({
  252. url: "/pages/public/bind",
  253. });
  254. }
  255. });
  256. }
  257. });
  258. }
  259. }
  260. },
  261. //微信公众号登录
  262. weixinLo() {
  263. if (this.checked == false) {
  264. uni.showToast({
  265. title: "请先同意《隐私政策》和《用户服务协议》",
  266. icon: "none",
  267. });
  268. return;
  269. }
  270. let ua = navigator.userAgent.toLowerCase();
  271. if (ua.indexOf("micromessenger") !== -1) {
  272. let openid = uni.getStorageSync("openid");
  273. let userId = uni.getStorageSync("userId");
  274. if (!openid) {
  275. if (
  276. window.location.href.indexOf("?code=") !== -1 ||
  277. window.location.href.indexOf("&code=") !== -1
  278. ) {
  279. let code;
  280. if (window.location.href.indexOf("?code=") !== -1) {
  281. code = window.location.href.split("?code=")[1].split("&")[0];
  282. } else {
  283. code = window.location.href.split("&code=")[1].split("&")[0];
  284. }
  285. let data = {
  286. code: code,
  287. };
  288. this.$Request.getT("/app/Login/getOpenId", data).then((res) => {
  289. if (ret.code == 0) {
  290. uni.setStorageSync("openid", ret.data);
  291. let datas = {
  292. openId: ret.data,
  293. };
  294. this.$Request.getT("/app/Login/openid/login", datas).then((res) => {
  295. if (res.code == 0) {
  296. uni.setStorageSync("token", res.token);
  297. uni.setStorageSync("userName", res.user.userName);
  298. uni.setStorageSync("avatar", res.user.avatar);
  299. uni.setStorageSync("phone", res.user.phone);
  300. uni.setStorageSync("invitationCode", res.user.invitationCode);
  301. this.$queue.setData("inviterCode", res.user.inviterCode);
  302. uni.setStorageSync("sex", res.user.sex);
  303. uni.setStorageSync("userId", res.user.userId);
  304. uni.setStorageSync("openId", res.user.openId);
  305. uni.setStorageSync("userType", res.user.userType);
  306. this.$Request.get("/app/UserVip/isUserVip").then((res) => {
  307. if (res.code == 0 && res.data && res.data.isVip == 2) {
  308. uni.setStorageSync("isVIP", true);
  309. } else {
  310. uni.setStorageSync("isVIP", false);
  311. }
  312. });
  313. //判断是否开启身份选择 是/否
  314. this.$Request.get("/app/common/type/339").then((rest) => {
  315. if (rest.code == 0) {
  316. if (rest.data.value == "是") {
  317. uni.reLaunch({
  318. url: "/pages/public/selectIdentity/selectIdentity",
  319. });
  320. } else {
  321. uni.navigateBack();
  322. }
  323. } else {
  324. uni.navigateBack();
  325. }
  326. });
  327. } else {
  328. uni.navigateTo({
  329. url: "/pages/public/bind",
  330. });
  331. }
  332. });
  333. }
  334. });
  335. } else {
  336. let that = this;
  337. window.location.href =
  338. "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
  339. that.$queue.getWxAppid() +
  340. "&redirect_uri=" +
  341. window.location.href.split("#")[0] +
  342. "&response_type=code&scope=snsapi_userinfo#wechat_redirect";
  343. }
  344. } else {
  345. this.$Request
  346. .getT("/app/Login/openid/login", {
  347. openId: openid,
  348. })
  349. .then((res) => {
  350. if (res.code == 0) {
  351. uni.setStorageSync("token", res.token);
  352. uni.setStorageSync("userName", res.user.userName);
  353. uni.setStorageSync("avatar", res.user.avatar);
  354. uni.setStorageSync("phone", res.user.phone);
  355. uni.setStorageSync("invitationCode", res.user.invitationCode);
  356. this.$queue.setData("inviterCode", res.user.inviterCode);
  357. uni.setStorageSync("sex", res.user.sex);
  358. uni.setStorageSync("userId", res.user.userId);
  359. uni.setStorageSync("openId", res.user.openId);
  360. uni.setStorageSync("userType", res.user.userType);
  361. this.$Request.get("/app/UserVip/isUserVip").then((res) => {
  362. if (res.code == 0 && res.data && res.data.isVip == 2) {
  363. uni.setStorageSync("isVIP", true);
  364. } else {
  365. uni.setStorageSync("isVIP", false);
  366. }
  367. });
  368. //判断是否开启身份选择 是/否
  369. this.$Request.get("/app/common/type/339").then((rest) => {
  370. if (rest.code == 0) {
  371. if (rest.data.value == "是") {
  372. uni.reLaunch({
  373. url: "/pages/public/selectIdentity/selectIdentity",
  374. });
  375. } else {
  376. uni.navigateBack();
  377. }
  378. } else {
  379. uni.navigateBack();
  380. }
  381. });
  382. } else {
  383. uni.navigateTo({
  384. url: "/pages/public/bind",
  385. });
  386. }
  387. });
  388. }
  389. }
  390. },
  391. wxGetUserInfo(e) {
  392. if (this.checked) {
  393. wx.getUserProfile({
  394. desc: "业务需要",
  395. success: (infoRes) => {
  396. console.log(
  397. "infoRes.encryptedData__________:" + JSON.stringify(infoRes.userInfo)
  398. );
  399. let nickName = infoRes.userInfo.nickName; //昵称
  400. let avatarUrl = infoRes.userInfo.avatarUrl; //头像
  401. let sex = infoRes.userInfo.gender; //头像
  402. try {
  403. this.$queue.showLoading("正在登录中...");
  404. this.login(nickName, avatarUrl, sex);
  405. } catch (e) {}
  406. },
  407. });
  408. } else {
  409. uni.showToast({
  410. title: "请阅读并同意《隐私协议》和《用户服务协议》",
  411. icon: "none",
  412. });
  413. }
  414. },
  415. //登录
  416. login(nickName, avatarUrl, sex) {
  417. if (!this.checked) {
  418. uni.showToast({
  419. title: "请阅读并同意《隐私协议》和《用户服务协议》",
  420. icon: "none",
  421. });
  422. return;
  423. }
  424. let that = this;
  425. // 1.wx获取登录用户code
  426. uni.login({
  427. provider: "weixin",
  428. success: function (loginRes) {
  429. console.log(loginRes, "************");
  430. let data = {
  431. code: loginRes.code,
  432. };
  433. that.$Request.get("/app/Login/wxLogin", data).then((res) => {
  434. if (res.code == 0) {
  435. uni.hideLoading();
  436. uni.setStorageSync("openId", res.data.open_id);
  437. uni.setStorageSync("unionId", res.data.unionId);
  438. that.sessionkey = res.data.session_key;
  439. let sendData = {
  440. openId: uni.getStorageSync("openId"),
  441. unionId: uni.getStorageSync("unionId"),
  442. userName: "游客",
  443. avatar: "",
  444. sex: "1", //性别
  445. inviterCode: that.$queue.getData("inviterCode"), //别人登录进来携带你的邀请码
  446. };
  447. that.sendDataList = sendData;
  448. that.flag = res.data.flag;
  449. // 第一次登录获取手机号
  450. // console.log(that.phoneNum,'**********************1')
  451. // console.log(that.flag,'**********************2')
  452. if (that.flag == "2" && that.phoneNum) {
  453. that.weixinPhone = true;
  454. } else {
  455. that.getWeixinInfo(sendData);
  456. }
  457. } else {
  458. uni.showToast({
  459. icon: "none",
  460. title: res.msg,
  461. duration: 2000,
  462. });
  463. console.log(res, "失败");
  464. }
  465. });
  466. },
  467. });
  468. },
  469. //小程序微信登录后获取手机号
  470. getPhoneNumber: function (e) {
  471. if (e.detail.errMsg == "getPhoneNumber:fail user deny") {
  472. console.log("用户拒绝提供手机号");
  473. } else {
  474. console.log("用户同意提供手机号");
  475. console.log(e);
  476. this.setPhoneByInsert(e.detail.encryptedData, e.detail.iv);
  477. }
  478. },
  479. //小程序微信登录后获取手机号
  480. setPhoneByInsert(decryptData, iv) {
  481. let data = {
  482. decryptData: decryptData,
  483. key: this.sessionkey,
  484. iv: iv,
  485. };
  486. this.$Request.postJson("/app/Login/selectPhone", data).then((res) => {
  487. if (res.code == 0) {
  488. this.phone = res.data.phoneNumber;
  489. this.getWeixinInfo(this.sendDataList);
  490. } else {
  491. uni.showToast({
  492. title: res.msg,
  493. icon: "none",
  494. duration: 2000,
  495. });
  496. }
  497. });
  498. },
  499. //获取个人信息
  500. getWeixinInfo(sendData) {
  501. let that = this;
  502. uni.showLoading({
  503. title: "登录中...",
  504. });
  505. let postData = {
  506. openId: sendData.openId, //小程序openId
  507. unionId: sendData.unionId, //unionId
  508. userName: sendData.userName, //微信名称
  509. avatar: sendData.avatar, //头像
  510. sex: sendData.sex, //性别
  511. phone: that.phone,
  512. inviterCode: sendData.inviterCode,
  513. };
  514. that.$Request.postJson("/app/Login/insertWxUser", postData).then((res) => {
  515. uni.hideLoading();
  516. if (res.code == 0) {
  517. uni.setStorageSync("token", res.token);
  518. uni.setStorageSync("userName", res.user.userName);
  519. uni.setStorageSync("avatar", res.user.avatar);
  520. uni.setStorageSync("phone", res.user.phone);
  521. uni.setStorageSync("invitationCode", res.user.invitationCode);
  522. this.$queue.setData("inviterCode", res.user.inviterCode);
  523. uni.setStorageSync("sex", res.user.sex);
  524. uni.setStorageSync("userId", res.user.userId);
  525. uni.setStorageSync("openId", res.user.openId);
  526. uni.setStorageSync("userType", res.user.userType);
  527. this.$Request.get("/app/UserVip/isUserVip").then((res) => {
  528. if (res.code == 0 && res.data && res.data.isVip == 2) {
  529. uni.setStorageSync("isVIP", true);
  530. } else {
  531. uni.setStorageSync("isVIP", false);
  532. }
  533. });
  534. //判断是否开启身份选择 是/否
  535. this.$Request.get("/app/common/type/339").then((rest) => {
  536. if (rest.code == 0) {
  537. if (rest.data.value == "是") {
  538. uni.reLaunch({
  539. url: "/pages/public/selectIdentity/selectIdentity",
  540. });
  541. } else {
  542. if (res.user.userType == 2) {
  543. // 这里判断一下看是否是第一次登录如果是就跳到引导页,如果不是就正常跳
  544. let firstLogin = uni.getStorageSync("firstLogin") || false;
  545. if (!firstLogin) {
  546. uni.navigateTo({
  547. url: "/pages/my/jobApplicant/guidePage",
  548. });
  549. } else {
  550. uni.reLaunch({
  551. url: "/pages/my/index",
  552. });
  553. }
  554. } else {
  555. // 这里判断一下看是否是第一次登录如果是就跳到引导页,如果不是就正常跳
  556. let firstLogin = uni.getStorageSync("firstLogin") || false;
  557. if (!firstLogin) {
  558. uni.navigateTo({
  559. url: "/pages/my/jobApplicant/guidePage",
  560. });
  561. } else {
  562. uni.reLaunch({
  563. url: "/pages/my/index",
  564. });
  565. }
  566. }
  567. }
  568. } else {
  569. if (res.user.userType == 2) {
  570. // 这里判断一下看是否是第一次登录如果是就跳到引导页,如果不是就正常跳
  571. let firstLogin = uni.getStorageSync("firstLogin") || false;
  572. if (!firstLogin) {
  573. uni.navigateTo({
  574. url: "/pages/my/jobApplicant/guidePage",
  575. });
  576. } else {
  577. uni.reLaunch({
  578. url: "/pages/my/index",
  579. });
  580. }
  581. } else {
  582. // 这里判断一下看是否是第一次登录如果是就跳到引导页,如果不是就正常跳
  583. let firstLogin = uni.getStorageSync("firstLogin") || false;
  584. if (!firstLogin) {
  585. uni.navigateTo({
  586. url: "/pages/my/jobApplicant/guidePage",
  587. });
  588. } else {
  589. uni.reLaunch({
  590. url: "/pages/my/index",
  591. });
  592. }
  593. }
  594. }
  595. });
  596. } else {
  597. uni.hideLoading();
  598. this.$queue.showToast(res.msg);
  599. }
  600. });
  601. },
  602. forget() {
  603. uni.navigateTo({
  604. url: "/pages/public/pwd",
  605. });
  606. },
  607. register(type) {
  608. if (!this.checked) {
  609. uni.showToast({
  610. title: "请阅读并同意《隐私协议》和《用户服务协议》",
  611. icon: "none",
  612. });
  613. } else {
  614. uni.navigateTo({
  615. url: `/pages/public/loginphone?type=${type}`,
  616. });
  617. }
  618. },
  619. inputChange(e) {
  620. const key = e.currentTarget.dataset.key;
  621. this[key] = e.detail.value;
  622. },
  623. navBack() {
  624. uni.navigateBack();
  625. },
  626. },
  627. };
  628. </script>
  629. <style lang="scss" scoped>
  630. .login-box {
  631. position: absolute;
  632. left: 0;
  633. right: 0;
  634. top: 0;
  635. bottom: 0;
  636. display: flex;
  637. flex-direction: column;
  638. padding: 0 32rpx;
  639. padding-bottom: 180rpx;
  640. box-sizing: border-box;
  641. }
  642. .logo-box {
  643. flex: 1;
  644. display: flex;
  645. justify-content: center;
  646. align-items: center;
  647. image {
  648. width: 160rpx;
  649. height: 160rpx;
  650. }
  651. }
  652. page {
  653. height: 100%;
  654. background: #ffffff !important;
  655. }
  656. /deep/.u-checkbox__label {
  657. margin-right: 0rpx !important;
  658. }
  659. /deep/.u-checkbox {
  660. padding: 0 !important;
  661. }
  662. .footer {
  663. font-family: DM Sans;
  664. font-size: 16rpx;
  665. font-weight: 400;
  666. letter-spacing: 0%;
  667. text-align: left;
  668. display: flex;
  669. align-items: center;
  670. justify-content: center;
  671. color: #605d67;
  672. margin-top: 16rpx;
  673. navigator {
  674. color: #016bf6;
  675. }
  676. .check-box {
  677. display: flex;
  678. justify-content: center;
  679. align-items: center;
  680. margin-right: 16rpx;
  681. image {
  682. width: 24rpx;
  683. height: 24rpx;
  684. }
  685. }
  686. }
  687. .container {
  688. top: 0;
  689. padding: 50rpx 32rpx;
  690. box-sizing: border-box;
  691. position: relative;
  692. overflow: hidden;
  693. color: #fff;
  694. }
  695. .confirm-btn-weixin {
  696. width: 200px;
  697. height: 42px;
  698. line-height: 42px;
  699. border-radius: 30px;
  700. margin-top: 40upx;
  701. background: -moz-linear-gradient(left, #f15b6c, #e10a07 100%);
  702. background: -webkit-gradient(
  703. linear,
  704. left top,
  705. left right,
  706. color-stop(0, #f15b6c),
  707. color-stop(100%, #e10a07)
  708. );
  709. background: -webkit-linear-gradient(left, #f15b6c 0, #e10a07 100%);
  710. background: -o-linear-gradient(left, #f15b6c 0, #e10a07 100%);
  711. background: -ms-linear-gradient(left, #f15b6c 0, #e10a07 100%);
  712. background: linear-gradient(to left, #f15b6c 0, #e10a07 100%);
  713. color: #fff;
  714. font-size: 32upx;
  715. &:after {
  716. border-radius: 60px;
  717. }
  718. }
  719. .confirm-btn {
  720. width: 200px;
  721. height: 42px;
  722. line-height: 42px;
  723. border-radius: 30px;
  724. margin-top: 300upx;
  725. background: -moz-linear-gradient(left, #f15b6c, #e10a07 100%);
  726. background: -webkit-gradient(
  727. linear,
  728. left top,
  729. left right,
  730. color-stop(0, #f15b6c),
  731. color-stop(100%, #e10a07)
  732. );
  733. background: -webkit-linear-gradient(left, #f15b6c 0, #e10a07 100%);
  734. background: -o-linear-gradient(left, #f15b6c 0, #e10a07 100%);
  735. background: -ms-linear-gradient(left, #f15b6c 0, #e10a07 100%);
  736. background: linear-gradient(to left, #f15b6c 0, #e10a07 100%);
  737. color: #fff;
  738. font-size: 32upx;
  739. &:after {
  740. border-radius: 60px;
  741. }
  742. }
  743. .headers {
  744. text-align: center;
  745. }
  746. .headers > image {
  747. width: 400upx;
  748. height: 400upx;
  749. }
  750. // .footer {
  751. // padding-left: 100upx;
  752. // margin-top: 32upx;
  753. // font-size: 24upx;
  754. // color: #666666;
  755. // text-align: center;
  756. // display: flex;
  757. // }
  758. .login-btn {
  759. padding: 0 32rpx;
  760. box-sizing: border-box;
  761. border-radius: 252rpx;
  762. color: rgba(255, 255, 255, 1) !important;
  763. font-family: DM Sans;
  764. font-size: 32rpx;
  765. font-weight: 400;
  766. line-height: 90rpx;
  767. display: flex;
  768. justify-content: center;
  769. align-items: center;
  770. margin-bottom: 16rpx;
  771. width: 100%;
  772. image {
  773. width: 28rpx;
  774. height: 28rpx;
  775. margin-right: 20rpx;
  776. }
  777. }
  778. .wechat {
  779. background: linear-gradient(90.00deg, rgba(13, 39, 247, 1),rgba(19, 193, 234, 1) 100%);
  780. }
  781. .password {
  782. background: rgba(1, 107, 246, 1);
  783. }
  784. .disabled{
  785. background: #99c4fa;
  786. }
  787. uni-button[disabled]:not([type]){
  788. background-color: rgba(1, 107, 246, 1);
  789. }
  790. uni-button:after{
  791. border:none;
  792. }
  793. page {
  794. background: #fff;
  795. }
  796. .send-msg {
  797. border-radius: 30px;
  798. color: black;
  799. background: white;
  800. height: 30px;
  801. font-size: 14px;
  802. line-height: 30px;
  803. }
  804. .container {
  805. top: 0;
  806. padding-top: 32rpx;
  807. position: relative;
  808. width: 100%;
  809. height: 100vh;
  810. overflow: hidden;
  811. background: #ffffff;
  812. color: #fff;
  813. .mp_wxBox {
  814. .headers {
  815. margin: 35% auto 50rpx;
  816. text-align: center;
  817. border-radius: 60rpx;
  818. width: 650rpx;
  819. height: 300rpx;
  820. line-height: 450rpx;
  821. image {
  822. width: 300rpx;
  823. height: 300rpx;
  824. }
  825. }
  826. .content {
  827. text-align: center;
  828. }
  829. text {
  830. display: block;
  831. color: #9d9d9d;
  832. margin-top: 40rpx;
  833. }
  834. .bottom {
  835. line-height: 80upx;
  836. border-radius: 80upx;
  837. margin: 70rpx 50rpx;
  838. height: 80upx;
  839. font-size: 35rpx;
  840. }
  841. }
  842. }
  843. .wrapper {
  844. position: relative;
  845. z-index: 90;
  846. background: #fff;
  847. padding-bottom: 20px;
  848. }
  849. .input-content {
  850. padding: 0 20px;
  851. }
  852. .confirm-btn {
  853. width: 300px;
  854. height: 42px;
  855. line-height: 42px;
  856. border-radius: 30px;
  857. margin-top: 40px;
  858. background: #016bf6;
  859. color: #fff;
  860. // font-size: $font-lg;
  861. &:after {
  862. border-radius: 60px;
  863. }
  864. }
  865. </style>