Browse Source

👣 编写基础模块字典

master
wangxiang 3 years ago
parent
commit
956ab62df4
  1. 4
      kicc-ui/src/views/system/dict/DictDataModal.vue
  2. 26
      kicc-ui/src/views/system/dict/DictDataTable.vue
  3. 8
      kicc-ui/src/views/system/dict/dictdata.data.ts
  4. 3
      kicc-ui/src/views/system/dict/index.vue
  5. 2
      kicc-ui/src/views/system/role/RoleDrawer.vue

4
kicc-ui/src/views/system/dict/DictDataModal.vue

@ -36,16 +36,18 @@
await clearValidate(); await clearValidate();
// //
tag.value = data._tag; tag.value = data._tag;
const dictType = data.dictType;
const dictDataId = data.record?.id; const dictDataId = data.record?.id;
const props: Partial<ModalProps> = { confirmLoading: false }; const props: Partial<ModalProps> = { confirmLoading: false };
// tag // tag
switch (unref(tag)) { switch (unref(tag)) {
case 'add': case 'add':
props.title = '新增字典数据'; props.title = '新增字典数据';
await setFieldsValue({ dictType });
break; break;
case 'edit': case 'edit':
props.title = '编辑字典数据'; props.title = '编辑字典数据';
await setFieldsValue(await getDictData(dictDataId)); await setFieldsValue( Object.assign({}, { dictType }, await getDictData(dictDataId)));
break; break;
} }
// : // :

26
kicc-ui/src/views/system/dict/DictDataTable.vue

@ -7,9 +7,15 @@
<BasicTable @register="registerTable" <BasicTable @register="registerTable"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<template #tableTitle>
<ATag color="red"
style="font-size: 14px;font-weight: 700;"
>>>字典数据列表[{{state.dictType}}]</ATag>
</template>
<template #toolbar> <template #toolbar>
<a-button v-auth="['dictData_add']" <a-button v-auth="['dictData_add']"
type="primary" type="primary"
:disabled="!state.dictType"
@click="handleAdd()" @click="handleAdd()"
>新增字典数据</a-button> >新增字典数据</a-button>
<a-button v-auth="['dictData_edit']" <a-button v-auth="['dictData_edit']"
@ -51,7 +57,7 @@
* Copyright © 2020-2022 <a href="http://www.entfrm.com/">entfrm</a> All rights reserved. * Copyright © 2020-2022 <a href="http://www.entfrm.com/">entfrm</a> All rights reserved.
* author entfrm开发团队-王翔 * author entfrm开发团队-王翔
*/ */
import {defineComponent, ref, reactive, toRaw} from 'vue'; import { defineComponent, reactive, toRaw } from 'vue';
import { PageWrapper } from '/@/components/Page'; import { PageWrapper } from '/@/components/Page';
import { BasicTable, useTable, TableAction } from '/@/components/Table'; import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { columns, searchFormSchema } from './dictdata.data'; import { columns, searchFormSchema } from './dictdata.data';
@ -59,17 +65,18 @@
import { useModal } from '/@/components/Modal'; import { useModal } from '/@/components/Modal';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import DictDataModal from './DictDataModal.vue'; import DictDataModal from './DictDataModal.vue';
import { Tag } from 'ant-design-vue';
/** 类型规范统一声明定义区域 */ /** 类型规范统一声明定义区域 */
interface TableState { interface TableState {
dictType: String; dictType: string;
single: boolean; single: boolean;
multiple: boolean; multiple: boolean;
} }
export default defineComponent({ export default defineComponent({
name: 'DictDataManagement', name: 'DictDataManagement',
components: { BasicTable, PageWrapper, DictDataModal, TableAction }, components: { BasicTable, PageWrapper, DictDataModal, TableAction, ATag: Tag },
setup() { setup() {
/** 通用变量统一声明区域 */ /** 通用变量统一声明区域 */
@ -83,8 +90,7 @@
}); });
const { createConfirm, createMessage } = useMessage(); const { createConfirm, createMessage } = useMessage();
const [registerModal, { openModal }] = useModal(); const [registerModal, { openModal }] = useModal();
const [registerTable, { reload, setProps, clearSelectedRowKeys, getSelectRowKeys }] = useTable({ const [registerTable, { reload, clearSelectedRowKeys, getSelectRowKeys, getForm, setProps }] = useTable({
title: '>>字典项列表',
api: listDictData, api: listDictData,
rowKey: 'id', rowKey: 'id',
columns, columns,
@ -98,6 +104,7 @@
showTableSetting: true, showTableSetting: true,
bordered: true, bordered: true,
showIndexColumn: false, showIndexColumn: false,
clickToRowSelect: false,
actionColumn: { actionColumn: {
width: 220, width: 220,
title: '操作', title: '操作',
@ -105,14 +112,13 @@
slots: { customRender: 'action' }, slots: { customRender: 'action' },
fixed: false fixed: false
}, },
handleSearchInfoFn: () => clearSelectedRowKeys(), handleSearchInfoFn: () => clearSelectedRowKeys()
immediate: false
}); });
/** 根据字典类型查找字典数据 */ /** 根据字典类型查找字典数据 */
function filterByDictType(dictType: string) { function filterByDictType(dictType: string) {
setProps({ searchInfo: { dictType } });
state.dictType = dictType; state.dictType = dictType;
getForm().setFieldsValue({ dictType: state.dictType });
reload(); reload();
} }
@ -125,13 +131,13 @@
/** 新增按钮操作,行内新增与工具栏局域新增通用 */ /** 新增按钮操作,行内新增与工具栏局域新增通用 */
function handleAdd() { function handleAdd() {
openModal(true,{ _tag: 'add' }); openModal(true,{ _tag: 'add', dictType: state.dictType });
} }
/** 编辑按钮操作,行内编辑 */ /** 编辑按钮操作,行内编辑 */
function handleEdit(record?: Recordable) { function handleEdit(record?: Recordable) {
record = record || { id: getSelectRowKeys() }; record = record || { id: getSelectRowKeys() };
openModal(true, { _tag: 'edit', record }); openModal(true, { _tag: 'edit', record, dictType: state.dictType });
} }
/** 删除按钮操作,行内删除 */ /** 删除按钮操作,行内删除 */

8
kicc-ui/src/views/system/dict/dictdata.data.ts

@ -31,16 +31,16 @@ export const columns: BasicColumn[] = [
/** 搜索表单配置 */ /** 搜索表单配置 */
export const searchFormSchema: FormSchema[] = [ export const searchFormSchema: FormSchema[] = [
{ {
field: 'dataType', field: 'dictType',
label: '字典类型', label: '字典数据类型',
component: 'Input', component: 'Input',
componentProps: { componentProps: {
placeholder: '请输入字典类型' placeholder: '请输入字典数据类型'
}, },
colProps: { span: 12 } colProps: { span: 12 }
}, },
{ {
field: 'dataType', field: 'label',
label: '字典数据标签', label: '字典数据标签',
component: 'Input', component: 'Input',
componentProps: { componentProps: {

3
kicc-ui/src/views/system/dict/index.vue

@ -101,6 +101,7 @@
showTableSetting: true, showTableSetting: true,
bordered: true, bordered: true,
showIndexColumn: false, showIndexColumn: false,
clickToRowSelect: false,
actionColumn: { actionColumn: {
width: 220, width: 220,
title: '操作', title: '操作',
@ -146,7 +147,7 @@
/** 处理点击字典子表 */ /** 处理点击字典子表 */
function handleClickSubTable(record: Recordable) { function handleClickSubTable(record: Recordable) {
dictSubRef.value.filterByDictType(record); dictSubRef.value.filterByDictType(record?.type);
} }
/** 处理表格刷新 */ /** 处理表格刷新 */

2
kicc-ui/src/views/system/role/RoleDrawer.vue

@ -78,7 +78,7 @@
const result = await getRoleMenuIds(roleId); const result = await getRoleMenuIds(roleId);
const role = await getRole(roleId); const role = await getRole(roleId);
state.checkedKeys = result.extend; state.checkedKeys = result.extend;
await setFieldsValue(Object.assign(role, { menuIds: result.extend })); await setFieldsValue(Object.assign({}, role, { menuIds: result.extend }));
break; break;
} }
// : // :

Loading…
Cancel
Save