diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index a68e30b..067fcf2 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -464,7 +464,7 @@ const local: App.I18n.Schema = { orgType: { company: '公司', dept: '部门', - direction: '条线', + direction: '方向', team: '团队' }, gender: { diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index 3a94aa1..f94ba38 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -138,6 +138,7 @@ const editingUserId = ref(null); const postOptions = ref([]); const roleOptions = ref([]); const companyOptions = ref([]); +const orgCodeOptions = ref([]); const resetPasswordVisible = ref(false); const resetPasswordUserId = ref(null); const resetPasswordUsername = ref(null); @@ -360,10 +361,11 @@ async function loadDeptTree() { } async function loadFormOptions() { - const [postResult, roleResult, companyResult] = await Promise.all([ + const [postResult, roleResult, companyResult, orgCodeResult] = await Promise.all([ fetchGetPostSimpleList(), fetchGetRoleSimpleList(), - fetchGetDictDataByCode('system_user_company') + fetchGetDictDataByCode('system_user_company'), + fetchGetDictDataByCode('rdms_object_direction') ]); if (!postResult.error) { @@ -377,6 +379,10 @@ async function loadFormOptions() { if (!companyResult.error) { companyOptions.value = companyResult.data; } + + if (!orgCodeResult.error) { + orgCodeOptions.value = orgCodeResult.data; + } } async function reloadUserTable(page = searchParams.pageNo) { @@ -753,6 +759,7 @@ onMounted(async () => { :row-data="editingDeptData" :parent-id="orgParentId" :dept-tree="deptTree" + :org-code-options="orgCodeOptions" @submitted="handleDeptSubmitted" /> diff --git a/src/views/system/user/modules/user-operate-dialog.vue b/src/views/system/user/modules/user-operate-dialog.vue index 5ee623c..5ea4c5f 100644 --- a/src/views/system/user/modules/user-operate-dialog.vue +++ b/src/views/system/user/modules/user-operate-dialog.vue @@ -332,6 +332,13 @@ watch(visible, async value => { + + + + + + + -import { computed, nextTick, ref, watch } from 'vue'; -import { commonStatusOptions } from '@/constants/business'; -import { fetchCreateDept, fetchUpdateDept } from '@/service/api'; -import { useForm, useFormRules } from '@/hooks/common/form'; +import {computed, nextTick, ref, watch} from 'vue'; +import {commonStatusOptions} from '@/constants/business'; +import {fetchCreateDept, fetchUpdateDept} from '@/service/api'; +import {useForm, useFormRules} from '@/hooks/common/form'; import BusinessFormDialog from '@/components/custom/business-form-dialog.vue'; -import { $t } from '@/locales'; +import {$t} from '@/locales'; -defineOptions({ name: 'UserOrgOperateDialog' }); +defineOptions({name: 'UserOrgOperateDialog'}); interface Props { operateType: UI.TableOperateType; rowData?: Api.SystemManage.Dept | null; parentId?: number | null; deptTree: Api.SystemManage.Dept[]; + orgCodeOptions: Api.Dict.DictData[]; } const props = defineProps(); @@ -27,8 +28,8 @@ const visible = defineModel('visible', { default: false }); -const { formRef, validate } = useForm(); -const { createRequiredRule } = useFormRules(); +const {formRef, validate} = useForm(); +const {createRequiredRule} = useFormRules(); const submitting = ref(false); @@ -43,10 +44,10 @@ const title = computed(() => { }); const orgTypeOptions: CommonType.Option[] = [ - { value: 'company', label: 'page.system.user.orgType.company' }, - { value: 'dept', label: 'page.system.user.orgType.dept' }, - { value: 'direction', label: 'page.system.user.orgType.direction' }, - { value: 'team', label: 'page.system.user.orgType.team' } + {value: 'company', label: 'page.system.user.orgType.company'}, + {value: 'dept', label: 'page.system.user.orgType.dept'}, + {value: 'direction', label: 'page.system.user.orgType.direction'}, + {value: 'team', label: 'page.system.user.orgType.team'} ]; type Model = Api.SystemManage.SaveDeptParams; @@ -76,6 +77,11 @@ const parentTree = computed(() => { const expandParentTree = computed(() => !isEdit.value && (props.parentId ?? 0) === 0); +// 只有组(direction)类型的组织才可以选择编码 +const isCodeSelectable = computed(() => { + return model.value.orgType === 'direction'; +}); + const rules = { name: createRequiredRule($t('page.system.user.form.orgName')), parentId: createRequiredRule($t('page.system.user.form.parentOrg')), @@ -143,7 +149,7 @@ async function handleSubmit() { } as Api.SystemManage.SaveDeptParams; if (isEdit.value && props.rowData) { - const { error } = await fetchUpdateDept({ + const {error} = await fetchUpdateDept({ id: props.rowData.id, ...payload }); @@ -160,7 +166,7 @@ async function handleSubmit() { return; } - const { error, data } = await fetchCreateDept(payload); + const {error, data} = await fetchCreateDept(payload); submitting.value = false; @@ -197,7 +203,7 @@ watch(visible, async value => { - + @@ -216,13 +222,21 @@ watch(visible, async value => { - + - + + + +