Browse Source

修改文件

ZaiZai 9 months ago
parent
commit
e90d8b1828
2 changed files with 90 additions and 15 deletions
  1. 89 14
      src/views/system/modules/user/data.vue
  2. 1 1
      src/views/system/user.vue

+ 89 - 14
src/views/system/modules/user/data.vue

@@ -11,25 +11,26 @@
                         </el-col>
                         <el-col :span="12">
                             <el-form-item label="所属租户:" prop="tenantId">
-                                <el-input v-model="formModel.tenantId" clearable />
+                                <el-select v-model="formModel.tenantId" filterable block placeholder="选择所属租户" @change="tenantSelectChange">
+                                    <el-option v-for="item in tenantSelect" :key="item.tenantId" :label="item.tenantName" :value="item.tenantId" />
+                                </el-select>
                             </el-form-item>
                         </el-col>
-                        <el-col :span="12">
+                        <el-col v-if="isNullES(formModel.id)" :span="12">
                             <el-form-item label="登录密码:" prop="password">
                                 <el-input v-model="formModel.password" clearable />
                             </el-form-item>
                         </el-col>
-                        <el-col :span="12">
+                        <el-col v-if="isNullES(formModel.id)" :span="12">
                             <el-form-item label="确认密码:" prop="password2">
                                 <el-input v-model="formModel.password2" clearable />
                             </el-form-item>
                         </el-col>
-                        <el-col :span="12">
+                        <el-col :span="24">
                             <el-form-item label="用户平台:" prop="userType">
-                                <el-select v-model="formModel.userType" filterable block placeholder="选择用户平台">
-                                    <el-option label="是" :value="1" />
-                                    <el-option label="否" :value="0" />
-                                </el-select>
+                                <el-checkbox-group v-model="formUserType" @change="formUserTypeChange">
+                                    <el-checkbox v-for="item in userTypeData" :key="item.value" :label="item.label" :value="item.value" border />
+                                </el-checkbox-group>
                             </el-form-item>
                         </el-col>
                     </el-row>
@@ -55,7 +56,10 @@
                         </el-col>
                         <el-col :span="12">
                             <el-form-item label="所属部门:" prop="deptId">
-                                <el-input v-model="formModel.deptId" clearable />
+                                <el-tree-select
+                                    v-model="formModel.deptId" placeholder="选择所属部门" :data="deptTreeData" :props="deptTreeProps"
+                                    clearable filterable check-strictly block :render-after-expand="false"
+                                />
                             </el-form-item>
                         </el-col>
                         <el-col :span="12">
@@ -85,7 +89,7 @@
                 </el-form>
             </el-tab-pane>
             <el-tab-pane label="职能描述">
-                11111
+                <HcRelatedProject />
             </el-tab-pane>
         </el-tabs>
         <template #footer>
@@ -97,8 +101,11 @@
 
 <script setup>
 import { ref, watch } from 'vue'
-import { isNullES, isPhone } from 'js-fast-way'
+import { getDictionaryData } from '~uti/tools'
+import { getArrValue, getObjValue, isNullES, isPhone } from 'js-fast-way'
 import mainApi from '~api/system/user'
+import tenantApi from '~api/system/tenant'
+import deptApi from '~api/system/dept'
 
 const props = defineProps({
     info: {
@@ -118,7 +125,7 @@ const isShow = defineModel('modelValue', {
 //监听内容
 const rowInfo = ref(props.info)
 watch(() => props.info, (data) => {
-    rowInfo.value = data
+    rowInfo.value = getObjValue(data)
 }, { immediate: true, deep: true })
 
 //监听显示
@@ -130,9 +137,73 @@ watch(isShow, (val) => {
 
 //获取数据
 const getDataApi = () => {
-    const { id } = rowInfo.value
+    const info = getObjValue(rowInfo.value)
+    const { id, userType } = info
+    getTenantSelect()
+    getUserTypeData()
     if (isNullES(id)) return
-    console.log(rowInfo.value)
+    formModel.value = {
+        ...info,
+        password: null,
+    }
+    //分割为数组
+    formUserType.value = isNullES(userType) ? [] : userType.split(',').map((item) => {
+        return parseInt(item, 10) // 使用基数10进行解析,保证正确性
+    })
+    getDeptTreeData()
+    console.log(info)
+}
+
+//获取租户信息
+const tenantSelect = ref([])
+const getTenantSelect = async () => {
+    const { data } = await tenantApi.getSelect()
+    tenantSelect.value = getArrValue(data)
+}
+const tenantSelectChange = () => {
+    const { tenantId } = formModel.value
+    const { tenantName } = tenantSelect.value.find((item) => {
+        return item.tenantId === tenantId
+    })
+    formModel.value.tenantName = tenantName
+    getDeptTreeData()
+}
+
+//获取用户平台
+const userTypeData = ref([])
+const getUserTypeData = async () => {
+    userTypeData.value = await getDictionaryData('user_type')
+}
+
+//用户平台多选
+const formUserType = ref([])
+const formUserTypeChange = () => {
+    const arr = formUserType.value
+    formModel.value.userType = arr.join(',')
+    //获取名称
+    let userTypeNames = []
+    for (let i = 0; i < arr.length; i++) {
+        // eslint-disable-next-line array-callback-return
+        userTypeData.value.filter((item) => {
+            if (item.value === arr[i]) {
+                userTypeNames.push(item.label)
+            }
+        })
+    }
+    formModel.value.userTypeName = userTypeNames.join(',')
+}
+
+//获取所属部门
+const deptTreeData = ref([])
+const deptTreeProps = { label: 'title' }
+const getDeptTreeData = async () => {
+    const { tenantId } = formModel.value
+    if (isNullES(tenantId)) {
+        deptTreeData.value = []
+        return
+    }
+    const { data } = await deptApi.getDeptTree(tenantId)
+    deptTreeData.value = getArrValue(data)
 }
 
 //提交表单
@@ -249,5 +320,9 @@ const formRules2 = {
             padding: 10px 5px 10px 10px;
         }
     }
+    .el-checkbox-group .el-checkbox.is-bordered {
+        margin-right: 14px;
+        margin-bottom: 14px;
+    }
 }
 </style>

+ 1 - 1
src/views/system/user.vue

@@ -58,7 +58,7 @@
 import { onActivated, ref } from 'vue'
 import { getArrValue } from 'js-fast-way'
 import deptApi from '~api/system/dept'
-import { getDictionaryData } from '~uti/tools.js'
+import { getDictionaryData } from '~uti/tools'
 import mainApi from '~api/system/user'
 import HcDataDialog from './modules/user/data.vue'