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