hsqHome.data.ts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. import { getAssetURL } from '/@/utils/ui';
  2. import type {
  3. LaserActionItem,
  4. DeviceNode,
  5. DeviceGroup,
  6. AngleState,
  7. StatsCount,
  8. AngleField,
  9. PresetToolbarItem,
  10. TabItem,
  11. LensControl,
  12. } from './components/type';
  13. //设备状态总览
  14. export let option = [
  15. {
  16. label: '在线设备',
  17. value: 'onlineNum',
  18. },
  19. {
  20. label: '离线设备',
  21. value: 'offlineNum',
  22. },
  23. {
  24. label: '故障设备',
  25. value: 'faultNum',
  26. },
  27. {
  28. label: '报警设备',
  29. value: 'alarmNum',
  30. },
  31. ];
  32. //实时温度曲线
  33. export const chartConfig: any = {
  34. type: 'line_area',
  35. grid: {
  36. top: 25,
  37. left: 25,
  38. bottom: 10,
  39. right: 25,
  40. },
  41. legend: { show: true },
  42. xAxis: [{ show: true }],
  43. yAxis: [{ show: true, name: '(℃)', position: 'left', nameTextStyle: { color: '#fff', fontSize: 12, lineHeight: 2 } }],
  44. series: [
  45. {
  46. label: '平均温度',
  47. readFrom: '',
  48. xprop: 'pos',
  49. yprop: 'value',
  50. color: ['rgba(52, 193, 248,.8)', 'rgba(52, 193, 248,.2)'],
  51. },
  52. ],
  53. };
  54. //设备状态表格
  55. export let deviceColumns: any[] = [
  56. {
  57. name: '设备名称',
  58. prop: 'strname',
  59. },
  60. {
  61. name: '在线状态',
  62. prop: 'netStatus',
  63. },
  64. {
  65. name: '温度(‌℃‌)',
  66. //prop: 'syswarnLevel',
  67. prop: 'avg',
  68. },
  69. ];
  70. //快捷操作
  71. export let quickOption = [
  72. { label: '系统运行时间', value: 'time', iconName: 'time-run' },
  73. { label: '数据刷新', value: 'sjsx', iconName: 'data-reset' },
  74. { label: '网络延迟', value: 'wlyc', iconName: 'internet-on' },
  75. ];
  76. export let btnOption = [
  77. { firstLabel: '报警确认', secondLabel: '视屏调取', thirdLabel: '联动控制' },
  78. { firstLabel: '数据导出', secondLabel: '生成报表', thirdLabel: '定位追踪' },
  79. { firstLabel: '声光关闭', secondLabel: '应急广播', thirdLabel: '系统设置' },
  80. ];
  81. //报警监控
  82. export let alarmOption = [
  83. {
  84. label: '今日报警',
  85. value: 'dayWarn',
  86. },
  87. {
  88. label: '已处理',
  89. value: 'warnOk',
  90. },
  91. {
  92. label: '未处理',
  93. value: 'warnUnOk',
  94. },
  95. ];
  96. //区域温度统计
  97. export let chartTempConfig: any = {
  98. type: 'bar_cylinder_wide',
  99. readFrom: '',
  100. grid: {
  101. top: 40,
  102. left: 50,
  103. bottom: 14,
  104. right: 50,
  105. },
  106. legend: { show: false },
  107. xAxis: [{ show: true }],
  108. yAxis: [{ show: true, name: '', position: 'left' }],
  109. series: [{ readFrom: '', xprop: 'x', yprop: 'y', label: '温度' }],
  110. };
  111. //export let envOption = [
  112. // { label: '环境温度', value: 'tempHj', unit: '℃' },
  113. // { label: '风速风向', value: 'fsfx', unit: 'm/s' },
  114. // { label: '温度', value: 'temp', unit: '%' },
  115. // { label: 'CO浓度', value: 'coval', unit: 'ppm' },
  116. // { label: 'CO2浓度', value: 'co2val', unit: 'ppm' },
  117. // { label: 'O2浓度', value: 'o2val', unit: '%' },
  118. // { label: 'Ch4浓度', value: 'ch4val', unit: '%' },
  119. // { label: '粉尘浓度', value: 'fcnd', unit: 'mg/m³' },
  120. // { label: '烟雾指数', value: 'ywzs', unit: '' },
  121. // { label: '地表温度', value: 'tempDb', unit: '℃' },
  122. //]
  123. //用户列表
  124. export let optionUser = [
  125. { label: '用户账号', value: 'username' },
  126. { label: '用户姓名', value: 'realname' },
  127. { label: '所属角色', value: 'userRolesStr' },
  128. { label: '部门', value: 'orgCodeTxt' },
  129. { label: '手机号', value: 'phone' },
  130. { label: '状态', value: 'status_dictText' },
  131. ];
  132. //日志审计
  133. export let logbtnOption = [
  134. { label: '登录日志', value: 'login' },
  135. { label: '操作日志', value: 'operate' },
  136. { label: '浏览日志', value: 'look' },
  137. ];
  138. export let titleOption = [
  139. { label: '操作人ID', value: 'userid' },
  140. { label: '操作人', value: 'username' },
  141. { label: '日志内容', value: 'logContent' },
  142. { label: 'IP', value: 'ip' },
  143. { label: '创建时间', value: 'createTime' },
  144. { label: '日志类型', value: 'logType_dictText' },
  145. ];
  146. export let titleLookOption = [
  147. { label: '操作人ID', value: 'userid' },
  148. { label: '操作人', value: 'username' },
  149. { label: '日志内容', value: 'logContent' },
  150. { label: 'IP', value: 'ip' },
  151. { label: '创建时间', value: 'createTime' },
  152. ];
  153. //今日登录统计
  154. export let dayLoginConfig: any = {
  155. type: 'bar_cylinder_wide',
  156. readFrom: '',
  157. grid: {
  158. top: 55,
  159. left: 20,
  160. bottom: 25,
  161. right: 20,
  162. },
  163. legend: { show: false },
  164. xAxis: [{ show: true }],
  165. yAxis: [{ show: true, name: '', position: 'left' }],
  166. series: [{ readFrom: '', xprop: 'x', yprop: 'y', label: '次数' }],
  167. };
  168. //报警列表表头
  169. export let warnTitle = [
  170. { label: '设备名称', value: 'deviceName' },
  171. { label: '报警类型', value: 'eventTypeC' },
  172. { label: '模式', value: 'mode_dictText' },
  173. { label: '时间', value: 'createTime' },
  174. { label: '操作', value: 'operation' },
  175. ];
  176. /** 报警事件类型编码转中文(10001热源 / 10002闯入 / 10003烟雾) */
  177. export function formatAlarmEventType(eventType: unknown): string {
  178. const code = String(eventType ?? '');
  179. if (code === '10001') return '热源报警';
  180. if (code === '10002') return '闯入报警';
  181. if (code === '10003') return '烟雾报警';
  182. return '-';
  183. }
  184. export let alarmColumns: any[] = [
  185. {
  186. name: '设备名称',
  187. prop: 'deviceName',
  188. },
  189. {
  190. name: '报警类型',
  191. prop: 'eventTypeC',
  192. },
  193. {
  194. name: '模式',
  195. prop: 'mode_dictText',
  196. },
  197. {
  198. name: '时间',
  199. prop: 'createTime',
  200. },
  201. ];
  202. export let dscAlarmLogColumns: any[] = [
  203. {
  204. name: '设备名称',
  205. prop: 'deviceName',
  206. },
  207. {
  208. name: '安装位置',
  209. prop: 'devicePos',
  210. },
  211. {
  212. name: '报警类型',
  213. prop: 'eventTypeC',
  214. },
  215. {
  216. name: '红外类型',
  217. prop: 'irModel',
  218. },
  219. {
  220. name: '模式',
  221. prop: 'mode',
  222. },
  223. {
  224. name: '红外水平像素',
  225. prop: 'numOfIrHorPixs',
  226. },
  227. {
  228. name: '红外垂直像素',
  229. prop: 'numOfIrVerPixs',
  230. },
  231. {
  232. name: '云台水平角',
  233. prop: 'ptzHorAngle',
  234. },
  235. {
  236. name: '云台垂直角',
  237. prop: 'ptzVerAngle',
  238. },
  239. ];
  240. //联动规则配置
  241. export let warnTableConfig: any = {
  242. readFrom: '',
  243. type: 'C',
  244. tableReadFrom: 'warnInfo',
  245. columns: [
  246. {
  247. name: '报警条目',
  248. prop: 'alarmName',
  249. },
  250. {
  251. name: '预警等级',
  252. prop: 'alarmLevel',
  253. },
  254. {
  255. name: '所属系统',
  256. prop: 'systemType_dictText',
  257. },
  258. {
  259. name: '预警类型',
  260. prop: 'alarmType_dictText',
  261. },
  262. {
  263. name: '创建人',
  264. prop: 'createBy',
  265. },
  266. {
  267. name: '操作',
  268. prop: 'operation',
  269. },
  270. ],
  271. };
  272. export let warnTableConfigD: any = {
  273. readFrom: '',
  274. type: 'D',
  275. };
  276. //视频预览-报警列表表头
  277. export let videoColumns: any[] = [
  278. {
  279. name: '设备号',
  280. prop: 'preset',
  281. },
  282. {
  283. name: '设备名称',
  284. prop: 'deviceName',
  285. },
  286. {
  287. name: '设备安装位置',
  288. prop: 'devicePos',
  289. },
  290. {
  291. name: '报警类型',
  292. prop: 'eventTypeC',
  293. },
  294. //{
  295. //name: '红外类型',
  296. //prop: 'irModel',
  297. //},
  298. {
  299. name: '模式',
  300. prop: 'modeC',
  301. },
  302. {
  303. name: '红外水平像素数量',
  304. prop: 'numOfIrHorPixs',
  305. },
  306. {
  307. name: '红外垂直像素数量',
  308. prop: 'numOfIrVerPixs',
  309. },
  310. {
  311. name: '云台水平角',
  312. prop: 'ptzHorAngle',
  313. },
  314. {
  315. name: '云台垂直角',
  316. prop: 'ptzVerAngle',
  317. },
  318. {
  319. name: '测温标记',
  320. prop: 'tempFlag',
  321. },
  322. ];
  323. /**视频预览-Tab 标签列表 */
  324. export const tabs: TabItem[] = [
  325. { key: 'device', label: '设备' },
  326. { key: 'stats', label: '统计' },
  327. { key: 'advanced', label: '高级' },
  328. { key: 'angle', label: '角度' },
  329. { key: 'preset', label: '预置位' },
  330. ];
  331. /**云台控制-功能 Tab 列表:云台控制 / 激光 / 透雾 */
  332. export const tabsPtz: TabItem[] = [
  333. { key: 'ptz', label: '云台控制' },
  334. { key: 'laser', label: '激光' },
  335. { key: 'defog', label: '透雾' },
  336. ];
  337. /**云台控制 - 镜头控制项:变焦、聚焦、光圈 */
  338. export const lensControls: LensControl[] = [
  339. {
  340. key: 'zoom',
  341. plusTip: '焦距变大',
  342. minusTip: '焦距变小',
  343. icon: `<svg viewBox="0 0 24 24" width="18"
  344. height="18"><circle cx="10" cy="10" r="6" fill="none" stroke="#fff" stroke-width="1.6"/><path d="M14.5 14.5 L20 20" stroke="#fff" stroke-width="1.8" stroke-linecap="round"/><path d="M10 7.5 V12.5 M7.5 10 H12.5" stroke="#fff" stroke-width="1.5" stroke-linecap="round"/></svg>`,
  345. },
  346. {
  347. key: 'focus',
  348. plusTip: '焦点前调',
  349. minusTip: '焦点后调',
  350. icon: `<svg viewBox="0 0 24 24" width="18"
  351. height="18"><rect x="3" y="7" width="12" height="10" rx="1.5" fill="none" stroke="#fff" stroke-width="1.5"/><circle cx="9" cy="12" r="2.5" fill="none" stroke="#fff" stroke-width="1.4"/><path d="M15 9.5 L21 7 V17 L15 14.5 Z" fill="none" stroke="#fff" stroke-width="1.4" stroke-linejoin="round"/></svg>`,
  352. },
  353. {
  354. key: 'iris',
  355. plusTip: '光圈扩大',
  356. minusTip: '光圈缩小',
  357. icon: `<svg viewBox="0 0 24 24" width="18"
  358. height="18"><circle cx="12" cy="12" r="8" fill="none" stroke="#fff" stroke-width="1.4"/><path d="M12 4 L14.5 10.5 L21 12 L14.5 13.5 L12 20 L9.5 13.5 L3 12 L9.5 10.5 Z" fill="none" stroke="#fff" stroke-width="1.2" stroke-linejoin="round"/></svg>`,
  359. },
  360. ];
  361. export let picList = [
  362. { src: getAssetURL('home-container/configurable/hsq/4-1.png'), label: '1.报警触发' },
  363. { src: getAssetURL('home-container/configurable/hsq/6-1.png'), label: '2.系统确认' },
  364. { src: getAssetURL('home-container/configurable/hsq/6-2.png'), label: '3.通知值班' },
  365. { src: getAssetURL('home-container/configurable/hsq/4-4.png'), label: '4.现场处置' },
  366. { src: getAssetURL('home-container/configurable/hsq/4-5.png'), label: '5.确认解除' },
  367. ];
  368. /** 处置流程按钮 */
  369. export const actionBtns = [
  370. { key: 2, label: '系统确认' },
  371. { key: 3, label: '通知值班' },
  372. { key: 4, label: '现场处置' },
  373. { key: 5, label: '确认解除' },
  374. ];
  375. export let navList = [
  376. { label: '光谱摄像机', value: 'duaSpeCamera' },
  377. { label: '火灾探测器', value: 'imgFireDet' },
  378. ];
  379. export let titleList = [
  380. { label: '用户', value: 'username' },
  381. { label: '操作设备', value: 'devicename' },
  382. { label: '操作记录', value: 'strremark' },
  383. { label: '登录IP', value: 'ip' },
  384. { label: '时间', value: 'updateTime' },
  385. ];
  386. /** 角度默认值(刷新时恢复):水平 0~360,垂直 0~45 */
  387. export const ANGLE_DEFAULT: AngleState = {
  388. hMin: 0,
  389. hMax: 360,
  390. vMin: 0,
  391. vMax: 45,
  392. }
  393. export const angleFields: AngleField[] = [
  394. { label: '水平扫描角度:', minKey: 'hMin', maxKey: 'hMax' },
  395. { label: '垂直扫描角度:', minKey: 'vMin', maxKey: 'vMax' },
  396. ];
  397. /** 多选框提示:第一个可见光取流,第二个红外取流 */
  398. export const checkTips = ['可见光取流', '红外取流'] as const;
  399. /** 预置位工具栏:前 5 个图标对应 assets/icons 下 1.svg ~ 5.svg,添加为 add.svg */
  400. export const presetToolbarItems: PresetToolbarItem[] = [
  401. { key: 'refresh', icon: '1', title: '刷新' },
  402. { key: 'link', icon: '2', title: '关联' },
  403. { key: 'config', icon: '3', title: '配置' },
  404. { key: 'export', icon: '4', title: '导出' },
  405. { key: 'clear', icon: '5', title: '清空' },
  406. { key: 'add', icon: 'add', title: '添加' },
  407. ];
  408. /** 预置位表格列 */
  409. export const presetColumns = [
  410. { key: 'id', label: '编号' },
  411. { key: 'name', label: '名称' },
  412. { key: 'action', label: '操作' },
  413. ] as const;
  414. /** 预置位空表占位行数(对齐设计稿斑马纹区域) */
  415. export const PRESET_EMPTY_ROW_COUNT = 8;
  416. /** 激光操作:开/关激光、补光、爆闪 */
  417. export const laserActions: LaserActionItem[] = [
  418. { key: 'laserOn', label: '开激光' },
  419. { key: 'laserOff', label: '关激光' },
  420. { key: 'laserFillLight', label: '补光' },
  421. { key: 'laserStrobe', label: '开爆闪' },
  422. ];