医院及用户接口调试
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"
|
||||
>
|
||||
<!-- 用户类型 -->
|
||||
<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-form-item>
|
||||
<!-- 邮箱 -->
|
||||
<el-form-item :label="$t('passwordReset:form:email')" prop="EmailOrPhone">
|
||||
<!-- <el-input v-model="form.EmailOrPhone" autocomplete="off" @change="handleEmailChange" /> -->
|
||||
<el-col :span="18">
|
||||
<el-input 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>
|
||||
<el-form-item
|
||||
:label="$t('passwordReset:form:email')"
|
||||
prop="EmailOrPhone"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.EmailOrPhone"
|
||||
autocomplete="off"
|
||||
@change="handleEmailChange"
|
||||
v-if="!IsCanConnectInternet"
|
||||
/>
|
||||
<template v-else>
|
||||
<el-col :span="18">
|
||||
<el-input
|
||||
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 :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-form-item prop="VerificationCode">
|
||||
<el-input v-model="form.VerificationCode" autocomplete="off" />
|
||||
<el-input v-model="form.VerificationCode" autocomplete="off" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6" style="text-align:right;">
|
||||
<el-col :span="6" style="text-align: right">
|
||||
<!-- 校验 -->
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
style="width:80%;"
|
||||
:disabled="form.VerificationCode === '' || form.EmailOrPhone === ''"
|
||||
style="width: 80%"
|
||||
:disabled="
|
||||
form.VerificationCode === '' || form.EmailOrPhone === ''
|
||||
"
|
||||
@click="verifyCode"
|
||||
>
|
||||
{{ $t('passwordReset:button:verify') }}
|
||||
{{ $t("passwordReset:button:verify") }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
|
@ -58,7 +85,7 @@
|
|||
v-model="form.UserId"
|
||||
clearable
|
||||
filterable
|
||||
style="width:100%"
|
||||
style="width: 100%"
|
||||
@change="handleUserChange"
|
||||
>
|
||||
<el-option
|
||||
|
@ -68,31 +95,44 @@
|
|||
:value="item.UserId"
|
||||
>
|
||||
<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-select>
|
||||
</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" />
|
||||
<span style="position: absolute;right: -30px">
|
||||
<el-tooltip :content="$t('passwordReset:form:passwordCentent')" placement="top">
|
||||
<span style="position: absolute; right: -30px">
|
||||
<el-tooltip
|
||||
:content="$t('passwordReset:form:passwordCentent')"
|
||||
placement="top"
|
||||
>
|
||||
<i class="el-icon-question" />
|
||||
</el-tooltip>
|
||||
</span>
|
||||
</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-form-item>
|
||||
<el-form-item style="text-align:right;">
|
||||
<el-form-item style="text-align: right">
|
||||
<!-- 取消 -->
|
||||
<el-button size="small" @click="onCancel">
|
||||
{{ $t('passwordReset:button:cancel') }}
|
||||
{{ $t("passwordReset:button:cancel") }}
|
||||
</el-button>
|
||||
<!-- 提交 -->
|
||||
<el-button size="small" type="primary" @click="onSubmit">
|
||||
{{ $t('passwordReset:button:submit') }}
|
||||
{{ $t("passwordReset:button:submit") }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
@ -100,152 +140,219 @@
|
|||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
import { anonymousSendVerificationCode, verifyAnonymousVerifyCode, anonymousSetPassword } from '@/api/user'
|
||||
import md5 from 'js-md5'
|
||||
var timer = ''
|
||||
var countdown = 60
|
||||
import {
|
||||
anonymousSendVerificationCode,
|
||||
verifyAnonymousVerifyCode,
|
||||
anonymousSetPassword,
|
||||
} from "@/api/user";
|
||||
import md5 from "js-md5";
|
||||
import { getHospital } from "@/api/hospital.js";
|
||||
var timer = "";
|
||||
var countdown = 60;
|
||||
export default {
|
||||
data() {
|
||||
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 {
|
||||
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)) {
|
||||
this.sendDisabled = false
|
||||
callback()
|
||||
this.sendDisabled = false;
|
||||
callback();
|
||||
} else {
|
||||
// 邮箱无效
|
||||
callback(new Error(this.$t('passwordReset:formRule:passwordinvalid')))
|
||||
this.sendDisabled = true
|
||||
callback(
|
||||
new Error(this.$t("passwordReset:formRule:passwordinvalid"))
|
||||
);
|
||||
this.sendDisabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
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 {
|
||||
if (this.CheckPass !== '') {
|
||||
this.$refs.resetForm.validateField('CheckPass')
|
||||
if (this.CheckPass !== "") {
|
||||
this.$refs.resetForm.validateField("CheckPass");
|
||||
}
|
||||
callback()
|
||||
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) {
|
||||
// 两次密码不一致
|
||||
callback(new Error(this.$t('passwordReset:formRule:passwordsDiffer')))
|
||||
callback(new Error(this.$t("passwordReset:formRule:passwordsDiffer")));
|
||||
} else {
|
||||
callback()
|
||||
callback();
|
||||
}
|
||||
}
|
||||
};
|
||||
return {
|
||||
form: {
|
||||
EmailOrPhone: '',
|
||||
VerificationCode: '',
|
||||
NewPwd: '',
|
||||
UserId: '',
|
||||
UserType: ''
|
||||
EmailOrPhone: "",
|
||||
VerificationCode: "",
|
||||
NewPwd: "",
|
||||
UserId: "",
|
||||
UserType: "",
|
||||
},
|
||||
users: [],
|
||||
CheckPass: '',
|
||||
CheckPass: "",
|
||||
rules: {
|
||||
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,
|
||||
sendTitle: this.$t('passwordReset:button:send'),
|
||||
formLoading: false
|
||||
}
|
||||
sendTitle: this.$t("passwordReset:button:send"),
|
||||
formLoading: false,
|
||||
IsCanConnectInternet: true,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getInfo();
|
||||
},
|
||||
methods: {
|
||||
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 })
|
||||
// 获取医院信息
|
||||
async getInfo() {
|
||||
try {
|
||||
let res = await getHospital();
|
||||
if (res.IsSuccess) {
|
||||
this.IsCanConnectInternet = res.Result.IsCanConnectInternet;
|
||||
}
|
||||
})
|
||||
} 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() {
|
||||
const that = this
|
||||
this.sendDisabled = true
|
||||
// var isReviewer = JSON.parse(zzSessionStorage.getItem('IsReviewer'))
|
||||
anonymousSendVerificationCode(this.form.EmailOrPhone).then(res => {
|
||||
if (res.IsSuccess) {
|
||||
that.settime(that)
|
||||
} else {
|
||||
that.$alert(res.ErrorMessage)
|
||||
}
|
||||
}).catch(() => {
|
||||
this.sendDisabled = false
|
||||
})
|
||||
const that = this;
|
||||
this.sendDisabled = true;
|
||||
anonymousSendVerificationCode(this.form.EmailOrPhone)
|
||||
.then((res) => {
|
||||
if (res.IsSuccess) {
|
||||
that.settime(that);
|
||||
} else {
|
||||
that.$alert(res.ErrorMessage);
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
this.sendDisabled = false;
|
||||
});
|
||||
},
|
||||
verifyCode() {
|
||||
this.formLoading = true
|
||||
verifyAnonymousVerifyCode(this.form.EmailOrPhone, this.form.VerificationCode).then(res => {
|
||||
this.formLoading = false
|
||||
this.users = res.Result
|
||||
}).catch(() => { this.formLoading = false })
|
||||
this.formLoading = true;
|
||||
verifyAnonymousVerifyCode(
|
||||
this.form.EmailOrPhone,
|
||||
this.form.VerificationCode
|
||||
)
|
||||
.then((res) => {
|
||||
this.formLoading = false;
|
||||
this.users = res.Result;
|
||||
})
|
||||
.catch(() => {
|
||||
this.formLoading = false;
|
||||
});
|
||||
},
|
||||
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)) {
|
||||
this.sendDisabled = false
|
||||
this.sendDisabled = false;
|
||||
}
|
||||
},
|
||||
handleUserChange(val) {
|
||||
const seleted = this.users.findIndex(user => user.UserId === val)
|
||||
const seleted = this.users.findIndex((user) => user.UserId === val);
|
||||
if (seleted > -1) {
|
||||
this.form.UserType = this.users[seleted].UserType
|
||||
this.form.UserType = this.users[seleted].UserType;
|
||||
}
|
||||
},
|
||||
settime(obj) {
|
||||
if (countdown === 0) {
|
||||
obj.sendDisabled = false
|
||||
obj.sendTitle = this.$t('passwordReset:button:send')
|
||||
countdown = 60
|
||||
clearTimeout(timer)
|
||||
return
|
||||
obj.sendDisabled = false;
|
||||
obj.sendTitle = this.$t("passwordReset:button:send");
|
||||
countdown = 60;
|
||||
clearTimeout(timer);
|
||||
return;
|
||||
} else {
|
||||
obj.sendDisabled = true
|
||||
obj.sendTitle = `${this.$t('passwordReset:button:wait')}(${countdown}s)`
|
||||
countdown--
|
||||
obj.sendDisabled = true;
|
||||
obj.sendTitle = `${this.$t(
|
||||
"passwordReset:button:wait"
|
||||
)}(${countdown}s)`;
|
||||
countdown--;
|
||||
// eslint-disable-next-line no-self-assign
|
||||
countdown = countdown
|
||||
timer = setTimeout(function() {
|
||||
obj.settime(obj)
|
||||
}, 1000)
|
||||
countdown = countdown;
|
||||
timer = setTimeout(function () {
|
||||
obj.settime(obj);
|
||||
}, 1000);
|
||||
}
|
||||
},
|
||||
onCancel() {
|
||||
this.$refs['resetForm'].resetFields()
|
||||
this.$refs["resetForm"].resetFields();
|
||||
},
|
||||
goBack() {
|
||||
this.$router.push('/login')
|
||||
}
|
||||
}
|
||||
}
|
||||
this.$router.push("/login");
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
.reset-wrapper {
|
||||
|
@ -269,7 +376,7 @@ export default {
|
|||
/*>>>.is-error{*/
|
||||
/* margin-bottom: 40px;*/
|
||||
/*}*/
|
||||
::v-deep .is-error.my_new_pwd{
|
||||
::v-deep .is-error.my_new_pwd {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -125,7 +125,6 @@ export default {
|
|||
async setAE() {
|
||||
try {
|
||||
let validate = await this.$refs.editVisitForm.validate();
|
||||
console.log(validate);
|
||||
if (!validate) return;
|
||||
this.btnLoading = true;
|
||||
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"
|
||||
:rules="userFormRules"
|
||||
label-width="150px"
|
||||
style="width:800px;"
|
||||
style="width: 800px"
|
||||
>
|
||||
<el-card class="Basic" shadow="never" size="small">
|
||||
<div slot="header" class="clearfix">
|
||||
|
@ -25,7 +25,7 @@
|
|||
<el-form-item label="Given Name: " prop="FirstName">
|
||||
<el-input v-model="user.FirstName" />
|
||||
</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 :label="1">Male</el-radio>
|
||||
<el-radio :label="0">Female</el-radio>
|
||||
|
@ -37,16 +37,27 @@
|
|||
<el-form-item label="Phone: " prop="Phone">
|
||||
<el-input v-model="user.Phone" />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="type==1" label="Disable:">
|
||||
<el-switch v-model="user.Status" :active-value="0" :inactive-value="1" />
|
||||
<el-form-item v-if="type == 1" label="Disable:">
|
||||
<el-switch
|
||||
v-model="user.Status"
|
||||
:active-value="0"
|
||||
:inactive-value="1"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="IsTestUser:">
|
||||
<el-switch v-model="user.IsTestUser" />
|
||||
</el-form-item> -->
|
||||
<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">
|
||||
<template v-for="(userType,key) of userTypeOptions">
|
||||
<el-option
|
||||
<el-select
|
||||
ref="userType"
|
||||
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"
|
||||
:key="key"
|
||||
:label="userType.UserType"
|
||||
|
@ -55,23 +66,40 @@
|
|||
</template>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="Check Code: " prop="verifyCode">
|
||||
<el-input v-model="user.checkCode" />
|
||||
<span style="color:red">请输入,校验码用于用户首次登录、重置密码时的校验</span>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="Check Code: "
|
||||
prop="checkCode"
|
||||
v-if="!IsCanConnectInternet"
|
||||
>
|
||||
<el-input v-model="user.checkCode" type="number" />
|
||||
<span style="color: red"
|
||||
>请输入,校验码用于用户首次登录、重置密码时的校验</span
|
||||
>
|
||||
</el-form-item>
|
||||
</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">
|
||||
<span>Affiliation</span>
|
||||
</div>
|
||||
<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="false">External</el-radio>
|
||||
</el-radio-group>
|
||||
</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-form-item>
|
||||
|
||||
|
@ -87,159 +115,215 @@
|
|||
type="primary"
|
||||
size="small"
|
||||
:disabled="isDisabled"
|
||||
style="margin:10px 15px"
|
||||
style="margin: 10px 15px"
|
||||
@click="handleSave"
|
||||
>Save</el-button>
|
||||
>Save</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
</template>
|
||||
<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 {
|
||||
name: 'UserInfo',
|
||||
name: "UserInfo",
|
||||
props: {
|
||||
userId: { type: String, default: '' }
|
||||
userId: { type: String, default: "" },
|
||||
},
|
||||
data() {
|
||||
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 */
|
||||
var reg1 = /^[a-zA-Z0-9_]{4,16}$/; //密码必须是8位以上、必须含有字母、数字、特殊符号
|
||||
console.log(!reg1.test(value))
|
||||
console.log(!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 {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
};
|
||||
return {
|
||||
user: {
|
||||
UserName: '',
|
||||
LastName: '',
|
||||
FirstName: '',
|
||||
Sex: '',
|
||||
EMail: '',
|
||||
Phone: '',
|
||||
UserTypeId: '',
|
||||
IsZhiZhun: '',
|
||||
OrganizationName: '',
|
||||
DepartmentName: '',
|
||||
PositionName: '',
|
||||
UserName: "",
|
||||
LastName: "",
|
||||
FirstName: "",
|
||||
Sex: "",
|
||||
EMail: "",
|
||||
Phone: "",
|
||||
UserTypeId: "",
|
||||
IsZhiZhun: "",
|
||||
OrganizationName: "",
|
||||
DepartmentName: "",
|
||||
PositionName: "",
|
||||
IsTestUser: false,
|
||||
verifyCode:''
|
||||
verifyCode: "",
|
||||
checkCode: "",
|
||||
},
|
||||
userFormRules: {
|
||||
checkCode: [
|
||||
{
|
||||
required: true,
|
||||
message: "Please Input",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
],
|
||||
UserName: [
|
||||
{ required: true, validator: validatePassword, trigger: 'blur' }
|
||||
{ required: true, validator: validatePassword, trigger: "blur" },
|
||||
],
|
||||
UserTypeId: [
|
||||
{ required: true, message: 'Please Select', trigger: ['blur', 'change'] }
|
||||
{
|
||||
required: true,
|
||||
message: "Please Select",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
],
|
||||
IsZhiZhun: [
|
||||
{ required: true, message: 'Please Select', trigger: ['blur', 'change'] }
|
||||
{
|
||||
required: true,
|
||||
message: "Please Select",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
],
|
||||
OrganizationName: [
|
||||
{ required: true, message: 'Please specify', trigger: 'blur' }
|
||||
{ required: true, message: "Please specify", trigger: "blur" },
|
||||
],
|
||||
LastName: [
|
||||
{ required: true, message: 'Please specify', trigger: 'blur' },
|
||||
{ max: 50, message: 'The maximum length is 50' }
|
||||
{ required: true, message: "Please specify", trigger: "blur" },
|
||||
{ max: 50, message: "The maximum length is 50" },
|
||||
],
|
||||
FirstName: [
|
||||
{ required: true, message: 'Please specify', trigger: 'blur' },
|
||||
{ max: 50, message: 'The maximum length is 50' }
|
||||
{ required: true, message: "Please specify", trigger: "blur" },
|
||||
{ max: 50, message: "The maximum length is 50" },
|
||||
],
|
||||
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: [
|
||||
{
|
||||
required: true,
|
||||
message: 'Please input the email address',
|
||||
trigger: 'blur'
|
||||
message: "Please input the email address",
|
||||
trigger: "blur",
|
||||
},
|
||||
{
|
||||
type: 'email',
|
||||
message: 'Please input the correct email address',
|
||||
trigger: ['blur']
|
||||
type: "email",
|
||||
message: "Please input the correct email address",
|
||||
trigger: ["blur"],
|
||||
},
|
||||
{ max: 50, message: 'The maximum length is 50' }
|
||||
],
|
||||
Sex: [
|
||||
{ required: true, message: 'Please specify', trigger: 'blur' }
|
||||
{ max: 50, message: "The maximum length is 50" },
|
||||
],
|
||||
Sex: [{ required: true, message: "Please specify", trigger: "blur" }],
|
||||
Status: [
|
||||
{ required: true, message: 'Please specify', trigger: 'blur' }
|
||||
{ required: true, message: "Please specify", trigger: "blur" },
|
||||
],
|
||||
DepartmentName: [
|
||||
{ max: 50, message: 'The maximum length is 50' }],
|
||||
PositionName: [{ max: 50, message: 'The maximum length is 50' }
|
||||
]
|
||||
DepartmentName: [{ max: 50, message: "The maximum length is 50" }],
|
||||
PositionName: [{ max: 50, message: "The maximum length is 50" }],
|
||||
},
|
||||
userTypeOptions: [],
|
||||
isDisabled: false,
|
||||
type: 0 // 1为编辑,0为新增
|
||||
}
|
||||
type: 0, // 1为编辑,0为新增
|
||||
IsCanConnectInternet: true, // 是否连接互联网
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getUserTypeList()
|
||||
if (this.userId !== '') {
|
||||
this.getUserInfo()
|
||||
this.type = 1
|
||||
this.getUserTypeList();
|
||||
if (this.userId !== "") {
|
||||
this.getUserInfo();
|
||||
this.type = 1;
|
||||
} else {
|
||||
this.type = 0
|
||||
this.type = 0;
|
||||
}
|
||||
this.getInfo();
|
||||
},
|
||||
methods: {
|
||||
// 获取医院信息
|
||||
async getInfo() {
|
||||
try {
|
||||
let res = await getHospital();
|
||||
if (res.IsSuccess) {
|
||||
this.IsCanConnectInternet = res.Result.IsCanConnectInternet;
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
},
|
||||
handleSave() {
|
||||
this.$refs.userForm.validate(valid => {
|
||||
this.$refs.userForm.validate((valid) => {
|
||||
if (valid) {
|
||||
this.isDisabled = true
|
||||
const selectedUserType = this.userTypeOptions.filter(item => item.Id === this.user.UserTypeId)
|
||||
this.isDisabled = true;
|
||||
const selectedUserType = this.userTypeOptions.filter(
|
||||
(item) => item.Id === this.user.UserTypeId
|
||||
);
|
||||
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.RouteUrl = `${location.protocol}//${location.host}/email-recompose`
|
||||
this.user.BaseUrl = `${location.protocol}//${location.host}/login`;
|
||||
this.user.RouteUrl = `${location.protocol}//${location.host}/email-recompose`;
|
||||
if (this.user.Id) {
|
||||
updateUser(this.user).then(res => {
|
||||
this.isDisabled = false
|
||||
this.$message.success('Updated successfully')
|
||||
}).catch(() => { this.isDisabled = false })
|
||||
updateUser(this.user)
|
||||
.then((res) => {
|
||||
this.isDisabled = false;
|
||||
this.$message.success("Updated successfully");
|
||||
})
|
||||
.catch(() => {
|
||||
this.isDisabled = false;
|
||||
});
|
||||
} else {
|
||||
addUser(this.user).then(res => {
|
||||
this.isDisabled = false
|
||||
this.user.Id = res.Result.Id
|
||||
this.user.UserCode = res.Result.UserCode
|
||||
this.$emit('getUserId', res.Result.Id)
|
||||
this.$message.success('Added successfully')
|
||||
this.$router.push({ path: '/system/user/list' })
|
||||
}).catch(() => { this.isDisabled = false })
|
||||
addUser(this.user)
|
||||
.then((res) => {
|
||||
this.isDisabled = false;
|
||||
this.user.Id = res.Result.Id;
|
||||
this.user.UserCode = res.Result.UserCode;
|
||||
this.$emit("getUserId", res.Result.Id);
|
||||
this.$message.success("Added successfully");
|
||||
this.$router.push({ path: "/system/user/list" });
|
||||
})
|
||||
.catch(() => {
|
||||
this.isDisabled = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
getUserTypeList() {
|
||||
getUserTypeListByUserType(0).then(res => {
|
||||
getUserTypeListByUserType(0).then((res) => {
|
||||
if (res.IsSuccess) {
|
||||
this.userTypeOptions = res.Result
|
||||
this.userTypeOptions = res.Result;
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
getUserInfo() {
|
||||
getUser(this.userId).then(res => {
|
||||
this.user = res.Result
|
||||
})
|
||||
getUser(this.userId).then((res) => {
|
||||
this.user = res.Result;
|
||||
});
|
||||
},
|
||||
OrgnizationTypeChanged(val) {
|
||||
this.user.OrganizationName = ''
|
||||
}
|
||||
}
|
||||
}
|
||||
this.user.OrganizationName = "";
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
::v-deep .is-error.my_new_pwd{
|
||||
::v-deep .is-error.my_new_pwd {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
</style>
|
||||
|
|
Loading…
Reference in New Issue