login.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783
  1. <template>
  2. <view>
  3. <!-- 状态栏 -->
  4. <uni-status-bar></uni-status-bar>
  5. <!-- 公共组件-每个页面必须引入 -->
  6. <public-module></public-module>
  7. <app-update ref="app_update"></app-update>
  8. <!-- 欢迎语 -->
  9. <view class="w-100 flex-column box-sizing font-weight" style="height: 450rpx;padding:135rpx 60rpx;">
  10. <view class="font-lgr">您好,</view>
  11. <view class="font-lgr">欢迎来到掌柜科技</view>
  12. </view>
  13. <!-- 登录区域Start -->
  14. <view class="mx-3">
  15. <!-- 账号密码登录 false代表账号密码登录 -->
  16. <template v-if="!status">
  17. <view class="mt-1 border-bottom">
  18. <input type="text" v-model="username" class="uni-input common-input" maxlength="17"
  19. placeholder="请输入会员号" />
  20. </view>
  21. <view class="mt-2 position-relative border-bottom">
  22. <input type="text" :password="isHidePassword" v-model="password" class="uni-input common-input"
  23. placeholder="请输入密码" style="padding-right: 200rpx;" maxlength="15" />
  24. <view class=" position-absolute top-0 right-0 d-flex a-center j-center"
  25. style="width: 200rpx;height: 100%;">
  26. <view style="font-size: 40rpx;" class="icon iconfont"
  27. :class="isHidePassword?'icon-buxianshimima':'icon-xianshimima'"
  28. @tap="isHidePassword = !isHidePassword"></view>
  29. </view>
  30. </view>
  31. <view class="mt-2 position-relative border-bottom">
  32. <input type="text" v-model="imgcode" class="uni-input common-input" maxlength="5"
  33. placeholder="请输入验证码" style="padding-right: 200rpx;" />
  34. <image style="height: 80%;padding-top: 4rpx;width: 200rpx;" mode="aspectFill"
  35. class="position-absolute top-0 right-0 d-flex a-center j-center text-light-muted"
  36. :src="imgcodesrc" @tap="refreshCaptcha"></image>
  37. </view>
  38. </template>
  39. <!-- 手机验证码登录 true代表手机验证码登录 -->
  40. <template v-else>
  41. <view class="mt-1 position-relative border-bottom">
  42. <view class="position-absolute d-flex a-center j-center left-0 top-0 font-weight"
  43. style="width: 100rpx;height: 100%;">+86</view>
  44. <input type="text" v-model="phone" class="uni-input common-input" style="padding-left: 100rpx;"
  45. placeholder="手机号" />
  46. </view>
  47. <view class="mt-2 position-relative border-bottom">
  48. <input type="text" v-model="checknum" class="uni-input common-input" maxlength="4"
  49. style="padding-right: 240rpx;" placeholder="请输入验证码" />
  50. <view class="position-absolute top-0 right-0 d-flex a-center j-center text-light-muted"
  51. style="width: 240rpx;height: 100%;" @tap="getCheckNum">
  52. <view class="d-flex a-center j-center "
  53. :class="!codetime?'yanzhengmaView1 main-text-color':'yanzhengmaView2'">
  54. {{!codetime?'获取验证码':codetime+' S'+'后重新获取'}}
  55. </view>
  56. </view>
  57. </view>
  58. </template>
  59. <button class="my-3 mt-4 d-flex a-center j-center font-weight main-bg-color" :loading="loading"
  60. :class="{'main-bf-hover-color':disabled}" type="primary" @tap="submit" :disabled="disabled"
  61. style="letter-spacing: 20rpx;">登录</button>
  62. <!-- 登录状态切换 -->
  63. <view class="pt-1 px-3 pb-0 text-light-muted d-flex j-sb">
  64. <view @tap="changeStatus">
  65. {{status?'密码登录':'验证码登录'}}
  66. </view>
  67. <!-- #ifdef H5 -->
  68. <view>
  69. <view @tap="navigate({url:'/pages/register/register'})">用户注册</view>
  70. </view>
  71. <!-- #endif -->
  72. </view>
  73. <!-- #ifdef APP -->
  74. <view class="third_party_login_box">
  75. <view class="third_party_title"><text>第三方登录</text></view>
  76. <view class="third_party_content flex-wrap">
  77. <image src="/static/icon/weixin.png" @click="onWxAppLogin" mode="aspectFit"></image>
  78. <!-- <image src="/static/icon/zhifubao.png" mode="aspectFit"></image> -->
  79. </view>
  80. </view>
  81. <!-- #endif -->
  82. <view class="position-fixed left-0 right-0 d-flex a-center j-center pt-2 text-light-muted"
  83. style="bottom:30rpx">
  84. 登录/<span>注册</span>表示您已同意<view> <text @tap="nav('/pages/login/xieyi')"
  85. class="main-text-color">平台协议</text>及<text class="main-text-color"
  86. @tap="nav('/pages/login/mimi')">隐私协议</text>政策</view>
  87. </view>
  88. </view>
  89. <u-popup v-model="show" border-radius="14" mode="center" width="70%">
  90. <view class="shu1 shili">
  91. <text>温馨提示</text>
  92. <text>是否更新账号密码?</text>
  93. </view>
  94. <view class="heng shili_btn">
  95. <view class="heng1" @click="quxiao">取消</view>
  96. <view class="heng1" @click="queren" style="background-color: orangered;">确认</view>
  97. </view>
  98. </u-popup>
  99. </view>
  100. </template>
  101. <script>
  102. import appUpdate from "@/components/yzhua006-update/app-update.vue"; //app更新组件
  103. import md5 from '@/plugins/md5';
  104. let clear;
  105. import {
  106. mapState,
  107. mapMutations
  108. } from 'vuex';
  109. import socket from '@/config/socket';
  110. import DB from "@/common/sqlite";
  111. export default {
  112. components: {
  113. appUpdate
  114. },
  115. data() {
  116. return {
  117. isLoading: false,
  118. show: false,
  119. contentSlot: true,
  120. defaultid: '', //登录默认会员号
  121. status: false, //false代表账号密码登录,true代表手机验证码登录
  122. disabled: true, //登录按钮是否可用
  123. loading: false, //是否显示按钮加载状态
  124. username: "", //登录用户名
  125. password: "", //登录密码
  126. imgcode: "", //图片验证码0
  127. imgcodesrc: "", //验证码图片
  128. isHidePassword: true, //是否隐藏密码
  129. phone: "", //登录手机号
  130. checknum: "", //登录验证码
  131. captchaId: "",
  132. codetime: 0, //验证码获取倒计时
  133. code: "", //用户code
  134. listData: [],
  135. };
  136. },
  137. onReady() {
  138. this.isLoading = true;
  139. },
  140. beforeCreate() {
  141. setTimeout(() => {
  142. this.$refs.app_update.update(); //调用子组件检查更新方法
  143. setTimeout(() => {
  144. if (this.$refs.app_update.popup_show == true && this.$refs.app_update.force == true) {}
  145. }, 100)
  146. }, 500)
  147. },
  148. //第一次加载
  149. async onLoad(e) {
  150. let pageRequest = {
  151. pageNum: 1,
  152. pageSize: 20,
  153. columnFilters: {
  154. apptype: {
  155. name: "apptype",
  156. value: "apk",
  157. }
  158. }
  159. };
  160. let getquote = await this.$http.post('/sysVersion/findPage', pageRequest);
  161. // #ifdef APP-PLUS
  162. this.openSQL();
  163. this.selectTableData();
  164. // this.deleteTableData();
  165. // #endif
  166. this.username = this.defaultid;
  167. },
  168. //页面显示
  169. onShow() {
  170. uni.getClipboardData({
  171. success: (res) => {
  172. let id = (res.data.replace(/(^\s*)|(\s*$)/g, "")).toUpperCase();
  173. if ((id.length == 17) && (id.indexOf('99') == 0) && (id.indexOf('D') > 0) && (id.indexOf(
  174. 'M') > 0) && (id !== this.username)) {
  175. uni.showModal({
  176. content: '是否自动填充会员号',
  177. cancelText: '否',
  178. confirmText: '是',
  179. success: (res1) => {
  180. if (res1.confirm) {
  181. this.username = id;
  182. }
  183. }
  184. });
  185. }
  186. }
  187. })
  188. },
  189. watch: {
  190. username(val) {
  191. this.username = this.username.toUpperCase();
  192. this.OnBtnChange();
  193. },
  194. password(val) {
  195. this.OnBtnChange();
  196. },
  197. imgcode(val) {
  198. this.OnBtnChange();
  199. },
  200. phone(val) {
  201. this.OnBtnChange();
  202. },
  203. checknum(val) {
  204. this.OnBtnChange();
  205. }
  206. },
  207. mounted() {
  208. //取出缓存中的账号、密码
  209. const HBusername = uni.getStorageSync('username');
  210. const HBpassword = uni.getStorageSync('password');
  211. //有账号、密码就赋值给文本,没有就清空
  212. if (HBusername && HBpassword) {
  213. this.username = HBusername;
  214. this.password = HBpassword;
  215. }
  216. },
  217. onShow() {
  218. this.refreshCaptcha();
  219. uni.getClipboardData({
  220. success: (res) => {
  221. let id = (res.data.replace(/(^\s*)|(\s*$)/g, "")).toUpperCase();
  222. if ((id.length == 17) && (id.indexOf('99') == 0) && (id.indexOf('D') > 0) && (id.indexOf(
  223. 'M') > 0) && (id !== this.username)) {
  224. uni.showModal({
  225. content: '是否自动填充会员号',
  226. cancelText: '否',
  227. confirmText: '是',
  228. success: (res1) => {
  229. if (res1.confirm) {
  230. this.username = id;
  231. }
  232. }
  233. });
  234. }
  235. }
  236. })
  237. },
  238. onUnload() {
  239. this.closeSQL();
  240. },
  241. computed: {
  242. ...mapState(["userLoginId", "loginStatus"])
  243. },
  244. //方法
  245. methods: {
  246. ...mapMutations(['setUserInfo']),
  247. // 跳转页面
  248. nav(url) {
  249. uni.navigateTo({
  250. url: url
  251. });
  252. },
  253. // 图片验证码
  254. refreshCaptcha() {
  255. let randnum = Math.floor(Math.random() * (1000000 - 1 + 1)) + 1
  256. this.imgcodesrc = this.$base.baseUrl + "/captchaById?t=" + new Date().getTime() + '&captchaId=' + randnum;
  257. this.captchaId = randnum;
  258. },
  259. // 切换登录状态
  260. changeStatus() {
  261. uni.hideKeyboard();
  262. this.initInput();
  263. this.username = this.defaultid;
  264. this.status = !this.status;
  265. this.refreshCaptcha();
  266. },
  267. // 初始化表单
  268. initInput() {
  269. this.username = '';
  270. this.password = '';
  271. this.phone = '';
  272. this.checknum = '';
  273. this.imgcode = "";
  274. },
  275. // 改变按钮状态
  276. OnBtnChange() {
  277. if ((this.username && this.password && this.imgcode) || (this.phone && this.checknum)) {
  278. this.disabled = false;
  279. return;
  280. }
  281. this.disabled = true;
  282. },
  283. // 获取验证码
  284. async getCheckNum() {
  285. uni.hideKeyboard();
  286. if (this.codetime > 0) return;
  287. // 验证手机号合法性
  288. if (!this.phone) {
  289. return uni.showToast({
  290. title: '请输入手机号',
  291. icon: 'none'
  292. });
  293. }
  294. if (!this.$base.phoneRegular.test(this.phone)) {
  295. return uni.showToast({
  296. title: '请输入正确的手机号码',
  297. icon: 'none'
  298. });
  299. }
  300. // 请求服务器,发送验证码
  301. let res = await this.$http.get('/sendMsg', {
  302. phone: this.phone,
  303. type: "0"
  304. });
  305. // 请求失败处理
  306. if (res.code != 200) {
  307. return uni.showToast({
  308. title: res.data.msg,
  309. icon: "none"
  310. });
  311. } else {
  312. uni.showToast({
  313. title: "发送成功",
  314. icon: "none"
  315. });
  316. }
  317. // 发送成功,开启倒计时
  318. this.codetime = 60;
  319. let timer = setInterval(() => {
  320. this.codetime--;
  321. if (this.codetime < 1) {
  322. clearInterval(timer);
  323. this.codetime = 0;
  324. }
  325. }, 1000);
  326. },
  327. //#ifdef APP-PLUS
  328. quxiao() {
  329. this.show = false;
  330. this.$login({
  331. url: "/login2",
  332. data: {
  333. account: this.username,
  334. password: this.password,
  335. captcha: this.imgcode.toLowerCase(),
  336. captchaId: this.captchaId,
  337. }
  338. }).then(res => {
  339. if (res) {
  340. return uni.showToast({
  341. title: res.msg,
  342. icon: 'none'
  343. });
  344. } else {
  345. socket.init();
  346. }
  347. })
  348. },
  349. queren() {
  350. this.show = false;
  351. this.$login({
  352. url: "/login2",
  353. data: {
  354. account: this.username,
  355. password: this.password,
  356. captcha: this.imgcode.toLowerCase(),
  357. captchaId: this.captchaId,
  358. }
  359. }).then(res => {
  360. if (res) {
  361. return uni.showToast({
  362. title: res.msg,
  363. icon: 'none'
  364. });
  365. } else {
  366. this.updateTableData();
  367. socket.init();
  368. }
  369. })
  370. },
  371. //#endif
  372. // 提交登录
  373. submit() {
  374. // // 账号密码登录
  375. uni.hideKeyboard();
  376. if (!this.status) {
  377. //#ifdef H5
  378. this.$login({
  379. url: "/login2",
  380. data: {
  381. account: this.username,
  382. password: this.password,
  383. captcha: this.imgcode.toLowerCase(),
  384. captchaId: this.captchaId,
  385. }
  386. }).then(res => {
  387. if (res) {
  388. return uni.showToast({
  389. title: res.msg,
  390. icon: 'none'
  391. });
  392. } else {
  393. socket.init();
  394. }
  395. })
  396. // }
  397. //#endif
  398. //#ifdef APP-PLUS
  399. if (this.listData.length > 0) {
  400. this.listData.map(ele => {
  401. if (this.username == ele.username && this.password == ele.password) {
  402. this.$login({
  403. url: "/login2",
  404. data: {
  405. account: this.username,
  406. password: this.password,
  407. captcha: this.imgcode.toLowerCase(),
  408. captchaId: this.captchaId,
  409. }
  410. }).then(res => {
  411. if (res) {
  412. return uni.showToast({
  413. title: res.msg,
  414. icon: 'none'
  415. });
  416. } else {
  417. socket.init();
  418. }
  419. })
  420. } else {
  421. this.show = true;
  422. }
  423. })
  424. } else {
  425. this.$login({
  426. url: "/login2",
  427. data: {
  428. account: this.username,
  429. password: this.password,
  430. captcha: this.imgcode.toLowerCase(),
  431. captchaId: this.captchaId,
  432. }
  433. }).then(res => {
  434. if (res) {
  435. return uni.showToast({
  436. title: res.msg,
  437. icon: 'none'
  438. });
  439. } else {
  440. this.openSQL(); //打开数据库
  441. this.createTable(); //创建表
  442. this.insertTableData(this.username, this.password); //新增表数据
  443. socket.init();
  444. }
  445. })
  446. }
  447. //#endif
  448. } else {
  449. // 验证码登录
  450. // 验证手机号合法性
  451. if (!this.$base.phoneRegular.test(this.phone)) {
  452. return uni.showToast({
  453. title: '请输入正确的手机号码',
  454. icon: 'none'
  455. });
  456. }
  457. this.$login({
  458. url: "/loginByPhone",
  459. data: {
  460. phone: this.phone,
  461. phoneMsg: this.checknum
  462. }
  463. }).then(res => {
  464. if (res) {
  465. return uni.showToast({
  466. title: res.msg,
  467. icon: 'none'
  468. });
  469. }
  470. // socket.init();
  471. return;
  472. })
  473. }
  474. },
  475. // 微信APP登录
  476. onWxAppLogin() {
  477. var that = this;
  478. uni.login({
  479. provider: 'weixin',
  480. onlyAuthorize: true,
  481. success: function(loginRes) {
  482. console.log(loginRes);
  483. that.codeRes(loginRes.code);
  484. },
  485. fail: (err) => {
  486. uni.showToast({
  487. title: '绑定失败',
  488. icon: "none"
  489. });
  490. console.log('login fail:', err);
  491. }
  492. });
  493. },
  494. codeRes(code) {
  495. this.$login({
  496. url: "/wechat/login",
  497. data: {
  498. code: code,
  499. }
  500. }).then(res => {
  501. return uni.showToast({
  502. title: res.msg,
  503. icon: 'none'
  504. });
  505. socket.init();
  506. return;
  507. })
  508. },
  509. // 打开数据库
  510. openSQL() {
  511. // 这个是查询有没有打开数据库
  512. let open = DB.isOpen();
  513. // if (!open) {
  514. DB.openSqlite()
  515. .then(res => {})
  516. .catch(error => {});
  517. // }
  518. },
  519. // 关闭数据库
  520. closeSQL() {
  521. // 这个是查询有没有打开数据库
  522. let open = DB.isOpen();
  523. if (open) {
  524. DB.closeSqlite()
  525. .then(res => {
  526. // this.showToast("数据库已关闭");
  527. })
  528. .catch(error => {
  529. // this.showToast("数据库关闭失败");
  530. });
  531. }
  532. },
  533. // 创建表
  534. createTable() {
  535. let open = DB.isOpen();
  536. if (open) {
  537. this.openSQL();
  538. let sql =
  539. '"id" INTEGER PRIMARY KEY AUTOINCREMENT,"username" text,"password" text,"defaultid" text,"time" text';
  540. // 创建表 DB.createTable(表名, 表的列)
  541. DB.createTable("chat", sql)
  542. .then(res => {
  543. // this.showToast("创建chat表成功");
  544. })
  545. .catch(error => {});
  546. } else {}
  547. },
  548. // 新增表数据
  549. insertTableData(user, word) {
  550. let open = DB.isOpen();
  551. if (open) {
  552. let arr = [{
  553. username: user,
  554. password: word,
  555. defaultid: user,
  556. }]
  557. arr.map(item => {
  558. let time = this.formatDate(new Date().getTime());
  559. let sql =
  560. `'${item.username}','${item.password}','${item.defaultid}','${time}'`;
  561. let condition = "'username','password','defaultid','time'";
  562. // 新增 DB.insertTableData(表名, 对应表头列的数据)
  563. DB.insertTableData("chat", sql, condition)
  564. .then(res => {
  565. this.selectTableData();
  566. })
  567. .catch(error => {});
  568. })
  569. } else {}
  570. },
  571. // 查询表数据
  572. selectTableData() {
  573. let open = DB.isOpen();
  574. if (open) {
  575. // 查询表 DB.selectTableData(表名,查询条件列名,查询条件列值)
  576. DB.selectTableData("chat")
  577. .then(res => {
  578. console.log("contact表数据", res);
  579. this.listData = res;
  580. this.username = res[0].username;
  581. this.defaultid = res[0].defaultid;
  582. this.password = res[0].password;
  583. })
  584. .catch(error => {});
  585. } else {}
  586. },
  587. // 修改表数据
  588. updateTableData() {
  589. let open = DB.isOpen();
  590. if (open) {
  591. let time = this.formatDate(new Date().getTime());
  592. let data =
  593. `username ='${this.username}',password ='${this.password}',defaultid='${this.username}'`;
  594. // 修改表数据 DB.updateTableData(表名, 要修改的列名=修改后列值, 修改条件的列名, 修改条件的列值)
  595. DB.updateTableData("chat", data)
  596. .then(res => {
  597. console.log('修改后的数据', res)
  598. this.showToast("保存成功");
  599. this.selectTableData();
  600. })
  601. .catch(error => {
  602. console.log(error)
  603. });
  604. } else {}
  605. },
  606. // 删除表数据
  607. deleteTableData() {
  608. let open = DB.isOpen();
  609. if (open) {
  610. // 删除表 DB.deleteTableData(表名,查询条件列名,查询条件列值)
  611. DB.deleteTableData("chat")
  612. .then(res => {
  613. this.selectTableData();
  614. })
  615. .catch(error => {});
  616. } else {}
  617. },
  618. // 提示框
  619. showToast: function(str) {
  620. uni.showToast({
  621. icon: "none",
  622. title: str,
  623. mask: true
  624. });
  625. },
  626. // 时间戳转年月日
  627. formatDate(data) {
  628. let now = new Date(data);
  629. var year = now.getFullYear(); //取得4位数的年份
  630. var month =
  631. now.getMonth() + 1 < 10 ?
  632. "0" + (now.getMonth() + 1) :
  633. now.getMonth() + 1;
  634. var date = now.getDate() < 10 ? "0" + now.getDate() : now.getDate();
  635. var hour = now.getHours() < 10 ? "0" + now.getHours() : now.getHours();
  636. var minute =
  637. now.getMinutes() < 10 ? "0" + now.getMinutes() : now.getMinutes();
  638. var second =
  639. now.getSeconds() < 10 ? "0" + now.getSeconds() : now.getSeconds();
  640. return (
  641. year +
  642. "-" +
  643. month +
  644. "-" +
  645. date +
  646. " " +
  647. hour +
  648. ":" +
  649. minute +
  650. ":" +
  651. second
  652. );
  653. }
  654. },
  655. //页面隐藏
  656. onHide() {},
  657. //页面卸载
  658. onUnload() {},
  659. //页面下来刷新
  660. onPullDownRefresh() {},
  661. //页面上拉触底
  662. onReachBottom() {},
  663. };
  664. </script>
  665. <style scoped>
  666. .shu1 {
  667. display: flex;
  668. flex-direction: column;
  669. justify-content: space-between;
  670. align-items: center;
  671. }
  672. .shili_btn {
  673. width: 100%;
  674. height: 90rpx;
  675. border-top: 2rpx solid #F2F2F2;
  676. }
  677. .shili_btn>view {
  678. width: 50%;
  679. height: 100%;
  680. background-color: #ffffff;
  681. cursor: pointer;
  682. }
  683. .shili_btn>view:nth-child(2) {
  684. color: #FFFFFF;
  685. background-color: #007BFF;
  686. }
  687. .shili>text:nth-child(1) {
  688. font-weight: bold;
  689. }
  690. .shili {
  691. padding: 40rpx;
  692. box-sizing: border-box;
  693. }
  694. .heng {
  695. display: flex;
  696. justify-content: space-between;
  697. align-items: center;
  698. }
  699. .heng1 {
  700. display: flex;
  701. justify-content: center;
  702. align-items: center;
  703. }
  704. /* 第三方登录Start */
  705. .third_party_login_box {
  706. position: fixed;
  707. bottom: 100rpx;
  708. left: 0;
  709. right: 0;
  710. height: 170rpx;
  711. padding: 0 30rpx;
  712. }
  713. .third_party_login_box .third_party_title {
  714. display: flex;
  715. align-items: center;
  716. }
  717. .third_party_login_box .third_party_title:before,
  718. .third_party_login_box .third_party_title:after {
  719. content: "";
  720. flex: 1;
  721. height: 2rpx;
  722. background-color: #f5f5f5;
  723. }
  724. .third_party_login_box .third_party_title text {
  725. font-size: 24rpx;
  726. color: #999999;
  727. flex-shrink: 0;
  728. padding: 0 20rpx;
  729. }
  730. .third_party_login_box .third_party_content {
  731. height: 140rpx;
  732. display: flex;
  733. justify-content: center;
  734. align-items: center;
  735. }
  736. .third_party_login_box .third_party_content image {
  737. margin: 0rpx 20rpx;
  738. width: 80rpx;
  739. height: 80rpx;
  740. }
  741. /* 第三方登录End */
  742. .yanzhengmaView1 {
  743. background: #FFFFFF;
  744. border-radius: 10rpx;
  745. width: 150rpx;
  746. padding: 5rpx 0;
  747. }
  748. .yanzhengmaView2 {
  749. background: #FFFFFF;
  750. border-radius: 10rpx;
  751. width: 220rpx;
  752. padding: 5rpx 0;
  753. }
  754. </style>