增加手动控制取消打包

This commit is contained in:
aixianling
2022-06-23 10:29:59 +08:00
parent 503416902c
commit 3b58dec324
2 changed files with 44 additions and 20 deletions

View File

@@ -9,7 +9,7 @@ let baseURLs = {
instance.defaults.baseURL = baseURLs[process.env.NODE_ENV]
instance.interceptors.request.use(config => {
if (config.url.startsWith("/node")) {
config.baseURL = "/lns"
config.baseURL = "/ns"
} else if (/\/project\/beta/.test(location.pathname)) {
config.baseURL = "/wg"
} else if (/\/project\/sass/.test(location.pathname)) {

View File

@@ -32,15 +32,16 @@
<template slot-scope="{row}">
<el-button type="text" @click="handleEdit(row)">编辑</el-button>
<el-button type="text" @click="handleDelete(row.id)">删除</el-button>
<el-button type="text" @click="handleZip(row)">打包更新</el-button>
<el-button type="text" v-if="row.download&&row.target" @click="handleDownload(row)">下载</el-button>
<el-button type="text" @click="handleZip(row)" v-if="row.count==0">打包更新</el-button>
<el-button type="text" @click="handleCancelZip(row)" v-else>停止打包</el-button>
<el-button type="text" v-if="row.target" @click="handleDownload(row)">下载</el-button>
</template>
</el-table-column>
</ai-table>
</template>
</ai-list>
<ai-dialog :visible.sync="dialog" title="部署任务设置" width="700px" @close="form={}" @onConfirm="submit">
<el-form ref="DialogForm" :model="form" size="small" label-width="120px" :rules="rules">
<el-form ref="DialogForm" :model="form" size="small" label-width="100px" :rules="rules">
<el-form-item label="项目/系统" prop="name">
<el-input v-model="form.name" clearable placeholder="请输入"/>
</el-form-item>
@@ -59,9 +60,12 @@
<el-form-item label="打包地址" prop="webUrl">
<el-input v-model="form.zipPath" clearable placeholder="请输入"/>
</el-form-item>
<el-form-item label="开发环境nginx" prop="target">
<el-form-item label="nginx路径" prop="target">
<el-input v-model="form.target" clearable placeholder="请输入"/>
</el-form-item>
<el-form-item label="node版本" prop="nodeVersion">
<el-input v-model="form.nodeVersion" clearable placeholder="请输入"/>
</el-form-item>
</el-form>
</ai-dialog>
</section>
@@ -85,9 +89,10 @@ export default {
return [
{prop: "libShell", label: "打包脚本", width: 100},
{prop: "updateShell", label: "更新脚本", width: 100},
{prop: "zipPath", label: "打包地址", width: 100},
{prop: "target", label: "nginx地址", width: 100},
{prop: "zipPath", label: "打包地址", width: 100, isLine},
{prop: "target", label: "nginx路径", width: 100, isLine},
{prop: "webUrl", label: "项目URL", width: 100},
{prop: "nodeVersion", label: "node打包版本", width: 100},
]
},
},
@@ -100,8 +105,7 @@ export default {
{slot: "expand"},
{label: "项目/系统名称", prop: "name", width: 200},
{label: "系统类型", prop: "type", dict: "systemType", width: 80},
{label: "项目URL", prop: "webUrl"},
{label: "nginx地址", prop: "target"},
{label: "nginx路径", prop: "target"},
{slot: "process"},
{slot: "options"}
],
@@ -109,7 +113,8 @@ export default {
form: {},
rules: {
name: {required: true, message: "请输入项目/系统名称"},
}
},
timer: {}
}
},
methods: {
@@ -144,29 +149,28 @@ export default {
})
},
handleZip(row) {
let {id} = row
let {id} = row, {timer} = this
this.instance.post("/node/autodeploy/getZip", null, {
params: {id}
}).then(res => {
if (res?.code == 0) {
row.count = 1
let timer = setInterval(() => {
timer[id] = setInterval(() => {
if (row.count >= 100) {
clearInterval(timer)
clearInterval(timer[id])
row.count = 0
this.$message.error("打包失败!")
} else if (row.count <= 20 && row.target) {
} else if (row.count <= 10 && row.target) {
row.count++
} else this.handleConfirmZip(row).then(v => {
if (v.error) {
clearInterval(timer)
clearInterval(timer[id])
this.$message.error("打包失败!")
row.download = v.download
row.error = v.error
this.refreshRow(row, v)
row.count = 0
} else if (v.download) {
clearInterval(timer)
row.download = v.download
row.error = v.error
clearInterval(timer[id])
this.refreshRow(row, v)
row.count = 0
} else row.count++
})
@@ -174,6 +178,23 @@ export default {
}
})
},
refreshRow(row, v) {
row.error = v.error
row.download = v.download
row.zipTime = v.zipTime
},
handleCancelZip(row) {
let {id} = row
return this.instance.post("/node/autodeploy/cancelZip", null, {
params: {id}
}).then(res => {
if (res?.code == 0) {
clearInterval(this.timer[id])
row.count = 0
this.handleConfirmZip(row).then(v => this.refreshRow(row, v))
}
})
},
handleEdit(row) {
this.form = JSON.parse(JSON.stringify(row))
this.dialog = true
@@ -220,6 +241,9 @@ export default {
created() {
this.dict.load("systemType")
this.getTableData()
},
beforeDestroy() {
Object.values(this.timer).map(t => clearInterval(t))
}
}
</script>