Browse Source

版本升级管理增加删除功能

jingyuanchao 1 year ago
parent
commit
f0ba2f0397
2 changed files with 329 additions and 301 deletions
  1. 7 0
      src/api/system/version.js
  2. 322 301
      src/views/system/version/index.vue

+ 7 - 0
src/api/system/version.js

@@ -43,6 +43,13 @@ export function updateVersion(data) {
     data: data
   })
 }
+// 查询升级包详情
+export function deleteVersion(versionId) {
+  return request({
+    url: '/system/version/deleted/' + versionId,
+    method: 'get'
+  })
+}
 
 // 版本包下载
 export function downloadFile(id,fileName) {

+ 322 - 301
src/views/system/version/index.vue

@@ -1,185 +1,191 @@
 <template>
-	<div class="app-container">
-	  <div class="main-right-box">
-		<!--    搜索条件    -->
-		<div class="main-search-box">
-		  <el-form v-show="showSearch" ref="queryForm" :inline="true" :model="queryParams" size="small">
-			<el-form-item label="版本" prop="version">
-			  <el-input v-model="queryParams.version" :maxlength="50" clearable placeholder="请输入版本"
-						style="width: 240px"
-						@keyup.enter.native="handleQuery"/>
-			</el-form-item>
+  <div class="app-container">
+    <div class="main-right-box">
+      <!--    搜索条件    -->
+      <div class="main-search-box">
+        <el-form v-show="showSearch" ref="queryForm" :inline="true" :model="queryParams" size="small">
+          <el-form-item label="版本" prop="version">
+            <el-input v-model="queryParams.version" :maxlength="50" clearable placeholder="请输入版本"
+                      style="width: 240px"
+                      @keyup.enter.native="handleQuery"/>
+          </el-form-item>
 
-			<el-form-item label="平台" prop="type">
-			  <el-select v-model="queryParams.type" clearable placeholder="请选择平台" style="width: 240px">
-				<el-option v-for="dict in dict.type.sys_version_type" :key="dict.value" :label="dict.label"
-						   :value="dict.value"/>
-			  </el-select>
-			</el-form-item>
+          <el-form-item label="平台" prop="type">
+            <el-select v-model="queryParams.type" clearable placeholder="请选择平台" style="width: 240px">
+              <el-option v-for="dict in dict.type.sys_version_type" :key="dict.value" :label="dict.label"
+                         :value="dict.value"/>
+            </el-select>
+          </el-form-item>
 
-		  </el-form>
+        </el-form>
 
-		  <el-row :gutter="10">
-			<el-col :span="1.5">
-			  <el-button icon="el-icon-search" size="mini" type="primary" @click="handleQuery"
-			  >搜索
-			  </el-button>
-			</el-col>
-			<el-col :span="1.5">
-			  <el-button icon="el-icon-refresh" size="mini" type="primary" @click="resetQuery"
-			  >重置
-			  </el-button>
-			</el-col>
+        <el-row :gutter="10">
+          <el-col :span="1.5">
+            <el-button icon="el-icon-search" size="mini" type="primary" @click="handleQuery"
+            >搜索
+            </el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button icon="el-icon-refresh" size="mini" type="primary" @click="resetQuery"
+            >重置
+            </el-button>
+          </el-col>
 
-			<el-col :span="1.5">
-			  <el-button v-hasPermi="['system:version:add']" icon="el-icon-plus" size="mini" type="primary"
-						 @click="handleAdd">新增
-			  </el-button>
-			</el-col>
+          <el-col :span="1.5">
+            <el-button v-hasPermi="['system:version:add']" icon="el-icon-plus" size="mini" type="primary"
+                       @click="handleAdd">新增
+            </el-button>
+          </el-col>
 
-			<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-		  </el-row>
-		</div>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+      </div>
 
-		<el-table
-		  v-loading="loading"
-		  :data="versionList"
-		  border
-		  height="646" size="small" @selection-change="handleSelectionChange">
-		  <!-- <el-table-column type="selection" width="50" align="center" /> -->
-		  <el-table-column align="center" label="序号" width="100">
-			<template v-slot:default="scope">
-			  <span v-text="getPageIndex(scope.$index)"> </span>
-			</template>
-		  </el-table-column>
-		  <el-table-column :show-overflow-tooltip="true" align="center" label="版本" prop="version" width="150"/>
-		  <el-table-column align="center" label="平台" prop="type">
-			<template slot-scope="scope">
-			  <dict-tag :options="dict.type.sys_version_type" :value="scope.row.type"/>
-			</template>
-		  </el-table-column>
-		  <el-table-column  align="center" label="当前使用" prop="isUse" width="150">
-			<template slot-scope="scope">
-				<div>
-					<span class="el-tag el-tag--medium" v-if="scope.row.isUse">是</span>
-					<span class="el-tag el-tag--danger" v-else>否</span>
-				</div>
-			</template>
-		  </el-table-column>
-		  <el-table-column  align="center" label="强制更新" prop="isForce" width="150">
-			<template slot-scope="scope">
-				<div>
-					<span class="el-tag el-tag--medium" v-if="scope.row.isForce">是</span>
-					<span class="el-tag el-tag--danger" v-else>否</span>
-				</div>
-			</template>
-		  </el-table-column>
-		  <el-table-column  align="center" label="下载地址" prop="path">
-			<template v-if="scope.row.type !== 3" slot-scope="scope">
-<!--				<el-button size="mini" type="text"
-						 @click="downloadVersionFile(scope.row)">点击下载
-			    </el-button>-->
-        <a :href="downloadUrl + scope.row.packageName" target="_blank">
-          <span style="color: dodgerblue">点击下载</span>
-        </a>
-			</template>
-		  </el-table-column>
-		  <el-table-column align="center" label="说明" prop="note" width="300">
-		  </el-table-column>
-		  <el-table-column align="center" label="创建时间" prop="createTime" width="200">
-		  </el-table-column>
-		  <el-table-column align="center" class-name="small-padding fixed-width" label="操作">
-			<template v-if="scope.row.id !== 1" slot-scope="scope">
-			  <el-button v-hasPermi="['system:version:edit']" icon="el-icon-edit-outline" size="mini" type="text"
-						 @click="handleUpdate(scope.row)">编辑
-			  </el-button>
-			</template>
-		  </el-table-column>
-		</el-table>
+      <el-table
+        v-loading="loading"
+        :data="versionList"
+        border
+        height="646" size="small" @selection-change="handleSelectionChange">
+        <!-- <el-table-column type="selection" width="50" align="center" /> -->
+        <el-table-column align="center" label="序号" width="100">
+          <template v-slot:default="scope">
+            <span v-text="getPageIndex(scope.$index)"> </span>
+          </template>
+        </el-table-column>
+        <el-table-column :show-overflow-tooltip="true" align="center" label="版本" prop="version" width="150"/>
+        <el-table-column align="center" label="平台" prop="type">
+          <template slot-scope="scope">
+            <dict-tag :options="dict.type.sys_version_type" :value="scope.row.type"/>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="当前使用" prop="isUse" width="150">
+          <template slot-scope="scope">
+            <div>
+              <span class="el-tag el-tag--medium" v-if="scope.row.isUse">是</span>
+              <span class="el-tag el-tag--danger" v-else>否</span>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="强制更新" prop="isForce" width="150">
+          <template slot-scope="scope">
+            <div>
+              <span class="el-tag el-tag--medium" v-if="scope.row.isForce">是</span>
+              <span class="el-tag el-tag--danger" v-else>否</span>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="下载地址" prop="path">
+          <template v-if="scope.row.type !== 3" slot-scope="scope">
+            <!--				<el-button size="mini" type="text"
+                         @click="downloadVersionFile(scope.row)">点击下载
+                      </el-button>-->
+            <a :href="downloadUrl + scope.row.packageName" target="_blank">
+              <span style="color: dodgerblue">点击下载</span>
+            </a>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="说明" prop="note" width="300">
+        </el-table-column>
+        <el-table-column align="center" label="创建时间" prop="createTime" width="200">
+        </el-table-column>
+        <el-table-column align="center" class-name="small-padding fixed-width" label="操作">
+          <template slot-scope="scope">
+            <el-button v-hasPermi="['system:version:edit']" icon="el-icon-edit-outline" size="mini" type="text"
+                       @click="handleUpdate(scope.row)">编辑
+            </el-button>
+          </template>
+          <template v-if="!scope.row.isUse" slot-scope="scope">
+            <el-button v-hasPermi="['system:version:remove']" icon="el-icon-edit-outline" size="mini" type="text"
+                       @click="handleDelete(scope.row.id)">删除
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
 
-		<pagination v-show="total > 0" :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNum" :total="total"
-					@pagination="getList"/>
+      <pagination v-show="total > 0" :limit.sync="queryParams.pageSize" :page.sync="queryParams.pageNum" :total="total"
+                  @pagination="getList"/>
 
-	  </div>
+    </div>
 
 
-	  <!-- 添加或修改版本号对话框 -->
-	  <DialogCom :title="title" :visible.sync="open" append-to-body width="750px">
-		<el-form ref="form" :model="form" :rules="rules" label-width="100px">
+    <!-- 添加或修改版本号对话框 -->
+    <DialogCom :title="title" :visible.sync="open" append-to-body width="750px">
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
 
-			<el-form-item label="版本" prop="version">
-			<el-input v-model="form.version" :maxlength="50" placeholder="请输入版本"/>
-			</el-form-item>
+        <el-form-item label="版本" prop="version">
+          <el-input v-model="form.version" :maxlength="50" placeholder="请输入版本"/>
+        </el-form-item>
 
-			<el-form-item label="平台" prop="type">
-			<el-select v-model="form.type"
-						placeholder="请选择平台"
-						@change="selectedType()"
-						style="width: 100%">
-				<el-option
-					v-for="dict in dict.type.sys_version_type"
-					:key="dict.value"
-					:label="dict.label"
-					:value="dict.value"
-				></el-option>
-			</el-select>
-			</el-form-item>
+        <el-form-item label="平台" prop="type">
+          <el-select v-model="form.type"
+                     placeholder="请选择平台"
+                     @change="selectedType()"
+                     style="width: 100%">
+            <el-option
+              v-for="dict in dict.type.sys_version_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
 
-			<el-form-item label="使用" prop="isUse">
-				<el-checkbox v-model="form.isUse"></el-checkbox>
-			</el-form-item>
+        <el-form-item label="使用" prop="isUse">
+          <el-checkbox v-model="form.isUse"></el-checkbox>
+        </el-form-item>
 
-			<el-form-item label="强制更新" prop="isForce">
-				<el-checkbox v-model="form.isForce"></el-checkbox>
-			</el-form-item>
+        <el-form-item label="强制更新" prop="isForce">
+          <el-checkbox v-model="form.isForce"></el-checkbox>
+        </el-form-item>
 
-			<el-form-item v-if="form.type!=='3'" label="上传文件" ref="files" prop="fileList">
-              <K-file-upload
-                ref="upload"
-                :defaultValue="formFileListDefaultValue"
-                v-model="form.fileList"
-                :limit="1"
-                :fileType="['apk']"
-                :packageName="packageNameList"
-				        :fileSize="200"
-                @input="fileListChanged"
-              />
-            </el-form-item>
+        <el-form-item v-if="form.type!=='3'" label="上传文件" ref="files" prop="fileList">
+          <K-file-upload
+            ref="upload"
+            :defaultValue="formFileListDefaultValue"
+            v-model="form.fileList"
+            :limit="1"
+            :fileType="['apk']"
+            :packageName="packageNameList"
+            :fileSize="200"
+            @input="fileListChanged"
+          />
+        </el-form-item>
 
-			<el-form-item label="说明" prop="note">
-				<k-textarea
-					v-model="form.note"
-					placeholder="请输入说明"
-					:length="200"
-				/>
-			</el-form-item>
-		</el-form>
-		<div slot="footer" class="dialog-footer">
-		  <el-button type="primary" @click="submitForm">确 定</el-button>
-		  <el-button @click="cancel">取 消</el-button>
-		</div>
-	  </DialogCom>
-	</div>
-  </template>
+        <el-form-item label="说明" prop="note">
+          <k-textarea
+            v-model="form.note"
+            placeholder="请输入说明"
+            :length="200"
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </DialogCom>
+  </div>
+</template>
 
-  <script>
-  import {
-    listVersion,
-    getVersionDetail,
-    addVersion,
-    updateVersion,
-    downloadFile,
-    getAllPackageName
-  } from "@/api/system/version";
-  import KFileUpload from "@/components/K-FileUpload/index.vue";
-  import KTextarea from "@/components/common/textarea.vue";
+<script>
+import {
+  listVersion,
+  getVersionDetail,
+  addVersion,
+  updateVersion,
+  downloadFile,
+  getAllPackageName, deleteVersion
+} from "@/api/system/version";
+import KFileUpload from "@/components/K-FileUpload/index.vue";
+import KTextarea from "@/components/common/textarea.vue";
+import {delEduTask} from "@/api/core/edu/eduTask";
 
-  export default {
-    name: "Version",
-    components: {KFileUpload,KTextarea},
-    dicts: ['sys_version_type','sys_true_false'],
-    data() {
-      return {
+export default {
+  name: "Version",
+  components: {KFileUpload, KTextarea},
+  dicts: ['sys_version_type', 'sys_true_false'],
+  data() {
+    return {
       // 遮罩层
       loading: true,
       formFileListDefaultValue: [],
@@ -202,7 +208,7 @@
       open: false,
       // 日期范围
       dateRange: [],
-        packageNameList:[],
+      packageNameList: [],
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -219,166 +225,181 @@
       // 表单校验
       rules: {
         version: [
-        {required: true, message: "版本号不能为空", trigger: "blur"},
-        {validator: validatorVersion, trigger: "blur"}
+          {required: true, message: "版本号不能为空", trigger: "blur"},
+          {validator: validatorVersion, trigger: "blur"}
         ],
         type: [
-        {required: true, message: "请选择平台", trigger: "blur"}
+          {required: true, message: "请选择平台", trigger: "blur"}
         ],
         isUse: [
-        {required: true, message: "请输入使用", trigger: "blur"}
+          {required: true, message: "请输入使用", trigger: "blur"}
         ],
         isForce: [
-        {required: true, message: "请输入强制更新", trigger: "blur"}
+          {required: true, message: "请输入强制更新", trigger: "blur"}
         ],
         note: [
-        {required: true, message: "请输入说明", trigger: "blur"}
+          {required: true, message: "请输入说明", trigger: "blur"}
         ]
       },
-      };
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    fileListChanged(list) {
+      this.$refs.files.clearValidate();
     },
-    created() {
-      this.getList();
+    selectedType() {
+      this.$refs["form"].clearValidate(["type"]);
+    },
+    handleSelectionChange(selection) {
+      this.$emit('handleSelectionChange', selection)
     },
-      methods: {
-      fileListChanged(list) {
-          this.$refs.files.clearValidate();
-        },
-      selectedType() {
-          this.$refs["form"].clearValidate(["type"]);
-        },
-      handleSelectionChange(selection) {
-          this.$emit('handleSelectionChange', selection)
-        },
-      async downloadVersionFile(row) {
-      if(row.type === 3){
+    async downloadVersionFile(row) {
+      if (row.type === 3) {
         return;
       }
 
-		  await downloadFile(row.id,row.packageName);
+      await downloadFile(row.id, row.packageName);
 
-      },
-	    getPageIndex($index) {
-		    //表格序号
-		    return (this.queryParams.pageNum - 1) * this.queryParams.pageSize + $index + 1
-	    },
-	    /** 查询角色列表 */
-	    getList() {
-		    this.loading = true;
-        if (process.env.VUE_APP_BASE_API.endsWith("/")){
-          this.downloadUrl = process.env.VUE_APP_BASE_API + "system/version/download/";
-        }else {
-          this.downloadUrl = process.env.VUE_APP_BASE_API + "/system/version/download/";
+    },
+    getPageIndex($index) {
+      //表格序号
+      return (this.queryParams.pageNum - 1) * this.queryParams.pageSize + $index + 1
+    },
+    /** 查询角色列表 */
+    getList() {
+      this.loading = true;
+      if (process.env.VUE_APP_BASE_API.endsWith("/")) {
+        this.downloadUrl = process.env.VUE_APP_BASE_API + "system/version/download/";
+      } else {
+        this.downloadUrl = process.env.VUE_APP_BASE_API + "/system/version/download/";
+      }
+      listVersion(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+          this.versionList = response.rows;
+          this.total = response.total;
+          this.loading = false;
         }
-		    listVersion(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
-			    this.versionList= response.rows;
-			    this.total = response.total;
-			    this.loading = false;
-		    }
-		    );
-        getAllPackageName().then(response => {
-          this.packageNameList=response.data;
-        });
-	    },
+      );
+      getAllPackageName().then(response => {
+        this.packageNameList = response.data;
+      });
+    },
 
-      // 取消按钮
-	    cancel() {
-		    this.open = false;
-		    this.reset();
-	    },
-	    // 表单重置
-	    reset() {
-		    this.formFileListDefaultValue = [],
-		    this.form = {
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.formFileListDefaultValue = [],
+        this.form = {
           version: null,
           type: null,
           note: null,
           isUse: false,
           isForce: false
-		    };
-        this.resetForm("form");
-	    },
-	    /** 搜索按钮操作 */
-	    handleQuery() {
-		    this.queryParams.pageNum = 1;
-		    this.getList();
-	    },
-	    /** 重置按钮操作 */
-	    resetQuery() {
-        this.dateRange = [];
-        this.resetForm("queryForm");
-        this.handleQuery();
-	    },
-      /** 新增按钮操作 */
-      handleAdd() {
-        this.reset();
+        };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "新增版本号";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id;
+      getVersionDetail(id).then(response => {
+        this.form = response.data;
+        let file = {url: this.form.path, name: this.form.packageName};
+        let fileList = [];
+        fileList.push(JSON.stringify(file));
+        this.form.fileList = fileList;
+        this.formFileListDefaultValue = fileList;
+        this.form.type = this.form.type + '';
         this.open = true;
-        this.title = "新增版本号";
-	    },
-      /** 修改按钮操作 */
-      handleUpdate(row) {
-        this.reset();
-        const id = row.id;
-        getVersionDetail(id).then(response => {
-          this.form = response.data;
-          let file = {url:this.form.path,name:this.form.packageName};
-            let fileList = [];
-            fileList.push(JSON.stringify(file));
-            this.form.fileList = fileList;
-            this.formFileListDefaultValue = fileList;
-			      this.form.type = this.form.type + '';
-		  	    this.open = true;
-		  	    this.title = "编辑版本号";
-		    });
-	    },
-	    /** 提交按钮 */
-	    submitForm: function () {
-		    this.$refs["form"].validate(valid => {
-		    if (valid) {
-			    if(this.form.type !== `3` &&  this.form.fileList.length === 0){
-            	this.$modal.msgError("请上传文件!");
-            	throw new Error("请上传文件!");
-            }
-			    if (this.form.type !== `3`) {
-				    let file = JSON.parse(this.form.fileList[0]);
-            	this.form.path = file.url;
-            	this.form.packageName = file.name;
-              this.form.fileCode = file.fileCode;
-			  }
-			  if (this.form.id != undefined) {
-			  	updateVersion(this.form).then(response => {
-					this.$modal.msgSuccess("处理成功");
-					this.open = false;
-					this.getList();
-			  	});
-			  } else {
-			  	addVersion(this.form).then(response => {
-					this.$modal.msgSuccess("处理成功");
-					this.open = false;
-					this.getList();
-			  	});
-			  }
-		  }
-		});
-	  }
-	}
-  };
-
-  export function validatorVersion(rule, value, callback) {
-	const reg = /^(?!0)\d+\.(?!0)\d+\.(?!0)\d+$/ ;
-		if(value == '' || value == undefined || value ==null){
-			callback();
-		}else{
-			if(!reg.test(value)){
-				callback(new Error("请输入正确的版本号! 例如: 1.12.1"));
-			}else{
-				callback();
-			}
-		}
+        this.title = "编辑版本号";
+      });
+    },
+    //删除版本
+    handleDelete(id) {
+      this.$modal
+        .confirm("删除后不可恢复,是否确认删除该版本配置?")
+        .then(function () {
+          return deleteVersion(id);
+        })
+        .then(() => {
+          this.$modal.msgSuccess("删除成功");
+          this.getList();
+        })
+        .catch(() => {
+        });
+    },
+    /** 提交按钮 */
+    submitForm: function () {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.type !== `3` && this.form.fileList.length === 0) {
+            this.$modal.msgError("请上传文件!");
+            throw new Error("请上传文件!");
+          }
+          if (this.form.type !== `3`) {
+            let file = JSON.parse(this.form.fileList[0]);
+            this.form.path = file.url;
+            this.form.packageName = file.name;
+            this.form.fileCode = file.fileCode;
+          }
+          if (this.form.id != undefined) {
+            updateVersion(this.form).then(response => {
+              this.$modal.msgSuccess("处理成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addVersion(this.form).then(response => {
+              this.$modal.msgSuccess("处理成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    }
   }
-  </script>
-  <style lang="scss">
- .el-checkbox {
-	display: -webkit-box !important;
+};
+
+export function validatorVersion(rule, value, callback) {
+//	const reg = /^(?!0)\d+\.(?!0)\d+\.(?!0)\d+$/ ;
+  const reg = /^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$/;
+  if (value == '' || value == undefined || value == null) {
+    callback();
+  } else {
+    if (!reg.test(value)) {
+      callback(new Error("请输入正确的版本号! 例如: 1.12.1"));
+    } else {
+      callback();
+    }
   }
-  </style>
+}
+</script>
+<style lang="scss">
+.el-checkbox {
+  display: -webkit-box !important;
+}
+</style>