deviceOper.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619
  1. <template>
  2. <!-- 设备常见操作弹窗 -->
  3. <van-dialog class-name="operDialog" width="350px" v-model:show="show" :showConfirmButton="false"
  4. :showCancelButton="false" :closeOnClickOverlay="true">
  5. <slot name="title">
  6. <div class="van-dialog__header" style="padding-bottom: 1em;">{{ $t("device.commonOperations") }}</div>
  7. <div class="txt1" style="padding: 0.2em 1em">
  8. {{ $t("device.equipmentName") }}: {{ device.name != null ? device.name : $t("device.equipmentNameTips") }}
  9. </div>
  10. <div class="txt1" style="padding: 0.2em 1em">
  11. {{ $t("device.equipmentNo") }}: {{ device.clientId.slice(-6) }}
  12. </div>
  13. </slot>
  14. <van-icon name="cross" class="close" @click="show = false" />
  15. <div class="group4 flex-col"></div>
  16. <div class="operBox">
  17. <!-- 重启炉头 -->
  18. <div class="operItem" @click="restartFurnace()">
  19. <div class="operIcon">
  20. <img class="operImg" src="../../assets/device/operIcon/restart.png" />
  21. </div>
  22. <div v-if="device.machineType === '0' || device.machineType === null" class="operText">{{
  23. $t("device.restartFurnaceHead") }}</div>
  24. <div v-else class="operText">{{ $t("device.restart") }}</div>
  25. </div>
  26. <!-- 睡眠 -->
  27. <div class="operItem" @click="sleepEquipmentFun()">
  28. <div class="operIcon">
  29. <img class="operImg" src="../../assets/device/operIcon/sleep.png" />
  30. </div>
  31. <div class="operText">{{ sleepTitle }}</div>
  32. </div>
  33. <!-- 开启炉头/设备 -->
  34. <div class="operItem" @click="openOffFurnace(1)">
  35. <div class="operIcon">
  36. <img class="operImg" src="../../assets/device/operIcon/onOff.png" />
  37. </div>
  38. <div v-if="device.machineType === '0' || device.machineType === null" class="operText">{{
  39. $t("device.openFurnHead") }}</div>
  40. <div v-else class="operText">{{ $t("device.openDevice") }}</div>
  41. </div>
  42. <!-- 关闭炉头/设备 -->
  43. <div class="operItem" @click="openOffFurnace(0)">
  44. <div class="operIcon">
  45. <img class="operImg" src="../../assets/device/operIcon/onOff.png" />
  46. </div>
  47. <div v-if="device.machineType === '0' || device.machineType === null" class="operText">{{
  48. $t("device.closeFurnHead") }}</div>
  49. <div v-else class="operText">{{ $t("device.closeDevice") }}</div>
  50. </div>
  51. <!-- 雪糕机制冷模式 -->
  52. <div v-if="device.machineType == '2'" class="operItem" @click="updateWorkingMode(0)">
  53. <div class="operIcon">
  54. <img class="operImg" src="../../assets/device/operIcon/refrigeration.png" />
  55. </div>
  56. <div class="operText">{{ $t("device.refrigeration") }}</div>
  57. </div>
  58. <!-- 雪糕机搅拌模式 -->
  59. <div v-if="device.machineType == '2'" class="operItem" @click="updateWorkingMode(1)">
  60. <div class="operIcon">
  61. <img class="operImg" src="../../assets/device/operIcon/stir.png" />
  62. </div>
  63. <div class="operText">{{ $t("device.stir") }}</div>
  64. </div>
  65. <!-- 雪糕机保鲜模式 -->
  66. <div v-if="device.machineType == '2'" class="operItem" @click="updateWorkingMode(2)">
  67. <div class="operIcon">
  68. <img class="operImg" src="../../assets/device/operIcon/keepFresh.png" />
  69. </div>
  70. <div class="operText">{{ $t("device.keepFresh") }}</div>
  71. </div>
  72. <!-- <div class="operItem" @click="openDoorFun()">
  73. <div class="operIcon">
  74. <img
  75. class="operImg"
  76. src="../../assets/device/operIcon/openDoor.png"
  77. />
  78. </div>
  79. <div class="operText">{{ $t("device.remoteDoorOpening") }}</div>
  80. </div> -->
  81. <!-- 远程开门 -->
  82. <div class="operItem" @click="openDoorFun()">
  83. <div class="operIcon">
  84. <img class="operImg" src="../../assets/device/operIcon/openDoor.png" />
  85. </div>
  86. <div class="operText">{{ $t("device.remoteDoorOpening") }}</div>
  87. </div>
  88. <!-- 远程做糖 -->
  89. <div class="operItem" @click="doSugar()">
  90. <div class="operIcon">
  91. <img class="operImg" src="../../assets/device/operIcon/doSugar.png" />
  92. </div>
  93. <div v-if="device.machineType === '0' || device.machineType === null" class="operText">{{
  94. $t("device.remoteSugarMaking") }}</div>
  95. <div v-else class="operText">{{ $t("device.remoteProduction") }}</div>
  96. </div>
  97. <!-- 定时开关 -->
  98. <div class="operItem" @click="alarmClock()" v-if="device.equimentType != 'SI320'">
  99. <div class="operIcon">
  100. <img class="operImg" src="../../assets/device/operIcon/alarmClock.png" />
  101. </div>
  102. <div class="operText">{{ $t("device.timeSwitch") }}</div>
  103. </div>
  104. <!-- 音量调节 -->
  105. <div class="operItem" @click="modulation()" v-if="device.equimentType != 'SI320'">
  106. <div class="operIcon">
  107. <img class="operImg" src="../../assets/device/operIcon/modulation.png" />
  108. </div>
  109. <div class="operText">{{ $t("device.modulation") }}</div>
  110. </div>
  111. <!-- <div v-if="user.ifForeign == '0'" class="operItem" @click="recharge()">
  112. <div class="operIcon">
  113. <img class="operImg" src="../../assets/device/operIcon/recharge.png" />
  114. </div>
  115. <div class="operText">{{ $t("device.equipmentRecharge") }}</div>
  116. </div> -->
  117. <div class="operItem" @click="paramSetPush()" v-if="device.equimentType != 'SI320' && device.machineType === '0'">
  118. <div class="operIcon">
  119. <img class="operImg" src="../../assets/device/operIcon/paramsSet.png" />
  120. </div>
  121. <div class="operText">{{ $t("device.parameterSetting") }}</div>
  122. </div>
  123. <div v-if="user.ifForeign == '0'" class="operItem" @click="saveProportionPush()">
  124. <div class="operIcon">
  125. <img class="operImg" src="../../assets/device/operIcon/saveProportion.png" />
  126. </div>
  127. <div class="operText">{{ $t("device.addDistributor") }}</div>
  128. </div>
  129. <div v-if="isRole('M17')" class="operItem" @click="tuojiEquipmentFun()">
  130. <div class="operIcon">
  131. <img class="operImg" src="../../assets/device/operIcon/tuoji.png" />
  132. </div>
  133. <div class="operText">{{ $t("device.sysOffline") }}</div>
  134. </div>
  135. <div class="operItem" @click="modifyPriceClk()">
  136. <div class="operIcon">
  137. <img class="operImg" src="../../assets/device/operIcon/editPrice.png" />
  138. </div>
  139. <div class="operText">{{ $t("device.modifyPrice") }}</div>
  140. </div>
  141. <!-- 物料监控 -->
  142. <div class="operItem" @click="materialMonitorClk()" v-if="device.equimentType != 'SI320'">
  143. <div class="operIcon">
  144. <img v-if="materialIcon === '0'" class="operImg" src="../../assets/device/operIcon/materialMonitor.png" />
  145. <img v-else class="operImg" src="../../assets/device/operIcon/materialMonitorOff.png" />
  146. <!-- <img class="operImg" src="../../assets/device/operIcon/materialMonitor.png" /> -->
  147. </div>
  148. <!-- <div class="operText">{{ $t("device.materialMonitor") }}</div> -->
  149. <div class="operText">{{ materialTitle }}</div>
  150. </div>
  151. <!-- 屏蔽/展示商品 -->
  152. <div class="operItem" @click="showGoodsClk()" v-if="device.equimentType != 'SI320'">
  153. <div class="operIcon">
  154. <img class="operImg" src="../../assets/device/operIcon/showGoods.png" />
  155. </div>
  156. <div class="operText">{{ $t("device.showGoods") }}</div>
  157. </div>
  158. <!-- DIY花型 -->
  159. <!-- v-if="device.equimentType == 'MG320' || device.equimentType == 'MG330'" -->
  160. <div class="operItem" v-if="user.type < 1" @click="diyFlowerClk()">
  161. <div class="operIcon">
  162. <img class="operImg" src="../../assets/device/operIcon/diyFlower.png" />
  163. </div>
  164. <div class="operText">{{ $t("device.diyFlower") }}</div>
  165. </div>
  166. <!-- 修改机器密码 -->
  167. <div v-if="user.type < 3" class="operItem" @click="changePasswordClk()">
  168. <div class="operIcon">
  169. <img class="operImg" src="../../assets/device/operIcon/password.png" />
  170. </div>
  171. <div class="operText">{{ $t("device.changePassword") }}</div>
  172. </div>
  173. <!-- 删除设备 -->
  174. <div v-if="user.type < 2" class="operItem" @click="deleteDevice()">
  175. <div class="operIcon">
  176. <img class="operImg" src="../../assets/device/operIcon/deletedevice.png" />
  177. </div>
  178. <div class="operText">{{ $t("device.deleteDevice") }}</div>
  179. </div>
  180. <!-- 日志功能 -->
  181. <div v-if="user.type < 2" class="operItem" @click="viewLogs()">
  182. <div class="operIcon">
  183. <img class="operImg" src="../../assets/device/operIcon/viewLogs.png" />
  184. </div>
  185. <div class="operText">{{ $t("device.viewLogs") }}</div>
  186. </div>
  187. <!-- 定制logo -->
  188. <div v-if="user.type < 2" class="operItem" @click="customLogo()">
  189. <div class="operIcon">
  190. <img class="operImg" src="../../assets/device/operIcon/customLogo.png" />
  191. </div>
  192. <div class="operText">{{ $t("device.customLogo.customLogo") }}</div>
  193. </div>
  194. <!-- 远程重启触摸屏 -->
  195. <div class="operItem" @click="restartAndroid()">
  196. <div class="operIcon">
  197. <img class="operImg" src="../../assets/device/operIcon/restartAndroid.png" />
  198. </div>
  199. <div class="operText">{{ $t("device.restartAndroid") }}</div>
  200. </div>
  201. <!-- 查看定位 -->
  202. <!-- <div class="operItem" @click="viewPosiClk()">
  203. <div class="operIcon">
  204. <img class="operImg" src="../../assets/device/operIcon/location.png" />
  205. </div>
  206. <div class="operText">{{ $t("device.viewPositioning") }}</div>
  207. </div> -->
  208. </div>
  209. </van-dialog>
  210. <van-dialog v-model:show="operCheckShow" :title="$t('device.operationConfirmation')" :showConfirmButton="false"
  211. :showCancelButton="false">
  212. <div class="operCheckBox">
  213. <div class="block5 flex-col"></div>
  214. <span class="word10">{{
  215. $t("device.pleaseConfirmAgainWhetherToOperate")
  216. }}</span>
  217. <div class="block6 flex-row justify-between">
  218. <div class="mod7 flex-col" @click="operCheckClear()">
  219. <span class="info5">{{ $t("device.IllThinkAboutItAgain") }}</span>
  220. </div>
  221. <div class="mod8 flex-col" @click="operCheck()">
  222. <span class="info6">{{ $t("device.confirm") }}</span>
  223. </div>
  224. </div>
  225. </div>
  226. </van-dialog>
  227. </template>
  228. <script>
  229. import { onMounted, ref } from "vue";
  230. import {
  231. setFurnace,
  232. sleepEquipment,
  233. openDoor,
  234. deviceTuoji,
  235. delOneDevice,
  236. enableMaterial,
  237. restartScreen,
  238. machineReset,
  239. changeWorkingMode,
  240. } from "../../service/device";
  241. import { showFailToast, showSuccessToast } from "vant";
  242. import { useRouter } from "vue-router";
  243. import { useI18n } from "vue-i18n";
  244. import { getLoginUser, styleUrl } from "@/common/js/utils";
  245. export default {
  246. emits: ['operfinish'],
  247. setup(props, { emit }) {
  248. // 点击修改价格
  249. const modifyPriceClk = () => {
  250. router.push({
  251. path: "modifyPrice",
  252. query: { deviceId: device.value.id, name: device.value.name },
  253. });
  254. };
  255. // 点击屏蔽/展示商品
  256. const showGoodsClk = () => {
  257. router.push({
  258. path: "showGoods",
  259. query: { deviceId: device.value.id, name: device.value.name },
  260. });
  261. };
  262. // 点击DIY花型
  263. const diyFlowerClk = () => {
  264. router.push({
  265. path: "diyFlower",
  266. query: { deviceId: device.value.id, name: device.value.name, diyFlowerStatus: device.value.diyFlowerStatus, flower: device.value.flowers },
  267. });
  268. };
  269. const { t } = useI18n();
  270. const user = getLoginUser();
  271. const router = useRouter();
  272. const show = ref(false);
  273. const operCheckShow = ref(false);
  274. const device = ref({});
  275. const operType = ref("");
  276. // 睡眠按钮文字
  277. const sleepTitle = ref(t("device.turnOnSleep"));
  278. // 物料监控按钮文字
  279. const materialTitle = ref(t("device.materialMonitorOn"));
  280. // 睡眠图标
  281. const sleepIcon = ref('0');
  282. // 物料监控图标
  283. const materialIcon = ref('0');
  284. // 工作模式
  285. const workMode = ref(null);
  286. // 初始化页面获取列表
  287. onMounted(async () => {
  288. // 加载样式
  289. styleUrl('deviceOper');
  290. });
  291. // 当前弹窗父组件触发
  292. const showOper = (e) => {
  293. device.value = e;
  294. show.value = true;
  295. // isSleep=true,机器属于休眠状态,按钮是关闭休眠
  296. if (device.value.isSleep) {
  297. sleepTitle.value = t("device.turnOffSleep");
  298. } else {
  299. sleepTitle.value = t("device.turnOnSleep");
  300. }
  301. // 物料监控
  302. // isMaterialUse = "1"时,物料监控已开启
  303. if (device.value.isMaterialUse === '1') {
  304. materialTitle.value = t("device.materialMonitorOn");
  305. materialIcon.value = '0';
  306. } else {
  307. materialTitle.value = t("device.materialMonitorOff");
  308. materialIcon.value = '1';
  309. }
  310. };
  311. const closeOper = () => {
  312. show.value = false;
  313. }
  314. // 重启炉头
  315. const restartFurnace = () => {
  316. operType.value = 1;
  317. operCheckShow.value = true;
  318. };
  319. // 睡眠
  320. const sleepEquipmentFun = () => {
  321. operType.value = 2;
  322. operCheckShow.value = true;
  323. };
  324. // 点击的是开启炉头还是关闭 1开启 0关闭
  325. const clkOpenOrClose = ref(1);
  326. // 开启关闭炉头
  327. const openOffFurnace = (idx) => {
  328. clkOpenOrClose.value = idx;
  329. operType.value = 3;
  330. operCheckShow.value = true;
  331. };
  332. // 远程开门
  333. /* const openDoorFun = () => {
  334. operType.value = 4;
  335. operCheckShow.value = true;
  336. }; */
  337. const openDoorFun = () => {
  338. // if (device.value.machineType === '1' || device.value.equimentType === 'MG280') {
  339. // operType.value = 4;
  340. // operCheckShow.value = true;
  341. // } else {
  342. // router.push({ path: "openDoor", query: { deviceId: device.value.id } });
  343. // }
  344. router.push({ path: "openDoor", query: { deviceId: device.value.id, machineType: device.value.machineType } });
  345. };
  346. // 日志功能
  347. const viewLogs = () => {
  348. router.push({ path: "viewLogs", query: { deviceId: device.value.id } });
  349. };
  350. // 定制logo
  351. const customLogo = () => {
  352. router.push({ path: "customLogo", query: { deviceId: device.value.id } });
  353. }
  354. // 音量调节
  355. const modulation = () => {
  356. router.push({ path: "modulation", query: { deviceId: device.value.id } });
  357. };
  358. // 远程做糖
  359. const doSugar = () => {
  360. router.push({ path: "doSugar", query: { deviceId: device.value.id, machineType: device.value.machineType } });
  361. };
  362. // 定时开关
  363. const alarmClock = () => {
  364. router.push({ path: "alarmClock", query: { deviceId: device.value.id } });
  365. };
  366. // 跳转 - 设备充值
  367. const recharge = () => {
  368. router.push({ path: "recharge", query: { deviceId: device.value.id } });
  369. };
  370. // 跳转 - 参数设置
  371. const paramSetPush = () => {
  372. router.push({ path: "paramsSet", query: { deviceId: device.value.id } });
  373. };
  374. // 跳转 - 添加分销人
  375. const saveProportionPush = () => {
  376. router.push({
  377. path: "distributionDetail",
  378. query: { deviceId: device.value.id, clientId: device.value.clientId },
  379. });
  380. };
  381. // 系统脱机
  382. const tuojiEquipmentFun = () => {
  383. operType.value = 5;
  384. operCheckShow.value = true;
  385. };
  386. // 修改机器密码
  387. const changePasswordClk = () => {
  388. router.push({
  389. path: "devicePassword",
  390. query: { deviceId: device.value.id, name: device.value.name },
  391. });
  392. };
  393. // 删除设备
  394. const deleteDevice = () => {
  395. operType.value = 6;
  396. operCheckShow.value = true;
  397. };
  398. // 物料监控
  399. const materialMonitorClk = () => {
  400. operType.value = 7;
  401. operCheckShow.value = true;
  402. };
  403. // 重启触摸屏
  404. const restartAndroid = () => {
  405. operType.value = 9;
  406. operCheckShow.value = true;
  407. };
  408. // 切换工作模式
  409. const updateWorkingMode = (value) => {
  410. workMode.value = value;
  411. operType.value = 10;
  412. operCheckShow.value = true;
  413. };
  414. // 取消操作
  415. const operCheckClear = () => {
  416. operCheckShow.value = false;
  417. };
  418. // 功能操作 - 确认操作
  419. const operCheck = async () => {
  420. // 重启
  421. if (operType.value === 1) {
  422. if (device.value.machineType === '2') {
  423. const { data } = await machineReset({
  424. equipmentId: device.value.id,
  425. });
  426. if (data.code) {
  427. showSuccessToast(t("device.enableMaterialSucceed"));
  428. operCheckShow.value = false;
  429. } else {
  430. showFailToast(data.message);
  431. }
  432. } else {
  433. const { data } = await setFurnace({
  434. equipmentId: device.value.id,
  435. eqeStatus: 1,
  436. });
  437. if (data.code) {
  438. showSuccessToast(t("device.restartSucceeded"));
  439. operCheckShow.value = false;
  440. } else {
  441. showFailToast(data.message);
  442. }
  443. }
  444. }
  445. // 睡眠
  446. if (operType.value === 2) {
  447. let eqeStatus = 1;
  448. // isSleep=true,机器属于休眠状态,按钮是关闭休眠
  449. if (device.value.isSleep) {
  450. eqeStatus = 0;
  451. }
  452. const { data } = await sleepEquipment({
  453. equipmentId: device.value.id,
  454. eqeStatus,
  455. });
  456. if (data.code) {
  457. showSuccessToast(t("device.sleepSuccessfully"));
  458. operCheckShow.value = false;
  459. } else {
  460. showFailToast(data.message);
  461. }
  462. }
  463. // 开机|关机
  464. if (operType.value === 3) {
  465. device.value.eqeStatus = clkOpenOrClose.value;
  466. const { data } = await setFurnace({
  467. equipmentId: device.value.id,
  468. eqeStatus: device.value.eqeStatus,
  469. });
  470. if (data.code) {
  471. showSuccessToast(
  472. `${device.value.eqeStatus === 0
  473. ? t("device.close")
  474. : t("device.open")
  475. }${t("device.success")}`
  476. );
  477. device.value.eqeStatus = device.value.eqeStatus === 0 ? 1 : 0;
  478. operCheckShow.value = false;
  479. } else {
  480. showFailToast(data.message);
  481. }
  482. }
  483. // 远程开门
  484. if (operType.value === 4) {
  485. const { data } = await openDoor({ equipmentId: device.value.id });
  486. if (data.code) {
  487. showSuccessToast(t("device.remoteDoorOpeningSucceeded"));
  488. operCheckShow.value = false;
  489. } else {
  490. showFailToast(data.message);
  491. }
  492. }
  493. // 系统脱机
  494. if (operType.value === 5) {
  495. const { data } = await deviceTuoji({ id: device.value.id, clientId: device.value.clientId, adminUserName: user.username });
  496. if (data.code) {
  497. showSuccessToast(t("device.sysOffSuccess"));
  498. operCheckShow.value = false;
  499. } else {
  500. showFailToast(data.message);
  501. }
  502. }
  503. // 删除设备
  504. if (operType.value === 6) {
  505. const { data } = await delOneDevice({
  506. equipmentId: device.value.id,
  507. adminId: user.id,
  508. });
  509. if (data.code) {
  510. showSuccessToast(t("device.deleteDeviceSucceed"));
  511. operCheckShow.value = false;
  512. } else {
  513. showFailToast(t("device.deleteDeviceFailed"));
  514. }
  515. }
  516. // 启用物料监控
  517. if (operType.value === 7) {
  518. let materialMonitorStatus = 0; // 0默认是未开启
  519. // isMaterialUse是1时,物料监控已启用,按钮是关闭功能
  520. if (device.value.isMaterialUse === "1") {
  521. materialMonitorStatus = 1; // 1代表已开启
  522. }
  523. const { data } = await enableMaterial({
  524. equipmentId: device.value.id,
  525. materialMonitorStatus
  526. });
  527. if (data.code === '00000') {
  528. showSuccessToast(t("device.enableMaterialSucceed"));
  529. operCheckShow.value = false;
  530. } else {
  531. showFailToast(t("device.enableMaterialFailed"));
  532. }
  533. }
  534. // 重启触摸屏
  535. if (operType.value === 9) {
  536. const { data } = await restartScreen({
  537. equipmentId: device.value.id,
  538. });
  539. if (data.code === '00000') {
  540. showSuccessToast(t("device.Succeed"));
  541. operCheckShow.value = false;
  542. } else {
  543. showFailToast(t("device.Failed"));
  544. }
  545. }
  546. // 切换雪糕机工作模式
  547. if (operType.value === 10) {
  548. const { data } = await changeWorkingMode({
  549. equipmentId: device.value.id,
  550. workingMode: workMode.value,
  551. });
  552. if (data.code === '00000') {
  553. showSuccessToast(t("device.Succeed"));
  554. operCheckShow.value = false;
  555. } else {
  556. showFailToast(t("device.Failed"));
  557. }
  558. }
  559. setTimeout(() => {
  560. // 关闭弹窗
  561. show.value = false;
  562. // 触发操作完成回调
  563. emit("operfinish", true);
  564. }, 2000);
  565. };
  566. const isRole = (key) => {
  567. return user.menuCodeList.filter((type) => key === type).length > 0;
  568. };
  569. return {
  570. user,
  571. device,
  572. show,
  573. operCheckShow,
  574. showOper,
  575. closeOper,
  576. restartFurnace,
  577. operCheckClear,
  578. operCheck,
  579. sleepEquipmentFun,
  580. openOffFurnace,
  581. openDoorFun,
  582. modulation,
  583. customLogo,
  584. doSugar,
  585. alarmClock,
  586. recharge,
  587. paramSetPush,
  588. saveProportionPush,
  589. tuojiEquipmentFun,
  590. isRole,
  591. modifyPriceClk,
  592. showGoodsClk,
  593. diyFlowerClk,
  594. sleepTitle,
  595. materialTitle,
  596. viewLogs,
  597. deleteDevice,
  598. restartAndroid,
  599. // viewPosiClk,
  600. changePasswordClk,
  601. sleepIcon,
  602. materialIcon,
  603. materialMonitorClk,
  604. updateWorkingMode,
  605. };
  606. },
  607. components: {},
  608. };
  609. </script>
  610. <style lang="less" scoped>
  611. @import "../../common/style/common";
  612. </style>