From fa3ac93010bea3805438ee3ab0a182bfbf7423da Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期一, 27 五月 2024 16:19:31 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/system/user/UserDrawer.vue | 141 +++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 141 insertions(+), 0 deletions(-) diff --git a/src/views/system/user/UserDrawer.vue b/src/views/system/user/UserDrawer.vue new file mode 100644 index 0000000..6cb5a38 --- /dev/null +++ b/src/views/system/user/UserDrawer.vue @@ -0,0 +1,141 @@ +<template> + <BasicDrawer + v-bind="$attrs" + @register="registerDrawer" + :title="getTitle" + :width="adaptiveWidth" + @ok="handleSubmit" + :showFooter="showFooter" + destroyOnClose + > + <BasicForm @register="registerForm" /> + </BasicDrawer> +</template> +<script lang="ts" setup> + import { defineComponent, ref, computed, unref, useAttrs } from 'vue'; + import { BasicForm, useForm } from '/@/components/Form/index'; + import { formSchema } from './user.data'; + import { getTenantId, getToken } from "/@/utils/auth"; + import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; + import { saveOrUpdateUser, getUserRoles, getUserDepartList } from './user.api'; + import { useDrawerAdaptiveWidth } from '/@/hooks/jeecg/useAdaptiveWidth'; + // 澹版槑Emits + const emit = defineEmits(['success', 'register']); + const attrs = useAttrs(); + const isUpdate = ref(true); + const rowId = ref(''); + const departOptions = ref([]); + //琛ㄥ崟閰嶇疆 + const [registerForm, { setProps, resetFields, setFieldsValue, validate, updateSchema }] = useForm({ + labelWidth: 90, + schemas: formSchema, + showActionButtonGroup: false, + }); + // TODO [VUEN-527] https://www.teambition.com/task/6239beb894b358003fe93626 + const showFooter = ref(true); + //琛ㄥ崟璧嬪�� + const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { + await resetFields(); + showFooter.value = data?.showFooter ?? true; + setDrawerProps({ confirmLoading: false, showFooter: showFooter.value }); + isUpdate.value = !!data?.isUpdate; + if (unref(isUpdate)) { + rowId.value = data.record.id; + //绉熸埛淇℃伅瀹氫箟鎴愭暟缁� + if (data.record.relTenantIds && !Array.isArray(data.record.relTenantIds)) { + data.record.relTenantIds = data.record.relTenantIds.split(','); + } else { + //銆恑ssues/I56C5I銆戠敤鎴风鐞嗕腑杩炵画鐐逛袱娆$紪杈戠鎴烽厤缃氨涓㈠け浜� + //data.record.relTenantIds = []; + } + + //鏌ヨ鑹�/璧嬪��/try catch 澶勭悊锛屼笉鐒剁紪杈戞湁闂 + try { + const userRoles = await getUserRoles({ userid: data.record.id }); + if (userRoles && userRoles.length > 0) { + data.record.selectedroles = userRoles; + } + } catch (error) {} + + //鏌ユ墍灞為儴闂�/璧嬪�� + const userDepart = await getUserDepartList({ userId: data.record.id }); + if (userDepart && userDepart.length > 0) { + data.record.selecteddeparts = userDepart; + let selectDepartKeys = Array.from(userDepart, ({ key }) => key); + data.record.selecteddeparts = selectDepartKeys.join(','); + departOptions.value = userDepart.map((item) => { + return { label: item.title, value: item.key }; + }); + } + //璐熻矗閮ㄩ棬/璧嬪�� + data.record.departIds && !Array.isArray(data.record.departIds) && (data.record.departIds = data.record.departIds.split(',')); + //update-begin---author:zyf Date:20211210 for锛氶伩鍏嶇┖鍊兼樉绀哄紓甯�------------ + data.record.departIds = data.record.departIds == '' ? [] : data.record.departIds; + //update-begin---author:zyf Date:20211210 for锛氶伩鍏嶇┖鍊兼樉绀哄紓甯�------------ + } + //澶勭悊瑙掕壊鐢ㄦ埛鍒楄〃鎯呭喌(鍜岃鑹插垪琛ㄦ湁鍏崇郴) + data.selectedroles && (await setFieldsValue({ selectedroles: data.selectedroles })); + //缂栬緫鏃堕殣钘忓瘑鐮�/瑙掕壊鍒楄〃闅愯棌瑙掕壊淇℃伅/鎴戠殑閮ㄩ棬鏃堕殣钘忔墍灞為儴闂� + updateSchema([ + { + field: 'password', + show: !unref(isUpdate), + }, + { + field: 'confirmPassword', + ifShow: !unref(isUpdate), + }, + { + field: 'selectedroles', + show: !data.isRole, + }, + { + field: 'departIds', + componentProps: { options: departOptions }, + }, + { + field: 'selecteddeparts', + show: !data?.departDisabled ?? false, + }, + { + field: 'selectedroles', + show: !data?.departDisabled ?? false, + }, + { + field: 'relTenantIds', + show: Number(getTenantId())<=0, + }, + ]); + // 鏃犺鏂板杩樻槸缂栬緫锛岄兘鍙互璁剧疆琛ㄥ崟鍊� + if (typeof data.record === 'object') { + setFieldsValue({ + ...data.record, + }); + } + // 闅愯棌搴曢儴鏃剁鐢ㄦ暣涓〃鍗� + //update-begin-author:taoyan date:2022-5-24 for: VUEN-1117銆恑ssue銆�0523鍛ㄥ紑婧愰棶棰� + setProps({ disabled: !showFooter.value }); + //update-end-author:taoyan date:2022-5-24 for: VUEN-1117銆恑ssue銆�0523鍛ㄥ紑婧愰棶棰� + }); + //鑾峰彇鏍囬 + const getTitle = computed(() => (!unref(isUpdate) ? '鏂板鐢ㄦ埛' : '缂栬緫鐢ㄦ埛')); + const { adaptiveWidth } = useDrawerAdaptiveWidth(); + + //鎻愪氦浜嬩欢 + async function handleSubmit() { + try { + let values = await validate(); + setDrawerProps({ confirmLoading: true }); + values.userIdentity === 1 && (values.departIds = ''); + let isUpdateVal = unref(isUpdate); + //鎻愪氦琛ㄥ崟 + await saveOrUpdateUser(values, isUpdateVal); + //鍏抽棴寮圭獥 + closeDrawer(); + //鍒锋柊鍒楄〃 + emit('success',{isUpdateVal ,values}); + } finally { + setDrawerProps({ confirmLoading: false }); + } + } +</script> -- Gitblit v1.9.3