增加手动控制取消打包
This commit is contained in:
@@ -9,7 +9,7 @@ let baseURLs = {
|
|||||||
instance.defaults.baseURL = baseURLs[process.env.NODE_ENV]
|
instance.defaults.baseURL = baseURLs[process.env.NODE_ENV]
|
||||||
instance.interceptors.request.use(config => {
|
instance.interceptors.request.use(config => {
|
||||||
if (config.url.startsWith("/node")) {
|
if (config.url.startsWith("/node")) {
|
||||||
config.baseURL = "/lns"
|
config.baseURL = "/ns"
|
||||||
} else if (/\/project\/beta/.test(location.pathname)) {
|
} else if (/\/project\/beta/.test(location.pathname)) {
|
||||||
config.baseURL = "/wg"
|
config.baseURL = "/wg"
|
||||||
} else if (/\/project\/sass/.test(location.pathname)) {
|
} else if (/\/project\/sass/.test(location.pathname)) {
|
||||||
|
|||||||
@@ -32,15 +32,16 @@
|
|||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<el-button type="text" @click="handleEdit(row)">编辑</el-button>
|
<el-button type="text" @click="handleEdit(row)">编辑</el-button>
|
||||||
<el-button type="text" @click="handleDelete(row.id)">删除</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" @click="handleZip(row)" v-if="row.count==0">打包更新</el-button>
|
||||||
<el-button type="text" v-if="row.download&&row.target" @click="handleDownload(row)">下载</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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</ai-table>
|
</ai-table>
|
||||||
</template>
|
</template>
|
||||||
</ai-list>
|
</ai-list>
|
||||||
<ai-dialog :visible.sync="dialog" title="部署任务设置" width="700px" @close="form={}" @onConfirm="submit">
|
<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-form-item label="项目/系统" prop="name">
|
||||||
<el-input v-model="form.name" clearable placeholder="请输入"/>
|
<el-input v-model="form.name" clearable placeholder="请输入"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -59,9 +60,12 @@
|
|||||||
<el-form-item label="打包地址" prop="webUrl">
|
<el-form-item label="打包地址" prop="webUrl">
|
||||||
<el-input v-model="form.zipPath" clearable placeholder="请输入"/>
|
<el-input v-model="form.zipPath" clearable placeholder="请输入"/>
|
||||||
</el-form-item>
|
</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-input v-model="form.target" clearable placeholder="请输入"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="node版本" prop="nodeVersion">
|
||||||
|
<el-input v-model="form.nodeVersion" clearable placeholder="请输入"/>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</ai-dialog>
|
</ai-dialog>
|
||||||
</section>
|
</section>
|
||||||
@@ -85,9 +89,10 @@ export default {
|
|||||||
return [
|
return [
|
||||||
{prop: "libShell", label: "打包脚本", width: 100},
|
{prop: "libShell", label: "打包脚本", width: 100},
|
||||||
{prop: "updateShell", label: "更新脚本", width: 100},
|
{prop: "updateShell", label: "更新脚本", width: 100},
|
||||||
{prop: "zipPath", label: "打包地址", width: 100},
|
{prop: "zipPath", label: "打包地址", width: 100, isLine},
|
||||||
{prop: "target", label: "nginx地址", width: 100},
|
{prop: "target", label: "nginx路径", width: 100, isLine},
|
||||||
{prop: "webUrl", label: "项目URL", width: 100},
|
{prop: "webUrl", label: "项目URL", width: 100},
|
||||||
|
{prop: "nodeVersion", label: "node打包版本", width: 100},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -100,8 +105,7 @@ export default {
|
|||||||
{slot: "expand"},
|
{slot: "expand"},
|
||||||
{label: "项目/系统名称", prop: "name", width: 200},
|
{label: "项目/系统名称", prop: "name", width: 200},
|
||||||
{label: "系统类型", prop: "type", dict: "systemType", width: 80},
|
{label: "系统类型", prop: "type", dict: "systemType", width: 80},
|
||||||
{label: "项目URL", prop: "webUrl"},
|
{label: "nginx路径", prop: "target"},
|
||||||
{label: "nginx地址", prop: "target"},
|
|
||||||
{slot: "process"},
|
{slot: "process"},
|
||||||
{slot: "options"}
|
{slot: "options"}
|
||||||
],
|
],
|
||||||
@@ -109,7 +113,8 @@ export default {
|
|||||||
form: {},
|
form: {},
|
||||||
rules: {
|
rules: {
|
||||||
name: {required: true, message: "请输入项目/系统名称"},
|
name: {required: true, message: "请输入项目/系统名称"},
|
||||||
}
|
},
|
||||||
|
timer: {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -144,29 +149,28 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleZip(row) {
|
handleZip(row) {
|
||||||
let {id} = row
|
let {id} = row, {timer} = this
|
||||||
this.instance.post("/node/autodeploy/getZip", null, {
|
this.instance.post("/node/autodeploy/getZip", null, {
|
||||||
params: {id}
|
params: {id}
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
if (res?.code == 0) {
|
if (res?.code == 0) {
|
||||||
row.count = 1
|
row.count = 1
|
||||||
let timer = setInterval(() => {
|
timer[id] = setInterval(() => {
|
||||||
if (row.count >= 100) {
|
if (row.count >= 100) {
|
||||||
clearInterval(timer)
|
clearInterval(timer[id])
|
||||||
|
row.count = 0
|
||||||
this.$message.error("打包失败!")
|
this.$message.error("打包失败!")
|
||||||
} else if (row.count <= 20 && row.target) {
|
} else if (row.count <= 10 && row.target) {
|
||||||
row.count++
|
row.count++
|
||||||
} else this.handleConfirmZip(row).then(v => {
|
} else this.handleConfirmZip(row).then(v => {
|
||||||
if (v.error) {
|
if (v.error) {
|
||||||
clearInterval(timer)
|
clearInterval(timer[id])
|
||||||
this.$message.error("打包失败!")
|
this.$message.error("打包失败!")
|
||||||
row.download = v.download
|
this.refreshRow(row, v)
|
||||||
row.error = v.error
|
|
||||||
row.count = 0
|
row.count = 0
|
||||||
} else if (v.download) {
|
} else if (v.download) {
|
||||||
clearInterval(timer)
|
clearInterval(timer[id])
|
||||||
row.download = v.download
|
this.refreshRow(row, v)
|
||||||
row.error = v.error
|
|
||||||
row.count = 0
|
row.count = 0
|
||||||
} else row.count++
|
} 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) {
|
handleEdit(row) {
|
||||||
this.form = JSON.parse(JSON.stringify(row))
|
this.form = JSON.parse(JSON.stringify(row))
|
||||||
this.dialog = true
|
this.dialog = true
|
||||||
@@ -220,6 +241,9 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.dict.load("systemType")
|
this.dict.load("systemType")
|
||||||
this.getTableData()
|
this.getTableData()
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
Object.values(this.timer).map(t => clearInterval(t))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user