大理片笼更改获取方式,下片台下拉选回显,用户管理、权限管理、角色管理页面及接口
6个文件已修改
244 ■■■■ 已修改文件
UI-Project/src/views/Caching/cachingbefore.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Slicecage/slicecage.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/Landingindication.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/User/rolelist.vue 204 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/User/userlist.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Caching/cachingbefore.vue
@@ -48,7 +48,7 @@
      } else {  
      ElMessage.error(response.message);
      }  
  row.enable_state = newState;
  row.enable_state = newState;
}; 
const open = async(row) => {
  try {
UI-Project/src/views/Slicecage/slicecage.vue
@@ -472,46 +472,44 @@
  tableDatab.value = data.temperingGlassInfoList[0]
  tableDatae.value = data.bigStorageCageUsage[0]
  // adjustedRects.value = data.bigStorageCageInfo1[0]
  window.localStorage.setItem('length', data.bigStorageCageInfo1[0].length)
  window.localStorage.setItem('length', data.data.bigStorageCageInfos[0][1].length)
  let length = window.localStorage.getItem('length')
  adjustedRects.value = data.bigStorageCageInfo1[0].map(rect => ({
  adjustedRects.value = data.data.bigStorageCageInfos[0][1].map(rect => ({
            ...rect, 
            height: 20/length,
            top: 29/length
          })); 
    let small = data.bigStorageCageInfo1[0]
    console.log(small[0].bigStorageCageDetails);
adjustedRectsa.value = data.bigStorageCageInfo2[0].map(rect => ({
adjustedRectsa.value = data.bigStorageCageInfos[0][2].map(rect => ({
            ...rect, 
            height: 20/length,
            top: 29/length
          })); 
adjustedRectsb.value = data.bigStorageCageInfo3[0].map(rect => ({
adjustedRectsb.value = data.bigStorageCageInfos[0][3].map(rect => ({
            ...rect, 
            height: 20/length,
            top: 29/length
          })); 
adjustedRectsc.value = data.bigStorageCageInfo4[0].map(rect => ({
adjustedRectsc.value = data.bigStorageCageInfos[0][4].map(rect => ({
            ...rect, 
            height: 20/length,
            top: 29/length
          })); 
adjustedRectsd.value = data.bigStorageCageInfo5[0].map(rect => ({
adjustedRectsd.value = data.bigStorageCageInfos[0][5].map(rect => ({
            ...rect, 
            height: 20/length,
            top: 29/length
          })); 
adjustedRectse.value = data.bigStorageCageInfo6[0].map(rect => ({
adjustedRectse.value = data.bigStorageCageInfos[0][6].map(rect => ({
            ...rect, 
            height: 20/length,
            top: 29/length
          })); 
adjustedRectsf.value = data.bigStorageCageInfo7[0].map(rect => ({
adjustedRectsf.value = data.bigStorageCageInfos[0][7].map(rect => ({
            ...rect, 
            height: 20/length,
            top: 29/length
          })); 
adjustedRectsg.value = data.bigStorageCageInfo8[0].map(rect => ({
adjustedRectsg.value = data.bigStorageCageInfos[0][8].map(rect => ({
            ...rect, 
            height: 20/length,
            top: 29/length
UI-Project/src/views/UnLoadGlass/Landingindication.vue
@@ -171,7 +171,8 @@
  Swal.fire({
    // title: '玻璃信息',
    title: "$t('reportWork.glassinformation')",
    title: this.$t('reportWork.glassinformation'),
    // title: "$t('reportWork.glassinformation')",
    html: tableContent,
    customClass: {
      popup: 'format-pre'
UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -16,16 +16,14 @@
import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
import { WebSocketHost ,host} from '@/utils/constants'
const dialogFormVisiblea = ref(false)
const dialogFormVisiblea2 = ref(false)
// 数据
const loading = ref(false);
// 弹框显示控制
const dialogFormVisible = ref(false);
// 表单数据
const workstationId = ref('');
const selectedProjectNoa = ref(null); // 当前选中的角色
const flowCardId = ref('');
const flowCardOptions = ref('[]');
const tableData = reactive([]);
@@ -33,9 +31,10 @@
const handleSelectionChange = () => {
  // 处理表格行选择事件
};
const handleBindRack = (row) => {
  workstationId.value = row.workstationId; // 假设rackNumber是架号字段的属性名
  console.log(row.flowCardId);
  flowCardId.value = row.flowCardId;
  // 发起接口请求获取流程卡号
    fetchFlowCardId(); 
  dialogFormVisiblea.value = true; // 打开绑定架子对话框
UI-Project/src/views/User/rolelist.vue
@@ -13,7 +13,7 @@
// import { ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
//  import LanguageMixin from './lang/LanguageMixin'
const selectedProjectNoa = ref(''); // 当前选中的角色
const selectedProjectNoa = ref(null); // 当前选中的角色
// const options = ref<any[]>([]); // 下拉选项列表  
  const name = ref('');
const tableData = ref([])
@@ -53,26 +53,34 @@
    console.error('Error fetching options:', error);  
  }  
}; 
// 添加
// 添加
const getTableRow = async () => {
  try {  
    let menuList = [];
    selectedOptions.value.forEach(array => {
      if (array.length >= 2) {
        let id = array[0];
        let parentId = array[1];
        menuList.push({
          id: id,
          parentId: 0,
          children: [
        {
          id: parentId,
          parentId: id,
        }
      ],
        });
     let parentIdMap = {}; // 用于存储已经添加的父项
    selectedOptions.value.forEach(array => {
      if (array.length >= 2) {
        let id = array[0];
        let parentId = array[1];
        // 如果id还未作为父项添加,则添加它
        if (!parentIdMap[id]) {
          menuList.push({
            id: id,
            parentId: 0, // 通常,顶级项的parentId可能是null或特定的根ID,这里设为0可能是个特殊用途
            children: []
          });
          parentIdMap[id] = menuList[menuList.length - 1]; // 更新映射
        }
        // 向对应的父项添加子项
        if (!parentIdMap[id].children.some(child => child.id === parentId)) {
          // 检查是否已存在相同的子项(基于id),避免重复添加
          parentIdMap[id].children.push({
            id: parentId,
            parentId: id
          });
        }
      }  
    });
    });
    const dataToSend = {  
      name: name.value,
      menuList: menuList
@@ -91,61 +99,155 @@
    console.error(error);
  }
};
// 处理编辑按钮点击
// function buildCascaderOptions(menuList) {
//   // 创建一个映射来快速查找父项
//   const parentIdMap = {};
//   // 初始化最终的级联选项数组
//   const options = [];
//   // 遍历所有菜单项,将它们添加到映射中,并构建顶级菜单项
//   menuList.forEach(item => {
//     // 如果parentId为0,则为顶级菜单项
//     if (item.parentId === 0) {
//       // 初始化children数组
//       item.children = [];
//       // 添加到最终的选项中
//       options.push({
//         value: item.id,
//         label: item.menuName,
//         children: item.children
//       });
//       // 将顶级菜单项添加到映射中(虽然在这个特定场景中可能不是必需的,但可以用于其他目的)
//       parentIdMap[item.id] = item;
//     } else {
//       // 如果parentId不是0,则查找父项并添加到其children数组中
//       // 注意:这里假设parentIdMap在之前已经填充了所有顶级菜单项
//       if (!parentIdMap[item.parentId]) {
//         // 如果父项不存在,则可能是数据不完整或错误,需要处理这种情况
//         console.error(`Parent item with ID ${item.parentId} not found for child item with ID ${item.id}`);
//       } else {
//         parentIdMap[item.parentId].children.push({
//           value: item.id,
//           label: item.menuName
//           // 这里不需要嵌套的children,除非你的菜单有多于两级的结构
//         });
//       }
//     }
//   });
//   return options;
// }
function handleEdit(row) {  
  name.value = row.name;
  selectedOptions.value = row.selectedOptions
//  options.value = res.data.tree
 adda.value = true; // 显示对话框
  window.localStorage.setItem('id', row.id)
}
  name.value = row.name;
  const parentIdMap = {};
  const menuItems = row.menuList.map(item => {
    let parentId = item.parentId || null; // 或者使用 0,如果你的系统是这样设计的
    if (!parentIdMap[parentId]) {
      parentIdMap[parentId] = [];
    }
    parentIdMap[parentId].push({
      id: item.id,
      menuName: item.menuName,
      children: [] // 初始为空,稍后会填充子项
    });
    return { id: item.id, menuName: item.menuName, parentId: parentId };
  });
  // 现在,我们遍历所有项,并将它们分配给它们的父项(如果有的话)
  menuItems.forEach(item => {
    if (item.parentId !== null && parentIdMap[item.parentId]) {
      // 将当前项添加到其父项的 children 数组中
      parentIdMap[item.parentId].push({
        ...item, // 复制除了 parentId 之外的所有属性
        children: [] // 这里我们不需要再次添加 children,因为它已经在 parentIdMap 中被初始化了
      });
      // 注意:这里实际上是一个错误,因为我们不应该向 parentIdMap[item.parentId] 数组中添加整个项,
      // 而应该只更新它的 children 数组。但上面的代码示例了如何访问父项。
      // 正确的做法是在构建 parentIdMap 时就设置好 children 数组,并在后面不再修改 parentIdMap[item.parentId] 数组。
    }
    // 注意:上面的代码逻辑有误,因为我们在构建 parentIdMap 时已经为每个项设置了 children 数组。
    // 我们应该直接修改这些 children 数组,而不是向 parentIdMap[item.parentId] 数组添加新项。
  });
  // 但是,由于我们在构建 parentIdMap 时已经为每个项(包括其父项)设置了 children 数组,
  // 我们实际上不需要上面的循环来重新分配子项。
  // 我们只需要找到顶级项(parentId 为 null 或 0 的项),并将它们设置为 selectedOptions.value
  // 假设顶级项的 parentId 为 null(或 0,根据你的系统)
  const topLevelItems = parentIdMap[null] || parentIdMap[0] || [];
  // selectedOptions.value 应该是顶级项的数组,但首先我们需要将它们从 parentIdMap 的值中提取出来
  // 由于我们在构建 parentIdMap 时已经为每个顶级项设置了 children,所以我们可以直接使用这些项
  selectedOptions.value = topLevelItems;
  // 注意:selectedOptions.value 的具体格式应该与你的级联选择器组件所期望的格式相匹配
  // 如果你的级联选择器组件期望的是一个包含 value 和 label 的数组数组,你可能还需要进一步转换 topLevelItems
  adda.value = true; // 显示对话框
}
// 注意:上面的代码可能仍然需要根据你的具体数据结构进行调整
// 特别是关于 parentId 的处理,以及如何将菜单项正确地分配给它们的父项
// 处理编辑按钮点击
// function handleEdit(row) {
//   name.value = row.name;
//   let cascaderOptions = buildCascaderOptions(row.menuList);
//   selectedOptions.value = cascaderOptions; // 假设selectedOptions是v-model绑定的级联选择器的值
//   console.log(cascaderOptions); // 查看构建后的级联选项
//   // let transformedMenuList = row.menuList.map(item => ({
//   //   id: item.id, // 假设每个项都有一个id作为唯一标识
//   //   menuName: item.menuName, // 显示给用户的文本
//   //   // children: item.children ? item.children.map(child => ({ value: child.id, label: child.name })) : []
//   // }));
//   // selectedOptions.value = transformedMenuList
//   console.log(transformedMenuList);
//   adda.value = true; // 显示对话框
//   window.localStorage.setItem('id', row.id)
// }
// 编辑
const getTableRowa = async () => {
  let id = window.localStorage.getItem('id')
  try {  
    let menuList = [];
    selectedOptions.value.forEach(array => {
      if (array.length >= 2) {
        let id = array[0];
        let parentId = array[1];
        menuList.push({
          id: id,
          parentId: 0,
          children: [
        {
          id: parentId,
          parentId: id,
        }
      ],
        });
     let parentIdMap = {}; // 用于存储已经添加的父项
    selectedOptions.value.forEach(array => {
      if (array.length >= 2) {
        let id = array[0];
        let parentId = array[1];
        // 如果id还未作为父项添加,则添加它
        if (!parentIdMap[id]) {
          menuList.push({
            id: id,
            parentId: 0, // 通常,顶级项的parentId可能是null或特定的根ID,这里设为0可能是个特殊用途
            children: []
          });
          parentIdMap[id] = menuList[menuList.length - 1]; // 更新映射
        }
        // 向对应的父项添加子项
        if (!parentIdMap[id].children.some(child => child.id === parentId)) {
          // 检查是否已存在相同的子项(基于id),避免重复添加
          parentIdMap[id].children.push({
            id: parentId,
            parentId: id
          });
        }
      }  
    });
    });
    const dataToSend = {  
      id:id,
      name: name.value,
      menuList: menuList
    };  
    const response = await request.post('/loadGlass/sys/role/updateRole', dataToSend);
  // try {
  //   const response = await request.post('/loadGlass/sys/role/updateRole', {
  //     id: id,
  //     name: name.value,
  //   });
    if (response.code == 200) {
      // 绑定成功,处理逻辑
      ElMessage.success(response.message);
      adda.value = false;
      name.value = '';
       selectedOptions.value = '';
      fetchOptionsa()
      tableData.value = response.data;
      selectedOptions.value = '';
      fetchOptionsa();
    } else {
      // 请求失败,显示错误消息
      ElMessage.error(response.message);
    }
  } catch (error) {
    // 处理错误
    console.error(error);
  }
};
UI-Project/src/views/User/userlist.vue
@@ -13,7 +13,7 @@
  const { t } = useI18n()
  let language = ref(localStorage.getItem('lang') || 'zh')
//  import LanguageMixin from './lang/LanguageMixin'
const selectedProjectNoa = ref(''); // 当前选中的角色
const selectedProjectNoa = ref(null); // 当前选中的角色
// const options = ref<any[]>([]); // 下拉选项列表  
  const userName = ref('');
  const password = ref('');
@@ -98,7 +98,11 @@
}; 
// 处理编辑按钮点击  
function handleEdit(row) {  
  userName.value = row.userName;
  userName.value = row.userName;
  if (row.roleList && row.roleList.length > 0) {
    const firstRole = row.roleList[0];
    selectedProjectNoa.value = firstRole.id; // 设置为ID,而不是name
  }
  adda.value = true; // 显示对话框  
  window.localStorage.setItem('id', row.id)