Pārlūkot izejas kodu

部署中心白令海版本升级

xujie 1 gadu atpakaļ
vecāks
revīzija
fcdd97bc7b

+ 27 - 0
src/api/deploy/bering.js

@@ -0,0 +1,27 @@
+import request from '@/utils/request'
+import {exportFile} from '@/utils/request'
+
+//白令海升级列表
+export function upgradeBeringList(data) {
+  return request({
+    url: '/api/deploy/agentUpgrade/list',
+    method: 'get',
+    params: data
+  })
+}
+
+export function beringVersionList() {
+  return request({
+    url: '/api/deploy/agentUpgrade/selectAllVersions',
+    method: 'get',
+  })
+}
+
+//白令海版本列表
+export function beringPackageList(data) {
+  return request({
+    url: '/api/deploy/agentPackage/list',
+    method: 'get',
+    params: data
+  })
+}

+ 14 - 0
src/router/index.js

@@ -296,6 +296,20 @@ export const dynamicRoutes = [
       },
     ],
   },
+  {
+    path: "/deploy/beringpackage",
+    component: Layout,
+    hidden: true,
+    //permissions: ["resumption:rule:contentmanage"],
+    children: [
+      {
+        path: "content",
+        component: () => import("@/views/deploy/bering/beringPackage.vue"),
+        name: "beringPackageManager",
+        meta: { title: "白令海版本管理", activeMenu: "/deploy/bering" },
+      },
+    ],
+  },
 ];
 
 // 防止连续点击多次路由报错

+ 229 - 0
src/views/deploy/bering/beringPackage.vue

@@ -0,0 +1,229 @@
+<template>
+  <div class="app-container">
+    <div class="main-right-box">
+      <!--    搜索条件    -->
+      <div class="main-search-box">
+        <el-row :gutter="10">
+          <el-col :span="1.5">
+            <el-button icon="el-icon-upload" size="mini" type="primary" @click="showUploadDialog"
+            >上传升级包
+            </el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" :search="false" @queryTable="getList"></right-toolbar>
+        </el-row>
+      </div>
+
+      <el-table
+        v-loading="loading"
+        :data="packageInfoList"
+        border
+        height="646" size="small" >
+        <el-table-column align="center" label="序号" width="60">
+          <template v-slot:default="scope">
+            <span v-text="getPageIndex(scope.$index)"> </span>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="版本号" prop="packageVersion"/>
+        <el-table-column align="center" label="上传包名" prop="packageName"/>
+        <el-table-column align="center" label="创建时间" prop="uploadTime"/>
+        <el-table-column
+          class-name="small-padding fixed-width"
+          label="操作"
+          align="center"
+          width="120"
+        >
+          <template slot-scope="{ row }">
+            <el-button
+              class="el-icon-delete"
+              size="mini"
+              type="danger"
+            >删除
+            </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"/>
+
+    </div>
+    <DialogCom
+      :title="upload.title"
+      :visible.sync="upload.open"
+      width="400px"
+      append-to-body
+    >
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".zip"
+        :headers="upload.headers"
+        :action="upload.url"
+        :disabled="upload.isUploading"
+        :before-upload="handleBeforeUpload"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :on-error="handleFileFailed"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <!-- 上传提示 -->
+        <div class="el-upload__tip" slot="tip" v-if="showTip">
+          文件
+          <template v-if="fileSize">大小不超过<b style="color: #f56c6c">{{ fileSize }}MB</b></template>
+          <template v-if="fileType"> 格式为<b style="color: #f56c6c">{{ fileType.join("/") }}</b></template>
+          的文件
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer" style="margin-top: 10px">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </DialogCom>
+  </div>
+</template>
+
+<script>
+import {
+  beringPackageList
+} from "@/api/deploy/bering";
+import {getToken} from "@/utils/auth";
+
+export default {
+  name: "BeringPackage",
+  computed: {
+    // 是否显示提示
+    showTip() {
+      return this.isShowTip && (this.fileType || this.fileSize);
+    },
+  },
+  components: {},
+  dicts: [],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个停用
+      single: true,
+      // 非多个停用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 表数据
+      packageInfoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 日期范围
+      dateRange: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 设备导入参数
+      upload: {
+        // 是否显示弹出层(用户导入)
+        open: false,
+        // 弹出层标题(用户导入)
+        title: "上传升级包",
+        // 是否停用上传
+        isUploading: false,
+
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url:
+          process.env.NODE_ENV === "development"
+            ? process.env.VUE_APP_BASE_API + "/api/deploy/agentPackage/upload"
+            : window.origin + "/api/deploy/agentPackage/upload",
+      },
+      fileSize: 200,
+      fileType: ['zip'],
+      isShowTip: true,
+    };
+  },
+  created() {
+
+  },
+  mounted() {
+    this.getList();
+  },
+  methods: {
+    getPageIndex($index) {
+      //表格序号
+      return (this.queryParams.pageNum - 1) * this.queryParams.pageSize + $index + 1
+    },
+    /** 查询升级包列表 */
+    getList() {
+      this.loading = true;
+      beringPackageList(this.queryParams).then(response => {
+          this.packageInfoList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        }
+      ).catch((err) => {
+        this.loading = false;
+      });
+    },
+    showUploadDialog(){
+      this.upload.open = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(
+        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+        "上传升级包成功!" +
+        "</div>",
+        "上传结果",
+        { dangerouslyUseHTMLString: true }
+      );
+      this.getList();
+    },
+    // 文件上传成功处理
+    handleFileFailed(err, file, fileList) {
+      let myError = err.toString();
+      myError = myError.replace("Error: ","");
+      myError = JSON.parse(myError);
+      this.upload.isUploading = false;
+      this.$alert(
+        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+        myError.msg +
+        "</div>",
+        "上传结果",
+        { dangerouslyUseHTMLString: true }
+      );
+    },
+    handleBeforeUpload(){
+
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 提交上传文件
+    submitFileForm() {
+      let files = this.$refs.upload.uploadFiles;
+      if (files.length <= 0){
+        this.$modal.msgError("请选择上传文件!");
+        return;
+      }
+      this.$refs.upload.submit();
+    },
+  }
+};
+</script>
+<style lang="scss" scoped>
+</style>
+

+ 273 - 0
src/views/deploy/bering/index.vue

@@ -0,0 +1,273 @@
+<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="组织机构">
+            <org-tree
+              v-model="queryParams.hostOrg"
+              @defaultOrg="getDefaultOrg"
+              @checkChange="checkChange"
+              @click="clickTreeNode"
+              ref="orgTree"
+            ></org-tree>
+          </el-form-item>
+
+          <el-form-item label="白令海版本" prop="agentVersion">
+            <el-select
+              style="width: 100%"
+              v-model="queryParams.agentVersion"
+              placeholder="请选择白令海版本"
+              @change="onAgentVersionChange"
+              clearable
+            >
+              <el-option
+                v-for="item in beringVersions"
+                :key="item.id"
+                :label="item.text"
+                :value="item.id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="白令海目标版本" prop="uploadVersion">
+            <el-select
+              style="width: 100%"
+              v-model="queryParams.uploadVersion"
+              placeholder="请选择白令海版本"
+              @change="onUploadVersionChange"
+              clearable
+            >
+              <el-option
+                v-for="item in beringVersions"
+                :key="item.id"
+                :label="item.text"
+                :value="item.id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="白令海状态" prop="hostStatus">
+            <el-select style="width: 100%;" clearable v-model="queryParams.hostStatus" placeholder="请选择白令海状态"
+            >
+              <el-option v-for="dict in dict.type.deploy_bering_status" :key="dict.value" :label="dict.label"
+                         :value="dict.value"/>
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="主机IP" prop="hostIp">
+            <el-input v-model="queryParams.hostIp" :maxlength="50" clearable placeholder="请输入主机IP"/>
+          </el-form-item>
+
+        </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-col :span="1.5">
+            <el-button icon="el-icon-folder" size="mini" type="primary" @click="onManageContent"
+            >白令海版本管理
+            </el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button icon="el-icon-position" size="mini" type="primary" @click="resetQuery"
+            >批量升级
+            </el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+      </div>
+
+      <el-table
+        v-loading="loading"
+        :data="packageInfoList"
+        border
+        height="646" size="small" >
+        <el-table-column align="center" label="序号" width="60">
+          <template v-slot:default="scope">
+            <span v-text="getPageIndex(scope.$index)"> </span>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="所属机构" prop="orgName"/>
+        <el-table-column align="center" label="主机IP" prop="hostIp" :show-overflow-tooltip="true" scoped-slot="hostIp" width="320"/>
+        <el-table-column align="center" label="白令海状态" prop="hostStatus">
+          <template slot-scope="scope">
+            <dict-tag :options="dict.type.deploy_bering_status" :value="scope.row.hostStatus"/>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="白令海当前版本号" prop="agentVersion"/>
+        <el-table-column align="center" label="白令海目标版本号" prop="uploadVersion"/>
+        <el-table-column
+          class-name="small-padding fixed-width"
+          label="操作"
+          align="center"
+          width="120"
+        >
+          <template slot-scope="{ row }">
+            <el-button v-if="row.upgradeFlag === 1 && row.hostStatus === 1"
+              class="el-icon-position"
+              size="mini"
+              type="primary"
+              @click="onManageContent(row)"
+            >升级
+            </el-button
+            >
+            <el-button
+              v-else
+             class="el-icon-position"
+             size="mini"
+             type="primary"
+             disabled
+            >升级
+            </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"/>
+
+    </div>
+  </div>
+</template>
+
+<script>
+import {
+  upgradeBeringList,beringVersionList
+} from "@/api/deploy/bering";
+import OrgTree from "@/components/orgTree/orgQuerySelector.vue";
+
+export default {
+  name: "BeringStatus",
+  computed: {
+  },
+  components: {OrgTree},
+  dicts: ['deploy_bering_status'],
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个停用
+      single: true,
+      // 非多个停用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 表数据
+      packageInfoList: [],
+      // 表数据
+      packageServerList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 日期范围
+      dateRange: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        hostOrg: null,
+        agentVersion: null,
+        uploadVersion: null,
+        hostIp: null,
+        hostStatus:null
+      },
+      beringVersions:[],
+    };
+  },
+  created() {
+    beringVersionList().then((d) => {
+      this.beringVersions = d.data;
+    });
+    this.getList();
+  },
+  methods: {
+    getDefaultOrg(node) {
+      this.queryParams.hostOrg = node.id;
+      this.getList();
+    },
+    //单选框状态改变
+    checkChange(state) {
+      this.queryParams.checkSub = state;
+      this.getList();
+    },
+    // 节点单击事件
+    clickTreeNode(data) {
+      if(data==null){
+        return;
+      }
+      this.queryParams.hostOrg = data.id;
+      this.getList();
+    },
+    getPageIndex($index) {
+      //表格序号
+      return (this.queryParams.pageNum - 1) * this.queryParams.pageSize + $index + 1
+    },
+    /** 查询升级包列表 */
+    getList() {
+      this.loading = true;
+      console.log("123456")
+      this.queryParams.hostOrg = null;
+      upgradeBeringList(this.queryParams).then(response => {
+          this.packageInfoList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        }
+      ).catch((err) => {
+        this.loading = false;
+      });
+    },
+
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    onManageContent(){
+      //路由名称:upgradeHostManager
+      //this.$router.push({ name:"upgradeHostManager",params:{id:id,hostId:row.hostId}});
+      let path = `/deploy/beringpackage/content`;
+      this.$router.push(path);
+    },
+    onAgentVersionChange(val){
+      let data = this.beringVersions.find((a) => a.id === val);
+      if (data) {
+        this.queryParams.agentVersion = data.text;
+      }
+    },
+    onUploadVersionChange(val){
+      let data = this.beringVersions.find((a) => a.id === val);
+      if (data) {
+        this.queryParams.uploadVersion = data.text;
+      }
+    },
+  }
+};
+</script>
+<style lang="scss" scoped>
+</style>
+