|
|
@@ -1,948 +0,0 @@
|
|
|
-<template>
|
|
|
- <el-container>
|
|
|
- <el-header height="220">
|
|
|
- <h3>应用配置列表</h3>
|
|
|
- <el-row style="margin-top: 10px">
|
|
|
- <el-select
|
|
|
- v-model="queryInfo.env"
|
|
|
- placeholder="环境"
|
|
|
- style="margin-left: 5px"
|
|
|
- @change="onSelectChange"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in envList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- <el-select
|
|
|
- v-model="queryInfo.appType"
|
|
|
- placeholder="类型"
|
|
|
- style="margin-left: 5px"
|
|
|
- @change="onSelectChange"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in appTypeList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- <el-button type="success" icon="el-icon-plus" style="margin-left: 5px" @click="handleAdd">添加</el-button>
|
|
|
- </el-row>
|
|
|
- </el-header>
|
|
|
- <el-main>
|
|
|
- <el-table
|
|
|
- :data="dataList"
|
|
|
- border
|
|
|
- height="480"
|
|
|
- style="width: 100%"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- prop="appName"
|
|
|
- label="应用名"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="appId"
|
|
|
- label="应用 ID"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="repoBranch"
|
|
|
- label="分支"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="bindPorts"
|
|
|
- label="监听端口"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="totalDeployNodes"
|
|
|
- label="部署配置"
|
|
|
- :show-overflow-tooltip="true"
|
|
|
- >
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-tag disable-transitions>
|
|
|
- <span>{{ scope.row.totalDeployNodes }}</span>
|
|
|
- </el-tag>
|
|
|
- <el-button
|
|
|
- style="margin-top: 5px; margin-left: 5px"
|
|
|
- size="mini"
|
|
|
- type="success"
|
|
|
- @click="handleDeployConfig(scope.$index, scope.row)"
|
|
|
- >查看</el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="totalDomains"
|
|
|
- label="关联域名"
|
|
|
- >
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-tag disable-transitions>
|
|
|
- <span>{{ scope.row.totalDomains }}</span>
|
|
|
- </el-tag>
|
|
|
- <el-button
|
|
|
- style="margin-top: 5px; margin-left: 5px"
|
|
|
- size="mini"
|
|
|
- type="success"
|
|
|
- @click="handleBindDomain(scope.$index, scope.row)"
|
|
|
- >查看</el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column
|
|
|
- fixed="right"
|
|
|
- label="操作"
|
|
|
- width="280"
|
|
|
- >
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-button
|
|
|
- style="margin-top: 5px; margin-left: 5px"
|
|
|
- size="mini"
|
|
|
- @click="handleCopy(scope.$index, scope.row)"
|
|
|
- >拷贝</el-button>
|
|
|
- <el-button
|
|
|
- style="margin-top: 5px; margin-left: 5px"
|
|
|
- size="mini"
|
|
|
- @click="handleDetail(scope.$index, scope.row)"
|
|
|
- >详情</el-button>
|
|
|
- <el-button
|
|
|
- style="margin-top: 5px; margin-left: 5px"
|
|
|
- size="mini"
|
|
|
- @click="handleEdit(scope.$index, scope.row)"
|
|
|
- >编辑</el-button>
|
|
|
- <el-button
|
|
|
- style="margin-top: 5px; margin-left: 5px"
|
|
|
- size="mini"
|
|
|
- type="danger"
|
|
|
- @click="handleDelete(scope.$index, scope.row)"
|
|
|
- >删除</el-button>
|
|
|
- <el-button
|
|
|
- style="margin-top: 5px; margin-left: 5px"
|
|
|
- size="mini"
|
|
|
- @click="handleErase(scope.$index, scope.row)"
|
|
|
- >清空本地仓库</el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- <el-pagination
|
|
|
- background
|
|
|
- :small="screenWidth <= 768"
|
|
|
- layout="prev, pager, next"
|
|
|
- :page-size="pageSize"
|
|
|
- :current-page="currentPage"
|
|
|
- :total="totalSize"
|
|
|
- @current-change="handleCurrentChange"
|
|
|
- @prev-click="handleCurrentChange"
|
|
|
- @next-click="handleCurrentChange"
|
|
|
- />
|
|
|
- </el-main>
|
|
|
-
|
|
|
- <el-dialog
|
|
|
- title="关联域名列表"
|
|
|
- append-to-body
|
|
|
- :visible.sync="showBindDomainDialog"
|
|
|
- center
|
|
|
- >
|
|
|
- <template>
|
|
|
- <el-button size="mini" type="text" icon="el-icon-plus" style="margin: 5px" @click="handleAddDomain">添加</el-button>
|
|
|
- <div>
|
|
|
- <el-row v-if="showElInput">
|
|
|
- <el-input v-model="appDomainForm.domain" style="width: 300px; margin: 5px" />
|
|
|
- <el-button size="mini" type="text" style="margin: 5px" @click="onAddDomain()">确定</el-button>
|
|
|
- <el-button size="mini" type="text" style="margin: 5px" @click="showElInput = false">取消</el-button>
|
|
|
- </el-row>
|
|
|
- <el-row v-for="(domain, index) in domainList" :key="index">
|
|
|
- <el-input
|
|
|
- :value="domain"
|
|
|
- style="width: 300px; margin: 5px"
|
|
|
- readonly
|
|
|
- />
|
|
|
- <el-button size="mini" type="text" icon="el-icon-delete" style="margin: 5px" @click="onDeleteDomain(domain)">删除</el-button>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-dialog>
|
|
|
- <el-dialog
|
|
|
- title="拷贝应用配置"
|
|
|
- append-to-body
|
|
|
- :visible.sync="showCopyDialog"
|
|
|
- center
|
|
|
- >
|
|
|
- <template>
|
|
|
- <el-form :model="copyForm" label-width="80px">
|
|
|
- <el-form-item label="新应用 ID">
|
|
|
- <el-input v-model="copyForm.newAppId" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="新应用环境">
|
|
|
- <el-select v-model="copyForm.newEnv" placeholder="选择环境">
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in envList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="新应用分支" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="copyForm.newRepoBranch" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-button type="primary" @click="onCopy">确定</el-button>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </template>
|
|
|
- </el-dialog>
|
|
|
- <el-dialog
|
|
|
- title="编辑应用配置"
|
|
|
- append-to-body
|
|
|
- :visible.sync="showEditDialog"
|
|
|
- center
|
|
|
- >
|
|
|
- <template>
|
|
|
- <el-form :model="editForm" label-width="80px">
|
|
|
- <el-form-item label="应用 ID" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="editForm.appId" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="应用名" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="editForm.appName" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="应用仓库" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="editForm.appRepo" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="仓库分支" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="editForm.repoBranch" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="监听端口" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="editForm.bindPorts" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="仓库认证">
|
|
|
- <el-select v-model="editForm.repoAuthConfig" placeholder="选择仓库认证">
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in repoAuthList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.label"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="编译工具">
|
|
|
- <el-select v-model="editForm.compilerConfig" placeholder="选择编译工具">
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in compilerList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.label"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="打包工具">
|
|
|
- <el-select v-model="editForm.packerConfig" placeholder="选择打包工具">
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in packerList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.label"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="Dockerfile" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="editForm.dockerfile" type="textarea" :rows="10" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-button type="primary" @click="onEdit">确定</el-button>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </template>
|
|
|
- </el-dialog>
|
|
|
- <el-dialog
|
|
|
- title="应用配置详情"
|
|
|
- append-to-body
|
|
|
- :visible.sync="showDetailDialog"
|
|
|
- center
|
|
|
- >
|
|
|
- <template>
|
|
|
- <el-form v-if="appConfigDetail !== null" :model="appConfigDetail" label-width="80px">
|
|
|
- <el-form-item label="应用 ID" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="appConfigDetail.appId" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="应用名" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="appConfigDetail.appName" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="应用仓库" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="appConfigDetail.appRepo" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="仓库分支" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="appConfigDetail.repoBranch" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="应用路径" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="appConfigDetail.appRootPath" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="监听端口" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="appConfigDetail.bindPorts" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="仓库认证">
|
|
|
- <el-input v-model="appConfigDetail.repoAuthConfig" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="编译工具">
|
|
|
- <el-input v-model="appConfigDetail.compilerConfig" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="打包工具">
|
|
|
- <el-input v-model="appConfigDetail.packerConfig" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="Dockerfile" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="appConfigDetail.dockerfile" type="textarea" :rows="10" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </template>
|
|
|
- </el-dialog>
|
|
|
- <el-dialog
|
|
|
- title="添加应用配置"
|
|
|
- append-to-body
|
|
|
- :visible.sync="showAddDialog"
|
|
|
- center
|
|
|
- >
|
|
|
- <template>
|
|
|
- <el-form :model="addForm" label-width="80px">
|
|
|
- <el-form-item label="应用类型">
|
|
|
- <el-select v-model="addForm.appType" placeholder="选择类型">
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in appTypeList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="所属环境">
|
|
|
- <el-select v-model="addForm.env" placeholder="选择环境">
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in envList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="应用 ID" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="addForm.appId" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="应用名" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="addForm.appName" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="应用仓库" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="addForm.appRepo" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="仓库分支" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="addForm.repoBranch" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="应用路径" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="addForm.appRootPath" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="监听端口" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="addForm.bindPorts" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="仓库认证">
|
|
|
- <el-select v-model="addForm.repoAuthConfig" placeholder="选择仓库认证">
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in repoAuthList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.label"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="编译工具">
|
|
|
- <el-select v-model="addForm.compilerConfig" placeholder="选择编译工具">
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in compilerList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.label"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="打包工具">
|
|
|
- <el-select v-model="addForm.packerConfig" placeholder="选择打包工具">
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in packerList"
|
|
|
- :key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.label"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="Dockerfile" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="addForm.dockerfile" type="textarea" :rows="10" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-button type="primary" @click="onAdd">确定</el-button>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </template>
|
|
|
- </el-dialog>
|
|
|
- <el-dialog
|
|
|
- :title="deployConfigDialogTitle"
|
|
|
- append-to-body
|
|
|
- :visible.sync="showDeployConfigDialog"
|
|
|
- width="70%"
|
|
|
- center
|
|
|
- >
|
|
|
- <template>
|
|
|
- <el-button type="success" icon="el-icon-plus" style="margin-bottom: 5px" @click="handleAddDeployConfig">添加</el-button>
|
|
|
- <el-table
|
|
|
- :data="appDeployConfigList"
|
|
|
- border
|
|
|
- height="480"
|
|
|
- style="width: 100%"
|
|
|
- >
|
|
|
- <el-table-column
|
|
|
- prop="appName"
|
|
|
- label="应用名"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="machineIpv4"
|
|
|
- label="机器地址"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="packType"
|
|
|
- label="打包类型"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- prop="startScript"
|
|
|
- label="启动脚本"
|
|
|
- />
|
|
|
- <el-table-column
|
|
|
- fixed="right"
|
|
|
- label="操作"
|
|
|
- width="280"
|
|
|
- >
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-button
|
|
|
- style="margin-top: 5px; margin-left: 5px"
|
|
|
- size="mini"
|
|
|
- @click="handleEditDeployConfig(scope.$index, scope.row)"
|
|
|
- >编辑</el-button>
|
|
|
- <el-button
|
|
|
- style="margin-top: 5px; margin-left: 5px"
|
|
|
- size="mini"
|
|
|
- type="danger"
|
|
|
- @click="handleDeleteDeployConfig(scope.$index, scope.row)"
|
|
|
- >删除</el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </template>
|
|
|
- </el-dialog>
|
|
|
- <el-dialog
|
|
|
- title="添加部署配置"
|
|
|
- append-to-body
|
|
|
- :visible.sync="showAddDeployConfigDialog"
|
|
|
- center
|
|
|
- >
|
|
|
- <template>
|
|
|
- <el-form :model="addDeployForm" label-width="80px">
|
|
|
- <el-form-item label="应用 ID" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="addDeployForm.appId" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="打包类型" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="addDeployForm.packType" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="选择机器">
|
|
|
- <el-select v-model="addDeployForm.machineId" placeholder="选择机器">
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in machineList"
|
|
|
- :key="index"
|
|
|
- :label="item.value"
|
|
|
- :value="item.label"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="启动脚本" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="addDeployForm.startScript" type="textarea" :rows="10" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-button type="primary" @click="onAddDeploy">确定</el-button>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </template>
|
|
|
- </el-dialog>
|
|
|
- <el-dialog
|
|
|
- title="编辑部署配置"
|
|
|
- append-to-body
|
|
|
- :visible.sync="showEditDeployConfigDialog"
|
|
|
- center
|
|
|
- >
|
|
|
- <template>
|
|
|
- <el-form :model="editDeployForm" label-width="80px">
|
|
|
- <el-form-item label="应用 ID" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="editDeployForm.appId" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="打包类型" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="editDeployForm.packType" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="机器地址" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="editDeployForm.machineIpv4" style="width: 70%; padding-right: 2px" readonly />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="启动脚本" style="width: 70%; padding-right: 2px">
|
|
|
- <el-input v-model="editDeployForm.startScript" type="textarea" :rows="10" style="width: 70%; padding-right: 2px" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-button type="primary" @click="onEditDeploy">确定</el-button>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </template>
|
|
|
- </el-dialog>
|
|
|
- </el-container>
|
|
|
-</template>
|
|
|
-
|
|
|
-<script>
|
|
|
-import {
|
|
|
- addAppBindDomain,
|
|
|
- addAppConfig, addAppDeployConfig,
|
|
|
- copyAppConfig, deleteAppBindDomain,
|
|
|
- deleteAppConfig, deleteAppDeployConfig,
|
|
|
- eraseAppRepo, getAppBindDomain,
|
|
|
- getAppConfig,
|
|
|
- getAppConfigList,
|
|
|
- getAppDeployConfigList,
|
|
|
- getBuildConfig,
|
|
|
- getDeployMachineList,
|
|
|
- getEnvList,
|
|
|
- updateAppConfig, updateAppDeployConfig
|
|
|
-} from '@/api/devops'
|
|
|
-
|
|
|
-export default {
|
|
|
- name: 'AppConfig',
|
|
|
- data() {
|
|
|
- return {
|
|
|
- envList: [],
|
|
|
- appTypeList: [],
|
|
|
- queryInfo: {
|
|
|
- env: 'test',
|
|
|
- appType: '',
|
|
|
- pn: 1
|
|
|
- },
|
|
|
- // 屏幕宽度, 为了控制分页条的大小
|
|
|
- screenWidth: document.body.clientWidth,
|
|
|
- currentPage: 1,
|
|
|
- pageSize: 10,
|
|
|
- totalSize: 0,
|
|
|
- dataList: [],
|
|
|
- // **********************************************************************
|
|
|
- showBindDomainDialog: false,
|
|
|
- domainList: [],
|
|
|
- showElInput: false,
|
|
|
- appDomainForm: {
|
|
|
- appId: '',
|
|
|
- domain: ''
|
|
|
- },
|
|
|
- // **********************************************************************
|
|
|
- showAddDialog: false,
|
|
|
- repoAuthList: [],
|
|
|
- compilerList: [],
|
|
|
- packerList: [],
|
|
|
- addForm: {
|
|
|
- appType: null,
|
|
|
- env: null,
|
|
|
- appId: null,
|
|
|
- appName: null,
|
|
|
- appRepo: null,
|
|
|
- repoBranch: null,
|
|
|
- appRootPath: null,
|
|
|
- bindPorts: null,
|
|
|
- repoAuthConfig: null,
|
|
|
- compilerConfig: null,
|
|
|
- packerConfig: null,
|
|
|
- dockerfile: null
|
|
|
- },
|
|
|
- // **********************************************************************
|
|
|
- showCopyDialog: false,
|
|
|
- copyForm: {
|
|
|
- appId: null,
|
|
|
- newAppId: null,
|
|
|
- newEnv: null,
|
|
|
- newRepoBranch: null
|
|
|
- },
|
|
|
- // **********************************************************************
|
|
|
- showEditDialog: false,
|
|
|
- editForm: {
|
|
|
- appId: null,
|
|
|
- appName: null,
|
|
|
- repoBranch: null,
|
|
|
- repoAuthConfig: null,
|
|
|
- compilerConfig: null,
|
|
|
- packerConfig: null,
|
|
|
- dockerfile: null
|
|
|
- },
|
|
|
- // **********************************************************************
|
|
|
- showDetailDialog: false,
|
|
|
- appConfigDetail: null,
|
|
|
- // **********************************************************************
|
|
|
- deployConfigDialogTitle: '',
|
|
|
- showDeployConfigDialog: false,
|
|
|
- appDeployConfigList: [],
|
|
|
- showAddDeployConfigDialog: false,
|
|
|
- machineList: [],
|
|
|
- packTypes: [],
|
|
|
- addDeployForm: {
|
|
|
- appId: null,
|
|
|
- packType: null,
|
|
|
- machineId: null,
|
|
|
- machineIpv4: null,
|
|
|
- startScript: null
|
|
|
- },
|
|
|
- showEditDeployConfigDialog: false,
|
|
|
- editDeployForm: {
|
|
|
- appId: null,
|
|
|
- machineId: null,
|
|
|
- startScript: null
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- created() {
|
|
|
- getEnvList().then(resp => {
|
|
|
- if (resp.code === 0) {
|
|
|
- this.queryInfo.env = resp.data.userEnv
|
|
|
- this.queryInfo.appType = resp.data.userAppType
|
|
|
- this.envList = resp.data.envList
|
|
|
- this.appTypeList = resp.data.appTypeList
|
|
|
-
|
|
|
- const env = this.$route.query.env
|
|
|
- if (env !== undefined && env !== null) {
|
|
|
- this.queryInfo.env = env
|
|
|
- }
|
|
|
- const appType = this.$route.query.appType
|
|
|
- if (appType !== undefined && appType !== null) {
|
|
|
- this.queryInfo.appType = appType
|
|
|
- }
|
|
|
- const pageNumber = this.$route.query.pn
|
|
|
- if (pageNumber !== undefined && pageNumber !== null) {
|
|
|
- this.currentPage = parseInt(pageNumber)
|
|
|
- this.queryInfo.pn = parseInt(pageNumber)
|
|
|
- }
|
|
|
-
|
|
|
- this.getData()
|
|
|
- } else {
|
|
|
- this.$message.error(resp.msg)
|
|
|
- }
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- })
|
|
|
-
|
|
|
- document.title = '应用配置列表'
|
|
|
- },
|
|
|
- methods: {
|
|
|
- handleCurrentChange(pageNumber) {
|
|
|
- this.queryInfo.pn = pageNumber
|
|
|
- this.$router.push({
|
|
|
- path: '/bg/app/config',
|
|
|
- query: this.queryInfo
|
|
|
- })
|
|
|
- this.getData()
|
|
|
- // 回到顶部
|
|
|
- scrollTo(0, 0)
|
|
|
- },
|
|
|
- getData() {
|
|
|
- this.dataList = []
|
|
|
- getAppConfigList(this.queryInfo).then(resp => {
|
|
|
- if (resp.code === 0) {
|
|
|
- const respData = resp.data
|
|
|
- this.dataList = respData.list
|
|
|
- this.totalSize = respData.totalSize
|
|
|
- } else {
|
|
|
- this.$message.error(resp.msg)
|
|
|
- }
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- })
|
|
|
- },
|
|
|
- handleBindDomain(index, row) {
|
|
|
- this.appDomainForm.appId = row.appId
|
|
|
- this.getAppBindDomainWrapper(row.appId)
|
|
|
- },
|
|
|
- getAppBindDomainWrapper(appId) {
|
|
|
- getAppBindDomain(appId).then(resp => {
|
|
|
- if (resp.code === 0) {
|
|
|
- this.domainList = resp.data
|
|
|
- this.showBindDomainDialog = true
|
|
|
- } else {
|
|
|
- this.$message.warning(resp.msg)
|
|
|
- }
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- })
|
|
|
- },
|
|
|
- handleAddDomain() {
|
|
|
- this.showElInput = true
|
|
|
- },
|
|
|
- onAddDomain() {
|
|
|
- addAppBindDomain(this.appDomainForm).then(resp => {
|
|
|
- if (resp.code === 0) {
|
|
|
- this.getAppBindDomainWrapper(this.appDomainForm.appId)
|
|
|
- }
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- }).finally(() => {
|
|
|
- this.showElInput = false
|
|
|
- this.appDomainForm.domain = ''
|
|
|
- })
|
|
|
- },
|
|
|
- onDeleteDomain(domain) {
|
|
|
- this.appDomainForm.domain = domain
|
|
|
- deleteAppBindDomain(this.appDomainForm).then(resp => {
|
|
|
- if (resp.code === 0) {
|
|
|
- this.getAppBindDomainWrapper(this.appDomainForm.appId)
|
|
|
- }
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- }).finally(() => {
|
|
|
- this.appDomainForm.domain = ''
|
|
|
- })
|
|
|
- },
|
|
|
- handleCopy(index, row) {
|
|
|
- this.copyForm.appId = row.appId
|
|
|
- this.showCopyDialog = true
|
|
|
- },
|
|
|
- onCopy() {
|
|
|
- const formData = new FormData()
|
|
|
- formData.append('appId', this.copyForm.appId)
|
|
|
- formData.append('newAppId', this.copyForm.newAppId)
|
|
|
- formData.append('newEnv', this.copyForm.newEnv)
|
|
|
- formData.append('newRepoBranch', this.copyForm.newRepoBranch)
|
|
|
- copyAppConfig(formData).then(resp => {
|
|
|
- this.$message.info(resp.msg)
|
|
|
- this.getData()
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- }).finally(() => {
|
|
|
- this.showCopyDialog = false
|
|
|
- })
|
|
|
- },
|
|
|
- handleEdit(index, row) {
|
|
|
- getBuildConfig().then(resp => {
|
|
|
- if (resp.code === 0) {
|
|
|
- this.repoAuthList = resp.data.repoAuthList
|
|
|
- this.compilerList = resp.data.compilerList
|
|
|
- this.packerList = resp.data.packerList
|
|
|
-
|
|
|
- getAppConfig(row.appId).then(resp => {
|
|
|
- if (resp.code === 0) {
|
|
|
- this.editForm = resp.data
|
|
|
- this.showEditDialog = true
|
|
|
- } else {
|
|
|
- this.$message.error(resp.msg)
|
|
|
- }
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- })
|
|
|
- } else {
|
|
|
- this.$message.error(resp.msg)
|
|
|
- }
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- })
|
|
|
- },
|
|
|
- onEdit() {
|
|
|
- const formData = new FormData()
|
|
|
- formData.append('appId', this.editForm.appId)
|
|
|
- formData.append('appName', this.editForm.appName)
|
|
|
- formData.append('repoBranch', this.editForm.repoBranch)
|
|
|
- formData.append('repoAuthConfig', this.editForm.repoAuthConfig)
|
|
|
- formData.append('compilerConfig', this.editForm.compilerConfig)
|
|
|
- formData.append('packerConfig', this.editForm.packerConfig)
|
|
|
- formData.append('dockerfile', this.editForm.dockerfile)
|
|
|
- updateAppConfig(formData).then(resp => {
|
|
|
- if (resp.code === 0) {
|
|
|
- this.getData()
|
|
|
- } else {
|
|
|
- this.$message.error(resp.msg)
|
|
|
- }
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- }).finally(() => {
|
|
|
- this.showEditDialog = false
|
|
|
- })
|
|
|
- },
|
|
|
- handleDetail(index, row) {
|
|
|
- getAppConfig(row.appId).then(resp => {
|
|
|
- if (resp.code === 0) {
|
|
|
- this.appConfigDetail = resp.data
|
|
|
- this.showDetailDialog = true
|
|
|
- } else {
|
|
|
- this.$message.error(resp.msg)
|
|
|
- }
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- })
|
|
|
- },
|
|
|
- handleAdd() {
|
|
|
- getBuildConfig().then(resp => {
|
|
|
- if (resp.code === 0) {
|
|
|
- this.repoAuthList = resp.data.repoAuthList
|
|
|
- this.compilerList = resp.data.compilerList
|
|
|
- this.packerList = resp.data.packerList
|
|
|
- this.showAddDialog = true
|
|
|
- } else {
|
|
|
- this.$message.error(resp.msg)
|
|
|
- }
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- })
|
|
|
- },
|
|
|
- onAdd() {
|
|
|
- const formData = new FormData()
|
|
|
- formData.append('appId', this.addForm.appId)
|
|
|
- formData.append('appName', this.addForm.appName)
|
|
|
- formData.append('appType', this.addForm.appType)
|
|
|
- formData.append('env', this.addForm.env)
|
|
|
- formData.append('appRepo', this.addForm.appRepo)
|
|
|
- formData.append('repoBranch', this.addForm.repoBranch)
|
|
|
- formData.append('appRootPath', this.addForm.appRootPath)
|
|
|
- formData.append('bindPorts', this.addForm.bindPorts)
|
|
|
- formData.append('repoAuthConfig', this.addForm.repoAuthConfig)
|
|
|
- formData.append('compilerConfig', this.addForm.compilerConfig)
|
|
|
- formData.append('packerConfig', this.addForm.packerConfig)
|
|
|
- formData.append('dockerfile', this.addForm.dockerfile)
|
|
|
- addAppConfig(formData).then(resp => {
|
|
|
- if (resp.code === 0) {
|
|
|
- this.getData()
|
|
|
- } else {
|
|
|
- this.$message.info(resp.msg)
|
|
|
- }
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- }).finally(() => {
|
|
|
- this.showAddDialog = false
|
|
|
- })
|
|
|
- },
|
|
|
- onSelectChange() {
|
|
|
- this.currentPage = 1
|
|
|
- this.queryInfo.pn = 1
|
|
|
- this.$router.push({
|
|
|
- path: '/bg/app/config',
|
|
|
- query: this.queryInfo
|
|
|
- })
|
|
|
- this.getData()
|
|
|
- },
|
|
|
- handleDelete(index, row) {
|
|
|
- this.$confirm('确定要删除 ' + row.appName + '?', '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning'
|
|
|
- }).then(() => {
|
|
|
- const formData = new FormData()
|
|
|
- formData.append('appId', row.appId)
|
|
|
- deleteAppConfig(formData).then(resp => {
|
|
|
- this.$message.info(resp.msg)
|
|
|
- this.getData()
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- })
|
|
|
- }).catch(() => {
|
|
|
- this.$message({
|
|
|
- type: 'info',
|
|
|
- message: '已取消'
|
|
|
- })
|
|
|
- })
|
|
|
- },
|
|
|
- handleErase(index, row) {
|
|
|
- const formData = new FormData()
|
|
|
- formData.append('appId', row.appId)
|
|
|
- eraseAppRepo(formData).then(resp => {
|
|
|
- this.$message.info(resp.msg)
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- })
|
|
|
- },
|
|
|
- // ****************************************************************************************************************
|
|
|
- // 应用部署配置
|
|
|
- // ****************************************************************************************************************
|
|
|
- handleDeployConfig(index, row) {
|
|
|
- this.addDeployForm.appId = row.appId
|
|
|
- this.addDeployForm.packType = row.packType
|
|
|
- this.getAppDeployConfigListWrapper(row.appId)
|
|
|
- },
|
|
|
- getAppDeployConfigListWrapper(appId) {
|
|
|
- getAppDeployConfigList(appId).then(resp => {
|
|
|
- if (resp.code === 0) {
|
|
|
- this.appDeployConfigList = resp.data
|
|
|
- this.deployConfigDialogTitle = appId + ' 的部署配置列表'
|
|
|
- this.showDeployConfigDialog = true
|
|
|
- } else {
|
|
|
- this.$message.error(resp.msg)
|
|
|
- }
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- })
|
|
|
- },
|
|
|
- handleAddDeployConfig(index, row) {
|
|
|
- getDeployMachineList(this.queryInfo.env).then(resp => {
|
|
|
- if (resp.code === 0) {
|
|
|
- this.machineList = resp.data
|
|
|
- this.showAddDeployConfigDialog = true
|
|
|
- } else {
|
|
|
- this.$message.error(resp.msg)
|
|
|
- }
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- })
|
|
|
- },
|
|
|
- onAddDeploy() {
|
|
|
- const formData = new FormData()
|
|
|
- formData.append('appId', this.addDeployForm.appId)
|
|
|
- formData.append('machineId', this.addDeployForm.machineId)
|
|
|
- formData.append('packType', this.addDeployForm.packType)
|
|
|
- formData.append('startScript', this.addDeployForm.startScript)
|
|
|
- addAppDeployConfig(formData).then(resp => {
|
|
|
- this.$message.info(resp.msg)
|
|
|
- this.getAppDeployConfigListWrapper(this.addDeployForm.appId)
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- }).finally(() => {
|
|
|
- this.showAddDeployConfigDialog = false
|
|
|
- })
|
|
|
- },
|
|
|
- handleEditDeployConfig(index, row) {
|
|
|
- this.editDeployForm = row
|
|
|
- this.showEditDeployConfigDialog = true
|
|
|
- },
|
|
|
- onEditDeploy() {
|
|
|
- const formData = new FormData()
|
|
|
- formData.append('appId', this.editDeployForm.appId)
|
|
|
- formData.append('machineId', this.editDeployForm.machineId)
|
|
|
- formData.append('startScript', this.editDeployForm.startScript)
|
|
|
- updateAppDeployConfig(formData).then(resp => {
|
|
|
- this.$message.info(resp.msg)
|
|
|
- this.getAppDeployConfigListWrapper(this.editDeployForm.appId)
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- }).finally(() => {
|
|
|
- this.showEditDeployConfigDialog = false
|
|
|
- })
|
|
|
- },
|
|
|
- handleDeleteDeployConfig(index, row) {
|
|
|
- this.$confirm('确定要删除 ' + row.appName + '?', '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning'
|
|
|
- }).then(() => {
|
|
|
- const formData = new FormData()
|
|
|
- formData.append('appDeployConfigId', row.appDeployConfigId)
|
|
|
- deleteAppDeployConfig(formData).then(resp => {
|
|
|
- this.$message.info(resp.msg)
|
|
|
- this.getAppDeployConfigListWrapper(row.appId)
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error(error.message)
|
|
|
- })
|
|
|
- }).catch(() => {
|
|
|
- this.$message({
|
|
|
- type: 'info',
|
|
|
- message: '已取消'
|
|
|
- })
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-</script>
|
|
|
-
|
|
|
-<style>
|
|
|
-</style>
|