DESKTOP-O04BTUJ\muzen 3 лет назад
Родитель
Сommit
61dd6451f8

+ 55 - 1
src/api/device/version.js

@@ -1 +1,55 @@
-import request from '@/unit/request'
+import request from '@/utils/request'
+
+// 分页
+export function getPageList(data) {
+  return request({
+    url: `/device/version/pageList`,
+    method: 'post',
+    data: data
+  })
+}
+
+// 详情
+export function getDetailInfo(data) {
+  return request({
+    url: `/device/version/detailInfo`,
+    method: 'post',
+    data: data
+  })
+}
+
+// 新增
+export function getVersionAdd(data) {
+  return request({
+    url: `/device/version/add`,
+    method: 'post',
+    data: data
+  })
+}
+
+// 编辑
+export function updateEdit(data) {
+  return request({
+    url: `/device/version/update`,
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除
+export function getVersionDelete(data) {
+  return request({
+    url: `/device/version/delete`,
+    method: 'post',
+    data: data
+  })
+}
+
+// 产品型号列表
+export function getClientTypeList(data) {
+  return request({
+    url: `/device/version/clientTypeList`,
+    method: 'post',
+    data: data
+  })
+}

+ 174 - 0
src/views/device/version/detail.vue

@@ -0,0 +1,174 @@
+<template>
+  <div class="app-container">
+    <el-form :model="form" :rules="rules" ref="form" label-width="100px" size="small">
+      <el-form-item prop="deviceTypeId" label="设备类型:">
+        <el-select v-model="form.deviceTypeId" placeholder="请选择产品型号">
+          <el-option v-for="item in clientTypeOptions" :key="item.id" :label="item.label"
+            :value="item.value" />
+        </el-select>
+      </el-form-item>
+      <el-form-item prop="version" label="版本号:">
+        <el-input v-model="form.version" placeholder="请输入版本号" />
+      </el-form-item>
+      <el-form-item prop="url" label="下载路径:">
+        <el-row>
+          <el-col :span="18">
+            <el-input v-model="form.url" placeholder="请输入 或 上传下载路径" clearable />
+          </el-col>
+          <el-col :span="6">
+            <Upload type="file" @success="getUpload" style="float:right" />
+          </el-col>
+        </el-row>
+      </el-form-item>
+      <el-form-item prop="title" label="升级标题:">
+        <el-input v-model="form.title" placeholder="请输入升级标题" />
+      </el-form-item>
+      <el-form-item prop="content" label="升级描述:">
+        <el-input v-model="form.content" type="textarea" rows="4" placeholder="请输入版本号" />
+      </el-form-item>
+      <el-form-item prop="isEnforcement" label="强制升级:">
+        <el-select v-model="form.isEnforcement" placeholder="是否强制升级">
+          <el-option v-for="item in Yes_No" :key="item.value" :label="item.label" :value="item.value" />
+        </el-select>
+      </el-form-item>
+      <el-form-item prop="isPush" label="同步推送:">
+        <el-select v-model="form.isPush" placeholder="是否同步推送">
+          <el-option v-for="item in Yes_No" :key="item.value" :label="item.label" :value="item.value" />
+        </el-select>
+      </el-form-item>
+      <el-form-item prop="userType" label="推送类型:">
+        <el-select v-model="form.userType" placeholder="请选择升级对象">
+          <el-option v-for="item in userTypeOptions" :key="item.value" :label="item.label"
+            :value="item.value" />
+        </el-select>
+      </el-form-item>
+      <el-form-item prop="user" v-if="form.userType === 3" label="指定用户:">
+        <el-input v-model="form.user" type="textarea" rows="4" placeholder="请输入指定用户手机号,请用逗号隔开" />
+      </el-form-item>
+    </el-form>
+    <div class="form-btn">
+      <el-button size="mini" @click="getCancel">取消</el-button>
+      <el-button type="primary" size="mini" @click="getSubmit">提交</el-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getDetailInfo, updateEdit, getVersionAdd } from '@/api/device/version';
+import Upload from "@/components/Upload/index";
+import mixin from './mixin/index'
+export default {
+  mixins: [mixin],
+  components: {
+    Upload
+  },
+  data() {
+    return {
+      form: {
+        id: this.$route.query.id,
+        url: ''
+      },
+      // 是否强制升级 // 是否推送
+      Yes_No: [{
+        value: 1,
+        label: '是'
+      }, {
+        value: 2,
+        label: '否'
+      }],
+      // 推送用户类型
+      userTypeOptions: [{
+        value: 1,
+        label: '全部'
+      }, {
+        value: 3,
+        label: '指定'
+      }],
+      // 表单验证
+      rules: {
+        deviceTypeId: [{
+          required: true, message: '请选择产品型号', trigger: 'change'
+        }],
+        version: [{
+          required: true, message: '请输入版本号', trigger: 'blur'
+        }],
+        url: [{
+          required: true, message: '请输入 或 上传下载路径', trigger: 'change'
+        }],
+        title: [{
+          required: true, message: '请输入升级标题', trigger: 'blur'
+        }],
+        content: [{
+          required: true, message: '请输入版本号', trigger: 'blur'
+        }],
+        isEnforcement: [{
+          required: true, message: '是否强制升级', trigger: 'change'
+        }],
+        isPush: [{
+          required: true, message: '是否同步推送', trigger: 'change'
+        }],
+        userType: [{
+          required: true, message: '请选择推送类型', trigger: 'change'
+        }],
+        user: [{
+          required: true, message: '请输入指定用户手机号', trigger: 'blur'
+        }]
+      }
+    }
+  },
+  mounted() {
+    if (this.form.id) {
+      getDetailInfo({
+        id: this.form.id
+      }).then(res => {
+        if (res.code === 0) {
+          this.form = res.data
+        }
+      })
+    }
+  },
+  methods: {
+    // 上传文件
+    getUpload(e) {
+      this.form.url = e
+    },
+    // 提交
+    getSubmit() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          this.form.user = this.form.user.split(',')
+          if (this.form.id) {
+            // 编辑
+            updateEdit(this.form).then(res => {
+              if (res.code === 0) {
+                this.$message.success("修改成功!");
+                this.$tab.closeOpenPage("/device/version");
+              }
+            })
+          } else {
+            // 新增
+            getVersionAdd(this.form).then(res => {
+              if (res.code === 0) {
+                this.$message.success("新增成功!");
+                this.$tab.closeOpenPage("/device/version");
+              }
+            })
+          }
+        } else {
+          return false
+        }
+      })
+    },
+    // 取消
+    getCancel() {
+      this.$tab.closeOpenPage("/device/version");
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.el-form {
+  width: 500px;
+}
+</style>

+ 106 - 10
src/views/device/version/index.vue

@@ -1,22 +1,118 @@
 <template>
 <template>
   <div class="app-container">
   <div class="app-container">
-      <!-- 搜索 -->
-      <el-form>
-          <el-form-item label="升级标题:">
-              <el-input placeholder="请输入升级标题" />
-          </el-form-item>
-          <el-form-item></el-form-item>
-          <el-form-item></el-form-item>
-      </el-form>
+    <!-- 搜索 -->
+    <el-form :model="form" inline label-width="100px" size="mini">
+      <el-form-item label="升级标题:">
+        <el-input v-model="form.title" placeholder="请输入升级标题" clearable />
+      </el-form-item>
+      <el-form-item label="设备型号:">
+        <el-select v-model="form.clientTypeId" placeholder="请选择产品型号" clearable>
+          <el-option v-for="item in clientTypeOptions" :key="item.id" :label="item.label"
+            :value="item.value" />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" @click="getSearch">搜索</el-button>
+        <el-button icon="el-icon-refresh" @click="getRefresh">重置</el-button>
+        <el-button type="primary" icon="el-icon-plus" plain @click="getChange()">新增</el-button>
+      </el-form-item>
+    </el-form>
+    <!-- 列表 -->
+    <el-table :data="tableData">
+      <el-table-column prop="id" label="型号ID" align="center" />
+      <el-table-column prop="title" label="升级标题" align="center" />
+      <el-table-column prop="deviceTypeName" label="设备型号" align="center" />
+      <el-table-column prop="version" label="版本号" align="center" />
+      <el-table-column label="下载路径" align="center" show-overflow-tooltip>
+        <template slot-scope="scope">
+          <el-link :href="scope.row.url" :underline="false">{{ scope.row.url }}</el-link>
+        </template>
+      </el-table-column>
+      <el-table-column prop="userTypeValue" label="推送类型" align="center" />
+      <el-table-column prop="enforcementValue" label="是否强制升级" align="center" />
+      <el-table-column prop="updateTimeStr" label="更新时间" align="center" />
+      <el-table-column label="操作">
+        <template slot-scope="scope">
+          <el-button type="text" @click="getChange(scope.row.id)">编辑</el-button>
+          <el-button type="delete" @click="getDelete(scope.row.id)">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 分页 -->
+    <pagination v-show="total>0" :total="total" :page.sync="form.pageIndex" :limit.sync="form.pageSize"
+      @pagination="getList" />
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
+import { getPageList, getVersionDelete } from '@/api/device/version'
+import mixin from './mixin/index'
 export default {
 export default {
-
+  mixins: [mixin],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 表单
+      form: {
+        pageIndex: 1,
+        pageSize: 10
+      },
+      // 列表
+      tableData: [],
+      // 总数
+      total: 0,
+    }
+  },
+  mounted() {
+    this.getList()
+  },
+  methods: {
+    // 列表
+    getList() {
+      getPageList(this.form).then(res => {
+        if (res.code === 0) {
+          this.tableData = res.data.records
+          this.total = res.data.total
+        }
+      })
+    },
+    // 搜索
+    getSearch() {
+      this.form.pageIndex = 1
+      this.getList()
+    },
+    // 重置
+    getRefresh() {
+      this.form = {
+        pageIndex: 1,
+        pageSize: 10
+      }
+      this.getList()
+    },
+    // 新增
+    getChange(id) {
+      this.$router.push({
+        path: `/device/version/detail`,
+        query: {
+          id: id
+        }
+      })
+    },
+    // 删除
+    getDelete(id) {
+      this.loading = true
+      getVersionDelete({ id: id }).then(res => {
+        if (res.code === 0) {
+          this.$message.success('删除成功!')
+          this.getList()
+          this.loading = false
+        }
+      })
+    },
+  }
 }
 }
 </script>
 </script>
 
 
 <style>
 <style>
-
 </style>
 </style>

+ 26 - 0
src/views/device/version/mixin/index.js

@@ -0,0 +1,26 @@
+import { getClientTypeList } from '@/api/device/version'
+
+const mixin = {
+  data() {
+    return {
+      // 设备类型
+      clientTypeOptions: [],
+    }
+  },
+  created() {
+    getClientTypeList().then(res => {
+      if (res.code === 0) {
+        let index = 1
+        res.data.map(i => {
+          this.clientTypeOptions.push({
+            id: ++index,
+            value: i.clientTypeId,
+            label: i.name
+          })
+        })
+      }
+    })
+  }
+}
+
+export default mixin