这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

170 lines
4.5 KiB

<template>
<el-dialog
:visible="showDialog"
:title="$t('tenant.updateTenant')"
width="800px"
custom-class="modal-form"
:show-close="false"
@close="onFormClosed"
>
<div
class="app-container"
>
<el-form
ref="formTenant"
label-width="120px"
:model="tenant"
:rules="tenantRules"
>
<el-form-item
prop="name"
:label="$t('tenant.name')"
>
<el-input
v-model="tenant.name"
:placeholder="$t('pleaseInputBy', {key: $t('tenant.name')})"
/>
</el-form-item>
<el-form-item
v-if="!isEditTenant"
prop="adminEmailAddress"
:label="$t('tenant.adminEmailAddress')"
>
<el-input
v-model="tenant.adminEmailAddress"
:placeholder="$t('pleaseInputBy', {key: $t('tenant.adminEmailAddress')})"
/>
</el-form-item>
<el-form-item
v-if="!isEditTenant"
prop="adminPassword"
:label="$t('tenant.adminPassword')"
>
<el-input
v-model="tenant.adminPassword"
:placeholder="$t('pleaseInputBy', {key: $t('tenant.adminPassword')})"
/>
</el-form-item>
<el-form-item>
<el-button
class="cancel"
style="width:100px;right: 120px;position: absolute;"
@click="onCancel"
>
{{ $t('global.cancel') }}
</el-button>
<el-button
class="confirm"
type="primary"
style="width:100px;right: 10px;position: absolute;"
@click="onSaveTenant"
>
{{ $t('global.confirm') }}
</el-button>
</el-form-item>
</el-form>
</div>
</el-dialog>
</template>
<script lang="ts">
import TenantService, { TenantCreateOrEdit } from '@/api/tenant-management'
import { Component, Mixins, Prop, Watch } from 'vue-property-decorator'
import LocalizationMiXin from '@/mixins/LocalizationMiXin'
@Component({
name: 'TenantCreateOrEditForm'
})
export default class extends Mixins(LocalizationMiXin) {
@Prop({ default: '' })
private tenantId!: string
@Prop({ default: false })
private showDialog!: boolean
private tenant!: TenantCreateOrEdit
get isEditTenant() {
if (this.tenantId) {
return true
}
return false
}
private tenantRules = {
name: [
{ required: true, message: this.l('pleaseInputBy', { key: this.l('tenant.name') }), trigger: 'blur' }
],
adminEmailAddress: [
{ required: true, message: this.l('pleaseInputBy', { key: this.l('tenant.adminEmailAddress') }), trigger: 'blur' },
{ type: 'email', message: this.l('pleaseInputBy', { key: this.l('global.correctEmailAddress') }), trigger: 'blur' }
],
adminPassword: [
{ required: true, message: this.l('pleaseInputBy', { key: this.l('tenant.adminPassword') }), trigger: 'blur' }
]
}
constructor() {
super()
this.tenant = TenantCreateOrEdit.empty()
}
@Watch('tenantId')
private onTenantIdChanged() {
this.handleGetEditTenant()
}
mounted() {
this.handleGetEditTenant()
}
private handleGetEditTenant() {
if (this.showDialog && this.tenantId) {
TenantService.getTenantById(this.tenantId).then(tenant => {
this.tenant.name = tenant.name
})
} else {
this.tenant = TenantCreateOrEdit.empty()
}
}
private onSaveTenant() {
const frmTenant = this.$refs.formTenant as any
frmTenant.validate((valid: boolean) => {
if (valid) {
if (this.isEditTenant) {
TenantService.changeTenantName(this.tenantId, this.tenant.name).then(tenant => {
const message = this.l('tenant.tenantNameChanged', { name: tenant.name })
this.$message.success(message)
this.reset()
this.$emit('closed', true)
})
} else {
TenantService.createTenant(this.tenant).then(tenant => {
const message = this.l('tenant.createTenantSuccess', { name: tenant.name })
this.$message.success(message)
this.reset()
this.$emit('closed', true)
})
}
}
})
}
private onFormClosed() {
this.$emit('closed', false)
}
private onCancel() {
this.reset()
this.$emit('closed', false)
}
private reset() {
this.tenant = TenantCreateOrEdit.empty()
const frmTenant = this.$refs.formTenant as any
frmTenant.resetFields()
}
}
</script>