医院及用户接口调试
parent
75a8d2c869
commit
1949b1f662
|
@ -0,0 +1,18 @@
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 获取医院信息
|
||||||
|
export function getHospital() {
|
||||||
|
return request({
|
||||||
|
url: '/Patient/getHospitalInfo',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增或编辑医院信息
|
||||||
|
export function setHospital(data) {
|
||||||
|
return request({
|
||||||
|
url: '/Patient/updateHospitalInfo',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
|
@ -13,42 +13,69 @@
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
<!-- 用户类型 -->
|
<!-- 用户类型 -->
|
||||||
<el-form-item v-if="form.UserId" :label="$t('passwordReset:form:userType')">
|
<el-form-item
|
||||||
|
v-if="form.UserId"
|
||||||
|
:label="$t('passwordReset:form:userType')"
|
||||||
|
>
|
||||||
<el-input v-model="form.UserType" disabled />
|
<el-input v-model="form.UserType" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 邮箱 -->
|
<!-- 邮箱 -->
|
||||||
<el-form-item :label="$t('passwordReset:form:email')" prop="EmailOrPhone">
|
<el-form-item
|
||||||
<!-- <el-input v-model="form.EmailOrPhone" autocomplete="off" @change="handleEmailChange" /> -->
|
:label="$t('passwordReset:form:email')"
|
||||||
<el-col :span="18">
|
prop="EmailOrPhone"
|
||||||
<el-input v-model="form.EmailOrPhone" autocomplete="off" @change="handleEmailChange" />
|
>
|
||||||
</el-col>
|
<el-input
|
||||||
<el-col :span="6" style="text-align:right;">
|
v-model="form.EmailOrPhone"
|
||||||
<el-button
|
autocomplete="off"
|
||||||
size="small"
|
@change="handleEmailChange"
|
||||||
type="primary"
|
v-if="!IsCanConnectInternet"
|
||||||
style="width:80%;"
|
/>
|
||||||
:disabled="sendDisabled"
|
<template v-else>
|
||||||
@click="handleSendCode"
|
<el-col :span="18">
|
||||||
>{{ sendTitle }}</el-button>
|
<el-input
|
||||||
</el-col>
|
v-model="form.EmailOrPhone"
|
||||||
|
autocomplete="off"
|
||||||
|
@change="handleEmailChange"
|
||||||
|
/>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6" style="text-align: right">
|
||||||
|
<el-button
|
||||||
|
size="small"
|
||||||
|
type="primary"
|
||||||
|
style="width: 80%"
|
||||||
|
:disabled="sendDisabled"
|
||||||
|
@click="handleSendCode"
|
||||||
|
>{{ sendTitle }}</el-button
|
||||||
|
>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 验证码 -->
|
<!-- 验证码 -->
|
||||||
<el-form-item :label="$t('trials:researchForm:form:checkCode')" required>
|
<el-form-item
|
||||||
|
:label="
|
||||||
|
!IsCanConnectInternet
|
||||||
|
? $t('trials:researchForm:form:checkCode')
|
||||||
|
: $t('trials:researchForm:form:verifyCode')
|
||||||
|
"
|
||||||
|
required
|
||||||
|
>
|
||||||
<el-col :span="18">
|
<el-col :span="18">
|
||||||
<el-form-item prop="VerificationCode">
|
<el-form-item prop="VerificationCode">
|
||||||
<el-input v-model="form.VerificationCode" autocomplete="off" />
|
<el-input v-model="form.VerificationCode" autocomplete="off" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6" style="text-align:right;">
|
<el-col :span="6" style="text-align: right">
|
||||||
<!-- 校验 -->
|
<!-- 校验 -->
|
||||||
<el-button
|
<el-button
|
||||||
size="small"
|
size="small"
|
||||||
type="primary"
|
type="primary"
|
||||||
style="width:80%;"
|
style="width: 80%"
|
||||||
:disabled="form.VerificationCode === '' || form.EmailOrPhone === ''"
|
:disabled="
|
||||||
|
form.VerificationCode === '' || form.EmailOrPhone === ''
|
||||||
|
"
|
||||||
@click="verifyCode"
|
@click="verifyCode"
|
||||||
>
|
>
|
||||||
{{ $t('passwordReset:button:verify') }}
|
{{ $t("passwordReset:button:verify") }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -58,7 +85,7 @@
|
||||||
v-model="form.UserId"
|
v-model="form.UserId"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
style="width:100%"
|
style="width: 100%"
|
||||||
@change="handleUserChange"
|
@change="handleUserChange"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
|
@ -68,31 +95,44 @@
|
||||||
:value="item.UserId"
|
:value="item.UserId"
|
||||||
>
|
>
|
||||||
<span style="float: left">{{ item.UserName }}</span>
|
<span style="float: left">{{ item.UserName }}</span>
|
||||||
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.UserType }}</span>
|
<span style="float: right; color: #8492a6; font-size: 13px">{{
|
||||||
|
item.UserType
|
||||||
|
}}</span>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 新密码 -->
|
<!-- 新密码 -->
|
||||||
<el-form-item class="my_new_pwd" :label="$t('passwordReset:form:password')" prop="NewPwd" style="position: relative">
|
<el-form-item
|
||||||
|
class="my_new_pwd"
|
||||||
|
:label="$t('passwordReset:form:password')"
|
||||||
|
prop="NewPwd"
|
||||||
|
style="position: relative"
|
||||||
|
>
|
||||||
<el-input v-model="form.NewPwd" show-password autocomplete="off" />
|
<el-input v-model="form.NewPwd" show-password autocomplete="off" />
|
||||||
<span style="position: absolute;right: -30px">
|
<span style="position: absolute; right: -30px">
|
||||||
<el-tooltip :content="$t('passwordReset:form:passwordCentent')" placement="top">
|
<el-tooltip
|
||||||
|
:content="$t('passwordReset:form:passwordCentent')"
|
||||||
|
placement="top"
|
||||||
|
>
|
||||||
<i class="el-icon-question" />
|
<i class="el-icon-question" />
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</span>
|
</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 确认密码 -->
|
<!-- 确认密码 -->
|
||||||
<el-form-item :label="$t('passwordReset:form:confirmPassword')" prop="CheckPass">
|
<el-form-item
|
||||||
|
:label="$t('passwordReset:form:confirmPassword')"
|
||||||
|
prop="CheckPass"
|
||||||
|
>
|
||||||
<el-input v-model="form.CheckPass" show-password autocomplete="off" />
|
<el-input v-model="form.CheckPass" show-password autocomplete="off" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item style="text-align:right;">
|
<el-form-item style="text-align: right">
|
||||||
<!-- 取消 -->
|
<!-- 取消 -->
|
||||||
<el-button size="small" @click="onCancel">
|
<el-button size="small" @click="onCancel">
|
||||||
{{ $t('passwordReset:button:cancel') }}
|
{{ $t("passwordReset:button:cancel") }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 提交 -->
|
<!-- 提交 -->
|
||||||
<el-button size="small" type="primary" @click="onSubmit">
|
<el-button size="small" type="primary" @click="onSubmit">
|
||||||
{{ $t('passwordReset:button:submit') }}
|
{{ $t("passwordReset:button:submit") }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
@ -100,152 +140,219 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
import {
|
||||||
import { anonymousSendVerificationCode, verifyAnonymousVerifyCode, anonymousSetPassword } from '@/api/user'
|
anonymousSendVerificationCode,
|
||||||
import md5 from 'js-md5'
|
verifyAnonymousVerifyCode,
|
||||||
var timer = ''
|
anonymousSetPassword,
|
||||||
var countdown = 60
|
} from "@/api/user";
|
||||||
|
import md5 from "js-md5";
|
||||||
|
import { getHospital } from "@/api/hospital.js";
|
||||||
|
var timer = "";
|
||||||
|
var countdown = 60;
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
var validateEmail = (rule, value, callback) => {
|
var validateEmail = (rule, value, callback) => {
|
||||||
if (value === '') {
|
if (value === "") {
|
||||||
// 请输入邮箱
|
// 请输入邮箱
|
||||||
callback(new Error(this.$t('passwordReset:formRule:email')))
|
callback(new Error(this.$t("passwordReset:formRule:email")));
|
||||||
} else {
|
} else {
|
||||||
var reg = /^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$/
|
var reg =
|
||||||
|
/^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$/;
|
||||||
if (this.form.EmailOrPhone && reg.test(this.form.EmailOrPhone)) {
|
if (this.form.EmailOrPhone && reg.test(this.form.EmailOrPhone)) {
|
||||||
this.sendDisabled = false
|
this.sendDisabled = false;
|
||||||
callback()
|
callback();
|
||||||
} else {
|
} else {
|
||||||
// 邮箱无效
|
// 邮箱无效
|
||||||
callback(new Error(this.$t('passwordReset:formRule:passwordinvalid')))
|
callback(
|
||||||
this.sendDisabled = true
|
new Error(this.$t("passwordReset:formRule:passwordinvalid"))
|
||||||
|
);
|
||||||
|
this.sendDisabled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
var validatePass = (rule, value, callback) => {
|
var validatePass = (rule, value, callback) => {
|
||||||
if (value === '') {
|
if (value === "") {
|
||||||
// 请输入密码
|
// 请输入密码
|
||||||
callback(new Error(this.$t('passwordReset:formRule:password')))
|
callback(new Error(this.$t("passwordReset:formRule:password")));
|
||||||
} else {
|
} else {
|
||||||
if (this.CheckPass !== '') {
|
if (this.CheckPass !== "") {
|
||||||
this.$refs.resetForm.validateField('CheckPass')
|
this.$refs.resetForm.validateField("CheckPass");
|
||||||
}
|
}
|
||||||
callback()
|
callback();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
var validatePass2 = (rule, value, callback) => {
|
var validatePass2 = (rule, value, callback) => {
|
||||||
if (value === '' || value === undefined) {
|
if (value === "" || value === undefined) {
|
||||||
// 请再次输入密码
|
// 请再次输入密码
|
||||||
callback(new Error(this.$t('passwordReset:formRule:confirmPassword')))
|
callback(new Error(this.$t("passwordReset:formRule:confirmPassword")));
|
||||||
} else if (value !== undefined && value !== this.form.NewPwd) {
|
} else if (value !== undefined && value !== this.form.NewPwd) {
|
||||||
// 两次密码不一致
|
// 两次密码不一致
|
||||||
callback(new Error(this.$t('passwordReset:formRule:passwordsDiffer')))
|
callback(new Error(this.$t("passwordReset:formRule:passwordsDiffer")));
|
||||||
} else {
|
} else {
|
||||||
callback()
|
callback();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
return {
|
return {
|
||||||
form: {
|
form: {
|
||||||
EmailOrPhone: '',
|
EmailOrPhone: "",
|
||||||
VerificationCode: '',
|
VerificationCode: "",
|
||||||
NewPwd: '',
|
NewPwd: "",
|
||||||
UserId: '',
|
UserId: "",
|
||||||
UserType: ''
|
UserType: "",
|
||||||
},
|
},
|
||||||
users: [],
|
users: [],
|
||||||
CheckPass: '',
|
CheckPass: "",
|
||||||
rules: {
|
rules: {
|
||||||
EmailOrPhone: [
|
EmailOrPhone: [
|
||||||
{ required: true, validator: validateEmail, trigger: ['blur', 'change'] }
|
{
|
||||||
|
required: true,
|
||||||
|
validator: validateEmail,
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
VerificationCode: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: this.$t("common:ruleMessage:specify"),
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
NewPwd: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
validator: this.$validatePassword,
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
CheckPass: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
validator: validatePass2,
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
UserId: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: this.$t("common:ruleMessage:select"),
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
VerificationCode: [{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: ['blur', 'change'] }],
|
|
||||||
NewPwd: [{ required: true, validator: this.$validatePassword, trigger: ['blur', 'change'] }],
|
|
||||||
CheckPass: [{ required: true, validator: validatePass2, trigger: ['blur', 'change'] }],
|
|
||||||
UserId: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }]
|
|
||||||
},
|
},
|
||||||
sendDisabled: true,
|
sendDisabled: true,
|
||||||
sendTitle: this.$t('passwordReset:button:send'),
|
sendTitle: this.$t("passwordReset:button:send"),
|
||||||
formLoading: false
|
formLoading: false,
|
||||||
}
|
IsCanConnectInternet: true,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getInfo();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onSubmit() {
|
// 获取医院信息
|
||||||
this.$refs['resetForm'].validate(valid => {
|
async getInfo() {
|
||||||
if (valid) {
|
try {
|
||||||
this.formLoading = true
|
let res = await getHospital();
|
||||||
anonymousSetPassword(this.form.UserId, md5(this.form.NewPwd)).then(res => {
|
if (res.IsSuccess) {
|
||||||
if (res.IsSuccess) {
|
this.IsCanConnectInternet = res.Result.IsCanConnectInternet;
|
||||||
// 修改成功
|
|
||||||
this.$message.success(this.$t('passwordReset:message:updatedSuccessfully'))
|
|
||||||
this.formLoading = false
|
|
||||||
this.goBack()
|
|
||||||
} else {
|
|
||||||
this.$alert(res.ErrorMessage)
|
|
||||||
}
|
|
||||||
}).catch(() => { this.formLoading = false })
|
|
||||||
}
|
}
|
||||||
})
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onSubmit() {
|
||||||
|
this.$refs["resetForm"].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.formLoading = true;
|
||||||
|
anonymousSetPassword(this.form.UserId, md5(this.form.NewPwd))
|
||||||
|
.then((res) => {
|
||||||
|
if (res.IsSuccess) {
|
||||||
|
// 修改成功
|
||||||
|
this.$message.success(
|
||||||
|
this.$t("passwordReset:message:updatedSuccessfully")
|
||||||
|
);
|
||||||
|
this.formLoading = false;
|
||||||
|
this.goBack();
|
||||||
|
} else {
|
||||||
|
this.$alert(res.ErrorMessage);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.formLoading = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
handleSendCode() {
|
handleSendCode() {
|
||||||
const that = this
|
const that = this;
|
||||||
this.sendDisabled = true
|
this.sendDisabled = true;
|
||||||
// var isReviewer = JSON.parse(zzSessionStorage.getItem('IsReviewer'))
|
anonymousSendVerificationCode(this.form.EmailOrPhone)
|
||||||
anonymousSendVerificationCode(this.form.EmailOrPhone).then(res => {
|
.then((res) => {
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
that.settime(that)
|
that.settime(that);
|
||||||
} else {
|
} else {
|
||||||
that.$alert(res.ErrorMessage)
|
that.$alert(res.ErrorMessage);
|
||||||
}
|
}
|
||||||
}).catch(() => {
|
})
|
||||||
this.sendDisabled = false
|
.catch(() => {
|
||||||
})
|
this.sendDisabled = false;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
verifyCode() {
|
verifyCode() {
|
||||||
this.formLoading = true
|
this.formLoading = true;
|
||||||
verifyAnonymousVerifyCode(this.form.EmailOrPhone, this.form.VerificationCode).then(res => {
|
verifyAnonymousVerifyCode(
|
||||||
this.formLoading = false
|
this.form.EmailOrPhone,
|
||||||
this.users = res.Result
|
this.form.VerificationCode
|
||||||
}).catch(() => { this.formLoading = false })
|
)
|
||||||
|
.then((res) => {
|
||||||
|
this.formLoading = false;
|
||||||
|
this.users = res.Result;
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.formLoading = false;
|
||||||
|
});
|
||||||
},
|
},
|
||||||
handleEmailChange() {
|
handleEmailChange() {
|
||||||
var reg = /^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$/
|
var reg =
|
||||||
|
/^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$/;
|
||||||
if (this.form.EmailOrPhone && reg.test(this.form.EmailOrPhone)) {
|
if (this.form.EmailOrPhone && reg.test(this.form.EmailOrPhone)) {
|
||||||
this.sendDisabled = false
|
this.sendDisabled = false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handleUserChange(val) {
|
handleUserChange(val) {
|
||||||
const seleted = this.users.findIndex(user => user.UserId === val)
|
const seleted = this.users.findIndex((user) => user.UserId === val);
|
||||||
if (seleted > -1) {
|
if (seleted > -1) {
|
||||||
this.form.UserType = this.users[seleted].UserType
|
this.form.UserType = this.users[seleted].UserType;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
settime(obj) {
|
settime(obj) {
|
||||||
if (countdown === 0) {
|
if (countdown === 0) {
|
||||||
obj.sendDisabled = false
|
obj.sendDisabled = false;
|
||||||
obj.sendTitle = this.$t('passwordReset:button:send')
|
obj.sendTitle = this.$t("passwordReset:button:send");
|
||||||
countdown = 60
|
countdown = 60;
|
||||||
clearTimeout(timer)
|
clearTimeout(timer);
|
||||||
return
|
return;
|
||||||
} else {
|
} else {
|
||||||
obj.sendDisabled = true
|
obj.sendDisabled = true;
|
||||||
obj.sendTitle = `${this.$t('passwordReset:button:wait')}(${countdown}s)`
|
obj.sendTitle = `${this.$t(
|
||||||
countdown--
|
"passwordReset:button:wait"
|
||||||
|
)}(${countdown}s)`;
|
||||||
|
countdown--;
|
||||||
// eslint-disable-next-line no-self-assign
|
// eslint-disable-next-line no-self-assign
|
||||||
countdown = countdown
|
countdown = countdown;
|
||||||
timer = setTimeout(function() {
|
timer = setTimeout(function () {
|
||||||
obj.settime(obj)
|
obj.settime(obj);
|
||||||
}, 1000)
|
}, 1000);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onCancel() {
|
onCancel() {
|
||||||
this.$refs['resetForm'].resetFields()
|
this.$refs["resetForm"].resetFields();
|
||||||
},
|
},
|
||||||
goBack() {
|
goBack() {
|
||||||
this.$router.push('/login')
|
this.$router.push("/login");
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
<style>
|
<style>
|
||||||
.reset-wrapper {
|
.reset-wrapper {
|
||||||
|
@ -269,7 +376,7 @@ export default {
|
||||||
/*>>>.is-error{*/
|
/*>>>.is-error{*/
|
||||||
/* margin-bottom: 40px;*/
|
/* margin-bottom: 40px;*/
|
||||||
/*}*/
|
/*}*/
|
||||||
::v-deep .is-error.my_new_pwd{
|
::v-deep .is-error.my_new_pwd {
|
||||||
margin-bottom: 40px;
|
margin-bottom: 40px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -125,7 +125,6 @@ export default {
|
||||||
async setAE() {
|
async setAE() {
|
||||||
try {
|
try {
|
||||||
let validate = await this.$refs.editVisitForm.validate();
|
let validate = await this.$refs.editVisitForm.validate();
|
||||||
console.log(validate);
|
|
||||||
if (!validate) return;
|
if (!validate) return;
|
||||||
this.btnLoading = true;
|
this.btnLoading = true;
|
||||||
let res = await setDiicomAE(this.form);
|
let res = await setDiicomAE(this.form);
|
||||||
|
|
|
@ -0,0 +1,137 @@
|
||||||
|
<template>
|
||||||
|
<el-form
|
||||||
|
ref="hospitalForm"
|
||||||
|
size="small"
|
||||||
|
:model="hospital"
|
||||||
|
:rules="hospitalFormRules"
|
||||||
|
label-width="150px"
|
||||||
|
style="width: 800px"
|
||||||
|
>
|
||||||
|
<el-card class="Basic" shadow="never" size="small">
|
||||||
|
<el-form-item label="医院名称: " prop="HospitalName">
|
||||||
|
<el-input v-model="hospital.HospitalName" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="医院别称: " prop="HospitalAliasName">
|
||||||
|
<el-input v-model="hospital.HospitalAliasName" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="国家: " prop="Country">
|
||||||
|
<el-input v-model="hospital.Country" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="省份: " prop="Province">
|
||||||
|
<el-input v-model="hospital.Province" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="城市: " prop="City">
|
||||||
|
<el-input v-model="hospital.City" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="地址: " prop="Address">
|
||||||
|
<el-input v-model="hospital.Address" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="联系方式: " prop="Phone">
|
||||||
|
<el-input v-model="hospital.Phone" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="是否可以连接互联网: ">
|
||||||
|
<el-switch
|
||||||
|
v-model="hospital.IsCanConnectInternet"
|
||||||
|
active-color="#13ce66"
|
||||||
|
inactive-color="#ff4949"
|
||||||
|
active-text="是"
|
||||||
|
inactive-text="否"
|
||||||
|
>
|
||||||
|
</el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
</el-card>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
size="small"
|
||||||
|
style="margin: 10px 15px"
|
||||||
|
:loading="btnLoading"
|
||||||
|
:disabled="btnLoading"
|
||||||
|
@click="handleSave"
|
||||||
|
>保存</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { setHospital, getHospital } from "@/api/hospital.js";
|
||||||
|
export default {
|
||||||
|
name: "systemHospital",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
hospital: {
|
||||||
|
HospitalName: null,
|
||||||
|
HospitalAliasName: null,
|
||||||
|
Country: null,
|
||||||
|
City: null,
|
||||||
|
Province: null,
|
||||||
|
Address: null,
|
||||||
|
Phone: null,
|
||||||
|
IsCanConnectInternet: true,
|
||||||
|
Id: null,
|
||||||
|
},
|
||||||
|
hospitalFormRules: {
|
||||||
|
HospitalName: [
|
||||||
|
{ required: true, message: "请输入医院名称", trigger: "blur" },
|
||||||
|
],
|
||||||
|
HospitalAliasName: [
|
||||||
|
{ required: true, message: "请输入医院别称", trigger: "blur" },
|
||||||
|
],
|
||||||
|
Country: [{ required: true, message: "请输入国家", trigger: "blur" }],
|
||||||
|
City: [{ required: true, message: "请输入所在城市", trigger: "blur" }],
|
||||||
|
Province: [
|
||||||
|
{ required: true, message: "请输入所在省份", trigger: "blur" },
|
||||||
|
],
|
||||||
|
Address: [
|
||||||
|
{ required: true, message: "请输入医院地址", trigger: "blur" },
|
||||||
|
],
|
||||||
|
Phone: [
|
||||||
|
{ required: true, message: "请输入医院联系方式", trigger: "blur" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
btnLoading: false,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getInfo();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async handleSave() {
|
||||||
|
if (this.btnLoading) return;
|
||||||
|
try {
|
||||||
|
let validate = await this.$refs.hospitalForm.validate();
|
||||||
|
if (!validate) return;
|
||||||
|
this.btnLoading = true;
|
||||||
|
let res = await setHospital(this.hospital);
|
||||||
|
this.btnLoading = false;
|
||||||
|
if (res.IsSuccess) {
|
||||||
|
this.$message.success(this.$t("common:message:savedSuccessfully"));
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取医院信息
|
||||||
|
async getInfo() {
|
||||||
|
try {
|
||||||
|
let res = await getHospital();
|
||||||
|
if (res.IsSuccess) {
|
||||||
|
Object.keys(this.hospital).forEach((key) => {
|
||||||
|
this.hospital[key] = res.Result[key];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
::v-deep .is-error.my_new_pwd {
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
:model="user"
|
:model="user"
|
||||||
:rules="userFormRules"
|
:rules="userFormRules"
|
||||||
label-width="150px"
|
label-width="150px"
|
||||||
style="width:800px;"
|
style="width: 800px"
|
||||||
>
|
>
|
||||||
<el-card class="Basic" shadow="never" size="small">
|
<el-card class="Basic" shadow="never" size="small">
|
||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
<el-form-item label="Given Name: " prop="FirstName">
|
<el-form-item label="Given Name: " prop="FirstName">
|
||||||
<el-input v-model="user.FirstName" />
|
<el-input v-model="user.FirstName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="Gender: " prop="Sex" style="margin-right:40px;">
|
<el-form-item label="Gender: " prop="Sex" style="margin-right: 40px">
|
||||||
<el-radio-group v-model="user.Sex">
|
<el-radio-group v-model="user.Sex">
|
||||||
<el-radio :label="1">Male</el-radio>
|
<el-radio :label="1">Male</el-radio>
|
||||||
<el-radio :label="0">Female</el-radio>
|
<el-radio :label="0">Female</el-radio>
|
||||||
|
@ -37,16 +37,27 @@
|
||||||
<el-form-item label="Phone: " prop="Phone">
|
<el-form-item label="Phone: " prop="Phone">
|
||||||
<el-input v-model="user.Phone" />
|
<el-input v-model="user.Phone" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="type==1" label="Disable:">
|
<el-form-item v-if="type == 1" label="Disable:">
|
||||||
<el-switch v-model="user.Status" :active-value="0" :inactive-value="1" />
|
<el-switch
|
||||||
|
v-model="user.Status"
|
||||||
|
:active-value="0"
|
||||||
|
:inactive-value="1"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="IsTestUser:">
|
<!-- <el-form-item label="IsTestUser:">
|
||||||
<el-switch v-model="user.IsTestUser" />
|
<el-switch v-model="user.IsTestUser" />
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<el-form-item label="User Type: " prop="UserTypeId">
|
<el-form-item label="User Type: " prop="UserTypeId">
|
||||||
<el-select ref="userType" v-model="user.UserTypeId" size="small" placeholder="Please select" style="width:100%;" :disabled="user.CanEditUserType === false">
|
<el-select
|
||||||
<template v-for="(userType,key) of userTypeOptions">
|
ref="userType"
|
||||||
<el-option
|
v-model="user.UserTypeId"
|
||||||
|
size="small"
|
||||||
|
placeholder="Please select"
|
||||||
|
style="width: 100%"
|
||||||
|
:disabled="user.CanEditUserType === false"
|
||||||
|
>
|
||||||
|
<template v-for="(userType, key) of userTypeOptions">
|
||||||
|
<el-option
|
||||||
v-if="userType.UserTypeEnum !== 20"
|
v-if="userType.UserTypeEnum !== 20"
|
||||||
:key="key"
|
:key="key"
|
||||||
:label="userType.UserType"
|
:label="userType.UserType"
|
||||||
|
@ -55,23 +66,40 @@
|
||||||
</template>
|
</template>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="Check Code: " prop="verifyCode">
|
<el-form-item
|
||||||
<el-input v-model="user.checkCode" />
|
label="Check Code: "
|
||||||
<span style="color:red">请输入,校验码用于用户首次登录、重置密码时的校验</span>
|
prop="checkCode"
|
||||||
</el-form-item>
|
v-if="!IsCanConnectInternet"
|
||||||
|
>
|
||||||
|
<el-input v-model="user.checkCode" type="number" />
|
||||||
|
<span style="color: red"
|
||||||
|
>请输入,校验码用于用户首次登录、重置密码时的校验</span
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-card class="Affiliation" shadow="never" style="margin-top:10px;" size="small">
|
<el-card
|
||||||
|
class="Affiliation"
|
||||||
|
shadow="never"
|
||||||
|
style="margin-top: 10px"
|
||||||
|
size="small"
|
||||||
|
>
|
||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>Affiliation</span>
|
<span>Affiliation</span>
|
||||||
</div>
|
</div>
|
||||||
<el-form-item prop="IsZhiZhun">
|
<el-form-item prop="IsZhiZhun">
|
||||||
<el-radio-group v-model="user.IsZhiZhun" @change="OrgnizationTypeChanged">
|
<el-radio-group
|
||||||
|
v-model="user.IsZhiZhun"
|
||||||
|
@change="OrgnizationTypeChanged"
|
||||||
|
>
|
||||||
<el-radio :label="true">Internal</el-radio>
|
<el-radio :label="true">Internal</el-radio>
|
||||||
<el-radio :label="false">External</el-radio>
|
<el-radio :label="false">External</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-show="user.IsZhiZhun === false" label="Organization Name: ">
|
<el-form-item
|
||||||
|
v-show="user.IsZhiZhun === false"
|
||||||
|
label="Organization Name: "
|
||||||
|
>
|
||||||
<el-input v-model="user.OrganizationName" />
|
<el-input v-model="user.OrganizationName" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
@ -87,159 +115,215 @@
|
||||||
type="primary"
|
type="primary"
|
||||||
size="small"
|
size="small"
|
||||||
:disabled="isDisabled"
|
:disabled="isDisabled"
|
||||||
style="margin:10px 15px"
|
style="margin: 10px 15px"
|
||||||
@click="handleSave"
|
@click="handleSave"
|
||||||
>Save</el-button>
|
>Save</el-button
|
||||||
|
>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { getUser, addUser, updateUser, getUserTypeListByUserType } from '@/api/admin.js'
|
import {
|
||||||
|
getUser,
|
||||||
|
addUser,
|
||||||
|
updateUser,
|
||||||
|
getUserTypeListByUserType,
|
||||||
|
} from "@/api/admin.js";
|
||||||
|
import { getHospital } from "@/api/hospital.js";
|
||||||
export default {
|
export default {
|
||||||
name: 'UserInfo',
|
name: "UserInfo",
|
||||||
props: {
|
props: {
|
||||||
userId: { type: String, default: '' }
|
userId: { type: String, default: "" },
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
var validatePassword = (rule, value, callback) => {
|
var validatePassword = (rule, value, callback) => {
|
||||||
var lang = zzSessionStorage.getItem('lang')?zzSessionStorage.getItem('lang'):'zh'
|
var lang = zzSessionStorage.getItem("lang")
|
||||||
|
? zzSessionStorage.getItem("lang")
|
||||||
|
: "zh";
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
var reg1 = /^[a-zA-Z0-9_]{4,16}$/; //密码必须是8位以上、必须含有字母、数字、特殊符号
|
var reg1 = /^[a-zA-Z0-9_]{4,16}$/; //密码必须是8位以上、必须含有字母、数字、特殊符号
|
||||||
console.log(!reg1.test(value))
|
console.log(!reg1.test(value));
|
||||||
if (!reg1.test(value)) {
|
if (!reg1.test(value)) {
|
||||||
callback(lang==='zh' ? new Error("1)新建账号,用户名字符长度最小为4个字符,最大为16个字符,只可使用字母、数字、下划线;") : new Error('For a new account, the username must have:1) At least 4 characters;2) At most 16 characters;3)Only letters, numbers, and underscores are allowed.'))
|
callback(
|
||||||
|
lang === "zh"
|
||||||
|
? new Error(
|
||||||
|
"1)新建账号,用户名字符长度最小为4个字符,最大为16个字符,只可使用字母、数字、下划线;"
|
||||||
|
)
|
||||||
|
: new Error(
|
||||||
|
"For a new account, the username must have:1) At least 4 characters;2) At most 16 characters;3)Only letters, numbers, and underscores are allowed."
|
||||||
|
)
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
return {
|
return {
|
||||||
user: {
|
user: {
|
||||||
UserName: '',
|
UserName: "",
|
||||||
LastName: '',
|
LastName: "",
|
||||||
FirstName: '',
|
FirstName: "",
|
||||||
Sex: '',
|
Sex: "",
|
||||||
EMail: '',
|
EMail: "",
|
||||||
Phone: '',
|
Phone: "",
|
||||||
UserTypeId: '',
|
UserTypeId: "",
|
||||||
IsZhiZhun: '',
|
IsZhiZhun: "",
|
||||||
OrganizationName: '',
|
OrganizationName: "",
|
||||||
DepartmentName: '',
|
DepartmentName: "",
|
||||||
PositionName: '',
|
PositionName: "",
|
||||||
IsTestUser: false,
|
IsTestUser: false,
|
||||||
verifyCode:''
|
verifyCode: "",
|
||||||
|
checkCode: "",
|
||||||
},
|
},
|
||||||
userFormRules: {
|
userFormRules: {
|
||||||
|
checkCode: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "Please Input",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
|
],
|
||||||
UserName: [
|
UserName: [
|
||||||
{ required: true, validator: validatePassword, trigger: 'blur' }
|
{ required: true, validator: validatePassword, trigger: "blur" },
|
||||||
],
|
],
|
||||||
UserTypeId: [
|
UserTypeId: [
|
||||||
{ required: true, message: 'Please Select', trigger: ['blur', 'change'] }
|
{
|
||||||
|
required: true,
|
||||||
|
message: "Please Select",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
IsZhiZhun: [
|
IsZhiZhun: [
|
||||||
{ required: true, message: 'Please Select', trigger: ['blur', 'change'] }
|
{
|
||||||
|
required: true,
|
||||||
|
message: "Please Select",
|
||||||
|
trigger: ["blur", "change"],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
OrganizationName: [
|
OrganizationName: [
|
||||||
{ required: true, message: 'Please specify', trigger: 'blur' }
|
{ required: true, message: "Please specify", trigger: "blur" },
|
||||||
],
|
],
|
||||||
LastName: [
|
LastName: [
|
||||||
{ required: true, message: 'Please specify', trigger: 'blur' },
|
{ required: true, message: "Please specify", trigger: "blur" },
|
||||||
{ max: 50, message: 'The maximum length is 50' }
|
{ max: 50, message: "The maximum length is 50" },
|
||||||
],
|
],
|
||||||
FirstName: [
|
FirstName: [
|
||||||
{ required: true, message: 'Please specify', trigger: 'blur' },
|
{ required: true, message: "Please specify", trigger: "blur" },
|
||||||
{ max: 50, message: 'The maximum length is 50' }
|
{ max: 50, message: "The maximum length is 50" },
|
||||||
],
|
],
|
||||||
Phone: [
|
Phone: [
|
||||||
{ max: 20, min: 7, message: 'The length is 7 to 20', trigger: ['blur'] }
|
{
|
||||||
|
max: 20,
|
||||||
|
min: 7,
|
||||||
|
message: "The length is 7 to 20",
|
||||||
|
trigger: ["blur"],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
EMail: [
|
EMail: [
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: 'Please input the email address',
|
message: "Please input the email address",
|
||||||
trigger: 'blur'
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'email',
|
type: "email",
|
||||||
message: 'Please input the correct email address',
|
message: "Please input the correct email address",
|
||||||
trigger: ['blur']
|
trigger: ["blur"],
|
||||||
},
|
},
|
||||||
{ max: 50, message: 'The maximum length is 50' }
|
{ max: 50, message: "The maximum length is 50" },
|
||||||
],
|
|
||||||
Sex: [
|
|
||||||
{ required: true, message: 'Please specify', trigger: 'blur' }
|
|
||||||
],
|
],
|
||||||
|
Sex: [{ required: true, message: "Please specify", trigger: "blur" }],
|
||||||
Status: [
|
Status: [
|
||||||
{ required: true, message: 'Please specify', trigger: 'blur' }
|
{ required: true, message: "Please specify", trigger: "blur" },
|
||||||
],
|
],
|
||||||
DepartmentName: [
|
DepartmentName: [{ max: 50, message: "The maximum length is 50" }],
|
||||||
{ max: 50, message: 'The maximum length is 50' }],
|
PositionName: [{ max: 50, message: "The maximum length is 50" }],
|
||||||
PositionName: [{ max: 50, message: 'The maximum length is 50' }
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
userTypeOptions: [],
|
userTypeOptions: [],
|
||||||
isDisabled: false,
|
isDisabled: false,
|
||||||
type: 0 // 1为编辑,0为新增
|
type: 0, // 1为编辑,0为新增
|
||||||
}
|
IsCanConnectInternet: true, // 是否连接互联网
|
||||||
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.getUserTypeList()
|
this.getUserTypeList();
|
||||||
if (this.userId !== '') {
|
if (this.userId !== "") {
|
||||||
this.getUserInfo()
|
this.getUserInfo();
|
||||||
this.type = 1
|
this.type = 1;
|
||||||
} else {
|
} else {
|
||||||
this.type = 0
|
this.type = 0;
|
||||||
}
|
}
|
||||||
|
this.getInfo();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 获取医院信息
|
||||||
|
async getInfo() {
|
||||||
|
try {
|
||||||
|
let res = await getHospital();
|
||||||
|
if (res.IsSuccess) {
|
||||||
|
this.IsCanConnectInternet = res.Result.IsCanConnectInternet;
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
|
}
|
||||||
|
},
|
||||||
handleSave() {
|
handleSave() {
|
||||||
this.$refs.userForm.validate(valid => {
|
this.$refs.userForm.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.isDisabled = true
|
this.isDisabled = true;
|
||||||
const selectedUserType = this.userTypeOptions.filter(item => item.Id === this.user.UserTypeId)
|
const selectedUserType = this.userTypeOptions.filter(
|
||||||
|
(item) => item.Id === this.user.UserTypeId
|
||||||
|
);
|
||||||
if (selectedUserType.length > 0) {
|
if (selectedUserType.length > 0) {
|
||||||
this.user.UserTypeEnum = selectedUserType[0].UserTypeEnum
|
this.user.UserTypeEnum = selectedUserType[0].UserTypeEnum;
|
||||||
}
|
}
|
||||||
this.user.BaseUrl = `${location.protocol}//${location.host}/login`
|
this.user.BaseUrl = `${location.protocol}//${location.host}/login`;
|
||||||
this.user.RouteUrl = `${location.protocol}//${location.host}/email-recompose`
|
this.user.RouteUrl = `${location.protocol}//${location.host}/email-recompose`;
|
||||||
if (this.user.Id) {
|
if (this.user.Id) {
|
||||||
updateUser(this.user).then(res => {
|
updateUser(this.user)
|
||||||
this.isDisabled = false
|
.then((res) => {
|
||||||
this.$message.success('Updated successfully')
|
this.isDisabled = false;
|
||||||
}).catch(() => { this.isDisabled = false })
|
this.$message.success("Updated successfully");
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.isDisabled = false;
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
addUser(this.user).then(res => {
|
addUser(this.user)
|
||||||
this.isDisabled = false
|
.then((res) => {
|
||||||
this.user.Id = res.Result.Id
|
this.isDisabled = false;
|
||||||
this.user.UserCode = res.Result.UserCode
|
this.user.Id = res.Result.Id;
|
||||||
this.$emit('getUserId', res.Result.Id)
|
this.user.UserCode = res.Result.UserCode;
|
||||||
this.$message.success('Added successfully')
|
this.$emit("getUserId", res.Result.Id);
|
||||||
this.$router.push({ path: '/system/user/list' })
|
this.$message.success("Added successfully");
|
||||||
}).catch(() => { this.isDisabled = false })
|
this.$router.push({ path: "/system/user/list" });
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.isDisabled = false;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
getUserTypeList() {
|
getUserTypeList() {
|
||||||
getUserTypeListByUserType(0).then(res => {
|
getUserTypeListByUserType(0).then((res) => {
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
this.userTypeOptions = res.Result
|
this.userTypeOptions = res.Result;
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
getUserInfo() {
|
getUserInfo() {
|
||||||
getUser(this.userId).then(res => {
|
getUser(this.userId).then((res) => {
|
||||||
this.user = res.Result
|
this.user = res.Result;
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
OrgnizationTypeChanged(val) {
|
OrgnizationTypeChanged(val) {
|
||||||
this.user.OrganizationName = ''
|
this.user.OrganizationName = "";
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
::v-deep .is-error.my_new_pwd{
|
::v-deep .is-error.my_new_pwd {
|
||||||
margin-bottom: 40px;
|
margin-bottom: 40px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
Loading…
Reference in New Issue