Explorar o código

App升级推送

DESKTOP-2S67K1S\31396 %!s(int64=2) %!d(string=hai) anos
pai
achega
b02985ff17
Modificáronse 2 ficheiros con 171 adicións e 49 borrados
  1. 98 27
      src/views/push/update/detail.vue
  2. 73 22
      src/views/push/update/index.vue

+ 98 - 27
src/views/push/update/detail.vue

@@ -1,52 +1,127 @@
 <template>
   <div class="app-container">
-    <el-form label-width="100px">
-      <el-form-item label="版本号:">
-        <el-input placeholder="请输入版本号" />
+    <el-form :model="form" ref="form" :rules="rules" label-width="100px" :disabled="disabled">
+      <el-form-item label="版本号:" prop="lastVersion">
+        <el-input v-model="form.lastVersion" placeholder="请输入版本号" />
       </el-form-item>
-      <el-form-item label="升级标题:">
-        <el-input placeholder="请输入升级标题" />
+      <el-form-item label="升级标题:" prop="updateTitle">
+        <el-input v-model="form.updateTitle" placeholder="请输入升级标题" maxlength="100" show-word-limit />
       </el-form-item>
-      <el-form-item label="升级说明:">
-        <el-input type="textarea" :autosize="{ minRows: 5, maxRows: 10 }" placeholder="请输入升级说明" />
+      <el-form-item label="升级说明:" prop="updateDesc">
+        <el-input v-model="form.updateDesc" type="textarea" :autosize="{ minRows: 5, maxRows: 10 }" placeholder="请输入升级说明"
+          maxlength="500" show-word-limit />
       </el-form-item>
-      <el-form-item label="强制升级:">
-        <el-select placeholder="请选择是否强制">
-          <el-option />
+      <el-form-item label="强制升级:" prop="isForceUpdate">
+        <el-select v-model="form.isForceUpdate" placeholder="请选择是否强制">
+          <el-option v-for="item in typeOptions" :key="item.value" :value="item.value" :label="item.label" />
         </el-select>
       </el-form-item>
-      <el-form-item label="升级系统:">
-        <el-select placeholder="请选择升级系统">
-          <el-option />
+      <el-form-item label="升级系统:" prop="appType">
+        <el-select v-model="form.appType" placeholder="请选择升级系统">
+          <el-option v-for="item in systemOptions" :key="item.value" :value="item.value" :label="item.label" />
         </el-select>
       </el-form-item>
-      <el-form-item label="下载路径:">
-        <el-input readonly placeholder="请上传下载路径">
-          <template slot="suffix">
-            <Upload />
-          </template>
-        </el-input>
+      <el-form-item label="下载路径:" prop="downUrl">
+        <el-row type="flex" justify="space-between">
+          <el-col :span="16">
+            <el-input v-model="form.downUrl" placeholder="请输入或上传下载路径" />
+          </el-col>
+          <el-col :span="6">
+            <Upload @upload="upload" style="float:right" />
+          </el-col>
+        </el-row>
       </el-form-item>
     </el-form>
     <div class="form-btn">
-      <el-button>取消</el-button>
-      <el-button type="primary">确定</el-button>
+      <el-button @click="cancel">取消</el-button>
+      <el-button v-if="!disabled" type="primary" @click="getSubmit">确定</el-button>
     </div>
   </div>
 </template>
 
 <script>
+import { detail, submit } from '@/api/push/update'
+import { systemMixin } from '@/mixin'
 export default {
+  mixins: [systemMixin],
   data() {
+    var checkVersion = (rule, value, callback) => {
+      if (!value) {
+        return callback(new Error('请输入版本号'))
+      }
+      let reg = /^[1-9](\.(0|[1-9])){2}$/
+      if (reg.test(value)) {
+        callback()
+      } else {
+        return callback(new Error('请输入正确的版本号,示例:x.x.x'))
+      }
+    }
     return {
-
+      // 表单
+      form: {},
+      // 只读
+      disabled: false,
+      // 是否强制
+      typeOptions: [{
+        value: 0,
+        label: '否'
+      }, {
+        value: 1,
+        label: '是'
+      }],
+      // 校验
+      rules: {
+        lastVersion: [{ required: true, validator: checkVersion, trigger: 'blur' }],
+        updateTitle: [{ required: true, message: '请输入升级标题', trigger: 'blur' }],
+        updateDesc: [{ required: true, message: '请输入升级说明', trigger: 'blur' }],
+        isForceUpdate: [{ required: true, message: '请选择是否强制', trigger: 'change' }],
+        appType: [{ required: true, message: '请选择升级系统', trigger: 'change' }],
+        downUrl: [{ required: true, message: '请上传下载路径', trigger: 'blur' }]
+      }
     }
   },
   mounted() {
-
+    if (this.$route.query.id) {
+      this.form.id = this.$route.query.id
+      this.disabled = Boolean(this.$route.query.boolean)
+      this.getDetail()
+    }
   },
   methods: {
+    // 详情
+    getDetail() {
+      detail(this.form.id).then(res => {
+        if (res.code === 0) {
+          this.form = res.data
+        }
+      })
+    },
+
+    // 上传
+    upload(e) {
+      this.form.downUrl = e.file
+    },
 
+    // 取消
+    cancel() {
+      this.$tab.closeOpenPage("/push/update");
+    },
+
+    // 确定
+    getSubmit() {
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          submit(this.form).then(res => {
+            if (res.code === 0) {
+              this.$message.success('提交成功!')
+              this.cancel()
+            }
+          })
+        } else {
+          return false
+        }
+      })
+    }
   }
 }
 </script>
@@ -55,8 +130,4 @@ export default {
 .el-form {
   width: 500px;
 }
-
-::v-deep .el-input__suffix {
-  right: 0;
-}
 </style>

+ 73 - 22
src/views/push/update/index.vue

@@ -3,10 +3,10 @@
     <!-- 搜索 -->
     <el-form size="mini" inline>
       <el-form-item label="版本号:">
-        <el-input placeholder="请输入版本号" />
+        <el-input v-model="form.lastVersion" placeholder="请输入版本号" clearable />
       </el-form-item>
       <el-form-item label="升级系统:">
-        <el-select placeholder="请选择升级系统">
+        <el-select v-model="form.appType" placeholder="请选择升级系统" clearable>
           <el-option v-for="item in systemOptions" :key="item.value" :value="item.value" :label="item.label" />
         </el-select>
       </el-form-item>
@@ -17,19 +17,19 @@
       </el-form-item>
     </el-form>
     <!-- 列表 -->
-    <el-table>
-      <el-table-column type="index" label="序号" align="center"></el-table-column>
-      <el-table-column label="升级标题" align="center"></el-table-column>
-      <el-table-column label="版本号" align="center"></el-table-column>
-      <el-table-column label="下载路径" align="center"></el-table-column>
-      <el-table-column label="是否强制升级" align="center"></el-table-column>
-      <el-table-column label="升级系统" align="center"></el-table-column>
-      <el-table-column label="更新时间" align="center"></el-table-column>
+    <el-table :data="tableData" v-loading="loading">
+      <el-table-column type="index" label="序号" align="center" />
+      <el-table-column label="升级标题" prop="updateTitle" align="center" show-overflow-tooltip />
+      <el-table-column label="版本号" prop="lastVersion" align="center" />
+      <el-table-column label="下载路径" prop="downUrl" align="center" show-overflow-tooltip />
+      <el-table-column label="是否强制升级" prop="isForceUpdate" align="center" :formatter="typeFormatter" />
+      <el-table-column label="升级系统" prop="appType" align="center" :formatter="appTypeFormatter" />
+      <el-table-column label="更新时间" prop="updateTime" align="center" />
       <el-table-column label="操作" align="center">
-        <template>
-          <el-button type="text">查看</el-button>
-          <el-button type="text">编辑</el-button>
-          <el-button type="delete">删除</el-button>
+        <template slot-scope="scope">
+          <el-button type="text" @click="getDetail(scope.row.id, true)">查看</el-button>
+          <el-button type="text" @click="getDetail(scope.row.id)">编辑</el-button>
+          <el-button type="delete" @click="getDelete(scope.row)">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -39,11 +39,14 @@
 </template>
 
 <script>
-import { systemMixin } from '@/mixin/index'
+import { list, remove } from '@/api/push/update'
+import { systemMixin } from '@/mixin'
 export default {
   mixins: [systemMixin],
   data() {
     return {
+      // 遮罩层
+      loading: false,
       // 表单
       form: {
         pageNum: 1,
@@ -52,31 +55,79 @@ export default {
       // 列表
       tableData: [],
       // 总数据
-      total: 0
+      total: 0,
+      // 是否强制
+      typeOptions: [{
+        value: 0,
+        label: '否'
+      }, {
+        value: 1,
+        label: '是'
+      }]
     }
   },
   mounted() {
-
+    this.getList()
   },
   methods: {
+    // 列表
+    getList() {
+      this.loading = true
+      list(this.form).then(res => {
+        if (res.code === 0) {
+          this.tableData = res.data.records
+          this.total = res.data.total
+          this.loading = false
+        }
+      })
+    },
     // 搜索
     getSearch() {
-
+      this.form.pageNum = 1
+      this.getList()
     },
 
     // 重置
     getRefresh() {
-
+      this.form = {
+        pageNum: 1,
+        pageSize: 10
+      }
+      this.getList()
     },
 
-    // 新增
-    getDetail(id) {
+    // 新增 编辑
+    getDetail(id, boolean) {
       this.$router.push({
         path: '/push/update/detail',
         query: {
-          id: id
+          id: id,
+          boolean: boolean
         }
       })
+    },
+
+    // 删除
+    getDelete(row) {
+      this.$confirm(`是否删除${row.updateTitle}?`, '提示', {
+        type: 'warning'
+      }).then(() => {
+        remove(row.id, 1).then(res => {
+          if (res.code === 0) {
+            this.$message.success('删除成功!')
+            this.getList()
+          }
+        })
+      }).catch(() => { })
+    },
+
+    // 字典翻译
+    typeFormatter(row) {
+      return this.selectDictLabel(this.typeOptions, row.isForceUpdate)
+    },
+
+    appTypeFormatter(row) {
+      return this.selectDictLabel(this.systemOptions, row.appType)
     }
   }
 }