deviceEdit.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <template>
  2. <div id="deviceEdit" v-loading="isLoging">
  3. <el-dialog
  4. title="设备编辑"
  5. width="40%"
  6. top="2rem"
  7. :close-on-click-modal="false"
  8. :visible.sync="showDialog"
  9. :destroy-on-close="true"
  10. @close="close()"
  11. >
  12. <div id="shared" style="margin-top: 1rem;margin-right: 100px;">
  13. <el-form ref="form" :rules="rules" :model="form" label-width="200px" >
  14. <el-form-item label="设备编号" prop="deviceId">
  15. <el-input v-if="isEdit" v-model="form.deviceId" disabled></el-input>
  16. <el-input v-if="!isEdit" v-model="form.deviceId" clearable></el-input>
  17. </el-form-item>
  18. <el-form-item label="设备名称" prop="name">
  19. <el-input v-model="form.name" clearable></el-input>
  20. </el-form-item>
  21. <el-form-item label="密码" prop="password">
  22. <el-input v-model="form.password" clearable></el-input>
  23. </el-form-item>
  24. <el-form-item label="收流IP" prop="sdpIp">
  25. <el-input type="sdpIp" v-model="form.sdpIp" clearable></el-input>
  26. </el-form-item>
  27. <el-form-item label="流媒体ID" prop="mediaServerId">
  28. <el-select v-model="form.mediaServerId" style="float: left; width: 100%" >
  29. <el-option key="auto" label="自动负载最小" value="auto"></el-option>
  30. <el-option
  31. v-for="item in mediaServerList"
  32. :key="item.id"
  33. :label="item.id"
  34. :value="item.id">
  35. </el-option>
  36. </el-select>
  37. </el-form-item>
  38. <el-form-item label="字符集" prop="charset" >
  39. <el-select v-model="form.charset" style="float: left; width: 100%" >
  40. <el-option key="GB2312" label="GB2312" value="gb2312"></el-option>
  41. <el-option key="UTF-8" label="UTF-8" value="utf-8"></el-option>
  42. </el-select>
  43. </el-form-item>
  44. <el-form-item label="语音发送通道" prop="name">
  45. <el-input v-model="form.audioChannelForReceive" clearable></el-input>
  46. </el-form-item>
  47. <el-form-item label="地理坐标系" prop="geoCoordSys" >
  48. <el-select v-model="form.geoCoordSys" style="float: left; width: 100%" >
  49. <el-option key="WGS84" label="WGS84" value="WGS84"></el-option>
  50. <el-option key="GCJ02" label="GCJ02" value="GCJ02"></el-option>
  51. </el-select>
  52. </el-form-item>
  53. <el-form-item v-if="this.isEdit" label="目录订阅" title="0为取消订阅" prop="subscribeCycleForCatalog" >
  54. <el-input v-model="form.subscribeCycleForCatalog" clearable ></el-input>
  55. </el-form-item>
  56. <el-form-item v-if="this.isEdit" label="移动位置订阅" title="0为取消订阅" prop="subscribeCycleForCatalog" >
  57. <el-input v-model="form.subscribeCycleForMobilePosition" clearable ></el-input>
  58. </el-form-item>
  59. <el-form-item v-if="form.subscribeCycleForMobilePosition > 0" label="移动位置报送间隔" prop="subscribeCycleForCatalog" >
  60. <el-input v-model="form.mobilePositionSubmissionInterval" clearable ></el-input>
  61. </el-form-item>
  62. <el-form-item label="其他选项">
  63. <el-checkbox label="SSRC校验" v-model="form.ssrcCheck" style="float: left"></el-checkbox>
  64. <el-checkbox label="作为消息通道" v-model="form.asMessageChannel" style="float: left"></el-checkbox>
  65. <el-checkbox label="收到ACK后发流" v-model="form.broadcastPushAfterAck" style="float: left"></el-checkbox>
  66. </el-form-item>
  67. <el-form-item>
  68. <div style="float: right;">
  69. <el-button type="primary" @click="onSubmit" >确认</el-button>
  70. <el-button @click="close">取消</el-button>
  71. </div>
  72. </el-form-item>
  73. </el-form>
  74. </div>
  75. </el-dialog>
  76. </div>
  77. </template>
  78. <script>
  79. import MediaServer from '../service/MediaServer'
  80. export default {
  81. name: "deviceEdit",
  82. props: {},
  83. computed: {},
  84. created() {},
  85. data() {
  86. return {
  87. listChangeCallback: null,
  88. showDialog: false,
  89. isLoging: false,
  90. hostNames:[],
  91. mediaServerList: [], // 滅体节点列表
  92. mediaServerObj : new MediaServer(),
  93. form: {},
  94. isEdit: false,
  95. rules: {
  96. deviceId: [{ required: true, message: "请输入设备编号", trigger: "blur" }]
  97. },
  98. };
  99. },
  100. methods: {
  101. openDialog: function (row, callback) {
  102. console.log(row)
  103. this.showDialog = true;
  104. this.isEdit = false;
  105. if (row) {
  106. this.isEdit = true;
  107. }
  108. this.form = {};
  109. this.listChangeCallback = callback;
  110. if (row != null) {
  111. this.form = row;
  112. }
  113. this.getMediaServerList();
  114. },
  115. getMediaServerList: function (){
  116. let that = this;
  117. that.mediaServerObj.getOnlineMediaServerList((data)=>{
  118. that.mediaServerList = data.data;
  119. })
  120. },
  121. onSubmit: function () {
  122. console.log("onSubmit");
  123. console.log(this.form);
  124. this.form.subscribeCycleForCatalog = this.form.subscribeCycleForCatalog||0
  125. this.form.subscribeCycleForMobilePosition = this.form.subscribeCycleForMobilePosition||0
  126. this.form.mobilePositionSubmissionInterval = this.form.mobilePositionSubmissionInterval||0
  127. if (this.form.mobilePositionSubmissionInterval === 0) {
  128. this.form.mobilePositionSubmissionInterval = 5
  129. }
  130. this.$axios({
  131. method: 'post',
  132. url:`/api/device/query/device/${this.isEdit?'update':'add'}/`,
  133. params: this.form
  134. }).then((res) => {
  135. console.log(res.data)
  136. if (res.data.code === 0) {
  137. this.listChangeCallback()
  138. }else {
  139. this.$message({
  140. showClose: true,
  141. message: res.data.msg,
  142. type: "error",
  143. });
  144. }
  145. }).catch(function (error) {
  146. console.log(error);
  147. });
  148. },
  149. close: function () {
  150. this.showDialog = false;
  151. this.$refs.form.resetFields();
  152. },
  153. },
  154. };
  155. </script>