<template>
|
<el-dialog
|
:title="title"
|
:visible.sync="dialogFormVisible"
|
width="550px"
|
:close-on-click-modal="false"
|
@close="close"
|
>
|
<el-tabs v-model="activeName" @tab-click="handleClick">
|
<el-tab-pane label="基础信息" name="base">
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<el-form-item label="项目名称" prop="name">
|
<el-input v-model.trim="form.name" :disabled="edit"></el-input>
|
</el-form-item>
|
<el-form-item label="项目地址" prop="srcUrl">
|
<el-input v-model.trim="form.srcUrl"></el-input>
|
</el-form-item>
|
<el-form-item label="项目用户" prop="srcUser">
|
<el-input v-model.trim="form.srcUser"></el-input>
|
</el-form-item>
|
<el-form-item label="项目密码" prop="srcPassword">
|
<el-input
|
v-model.trim="form.srcPassword"
|
auto-complete="new-password"
|
show-password
|
>
|
</el-input>
|
</el-form-item>
|
<el-form-item label="项目描述" prop="desc">
|
<el-input v-model="form.desc"></el-input>
|
</el-form-item>
|
<el-form-item label="编译分支" prop="branch">
|
<el-input v-model.trim="form.branch" :disabled="edit"></el-input>
|
</el-form-item>
|
<el-form-item label="编译架构" prop="arch">
|
<el-radio-group v-model="form.arch">
|
<el-radio label="amd64">x86_64</el-radio>
|
<el-radio label="arm64">arm_64</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item label="项目类型" prop="type">
|
<el-radio-group v-model="form.type">
|
<el-radio label="os">AIOS</el-radio>
|
<el-radio label="sys">系统包</el-radio>
|
<el-radio label="app">应用包</el-radio>
|
<el-radio label="algo">算法包</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item
|
v-show="form.type == 'algo' || form.type == 'os'"
|
label="显卡类型"
|
prop="brand"
|
>
|
<el-input v-model="form.brand"></el-input>
|
</el-form-item>
|
<el-form-item label="自动打包" prop="autoBuild">
|
<el-switch v-model="form.autoBuild"></el-switch>
|
</el-form-item>
|
</el-form>
|
</el-tab-pane>
|
<el-tab-pane label="编译脚本" name="build">
|
<!-- <textarea v-model="form.buildScript" cols="60" rows="10"></textarea> -->
|
<code-editor
|
v-if="activeName == 'build'"
|
v-model="form.buildScript"
|
lang="sh"
|
theme="chrome"
|
width="500"
|
height="456"
|
@init="editorInit"
|
></code-editor>
|
</el-tab-pane>
|
<el-tab-pane label="打包脚本" name="pack">
|
<!-- <textarea v-model="form.packScript" cols="60" rows="10"></textarea> -->
|
<code-editor
|
v-if="activeName == 'pack'"
|
v-model="form.packScript"
|
lang="sh"
|
theme="chrome"
|
width="500"
|
height="456"
|
@init="editorInit"
|
></code-editor>
|
</el-tab-pane>
|
</el-tabs>
|
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="close">取 消</el-button>
|
<el-button type="primary" @click="save">确 定</el-button>
|
</div>
|
</el-dialog>
|
</template>
|
|
<script>
|
import { doEdit } from "@/api/project";
|
import CodeEditor from "vue2-ace-editor";
|
|
export default {
|
name: "ProjectEdit",
|
components: {
|
CodeEditor,
|
},
|
data() {
|
return {
|
activeName: "base",
|
form: {
|
packScript:
|
"#!/bin/sh\n#打包开始会在项目下创建integrate-build的临时文件夹\n#打包脚本执行路径为项目下的integrate-build文件夹内\n#需复制上级目录的编译完成的目标文件到当前位置\n",
|
buildScript: "#!/bin/sh\n",
|
},
|
rules: {
|
title: [{ required: true, trigger: "blur", message: "请输入标题" }],
|
author: [{ required: true, trigger: "blur", message: "请输入作者" }],
|
},
|
title: "",
|
dialogFormVisible: false,
|
edit: false,
|
};
|
},
|
mounted() {},
|
methods: {
|
showEdit(row) {
|
this.activeName = "base";
|
if (!row) {
|
this.title = "添加";
|
this.edit = false;
|
} else {
|
this.edit = true;
|
this.title = "编辑";
|
this.form = Object.assign({}, row);
|
}
|
this.dialogFormVisible = true;
|
},
|
close() {
|
this.$refs["form"].resetFields();
|
this.form = this.$options.data().form;
|
this.dialogFormVisible = false;
|
// this.$emit("fetch-data");
|
},
|
save() {
|
this.$refs["form"].validate(async (valid) => {
|
if (valid) {
|
const rsp = await doEdit(this.form);
|
if (rsp && rsp.success) {
|
this.$baseMessage(rsp.msg, "success");
|
}
|
this.$refs["form"].resetFields();
|
this.dialogFormVisible = false;
|
this.$emit("fetch-data");
|
this.form = this.$options.data().form;
|
} else {
|
return false;
|
}
|
});
|
},
|
handleClick(tab, event) {
|
// console.log(tab, event)
|
},
|
editorInit() {
|
require("brace/ext/language_tools"); //language extension prerequsite...
|
require("brace/mode/sh");
|
require("brace/theme/chrome");
|
},
|
},
|
};
|
</script>
|
<style scoped>
|
.el-radio {
|
margin-right: 20 px;
|
}
|
</style>
|