diff --git a/web/apps/web-ele/src/adapter/component/index.ts b/web/apps/web-ele/src/adapter/component/index.ts index e274034..1146431 100644 --- a/web/apps/web-ele/src/adapter/component/index.ts +++ b/web/apps/web-ele/src/adapter/component/index.ts @@ -100,6 +100,11 @@ const RoleSelector = defineAsyncComponent(() => (res) => res.default, ), ); +const DeptSelector = defineAsyncComponent(() => + import('#/components/zq-form/dept-selector/dept-selector.vue').then( + (res) => res.default, + ), +); const FileSelector = defineAsyncComponent(() => import('#/components/zq-form/file-selector/file-selector.vue').then( (res) => res.default, @@ -115,6 +120,11 @@ const UserSelector = defineAsyncComponent(() => (res) => res.default, ), ); +const PostSelector = defineAsyncComponent(() => + import('#/components/zq-form/post-selector/post-selector.vue').then( + (res) => res.default, + ), +); const ZqIconPicker = defineAsyncComponent(() => import('#/components/zq-form/zq-icon-picker/zq-icon-picker.vue').then( (res) => res.default, @@ -166,12 +176,14 @@ export type ComponentType = | 'CheckboxGroup' | 'CodeEditor' | 'DatePicker' + | 'DeptSelector' | 'Divider' | 'FileSelector' | 'IconPicker' | 'ImageSelector' | 'Input' | 'InputNumber' + | 'PostSelector' | 'RadioGroup' | 'RoleSelector' | 'Select' @@ -249,6 +261,7 @@ function initComponentAdapter() { PrimaryButton: (props, { attrs, slots }) => { return h(ElButton, { ...props, attrs, type: 'primary' }, slots); }, + DeptSelector: withDefaultPlaceholder(DeptSelector, 'select'), RoleSelector: withDefaultPlaceholder(RoleSelector, 'select'), Divider: ElDivider, FileSelector: withDefaultPlaceholder(FileSelector, 'select'), @@ -261,6 +274,7 @@ function initComponentAdapter() { type: 'textarea', }), InputNumber: withDefaultPlaceholder(ElInputNumber, 'input'), + PostSelector: withDefaultPlaceholder(PostSelector, 'select'), RadioGroup: (props, { attrs, slots }) => { let defaultSlot; if (Reflect.has(slots, 'default')) { diff --git a/web/apps/web-ele/src/components/zq-form/rich-text-editor/index.ts b/web/apps/web-ele/src/components/zq-form/rich-text-editor/index.ts new file mode 100644 index 0000000..f5ccaab --- /dev/null +++ b/web/apps/web-ele/src/components/zq-form/rich-text-editor/index.ts @@ -0,0 +1 @@ +export { default as RichTextEditor } from './rich-text-editor.vue'; diff --git a/web/apps/web-ele/src/components/zq-form/rich-text-editor/rich-text-editor.vue b/web/apps/web-ele/src/components/zq-form/rich-text-editor/rich-text-editor.vue new file mode 100644 index 0000000..cc0d070 --- /dev/null +++ b/web/apps/web-ele/src/components/zq-form/rich-text-editor/rich-text-editor.vue @@ -0,0 +1,458 @@ + + + + + diff --git a/web/apps/web-ele/src/views/_core/announcement/index.vue b/web/apps/web-ele/src/views/_core/announcement/index.vue index b8b386f..b20d3e3 100644 --- a/web/apps/web-ele/src/views/_core/announcement/index.vue +++ b/web/apps/web-ele/src/views/_core/announcement/index.vue @@ -60,6 +60,7 @@ import { import { FuPage } from '#/components/fu-page'; import { UserAvatar } from '#/components/user-avatar'; import { ZqDrawer } from '#/components/zq-drawer'; +import { RichTextEditor } from '#/components/zq-form/rich-text-editor'; defineOptions({ name: 'AnnouncementManager' }); @@ -810,13 +811,12 @@ onBeforeUnmount(() => { prop="content" required > - diff --git a/web/apps/web-ele/src/views/_core/user/data.ts b/web/apps/web-ele/src/views/_core/user/data.ts index a1c2891..29357df 100644 --- a/web/apps/web-ele/src/views/_core/user/data.ts +++ b/web/apps/web-ele/src/views/_core/user/data.ts @@ -191,6 +191,14 @@ export function getFormSchema(): VbenFormSchema[] { fieldName: 'bio', label: $t('user.bio'), }, + { + component: 'DeptSelector', + componentProps: { + placeholder: $t('user.selectDept'), + }, + fieldName: 'dept_id', + label: $t('user.dept'), + }, { component: 'UserSelector', componentProps: { @@ -199,6 +207,14 @@ export function getFormSchema(): VbenFormSchema[] { fieldName: 'manager_id', label: $t('user.manager'), }, + { + component: 'PostSelector', + componentProps: { + placeholder: $t('user.selectPost'), + }, + fieldName: 'post_id', + label: $t('user.post'), + }, { component: 'RoleSelector', componentProps: { @@ -295,6 +311,12 @@ export function useZqTableColumns(): Column[] { title: $t('user.city'), width: 120, }, + { + key: 'dept_name', + dataKey: 'dept_name', + title: $t('user.dept'), + width: 140, + }, { key: 'manager_name', dataKey: 'manager_name',