detail.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. <template>
  2. <div class="app-container" v-loading="loading">
  3. <el-form :model="form" :rules="rules" ref="form" label-width="100px">
  4. <el-form-item prop="deviceTypeId" label="设备型号:">
  5. <el-select v-model="form.deviceTypeId" placeholder="请选择设备型号" filterable>
  6. <el-option v-for="item in devOptions" :key="item.value" :label="item.label" :value="Number(item.value)" />
  7. </el-select>
  8. </el-form-item>
  9. <el-form-item prop="type" label="设备模式:">
  10. <el-select v-model="form.type" placeholder="请选择设备模式">
  11. <el-option v-for="item in devModeOptions" :key="item.value" :label="item.label" :value="Number(item.value)" />
  12. </el-select>
  13. </el-form-item>
  14. <el-form-item prop="version" label="版本号:">
  15. <el-input v-model="form.version" placeholder="请输入版本号" />
  16. </el-form-item>
  17. <el-form-item prop="fileType" label="上传类型:">
  18. <el-select v-model="form.fileType" placeholder="请选择上传类型">
  19. <el-option v-for="item in updateOptions" :key="item.value" :value="item.value" :label="item.label" />
  20. </el-select>
  21. </el-form-item>
  22. <el-form-item prop="url" label="下载路径:">
  23. <el-row>
  24. <el-col :span="18">
  25. <el-input v-model="form.url" placeholder="请输入 或 上传下载路径" clearable />
  26. </el-col>
  27. <el-col :span="6">
  28. <Upload :listType="listType" :accept="accept" @upload="getUpload" />
  29. </el-col>
  30. </el-row>
  31. </el-form-item>
  32. <el-form-item prop="title" label="升级标题:">
  33. <el-input v-model="form.title" placeholder="请输入升级标题" />
  34. </el-form-item>
  35. <el-form-item prop="content" label="升级描述:">
  36. <el-input v-model="form.content" type="textarea" rows="4" placeholder="请输入升级描述" />
  37. </el-form-item>
  38. <el-form-item prop="isEnforcement" label="设备升级:">
  39. <el-select v-model="form.deviceIsEnforcement" placeholder="是否强制设备升级">
  40. <el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="Number(item.value)" />
  41. </el-select>
  42. </el-form-item>
  43. <el-form-item prop="isEnforcement" label="APP升级:">
  44. <el-select v-model="form.isEnforcement" placeholder="是否强制APP升级">
  45. <el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="Number(item.value)" />
  46. </el-select>
  47. </el-form-item>
  48. <el-form-item prop="isPush" label="同步推送:">
  49. <el-select v-model="form.isPush" placeholder="是否同步推送">
  50. <el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="Number(item.value)" />
  51. </el-select>
  52. </el-form-item>
  53. <el-form-item prop="userType" label="升级对象:">
  54. <el-select v-model="form.userType" placeholder="请选择升级对象">
  55. <el-option v-for="item in pushOptions" :key="item.value" :label="item.label" :value="Number(item.value)" />
  56. </el-select>
  57. </el-form-item>
  58. <el-form-item :prop="user" v-if="form.userType === 3" label="指定用户:">
  59. <el-input v-model="user" type="textarea" rows="4" placeholder="请输入指定用户手机号,一行一个" />
  60. </el-form-item>
  61. </el-form>
  62. <div class="form-btn">
  63. <el-button @click="getCancel">取消</el-button>
  64. <el-button type="primary" @click="getSubmit">提交</el-button>
  65. </div>
  66. </div>
  67. </template>
  68. <script>
  69. import { getDetailInfo, updateEdit, getVersionAdd } from "@/api/device/version";
  70. import { devMixin, devModeMixin } from '@/mixin/index'
  71. export default {
  72. mixins: [devMixin, devModeMixin],
  73. data() {
  74. return {
  75. // 遮罩层
  76. loading: false,
  77. form: {
  78. id: this.$route.query.id,
  79. fileType: 1,
  80. url: "",
  81. },
  82. // 指定用户表单中间参数
  83. user: "",
  84. // 表单验证
  85. rules: {
  86. deviceTypeId: [{
  87. required: true, message: "请选择设备型号", trigger: "change"
  88. }],
  89. type: [{
  90. required: true, message: "请选择设备类型", trigger: "change"
  91. }],
  92. version: [{
  93. required: true, message: "请输入版本号", trigger: "blur"
  94. }],
  95. fileType: [{
  96. required: true, message: '请选择上传类型', trigger: 'change'
  97. }],
  98. url: [{
  99. required: true, message: "请输入 或 上传下载路径", trigger: "change"
  100. }],
  101. title: [{
  102. required: true, message: "请输入升级标题", trigger: "blur"
  103. }],
  104. content: [{
  105. required: true, message: "请输入升级描述", trigger: "blur"
  106. }],
  107. isEnforcement: [{
  108. required: true, message: "是否强制升级", trigger: "change"
  109. }],
  110. isPush: [{
  111. required: true, message: "是否同步推送", trigger: "change"
  112. }],
  113. userType: [{
  114. required: true, message: "请选择推送类型", trigger: "change"
  115. }],
  116. },
  117. // 设备是否
  118. statusOptions: [{
  119. value: 1,
  120. label: '是'
  121. }, {
  122. value: 2,
  123. label: '否'
  124. }],
  125. // 升级对象
  126. pushOptions: [{
  127. value: 1,
  128. label: '全部'
  129. }, {
  130. value: 3,
  131. label: '指定'
  132. }],
  133. // 上传类型
  134. updateOptions: [{
  135. value: 1,
  136. label: '文件'
  137. }, {
  138. value: 2,
  139. label: '文件夹'
  140. }],
  141. listType: 'text',
  142. // 文件类型
  143. accept: '.bin'
  144. };
  145. },
  146. watch: {
  147. 'form.fileType'(val) {
  148. this.listType = val === 1 ? 'text' : 'zip'
  149. this.accept = val === 1 ? '.bin' : '.zip'
  150. }
  151. },
  152. mounted() {
  153. if (this.form.id) {
  154. getDetailInfo({
  155. id: this.form.id,
  156. }).then((res) => {
  157. if (res.code === 0) {
  158. this.form = res.data;
  159. this.user = res.data.user.join("\n");
  160. }
  161. });
  162. }
  163. },
  164. methods: {
  165. // 上传文件
  166. getUpload(e) {
  167. this.form.url = e.file;
  168. },
  169. // 提交
  170. getSubmit() {
  171. this.$refs.form.validate((valid) => {
  172. if (valid) {
  173. this.form.userType === 3
  174. ? (this.form.user = this.user.split("\n"))
  175. : delete this.form.user;
  176. if (this.form.id) {
  177. // 编辑
  178. updateEdit(this.form).then((res) => {
  179. if (res.code === 0) {
  180. this.$message.success("修改成功!");
  181. this.$tab.closeOpenPage("/device/version");
  182. }
  183. });
  184. } else {
  185. // 新增
  186. delete this.form.id;
  187. getVersionAdd(this.form).then((res) => {
  188. if (res.code === 0) {
  189. this.$message.success("新增成功!");
  190. this.$tab.closeOpenPage("/device/version");
  191. }
  192. });
  193. }
  194. } else {
  195. return false;
  196. }
  197. });
  198. },
  199. // 取消
  200. getCancel() {
  201. this.$tab.closeOpenPage("/device/version");
  202. },
  203. },
  204. };
  205. </script>
  206. <style lang="scss" scoped>
  207. .el-form {
  208. width: 500px;
  209. }
  210. </style>