Преглед изворни кода

Merge branch 'wyf-dev' into 'all-v4'

fix: 排序功能

See merge request skyeye/skyeye_frontend/skyeye-admin!211
Fei Liu пре 1 година
родитељ
комит
7c6647adef

+ 56 - 64
src/views/system-config/scene-manage/SceneManage.vue

@@ -99,11 +99,11 @@
   import { BasicTable, BasicColumn } from '@/components/Table';
   import ActionColomn from './components/ActionColomns.vue';
   import CompanyDrawer from './components/CompanyDrawer.vue';
-  import CompanyDrawer_shangfei from './components/CompanyDrawer-shangfei.vue';
+  // import CompanyDrawer_shangfei from './components/CompanyDrawer-shangfei.vue';
   import WorkshopDrawer from './components/WorkshopDrawer.vue';
-  import WorkshopDrawer_shangfei from './components/WorkshopDrawer-shangfei.vue';
+  // import WorkshopDrawer_shangfei from './components/WorkshopDrawer-shangfei.vue';
   import WorkspaceDrawer from './components/WorkspaceDrawer.vue';
-  import WorkspaceDrawer_shangfei from './components/WorkspaceDrawer-shangfei.vue';
+  // import WorkspaceDrawer_shangfei from './components/WorkspaceDrawer-shangfei.vue';
   import { DrawerType, IS_DISABLED } from '@/types/scene/constant.ts';
   import SceneDialog from './components/SceneDialog.vue';
   import {
@@ -118,9 +118,11 @@
     delCompany,
     delWorkshop,
     delWorkspace,
+    updateComShopSpaceTreeSort,
     // updateComShopSpaceTreeSort,
   } from '@/api/scene/scene';
   import {
+    ComTreeType,
     // ComAddDatas,
     // WorkshopAddDatas,
     // WorkspaceAddDatas,
@@ -134,6 +136,7 @@
   // import { ElMessageBox } from 'element-plus';
   import { useGlobSetting } from '@/hooks/setting';
   import { ElMessageBox } from 'element-plus';
+  import { cloneDeep } from 'lodash-es';
 
   // 此处获取了全局变量,关系到用不用sf定制的组件
   const globSetting = useGlobSetting();
@@ -171,9 +174,6 @@
     showDrawer.value = null;
   };
 
-  // 判断是否为公司编辑
-  // const comEdit = ref<boolean>(false);
-
   onMounted(() => {
     //获取公司树数据
     getComTreeDetail();
@@ -243,9 +243,8 @@
   };
 
   // 公司,车间,工位的模板数据
-  const editedItem: Ref<
-    (UseComType<undefined> & UseWorkshopType<undefined> & UseWorkspaceType) | undefined
-  > = ref();
+  const editedItem: Ref<(UseComType<any> & UseWorkshopType<any> & UseWorkspaceType) | undefined> =
+    ref();
 
   //点击所有添加和编辑时显示的数据内容
   const detail = ref({});
@@ -350,12 +349,58 @@
 
   // 点击上移时
   const rowUp = (row) => {
-    console.log(row);
+    editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem
+    const data = cloneDeep(comTreeData.value);
+    const tree = ref<any[]>();
+    if (editedItem.value?.nodeType === DrawerType.company) {
+      // 公司排序
+      tree.value = data;
+    } else if (editedItem.value?.nodeType === DrawerType.workshop) {
+      // 车间排序
+      tree.value = data.find((it) => it.id === editedItem.value!.companyId)!.children;
+    } else if (editedItem.value?.nodeType === DrawerType.workspace) {
+      // 工位排序
+      tree.value = data
+        .find((it) => it.id === editedItem.value!.companyId)!
+        .children!.find((it) => it.id === editedItem.value!.workshopId)!.children;
+    }
+    const rowIndex = tree.value!.findIndex((it) => {
+      return it.id === editedItem.value?.id;
+    });
+    const buf = tree.value![rowIndex].orderNum;
+    tree.value![rowIndex].orderNum = tree.value![rowIndex - 1].orderNum;
+    tree.value![rowIndex - 1].orderNum = buf;
+    updateComShopSpaceTreeSort(data as unknown as ComTreeType).then(() => {
+      getComTreeDetail();
+    });
   };
 
   // 点击下移时
   const rowDown = (row) => {
-    console.log(row);
+    editedItem.value = { ...row }; // 将当前行的内容拷贝到 editedItem
+    const data = cloneDeep(comTreeData.value);
+    const tree = ref<any[]>();
+    if (editedItem.value?.nodeType === DrawerType.company) {
+      // 公司排序
+      tree.value = data;
+    } else if (editedItem.value?.nodeType === DrawerType.workshop) {
+      // 车间排序
+      tree.value = data.find((it) => it.id === editedItem.value!.companyId)!.children;
+    } else if (editedItem.value?.nodeType === DrawerType.workspace) {
+      // 工位排序
+      tree.value = data
+        .find((it) => it.id === editedItem.value!.companyId)!
+        .children!.find((it) => it.id === editedItem.value!.workshopId)!.children;
+    }
+    const rowIndex = tree.value!.findIndex((it) => {
+      return it.id === editedItem.value?.id;
+    });
+    const buf = tree.value![rowIndex].orderNum;
+    tree.value![rowIndex].orderNum = tree.value![rowIndex + 1].orderNum;
+    tree.value![rowIndex + 1].orderNum = buf;
+    updateComShopSpaceTreeSort(data as unknown as ComTreeType).then(() => {
+      getComTreeDetail();
+    });
   };
 
   //编辑公司的提交按钮
@@ -363,59 +408,6 @@
     getComTreeDetail();
     showDrawer.value = null;
   };
-
-  // TODO 向上排序
-  // const rowUp = (row) => {
-  //   if (row.parent) {
-  //     const parentIndex = row.parent.children!.findIndex((item) => item.id === row.id);
-  //     if (parentIndex > 0) {
-  //       const previousRow = row.parent.children![parentIndex - 1];
-  //       const targetParent = getParent(comTreeData.value, previousRow.parent.code);
-  //       // 进行交换位置
-  //       targetParent.children!.splice(parentIndex - 1, 2, row, previousRow);
-  //     }
-  //   } else {
-  //     const index = comTreeData.value.findIndex((item) => item.id === row.id);
-  //     if (index > 0) {
-  //       comTreeData.value.splice(index - 1, 2, row, comTreeData.value[index - 1]);
-  //     }
-  //   }
-  //   comTreeData.value = updateSerials(comTreeData.value);
-  //   updateComShopSpaceTreeSort(removeParent(comTreeData.value))
-  //     .then(() => {
-  //       getComTreeDetail();
-  //     })
-  //     .catch((...e) => {
-  //       console.error('catch error', ...e);
-  //     });
-  // };
-
-  // TODO 向下排序
-  // const rowDown = (row) => {
-  //   if (row.parent) {
-  //     const parentIndex = row.parent.children!.findIndex((item) => item.id === row.id);
-  //     if (parentIndex < row.parent.children?.length - 1) {
-  //       const behindRow = row.parent.children![parentIndex + 1];
-  //       const targetParent = getParent(comTreeData.value, behindRow.parent.code);
-  //       // 进行交换位置
-  //       targetParent.children!.splice(parentIndex, 2, behindRow, row);
-  //     }
-  //   } else {
-  //     const index = comTreeData.value.findIndex((item) => item.id === row.id);
-  //     if (index < comTreeData.value.length - 1) {
-  //       comTreeData.value.splice(index, 2, comTreeData.value[index + 1], row);
-  //     }
-  //   }
-  //   comTreeData.value = updateSerials(comTreeData.value);
-
-  //   updateComShopSpaceTreeSort(removeParent(comTreeData.value))
-  //     .then(() => {
-  //       getComTreeDetail();
-  //     })
-  //     .catch((...e) => {
-  //       console.error('catch error', ...e);
-  //     });
-  // };
 </script>
 
 <style scoped>

+ 46 - 12
src/views/system-config/scene-manage/components/ActionColomns.vue

@@ -2,7 +2,7 @@
   <div style="display: flex">
     <div style="display: flex; margin-right: 7px">
       <div
-        v-if="userStore?.info?.tenantCode === 'gov' && (props.subItem as ComAddDatas).parentId !== undefined"
+        v-if="userStore?.info?.tenantCode === 'gov' && props.subItem.parentId !== undefined"
         @click="changeRelate"
         class="wordStyle"
         style="margin-right: 10px"
@@ -17,7 +17,7 @@
         >页面设置</div
       > -->
       <!-- <div v-else style="margin-right: 10px; width: 122px"></div> -->
-      <div v-if="!isWorkshop" @click="changeAdd" class="wordStyle">添加下一级</div>
+      <div v-if="!isWorkspace" @click="changeAdd" class="wordStyle">添加下一级</div>
       <div v-else style="margin-right: 10px; width: 67px"></div
     ></div>
     <div style="width: 1px; height: 14px; color: #e9e9e9; margin-right: 14px">|</div>
@@ -40,17 +40,17 @@
 
 <script setup lang="ts">
   import { computed } from 'vue';
-  import { ComAddDatas, WorkshopAddDatas, WorkspaceAddDatas } from '@/types/scene/type.ts';
   import useComTree from '../store/use-com-tree';
   import { storeToRefs } from 'pinia';
   import { useUserStore } from '@/store/modules/user';
+  import { UseComType, UseWorkshopType, UseWorkspaceType } from '@/types/scene/type.ts';
 
   const userStore = useUserStore();
   const comTree = useComTree();
   const { comTreeData } = storeToRefs(comTree);
 
   const props = defineProps<{
-    subItem: ComAddDatas | WorkshopAddDatas | WorkspaceAddDatas;
+    subItem: UseComType<any> & UseWorkshopType<any> & UseWorkspaceType;
     handleRelate: (row) => unknown;
     // handleConig: (row) => unknown; //Deprecated in V4
     handleAdd: (row) => unknown;
@@ -60,23 +60,57 @@
     handleDown: (row) => unknown;
   }>();
 
+  const isCompany = computed(() => {
+    return props.subItem.nodeType === 'company';
+  });
+
   const isWorkshop = computed(() => {
-    return (props.subItem as any).workshopId ? true : false;
+    return props.subItem.nodeType === 'workshop';
+  });
+
+  const isWorkspace = computed(() => {
+    return props.subItem.nodeType === 'workspace';
   });
 
-  // TODO serial 改为 orderNum
   const isFirst = computed(() => {
-    return (props.subItem as any).serial === 0 ? true : false;
+    let index;
+    if (isCompany.value) {
+      index = comTreeData.value.findIndex((item) => item.id === props.subItem.id);
+    } else if (isWorkshop.value) {
+      index = comTreeData.value
+        .find((item) => item.id === props.subItem.companyId)
+        ?.children?.findIndex((item) => item.id === props.subItem.id);
+    } else {
+      index = comTreeData.value
+        .find((item) => item.id === props.subItem.companyId)
+        ?.children?.find((item) => item.id === props.subItem.workshopId)
+        ?.children?.findIndex((item) => item.id === props.subItem.id);
+    }
+    return index === 0;
   });
 
   const isLast = computed(() => {
-    if ((props.subItem as any).parentId === 0) {
-      return (props.subItem as any).serial === comTreeData.value.length - 1 ? true : false;
+    let index;
+    let length;
+    if (isCompany.value) {
+      index = comTreeData.value.findIndex((item) => item.id === props.subItem.id);
+      length = comTreeData.value.length;
+    } else if (isWorkshop.value) {
+      index = comTreeData.value
+        .find((item) => item.id === props.subItem.companyId)
+        ?.children?.findIndex((item) => item.id === props.subItem.id);
+      length = comTreeData.value.find((item) => item.id === props.subItem.companyId)?.children
+        ?.length;
     } else {
-      return (props.subItem as any).serial === (props.subItem as any).parent?.children.length - 1
-        ? true
-        : false;
+      index = comTreeData.value
+        .find((item) => item.id === props.subItem.companyId)
+        ?.children?.find((item) => item.id === props.subItem.workshopId)
+        ?.children?.findIndex((item) => item.id === props.subItem.id);
+      length = comTreeData.value
+        .find((item) => item.id === props.subItem.companyId)
+        ?.children?.find((item) => item.id === props.subItem.workshopId)?.children?.length;
     }
+    return index === length - 1;
   });
 
   const changeRelate = () => {