sysCfg.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. /* *********************************************************** */
  2. // 创建: Macheng 2020/07/31.
  3. // 修改: Macheng 2020/07/31
  4. // Description:
  5. // 该文件定义了系统配置参数类。实时监控和后台管理的配置都放到这里。
  6. /* *********************************************************** */
  7. import BaseModel from './baseModel'
  8. import MainTypeDef from './mainTypeDef'
  9. class SysCfgView extends BaseModel {
  10. webTitle = 'ScenLoc-View' // WEB标题
  11. logoBase64 = '' // LOGO的BASE64编码
  12. owner = '上海迅见自动化有限公司' // 右下角运营商名称
  13. enableCopyright = 1 // 显示版权
  14. scheduleInterval = 1000 // 实时数据更新周期(单位:毫秒)
  15. hideMenus = [] // 隐藏的菜单
  16. hideTabs = [] // 隐藏的标签
  17. extUrlTitle = '' // 外链标题
  18. extUrlContent = '' // 外链URL
  19. extUrlEnable = 0 // 外链启用
  20. constructor(opts) {
  21. if (!opts) opts = {}
  22. super(opts)
  23. this.init(opts)
  24. }
  25. init(opts) {
  26. if (!opts) opts = {}
  27. super.init(opts)
  28. this.webTitle = opts.webTitle || this.webTitle
  29. this.logoBase64 = opts.logoBase64 || this.logoBase64
  30. this.owner = opts.owner
  31. this.enableCopyright = Number(opts.enableCopyright)
  32. this.scheduleInterval = Number(opts.scheduleInterval) || Number(this.scheduleInterval)
  33. this.hideMenus = opts.hideMenus || this.hideMenus
  34. this.hideTabs = opts.hideTabs || this.hideTabs
  35. this.extUrlTitle = opts.extUrlTitle || this.extUrlTitle
  36. this.extUrlContent = opts.extUrlContent || this.extUrlContent
  37. this.extUrlEnable = Number(opts.extUrlEnable)
  38. }
  39. toJson() {
  40. const obj1 = super.toJson()
  41. const obj2 = {
  42. webTitle: this.webTitle,
  43. logoBase64: this.logoBase64,
  44. owner: this.owner,
  45. enableCopyright: this.enableCopyright,
  46. scheduleInterval: this.scheduleInterval,
  47. hideMenus: this.hideMenus,
  48. hideTabs: this.hideTabs,
  49. extUrlTitle: this.extUrlTitle,
  50. extUrlContent: this.extUrlContent,
  51. extUrlEnable: this.extUrlEnable
  52. }
  53. return Object.assign({}, obj1, obj2)
  54. }
  55. }
  56. class SysCfgAlarm extends BaseModel {
  57. alarmHRLimMin = 30 // 心率报警下限
  58. alarmHRLimMax = 180 // 心率报警上限
  59. alarmHRLimSpan = 50 // 5分钟心率波动范围限制
  60. alarmHREnable = 0 // 启用心率报警
  61. alarmDropEnable = 0 // 启用跌落报警
  62. alarmTagLowPowEnable = 0 // 启用标签低电报警
  63. alarmAncOffPowEnable = 0 // 启用基站掉电报警
  64. alarmAncLowPowEnable = 0 // 启用基站低电报警
  65. alarmLimitNumEnable = 0 // 启用区域超限报警
  66. alarmClusterEnable = 0 // 启用聚集度报警
  67. constructor(opts) {
  68. if (!opts) opts = {}
  69. super(opts)
  70. this.init(opts)
  71. }
  72. init(opts) {
  73. if (!opts) opts = {}
  74. super.init(opts)
  75. this.alarmHRLimMin = Number(opts.alarmHRLimMin) || Number(this.alarmHRLimMin)
  76. this.alarmHRLimMax = Number(opts.alarmHRLimMax) || Number(this.alarmHRLimMax)
  77. this.alarmHRLimSpan = Number(opts.alarmHRLimSpan) || Number(this.alarmHRLimSpan)
  78. this.alarmHREnable = Number(opts.alarmHREnable)
  79. this.alarmDropEnable = Number(opts.alarmDropEnable)
  80. this.alarmTagLowPowEnable = Number(opts.alarmTagLowPowEnable)
  81. this.alarmAncOffPowEnable = Number(opts.alarmAncOffPowEnable)
  82. this.alarmAncLowPowEnable = Number(opts.alarmAncLowPowEnable)
  83. this.alarmLimitNumEnable = Number(opts.alarmLimitNumEnable)
  84. this.alarmClusterEnable = Number(opts.alarmClusterEnable)
  85. }
  86. toJson() {
  87. const obj1 = super.toJson()
  88. const obj2 = {
  89. alarmHRLimMin: this.alarmHRLimMin,
  90. alarmHRLimMax: this.alarmHRLimMax,
  91. alarmHRLimSpan: this.alarmHRLimSpan,
  92. alarmHREnable: this.alarmHREnable,
  93. alarmDropEnable: this.alarmDropEnable,
  94. alarmTagLowPowEnable: this.alarmTagLowPowEnable,
  95. alarmAncOffPowEnable: this.alarmAncOffPowEnable,
  96. alarmAncLowPowEnable: this.alarmAncLowPowEnable,
  97. alarmLimitNumEnable: this.alarmLimitNumEnable,
  98. alarmClusterEnable: this.alarmClusterEnable
  99. }
  100. return Object.assign({}, obj1, obj2)
  101. }
  102. }
  103. class SysCfgCalc extends BaseModel {
  104. tagDistUseKalman = 0 // 标签测距采用卡尔曼滤波
  105. tagDistKalmanQ = 0.2 // 标签测距卡尔曼滤波Q
  106. tagDistKalmanR = 2.5 // 标签测距卡尔曼滤波R
  107. tagDistRemainMs = 10000 // 标签测距存留周期
  108. tagDistForecastMs = 1000 // 标签测距预测周期
  109. tagDistSpeed = 2 // 标签测距限定速率
  110. tagDistMeasureDiff = 4 // 标签测距容许误差
  111. tagPosUseKalman = 0 // 标签位置采用卡尔曼滤波
  112. tagPosKalmanQ = 0.2 // 标签位置卡尔曼滤波Q
  113. tagPosKalmanR = 0.5 // 标签位置卡尔曼滤波R
  114. tagPosKalmanTO = 10000 // 标签位置卡尔曼超时
  115. tagPosDShakeDx = 0.05 // 标签位置消抖dx
  116. tagPosDShakeDy = 0.05 // 标签位置消抖dy
  117. tagPosDShakeDz = 0.05 // 标签位置消抖dz
  118. tagPosSliderWin = 0 // 标签位置平移窗口
  119. tagPosUse4Anc = 0 // 是否4基站优化
  120. tagPosLimDist = 3 // 标签位置限幅距离
  121. tagPosFloorLimDist = 1.5 // 标签层级限幅距离
  122. tagPosCalcInterval = 500 // 标签位置计算周期(ms)
  123. tagPosOfflineJudge = 10 // 标签位置离线判定(s)
  124. tagPosOfflineRemain = 30 // 标签位置离线存留(s)
  125. frameEnableLog = 0 // 是否记录报文
  126. logCalc = 0 // 计算日志
  127. logCalcTagAddr = 0 // 计算限定标签
  128. enGlobalAtlas = 0 // 启用全局地图
  129. globalAtlasId = 0 // 全局地图ID
  130. clusterRadius = 0 // 聚合半径
  131. clusterAlarm1Limit = 0 // 聚合报警1低限
  132. clusterAlarm2Limit = 0 // 聚合报警2低限
  133. clusterAlarm3Limit = 0 // 聚合报警3低限
  134. clusterHoldTime = 0 //聚合报警维持时间
  135. constructor(opts) {
  136. if (!opts) opts = {}
  137. super(opts)
  138. this.init(opts)
  139. }
  140. init(opts) {
  141. if (!opts) opts = {}
  142. super.init(opts)
  143. this.tagDistUseKalman = Number(opts.tagDistUseKalman) || Number(this.tagDistUseKalman)
  144. this.tagDistKalmanQ = Number(opts.tagDistKalmanQ) || Number(this.tagDistKalmanQ)
  145. this.tagDistKalmanR = Number(opts.tagDistKalmanR) || Number(this.tagDistKalmanR)
  146. this.tagDistRemainMs = Number(opts.tagDistRemainMs) || Number(this.tagDistRemainMs)
  147. this.tagDistForecastMs = Number(opts.tagDistForecastMs) || Number(this.tagDistForecastMs)
  148. this.tagDistSpeed = Number(opts.tagDistSpeed) || Number(this.tagDistSpeed)
  149. this.tagDistMeasureDiff = Number(opts.tagDistMeasureDiff) || Number(this.tagDistMeasureDiff)
  150. this.tagPosUseKalman = Number(opts.tagPosUseKalman) || Number(this.tagPosUseKalman)
  151. this.tagPosKalmanQ = Number(opts.tagPosKalmanQ) || Number(this.tagPosKalmanQ)
  152. this.tagPosKalmanR = Number(opts.tagPosKalmanR) || Number(this.tagPosKalmanR)
  153. this.tagPosKalmanTO = Number(opts.tagPosKalmanTO) || Number(this.tagPosKalmanTO)
  154. this.tagPosDShakeDx = Number(opts.tagPosDShakeDx) || Number(this.tagPosDShakeDx)
  155. this.tagPosDShakeDy = Number(opts.tagPosDShakeDy) || Number(this.tagPosDShakeDy)
  156. this.tagPosDShakeDz = Number(opts.tagPosDShakeDz) || Number(this.tagPosDShakeDz)
  157. this.tagPosSliderWin = Number(opts.tagPosSliderWin) || Number(this.tagPosSliderWin)
  158. this.tagPosUse4Anc = Number(opts.tagPosUse4Anc) || Number(this.tagPosUse4Anc)
  159. this.tagPosLimDist = Number(opts.tagPosLimDist) || Number(this.tagPosLimDist)
  160. this.tagPosFloorLimDist = Number(opts.tagPosFloorLimDist) || Number(this.tagPosFloorLimDist)
  161. this.tagPosCalcInterval = Number(opts.tagPosCalcInterval) || Number(this.tagPosCalcInterval)
  162. this.tagPosOfflineJudge = Number(opts.tagPosOfflineJudge) || Number(this.tagPosOfflineJudge)
  163. this.tagPosOfflineRemain = Number(opts.tagPosOfflineRemain) || Number(this.tagPosOfflineRemain)
  164. this.frameEnableLog = Number(opts.frameEnableLog) || Number(this.frameEnableLog)
  165. this.logCalc = Number(opts.logCalc) || Number(this.logCalc)
  166. this.logCalcTagAddr = Number(opts.logCalcTagAddr) || Number(this.logCalcTagAddr)
  167. this.enGlobalAtlas = Number(opts.enGlobalAtlas) || Number(this.enGlobalAtlas)
  168. this.globalAtlasId = Number(opts.globalAtlasId) || Number(this.globalAtlasId)
  169. this.clusterRadius = Number(opts.clusterRadius) || Number(this.clusterRadius)
  170. this.clusterAlarm1Limit = Number(opts.clusterAlarm1Limit) || Number(this.clusterAlarm1Limit)
  171. this.clusterAlarm2Limit = Number(opts.clusterAlarm2Limit) || Number(this.clusterAlarm2Limit)
  172. this.clusterAlarm3Limit = Number(opts.clusterAlarm3Limit) || Number(this.clusterAlarm3Limit)
  173. this.clusterHoldTime = Number(opts.clusterHoldTime) || Number(this.clusterHoldTime)
  174. }
  175. toJson() {
  176. const obj1 = super.toJson()
  177. const obj2 = {
  178. tagDistUseKalman: this.tagDistUseKalman,
  179. tagDistKalmanQ: this.tagDistKalmanQ,
  180. tagDistKalmanR: this.tagDistKalmanR,
  181. tagDistRemainMs: this.tagDistRemainMs,
  182. tagDistForecastMs: this.tagDistForecastMs,
  183. tagDistSpeed: this.tagDistSpeed,
  184. tagDistMeasureDiff: this.tagDistMeasureDiff,
  185. tagPosUseKalman: this.tagPosUseKalman,
  186. tagPosKalmanQ: this.tagPosKalmanQ,
  187. tagPosKalmanR: this.tagPosKalmanR,
  188. tagPosKalmanTO: this.tagPosKalmanTO,
  189. tagPosDShakeDx: this.tagPosDShakeDx,
  190. tagPosDShakeDy: this.tagPosDShakeDy,
  191. tagPosDShakeDz: this.tagPosDShakeDz,
  192. tagPosSliderWin: this.tagPosSliderWin,
  193. tagPosUse4Anc: this.tagPosUse4Anc,
  194. tagPosLimDist: this.tagPosLimDist,
  195. tagPosFloorLimDist: this.tagPosFloorLimDist,
  196. tagPosCalcInterval: this.tagPosCalcInterval,
  197. tagPosOfflineJudge: this.tagPosOfflineJudge,
  198. tagPosOfflineRemain: this.tagPosOfflineRemain,
  199. frameEnableLog: this.frameEnableLog,
  200. logCalc: this.logCalc,
  201. enGlobalAtlas: this.enGlobalAtlas,
  202. globalAtlasId: this.globalAtlasId,
  203. clusterRadius: this.clusterRadius,
  204. clusterAlarm1Limit: this.clusterAlarm1Limit,
  205. clusterAlarm2Limit: this.clusterAlarm2Limit,
  206. clusterAlarm3Limit: this.clusterAlarm3Limit,
  207. clusterHoldTime: this.clusterHoldTime
  208. }
  209. return Object.assign({}, obj1, obj2)
  210. }
  211. }
  212. class SysCfgHttpsender extends BaseModel {
  213. interval = 30 // 发送间隔时间(s)
  214. script = '' // 发送脚本
  215. runState = 0 // 运行状态 0:启用,1:停用
  216. constructor(opts) {
  217. if (!opts) opts = {}
  218. super(opts)
  219. this.init(opts)
  220. }
  221. init(opts) {
  222. if (!opts) opts = {}
  223. super.init(opts)
  224. this.interval = Number(opts.interval) || Number(this.interval)
  225. this.script = opts.script || this.script
  226. this.runState = Number(opts.runState) || Number(this.runState)
  227. }
  228. toJson() {
  229. const obj1 = super.toJson()
  230. const obj2 = {
  231. interval: this.interval,
  232. script: this.script,
  233. runState: this.runState
  234. }
  235. return Object.assign({}, obj1, obj2)
  236. }
  237. }
  238. class SysCfgDb extends BaseModel {
  239. hisDbSaveEnable = 0 // 启用保存历史数据
  240. hisDbSaveInterval = 0 // 历史数据保存间隔
  241. constructor(opts) {
  242. if (!opts) opts = {}
  243. super(opts)
  244. this.init(opts)
  245. }
  246. init(opts) {
  247. if (!opts) opts = {}
  248. super.init(opts)
  249. this.hisDbSaveEnable = Number(opts.hisDbSaveEnable) || 0;
  250. this.hisDbSaveInterval = Number(opts.hisDbSaveInterval) || 0;
  251. }
  252. toJson() {
  253. const obj1 = super.toJson()
  254. const obj2 = {
  255. hisDbSaveEnable: this.hisDbSaveEnable,
  256. hisDbSaveInterval: this.hisDbSaveInterval
  257. }
  258. return Object.assign({}, obj1, obj2)
  259. }
  260. }
  261. class SysCfgSign extends BaseModel {
  262. vecMainTypeDef = [] // 标记的用途列表
  263. constructor(opts) {
  264. if (!opts) opts = {}
  265. super(opts)
  266. this.init(opts)
  267. }
  268. init(opts) {
  269. if (!opts) opts = {}
  270. super.init(opts)
  271. this.vecMainTypeDef = []
  272. if (opts['vecMainTypeDef']) {
  273. let vecMainTypeDef = []
  274. if (opts['vecMainTypeDef'] instanceof Array) {
  275. vecMainTypeDef = opts['vecMainTypeDef']
  276. } else if (opts['vecMainTypeDef'] instanceof String) {
  277. vecMainTypeDef = JSON.parse(opts['vecMainTypeDef'])
  278. }
  279. for (const v of vecMainTypeDef) {
  280. const f = new MainTypeDef(v)
  281. this.vecMainTypeDef.push(f)
  282. }
  283. }
  284. }
  285. toJson() {
  286. const vecMainTypeDef = []
  287. for (const v of this.vecMainTypeDef) {
  288. vecMainTypeDef.push(v.toJson())
  289. }
  290. const obj1 = super.toJson()
  291. const obj2 = {
  292. vecMainTypeDef: vecMainTypeDef
  293. }
  294. return Object.assign({}, obj1, obj2)
  295. }
  296. }
  297. class SysCfg extends BaseModel {
  298. sysCfgView = new SysCfgView()
  299. sysCfgAlarm = new SysCfgAlarm()
  300. sysCfgCalc = new SysCfgCalc()
  301. sysCfgHttpsender = new SysCfgHttpsender()
  302. sysCfgDb = new SysCfgDb()
  303. sysCfgSign = new SysCfgSign()
  304. constructor(opts) {
  305. if (!opts) opts = {}
  306. super(opts)
  307. this.init(opts)
  308. }
  309. init(opts) {
  310. if (!opts) opts = {}
  311. super.init(opts)
  312. if (opts['sysCfgView']) {
  313. this.sysCfgView.init(JSON.parse(opts['sysCfgView']))
  314. }
  315. if (opts['sysCfgAlarm']) {
  316. this.sysCfgAlarm.init(JSON.parse(opts['sysCfgAlarm']))
  317. }
  318. if (opts['sysCfgCalc']) {
  319. this.sysCfgCalc.init(JSON.parse(opts['sysCfgCalc']))
  320. }
  321. if (opts['sysCfgHttpsender']) {
  322. this.sysCfgHttpsender.init(JSON.parse(opts['sysCfgHttpsender']))
  323. }
  324. if (opts['sysCfgDb']) {
  325. this.sysCfgDb.init(JSON.parse(opts['sysCfgDb']))
  326. }
  327. if (opts['sysCfgSign']) {
  328. this.sysCfgSign.init(JSON.parse(opts['sysCfgSign']))
  329. }
  330. }
  331. toJson() {
  332. const obj1 = super.toJson()
  333. const obj2 = {
  334. sysCfgView: this.sysCfgView.toJson(),
  335. sysCfgAlarm: this.sysCfgAlarm.toJson(),
  336. sysCfgCalc: this.sysCfgCalc.toJson(),
  337. sysCfgHttpsender: this.sysCfgHttpsender.toJson(),
  338. sysCfgDb: this.sysCfgDb.toJson(),
  339. sysCfgSign: this.sysCfgSign.toJson()
  340. }
  341. return Object.assign({}, obj1, obj2)
  342. }
  343. }
  344. export default SysCfg