|
|
|
@ -63,13 +63,25 @@
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<div v-if="initParam">
|
|
|
|
|
<div v-if="runtime.type === 'php'">
|
|
|
|
|
<el-form-item :label="$t('runtime.image')" prop="image">
|
|
|
|
|
<el-input v-model="runtime.image"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<div v-if="initParam">
|
|
|
|
|
<el-form-item v-if="runtime.type === 'php'">
|
|
|
|
|
<el-alert :title="$t('runtime.buildHelper')" type="warning" :closable="false" />
|
|
|
|
|
<el-form-item :label="$t('runtime.source')" prop="source">
|
|
|
|
|
<el-select v-model="runtime.source" filterable allow-create default-first-option>
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="(source, index) in phpSources"
|
|
|
|
|
:key="index"
|
|
|
|
|
:label="source.label + ' [' + source.value + ']'"
|
|
|
|
|
:value="source.value"
|
|
|
|
|
></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
<span class="input-help">
|
|
|
|
|
{{ $t('runtime.phpsourceHelper') }}
|
|
|
|
|
</span>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
|
<Params
|
|
|
|
|
v-if="mode === 'create'"
|
|
|
|
|
v-model:form="runtime.params"
|
|
|
|
@ -82,14 +94,17 @@
|
|
|
|
|
v-model:params="editParams"
|
|
|
|
|
v-model:rules="rules"
|
|
|
|
|
></EditParams>
|
|
|
|
|
<el-form-item v-if="runtime.type === 'php'">
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-alert :title="$t('runtime.buildHelper')" type="warning" :closable="false" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-alert type="info" :closable="false">
|
|
|
|
|
<span>{{ $t('runtime.extendHelper') }}</span>
|
|
|
|
|
<span v-html="$t('runtime.phpPluginHelper')"></span>
|
|
|
|
|
<br />
|
|
|
|
|
</el-alert>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<div v-if="runtime.type === 'php' && mode == 'edit'">
|
|
|
|
|
<div v-if="mode == 'edit'">
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-checkbox v-model="runtime.rebuild">
|
|
|
|
|
{{ $t('runtime.rebuild') }}
|
|
|
|
@ -104,6 +119,7 @@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-else>
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-alert :title="$t('runtime.localHelper')" type="info" :closable="false" />
|
|
|
|
@ -160,23 +176,59 @@ const appReq = reactive({
|
|
|
|
|
page: 1,
|
|
|
|
|
pageSize: 20,
|
|
|
|
|
});
|
|
|
|
|
const runtime = ref<Runtime.RuntimeCreate>({
|
|
|
|
|
const initData = (type: string) => ({
|
|
|
|
|
name: '',
|
|
|
|
|
appDetailId: undefined,
|
|
|
|
|
image: '',
|
|
|
|
|
params: {},
|
|
|
|
|
type: 'php',
|
|
|
|
|
type: type,
|
|
|
|
|
resource: 'appstore',
|
|
|
|
|
rebuild: false,
|
|
|
|
|
source: 'mirrors.ustc.edu.cn',
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
let runtime = reactive<Runtime.RuntimeCreate>(initData('php'));
|
|
|
|
|
|
|
|
|
|
const rules = ref<any>({
|
|
|
|
|
name: [Rules.appName],
|
|
|
|
|
resource: [Rules.requiredInput],
|
|
|
|
|
appId: [Rules.requiredSelect],
|
|
|
|
|
version: [Rules.requiredInput, Rules.paramCommon],
|
|
|
|
|
image: [Rules.requiredInput, Rules.imageName],
|
|
|
|
|
source: [Rules.requiredSelect],
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const phpSources = [
|
|
|
|
|
{
|
|
|
|
|
label: i18n.global.t('runtime.ustc'),
|
|
|
|
|
value: 'mirrors.ustc.edu.cn',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: i18n.global.t('runtime.netease'),
|
|
|
|
|
value: 'mirrors.163.com',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: i18n.global.t('runtime.aliyun'),
|
|
|
|
|
value: 'mirrors.aliyun.com',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: i18n.global.t('runtime.tsinghua'),
|
|
|
|
|
value: 'mirrors.tuna.tsinghua.edu.cn',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: i18n.global.t('runtime.xtomhk'),
|
|
|
|
|
value: 'mirrors.xtom.com.hk',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: i18n.global.t('runtime.xtom'),
|
|
|
|
|
value: 'mirrors.xtom.com',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: i18n.global.t('runtime.default'),
|
|
|
|
|
value: 'dl-cdn.alpinelinux.org',
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
const em = defineEmits(['close']);
|
|
|
|
|
|
|
|
|
|
const handleClose = () => {
|
|
|
|
@ -186,12 +238,12 @@ const handleClose = () => {
|
|
|
|
|
|
|
|
|
|
const changeResource = (resource: string) => {
|
|
|
|
|
if (resource === 'local') {
|
|
|
|
|
runtime.value.appDetailId = undefined;
|
|
|
|
|
runtime.value.version = '';
|
|
|
|
|
runtime.value.params = {};
|
|
|
|
|
runtime.value.image = '';
|
|
|
|
|
runtime.appDetailId = undefined;
|
|
|
|
|
runtime.version = '';
|
|
|
|
|
runtime.params = {};
|
|
|
|
|
runtime.image = '';
|
|
|
|
|
} else {
|
|
|
|
|
runtime.value.version = '';
|
|
|
|
|
runtime.version = '';
|
|
|
|
|
searchApp(null);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
@ -201,7 +253,7 @@ const searchApp = (appId: number) => {
|
|
|
|
|
apps.value = res.data.items || [];
|
|
|
|
|
if (res.data && res.data.items && res.data.items.length > 0) {
|
|
|
|
|
if (appId == null) {
|
|
|
|
|
runtime.value.appId = res.data.items[0].id;
|
|
|
|
|
runtime.appId = res.data.items[0].id;
|
|
|
|
|
getApp(res.data.items[0].key, mode.value);
|
|
|
|
|
} else {
|
|
|
|
|
res.data.items.forEach((item) => {
|
|
|
|
@ -227,10 +279,10 @@ const changeApp = (appId: number) => {
|
|
|
|
|
const changeVersion = () => {
|
|
|
|
|
loading.value = true;
|
|
|
|
|
initParam.value = false;
|
|
|
|
|
GetAppDetail(runtime.value.appId, runtime.value.version, 'runtime')
|
|
|
|
|
GetAppDetail(runtime.appId, runtime.version, 'runtime')
|
|
|
|
|
.then((res) => {
|
|
|
|
|
runtime.value.appDetailId = res.data.id;
|
|
|
|
|
runtime.value.image = res.data.image + ':' + runtime.value.version;
|
|
|
|
|
runtime.appDetailId = res.data.id;
|
|
|
|
|
runtime.image = res.data.image + ':' + runtime.version;
|
|
|
|
|
appParams.value = res.data.params;
|
|
|
|
|
initParam.value = true;
|
|
|
|
|
})
|
|
|
|
@ -243,7 +295,7 @@ const getApp = (appkey: string, mode: string) => {
|
|
|
|
|
GetApp(appkey).then((res) => {
|
|
|
|
|
appVersions.value = res.data.versions || [];
|
|
|
|
|
if (res.data.versions.length > 0) {
|
|
|
|
|
runtime.value.version = res.data.versions[0];
|
|
|
|
|
runtime.version = res.data.versions[0];
|
|
|
|
|
if (mode === 'create') {
|
|
|
|
|
changeVersion();
|
|
|
|
|
} else {
|
|
|
|
@ -261,7 +313,7 @@ const submit = async (formEl: FormInstance | undefined) => {
|
|
|
|
|
}
|
|
|
|
|
if (mode.value == 'create') {
|
|
|
|
|
loading.value = true;
|
|
|
|
|
CreateRuntime(runtime.value)
|
|
|
|
|
CreateRuntime(runtime)
|
|
|
|
|
.then(() => {
|
|
|
|
|
MsgSuccess(i18n.global.t('commons.msg.createSuccess'));
|
|
|
|
|
handleClose();
|
|
|
|
@ -271,7 +323,7 @@ const submit = async (formEl: FormInstance | undefined) => {
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
loading.value = true;
|
|
|
|
|
UpdateRuntime(runtime.value)
|
|
|
|
|
UpdateRuntime(runtime)
|
|
|
|
|
.then(() => {
|
|
|
|
|
MsgSuccess(i18n.global.t('commons.msg.updateSuccess'));
|
|
|
|
|
handleClose();
|
|
|
|
@ -287,7 +339,7 @@ const getRuntime = async (id: number) => {
|
|
|
|
|
try {
|
|
|
|
|
const res = await GetRuntime(id);
|
|
|
|
|
const data = res.data;
|
|
|
|
|
runtime.value = {
|
|
|
|
|
Object.assign(runtime, {
|
|
|
|
|
id: data.id,
|
|
|
|
|
name: data.name,
|
|
|
|
|
appDetailId: data.appDetailId,
|
|
|
|
@ -298,7 +350,8 @@ const getRuntime = async (id: number) => {
|
|
|
|
|
appId: data.appId,
|
|
|
|
|
version: data.version,
|
|
|
|
|
rebuild: true,
|
|
|
|
|
};
|
|
|
|
|
source: data.source,
|
|
|
|
|
});
|
|
|
|
|
editParams.value = data.appParams;
|
|
|
|
|
if (mode.value == 'create') {
|
|
|
|
|
searchApp(data.appId);
|
|
|
|
@ -312,16 +365,10 @@ const acceptParams = async (props: OperateRrops) => {
|
|
|
|
|
mode.value = props.mode;
|
|
|
|
|
initParam.value = false;
|
|
|
|
|
if (props.mode === 'create') {
|
|
|
|
|
runtime.value = {
|
|
|
|
|
name: '',
|
|
|
|
|
appDetailId: undefined,
|
|
|
|
|
image: '',
|
|
|
|
|
params: {},
|
|
|
|
|
type: props.type,
|
|
|
|
|
resource: 'appstore',
|
|
|
|
|
};
|
|
|
|
|
Object.assign(runtime, initData(props.type));
|
|
|
|
|
searchApp(null);
|
|
|
|
|
} else {
|
|
|
|
|
searchApp(null);
|
|
|
|
|
getRuntime(props.id);
|
|
|
|
|
}
|
|
|
|
|
open.value = true;
|
|
|
|
|