天波h5前端应用
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

767 lines
36KB

  1. <!--
  2. * @Date: 2023-10-11 15:34:12
  3. * @LastEditors: JinxChen
  4. * @LastEditTime: 2023-10-27 14:19:16
  5. * @FilePath: \TelpoH5FrontendWeb\src\views\gps-card-frontend\device-setting\index.vue
  6. * @description:
  7. -->
  8. <template>
  9. <div classs="device-setting">
  10. <div class="tree-select">
  11. <van-tree-select :items="settingItems" :main-active-index.sync="active" :height="clientHeight" @click-nav="onCkickNav">
  12. <template #content>
  13. <div class="item" v-for="(item, index) in settingItems" :key="index" v-show="item.index === active">
  14. <div class="item-setting" v-for="(child, index) in item.data" :key="index">
  15. <customCell :title="child.name" :value="child.value" :click="child.router"/>
  16. </div>
  17. </div>
  18. <div class="power" v-show="active === 11 || active === 12 || active === 13">
  19. <van-button @click="onClick(active)">点击查看</van-button>
  20. </div>
  21. </template>
  22. </van-tree-select>
  23. </div>
  24. </div>
  25. </template>
  26. <script>
  27. import customCell from '@/components/custom-cell/index';
  28. import { isNotNull} from "@/utils/index";
  29. import APICore from "@/api/core";
  30. import axios from 'axios';
  31. export default {
  32. name:'',
  33. components: { customCell },
  34. data(){
  35. return {
  36. active: 0,
  37. settingItems: [
  38. { text: '设备状态', index: 0, data: [],},
  39. { text: '监护角色', index: 1, data: [],},
  40. { text: '场景模式', index: 2, data: []},
  41. { text: '加强省电模式', index: 3, data: []},
  42. { text: '定位监测', index: 4, data: []},
  43. { text: '危险区域监测', index: 5, data: [] },
  44. { text: '健康监测', index: 6, data: []},
  45. { text: '血压监测', index: 7, data: []},
  46. { text: '心理监测', index: 8, data: []},
  47. { text: '佩戴监测', index: 9, data: []},
  48. { text: '上报周期', index: 10, data: []},
  49. { text: '电量查看', index: 11, data: []},
  50. { text: '设备信号强度查看', index: 12, data: []},
  51. { text: '设备行为日志查看', index: 13, data: []},
  52. ],
  53. dateList: [], //时间列表
  54. clientHeight: '', //当前窗口可视页面高度
  55. }
  56. },
  57. computed: {
  58. imei() {
  59. return this.$store.getters.imei/* '861281060086216' */;
  60. },
  61. },
  62. created() {
  63. this.getAuth();
  64. this.getUrlQueryParams();
  65. },
  66. mounted() {
  67. /* this.$toast.loading({message: "加载中"});
  68. this.getWatchConfig();
  69. this.getIotCtlMode();
  70. this.getLocationConfig();
  71. this.getDrownConfig();
  72. this.getHealthConfig();
  73. this.getBloodConfig();
  74. this.getPsychAbilityConfig();
  75. this.getNowearConfig();
  76. this.getUploadConfig();
  77. this.clientHeight = document.documentElement.clientHeight;
  78. this.active = Number(this.$store.getters.active) || 0;
  79. this.$toast.success({message: "加载完成"}); */
  80. //this.loadRequest();
  81. this.loadRequest();
  82. },
  83. methods: {
  84. // 加载接口
  85. async loadRequest() {
  86. this.$toast.loading({
  87. message: '数据加载中',
  88. duration: 0
  89. });
  90. this.clientHeight = document.documentElement.clientHeight;
  91. this.active = Number(this.$store.getters.active) || 0;
  92. const allPromise = [
  93. this.getDeviceStatus(),
  94. this.getWatchConfig(),
  95. this.getIotCtlMode(),
  96. this.getLocationConfig(),
  97. this.getDrownConfig(),
  98. this.getHealthConfig(),
  99. this.getBloodConfig(),
  100. this.getPsychAbilityConfig(),
  101. this.getNowearConfig(),
  102. this.getUploadConfig(),
  103. ];
  104. const promise = Promise.all(allPromise);
  105. try {
  106. const result = await promise;
  107. if(result) {
  108. this.$toast.success({
  109. message: '数据加载完成',
  110. duration: 2000
  111. });
  112. }
  113. } catch(error){
  114. console.log('error', error);
  115. this.$toast.clear();
  116. }
  117. },
  118. // 获取b端接口的token
  119. getAuth() {
  120. let manufactorId = "5bf13062-a41e-4d00-ba14-1101aad12650";
  121. APICore.getAuth({ manufactorId: manufactorId }).then(res => {
  122. this.$store.commit("gatewayToken", res.data.data);
  123. });
  124. },
  125. getUrlQueryParams() {
  126. // 从url中获取参数并缓存
  127. let params = this.$route.query;
  128. if (isNotNull( params )) {
  129. // 首次进入且正确传参
  130. //this.imei = params.imei;
  131. if(params.accessToken) {this.$store.commit('accessToken', params.accessToken); }
  132. this.$store.commit('imei', params.imei);
  133. }
  134. },
  135. // 获取设备场景模式参数
  136. getWatchConfig() {
  137. /* APICore.getWatchConfig({imei: this.imei}).then(res => {
  138. let data = res.data.data;
  139. if(data) {
  140. const modeId = data.modeId;
  141. const roleId = data.roleId;
  142. this.modeId = data.modeId;
  143. this.roleId = roleId;
  144. this.settingItems[0].text = `监护角色(${roleId === 1 ? '学生' : '老人'})`;
  145. this.settingItems[1].text = `场景模式(${this.getModeById(modeId)})`;
  146. } else {
  147. this.settingItems[0].text = `监护角色(无数据)`;
  148. this.settingItems[1].text = `场景模式(无数据)`;
  149. }
  150. }) */
  151. return new Promise((resolve, reject) => {
  152. APICore.getWatchConfig({imei: this.imei}).then(res => {
  153. let data = res.data.data;
  154. let roleViewIndex = 1;
  155. let modeViewIndex = 2;
  156. let roleIndex = this.settingItems.findIndex(item => {
  157. return item.index === roleViewIndex
  158. });
  159. let modeIndex = this.settingItems.findIndex(item => {
  160. return item.index === modeViewIndex
  161. });
  162. if(data) {
  163. const modeId = data.modeId;
  164. const roleId = data.roleId;
  165. this.modeId = data.modeId;
  166. this.roleId = data.roleId;
  167. this.settingItems[roleIndex].text = `监护角色(${roleId === 1 ? '学生' : '老人'})`;
  168. this.settingItems[modeIndex].text = `场景模式(${this.getModeById(modeId)})`;
  169. } else {
  170. this.settingItems[roleIndex].text = `监护角色(无数据)`;
  171. this.settingItems[modeIndex].text = `场景模式(无数据)`;
  172. /* this.modeId = 1;
  173. this.roleId = 1; */
  174. };
  175. resolve(true);
  176. })
  177. })
  178. },
  179. // 通过模式id获取场景模式
  180. getModeById(id) {
  181. if(id === 1) {
  182. return '标准'
  183. } else if (id === 2) {
  184. return '省电'
  185. } else {
  186. return '个性'
  187. }
  188. },
  189. // 组装选项数据
  190. concatTitle(title, status, power){
  191. return `${title}(${status}) (${power})`
  192. },
  193. // 获取加强省电模式参数配置
  194. getIotCtlMode() {
  195. /* APICore.getIotCtlMode(this.imei).then(res => {
  196. let data = res.data.data;
  197. if(data) {
  198. this.checked = data.mode === 1;
  199. this.settingItems[2].text = this.concatTitle('加强省电模式', data.mode === 1 ? '打开' : '关闭', data.mode === 1 ? '耗电高' : '耗电低');
  200. this.settingItems[2].data = [
  201. { name: '开启状态:', value: data.enabled === 1 ? '打开': '关闭' },
  202. ];
  203. } else {
  204. this.settingItems[2].text = this.concatTitle('加强省电模式','关闭', '耗电低');
  205. }
  206. }) */
  207. return new Promise((resolve) => {
  208. APICore.getIotCtlMode(this.imei).then(res => {
  209. let data = res.data.data;
  210. let index = 3;
  211. let findIndex = this.settingItems.findIndex(item => {
  212. return item.index === index
  213. });
  214. if(data) {
  215. this.checked = data.mode === 1;
  216. this.settingItems[findIndex].text = this.concatTitle('加强省电模式', data.mode === 1 ? '打开' : '关闭', data.mode === 1 ? '耗电高' : '耗电低');
  217. this.settingItems[findIndex].data = [
  218. { name: '开启状态:', value: data.enabled === 1 ? '打开': '关闭' },
  219. ];
  220. } else {
  221. this.settingItems[findIndex].text = this.concatTitle('加强省电模式','关闭', '耗电低');
  222. }
  223. });
  224. resolve(true)
  225. })
  226. },
  227. // 获取设备定位参数
  228. getLocationConfig() {
  229. /* APICore.getLocationConfig({imei: this.imei}).then(res => {
  230. let data = res.data.data;
  231. if(data) {
  232. this.settingItems[3].text = this.concatTitle('定位监测', data.enabled === 1 ? '打开': '关闭', data.enabled === 1 ? '耗电高' : '耗电低');
  233. this.settingItems[3].data = [
  234. { name: '开启状态:', value: data.enabled === 1 ? '打开': '关闭' },
  235. { name: '检测周期:', value: data.sampleinteval + '分钟' },
  236. ];
  237. } else {
  238. this.settingItems[3].text = this.concatTitle('定位监测','关闭', '耗电低');
  239. }
  240. }); */
  241. return new Promise(resolve => {
  242. APICore.getLocationConfig({imei: this.imei}).then(res => {
  243. let data = res.data.data;
  244. let index = 4;
  245. let findIndex = this.settingItems.findIndex(item => {
  246. return item.index === index
  247. });
  248. if(data) {
  249. this.settingItems[findIndex].text = this.concatTitle('定位监测', data.enabled === 1 ? '打开': '关闭', data.enabled === 1 ? '耗电高' : '耗电低');
  250. this.settingItems[findIndex].data = [
  251. { name: '开启状态:', value: data.enabled === 1 ? '打开': '关闭' },
  252. { name: '检测周期:', value: data.sampleinteval + '分钟' },
  253. ];
  254. } else {
  255. this.settingItems[findIndex].text = this.concatTitle('定位监测','关闭', '耗电低');
  256. }
  257. });
  258. resolve(true)
  259. })
  260. },
  261. // 获取免告警水域
  262. getDrownReportFilterQuery() {
  263. APICore.getDrownReportFilterQuery({imei: this.imei}).then(res => {
  264. let data = res.data.data;
  265. if(data) {
  266. let json = {};
  267. for(var i=0; i<data.length; i++){
  268. json[i] = data[i];
  269. }
  270. this.drownWhite = JSON.stringify(json);
  271. }
  272. })
  273. },
  274. // 获取设备危险区域参数
  275. getDrownConfig() {
  276. /* APICore.getDrownConfig({imei: this.imei}).then(res => {
  277. let data = res.data.data;
  278. if(data) {
  279. this.settingItems[4].text = this.concatTitle('危险区域监测', data.config.enabled === 1 ? '打开': '关闭', data.config.enabled === 1 ? '耗电高' : '耗电低');
  280. this.settingItems[4].data = [
  281. { name: '涉水监测:', value: data.config.enabled === 1 ? '打开': '关闭' },
  282. { name: '检测周期:', value: data.config.intervallvl1 + data.config.intervallvl2 + '分钟' },
  283. { name: '告警阈值:', value: data.config.warningdistance + '米' },
  284. { name: '涉水停留告警间隔:', value: (data.config.distancelvl2 / 60) + '分钟' },
  285. { name: '告警提示持续次数:', value: data.config.warningtimes + '次' },
  286. { name: '首次告警逗留设置:', value: data.config.delaytimes + '次' },
  287. { name: '时速免告警(≥):', value: data.config.ignorespeed + '公里' },
  288. { name: '免告警水域:', value: '查看', router: 'drownWhiteList' },
  289. { name: '告警方式:', value: `${data.config.vibrateenabled === 1 ? '震动' : '无'} , ${data.config.lcdenabled === 1 ? '亮屏' : '无'} , ${data.config.musicenabled === 1 ? '声音' : '无'}`},
  290. ];
  291. } else {
  292. this.settingItems[4].text = this.concatTitle('危险区域监测','关闭', '耗电低');
  293. this.settingItems[4].data = [];
  294. }
  295. }); */
  296. return new Promise(resolve => {
  297. APICore.getDrownConfig({imei: this.imei}).then(res => {
  298. let data = res.data.data;
  299. let index = 5;
  300. let findIndex = this.settingItems.findIndex(item => {
  301. return item.index === index
  302. });
  303. if(data) {
  304. this.settingItems[findIndex].text = this.concatTitle('危险区域监测', data.config.enabled === 1 ? '打开': '关闭', data.config.enabled === 1 ? '耗电高' : '耗电低');
  305. this.settingItems[findIndex].data = [
  306. { name: '涉水监测:', value: data.config.enabled === 1 ? '打开': '关闭' },
  307. { name: '检测周期:', value: data.config.intervallvl1 + data.config.intervallvl2 + '分钟' },
  308. { name: '告警阈值:', value: data.config.warningdistance + '米' },
  309. { name: '涉水停留告警间隔:', value: (data.config.distancelvl2 / 60) + '分钟' },
  310. { name: '告警提示持续次数:', value: data.config.warningtimes + '次' },
  311. { name: '首次告警逗留设置:', value: data.config.delaytimes + '次' },
  312. { name: '时速免告警(≥):', value: data.config.ignorespeed + '公里' },
  313. { name: '免告警水域:', value: '查看', router: 'drownWhiteList' },
  314. { name: '告警方式:', value: `${data.config.vibrateenabled === 1 ? '震动' : '无'} , ${data.config.lcdenabled === 1 ? '亮屏' : '无'} , ${data.config.musicenabled === 1 ? '声音' : '无'}`},
  315. ];
  316. } else {
  317. this.settingItems[findIndex].text = this.concatTitle('危险区域监测','关闭', '耗电低');
  318. this.settingItems[findIndex].data = [];
  319. }
  320. });
  321. resolve(true);
  322. })
  323. },
  324. // 格式化某些特殊参数值的时间显示方式
  325. formatInteval(value) {
  326. return value >= 360 ? (value / 60) + '小时' : value + '分钟'
  327. },
  328. // 获取设备健康参数
  329. getHealthConfig() {
  330. /* APICore.getHealthConfig({imei: this.imei}).then(res => {
  331. let data = res.data.data;
  332. if(data) {
  333. let healthEnablelist = [
  334. { enabled: data.config.heartrateenabled},
  335. { enabled: data.config.spo2enabled},
  336. { enabled: data.config.temperatureenabled},
  337. ];
  338. let config = data.config;
  339. // 获取健康设置打开的次数
  340. const healthSettingCount = healthEnablelist.reduce((acc, cur) => cur.enabled === 1 ? ++acc : acc, 0);
  341. this.settingItems[5].text = this.concatTitle('健康监测', healthSettingCount >= 3 ? '打开'
  342. : healthSettingCount >= 1 ? '部分'
  343. : '关闭', healthSettingCount > 2 ? '耗电高': healthSettingCount === 2 ? '耗电中': '耗电低');
  344. this.settingItems[5].data = [
  345. { name: '体温监测:', value: config.temperatureenabled === 1 ? '打开': '关闭' },
  346. { name: '检测周期:', value: this.formatInteval(config.temperatureinteval) },
  347. { name: '告警阈值-高温:', value: (config.temperaturemaxvalue / 10) + '度' },
  348. { name: '告警方式:', value: `${config.temperaturevibrateenabled === 1 ? '震动' : '无'} , ${config.temperaturelcdenabled === 1 ? '亮屏' : '无'}`},
  349. { name: '心率监测:', value: config.heartrateenabled === 1 ? '打开': '关闭' },
  350. { name: '检测周期:', value: this.formatInteval(config.heartrateinteval) },
  351. { name: '告警阈值-上限:', value: config.heartratemaxvalue + '次' },
  352. { name: '告警阈值-下限:', value: config.heartrateminvalue + '次' },
  353. { name: '告警方式:', value: `${config.heartratevibrateenabled === 1 ? '震动' : '无'} , ${config.heartratelcdenabled === 1 ? '亮屏' : '无'}`},
  354. { name: '血氧监测:', value: config.spo2enabled === 1 ? '打开': '关闭' },
  355. { name: '检测周期:', value: this.formatInteval(config.spo2inteval) },
  356. { name: '告警阈值-低于:', value: config.spo2minvalue + '%' },
  357. { name: '告警方式:', value: `${config.spo2vibrateenabled === 1 ? '震动' : '无'} , ${config.spo2lcdenabled === 1 ? '亮屏' : '无'}`},
  358. ]
  359. } else {
  360. this.settingItems[5].text = this.concatTitle('健康监测','关闭', '耗电低');
  361. this.settingItems[5].data = [];
  362. }
  363. }); */
  364. return new Promise(resolve => {
  365. APICore.getHealthConfig({imei: this.imei}).then(res => {
  366. let data = res.data.data;
  367. let index = 6;
  368. let findIndex = this.settingItems.findIndex(item => {
  369. return item.index === index
  370. });
  371. if(data) {
  372. let healthEnablelist = [
  373. { enabled: data.config.heartrateenabled},
  374. { enabled: data.config.spo2enabled},
  375. { enabled: data.config.temperatureenabled},
  376. ];
  377. let config = data.config;
  378. // 获取健康设置打开的次数
  379. const healthSettingCount = healthEnablelist.reduce((acc, cur) => cur.enabled === 1 ? ++acc : acc, 0);
  380. this.settingItems[findIndex].text = this.concatTitle('健康监测', healthSettingCount >= 3 ? '打开'
  381. : healthSettingCount >= 1 ? '部分'
  382. : '关闭', healthSettingCount > 2 ? '耗电高': healthSettingCount === 2 ? '耗电中': '耗电低');
  383. this.settingItems[findIndex].data = [
  384. { name: '体温监测:', value: config.temperatureenabled === 1 ? '打开': '关闭' },
  385. { name: '检测周期:', value: this.formatInteval(config.temperatureinteval) },
  386. { name: '告警阈值-高温:', value: (config.temperaturemaxvalue / 10) + '度' },
  387. /* { name: '告警阈值-低温:', value: config.temperatureminvalue + '度' }, */
  388. { name: '告警方式:', value: `${config.temperaturevibrateenabled === 1 ? '震动' : '无'} , ${config.temperaturelcdenabled === 1 ? '亮屏' : '无'}`},
  389. { name: '心率监测:', value: config.heartrateenabled === 1 ? '打开': '关闭' },
  390. { name: '检测周期:', value: this.formatInteval(config.heartrateinteval) },
  391. { name: '告警阈值-上限:', value: config.heartratemaxvalue + '次' },
  392. { name: '告警阈值-下限:', value: config.heartrateminvalue + '次' },
  393. { name: '告警方式:', value: `${config.heartratevibrateenabled === 1 ? '震动' : '无'} , ${config.heartratelcdenabled === 1 ? '亮屏' : '无'}`},
  394. { name: '血氧监测:', value: config.spo2enabled === 1 ? '打开': '关闭' },
  395. { name: '检测周期:', value: this.formatInteval(config.spo2inteval) },
  396. { name: '告警阈值-低于:', value: config.spo2minvalue + '%' },
  397. /* { name: '告警阈值-低温:', value: config.temperatureminvalue + '度' }, */
  398. { name: '告警方式:', value: `${config.spo2vibrateenabled === 1 ? '震动' : '无'} , ${config.spo2lcdenabled === 1 ? '亮屏' : '无'}`},
  399. ]
  400. } else {
  401. this.settingItems[findIndex].text = this.concatTitle('健康监测','关闭', '耗电低');
  402. this.settingItems[findIndex].data = [];
  403. }
  404. });
  405. resolve(true);
  406. })
  407. },
  408. // 获取血压监测参数设置
  409. getBloodConfig() {
  410. /* APICore.getBloodPressConfig({imei: this.imei}).then(res => {
  411. let data = res.data.data;
  412. if(data) {
  413. this.settingItems[6].text = this.concatTitle('血压监测', data.bloodPressenabled === 1 ? '打开': '关闭', data.bloodPressenabled === 1 ? '耗电高' : '耗电低');
  414. this.settingItems[6].data = [
  415. { name: '血压监测:', value: data.bloodPressenabled === 1 ? '打开': '关闭' },
  416. { name: '检测周期:', value: this.formatInteval(data.bloodPressinteval) },
  417. { name: '告警阈值-收缩压:', value: String(data.systolicmaxvalue)},
  418. { name: '告警方式:', value: `${data.bloodPressvibrateenabled === 1 ? '震动' : '无'} ,${data.bloodPresslcdenabled === 1 ? '亮屏' : '无'}`},
  419. ]
  420. } else {
  421. this.settingItems[6].text = this.concatTitle('血压监测','关闭', '耗电低');
  422. this.settingItems[6].data = [];
  423. }
  424. }); */
  425. return new Promise(resolve => {
  426. APICore.getBloodPressConfig({imei: this.imei}).then(res => {
  427. let data = res.data.data;
  428. let index = 7;
  429. let findIndex = this.settingItems.findIndex(item => {
  430. return item.index === index
  431. });
  432. if(data) {
  433. this.settingItems[findIndex].text = this.concatTitle('血压监测', data.bloodPressenabled === 1 ? '打开': '关闭', data.bloodPressenabled === 1 ? '耗电高' : '耗电低');
  434. this.settingItems[findIndex].data = [
  435. { name: '血压监测:', value: data.bloodPressenabled === 1 ? '打开': '关闭' },
  436. { name: '检测周期:', value: this.formatInteval(data.bloodPressinteval) },
  437. { name: '告警阈值-收缩压:', value: String(data.systolicmaxvalue)},
  438. { name: '告警方式:', value: `${data.bloodPressvibrateenabled === 1 ? '震动' : '无'} ,${data.bloodPresslcdenabled === 1 ? '亮屏' : '无'}`},
  439. ]
  440. } else {
  441. this.settingItems[findIndex].text = this.concatTitle('血压监测','关闭', '耗电低');
  442. this.settingItems[findIndex].data = [];
  443. }
  444. });
  445. resolve(true);
  446. })
  447. },
  448. // 格式化等级
  449. formatReminder(value) {
  450. let text = "";
  451. if (value == 1) {
  452. text = "轻度";
  453. } else if (value == 2) {
  454. text = "中度";
  455. } else if (value == 3) {
  456. text = "重度";
  457. }
  458. return text;
  459. },
  460. // 格式化监测时段
  461. formatTimeArea(timeArr) {
  462. let timeToString = timeArr.map(item => {
  463. return `{时段: ${item.time},时长:${item.duration};}`;
  464. });
  465. return String(timeToString);
  466. },
  467. // 获取心理监测参数设置
  468. getPsychAbilityConfig() {
  469. /* APICore.getPsychAbilityConfig({imei: this.imei}).then(res => {
  470. let data = res.data.data;
  471. if (data) {
  472. this.settingItems[7].text = this.concatTitle('心理监测', data.enabled === 1 ? '打开': '关闭', data.enabled === 1 ? '耗电高' : '耗电低');
  473. this.settingItems[7].data = [
  474. { name: '心理监测:', value: data.enabled === 1 ? '打开': '关闭' },
  475. { name: '设备显示:', value: data.device_display === 1 ? '打开': '关闭' },
  476. { name: '监测时段:', value: this.formatTimeArea(data.time_area) },
  477. { name: '提醒设置:', value: data.reminder_setting.enable === 1 ? '打开': '关闭' },
  478. { name: '抑郁等级:', value: this.formatReminder(data.reminder_setting.setting.depressive) },
  479. { name: '压力等级:', value: this.formatReminder(data.reminder_setting.setting.pressure) },
  480. { name: '疲劳等级:', value: this.formatReminder(data.reminder_setting.setting.fatigue) },
  481. { name: '告警方式:', value: `${data.vibrating_screen === 1 ? '震动' : '无'}, ${data.brightening_screen === 1 ? '亮屏' : '无'}`},
  482. ]
  483. } else {
  484. this.settingItems[7].text = this.concatTitle('心理监测', '关闭', '耗电低');
  485. this.settingItems[7].data = [];
  486. }
  487. }); */
  488. return new Promise(resolve => {
  489. APICore.getPsychAbilityConfig({imei: this.imei}).then(res => {
  490. let data = res.data.data;
  491. let index = 8;
  492. let findIndex = this.settingItems.findIndex(item => {
  493. return item.index === index
  494. });
  495. if (data) {
  496. this.settingItems[findIndex].text = this.concatTitle('心理监测', data.enabled === 1 ? '打开': '关闭', data.enabled === 1 ? '耗电高' : '耗电低');
  497. this.settingItems[findIndex].data = [
  498. { name: '心理监测:', value: data.enabled === 1 ? '打开': '关闭' },
  499. { name: '设备显示:', value: data.device_display === 1 ? '打开': '关闭' },
  500. { name: '监测时段:', value: this.formatTimeArea(data.time_area) },
  501. { name: '提醒设置:', value: data.reminder_setting.enable === 1 ? '打开': '关闭' },
  502. { name: '抑郁等级:', value: this.formatReminder(data.reminder_setting.setting.depressive) },
  503. { name: '压力等级:', value: this.formatReminder(data.reminder_setting.setting.pressure) },
  504. { name: '疲劳等级:', value: this.formatReminder(data.reminder_setting.setting.fatigue) },
  505. { name: '告警方式:', value: `${data.vibrating_screen === 1 ? '震动' : '无'}, ${data.brightening_screen === 1 ? '亮屏' : '无'}`},
  506. ]
  507. } else {
  508. this.settingItems[findIndex].text = this.concatTitle('心理监测', '关闭', '耗电低');
  509. this.settingItems[findIndex].data = [];
  510. }
  511. });
  512. resolve(true);
  513. })
  514. },
  515. // 转换时间格式
  516. shiftTime(time, model) {
  517. if(time) {
  518. let startTime = '{' + time.slice(0,2) + ":" + time.slice(2,4);
  519. let endTime = time.slice(4,6) + ":" + time.slice(6,8) + '}';
  520. let timeObj = {
  521. startTime: startTime,
  522. endTime: endTime,
  523. };
  524. this.dateList.push(timeObj);
  525. }
  526. },
  527. // 转化时间数组 :)
  528. fomatTimeArr(arr) {
  529. let timeString = arr.map(item => {
  530. return item.startTime + '-' + item.endTime
  531. });
  532. return String(timeString);
  533. },
  534. // 获取佩戴监测参数设置
  535. getNowearConfig() {
  536. /* APICore.getNowearConfig({ imei: this.imei }).then(res => {
  537. let data = res.data.data;
  538. if(data) {
  539. this.dateList = [];
  540. this.shiftTime(data.timearea1, 0);
  541. this.shiftTime(data.timearea2, 1);
  542. this.shiftTime(data.timearea3, 2);
  543. this.shiftTime(data.timearea4, 3);
  544. this.shiftTime(data.timearea5, 4);
  545. this.shiftTime(data.timearea6, 5);
  546. this.shiftTime(data.timearea7, 6);
  547. this.shiftTime(data.timearea8, 7);
  548. this.shiftTime(data.timearea9, 8);
  549. this.shiftTime(data.timearea10, 9);
  550. this.settingItems[8].text = this.concatTitle('佩戴监测', data.enabled === 1 ? '打开': '关闭', data.enabled === 1 ? '耗电高' : '耗电低');
  551. this.settingItems[8].data = [
  552. { name: '佩戴监测:', value: data.enabled === 1 ? '打开': '关闭' },
  553. { name: '检测周期:', value: (data.interval / 60) + '分钟' },
  554. { name: '检测时段:', value: this.fomatTimeArr(this.dateList)},
  555. { name: '未佩戴处理方式:', value: data.mode === 1 ? '不处理': '飞行模式' },
  556. { name: '佩戴提醒:', value: data.warningtimes !== 0 ? '打开' : '关闭' },
  557. { name: '提醒时间间隔:', value: (data.warninginterval / 60) + '分钟' },
  558. { name: '提醒次数:', value: data.warningtimes + '次'},
  559. { name: '告警方式:', value: `${data.vibrateenabled === 1 ? '震动' : '无'} ,${data.lcdenabled === 1 ? '亮屏' : '无'} ,${data.soundenabled === 1 ? '声音' : '无'}`},
  560. ]
  561. } else {
  562. this.settingItems[8].text = this.concatTitle('佩戴监测', '关闭', '耗电低');
  563. this.settingItems[8].data = [];
  564. }
  565. }); */
  566. return new Promise(resolve => {
  567. APICore.getNowearConfig({ imei: this.imei }).then(res => {
  568. let data = res.data.data;
  569. let index = 9;
  570. let findIndex = this.settingItems.findIndex(item => {
  571. return item.index === index
  572. });
  573. if(data) {
  574. this.dateList = [];
  575. this.shiftTime(data.timearea1, 0);
  576. this.shiftTime(data.timearea2, 1);
  577. this.shiftTime(data.timearea3, 2);
  578. this.shiftTime(data.timearea4, 3);
  579. this.shiftTime(data.timearea5, 4);
  580. this.shiftTime(data.timearea6, 5);
  581. this.shiftTime(data.timearea7, 6);
  582. this.shiftTime(data.timearea8, 7);
  583. this.shiftTime(data.timearea9, 8);
  584. this.shiftTime(data.timearea10, 9);
  585. this.settingItems[findIndex].text = this.concatTitle('佩戴监测', data.enabled === 1 ? '打开': '关闭', data.enabled === 1 ? '耗电高' : '耗电低');
  586. this.settingItems[findIndex].data = [
  587. { name: '佩戴监测:', value: data.enabled === 1 ? '打开': '关闭' },
  588. { name: '检测周期:', value: (data.interval / 60) + '分钟' },
  589. { name: '检测时段:', value: this.fomatTimeArr(this.dateList)},
  590. { name: '未佩戴处理方式:', value: data.mode === 1 ? '不处理': '飞行模式' },
  591. { name: '佩戴提醒:', value: data.warningtimes !== 0 ? '打开' : '关闭' },
  592. { name: '提醒时间间隔:', value: (data.warninginterval / 60) + '分钟' },
  593. { name: '提醒次数:', value: data.warningtimes + '次'},
  594. { name: '告警方式:', value: `${data.vibrateenabled === 1 ? '震动' : '无'} ,${data.lcdenabled === 1 ? '亮屏' : '无'} ,${data.soundenabled === 1 ? '声音' : '无'}`},
  595. ]
  596. } else {
  597. this.settingItems[findIndex].text = this.concatTitle('佩戴监测', '关闭', '耗电低');
  598. this.settingItems[findIndex].data = [];
  599. }
  600. });
  601. resolve(true);
  602. })
  603. },
  604. // 获取设备上报参数
  605. getUploadConfig() {
  606. /* APICore.getUploadConfig({imei: this.imei}).then(res => {
  607. const data = res.data.data;
  608. if(data) {
  609. this.settingItems[9].text = `上报周期(${data.uploadinteval}分钟)`;
  610. } else {
  611. this.settingItems[9].text = '上报周期(关闭)';
  612. }
  613. }); */
  614. return new Promise(resolve => {
  615. APICore.getUploadConfig({imei: this.imei}).then(res => {
  616. const data = res.data.data;
  617. let index = 10;
  618. let findIndex = this.settingItems.findIndex(item => {
  619. return item.index === index
  620. });
  621. if(data) {
  622. this.settingItems[findIndex].text = `上报周期(${data.uploadinteval}分钟)`;
  623. } else {
  624. this.settingItems[findIndex].text = '上报周期(关闭)';
  625. }
  626. });
  627. resolve(true);
  628. })
  629. },
  630. // 获取设备状态
  631. getDeviceStatus() {
  632. let reqBody = {
  633. imei: /* '861281060086216' *//* '862838050029479' */this.$store.getters.imei
  634. };
  635. // 线上地址
  636. let baseUrl = process.env.VUE_APP_BASE_API;
  637. let reqUrl = `${baseUrl}/iotservice/queryDeviceDetail`;
  638. //本地调试地址
  639. /* let reqUrl = `/api/id/queryDeviceDetail`; */
  640. return new Promise(resolve => {
  641. axios.post(`${reqUrl}`, reqBody).then(res => {
  642. let data = res.data;
  643. let index = 0;
  644. let findIndex = this.settingItems.findIndex(item => {
  645. return item.index === index
  646. });
  647. if(data.code === 200) {
  648. this.settingItems[findIndex].text = `设备状态(${this.calcDeviceStatus(data.data.data.status)})`;
  649. } else {
  650. this.settingItems[findIndex].text = `设备状态(无数据)`;
  651. }
  652. });
  653. resolve(true);
  654. })
  655. },
  656. // 计算设备状态
  657. calcDeviceStatus(status) {
  658. let result = ''
  659. switch(status) {
  660. case 'ONLINE':
  661. result = '在线';
  662. break;
  663. case 'OFFLINE':
  664. result = '离线';
  665. break;
  666. case 'UNACTIVE':
  667. result = '未激活';
  668. break;
  669. case 'DISABLE':
  670. result = '已禁用';
  671. break;
  672. default: break;
  673. };
  674. return result;
  675. },
  676. // 点击左边树形图
  677. onCkickNav(value) {
  678. this.active = value;
  679. this.$store.commit('active', value);
  680. switch(value) {
  681. /* case 10:
  682. case 11:
  683. case 12:
  684. this.$router.push({
  685. name: 'devicePower',
  686. query: {
  687. title: `${value === 10 ? 'BatteryLevel' : value === 11 ? 'status': 'Offline'}`
  688. }
  689. });
  690. break; */
  691. case 0:
  692. this.getDeviceStatus();
  693. break;
  694. case 1:
  695. this.getWatchConfig();
  696. break;
  697. case 2:
  698. this.getWatchConfig();
  699. break;
  700. case 3:
  701. this.getIotCtlMode();
  702. break;
  703. case 4:
  704. this.getLocationConfig();
  705. break;
  706. case 5:
  707. this.getDrownConfig();
  708. break;
  709. case 6:
  710. this.getHealthConfig();
  711. break;
  712. case 7:
  713. this.getBloodConfig();
  714. break;
  715. case 8:
  716. this.getPsychAbilityConfig();
  717. break;
  718. case 9:
  719. this.getNowearConfig();
  720. break;
  721. case 10:
  722. this.getUploadConfig();
  723. break;
  724. default: break;
  725. }
  726. },
  727. // 点击页面查看按钮
  728. onClick(value) {
  729. if(value) {
  730. this.$router.push({
  731. name: 'devicePower',
  732. query: {
  733. title: `${value === 11 ? 'BatteryLevel' : value === 12 ? 'status': 'Offline'}`
  734. }
  735. })
  736. }
  737. }
  738. }
  739. }
  740. </script>
  741. <style lang="scss">
  742. .van-tree-select__nav-item {
  743. padding: 15px 5px !important;
  744. }
  745. .van-tree-select__content {
  746. padding: 5px;
  747. }
  748. .van-tree-select__nav{
  749. flex: 1 !important;
  750. }
  751. .van-tree-select__content {
  752. @include center();
  753. }
  754. </style>
  755. <style scoped lang="scss">
  756. @import "./index.scss";
  757. </style>