Blame view

jeecg-boot-master/ant-design-vue-jeecg/src/views/user/LoginAccount.vue 5.73 KB
肖超群 authored
1
2
3
4
<template>
    <div>
      <a-form-model ref="form" :model="model" :rules="validatorRules">
        <a-form-model-item required prop="username">
5
          <a-input v-model="model.username" size="large" placeholder="请输入帐户名 / admin"  @keyup="getWarehouse">
肖超群 authored
6
7
8
9
10
11
12
13
14
            <a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }"/>
          </a-input>
        </a-form-model-item>
        <a-form-model-item required prop="password">
          <a-input v-model="model.password" size="large" type="password" autocomplete="false" placeholder="请输入密码 / 123456">
            <a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }"/>
          </a-input>
        </a-form-model-item>
15
        <a-form-model-item required prop="warehouseCode">
16
17
18
19
          <a-select
            show-search
            placeholder="请选择仓库"
            option-filter-prop="children"
20
            v-model="model.warehouseCode"
21
22
23
          >
            <a-select-option  v-for="item in warehouseList" :key="item.name" :value="item.code">{{ item.name }}</a-select-option>
          </a-select>
24
        </a-form-model-item>
25
肖超群 authored
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!--        <a-row :gutter="0">-->
<!--          <a-col :span="16">-->
<!--            <a-form-model-item required prop="inputCode">-->
<!--              <a-input v-model="model.inputCode" size="large" type="text" placeholder="请输入验证码">-->
<!--                <a-icon slot="prefix" type="smile" :style="{ color: 'rgba(0,0,0,.25)' }"/>-->
<!--              </a-input>-->
<!--            </a-form-model-item>-->
<!--          </a-col>-->
<!--          <a-col :span="8" style="text-align: right">-->
<!--            <img v-if="requestCodeSuccess" style="margin-top: 2px;" :src="randCodeImage" @click="handleChangeCheckCode"/>-->
<!--            <img v-else style="margin-top: 2px;" src="../../assets/checkcode.png" @click="handleChangeCheckCode"/>-->
<!--          </a-col>-->
<!--        </a-row>-->
      </a-form-model>
    </div>
</template>

<script>
  import { getAction } from '@/api/manage'
  import Vue from 'vue'
  import { mapActions } from 'vuex'
47
  import {getWarehouseByUserCode} from '@/api/api'
肖超群 authored
48
49
50
51
52
53
54
55
56

  export default {
    name: 'LoginAccount',
    data(){
      return {
        requestCodeSuccess: false,
        randCodeImage: '',
        currdatetime: '',
        loginType: 0,
57
58
        warehouseList: {},
        querySource:{},
肖超群 authored
59
60
61
        model:{
          username: '',
          password: '',
62
          warehouseCode: '',
肖超群 authored
63
          // inputCode: ''
肖超群 authored
64
65
66
67
68
69
70
71
72
        },
        validatorRules:{
          username: [
            { required: true, message: '请输入用户名!' },
            { validator: this.handleUsernameOrEmail }
          ],
          password: [{
            required: true, message: '请输入密码!', validator: 'click'
          }],
73
          warehouseCode:  [{ required: true, message: '请选择仓库' , validator: 'click'}] ,
肖超群 authored
74
75
76
          // inputCode: [{
          //   required: true, message: '请输入验证码!'
          // }]
肖超群 authored
77
78
79
80
81
82
        }

      }
    },
    created() {
      this.handleChangeCheckCode();
83
      this.getWarehouse();
肖超群 authored
84
    },
85
肖超群 authored
86
87
88
89
90
    methods:{
      ...mapActions(['Login']),
      /**刷新验证码*/
      handleChangeCheckCode(){
        this.currdatetime = new Date().getTime();
肖超群 authored
91
        // this.model.inputCode = ''
肖超群 authored
92
93
94
95
96
97
98
99
100
101
102
103
        getAction(`/sys/randomImage/${this.currdatetime}`).then(res=>{
          if(res.success){
            this.randCodeImage = res.result
            this.requestCodeSuccess=true
          }else{
            this.$message.error(res.message)
            this.requestCodeSuccess=false
          }
        }).catch(()=>{
          this.requestCodeSuccess=false
        })
      },
104
105
106
107
108
109
110
111
112
113
114
115
116
117


      getWarehouse() {
        const that = this;
        this.querySource.username = that.model.username;
        let obj = getWarehouseByUserCode(that.querySource);
        obj.then((res) => {
          that.warehouseList = res.result;
          if (res.code != 200) {
            that.warehouseList = {};
          }
        })
      },
肖超群 authored
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
      // 判断登录类型
      handleUsernameOrEmail (rule, value, callback) {
        const regex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
        if (regex.test(value)) {
          this.loginType = 0
        } else {
          this.loginType = 1
        }
        callback()
      },
      /**
       * 验证字段
       * @param arr
       * @param callback
       */
      validateFields(arr, callback){
        let promiseArray = []
        for(let item of arr){
          let p = new Promise((resolve, reject) => {
            this.$refs['form'].validateField(item, (err)=>{
              if(!err){
                resolve();
              }else{
                reject(err);
              }
            })
          });
          promiseArray.push(p)
        }
        Promise.all(promiseArray).then(()=>{
          callback()
        }).catch(err=>{
          callback(err)
        })
      },
      acceptUsername(username){
        this.model['username'] = username
      },
      //账号密码登录
      handleLogin(rememberMe){
肖超群 authored
158
        this.validateFields([ 'username', 'password' ], (err)=>{
肖超群 authored
159
160
161
162
          if(!err){
            let loginParams = {
              username: this.model.username,
              password: this.model.password,
163
              warehouseCode: this.model.warehouseCode,
肖超群 authored
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
              checkKey: this.currdatetime,
              remember_me: rememberMe,
            }
            console.log("登录参数", loginParams)
            this.Login(loginParams).then((res) => {
              this.$emit('success', res.result)
            }).catch((err) => {
              this.$emit('fail', err)
            });
          }else{
            this.$emit('validateFail')
          }
        })
      }


    }

  }
</script>

<style scoped>

</style>