deviceInfo-ehome.vue 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. <style scoped>
  2. .user-panel {
  3. margin: 10px auto;
  4. }
  5. </style>
  6. <template>
  7. <el-dialog
  8. :visible.sync="showDialog"
  9. :title="title"
  10. :modal-append-to-body="false"
  11. style="text-align:left;"
  12. @close="closeDialog"
  13. :close-on-click-modal="false"
  14. >
  15. <div class="user-panel" v-loading="loading">
  16. <el-form ref="form" :model="formModel" :rules="ruleValidate" :label-width="'150px'">
  17. <el-row>
  18. <el-col :span="12">
  19. <el-form-item label="显示抓拍图片" prop="deviceNo">
  20. <el-switch
  21. v-model="formModel.showCapPic"
  22. active-color="#13ce66"
  23. active-text="是"
  24. inactive-color="#ff4949"
  25. inactive-text="否"
  26. ></el-switch>
  27. </el-form-item>
  28. </el-col>
  29. <el-col :span="12">
  30. <el-form-item label="显示用户信息" prop="deviceNo">
  31. <el-switch
  32. v-model="formModel.showUserInfo"
  33. active-color="#13ce66"
  34. active-text="是"
  35. inactive-color="#ff4949"
  36. inactive-text="否"
  37. ></el-switch>
  38. </el-form-item>
  39. </el-col>
  40. </el-row>
  41. <el-row>
  42. <el-col :span="12">
  43. <el-form-item label="叠加用户信息" prop="deviceNo">
  44. <el-switch
  45. v-model="formModel.overlayUserInfo"
  46. active-color="#13ce66"
  47. active-text="是"
  48. inactive-color="#ff4949"
  49. inactive-text="否"
  50. ></el-switch>
  51. </el-form-item>
  52. </el-col>
  53. <el-col :span="12">
  54. <el-form-item label="启用语音提示" prop="deviceNo">
  55. <el-switch
  56. v-model="formModel.voicePrompt"
  57. active-color="#13ce66"
  58. active-text="是"
  59. inactive-color="#ff4949"
  60. inactive-text="否"
  61. ></el-switch>
  62. </el-form-item>
  63. </el-col>
  64. </el-row>
  65. <el-row>
  66. <el-col :span="12">
  67. <el-form-item label="保存抓拍图片" prop="deviceNo">
  68. <el-switch
  69. v-model="formModel.saveCapPic"
  70. active-color="#13ce66"
  71. active-text="是"
  72. inactive-color="#ff4949"
  73. inactive-text="否"
  74. ></el-switch>
  75. </el-form-item>
  76. </el-col>
  77. <el-col :span="12">
  78. <el-form-item label="测温开关使能" prop="deviceNo">
  79. <el-switch
  80. v-model="formModel.thermalEnabled"
  81. active-color="#13ce66"
  82. active-text="开"
  83. inactive-color="#ff4949"
  84. inactive-text="关"
  85. ></el-switch>
  86. </el-form-item>
  87. </el-col>
  88. </el-row>
  89. <el-row>
  90. <el-col :span="12">
  91. <el-form-item label="温度阈值上限" prop="deviceNo">
  92. <el-input
  93. v-model.number="formModel.highestThermalThreshold"
  94. style="width: 100px"
  95. >
  96. <template slot="append">度</template>
  97. </el-input>
  98. </el-form-item>
  99. </el-col>
  100. <el-col :span="12">
  101. <el-form-item label="温度阈值下限" prop="deviceNo">
  102. <el-input
  103. v-model.number="formModel.lowestThermalThreshold"
  104. style="width: 100px"
  105. >
  106. <template slot="append">度</template>
  107. </el-input>
  108. </el-form-item>
  109. </el-col>
  110. </el-row>
  111. <el-row>
  112. <el-col :span="12">
  113. <el-form-item label="体温超标允许开门" prop="deviceNo">
  114. <el-switch
  115. v-model="formModel.thermalDoorEnabled"
  116. active-color="#13ce66"
  117. active-text="是"
  118. inactive-color="#ff4949"
  119. inactive-text="否"
  120. ></el-switch>
  121. </el-form-item>
  122. </el-col>
  123. </el-row>
  124. <el-row>
  125. <el-col :span="12">
  126. <el-form-item label="是否开启口罩检测">
  127. <el-switch
  128. v-model="maskDetection.enable"
  129. active-color="#13ce66"
  130. active-text="是"
  131. inactive-color="#ff4949"
  132. inactive-text="否"
  133. ></el-switch>
  134. </el-form-item>
  135. </el-col>
  136. <el-col :span="12">
  137. <el-form-item label="检测未带口罩策略">
  138. <el-select v-model="maskDetection.noMaskStrategy">
  139. <el-option label="提示且开门" value="tipsAndOpenDoor"></el-option>
  140. <el-option label="不提示且开门" value="noTipsAndOpenDoor"></el-option>
  141. <el-option label="提示且不开门" value="tipsAndNotOpenDoor"></el-option>
  142. </el-select>
  143. </el-form-item>
  144. </el-col>
  145. </el-row>
  146. </el-form>
  147. </div>
  148. <span slot="footer" class="dialog-footer">
  149. <el-button @click="closeDialog">取 消</el-button>
  150. <el-button type="primary" @click="handleSubmit" :loading="submitting">确 定</el-button>
  151. </span>
  152. </el-dialog>
  153. </template>
  154. <script>
  155. import Constant from "@/constant";
  156. import ehomeApi from "@/api/base/ehome";
  157. export default {
  158. props: ["deviceNo", "title", "companyResult"],
  159. data() {
  160. return {
  161. formModel: {},
  162. maskDetection: {
  163. "enable": true,
  164. "noMaskStrategy": ""
  165. },
  166. ruleValidate: {},
  167. showDialog: true,
  168. loading: false,
  169. submitting: false,
  170. cfgUrl: "/ISAPI/AccessControl/AcsCfg?format=json",
  171. maskDetectionUrl: "/ISAPI/AccessControl/maskDetection?format=json"
  172. }
  173. },
  174. methods: {
  175. closeDialog() {
  176. this.$emit("close", false);
  177. },
  178. handleSubmit() {
  179. var self = this;
  180. this.$refs["form"].validate(valid => {
  181. self.loading = true;
  182. //保存测温策略
  183. ehomeApi.putXMLConfig(
  184. self.deviceNo,self.cfgUrl,{
  185. "AcsCfg": self.formModel
  186. },
  187. ).then(response=>{
  188. var jsonData = response.data;
  189. if(!jsonData.success){
  190. self.$message({
  191. message: jsonData.message + "",
  192. type: "warning"
  193. });
  194. }
  195. //保存口罩设置
  196. return ehomeApi.putXMLConfig(
  197. self.deviceNo,
  198. self.maskDetectionUrl,
  199. {
  200. "MaskDetection": self.maskDetection
  201. }
  202. )
  203. }).then(response=>{
  204. self.loading = false;
  205. var jsonData = response.data;
  206. if (jsonData.success) {
  207. self.$message({
  208. message: "保存成功!",
  209. type: "success"
  210. });
  211. self.$emit("close", true);
  212. } else {
  213. self.$message({
  214. message: jsonData.message + "",
  215. type: "warning"
  216. });
  217. }
  218. });
  219. });
  220. },
  221. },
  222. mounted: function() {
  223. var self = this;
  224. self.loading = true;
  225. //获取测温策略
  226. ehomeApi.getXMLConfig(self.deviceNo,self.cfgUrl)
  227. .then(response => {
  228. var jsonData = response.data;
  229. self.loading = false;
  230. if (jsonData.success) {
  231. var data = eval('(' + jsonData.data + ')');
  232. self.formModel = data.AcsCfg;
  233. } else {
  234. self.$message.error(jsonData.message + "");
  235. }
  236. })
  237. .catch(error => {
  238. self.$message.error(error + "");
  239. });
  240. //获取口罩设置
  241. ehomeApi.getXMLConfig(self.deviceNo,self.maskDetectionUrl)
  242. .then(response => {
  243. var jsonData = response.data;
  244. self.loading = false;
  245. if (jsonData.success) {
  246. var data = eval('(' + jsonData.data + ')');
  247. self.maskDetection = data.MaskDetection;
  248. } else {
  249. self.$message.error(jsonData.message + "");
  250. }
  251. })
  252. .catch(error => {
  253. self.$message.error(error + "");
  254. });
  255. }
  256. };
  257. </script>