login.vue 19 KB

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