use-method.ts 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. import { ref } from 'vue';
  2. import {
  3. sceneListType,
  4. getListWorkshop,
  5. workspaceAddDatas,
  6. labelModuleListType,
  7. } from '@/api/scene/sceneOperate';
  8. import { workShopTempleteType } from '@/api/scene/secene-templet';
  9. export const colomns = [
  10. { label: '场景名称', prop: 'name', width: 300 },
  11. { label: '场景标签', prop: 'companyLabelId', width: 300 },
  12. { label: '代码', prop: 'code' },
  13. ];
  14. interface DataSourceUser
  15. extends sceneListType<
  16. getListWorkshop<workspaceAddDatas, workShopTempleteType>,
  17. labelModuleListType
  18. > {
  19. parent?: sceneListType<
  20. getListWorkshop<workspaceAddDatas, workShopTempleteType>,
  21. labelModuleListType
  22. > | null;
  23. }
  24. export const dataSourceWithParent = (d: DataSourceUser[], parent: DataSourceUser | null) => {
  25. d.forEach((item, _index) => {
  26. item.parent = parent;
  27. if (item.children && item.children?.length > 0) {
  28. dataSourceWithParent(item.children, item);
  29. }
  30. });
  31. return d;
  32. };
  33. export const options = [
  34. {
  35. value: 'Option1',
  36. label: 'Option1',
  37. },
  38. {
  39. value: 'Option2',
  40. label: 'Option2',
  41. },
  42. ];
  43. //用于新增数据
  44. export const updateData = (data, targetId, newAdd) => {
  45. for (let i = 0; i < data.length; i++) {
  46. const currentItem = data[i];
  47. if (currentItem.id === targetId) {
  48. if (!currentItem.children) {
  49. currentItem.children = [];
  50. }
  51. currentItem.children.push(newAdd);
  52. return true; // 表示已经找到并修改
  53. }
  54. // 如果有子项,递归查找
  55. if (currentItem.children && currentItem.children.length > 0) {
  56. const found = updateData(currentItem.children, targetId, newAdd);
  57. if (found) {
  58. return true; // 如果在子项中找到目标项,停止继续查找
  59. }
  60. }
  61. }
  62. return false; // 表示未找到目标项
  63. };
  64. //判断该条数据的层级
  65. export const findItemLevel = (data, targetId, targetName, currentLevel = 0) => {
  66. for (let i = 0; i < data.length; i++) {
  67. console.log('i', i);
  68. const item = data[i];
  69. if (item.id === targetId && item.name === targetName) {
  70. return currentLevel;
  71. }
  72. if (item.children && item.children.length > 0) {
  73. const childLevel = findItemLevel(item.children, targetId, targetName, currentLevel + 1);
  74. if (childLevel !== -1) {
  75. return childLevel;
  76. }
  77. }
  78. }
  79. return -1;
  80. };
  81. //删除行
  82. export const deleteTableRow = (dataSource, targetId) => {
  83. const deleteRecursive = (data) => {
  84. for (let i = 0; i < data.length; i++) {
  85. const currentItem = data[i];
  86. if (currentItem.id === targetId) {
  87. // 删除当前项
  88. data.splice(i, 1);
  89. return true;
  90. }
  91. // 如果有子项,递归查找
  92. if (currentItem.children && currentItem.children.length > 0) {
  93. const found = deleteRecursive(currentItem.children);
  94. if (found) {
  95. return true; // 如果在子项中找到目标项,停止继续查找
  96. }
  97. }
  98. }
  99. return false; // 表示未找到目标项
  100. };
  101. // 从顶层开始递归删除
  102. deleteRecursive(dataSource);
  103. };
  104. //行的编辑提交功能
  105. export const editTableRow = (
  106. dataSource,
  107. targetId,
  108. level,
  109. name,
  110. newName,
  111. newCode,
  112. newStatus,
  113. newLeader = '',
  114. newTemplete = '',
  115. newTag = 0,
  116. newToptag = [] as unknown as string[],
  117. ) => {
  118. const editTRecursive = (data) => {
  119. for (let i = 0; i < data.length; i++) {
  120. const currentItem = data[i];
  121. if (currentItem.id === targetId) {
  122. // 修改
  123. currentItem.name = newName;
  124. currentItem.code = newCode;
  125. currentItem.status = newStatus;
  126. if (level === 0) {
  127. currentItem.Toptag = newToptag;
  128. } else if (level === 1) {
  129. currentItem.companyLabelId = newTag;
  130. currentItem.templete = newTemplete;
  131. } else if (level === 2) {
  132. currentItem.leader = newLeader;
  133. }
  134. return true;
  135. }
  136. // 如果有子项,递归查找
  137. if (currentItem.children && currentItem.children.length > 0) {
  138. const found = editTRecursive(currentItem.children);
  139. if (found) {
  140. return true; // 如果在子项中找到目标项,停止继续查找
  141. }
  142. }
  143. }
  144. return false; // 表示未找到目标项
  145. };
  146. editTRecursive(dataSource);
  147. };
  148. // export const convertArray = (inputArray) => {
  149. // return inputArray.map((item) => {
  150. // const [start, end] = item.split('-');
  151. // console.log(start, end);
  152. // return { tag: start, templete: end };
  153. // });
  154. // };
  155. export enum ENABLED {
  156. FALSE = 1,
  157. TRUE = 0,
  158. }