178 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
<template>
 | 
						|
  <div style="display: flex;justify-content: center">
 | 
						|
    <div style="width: 600px;text-align: center;border: 1px solid #e6e6e6;margin-top:40px;padding:10px;">
 | 
						|
      <div class="trial-myinfo-head" style="font-size: 30px;line-height: 120px;">
 | 
						|
        <!-- 首次登录修改密码 -->
 | 
						|
        {{ $t('recompose:title:init') }}
 | 
						|
      </div>
 | 
						|
      <el-form ref="passwordForm" v-loading="loading" label-position="right" :model="password" :rules="passwordFormRules" label-width="180px">
 | 
						|
        <!-- 邮箱 -->
 | 
						|
        <el-form-item :label="$t('recompose:form:email')" prop="Email">
 | 
						|
          <el-input v-model="password.Email" disabled />
 | 
						|
        </el-form-item>
 | 
						|
        <!-- 用户名 -->
 | 
						|
        <el-form-item :label="$t('recompose:form:role')" prop="UserType">
 | 
						|
          <el-input v-model="password.UserType" disabled />
 | 
						|
        </el-form-item>
 | 
						|
        <!-- 用户名 -->
 | 
						|
        <el-form-item :label="$t('recompose:form:userName')" prop="NewUserName">
 | 
						|
          <el-input v-model="password.NewUserName" />
 | 
						|
        </el-form-item>
 | 
						|
        <!-- 新密码 -->
 | 
						|
        <el-form-item :label="$t('recompose:form:newPassword')" prop="NewPassWord">
 | 
						|
          <el-input v-model="password.NewPassWord" type="password" show-password auto-complete="new-password" />
 | 
						|
        </el-form-item>
 | 
						|
        <!-- 确认密码 -->
 | 
						|
        <el-form-item :label="$t('recompose:form:confirmPassword')" prop="ConfirmPassWord">
 | 
						|
          <el-input v-model="password.ConfirmPassWord" type="password" show-password auto-complete="new-password" />
 | 
						|
        </el-form-item>
 | 
						|
        <el-form-item style="text-align:right">
 | 
						|
          <!-- 取消 -->
 | 
						|
          <el-button
 | 
						|
            size="small"
 | 
						|
            @click="cancel"
 | 
						|
          >
 | 
						|
            {{ $t('recompose:button:cancel') }}
 | 
						|
          </el-button>
 | 
						|
          <!-- 保存 -->
 | 
						|
          <el-button
 | 
						|
            type="primary"
 | 
						|
            size="small"
 | 
						|
            @click="save"
 | 
						|
          >
 | 
						|
            {{ $t('recompose:button:save') }}
 | 
						|
          </el-button>
 | 
						|
        </el-form-item>
 | 
						|
      </el-form>
 | 
						|
 | 
						|
    </div>
 | 
						|
  </div>
 | 
						|
</template>
 | 
						|
<script>
 | 
						|
import { initSetUserNameAndPwd } from '@/api/admin.js'
 | 
						|
import md5 from 'js-md5'
 | 
						|
import {mapGetters, mapMutations} from "vuex";
 | 
						|
export default {
 | 
						|
  data() {
 | 
						|
    return {
 | 
						|
      password: {
 | 
						|
        NewUserName: null,
 | 
						|
        UserId: null
 | 
						|
      },
 | 
						|
      passwordFormRules: {
 | 
						|
        NewUserName: [{ required: true, validator: (rule, value, callback) => {!value ? callback(new Error(this.$t('trials:researchForm:formRule:specify'))) : callback()}, trigger: 'blur' }],
 | 
						|
        NewPassWord: [
 | 
						|
          { required: true, validator: (rule, value, callback) => {!value ? callback(new Error(this.$t('trials:researchForm:formRule:specify'))) : callback()}, trigger: 'blur' },
 | 
						|
          {
 | 
						|
            required: true,
 | 
						|
            trigger: 'blur',
 | 
						|
            validator: this.$validatePassword
 | 
						|
          },
 | 
						|
        ],
 | 
						|
        ConfirmPassWord: [
 | 
						|
          { required: true, validator: (rule, value, callback) => {!value ? callback(new Error(this.$t('trials:researchForm:formRule:specify'))) : callback()}, trigger: 'blur' }
 | 
						|
        ]
 | 
						|
      },
 | 
						|
      userId: null,
 | 
						|
      loading: false
 | 
						|
    }
 | 
						|
  },
 | 
						|
  computed: {
 | 
						|
    ...mapGetters([
 | 
						|
      'asyncRoutes',
 | 
						|
      'routes',
 | 
						|
      'language'
 | 
						|
    ])
 | 
						|
  },
 | 
						|
  mounted() {
 | 
						|
    this.password.UserId = this.$route.query.UserId
 | 
						|
    this.password.NewUserName = this.$route.query.UserName
 | 
						|
    this.password.Email = this.$route.query.Email
 | 
						|
    this.password.UserType = this.$route.query.UserType
 | 
						|
    this.password.access_token = this.$route.query.access_token
 | 
						|
    this.$i18n.locale = this.$route.query.lang
 | 
						|
    this.setLanguage(this.$route.query.lang)
 | 
						|
    this.$updateDictionary()
 | 
						|
    if (!this.password.NewUserName) {
 | 
						|
      this.$alert(this.$t('recompose:message:warning'))
 | 
						|
    }
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
    ...mapMutations({ setLanguage: 'lang/setLanguage' }),
 | 
						|
    async logout() {
 | 
						|
      var loginType = zzSessionStorage.getItem('loginType')
 | 
						|
      await this.$store.dispatch('user/logout')
 | 
						|
      if (loginType) {
 | 
						|
        this.$router.push(`/login?loginType=${loginType}`)
 | 
						|
      } else {
 | 
						|
        this.$router.push(`/login`)
 | 
						|
      }
 | 
						|
      this.$i18n.locale = 'zh'
 | 
						|
      this.setLanguage('zh')
 | 
						|
      this.$updateDictionary()
 | 
						|
    },
 | 
						|
    save() {
 | 
						|
      this.$refs.passwordForm.validate(valid => {
 | 
						|
        if (valid) {
 | 
						|
          if (this.password.NewPassWord !== this.password.ConfirmPassWord) {
 | 
						|
            // 两次密码输入不一致
 | 
						|
            this.$alert(this.$t('recompose:message:passwordDiffer'))
 | 
						|
            return
 | 
						|
          }
 | 
						|
          const param = {
 | 
						|
            NewUserName: this.password.NewUserName,
 | 
						|
            UserId: this.password.UserId,
 | 
						|
            NewPwd: md5(this.password.NewPassWord),
 | 
						|
            access_token: this.password.access_token
 | 
						|
          }
 | 
						|
          this.loading = true
 | 
						|
          initSetUserNameAndPwd(param).then(res => {
 | 
						|
            this.loading = false
 | 
						|
            if (res.IsSuccess) {
 | 
						|
              // 修改成功,请重新登录账号
 | 
						|
              this.$message.success(this.$t('recompose:message:updatedSuccessfully'))
 | 
						|
              setTimeout(() => {
 | 
						|
                this.logout()
 | 
						|
              }, 500)
 | 
						|
            }
 | 
						|
          }).catch(() => { this.loading = false })
 | 
						|
        }
 | 
						|
      })
 | 
						|
    },
 | 
						|
    cancel() {
 | 
						|
      this.$refs['passwordForm'].resetFields()
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
</script>
 | 
						|
<style>
 | 
						|
.reset-wrapper {
 | 
						|
  padding: 20px;
 | 
						|
}
 | 
						|
.reset-wrapper .el-page-header {
 | 
						|
  line-height: 50px;
 | 
						|
  border: 1px solid #ebeef5;
 | 
						|
  border-radius: 4px;
 | 
						|
  background-color: #fff;
 | 
						|
}
 | 
						|
.reset-wrapper .box-wrapper {
 | 
						|
  width: 60%;
 | 
						|
  margin: 20px auto;
 | 
						|
  padding: 10px;
 | 
						|
  color: #303133;
 | 
						|
}
 | 
						|
</style>
 | 
						|
<style scoped>
 | 
						|
input:-webkit-autofill {
 | 
						|
  -webkit-text-fill-color: #ededed !important;
 | 
						|
  box-shadow: 0 0 0px 1000px transparent  inset !important;
 | 
						|
  background-color:transparent;
 | 
						|
  background-image: none;
 | 
						|
  transition: background-color 50000s ease-in-out 0s;
 | 
						|
}
 | 
						|
input {
 | 
						|
  background-color:transparent;
 | 
						|
  caret-color: #fff;
 | 
						|
}
 | 
						|
</style>
 |