layer.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516
  1. <!--<template>-->
  2. <!-- <div class="main">-->
  3. <!-- <a-form :form="form" class="user-layout-login" ref="formLogin" id="formLogin">-->
  4. <!-- <a-tabs-->
  5. <!-- :activeKey="customActiveKey"-->
  6. <!-- :tabBarStyle="{ textAlign: 'center', borderBottom: 'unset' }"-->
  7. <!-- @change="handleTabClick">-->
  8. <!-- <a-tab-pane key="tab1" tab="账号密码登录">-->
  9. <!-- <a-form-item>-->
  10. <!-- <a-input-->
  11. <!-- size="large"-->
  12. <!-- v-decorator="['username',validatorRules.username,{ validator: this.handleUsernameOrEmail }]"-->
  13. <!-- type="text"-->
  14. <!-- placeholder="请输入帐户名">-->
  15. <!-- <a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }"/>-->
  16. <!-- </a-input>-->
  17. <!-- </a-form-item>-->
  18. <!-- <a-form-item>-->
  19. <!-- <a-input-->
  20. <!-- v-decorator="['password',validatorRules.password]"-->
  21. <!-- size="large"-->
  22. <!-- type="password"-->
  23. <!-- autocomplete="false"-->
  24. <!-- placeholder="密码">-->
  25. <!-- <a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }"/>-->
  26. <!-- </a-input>-->
  27. <!-- </a-form-item>-->
  28. <!-- <a-row :gutter="0">-->
  29. <!-- <a-col :span="14">-->
  30. <!-- <a-form-item>-->
  31. <!-- <a-input-->
  32. <!-- v-decorator="['inputCode',validatorRules.inputCode]"-->
  33. <!-- size="large"-->
  34. <!-- type="text"-->
  35. <!-- @change="inputCodeChange"-->
  36. <!-- placeholder="请输入验证码">-->
  37. <!-- <a-icon slot="prefix" v-if=" inputCodeContent==verifiedCode " type="smile"-->
  38. <!-- :style="{ color: 'rgba(0,0,0,.25)' }"/>-->
  39. <!-- <a-icon slot="prefix" v-else type="frown" :style="{ color: 'rgba(0,0,0,.25)' }"/>-->
  40. <!-- </a-input>-->
  41. <!-- </a-form-item>-->
  42. <!-- </a-col>-->
  43. <!-- <a-col :span="10">-->
  44. <!-- <j-graphic-code @success="generateCode" style="float: right"></j-graphic-code>-->
  45. <!-- </a-col>-->
  46. <!-- </a-row>-->
  47. <!-- </a-tab-pane>-->
  48. <!-- <a-tab-pane key="tab2" tab="手机号登录">-->
  49. <!-- <a-form-item>-->
  50. <!-- <a-input-->
  51. <!-- v-decorator="['mobile',validatorRules.mobile]"-->
  52. <!-- size="large"-->
  53. <!-- type="text"-->
  54. <!-- placeholder="手机号">-->
  55. <!-- <a-icon slot="prefix" type="mobile" :style="{ color: 'rgba(0,0,0,.25)' }"/>-->
  56. <!-- </a-input>-->
  57. <!-- </a-form-item>-->
  58. <!-- <a-row :gutter="16">-->
  59. <!-- <a-col class="gutter-row" :span="16">-->
  60. <!-- <a-form-item>-->
  61. <!-- <a-input-->
  62. <!-- v-decorator="['captcha',validatorRules.captcha]"-->
  63. <!-- size="large"-->
  64. <!-- type="text"-->
  65. <!-- placeholder="请输入验证码">-->
  66. <!-- <a-icon slot="prefix" type="mail" :style="{ color: 'rgba(0,0,0,.25)' }"/>-->
  67. <!-- </a-input>-->
  68. <!-- </a-form-item>-->
  69. <!-- </a-col>-->
  70. <!-- <a-col class="gutter-row" :span="8">-->
  71. <!-- <a-button-->
  72. <!-- class="getCaptcha"-->
  73. <!-- tabindex="-1"-->
  74. <!-- :disabled="state.smsSendBtn"-->
  75. <!-- @click.stop.prevent="getCaptcha"-->
  76. <!-- v-text="!state.smsSendBtn && '获取验证码' || (state.time+' s')"></a-button>-->
  77. <!-- </a-col>-->
  78. <!-- </a-row>-->
  79. <!-- </a-tab-pane>-->
  80. <!-- </a-tabs>-->
  81. <!-- <a-form-item>-->
  82. <!-- <a-checkbox v-model="formLogin.rememberMe">自动登录</a-checkbox>-->
  83. <!-- <router-link :to="{ name: 'alteration'}" class="forge-password" style="float: right;">-->
  84. <!-- 忘记密码-->
  85. <!-- </router-link>-->
  86. <!-- &lt;!&ndash;-->
  87. <!-- <router-link :to="{ name: 'register'}" class="forge-password" style="float: right;margin-right: 10px" >-->
  88. <!-- 注册账户-->
  89. <!-- </router-link>-->
  90. <!-- &ndash;&gt;-->
  91. <!-- </a-form-item>-->
  92. <!-- <a-form-item style="margin-top:24px">-->
  93. <!-- <a-button-->
  94. <!-- size="large"-->
  95. <!-- type="primary"-->
  96. <!-- htmlType="submit"-->
  97. <!-- class="login-button"-->
  98. <!-- :loading="loginBtn"-->
  99. <!-- @click.stop.prevent="handleSubmit"-->
  100. <!-- :disabled="loginBtn">确定-->
  101. <!-- </a-button>-->
  102. <!-- </a-form-item>-->
  103. <!-- &lt;!&ndash; <div class="user-login-other">-->
  104. <!-- <span>其他登录方式</span>-->
  105. <!-- <a><a-icon class="item-icon" type="alipay-circle"></a-icon></a>-->
  106. <!-- <a><a-icon class="item-icon" type="taobao-circle"></a-icon></a>-->
  107. <!-- <a><a-icon class="item-icon" type="weibo-circle"></a-icon></a>-->
  108. <!-- <router-link class="register" :to="{ name: 'register' }">-->
  109. <!-- 注册账户-->
  110. <!-- </router-link>-->
  111. <!-- </div>&ndash;&gt;-->
  112. <!-- </a-form>-->
  113. <!-- <two-step-captcha-->
  114. <!-- v-if="requiredTwoStepCaptcha"-->
  115. <!-- :visible="stepCaptchaVisible"-->
  116. <!-- @success="stepCaptchaSuccess"-->
  117. <!-- @cancel="stepCaptchaCancel"></two-step-captcha>-->
  118. <!-- <a-modal-->
  119. <!-- title="登录部门选择"-->
  120. <!-- :width="450"-->
  121. <!-- :visible="departVisible"-->
  122. <!-- :closable="false"-->
  123. <!-- :maskClosable="false">-->
  124. <!-- <template slot="footer">-->
  125. <!-- <a-button type="primary" @click="departOk">确认</a-button>-->
  126. <!-- </template>-->
  127. <!-- <a-form>-->
  128. <!-- <a-form-item-->
  129. <!-- :labelCol="{span:4}"-->
  130. <!-- :wrapperCol="{span:20}"-->
  131. <!-- style="margin-bottom:10px"-->
  132. <!-- :validate-status="validate_status">-->
  133. <!-- <a-tooltip placement="topLeft">-->
  134. <!-- <template slot="title">-->
  135. <!-- <span>您隶属于多部门,请选择登录部门</span>-->
  136. <!-- </template>-->
  137. <!-- <a-avatar style="backgroundColor:#87d068" icon="gold"/>-->
  138. <!-- </a-tooltip>-->
  139. <!-- <a-select @change="departChange" :class="{'valid-error':validate_status=='error'}" placeholder="请选择登录部门"-->
  140. <!-- style="margin-left:10px;width: 80%">-->
  141. <!-- <a-icon slot="suffixIcon" type="gold"/>-->
  142. <!-- <a-select-option-->
  143. <!-- v-for="d in departList"-->
  144. <!-- :key="d.id"-->
  145. <!-- :value="d.orgCode">-->
  146. <!-- {{ d.departName }}-->
  147. <!-- </a-select-option>-->
  148. <!-- </a-select>-->
  149. <!-- </a-form-item>-->
  150. <!-- </a-form>-->
  151. <!-- </a-modal>-->
  152. <!-- </div>-->
  153. <!--</template>-->
  154. <!--<script>-->
  155. <!-- //import md5 from "md5"-->
  156. <!-- import api from '@/api'-->
  157. <!-- import TwoStepCaptcha from '@/components/tools/TwoStepCaptcha'-->
  158. <!-- import {mapActions} from "vuex"-->
  159. <!-- import {timeFix} from "@/utils/util"-->
  160. <!-- import Vue from 'vue'-->
  161. <!-- import {ACCESS_TOKEN} from "@/store/mutation-types"-->
  162. <!-- import JGraphicCode from '@/components/jeecg/JGraphicCode'-->
  163. <!-- import {putAction} from '@/api/manage'-->
  164. <!-- import {postAction} from '@/api/manage'-->
  165. <!-- import {getAction} from '@/api/manage'-->
  166. <!-- import {encryption} from '@/utils/encryption/aesEncrypt'-->
  167. <!-- import layer from 'vue-layer'-->
  168. <!-- export default {-->
  169. <!-- components: {-->
  170. <!-- TwoStepCaptcha,-->
  171. <!-- JGraphicCode-->
  172. <!-- },-->
  173. <!-- data() {-->
  174. <!-- return {-->
  175. <!-- customActiveKey: "tab1",-->
  176. <!-- loginBtn: false,-->
  177. <!-- // login type: 0 email, 1 username, 2 telephone-->
  178. <!-- loginType: 0,-->
  179. <!-- requiredTwoStepCaptcha: false,-->
  180. <!-- stepCaptchaVisible: false,-->
  181. <!-- form: this.$form.createForm(this),-->
  182. <!-- state: {-->
  183. <!-- time: 60,-->
  184. <!-- smsSendBtn: false,-->
  185. <!-- },-->
  186. <!-- formLogin: {-->
  187. <!-- username: "",-->
  188. <!-- password: "",-->
  189. <!-- captcha: "",-->
  190. <!-- mobile: "",-->
  191. <!-- rememberMe: true-->
  192. <!-- },-->
  193. <!-- validatorRules: {-->
  194. <!-- username: {rules: [{required: true, message: '请输入用户名!', validator: 'click'}]},-->
  195. <!-- password: {rules: [{required: true, message: '请输入密码!', validator: 'click'}]},-->
  196. <!-- mobile: {rules: [{validator: this.validateMobile}]},-->
  197. <!-- captcha: {rule: [{required: true, message: '请输入验证码!'}]},-->
  198. <!-- inputCode: {rules: [{required: true, message: '请输入验证码!'}, {validator: this.validateInputCode}]}-->
  199. <!-- },-->
  200. <!-- verifiedCode: "",-->
  201. <!-- inputCodeContent: "",-->
  202. <!-- inputCodeNull: true,-->
  203. <!-- departList: [],-->
  204. <!-- departVisible: false,-->
  205. <!-- departSelected: "",-->
  206. <!-- currentUsername: "",-->
  207. <!-- validate_status: ""-->
  208. <!-- }-->
  209. <!-- },-->
  210. <!-- created() {-->
  211. <!-- this.layer.alert('找不到对象');-->
  212. <!-- Vue.ls.remove(ACCESS_TOKEN)-->
  213. <!-- this.getRouterData();-->
  214. <!-- // update-begin- -&#45;&#45; author:scott &#45;&#45;&#45;&#45;&#45;&#45; date:20190225 &#45;&#45;&#45;&#45; for:暂时注释,未实现登录验证码功能-->
  215. <!--// this.$http.get('/auth/2step-code')-->
  216. <!--// .then(res => {-->
  217. <!--// this.requiredTwoStepCaptcha = res.result.stepCode-->
  218. <!--// }).catch(err => {-->
  219. <!--// console.log('2step-code:', err)-->
  220. <!--// })-->
  221. <!-- // update-end- -&#45;&#45; author:scott &#45;&#45;&#45;&#45;&#45;&#45; date:20190225 &#45;&#45;&#45;&#45; for:暂时注释,未实现登录验证码功能-->
  222. <!-- // this.requiredTwoStepCaptcha = true-->
  223. <!-- },-->
  224. <!-- methods: {-->
  225. <!-- ...mapActions(["Login", "Logout", "PhoneLogin"]),-->
  226. <!-- // handler-->
  227. <!-- handleUsernameOrEmail(rule, value, callback) {-->
  228. <!-- const regex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;-->
  229. <!-- if (regex.test(value)) {-->
  230. <!-- this.loginType = 0-->
  231. <!-- } else {-->
  232. <!-- this.loginType = 1-->
  233. <!-- }-->
  234. <!-- callback()-->
  235. <!-- },-->
  236. <!-- handleTabClick(key) {-->
  237. <!-- this.customActiveKey = key-->
  238. <!-- // this.form.resetFields()-->
  239. <!-- },-->
  240. <!-- handleSubmit() {-->
  241. <!-- let that = this-->
  242. <!-- let loginParams = {-->
  243. <!-- remember_me: that.formLogin.rememberMe-->
  244. <!-- };-->
  245. <!-- // 使用账户密码登录-->
  246. <!-- if (that.customActiveKey === 'tab1') {-->
  247. <!-- that.form.validateFields(['username', 'password', 'inputCode'], {force: true}, (err, values) => {-->
  248. <!-- if (!err) {-->
  249. <!-- getAction("/sys/getEncryptedString", {}).then((res) => {-->
  250. <!-- loginParams.username = values.username-->
  251. <!-- //loginParams.password = md5(values.password)-->
  252. <!-- loginParams.password = encryption(values.password, res.result.key, res.result.iv)-->
  253. <!-- that.Login(loginParams).then((res) => {-->
  254. <!-- this.departConfirm(res)-->
  255. <!-- }).catch((err) => {-->
  256. <!-- that.requestFailed(err);-->
  257. <!-- })-->
  258. <!-- }).catch((err) => {-->
  259. <!-- that.requestFailed(err);-->
  260. <!-- });-->
  261. <!-- }-->
  262. <!-- })-->
  263. <!-- // 使用手机号登录-->
  264. <!-- } else {-->
  265. <!-- that.form.validateFields(['mobile', 'captcha'], {force: true}, (err, values) => {-->
  266. <!-- if (!err) {-->
  267. <!-- loginParams.mobile = values.mobile-->
  268. <!-- loginParams.captcha = values.captcha-->
  269. <!-- that.PhoneLogin(loginParams).then((res) => {-->
  270. <!-- console.log(res.result);-->
  271. <!-- this.departConfirm(res)-->
  272. <!-- }).catch((err) => {-->
  273. <!-- that.requestFailed(err);-->
  274. <!-- })-->
  275. <!-- }-->
  276. <!-- })-->
  277. <!-- }-->
  278. <!-- },-->
  279. <!-- getCaptcha(e) {-->
  280. <!-- e.preventDefault();-->
  281. <!-- let that = this;-->
  282. <!-- this.form.validateFields(['mobile'], {force: true}, (err, values) => {-->
  283. <!-- if (!values.mobile) {-->
  284. <!-- that.cmsFailed("请输入手机号");-->
  285. <!-- } else if (!err) {-->
  286. <!-- this.state.smsSendBtn = true;-->
  287. <!-- let interval = window.setInterval(() => {-->
  288. <!-- if (that.state.time&#45;&#45; <= 0) {-->
  289. <!-- that.state.time = 60;-->
  290. <!-- that.state.smsSendBtn = false;-->
  291. <!-- window.clearInterval(interval);-->
  292. <!-- }-->
  293. <!-- }, 1000);-->
  294. <!-- const hide = this.$message.loading('验证码发送中..', 0);-->
  295. <!-- let smsParams = {};-->
  296. <!-- smsParams.mobile = values.mobile;-->
  297. <!-- smsParams.smsmode = "0";-->
  298. <!-- postAction("/sys/sms", smsParams)-->
  299. <!-- .then(res => {-->
  300. <!-- if (!res.success) {-->
  301. <!-- setTimeout(hide, 0);-->
  302. <!-- this.cmsFailed(res.message);-->
  303. <!-- }-->
  304. <!-- console.log(res);-->
  305. <!-- setTimeout(hide, 500);-->
  306. <!-- })-->
  307. <!-- .catch(err => {-->
  308. <!-- setTimeout(hide, 1);-->
  309. <!-- clearInterval(interval);-->
  310. <!-- that.state.time = 60;-->
  311. <!-- that.state.smsSendBtn = false;-->
  312. <!-- this.requestFailed(err);-->
  313. <!-- });-->
  314. <!-- }-->
  315. <!-- }-->
  316. <!-- );-->
  317. <!-- },-->
  318. <!-- stepCaptchaSuccess() {-->
  319. <!-- this.loginSuccess()-->
  320. <!-- },-->
  321. <!-- stepCaptchaCancel() {-->
  322. <!-- this.Logout().then(() => {-->
  323. <!-- this.loginBtn = false-->
  324. <!-- this.stepCaptchaVisible = false-->
  325. <!-- })-->
  326. <!-- },-->
  327. <!-- loginSuccess() {-->
  328. <!-- this.loginBtn = false-->
  329. <!-- this.$router.push({name: "dashboard"})-->
  330. <!-- this.$notification.success({-->
  331. <!-- message: '欢迎',-->
  332. <!-- description: `${timeFix()},欢迎回来`,-->
  333. <!-- });-->
  334. <!-- },-->
  335. <!-- cmsFailed(err) {-->
  336. <!-- this.$notification['error']({-->
  337. <!-- message: "登录失败",-->
  338. <!-- description: err,-->
  339. <!-- duration: 4,-->
  340. <!-- });-->
  341. <!-- },-->
  342. <!-- requestFailed(err) {-->
  343. <!-- this.$notification['error']({-->
  344. <!-- message: '登录失败',-->
  345. <!-- description: ((err.response || {}).data || {}).message || err.message || "请求出现错误,请稍后再试",-->
  346. <!-- duration: 4,-->
  347. <!-- });-->
  348. <!-- this.loginBtn = false;-->
  349. <!-- },-->
  350. <!-- validateMobile(rule, value, callback) {-->
  351. <!-- if (!value || new RegExp(/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$/).test(value)) {-->
  352. <!-- callback();-->
  353. <!-- } else {-->
  354. <!-- callback("您的手机号码格式不正确!");-->
  355. <!-- }-->
  356. <!-- },-->
  357. <!-- validateInputCode(rule, value, callback) {-->
  358. <!-- if (!value || this.verifiedCode == this.inputCodeContent) {-->
  359. <!-- callback();-->
  360. <!-- } else {-->
  361. <!-- callback("您输入的验证码不正确!");-->
  362. <!-- }-->
  363. <!-- },-->
  364. <!-- generateCode(value) {-->
  365. <!-- this.verifiedCode = value.toLowerCase()-->
  366. <!-- },-->
  367. <!-- inputCodeChange(e) {-->
  368. <!-- this.inputCodeContent = e.target.value-->
  369. <!-- if (!e.target.value || 0 == e.target.value) {-->
  370. <!-- this.inputCodeNull = true-->
  371. <!-- } else {-->
  372. <!-- this.inputCodeContent = this.inputCodeContent.toLowerCase()-->
  373. <!-- this.inputCodeNull = false-->
  374. <!-- }-->
  375. <!-- },-->
  376. <!-- departConfirm(res) {-->
  377. <!-- if (res.success) {-->
  378. <!-- let multi_depart = res.result.multi_depart-->
  379. <!-- //0:无部门 1:一个部门 2:多个部门-->
  380. <!-- if (multi_depart == 0) {-->
  381. <!-- this.loginSuccess()-->
  382. <!-- this.$notification.warn({-->
  383. <!-- message: '提示',-->
  384. <!-- description: `您尚未归属部门,请确认账号信息`,-->
  385. <!-- duration: 3-->
  386. <!-- });-->
  387. <!-- } else if (multi_depart == 2) {-->
  388. <!-- this.departVisible = true-->
  389. <!-- this.currentUsername = this.form.getFieldValue("username")-->
  390. <!-- this.departList = res.result.departs-->
  391. <!-- } else {-->
  392. <!-- this.loginSuccess()-->
  393. <!-- }-->
  394. <!-- } else {-->
  395. <!-- this.requestFailed(res)-->
  396. <!-- this.Logout();-->
  397. <!-- }-->
  398. <!-- },-->
  399. <!-- departOk() {-->
  400. <!-- if (!this.departSelected) {-->
  401. <!-- this.validate_status = 'error'-->
  402. <!-- return false-->
  403. <!-- }-->
  404. <!-- let obj = {-->
  405. <!-- orgCode: this.departSelected,-->
  406. <!-- username: this.form.getFieldValue("username")-->
  407. <!-- }-->
  408. <!-- putAction("/sys/selectDepart", obj).then(res => {-->
  409. <!-- if (res.success) {-->
  410. <!-- this.departClear()-->
  411. <!-- this.loginSuccess()-->
  412. <!-- } else {-->
  413. <!-- this.requestFailed(res)-->
  414. <!-- this.Logout().then(() => {-->
  415. <!-- this.departClear()-->
  416. <!-- });-->
  417. <!-- }-->
  418. <!-- })-->
  419. <!-- },-->
  420. <!-- departClear() {-->
  421. <!-- this.departList = []-->
  422. <!-- this.departSelected = ""-->
  423. <!-- this.currentUsername = ""-->
  424. <!-- this.departVisible = false-->
  425. <!-- this.validate_status = ''-->
  426. <!-- },-->
  427. <!-- departChange(value) {-->
  428. <!-- this.validate_status = 'success'-->
  429. <!-- this.departSelected = value-->
  430. <!-- },-->
  431. <!-- getRouterData() {-->
  432. <!-- this.$nextTick(() => {-->
  433. <!-- this.form.setFieldsValue({-->
  434. <!-- 'username': this.$route.params.username-->
  435. <!-- });-->
  436. <!-- })-->
  437. <!-- },-->
  438. <!-- }-->
  439. <!-- }-->
  440. <!--</script>-->
  441. <!--<style lang="scss" scoped>-->
  442. <!-- .user-layout-login {-->
  443. <!-- label {-->
  444. <!-- font-size: 14px;-->
  445. <!-- }-->
  446. <!-- .getCaptcha {-->
  447. <!-- display: block;-->
  448. <!-- width: 100%;-->
  449. <!-- height: 40px;-->
  450. <!-- }-->
  451. <!-- .forge-password {-->
  452. <!-- font-size: 14px;-->
  453. <!-- }-->
  454. <!-- button.login-button {-->
  455. <!-- padding: 0 15px;-->
  456. <!-- font-size: 16px;-->
  457. <!-- height: 40px;-->
  458. <!-- width: 100%;-->
  459. <!-- }-->
  460. <!-- .user-login-other {-->
  461. <!-- text-align: left;-->
  462. <!-- margin-top: 24px;-->
  463. <!-- line-height: 22px;-->
  464. <!-- .item-icon {-->
  465. <!-- font-size: 24px;-->
  466. <!-- color: rgba(0, 0, 0, .2);-->
  467. <!-- margin-left: 16px;-->
  468. <!-- vertical-align: middle;-->
  469. <!-- cursor: pointer;-->
  470. <!-- transition: color .3s;-->
  471. <!-- &:hover {-->
  472. <!-- color: #1890ff;-->
  473. <!-- }-->
  474. <!-- }-->
  475. <!-- .register {-->
  476. <!-- float: right;-->
  477. <!-- }-->
  478. <!-- }-->
  479. <!-- }-->
  480. <!--</style>-->
  481. <!--<style>-->
  482. <!-- .valid-error .ant-select-selection__placeholder {-->
  483. <!-- color: #f5222d;-->
  484. <!-- }-->
  485. <!--</style>-->