loulijun2021
2022-08-05 d33eacc1f85ac3a736b33ba4713a19aae466d711
src/views/login/index.vue
@@ -103,7 +103,7 @@
        <el-button
          :loading="loading"
          type="primary"
          style="width:100%;margin-top:20px;"
          style="width:100%;margin-top:20px;letter-spacing: 10px"
          @click.native.prevent="handleLogin"
        >登录
        </el-button>
@@ -116,11 +116,34 @@
      </el-form>
    </div>
    <el-dialog
      title="提示"
      :visible.sync="dialogVisible"
      width="500px"
      :close-on-click-modal="false"
      :show-close="false"
      top="5vh"
      class="dialogVisible"
    >
      <div style="font-size:18px;">
        <!--        <i class="el-icon-warning-outline" style="color: #ffef00" />-->
        当前账号已登录,是否强制下线!
      </div>
      <span slot="footer" class="dialog-footer">
        <div class="footerButton">
          <el-button @click="dialogVisibleCancel">否</el-button>
          <el-button type="primary" @click="dialogVisibleConfirm">是</el-button>
        </div>
      </span>
    </el-dialog>
  </div>
</template>
<script>
import { validUsername } from '@/utils/validate'
import { getCookie, removeCookie, setCookie } from '@/utils/auth'
import { ForcedOffline } from '@/api/user'
export default {
  name: 'Login',
@@ -155,8 +178,8 @@
    }
    return {
      loginForm: {
        username: '002',
        password: '123456'
        username: '',
        password: ''
      },
      loginRules: {
        username: [{ required: true, trigger: ['blur', 'change'], validator: validateUsername }],
@@ -166,7 +189,8 @@
      passwordType: 'password',
      redirect: undefined,
      focus1: false,
      focus2: false
      focus2: false,
      dialogVisible: false
    }
  },
  watch: {
@@ -193,7 +217,12 @@
        if (valid) {
          this.loading = true
          this.$store.dispatch('user/login', this.loginForm).then(() => {
            this.$router.push({ path: this.redirect || '/' })
            console.log(getCookie('code') === '302', 9999)
            if (getCookie('code') === '302') {
              this.dialogVisible = true
            } else {
              this.$router.push({ path: this.redirect || '/' })
            }
            this.loading = false
          }).catch(() => {
            this.loading = false
@@ -203,6 +232,35 @@
          return false
        }
      })
    },
    dialogVisibleCancel() {
      removeCookie('username')
      removeCookie('admin')
      removeCookie('navTabId')
      removeCookie('usertype')
      removeCookie('userid')
      removeCookie('code')
      this.dialogVisible = false
    },
    async dialogVisibleConfirm() {
      const usercode = getCookie('navTabId')
      const username = getCookie('admin')
      const usertype = getCookie('usertype')
      const userid = getCookie('userid')
      const data = {
        usercode,
        username,
        usertype,
        userid
      }
      const res = await ForcedOffline(data)
      if (res.code === '200') {
        this.$message.success('强制下线成功!')
        this.dialogVisible = false
        // this.$router.push({ path: this.redirect || '/' })
        await this.handleLogin()
      }
    }
  }
}
@@ -393,4 +451,37 @@
    -webkit-text-fill-color: #000 !important;
  }
}
::v-deep .el-dialog__title{
  color: red;
}
::v-deep .el-dialog__body {
  padding: 20px 20px !important;
}
::v-deep .el-dialog__footer {
  display: flex;
  justify-content: flex-end;
}
.footerButton {
  display: flex;
  justify-content: end;
}
::v-deep .dialogVisible .el-button--primary {
  background-color: #42b983 !important;
  height: 30px;
  display: flex;
  align-items: center;
  //border: 1px solid $main_color;
  border: none;
  padding: 0 20px;
}
::v-deep .dialogVisible .el-button--default {
  height: 30px;
  display: flex;
  align-items: center;
  padding: 0 20px;
}
</style>