Browse Source

优化数据字典类型修改及编辑功能,增加数据字典类型修改、删除接口

pull/27/head
初十 4 years ago
parent
commit
bf8c2f5597
  1. 20
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/UpdateDataDictinaryInput.cs
  2. 16
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/IDataDictionaryAppService.cs
  3. 13
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application/DataDictionaries/DataDictionaryAppService.cs
  4. 6
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Domain/DataDictionaries/Aggregates/DataDictionary.cs
  5. 29
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Domain/DataDictionaries/DataDictionaryManager.cs
  6. 18
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.HttpApi/DataDictionaries/DataDictionaryController.cs
  7. 20
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.HttpApiTests/DataDictionaries/DataDictionaryControllerTests.cs
  8. 20
      aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.HttpApiTests/Lion.AbpPro.DataDictionaryManagement.HttpApiTests.csproj
  9. 1
      aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Program.cs
  10. 100
      vben271/src/services/ServiceProxies.ts
  11. 70
      vben271/src/views/admin/dictionary/AbpDictionary.ts
  12. 54
      vben271/src/views/admin/dictionary/AbpDictionary.vue
  13. 72
      vben271/src/views/admin/dictionary/EditAbpDictionaryType.vue

20
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/Dtos/UpdateDataDictinaryInput.cs

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos
{
public class UpdateDataDictinaryInput
{
[Required]
public Guid Id { get; set; }
[Required]
public string Code { get; set; }
[Required]
public string DisplayText { get; set; }
public string Description { get; set; }
}
}

16
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application.Contracts/DataDictionaries/IDataDictionaryAppService.cs

@ -1,6 +1,7 @@
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos; using Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos;
using Lion.AbpPro.Extension.Customs.Dtos;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
@ -48,5 +49,20 @@ namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
Task DeleteAsync(DeleteDataDictionaryDetailInput input); Task DeleteAsync(DeleteDataDictionaryDetailInput input);
/// <summary>
/// 删除字典类型
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task DeleteDictinaryTypeAsync(IdInput input);
/// <summary>
/// 修改数据字典
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task UpdateAsync(UpdateDataDictinaryInput input);
} }
} }

13
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Application/DataDictionaries/DataDictionaryAppService.cs

@ -5,6 +5,7 @@ using System.Threading.Tasks;
using Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates; using Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates;
using Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos; using Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos;
using Lion.AbpPro.DataDictionaryManagement.Permissions; using Lion.AbpPro.DataDictionaryManagement.Permissions;
using Lion.AbpPro.Extension.Customs.Dtos;
using Lion.AbpPro.Extension.System; using Lion.AbpPro.Extension.System;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
@ -112,5 +113,17 @@ namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries
{ {
return _dataDictionaryManager.DeleteAsync(input.DataDictionaryId, input.DataDictionayDetailId); return _dataDictionaryManager.DeleteAsync(input.DataDictionaryId, input.DataDictionayDetailId);
} }
[Authorize(DataDictionaryManagementPermissions.DataDictionaryManagement.Delete)]
public Task DeleteDictinaryTypeAsync(IdInput input)
{
return _dataDictionaryManager.DeleteDictinaryTypeAsync(input.Id);
}
[Authorize(DataDictionaryManagementPermissions.DataDictionaryManagement.Update)]
public Task UpdateAsync(UpdateDataDictinaryInput input)
{
return _dataDictionaryManager.UpdateAsync( input.Id, input.DisplayText, input.Description);
}
} }
} }

6
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Domain/DataDictionaries/Aggregates/DataDictionary.cs

@ -114,5 +114,11 @@ namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Aggregates
Details.Remove(detail); Details.Remove(detail);
} }
public void Update(Guid dataDictionayDetailId,string displayText,string description)
{
SetDescription(description);
SetDisplayText(displayText);
}
} }
} }

29
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.Domain/DataDictionaries/DataDictionaryManager.cs

@ -147,5 +147,34 @@ namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries
entity.Details.Remove(detail); entity.Details.Remove(detail);
await _dataDictionaryRepository.UpdateAsync(entity); await _dataDictionaryRepository.UpdateAsync(entity);
} }
public async Task<DataDictionary> UpdateAsync(Guid dataDictionaryId,
string displayText,
string description)
{
var entity = await _dataDictionaryRepository.FindByIdAsync(dataDictionaryId);
if (entity == null)
throw new DataDictionaryDomainException(message: "数据字典不存在");
entity.Update(dataDictionaryId,displayText,description);
return await _dataDictionaryRepository.UpdateAsync(entity);
}
/// <summary>
/// 删除字典类型
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task DeleteDictinaryTypeAsync(Guid id)
{
var entity = await _dataDictionaryRepository.FindByIdAsync(id);
if (entity == null)
throw new DataDictionaryDomainException(message: "数据字典不存在");
var detail = entity.Details.FirstOrDefault(e => e.DataDictionaryId == id);
if (detail !=null )
{
entity.Details.Remove(detail);
await _dataDictionaryRepository.UpdateAsync(entity);
}
await _dataDictionaryRepository.DeleteAsync(id);
}
} }
} }

18
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.HttpApi/DataDictionaries/DataDictionaryController.cs

@ -1,9 +1,9 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos; using Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Dtos;
using Lion.AbpPro.Extension.Customs.Dtos;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.Annotations; using Swashbuckle.AspNetCore.Annotations;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries
{ {
@ -67,5 +67,21 @@ namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries
{ {
return _dataDictionaryAppService.DeleteAsync(input); return _dataDictionaryAppService.DeleteAsync(input);
} }
[HttpPost("deleteDictinaryType")]
[SwaggerOperation(summary: "删除字典类型", Tags = new[] { "DataDictionary" })]
public Task DeleteDictinaryTypeAsync(IdInput input)
{
return _dataDictionaryAppService.DeleteDictinaryTypeAsync(input);
}
[HttpPost("update")]
[SwaggerOperation(summary: "修改字典类型", Tags = new[] { "DataDictionary" })]
public Task UpdateAsync(UpdateDataDictinaryInput input)
{
return _dataDictionaryAppService.UpdateAsync(input);
}
} }
} }

20
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.HttpApiTests/DataDictionaries/DataDictionaryControllerTests.cs

@ -0,0 +1,20 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Lion.AbpPro.DataDictionaryManagement.DataDictionaries;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Lion.AbpPro.DataDictionaryManagement.DataDictionaries.Tests
{
[TestClass()]
public class DataDictionaryControllerTests
{
[TestMethod()]
public void CreateAsyncTest()
{
Assert.Fail();
}
}
}

20
aspnet-core/modules/DataDictionaryManagement/src/Lion.AbpPro.DataDictionaryManagement.HttpApiTests/Lion.AbpPro.DataDictionaryManagement.HttpApiTests.csproj

@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>.NETCoreApp,Version=v6.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" />
<PackageReference Include="MSTest.TestAdapter" Version="2.2.3" />
<PackageReference Include="MSTest.TestFramework" Version="2.2.3" />
<PackageReference Include="coverlet.collector" Version="3.0.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Lion.AbpPro.DataDictionaryManagement.HttpApi\Lion.AbpPro.DataDictionaryManagement.HttpApi.csproj" />
</ItemGroup>
</Project>

1
aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Program.cs

@ -23,6 +23,7 @@ namespace Lion.AbpPro
{ {
webBuilder.ConfigureKestrel((context, options) => { options.Limits.MaxRequestBodySize = 1024 * 50; }); webBuilder.ConfigureKestrel((context, options) => { options.Limits.MaxRequestBodySize = 1024 * 50; });
webBuilder.UseStartup<Startup>(); webBuilder.UseStartup<Startup>();
webBuilder.UseUrls("http://localhost:44315");
}) })
.UseSerilog((context, loggerConfiguration) => .UseSerilog((context, loggerConfiguration) =>
{ {

100
vben271/src/services/ServiceProxies.ts

@ -3031,7 +3031,39 @@ export class DataDictionaryServiceProxy extends ServiceProxyBase {
} }
return Promise.resolve<void>(<any>null); return Promise.resolve<void>(<any>null);
} }
/**
*
* @param body (optional)
* @return Success
*/
update(body: UpdateDetailInput | undefined , cancelToken?: CancelToken | undefined): Promise<void> {
let url_ = this.baseUrl + "/DataDictionary/update";
url_ = url_.replace(/[?&]$/, "");
const content_ = JSON.stringify(body);
let options_ = <AxiosRequestConfig>{
data: content_,
method: "POST",
url: url_,
headers: {
"Content-Type": "application/json",
},
cancelToken
};
return this.transformOptions(options_).then(transformedOptions_ => {
return this.instance.request(transformedOptions_);
}).catch((_error: any) => {
if (isAxiosError(_error) && _error.response) {
return _error.response;
} else {
throw _error;
}
}).then((_response: AxiosResponse) => {
return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processUpdateDetail(_response));
});
}
/** /**
* *
* @param body (optional) * @param body (optional)
@ -3121,7 +3153,39 @@ export class DataDictionaryServiceProxy extends ServiceProxyBase {
} }
return Promise.resolve<void>(<any>null); return Promise.resolve<void>(<any>null);
} }
/**
*
* @param body (optional)
* @return Success
*/
deleteDictinaryType(body: DeleteDataDictionaryInput | undefined , cancelToken?: CancelToken | undefined): Promise<void> {
let url_ = this.baseUrl + "/DataDictionary/deleteDictinaryType";
url_ = url_.replace(/[?&]$/, "");
const content_ = JSON.stringify(body);
let options_ = <AxiosRequestConfig>{
data: content_,
method: "POST",
url: url_,
headers: {
"Content-Type": "application/json",
},
cancelToken
};
return this.transformOptions(options_).then(transformedOptions_ => {
return this.instance.request(transformedOptions_);
}).catch((_error: any) => {
if (isAxiosError(_error) && _error.response) {
return _error.response;
} else {
throw _error;
}
}).then((_response: AxiosResponse) => {
return this.transformResult(url_, _response, (_response: AxiosResponse) => this.processDelete(_response));
});
}
/** /**
* *
* @param body (optional) * @param body (optional)
@ -8981,6 +9045,42 @@ export interface IDeleteDataDictionaryDetailInput {
dataDictionayDetailId: string; dataDictionayDetailId: string;
} }
export class DeleteDataDictionaryInput implements IDeleteDataDictionaryInput {
Id!: string;
constructor(data?: IDeleteDataDictionaryInput) {
if (data) {
for (var property in data) {
if (data.hasOwnProperty(property))
(<any>this)[property] = (<any>data)[property];
}
}
}
init(_data?: any) {
if (_data) {
this.Id = _data["Id"];
}
}
static fromJS(data: any): DeleteDataDictionaryInput {
data = typeof data === 'object' ? data : {};
let result = new DeleteDataDictionaryInput();
result.init(data);
return result;
}
toJSON(data?: any) {
data = typeof data === 'object' ? data : {};
data["Id"] = this.Id;
return data;
}
}
export interface IDeleteDataDictionaryInput {
Id: string;
}
export class EmailSettingsDto implements IEmailSettingsDto { export class EmailSettingsDto implements IEmailSettingsDto {
smtpHost!: string | undefined; smtpHost!: string | undefined;
smtpPort!: number; smtpPort!: number;

70
vben271/src/views/admin/dictionary/AbpDictionary.ts

@ -7,9 +7,11 @@ import {
DataDictionaryServiceProxy, DataDictionaryServiceProxy,
SetDataDictinaryDetailInput, SetDataDictinaryDetailInput,
DeleteDataDictionaryDetailInput, DeleteDataDictionaryDetailInput,
DeleteDataDictionaryInput,
} from '/@/services/ServiceProxies'; } from '/@/services/ServiceProxies';
import { h } from 'vue'; import { h } from 'vue';
import { Switch } from 'ant-design-vue'; import { Switch } from 'ant-design-vue';
import { debug } from 'console';
const { t } = useI18n(); const { t } = useI18n();
export const tableColumns: BasicColumn[] = [ export const tableColumns: BasicColumn[] = [
{ {
@ -258,7 +260,53 @@ export const createDictionaryTypeFormSchema: FormSchema[] = [
}, },
}, },
]; ];
//编辑字典类型
export const editDictionaryTypeFormSchema: FormSchema[] = [
{
field: 'code',
label: t('routes.admin.dictionaryCode'),
component: 'Input',
required: true,
colProps: {
span: 22,
},
},
{
field: 'displayText',
label: t('routes.admin.dictionaryDisplayText'),
component: 'Input',
required: true,
colProps: {
span: 22,
},
},
{
field: 'description',
label: t('routes.admin.dictionaryDescription'),
component: 'InputTextArea',
colProps: {
span: 22,
},
},
{
field: 'key',
label: '',
ifShow: false,
component: 'Input',
colProps: {
span: 18,
},
},
{
field: 'id',
label: '',
ifShow: false,
component: 'Input',
colProps: {
span: 18,
},
},
];
/** /**
* *
* *
@ -287,7 +335,16 @@ export async function createDictionaryTypeAsync({
changeOkLoading(false); changeOkLoading(false);
closeModal(); closeModal();
} }
//编辑数据字典类型
export async function editDictionaryTypeAsync({ request, changeOkLoading, validate, closeModal }) {
changeOkLoading(true);
await validate();
const _dataDictionaryServiceProxy = new DataDictionaryServiceProxy();
await _dataDictionaryServiceProxy.update(request);
message.success(t('common.operationSuccess'));
changeOkLoading(false);
closeModal();
}
//启用|禁用详情字典 //启用|禁用详情字典
export async function enableDictionaryAsync(input: SetDataDictinaryDetailInput) { export async function enableDictionaryAsync(input: SetDataDictinaryDetailInput) {
const _dataDictionaryServiceProxy = new DataDictionaryServiceProxy(); const _dataDictionaryServiceProxy = new DataDictionaryServiceProxy();
@ -343,3 +400,12 @@ export async function deleleDetailAsync({ dataDictionaryId, dataDictionayDetailI
await _dataDictionaryServiceProxy.delete(request); await _dataDictionaryServiceProxy.delete(request);
reload(); reload();
} }
export async function deleteDictinaryTypeAsync({ Id, reloadType }) {
const _dataDictionaryServiceProxy = new DataDictionaryServiceProxy();
const request = new DeleteDataDictionaryInput();
request.Id = Id;
await _dataDictionaryServiceProxy.deleteDictinaryType(request);
reloadType();
}

54
vben271/src/views/admin/dictionary/AbpDictionary.vue

@ -18,6 +18,20 @@
{{ t('common.createText') }}</a-button {{ t('common.createText') }}</a-button
> >
</template> </template>
<template #action="{ record }">
<TableAction
:dropDownActions="[
{
label: t('common.editText'),
onClick: handleEditType.bind(null, record),
},
{
label: t('common.delText'),
onClick: handleDeleteDictinaryType.bind(null, record),
},
]"
/>
</template>
</BasicTable> </BasicTable>
<BasicTable @register="registerTable" class="w-3/4 xl:w-4/5" size="small"> <BasicTable @register="registerTable" class="w-3/4 xl:w-4/5" size="small">
@ -51,12 +65,10 @@
/> />
</template> </template>
</BasicTable> </BasicTable>
<CreateAbpDictionaryType <CreateAbpDictionaryType @reloadType="reloadType" @register="registerCreateType" />
@reloadType="reloadType"
@register="registerCreateType"
></CreateAbpDictionaryType>
<CreateAbpDictionary @register="registerCreateModal" @reload="reload" /> <CreateAbpDictionary @register="registerCreateModal" @reload="reload" />
<EditAbpDictionary @register="registerEditModal" @reload="reload" /> <EditAbpDictionary @register="registerEditModal" @reload="reload" />
<EditAbpDictionaryType @register="registerEditTypeModal" @reload="reload" />
</PageWrapper> </PageWrapper>
</div> </div>
</template> </template>
@ -68,6 +80,7 @@
import { BasicModal, useModal } from '/@/components/Modal'; import { BasicModal, useModal } from '/@/components/Modal';
import CreateAbpDictionary from './CreateAbpDictionary.vue'; import CreateAbpDictionary from './CreateAbpDictionary.vue';
import EditAbpDictionary from './EditAbpDictionary.vue'; import EditAbpDictionary from './EditAbpDictionary.vue';
import EditAbpDictionaryType from './EditAbpDictionaryType.vue';
import CreateAbpDictionaryType from './CreateAbpDictionaryType.vue'; import CreateAbpDictionaryType from './CreateAbpDictionaryType.vue';
import { useI18n } from '/@/hooks/web/useI18n'; import { useI18n } from '/@/hooks/web/useI18n';
@ -79,6 +92,7 @@
searchDictionaryFormSchema, searchDictionaryFormSchema,
getDictionaryDetailsAsync, getDictionaryDetailsAsync,
deleleDetailAsync, deleleDetailAsync,
deleteDictinaryTypeAsync,
} from './AbpDictionary'; } from './AbpDictionary';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import { Tag, message } from 'ant-design-vue'; import { Tag, message } from 'ant-design-vue';
@ -93,12 +107,14 @@
CreateAbpDictionaryType, CreateAbpDictionaryType,
CreateAbpDictionary, CreateAbpDictionary,
EditAbpDictionary, EditAbpDictionary,
EditAbpDictionaryType,
}, },
setup() { setup() {
const { t } = useI18n(); const { t } = useI18n();
const [registerCreateModal, { openModal: createModal }] = useModal(); const [registerCreateModal, { openModal: createModal }] = useModal();
const [registerEditModal, { openModal: editModal }] = useModal(); const [registerEditModal, { openModal: editModal }] = useModal();
const [registerEditTypeModal, { openModal: editTypeModal }] = useModal();
const [registerCreateType, { openModal: createTypeModal }] = useModal(); const [registerCreateType, { openModal: createTypeModal }] = useModal();
const selectedDataDictionaryIdRef = ref(''); const selectedDataDictionaryIdRef = ref('');
const selectedDataDictionaryDisplayTextRef = ref(''); const selectedDataDictionaryDisplayTextRef = ref('');
@ -119,6 +135,12 @@
canResize: true, canResize: true,
rowSelection: { type: 'radio' }, rowSelection: { type: 'radio' },
pagination: false, pagination: false,
actionColumn: {
width: 50,
title: t('common.action'),
dataIndex: 'action',
slots: { customRender: 'action' },
},
}); });
// //
@ -140,7 +162,25 @@
createModal(true, { dictionaryCreate: dictionaryCreate }); createModal(true, { dictionaryCreate: dictionaryCreate });
} }
}; };
const handleEditType = (record: Recordable) => {
editTypeModal(true, {
record: record,
});
};
const handleDeleteDictinaryType = async (record: Recordable) => {
let msg = t('common.askDelete');
createConfirm({
iconType: 'warning',
title: t('common.tip'),
content: msg,
onOk: async () => {
await deleteDictinaryTypeAsync({
Id: record.id,
reloadType,
});
},
});
};
const [registerTable, { reload }] = useTable({ const [registerTable, { reload }] = useTable({
columns: tableColumns, columns: tableColumns,
formConfig: { formConfig: {
@ -172,7 +212,6 @@
record: record, record: record,
}); });
}; };
const handleCreateType = () => { const handleCreateType = () => {
createTypeModal(true); createTypeModal(true);
}; };
@ -196,8 +235,10 @@
registerTable, registerTable,
registerCreateModal, registerCreateModal,
registerEditModal, registerEditModal,
registerEditTypeModal,
handleCreate, handleCreate,
handleEdit, handleEdit,
handleEditType,
reload, reload,
registerTypeTable, registerTypeTable,
registerCreateType, registerCreateType,
@ -207,6 +248,7 @@
clearSelectedRowKeys, clearSelectedRowKeys,
t, t,
handleDelete, handleDelete,
handleDeleteDictinaryType,
}; };
}, },
}); });

72
vben271/src/views/admin/dictionary/EditAbpDictionaryType.vue

@ -0,0 +1,72 @@
<template>
<BasicModal
:title="t('common.editText')"
:canFullscreen="false"
@ok="submit"
@cancel="cancel"
@register="registerModal"
:destroyOnClose="true"
:maskClosable="false"
:minHeight="100"
>
<BasicForm @register="registeDictionaryTypeForm" />
</BasicModal>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { useI18n } from '/@/hooks/web/useI18n';
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { editDictionaryTypeFormSchema, editDictionaryTypeAsync } from './AbpDictionary';
export default defineComponent({
name: 'EditDictionary',
components: {
BasicModal,
BasicForm,
},
setup(_, { emit }) {
const { t } = useI18n();
const [registerModal, { closeModal, changeOkLoading }] = useModalInner((data) => {
setFieldsValue({
id: data.record.id,
code: data.record.code,
description: data.record.description,
displayText: data.record.displayText,
key: data.record.key,
});
});
const [registeDictionaryTypeForm, { setFieldsValue, getFieldsValue, validate, resetFields }] =
useForm({
labelWidth: 100,
schemas: editDictionaryTypeFormSchema,
showActionButtonGroup: false,
});
const submit = async () => {
try {
let request = getFieldsValue();
await editDictionaryTypeAsync({ request, changeOkLoading, validate, closeModal });
emit('reloadType');
} catch (error) {
changeOkLoading(false);
}
};
const cancel = () => {
resetFields();
closeModal();
};
return {
registerModal,
registeDictionaryTypeForm,
submit,
t,
cancel,
};
},
});
</script>
<style lang="less" scoped></style>
Loading…
Cancel
Save