<template> <div class="app-container"> <el-form :inline="true" ref="form" :model="form" size="mini"> <el-form-item label="应用名称" prop="uuid"> <el-select v-model="form.uuid" filterable placeholder="请输入标题"> <el-option v-for="(item, index) in selectList" :key="index" :label="item.app_name" :value="item.uuid" ></el-option> </el-select> </el-form-item> <el-form-item ><el-button type="primary" @click="onSubmit" >查询</el-button ></el-form-item > <el-form-item><el-button @click="onReset('form')">重置</el-button></el-form-item> </el-form> <el-table v-loading="isLoading" element-loading-text="Loading" :data="list" size="mini" border stripe fit highlight-current-row > <el-table-column prop="app_name" label="应用名称" min-width="180" show-overflow-tooltip ></el-table-column> <el-table-column prop="source_text" label="打包来源" width="180" show-overflow-tooltip ></el-table-column> <el-table-column prop="app_path" label="应用路径" min-width="180" show-overflow-tooltip ></el-table-column> <el-table-column prop="app_version" label="应用版本" min-width="180" ></el-table-column> <el-table-column prop="create_at" label="创建时间" min-width="150" ></el-table-column> <el-table-column prop="create_by.username" label="创建者" min-width="150" ></el-table-column> <el-table-column label="操作" align="center" width="140" fixed="right"> <template slot-scope="scope"> <el-button size="mini" type="primary" @click="handleDownload(scope.$index, scope.row)" >下载</el-button > </template> </el-table-column> </el-table> <div class="page-wrapper"> <el-pagination @current-change="handleCurrentChange" :current-page.sync="form.pagenum" background small :page-size="form.pagesize" :pager-count="5" layout="pager, prev, next, total" :total="total" ></el-pagination> </div> </div> </template> <script> import { getAppLogsList } from "@/api/store"; import { mapTrim } from "@/utils/index"; export default { name: "AppBuild", data() { return { dialogImageUrl: "", disabled: false, total: 0, list: [], isLoading: false, selectList: [], form: { uuid: null, name: null, pagesize: 15, pagenum: 1, }, currentIndex: 0, currentValue: null, post: { name: null, }, rules: { name: [ { type: "string", required: true, message: "用户名不能为空", trigger: "blur", }, { min: 1, max: 20, message: "字符串长度在 1 到 20 之间", trigger: "blur", }, ], }, }; }, methods: { fetchData(params) { this.isLoading = true; getAppLogsList(params) .then((res) => { this.total = res.count; this.list = res.data.map(item => { if (item.source == 1) item.source_text = "后台"; else if (item.source == 2) item.source_text = "接口"; return item; }); }) .catch((err) => { // this.$message.error(err.message) console.log(err.message); }) .finally(() => { this.isLoading = false; }); }, fetchSelectData() { getAppLogsList({ scope_type: "list" }) .then((res) => { if (res.code == 200) this.selectList = res.data; }) .catch((err) => { // this.$message.error(err.message) console.log(err.message); }); }, handleRemove(file) { console.log(file); }, handlePictureCardPreview(file) { this.dialogImageUrl = file.url; }, handleDownload(index, row) { console.log(index); const body = document.getElementsByTagName("body")[0]; const link = document.createElement("a"); body.appendChild(link); link.target = "_blank"; link.href = row.app_path; link.click(); document.body.removeChild(link); }, handleSizeChange(e) { this.form.pagesize = e; this.fetchData(mapTrim(this.form)); }, handleCurrentChange(e) { this.form.pagenum = e; this.fetchData(mapTrim(this.form)); }, handleEdit(index, row) { this.post = Object.assign(row); this.currentIndex = index; this.currentValue = row; }, handleDelete(index, row) { this.$alert( "您确定要删除么?删除操作将不可恢复。如需取消操作,请点击右上角关闭按钮。", "删除提醒", { confirmButtonText: "确定", callback: (action) => { if (action == "confirm") console.log(action, index, row); }, } ); }, onSubmit() { this.form.pagenum = 1; this.form.pagesize = 15; this.fetchData(mapTrim(this.form)); }, onReset(formName) { this.$refs[formName].resetFields(); this.form.pagesize = 15; this.form.pagenum = 1; this.fetchData(mapTrim(this.form)); }, }, mounted() {}, created() { this.fetchData(mapTrim(this.form)); this.fetchSelectData(); }, }; </script> <style lang="scss" scoped> .app-container { & > div.page-wrapper { margin: 10px 0px; } } </style>