cameraInfo-detail.vue 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  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="true"
  11. append-to-body
  12. style="text-align:left;"
  13. width="1000px"
  14. :close-on-click-modal="false"
  15. @close="closeDialog"
  16. >
  17. <div class="user-panel" v-loading="loading">
  18. <el-form ref="form" :model="formModel" inline :rules="ruleValidate" :label-width="'150px'">
  19. <el-form-item label="所属单位" prop="companyId">
  20. <el-select-tree
  21. :options="companyList"
  22. v-model="formModel.companyId"
  23. size="medium"
  24. height="200"
  25. width="300px"
  26. ></el-select-tree>
  27. </el-form-item>
  28. <el-form-item label="所属平台" prop="platform">
  29. <el-select v-model="formModel.platform" clearable width="300px">
  30. <el-option v-for="(item,index) in platformList"
  31. :label="item.name" :value="item.value" :key="index"></el-option>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item label="设备序列号" prop="deviceSerial">
  35. <el-input placeholder="设备序列号" v-model="formModel.deviceSerial" style="width:300px;">
  36. <!-- <el-button slot="append" icon="el-icon-search" @click="queryDeviceInfo">查询</el-button> -->
  37. </el-input>
  38. </el-form-item>
  39. <el-form-item label="设备名称" prop="deviceName">
  40. <el-input v-model="formModel.deviceName" placeholder="请输入设备名称" style="width:300px"></el-input>
  41. </el-form-item>
  42. <template v-if="formModel.platform=='ys'">
  43. <el-form-item label="通道号" prop="channelNo">
  44. <el-input v-model="formModel.channelNo" placeholder="请输入通道号" style="width:300px"></el-input>
  45. </el-form-item>
  46. <el-form-item label="验证码" prop="validCode">
  47. <el-input v-model="formModel.validCode" placeholder="请输入验证码" style="width:300px"></el-input>
  48. </el-form-item>
  49. <el-form-item label="设备账户号" prop="account">
  50. <el-input v-model="formModel.account" placeholder="请输入账户号" style="width:300px"></el-input>
  51. </el-form-item>
  52. <el-form-item label="设备密码" prop="password">
  53. <el-input v-model="formModel.password" placeholder="请输入密码" style="width:300px"></el-input>
  54. </el-form-item>
  55. </template>
  56. <el-form-item label="所在房间" prop="roomAddress">
  57. <el-input v-model="formModel.roomAddress" placeholder="请输入所在房间" style="width:300px"></el-input>
  58. </el-form-item>
  59. <el-form-item label="绑定人员编号" prop="personId">
  60. <el-input v-model="formModel.personId" placeholder="请输入绑定人员编号" style="width:300px"></el-input>
  61. </el-form-item>
  62. <el-form-item label="联系电话" prop="contactPhone">
  63. <el-input v-model="formModel.contactPhone" placeholder="请输入联系电话" style="width:300px"></el-input>
  64. </el-form-item>
  65. </el-form>
  66. </div>
  67. <span slot="footer" class="dialog-footer">
  68. <el-button @click="closeDialog">取 消</el-button>
  69. <el-button type="primary" @click="handleSubmit" :loading="submitting">确 定</el-button>
  70. </span>
  71. </el-dialog>
  72. </template>
  73. <script>
  74. import Constant from "@/constant";
  75. import cameraInfoApi from "@/api/base/cameraInfo";
  76. import companyInfoApi from "@/api/base/companyInfo";
  77. import SelectTree from "@/components/SelectTree";
  78. import dataDictionaryApi from "@/api/sys/dataDictionary";
  79. export default {
  80. props: ["businessKey", "title"],
  81. computed: {
  82. ruleValidate (){
  83. var rules = null;
  84. if(this.formModel.platform =='aliyun'){
  85. rules = {
  86. deviceSerial: [
  87. { required: true, message: "设备序列号不能为空", trigger: "blur" }
  88. ],
  89. deviceName: [
  90. { required: true, message: "设备名称不能为空", trigger: "blur" }
  91. ],
  92. companyId: [
  93. { required: true, message: "单位不能为空", trigger: "blur" }
  94. ]
  95. };
  96. }
  97. else{
  98. rules = {
  99. deviceSerial: [
  100. { required: true, message: "设备序列号不能为空", trigger: "blur" }
  101. ],
  102. deviceName: [
  103. { required: true, message: "设备名称不能为空", trigger: "blur" }
  104. ],
  105. companyId: [
  106. { required: true, message: "单位不能为空", trigger: "blur" }
  107. ],
  108. channelNo: [
  109. { required: true, message: "通道号不能为空", trigger: "blur" }
  110. ],
  111. validCode: [
  112. { required: true, message: "验证码不能为空", trigger: "blur" }
  113. ],
  114. account: [
  115. { required: true, message: "账户不能为空", trigger: "blur" }
  116. ],
  117. password: [
  118. { required: true, message: "密码不能为空", trigger: "blur" }
  119. ]
  120. };
  121. }
  122. return rules;
  123. }
  124. },
  125. data() {
  126. return {
  127. showDialog: true,
  128. loading: false,
  129. submitting: false,
  130. formModel: {},
  131. companyList: [],
  132. platformList: []
  133. };
  134. },
  135. methods: {
  136. closeDialog() {
  137. this.$emit("close", false);
  138. },
  139. queryDeviceInfo() {
  140. this.loading = true;
  141. if(self.formModel.classify==null){
  142. self.$message({
  143. message: "清先选择设备分类!",
  144. type: "warning",
  145. });
  146. }
  147. cameraInfoApi
  148. .queryDeviceInfo(this.formModel.deviceSerial,this.formModel.classify)
  149. .then((response) => {
  150. this.loading = false;
  151. var jsonData = response.data;
  152. if (jsonData.result) {
  153. this.formModel.deviceName = jsonData.data.deviceName;
  154. this.formModel.channelNo = 1;
  155. this.formModel.status = jsonData.data.status;
  156. }
  157. });
  158. },
  159. handleSubmit() {
  160. var self = this;
  161. this.$refs["form"].validate((valid) => {
  162. if (valid) {
  163. (function () {
  164. var id = self.formModel.id;
  165. if (id == null || id.length == 0) {
  166. return cameraInfoApi.add(self.formModel);
  167. } else {
  168. return cameraInfoApi.update(self.formModel);
  169. }
  170. })().then(function (response) {
  171. var jsonData = response.data;
  172. if (jsonData.result) {
  173. self.$message({
  174. message: "保存成功!",
  175. type: "success",
  176. });
  177. self.$emit("close", true);
  178. } else {
  179. self.$message({
  180. message: jsonData.message + "",
  181. type: "warning",
  182. });
  183. //self.$emit("close", false);
  184. }
  185. });
  186. }
  187. });
  188. },
  189. },
  190. created() {
  191. companyInfoApi.list().then((response)=>{
  192. var jsonData = response.data;
  193. if (jsonData.result) {
  194. this.companyList = jsonData.data;
  195. }
  196. });
  197. dataDictionaryApi.findByCatalogName({
  198. "catalogName" : "摄像头云平台"
  199. }).then(response => {
  200. var jsonData = response.data;
  201. this.platformList = jsonData.data;
  202. });
  203. },
  204. mounted: function () {
  205. var self = this;
  206. (function () {
  207. if (self.businessKey.length == 0) {
  208. return cameraInfoApi.create();
  209. } else {
  210. return cameraInfoApi.edit(self.businessKey);
  211. }
  212. })()
  213. .then((response) => {
  214. var jsonData = response.data;
  215. self.loading = false;
  216. if (jsonData.result) {
  217. self.formModel = jsonData.data;
  218. } else {
  219. self.$message.error(jsonData.message + "");
  220. }
  221. })
  222. .catch((error) => {
  223. self.$message.error(error + "");
  224. });
  225. },
  226. components: {
  227. "el-select-tree": SelectTree,
  228. },
  229. };
  230. </script>