13 changed files with 799 additions and 75 deletions
@ -0,0 +1,334 @@ |
|||||||
|
// ========== 静态变量 ==========
|
||||||
|
|
||||||
|
/** |
||||||
|
* 全局通用状态枚举 |
||||||
|
*/ |
||||||
|
export const CommonStatusEnum = { |
||||||
|
ENABLE: 0, // 开启
|
||||||
|
DISABLE: 1 // 禁用
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 菜单的类型枚举 |
||||||
|
*/ |
||||||
|
export const SystemMenuTypeEnum = { |
||||||
|
DIR: 1, // 目录
|
||||||
|
MENU: 2, // 菜单
|
||||||
|
BUTTON: 3 // 按钮
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 角色的类型枚举 |
||||||
|
*/ |
||||||
|
export const SystemRoleTypeEnum = { |
||||||
|
SYSTEM: 1, // 内置角色
|
||||||
|
CUSTOM: 2 // 自定义角色
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 数据权限的范围枚举 |
||||||
|
*/ |
||||||
|
export const SystemDataScopeEnum = { |
||||||
|
ALL: 1, // 全部数据权限
|
||||||
|
DEPT_CUSTOM: 2, // 指定部门数据权限
|
||||||
|
DEPT_ONLY: 3, // 部门数据权限
|
||||||
|
DEPT_AND_CHILD: 4, // 部门及以下数据权限
|
||||||
|
DEPT_SELF: 5 // 仅本人数据权限
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 代码生成模板类型 |
||||||
|
*/ |
||||||
|
export const InfraCodegenTemplateTypeEnum = { |
||||||
|
CRUD: 1, // 基础 CRUD
|
||||||
|
TREE: 2, // 树形 CRUD
|
||||||
|
SUB: 3 // 主子表 CRUD
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 任务状态的枚举 |
||||||
|
*/ |
||||||
|
export const InfraJobStatusEnum = { |
||||||
|
INIT: 0, // 初始化中
|
||||||
|
NORMAL: 1, // 运行中
|
||||||
|
STOP: 2 // 暂停运行
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* API 异常数据的处理状态 |
||||||
|
*/ |
||||||
|
export const InfraApiErrorLogProcessStatusEnum = { |
||||||
|
INIT: 0, // 未处理
|
||||||
|
DONE: 1, // 已处理
|
||||||
|
IGNORE: 2 // 已忽略
|
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 用户的社交平台的类型枚举 |
||||||
|
*/ |
||||||
|
export const SystemUserSocialTypeEnum = { |
||||||
|
DINGTALK: { |
||||||
|
title: '钉钉', |
||||||
|
type: 20, |
||||||
|
source: 'dingtalk', |
||||||
|
img: 'https://s1.ax1x.com/2022/05/22/OzMDRs.png' |
||||||
|
}, |
||||||
|
WECHAT_ENTERPRISE: { |
||||||
|
title: '企业微信', |
||||||
|
type: 30, |
||||||
|
source: 'wechat_enterprise', |
||||||
|
img: 'https://s1.ax1x.com/2022/05/22/OzMrzn.png' |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 支付渠道枚举 |
||||||
|
*/ |
||||||
|
export const PayChannelEnum = { |
||||||
|
WX_PUB: { |
||||||
|
code: 'wx_pub', |
||||||
|
name: '微信 JSAPI 支付' |
||||||
|
}, |
||||||
|
WX_LITE: { |
||||||
|
code: 'wx_lite', |
||||||
|
name: '微信小程序支付' |
||||||
|
}, |
||||||
|
WX_APP: { |
||||||
|
code: 'wx_app', |
||||||
|
name: '微信 APP 支付' |
||||||
|
}, |
||||||
|
ALIPAY_PC: { |
||||||
|
code: 'alipay_pc', |
||||||
|
name: '支付宝 PC 网站支付' |
||||||
|
}, |
||||||
|
ALIPAY_WAP: { |
||||||
|
code: 'alipay_wap', |
||||||
|
name: '支付宝 WAP 网站支付' |
||||||
|
}, |
||||||
|
ALIPAY_APP: { |
||||||
|
code: 'alipay_app', |
||||||
|
name: '支付宝 APP 支付' |
||||||
|
}, |
||||||
|
ALIPAY_QR: { |
||||||
|
code: 'alipay_qr', |
||||||
|
name: '支付宝扫码支付' |
||||||
|
}, |
||||||
|
ALIPAY_BAR: { |
||||||
|
code: 'alipay_bar', |
||||||
|
name: '支付宝条码支付' |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 支付的展示模式每局 |
||||||
|
*/ |
||||||
|
export const PayDisplayModeEnum = { |
||||||
|
URL: { |
||||||
|
mode: 'url' |
||||||
|
}, |
||||||
|
IFRAME: { |
||||||
|
mode: 'iframe' |
||||||
|
}, |
||||||
|
FORM: { |
||||||
|
mode: 'form' |
||||||
|
}, |
||||||
|
QR_CODE: { |
||||||
|
mode: 'qr_code' |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 支付类型枚举 |
||||||
|
*/ |
||||||
|
export const PayType = { |
||||||
|
WECHAT: 'WECHAT', |
||||||
|
ALIPAY: 'ALIPAY' |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 支付订单状态枚举 |
||||||
|
*/ |
||||||
|
export const PayOrderStatusEnum = { |
||||||
|
WAITING: { |
||||||
|
status: 0, |
||||||
|
name: '未支付' |
||||||
|
}, |
||||||
|
SUCCESS: { |
||||||
|
status: 10, |
||||||
|
name: '已支付' |
||||||
|
}, |
||||||
|
CLOSED: { |
||||||
|
status: 20, |
||||||
|
name: '支付关闭' |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 支付订单回调状态枚举 |
||||||
|
*/ |
||||||
|
export const PayOrderNotifyStatusEnum = { |
||||||
|
NO: { |
||||||
|
status: 0, |
||||||
|
name: '未通知' |
||||||
|
}, |
||||||
|
SUCCESS: { |
||||||
|
status: 10, |
||||||
|
name: '通知成功' |
||||||
|
}, |
||||||
|
FAILURE: { |
||||||
|
status: 20, |
||||||
|
name: '通知失败' |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 支付订单退款状态枚举 |
||||||
|
*/ |
||||||
|
export const PayOrderRefundStatusEnum = { |
||||||
|
NO: { |
||||||
|
status: 0, |
||||||
|
name: '未退款' |
||||||
|
}, |
||||||
|
SOME: { |
||||||
|
status: 10, |
||||||
|
name: '部分退款' |
||||||
|
}, |
||||||
|
ALL: { |
||||||
|
status: 20, |
||||||
|
name: '全部退款' |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 支付退款订单状态枚举 |
||||||
|
*/ |
||||||
|
export const PayRefundStatusEnum = { |
||||||
|
CREATE: { |
||||||
|
status: 0, |
||||||
|
name: '退款订单生成' |
||||||
|
}, |
||||||
|
SUCCESS: { |
||||||
|
status: 1, |
||||||
|
name: '退款成功' |
||||||
|
}, |
||||||
|
FAILURE: { |
||||||
|
status: 2, |
||||||
|
name: '退款失败' |
||||||
|
}, |
||||||
|
PROCESSING_NOTIFY: { |
||||||
|
status: 3, |
||||||
|
name: '退款中,渠道通知结果' |
||||||
|
}, |
||||||
|
PROCESSING_QUERY: { |
||||||
|
status: 4, |
||||||
|
name: '退款中,系统查询结果' |
||||||
|
}, |
||||||
|
UNKNOWN_RETRY: { |
||||||
|
status: 5, |
||||||
|
name: '状态未知,请重试' |
||||||
|
}, |
||||||
|
UNKNOWN_QUERY: { |
||||||
|
status: 6, |
||||||
|
name: '状态未知,系统查询结果' |
||||||
|
}, |
||||||
|
CLOSE: { |
||||||
|
status: 99, |
||||||
|
name: '退款关闭' |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 商品 SPU 状态 |
||||||
|
*/ |
||||||
|
export const ProductSpuStatusEnum = { |
||||||
|
RECYCLE: { |
||||||
|
status: -1, |
||||||
|
name: '回收站' |
||||||
|
}, |
||||||
|
DISABLE: { |
||||||
|
status: 0, |
||||||
|
name: '下架' |
||||||
|
}, |
||||||
|
ENABLE: { |
||||||
|
status: 1, |
||||||
|
name: '上架' |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 优惠类型枚举 |
||||||
|
*/ |
||||||
|
export const PromotionDiscountTypeEnum = { |
||||||
|
PRICE: { |
||||||
|
type: 1, |
||||||
|
name: '满减' |
||||||
|
}, |
||||||
|
PERCENT: { |
||||||
|
type: 2, |
||||||
|
name: '折扣' |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 优惠劵模板的有限期类型的枚举 |
||||||
|
*/ |
||||||
|
export const CouponTemplateValidityTypeEnum = { |
||||||
|
DATE: { |
||||||
|
type: 1, |
||||||
|
name: '固定日期可用' |
||||||
|
}, |
||||||
|
TERM: { |
||||||
|
type: 2, |
||||||
|
name: '领取之后可用' |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 营销的商品范围枚举 |
||||||
|
*/ |
||||||
|
export const PromotionProductScopeEnum = { |
||||||
|
ALL: { |
||||||
|
scope: 1, |
||||||
|
name: '全部商品参与' |
||||||
|
}, |
||||||
|
SPU: { |
||||||
|
scope: 2, |
||||||
|
name: '指定商品参与' |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 营销的条件类型枚举 |
||||||
|
*/ |
||||||
|
export const PromotionConditionTypeEnum = { |
||||||
|
PRICE: { |
||||||
|
type: 10, |
||||||
|
name: '满 N 元' |
||||||
|
}, |
||||||
|
COUNT: { |
||||||
|
type: 20, |
||||||
|
name: '满 N 件' |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 促销活动的状态枚举 |
||||||
|
*/ |
||||||
|
export const PromotionActivityStatusEnum = { |
||||||
|
WAIT: { |
||||||
|
type: 10, |
||||||
|
name: '未开始' |
||||||
|
}, |
||||||
|
RUN: { |
||||||
|
type: 20, |
||||||
|
name: '进行中' |
||||||
|
}, |
||||||
|
END: { |
||||||
|
type: 30, |
||||||
|
name: '已结束' |
||||||
|
}, |
||||||
|
CLOSE: { |
||||||
|
type: 40, |
||||||
|
name: '已关闭' |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,58 @@ |
|||||||
|
<template> |
||||||
|
<BasicModal v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit"> |
||||||
|
<BasicForm @register="registerForm" /> |
||||||
|
</BasicModal> |
||||||
|
</template> |
||||||
|
<script lang="ts" setup name="RoleModal"> |
||||||
|
import { ref, computed, unref } from 'vue' |
||||||
|
import { BasicModal, useModalInner } from '@/components/Modal' |
||||||
|
import { BasicForm, useForm } from '@/components/Form' |
||||||
|
import { formSchema } from './role.data' |
||||||
|
import { createRoleApi, getRoleApi, updateRoleApi } from '@/api/system/role' |
||||||
|
|
||||||
|
const emit = defineEmits(['success', 'register']) |
||||||
|
const isUpdate = ref(true) |
||||||
|
const rowId = ref() |
||||||
|
|
||||||
|
const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({ |
||||||
|
labelWidth: 100, |
||||||
|
baseColProps: { span: 24 }, |
||||||
|
schemas: formSchema, |
||||||
|
showActionButtonGroup: false, |
||||||
|
actionColOptions: { |
||||||
|
span: 23 |
||||||
|
} |
||||||
|
}) |
||||||
|
|
||||||
|
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { |
||||||
|
resetFields() |
||||||
|
setModalProps({ confirmLoading: false }) |
||||||
|
isUpdate.value = !!data?.isUpdate |
||||||
|
|
||||||
|
if (unref(isUpdate)) { |
||||||
|
const res = await getRoleApi(data.record.id) |
||||||
|
rowId.value = res.id |
||||||
|
setFieldsValue({ |
||||||
|
...res |
||||||
|
}) |
||||||
|
} |
||||||
|
}) |
||||||
|
|
||||||
|
const getTitle = computed(() => (!unref(isUpdate) ? '新增角色' : '编辑角色')) |
||||||
|
|
||||||
|
async function handleSubmit() { |
||||||
|
try { |
||||||
|
const values = await validate() |
||||||
|
setModalProps({ confirmLoading: true }) |
||||||
|
if (unref(isUpdate)) { |
||||||
|
await updateRoleApi(values) |
||||||
|
} else { |
||||||
|
await createRoleApi(values) |
||||||
|
} |
||||||
|
closeModal() |
||||||
|
emit('success') |
||||||
|
} finally { |
||||||
|
setModalProps({ confirmLoading: false }) |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
@ -0,0 +1,58 @@ |
|||||||
|
<template> |
||||||
|
<BasicModal v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit"> |
||||||
|
<BasicForm @register="registerForm" /> |
||||||
|
</BasicModal> |
||||||
|
</template> |
||||||
|
<script lang="ts" setup name="RoleModal"> |
||||||
|
import { ref, computed, unref } from 'vue' |
||||||
|
import { BasicModal, useModalInner } from '@/components/Modal' |
||||||
|
import { BasicForm, useForm } from '@/components/Form' |
||||||
|
import { dataScopeFormSchema } from './role.data' |
||||||
|
import { createRoleApi, getRoleApi, updateRoleApi } from '@/api/system/role' |
||||||
|
|
||||||
|
const emit = defineEmits(['success', 'register']) |
||||||
|
const isUpdate = ref(true) |
||||||
|
const rowId = ref() |
||||||
|
|
||||||
|
const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({ |
||||||
|
labelWidth: 100, |
||||||
|
baseColProps: { span: 24 }, |
||||||
|
schemas: dataScopeFormSchema, |
||||||
|
showActionButtonGroup: false, |
||||||
|
actionColOptions: { |
||||||
|
span: 23 |
||||||
|
} |
||||||
|
}) |
||||||
|
|
||||||
|
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => { |
||||||
|
resetFields() |
||||||
|
setModalProps({ confirmLoading: false }) |
||||||
|
isUpdate.value = !!data?.isUpdate |
||||||
|
|
||||||
|
if (unref(isUpdate)) { |
||||||
|
const res = await getRoleApi(data.record.id) |
||||||
|
rowId.value = res.id |
||||||
|
setFieldsValue({ |
||||||
|
...res |
||||||
|
}) |
||||||
|
} |
||||||
|
}) |
||||||
|
|
||||||
|
const getTitle = computed(() => (!unref(isUpdate) ? '新增角色' : '编辑角色')) |
||||||
|
|
||||||
|
async function handleSubmit() { |
||||||
|
try { |
||||||
|
const values = await validate() |
||||||
|
setModalProps({ confirmLoading: true }) |
||||||
|
if (unref(isUpdate)) { |
||||||
|
await updateRoleApi(values) |
||||||
|
} else { |
||||||
|
await createRoleApi(values) |
||||||
|
} |
||||||
|
closeModal() |
||||||
|
emit('success') |
||||||
|
} finally { |
||||||
|
setModalProps({ confirmLoading: false }) |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
@ -1,3 +1,106 @@ |
|||||||
<template> |
<template> |
||||||
<div>开发中</div> |
<div> |
||||||
|
<BasicTable @register="registerTable"> |
||||||
|
<template #toolbar> |
||||||
|
<a-button type="primary" @click="handleCreate"> 新增 </a-button> |
||||||
|
<a-button type="warning" @click="handleExport"> 导出 </a-button> |
||||||
|
</template> |
||||||
|
<template #bodyCell="{ column, record }"> |
||||||
|
<template v-if="column.key === 'action'"> |
||||||
|
<TableAction |
||||||
|
:actions="[ |
||||||
|
{ |
||||||
|
icon: 'clarity:note-edit-line', |
||||||
|
label: '修改', |
||||||
|
onClick: handleEdit.bind(null, record) |
||||||
|
}, |
||||||
|
{ |
||||||
|
icon: 'clarity:note-edit-line', |
||||||
|
label: '菜单权限', |
||||||
|
onClick: handleEdit.bind(null, record) |
||||||
|
}, |
||||||
|
{ |
||||||
|
icon: 'clarity:note-edit-line', |
||||||
|
label: '数据权限', |
||||||
|
onClick: handleEdit.bind(null, record) |
||||||
|
}, |
||||||
|
{ |
||||||
|
icon: 'ant-design:delete-outlined', |
||||||
|
label: '删除', |
||||||
|
color: 'error', |
||||||
|
popConfirm: { |
||||||
|
title: '是否确认删除', |
||||||
|
placement: 'left', |
||||||
|
confirm: handleDelete.bind(null, record) |
||||||
|
} |
||||||
|
} |
||||||
|
]" |
||||||
|
/> |
||||||
|
</template> |
||||||
|
</template> |
||||||
|
</BasicTable> |
||||||
|
<RoleModel @register="registerModal" @success="reload()" /> |
||||||
|
</div> |
||||||
</template> |
</template> |
||||||
|
<script lang="ts" setup name="Role"> |
||||||
|
import { BasicTable, useTable, TableAction } from '@/components/Table' |
||||||
|
import { RoleExportReqVO, deleteRoleApi, exportRoleApi, getRolePageApi } from '@/api/system/role' |
||||||
|
import { useModal } from '@/components/Modal' |
||||||
|
import RoleModel from './RoleModel.vue' |
||||||
|
import { columns, searchFormSchema } from './role.data' |
||||||
|
import { useI18n } from '@/hooks/web/useI18n' |
||||||
|
import { useMessage } from '@/hooks/web/useMessage' |
||||||
|
|
||||||
|
const { t } = useI18n() |
||||||
|
const { createConfirm, createMessage } = useMessage() |
||||||
|
const [registerModal, { openModal }] = useModal() |
||||||
|
const [registerTable, { getForm, reload }] = useTable({ |
||||||
|
title: '角色列表', |
||||||
|
api: getRolePageApi, |
||||||
|
columns, |
||||||
|
formConfig: { |
||||||
|
labelWidth: 120, |
||||||
|
schemas: searchFormSchema |
||||||
|
}, |
||||||
|
useSearchForm: true, |
||||||
|
showTableSetting: true, |
||||||
|
showIndexColumn: false, |
||||||
|
actionColumn: { |
||||||
|
width: 240, |
||||||
|
title: '操作', |
||||||
|
dataIndex: 'action', |
||||||
|
fixed: 'right' |
||||||
|
} |
||||||
|
}) |
||||||
|
|
||||||
|
function handleCreate() { |
||||||
|
openModal(true, { |
||||||
|
isUpdate: false |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
function handleEdit(record: Recordable) { |
||||||
|
openModal(true, { |
||||||
|
record, |
||||||
|
isUpdate: true |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
async function handleExport() { |
||||||
|
createConfirm({ |
||||||
|
title: '导出', |
||||||
|
iconType: 'warning', |
||||||
|
content: '是否要导出数据?', |
||||||
|
async onOk() { |
||||||
|
await exportRoleApi(getForm().getFieldsValue() as RoleExportReqVO) |
||||||
|
createMessage.success(t('common.exportSuccessText')) |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
async function handleDelete(record: Recordable) { |
||||||
|
await deleteRoleApi(record.id) |
||||||
|
createMessage.success('删除成功') |
||||||
|
reload() |
||||||
|
} |
||||||
|
</script> |
||||||
|
@ -0,0 +1,167 @@ |
|||||||
|
import { BasicColumn, FormSchema, useRender } from '@/components/Table' |
||||||
|
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' |
||||||
|
import { listSimpleDeptApi } from '@/api/system/dept' |
||||||
|
import { SystemDataScopeEnum } from '@/enums/systemEnum' |
||||||
|
|
||||||
|
export const columns: BasicColumn[] = [ |
||||||
|
{ |
||||||
|
title: '角色编号', |
||||||
|
dataIndex: 'id', |
||||||
|
width: 120 |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '角色名称', |
||||||
|
dataIndex: 'name', |
||||||
|
width: 150 |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '角色标识', |
||||||
|
dataIndex: 'code', |
||||||
|
width: 150 |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '角色类型', |
||||||
|
dataIndex: 'type', |
||||||
|
width: 150, |
||||||
|
customRender: ({ text }) => { |
||||||
|
return useRender.renderDict(text, DICT_TYPE.SYSTEM_ROLE_TYPE) |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '显示顺序', |
||||||
|
dataIndex: 'sort', |
||||||
|
width: 120 |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '状态', |
||||||
|
dataIndex: 'status', |
||||||
|
width: 180, |
||||||
|
customRender: ({ text }) => { |
||||||
|
return useRender.renderDict(text, DICT_TYPE.COMMON_STATUS) |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '创建时间', |
||||||
|
dataIndex: 'createTime', |
||||||
|
width: 180, |
||||||
|
customRender: ({ text }) => { |
||||||
|
return useRender.renderDate(text) |
||||||
|
} |
||||||
|
} |
||||||
|
] |
||||||
|
|
||||||
|
export const searchFormSchema: FormSchema[] = [ |
||||||
|
{ |
||||||
|
label: '角色名称', |
||||||
|
field: 'name', |
||||||
|
component: 'Input', |
||||||
|
colProps: { span: 8 } |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '角色标识', |
||||||
|
field: 'code', |
||||||
|
component: 'Input', |
||||||
|
colProps: { span: 8 } |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '状态', |
||||||
|
field: 'status', |
||||||
|
component: 'Select', |
||||||
|
componentProps: { |
||||||
|
options: getIntDictOptions(DICT_TYPE.COMMON_STATUS) |
||||||
|
}, |
||||||
|
colProps: { span: 8 } |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '创建时间', |
||||||
|
field: 'createTime', |
||||||
|
component: 'RangePicker', |
||||||
|
colProps: { span: 8 } |
||||||
|
} |
||||||
|
] |
||||||
|
|
||||||
|
export const formSchema: FormSchema[] = [ |
||||||
|
{ |
||||||
|
label: '编号', |
||||||
|
field: 'id', |
||||||
|
show: false, |
||||||
|
component: 'Input' |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '角色名称', |
||||||
|
field: 'name', |
||||||
|
required: true, |
||||||
|
component: 'Input' |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '角色标识', |
||||||
|
field: 'code', |
||||||
|
required: true, |
||||||
|
component: 'Input' |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '角色顺序', |
||||||
|
field: 'sort', |
||||||
|
required: true, |
||||||
|
component: 'InputNumber' |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '状态', |
||||||
|
field: 'status', |
||||||
|
component: 'Select', |
||||||
|
defaultValue: 0, |
||||||
|
componentProps: { |
||||||
|
options: getIntDictOptions(DICT_TYPE.COMMON_STATUS) |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '备注', |
||||||
|
field: 'remark', |
||||||
|
component: 'InputTextArea' |
||||||
|
} |
||||||
|
] |
||||||
|
|
||||||
|
export const dataScopeFormSchema: FormSchema[] = [ |
||||||
|
{ |
||||||
|
label: '编号', |
||||||
|
field: 'id', |
||||||
|
show: false, |
||||||
|
component: 'Input' |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '角色名称', |
||||||
|
field: 'name', |
||||||
|
dynamicDisabled: true, |
||||||
|
component: 'Input' |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '角色标识', |
||||||
|
field: 'code', |
||||||
|
dynamicDisabled: true, |
||||||
|
component: 'Input' |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '权限范围', |
||||||
|
field: 'dataScope', |
||||||
|
required: true, |
||||||
|
component: 'Select', |
||||||
|
componentProps: { |
||||||
|
options: getIntDictOptions(DICT_TYPE.SYSTEM_DATA_SCOPE) |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
label: '数据权限', |
||||||
|
field: 'status', |
||||||
|
component: 'ApiTreeSelect', |
||||||
|
ifShow: ({ values }) => values.dataScope === SystemDataScopeEnum.DEPT_CUSTOM, |
||||||
|
componentProps: { |
||||||
|
api: () => listSimpleDeptApi(), |
||||||
|
fieldNames: { |
||||||
|
label: 'name', |
||||||
|
key: 'id', |
||||||
|
value: 'id' |
||||||
|
}, |
||||||
|
handleTree: 'id' |
||||||
|
} |
||||||
|
} |
||||||
|
] |
Reference in new issue