use-method.tsx 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. import {
  2. SceneListType,
  3. GetListWorkshop,
  4. WorkspaceAddDatas,
  5. LabelModuleListType,
  6. } from '@/api/scene/sceneOperate';
  7. import { WorkShopTempleteType } from '@/api/scene/secene-templet';
  8. // skyeyev3pc/#/company?companyId=117&labelId=2
  9. export const colomns = [
  10. { label: '场景名称', prop: 'name', width: 300 },
  11. { label: '场景标签', prop: 'labelName', width: 300 },
  12. { label: '代码', prop: 'code' },
  13. {
  14. label: '预览',
  15. prop: 'preview',
  16. render: ({ row, column }) => {
  17. // console.log('record row', row);
  18. // console.log('record', column);
  19. if (!row.parent && row.labelList?.[0]?.id) {
  20. return (
  21. <a
  22. href={`/skyeyev3pc/#/company?companyId=${row.id}&labelId=${row.labelList[0]?.id}`}
  23. target="_blank"
  24. >
  25. 公司预览
  26. </a>
  27. );
  28. } else if (row.parent && !row.parent.parent) {
  29. return (
  30. <a href={`/skyeyev3pc/#/shop?id=${row.id}`} target="_blank">
  31. 车间预览
  32. </a>
  33. );
  34. }
  35. },
  36. },
  37. ];
  38. interface DataSourceUser
  39. extends SceneListType<
  40. GetListWorkshop<WorkspaceAddDatas, WorkShopTempleteType>,
  41. LabelModuleListType
  42. > {
  43. parent?: SceneListType<
  44. GetListWorkshop<WorkspaceAddDatas, WorkShopTempleteType>,
  45. LabelModuleListType
  46. > | null;
  47. }
  48. export const dataSourceWithParent = (d: DataSourceUser[], parent: DataSourceUser | null) => {
  49. d.forEach((item, _index) => {
  50. item.parent = parent;
  51. if (item.children && item.children?.length > 0) {
  52. dataSourceWithParent(item.children, item);
  53. }
  54. });
  55. return d;
  56. };
  57. export function removeParent(data) {
  58. return data.map((item) => {
  59. // 删除 tag 属性
  60. delete item.parent;
  61. // 递归处理子项
  62. if (item.children && item.children.length > 0) {
  63. item.children = removeParent(item.children);
  64. }
  65. return item;
  66. });
  67. }
  68. //找到各个层级
  69. // export function findIndexByItem(data, targetItem, path = []) {
  70. // for (let i = 0; i < data.length; i++) {
  71. // const currentPath = path.concat(i);
  72. // if (data[i].id === targetItem.id && data[i].name === targetItem.name) {
  73. // return currentPath;
  74. // }
  75. // if (data[i].children && data[i].children.length > 0) {
  76. // const childResult = findIndexByItem(data[i].children, targetItem, currentPath);
  77. // if (childResult.length > 0) {
  78. // return childResult;
  79. // }
  80. // }
  81. // }
  82. // return [];
  83. // }
  84. //用于重新修改serial
  85. export const updateSerials = (data) => {
  86. for (let i = 0; i < data.length; i++) {
  87. data[i].serial = i;
  88. // if (currentItem.id === targetId) {
  89. // if (!currentItem.children) {
  90. // currentItem.children = [];
  91. // }
  92. // currentItem.children.push(newAdd);
  93. // return true; // 表示已经找到并修改
  94. // }
  95. // 如果有子项,递归查找
  96. if (data[i].children && data[i].children.length > 0) {
  97. updateSerials(data[i].children);
  98. // if (found) {
  99. // return true; // 如果在子项中找到目标项,停止继续查找
  100. // }
  101. }
  102. }
  103. return data;
  104. // return false; // 表示未找到目标项
  105. };
  106. //用于新增数据
  107. export const updateData = (data, targetId, newAdd) => {
  108. for (let i = 0; i < data.length; i++) {
  109. const currentItem = data[i];
  110. if (currentItem.id === targetId) {
  111. if (!currentItem.children) {
  112. currentItem.children = [];
  113. }
  114. currentItem.children.push(newAdd);
  115. return true; // 表示已经找到并修改
  116. }
  117. // 如果有子项,递归查找
  118. if (currentItem.children && currentItem.children.length > 0) {
  119. const found = updateData(currentItem.children, targetId, newAdd);
  120. if (found) {
  121. return true; // 如果在子项中找到目标项,停止继续查找
  122. }
  123. }
  124. }
  125. return false; // 表示未找到目标项
  126. };
  127. //判断该条数据的层级
  128. export const findItemLevel = (data, targetId, targetName, currentLevel = 0) => {
  129. for (let i = 0; i < data.length; i++) {
  130. const item = data[i];
  131. if (item.id === targetId && item.name === targetName) {
  132. return currentLevel;
  133. }
  134. if (item.children && item.children.length > 0) {
  135. const childLevel = findItemLevel(item.children, targetId, targetName, currentLevel + 1);
  136. if (childLevel !== -1) {
  137. return childLevel;
  138. }
  139. }
  140. }
  141. return -1;
  142. };
  143. //删除行
  144. export const deleteTableRow = (dataSource, targetId) => {
  145. const deleteRecursive = (data) => {
  146. for (let i = 0; i < data.length; i++) {
  147. const currentItem = data[i];
  148. if (currentItem.id === targetId) {
  149. // 删除当前项
  150. data.splice(i, 1);
  151. return true;
  152. }
  153. // 如果有子项,递归查找
  154. if (currentItem.children && currentItem.children.length > 0) {
  155. const found = deleteRecursive(currentItem.children);
  156. if (found) {
  157. return true; // 如果在子项中找到目标项,停止继续查找
  158. }
  159. }
  160. }
  161. return false; // 表示未找到目标项
  162. };
  163. // 从顶层开始递归删除
  164. deleteRecursive(dataSource);
  165. };
  166. //找出数据中的全部code
  167. export const flattenCodes = (data) => {
  168. const codes: string[] = [];
  169. const traverse = (node: { code: string; children: any[] }) => {
  170. codes.push(node.code);
  171. if (node.children && node.children.length > 0) {
  172. node.children.forEach(traverse);
  173. }
  174. };
  175. data.forEach(traverse);
  176. return codes;
  177. };
  178. // export enum ENABLED {
  179. // FALSE = 1,
  180. // TRUE = 0,
  181. // }