gdtq.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. import { isObject, cloneDeep, random } from 'lodash'
  2. // 转为树结构树
  3. export function toTree(data, id = 'id', pid = "parentId", children = 'children') {
  4. let obj = {}, // 使用对象重新存储数据
  5. res = [], // 最后结果
  6. len = data.length
  7. for (let i = 0; i < len; i++) {
  8. obj[data[i][id]] = data[i]
  9. }
  10. for (let j = 0; j < len; j++) {
  11. let list = data[j]
  12. let parentList = obj[list[pid]]
  13. if (parentList) {
  14. if (!parentList[children]) {
  15. parentList[children] = []
  16. }
  17. parentList[children].push(list)
  18. } else {
  19. res.push(list)
  20. }
  21. }
  22. return res
  23. }
  24. /* 获取标注点可视范围 */
  25. export function getMaxMinBounds(arr) {
  26. if(arr.length<2) return
  27. let lngArr = arr.map(item => item[0])
  28. let latArr = arr.map(item => item[1])
  29. return {
  30. southWest: [Math.min(...lngArr), Math.min(...latArr)],
  31. northEast: [Math.max(...lngArr), Math.max(...latArr)],
  32. }
  33. }
  34. // 是否为空
  35. export function isNull(data) {
  36. let str = `${data}`
  37. return str == 'null' || str == 'undefined' || str == '';
  38. }
  39. //复制对象属性
  40. export function copyProps(target, source, exc = [], depexc = [], clear = false,objcopy = false) {
  41. if (!isObject(target) || !isObject(source)) {
  42. console.error('params 1 and parmas2 must be Object')
  43. return false
  44. }
  45. if (clear) {
  46. clearProps(target)
  47. }
  48. for (let i in source) {
  49. if (target.hasOwnProperty(i)) {
  50. if (exc.indexOf(i) == -1) {
  51. let type = Object.prototype.toString.call(target[i])
  52. if(objcopy) {
  53. if (type == '[object Object]') {
  54. copyProps(target[i], source[i], depexc, [], false, true)
  55. } else if (type == '[object Array]') {
  56. for (let j = 0; j < target[i].length; j++) {
  57. copyProps(target[i][j], source[i][j], depexc, [], false, true)
  58. }
  59. } else {
  60. target[i] = cloneDeep(source[i])
  61. }
  62. } else {
  63. target[i] = cloneDeep(source[i])
  64. }
  65. }
  66. }
  67. }
  68. }
  69. //清除对象属性
  70. export function clearProps(target, exc = [], defulatDataObj) {
  71. let defulatData = Object.assign({
  72. '[object Array]': [],
  73. '[object Object]': {},
  74. '[object Boolean]': false,
  75. '[object Number]': '',
  76. '[object String]': '',
  77. },defulatDataObj)
  78. if (!isObject(target)) {
  79. console.error('params 1 must be Object')
  80. return false
  81. }
  82. for (let i in target) {
  83. if (exc.indexOf(i) == -1) {
  84. let type = Object.prototype.toString.call(target[i])
  85. // console.log(type,'type')
  86. if (defulatData.hasOwnProperty(type)) {
  87. target[i] = defulatData[type]
  88. } else {
  89. target[i] = ''
  90. }
  91. }
  92. }
  93. }
  94. // 读取对象值
  95. export function renderItem(item, key, defalutValue = '') {
  96. if (item) {
  97. if (Object.prototype.toString.call(item) === '[object Object]') {
  98. if (item.hasOwnProperty(key)) {
  99. return renderData(item[key], defalutValue)
  100. } else {
  101. return defalutValue
  102. }
  103. } else {
  104. return defalutValue
  105. }
  106. } else {
  107. return defalutValue
  108. }
  109. }
  110. // 读取值
  111. export function renderData(str, defalutValue = '--') {
  112. return isNull(str) ? defalutValue : str
  113. }
  114. // 方位
  115. export function judgingDirectionAngle(data) {
  116. let obj;
  117. if (data == 0) {
  118. obj = "正北";
  119. } else if (data > 0 && data <= 44) {
  120. obj = "北偏东";
  121. } else if (data == 45) {
  122. obj = "东北";
  123. } else if (data > 45 && data <= 89) {
  124. obj = "东偏北";
  125. } else if (data == 90) {
  126. obj = "正东";
  127. } else if (data > 90 && data <= 134) {
  128. obj = "东偏南";
  129. } else if (data == 135) {
  130. obj = "东南";
  131. } else if (data > 135 && data <= 179) {
  132. obj = "东南";
  133. } else if (data == 180) {
  134. obj = "正南";
  135. } else if (data > 180 && data <= 224) {
  136. obj = "南偏西";
  137. } else if (data == 225) {
  138. obj = "西南";
  139. } else if (data > 225 && data <= 269) {
  140. obj = "西偏南";
  141. } else if (data == 270) {
  142. obj = "正西";
  143. } else if (data > 270 && data <= 314) {
  144. obj = "西偏北";
  145. } else if (data == 315) {
  146. obj = "西北";
  147. } else if (data > 315 && data <= 359) {
  148. obj = "北偏西";
  149. }
  150. return obj;
  151. }
  152. /* 处理数组增减 */
  153. export function listCrudChange(newList=[],oldList=[],key="id") {
  154. let res = {
  155. adds: [],
  156. deletes: [],
  157. }
  158. let newIds = newList.map(e => e[key])
  159. let oldIds = oldList.map(e => e[key])
  160. newList.forEach(e => {
  161. if(!oldIds.includes(e[key])) {
  162. res.adds.push(e)
  163. }
  164. })
  165. oldList.forEach(e => {
  166. if(!newIds.includes(e[key])) {
  167. res.deletes.push(e)
  168. }
  169. })
  170. return res;
  171. }
  172. // 转换字符串,undefined,null等转化为""
  173. export function parseStrEmpty(str) {
  174. if (!str || str == "undefined" || str == "null") {
  175. return "";
  176. }
  177. return str;
  178. }