irc_web/.svn/pristine/17/17c3abb9acc3db0bd49f55f6c9b...

279 lines
8.7 KiB
Plaintext

<template>
<div class="form-container basic-form">
<el-card class="box-card">
<div style="width: 1000px">
<!-- v-loading="loading" -->
<el-form
ref="basicInfoForm"
v-loading="loading"
:inline="true"
:rules="rules"
:model="basicInfo"
class="demo-ruleForm"
label-width="120px"
size="small"
>
<el-row>
<el-col :span="12">
<el-form-item v-if="basicInfo.ReviewerCode" label="ID: ">
<el-input v-model="basicInfo.ReviewerCode" disabled size="small" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="Surname: " prop="LastName">
<el-input v-model="basicInfo.LastName" :disabled="$route.query.ReviewStatus === '1'" size="small" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="Given Name: " prop="FirstName">
<el-input v-model="basicInfo.FirstName" :disabled="$route.query.ReviewStatus === '1'" size="small" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="Name CN: " prop="ChineseName">
<el-input v-model="basicInfo.ChineseName" :disabled="$route.query.ReviewStatus === '1'" size="small" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="Gender: " prop="Sex">
<el-select
v-model="basicInfo.Sex"
prop="Sex"
placeholder="Please select gender"
size="small"
:disabled="$route.query.ReviewStatus === '1'"
>
<el-option
v-for="(item, index) of genderOptions"
:key="index"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="Phone: " prop="Phone">
<el-input :disabled="$route.query.ReviewStatus === '1'" v-model="basicInfo.Phone" size="small" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="Title: " prop="TitleIds">
<el-select
:disabled="$route.query.ReviewStatus === '1'"
v-model="basicInfo.TitleIds[0]"
placeholder="Please select Title"
size="small"
>
<!-- <el-option
v-for="item of dict.type.Title"
:key="item.value"
:label="item.label"
:value="item.value"
/> -->
<el-option
v-for="item of dictionaryList.Title"
:key="item.Id"
:label="item.Value"
:value="item.Id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="EMail: " prop="EMail">
<el-input v-model="basicInfo.EMail" :disabled="$route.query.ReviewStatus === '1'" size="small" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="WeChat: " prop="WeChat">
<el-input v-model="basicInfo.WeChat" :disabled="$route.query.ReviewStatus === '1'" size="small" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<!-- <el-form-item label="Payment Type: " prop="Nation">
<el-radio-group v-model="basicInfo.Nation">
<el-radio :label="0">CN</el-radio>
<el-radio :label="1">US</el-radio>
</el-radio-group>
</el-form-item> -->
<el-form-item label="Payment Type: " prop="Nation">
<el-select
:disabled="$route.query.ReviewStatus === '1'"
v-model="basicInfo.Nation"
size="small"
clearable
class="mr"
>
<el-option :value="0" label="CN" />
<el-option :value="1" label="Abroad" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-form-item style="margin-left: 120px">
<el-button
:disabled="$route.query.ReviewStatus === '1'"
type="primary"
:loading="isDisabled"
size="small"
@click="handleSave"
>Save</el-button>
</el-form-item>
</el-row>
</el-form>
</div>
</el-card>
</div>
</template>
<script>
import { getBasicInfo, addOrUpdateDoctorBasicInfo } from '@/api/reviewers'
import { changeURLStatic } from '@/utils/history.js'
import { getBasicDataSelects } from '@/api/dictionary/dictionary'
export default {
data() {
return {
basicInfo: {
Id: '',
ReviewerCode: '',
FirstName: '',
LastName: '',
ChineseName: '',
Sex: '',
TitleIds: [],
Phone: '',
EMail: '',
WeChat: '',
Introduction: '',
Nation: 0
},
rules: {
FirstName: [
{
required: true,
message: 'Please enter FirstName',
trigger: 'blur'
},
{ max: 50, message: 'The maximum length is 50' }
],
LastName: [
{ required: true, message: 'Please enter LastName', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' }
],
ChineseName: [{ max: 50, message: 'The maximum length is 50' }],
Sex: [
{ required: true, message: 'Please select gender', trigger: 'blur' }
],
TitleIds: [
{ required: true, message: 'Please select Title', trigger: 'blur' }
],
Phone: [
{
required: true,
message: 'Please enter phone number',
trigger: 'blur'
},
{ max: 20, min: 7, message: 'The length is 7 to 20' }
],
EMail: [
{
required: true,
message: 'Please input the email address',
trigger: 'blur'
},
{
type: 'email',
message: 'Please input the correct email address',
trigger: 'blur,change'
},
{ max: 50, message: 'The maximum length is 50' }
],
WeChat: [{ max: 50, message: 'The maximum length is 50' }]
},
isDisabled: false,
loading: false,
genderOptions: [
{ label: 'Male', value: 0 },
{ label: 'Female', value: 1 }
],
dictionaryList: {}
}
},
mounted() {
this.initForm()
},
methods: {
handleSave() {
this.$refs.basicInfoForm.validate((valid) => {
if (valid) {
this.loading = true
this.isDisabled = true
addOrUpdateDoctorBasicInfo(this.basicInfo)
.then((res) => {
this.isDisabled = false
this.loading = false
this.$message.success('Saved successfully')
if (!this.id) {
this.basicInfo.Id = res.Result.Id
changeURLStatic('Id', res.Result.Id)
this.basicInfo.ReviewerCode = res.Result.ReviewerCode
}
})
.catch(() => {
this.isDisabled = false
this.loading = false
})
}
})
},
async initForm() {
await this.getDicData()
const id = this.$route.query.Id
if (id) {
this.loading = true
getBasicInfo(id).then((res) => {
// eslint-disable-next-line no-unused-vars
const { TitleList, ...param } = res.Result
this.basicInfo = param
this.loading = false
}).catch(() => {
this.loading = false
})
}
},
getDicData() {
getBasicDataSelects(['Title']).then(res => {
this.dictionaryList = { ...res.Result }
}).catch(() => {
})
}
}
}
</script>
<style lang="scss" scoped>
.basic-form {
.el-input--small {
width: 220px !important;
}
.el-select--small {
width: 220px !important;
}
}
</style>