Explorar o código

fix:修改下发时只能选择一级部门,组织架构增加弹窗组织数据

sunqijun hai 1 mes
pai
achega
5d3651a2bb

+ 22 - 40
src/views/production-safety/productionSafetySystem/safetyOrganizationSystemManagement/components/TeamDetailDrawer.vue

@@ -1,33 +1,23 @@
 <template>
   <el-drawer v-model="showDrawer" direction="rtl" @close="clearData">
     <div class="team-detail__info">
-      <div class="team-detail__info__team-name">{{ teamAndPersonInfo?.teamName }}</div>
+      <div class="team-detail__info__team-name">{{ organization?.orgName }}</div>
       <div class="team-detail__info__member-count">
-        共 <span>{{ teamAndPersonInfo?.memberCount || 0 }}</span> 人
+        共 <span>{{ organization?.userNum || 0 }}</span> 人
       </div>
     </div>
-
-    <div class="team-detail__level" v-for="level in levelAndPersonList" :key="level.positionLevel">
-      <div class="team-detail__level__title">
-        {{ level.title }}
-      </div>
-      <div class="team-detail__level__content">
-        <div v-for="(person, index) in level.personList" :key="index">{{ person }}</div>
-      </div>
-    </div>
-
     <div class="team-detail__description">
       <div class="team-detail__description__title"> 队伍职责 </div>
-      <div class="team-detail__description__content"> {{ teamAndPersonInfo?.description }} </div>
+      <div class="team-detail__description__content"> {{ organization?.depResp }} </div>
     </div>
   </el-drawer>
 </template>
 
 <script setup lang="ts">
   import { ref, watch } from 'vue';
-  import { queryEmergencyTeamDetail } from '@/api/emergency-organization/teams';
-  import { TeamAndPersonInfoType } from '../team-management/type';
-
+  import {
+    safetyOrgUserDetail,
+  } from '@/api/safety-organization-management';
   const props = defineProps<{ selectedTeamId: number | null }>();
 
   type LevelAndPersonType = {
@@ -35,43 +25,35 @@
     title: string;
     personList: string[];
   };
+ interface OrganizationInfoType {
+     createdAt: Date;
+     createdBy: number;
+     depResp: string;
+     id: number;
+     isDeleted: number;
+     orgName: string;
+     parentId: number;
+     updatedAt: Date;
+     userNum: number;
+};
+
 
   const showDrawer = ref(false);
-  const teamAndPersonInfo = ref<TeamAndPersonInfoType>();
-  const levelAndPersonList = ref<LevelAndPersonType[]>([]);
+  const organization = ref<OrganizationInfoType>();
 
   function drawerShow() {
     showDrawer.value = true;
   }
 
   function clearData() {
-    teamAndPersonInfo.value = undefined;
-    levelAndPersonList.value = [];
-  }
-
-  // 按照职位等级排序队伍人员
-  function setLevelAndPerson() {
-    const levelMap: { [key: number]: LevelAndPersonType } = {};
-
-    teamAndPersonInfo.value?.personnelList.map((person) => {
-      if (!(person.positionLevel in levelMap)) {
-        levelMap[person.positionLevel] = { positionLevel: person.positionLevel, title: person.title, personList: [] };
-      }
-
-      levelMap[person.positionLevel].personList.push(person.realname);
-    });
-
-    for (let level in levelMap) {
-      levelAndPersonList.value.push(levelMap[level]);
-    }
+    organization.value = undefined;
   }
 
   watch(
     () => showDrawer.value,
     async () => {
       if (showDrawer.value) {
-        teamAndPersonInfo.value = await queryEmergencyTeamDetail(props.selectedTeamId!);
-        setLevelAndPerson();
+        organization.value = await safetyOrgUserDetail(props.selectedTeamId!);
       }
     },
   );
@@ -130,7 +112,7 @@
     margin-top: 20px;
     &__title {
       margin-bottom: 10px;
-      font-size: 20px;
+      font-size: 16px;
       font-weight: bold;
     }
     &__content {

+ 3 - 1
src/views/production-safety/productionSafetySystem/safetyOrganizationSystemManagement/safetyOrganizationSystemManagement.vue

@@ -147,7 +147,9 @@ const position = ref('left')
   const teamDetailDrawerRef = ref<InstanceType<typeof TeamDetailDrawer>>();
   const selectedTeamId = ref<number | null>(null);
   const handleNodeClick = (nodeData: any) => {
-    selectedTeamId.value = Number(nodeData.id);
+      const id = nodeData?.id?.replace('org-', '')
+      console.log(nodeData, 'canshu')
+    selectedTeamId.value = Number(id);
 
     teamDetailDrawerRef.value?.drawerShow();
   };

+ 6 - 1
src/views/production-safety/productionSafetySystem/safetySystemConstructionWorkPlanManagement/components/safetySystemConstructionWorkPlanManagementDetail.vue

@@ -21,7 +21,7 @@
       <el-form-item label="责任部门:" prop="responsibleDeptIds" required>
         <el-cascader
           v-model="form.responsibleDeptIds"
-          :options="deptTree"
+          :options="deptTreeOne"
           :props="cascaderProp"
           clearable
           collapse-tags
@@ -156,9 +156,14 @@
 
   // 获取级联部门数据
   const deptTree = ref<DeptTree[]>();
+  const deptTreeOne = ref<DeptTree[]>();
   const loadDeptTreeData = async () => {
     const result = await getAllDepartments();
     deptTree.value = result[0].children;
+    deptTreeOne.value = result?.[0]?.children.map(item => ({
+        ...item,
+        children: []
+      }));
   };
 
   /** 附件 JSON [{file_name, url}] 转 FileItem 列表,供 UploadFiles 使用(新增/编辑/查看/审核统一展示) */

+ 6 - 1
src/views/production-safety/safetyTrainingAndEducation/educationTrainingPlanManagement/components/educationTrainingPlanManagementDetail.vue

@@ -58,7 +58,7 @@
       <el-form-item label="培训责任部门:" prop="responsibleDeptIds">
         <el-cascader
           v-model="form.responsibleDeptIds"
-          :options="deptTree"
+          :options="deptTreeOne"
           :props="cascaderProp"
           clearable
           collapse-tags
@@ -167,9 +167,14 @@ import { downloadFile } from '@/views/disaster/utils';
 
   // 获取级联部门数据
   const deptTree = ref<DeptTree[]>();
+  const deptTreeOne = ref<DeptTree[]>();
   const loadDeptTreeData = async () => {
     const result = await getAllDepartments();
     deptTree.value = result[0].children;
+    deptTreeOne.value = result?.[0]?.children.map(item => ({
+        ...item,
+        children: []
+    }));
   };
   const fileList = ref([])
   // 表单引用