Setting.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <template>
  2. <div class="setting login-body">
  3. <div class="login-form">
  4. <h2 class="login-form-title">服务器IP地址设置</h2>
  5. <el-form ref="setForm" :model="setModel" :rules="setRules" inline>
  6. <el-form-item prop="ipCont1">
  7. <el-input-number
  8. style="width:60px;"
  9. v-model="setModel.ipCont1"
  10. :min="0"
  11. :max="255"
  12. :step="1"
  13. step-strictly
  14. :controls="false"
  15. ></el-input-number>
  16. </el-form-item>
  17. <span class="ip-split">—</span>
  18. <el-form-item prop="ipCont2">
  19. <el-input-number
  20. style="width:60px;"
  21. v-model="setModel.ipCont2"
  22. :min="0"
  23. :max="255"
  24. :step="1"
  25. step-strictly
  26. :controls="false"
  27. ></el-input-number>
  28. </el-form-item>
  29. <span class="ip-split">—</span>
  30. <el-form-item prop="ipCont3">
  31. <el-input-number
  32. style="width:60px;"
  33. v-model="setModel.ipCont3"
  34. :min="0"
  35. :max="255"
  36. :step="1"
  37. step-strictly
  38. :controls="false"
  39. ></el-input-number>
  40. </el-form-item>
  41. <span class="ip-split">—</span>
  42. <el-form-item prop="ipCont4">
  43. <el-input-number
  44. style="width:60px;"
  45. v-model="setModel.ipCont4"
  46. :min="0"
  47. :max="255"
  48. :step="1"
  49. step-strictly
  50. :controls="false"
  51. ></el-input-number>
  52. </el-form-item>
  53. <span class="ip-split">:</span>
  54. <el-form-item prop="port">
  55. <el-input-number
  56. style="width:60px;"
  57. v-model="setModel.port"
  58. :min="1"
  59. :max="1000000"
  60. :step="1"
  61. step-strictly
  62. :controls="false"
  63. ></el-input-number>
  64. </el-form-item>
  65. <br />
  66. <el-form-item>
  67. <el-button
  68. type="primary"
  69. :disabled="loading"
  70. size="large"
  71. @click="submit"
  72. >登录</el-button
  73. >
  74. </el-form-item>
  75. </el-form>
  76. </div>
  77. </div>
  78. </template>
  79. <script>
  80. import db from "@/plugins/db";
  81. export default {
  82. name: "setting",
  83. data() {
  84. const ipValidator = [
  85. {
  86. required: true,
  87. message: " ",
  88. trigger: "change"
  89. }
  90. ];
  91. return {
  92. setModel: {
  93. ipCont1: undefined,
  94. ipCont2: undefined,
  95. ipCont3: undefined,
  96. ipCont4: undefined,
  97. port: undefined
  98. },
  99. setRules: {
  100. ipCont1: [...ipValidator],
  101. ipCont2: [...ipValidator],
  102. ipCont3: [...ipValidator],
  103. ipCont4: [...ipValidator],
  104. port: [...ipValidator]
  105. },
  106. loading: false
  107. };
  108. },
  109. computed: {
  110. domainEdited() {
  111. return `http://${this.setModel.ipCont1}.${this.setModel.ipCont2}.${this.setModel.ipCont3}.${this.setModel.ipCont4}:${this.setModel.port}`;
  112. },
  113. domain() {
  114. return this.$store.state.domain;
  115. }
  116. },
  117. mounted() {
  118. this.initData();
  119. },
  120. methods: {
  121. initData() {
  122. if (!this.domain) {
  123. this.setModel = {
  124. ipCont1: undefined,
  125. ipCont2: undefined,
  126. ipCont3: undefined,
  127. ipCont4: undefined,
  128. port: undefined
  129. };
  130. return;
  131. }
  132. const [ipCont1, ipCont2, ipCont3, ipCont4, port] = this.domain
  133. .replace("http://", "")
  134. .split(/(\.|:)/);
  135. this.setModel = {
  136. ipCont1: Number(ipCont1),
  137. ipCont2: Number(ipCont2),
  138. ipCont3: Number(ipCont3),
  139. ipCont4: Number(ipCont4),
  140. port: Number(port)
  141. };
  142. },
  143. async submit() {
  144. if (this.loading) return;
  145. this.loading = true;
  146. const valid = await this.$refs.setForm.validate().catch(() => {});
  147. if (!valid) {
  148. this.loading = false;
  149. return;
  150. }
  151. this.$store.commit("setDomain", this.domainEdited);
  152. const res = await db.setDict("domain", this.domainEdited).catch(() => {});
  153. if (res) {
  154. this.$ls.set("domain", this.domainEdited);
  155. this.$store.commit("setDomain", this.domainEdited);
  156. this.$message.success("设置成功!");
  157. this.$router.go(-1);
  158. } else {
  159. this.$message.error("保存失败!");
  160. }
  161. }
  162. }
  163. };
  164. </script>