mirror of
https://gitee.com/dromara/Jpom.git
synced 2024-12-02 20:08:40 +08:00
fix 修复下拉框组件在弹窗中不能完整显示问题
This commit is contained in:
parent
db494f1be8
commit
77e7b87868
@ -7,6 +7,7 @@
|
|||||||
### 🐞 解决BUG、优化功能
|
### 🐞 解决BUG、优化功能
|
||||||
|
|
||||||
1. 【server】修正错别字`传入` (感谢@fangdan)
|
1. 【server】修正错别字`传入` (感谢@fangdan)
|
||||||
|
2. 【server】修复下拉框组件在弹窗中不能完整显示问题(感谢@冷月)
|
||||||
|
|
||||||
------
|
------
|
||||||
|
|
||||||
|
@ -38,6 +38,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.http.HttpMethod;
|
import org.springframework.http.HttpMethod;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.nio.file.AccessDeniedException;
|
import java.nio.file.AccessDeniedException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -91,12 +92,12 @@ public class CheckPath {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void logError(String id, int status) {
|
public void logError(HttpServletResponse response, String id, int status) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void logTimeOut(String id, long time) {
|
public void logTimeOut(HttpServletResponse response, String id, long time) {
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -9,15 +9,7 @@
|
|||||||
<a-col :span="8" style="padding-left: 10px">
|
<a-col :span="8" style="padding-left: 10px">
|
||||||
<a-tooltip title="关键词高亮,支持正则(正则可能影响性能请酌情使用)">
|
<a-tooltip title="关键词高亮,支持正则(正则可能影响性能请酌情使用)">
|
||||||
<a-input addonBefore="正则:/" placeholder="关键词高亮,支持正则" v-model="temp.searchValue" @pressEnter="onSearch">
|
<a-input addonBefore="正则:/" placeholder="关键词高亮,支持正则" v-model="temp.searchValue" @pressEnter="onSearch">
|
||||||
<a-select
|
<a-select slot="addonAfter" :value="'/' + this.regModifier">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
slot="addonAfter"
|
|
||||||
:value="'/' + this.regModifier"
|
|
||||||
>
|
|
||||||
<div @mousedown="(e) => e.preventDefault()" slot="dropdownRender" style="width: 200px; max-width: 300px; padding: 10px; cursor: pointer; background-color: #fff; border-radius: 5px">
|
<div @mousedown="(e) => e.preventDefault()" slot="dropdownRender" style="width: 200px; max-width: 300px; padding: 10px; cursor: pointer; background-color: #fff; border-radius: 5px">
|
||||||
<a-checkbox-group @change="regModifierChange" :value="regModifiers" :options="modifiers"> </a-checkbox-group>
|
<a-checkbox-group @change="regModifierChange" :value="regModifiers" :options="modifiers"> </a-checkbox-group>
|
||||||
</div>
|
</div>
|
||||||
|
@ -168,18 +168,7 @@
|
|||||||
<div v-if="temp.buildMode === undefined" style="text-align: center">请选择构建方式</div>
|
<div v-if="temp.buildMode === undefined" style="text-align: center">请选择构建方式</div>
|
||||||
|
|
||||||
<a-form-model-item v-if="temp.buildMode !== undefined" label="构建源仓库" prop="repositoryId">
|
<a-form-model-item v-if="temp.buildMode !== undefined" label="构建源仓库" prop="repositoryId">
|
||||||
<a-select
|
<a-select show-search option-filter-prop="children" v-model="temp.repositoryId" @change="changeRepositpry" placeholder="请选择仓库">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
show-search
|
|
||||||
option-filter-prop="children"
|
|
||||||
v-model="temp.repositoryId"
|
|
||||||
@change="changeRepositpry"
|
|
||||||
placeholder="请选择仓库"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="item in repositoryList" :key="item.id" :value="item.id">{{ item.name }}[{{ item.gitUrl }}]</a-select-option>
|
<a-select-option v-for="item in repositoryList" :key="item.id" :value="item.id">{{ item.name }}[{{ item.gitUrl }}]</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
@ -340,45 +329,16 @@
|
|||||||
<template v-if="temp.releaseMethod === 0"> 不发布:只执行构建流程并且保存构建历史,不执行发布流程</template>
|
<template v-if="temp.releaseMethod === 0"> 不发布:只执行构建流程并且保存构建历史,不执行发布流程</template>
|
||||||
<!-- 节点分发 -->
|
<!-- 节点分发 -->
|
||||||
<a-form-model-item v-if="temp.releaseMethod === 1" label="分发项目" prop="releaseMethodDataId">
|
<a-form-model-item v-if="temp.releaseMethod === 1" label="分发项目" prop="releaseMethodDataId">
|
||||||
<a-select
|
<a-select show-search allowClear v-model="tempExtraData.releaseMethodDataId_1" placeholder="请选择分发项目">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
show-search
|
|
||||||
allowClear
|
|
||||||
v-model="tempExtraData.releaseMethodDataId_1"
|
|
||||||
placeholder="请选择分发项目"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="dispatch in dispatchList" :key="dispatch.id">{{ dispatch.name }} </a-select-option>
|
<a-select-option v-for="dispatch in dispatchList" :key="dispatch.id">{{ dispatch.name }} </a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<!-- 项目 -->
|
<!-- 项目 -->
|
||||||
<a-form-model-item v-if="temp.releaseMethod === 2" label="发布项目" prop="releaseMethodDataIdList">
|
<a-form-model-item v-if="temp.releaseMethod === 2" label="发布项目" prop="releaseMethodDataIdList">
|
||||||
<a-cascader
|
<a-cascader v-model="temp.releaseMethodDataIdList" :options="cascaderList" placeholder="请选择节点项目" />
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
v-model="temp.releaseMethodDataIdList"
|
|
||||||
:options="cascaderList"
|
|
||||||
placeholder="请选择节点项目"
|
|
||||||
/>
|
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item v-if="temp.releaseMethod === 2" label="发布后操作" prop="afterOpt">
|
<a-form-model-item v-if="temp.releaseMethod === 2" label="发布后操作" prop="afterOpt">
|
||||||
<a-select
|
<a-select show-search allowClear v-model="tempExtraData.afterOpt" placeholder="请选择发布后操作">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
show-search
|
|
||||||
allowClear
|
|
||||||
v-model="tempExtraData.afterOpt"
|
|
||||||
placeholder="请选择发布后操作"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="opt in afterOptListSimple" :key="opt.value">{{ opt.title }}</a-select-option>
|
<a-select-option v-for="opt in afterOptListSimple" :key="opt.value">{{ opt.title }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
@ -392,34 +352,14 @@
|
|||||||
<a-icon type="question-circle" theme="filled" />
|
<a-icon type="question-circle" theme="filled" />
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</template>
|
</template>
|
||||||
<a-select
|
<a-select mode="multiple" v-model="tempExtraData.releaseMethodDataId_3" placeholder="请选择SSH">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
mode="multiple"
|
|
||||||
v-model="tempExtraData.releaseMethodDataId_3"
|
|
||||||
placeholder="请选择SSH"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="ssh in sshList" :disabled="!ssh.fileDirs" :key="ssh.id">{{ ssh.name }}</a-select-option>
|
<a-select-option v-for="ssh in sshList" :disabled="!ssh.fileDirs" :key="ssh.id">{{ ssh.name }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item label="发布目录" prop="releaseMethodDataId">
|
<a-form-model-item label="发布目录" prop="releaseMethodDataId">
|
||||||
<a-input-group compact>
|
<a-input-group compact>
|
||||||
<a-tooltip title="如果多选 ssh 下面目录只显示选项中的第一项,但是授权目录需要保证每项都配置对应目录">
|
<a-tooltip title="如果多选 ssh 下面目录只显示选项中的第一项,但是授权目录需要保证每项都配置对应目录">
|
||||||
<a-select
|
<a-select show-search allowClear style="width: 30%" v-model="tempExtraData.releaseSshDir" placeholder="请选择SSH">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
show-search
|
|
||||||
allowClear
|
|
||||||
style="width: 30%"
|
|
||||||
v-model="tempExtraData.releaseSshDir"
|
|
||||||
placeholder="请选择SSH"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="item in selectSshDirs" :key="item">{{ item }}</a-select-option>
|
<a-select-option v-for="item in selectSshDirs" :key="item">{{ item }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
@ -515,18 +455,7 @@
|
|||||||
<a-icon type="question-circle" theme="filled" />
|
<a-icon type="question-circle" theme="filled" />
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</template>
|
</template>
|
||||||
<a-select
|
<a-select @change="selectSwarm()" show-search allowClear v-model="tempExtraData.dockerSwarmId" placeholder="请选择发布到哪个 docker 集群">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
@change="selectSwarm()"
|
|
||||||
show-search
|
|
||||||
allowClear
|
|
||||||
v-model="tempExtraData.dockerSwarmId"
|
|
||||||
placeholder="请选择发布到哪个 docker 集群"
|
|
||||||
>
|
|
||||||
<a-select-option value="">不发布到 docker 集群</a-select-option>
|
<a-select-option value="">不发布到 docker 集群</a-select-option>
|
||||||
<a-select-option v-for="item1 in dockerSwarmList" :key="item1.id">{{ item1.name }}</a-select-option>
|
<a-select-option v-for="item1 in dockerSwarmList" :key="item1.id">{{ item1.name }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
@ -563,16 +492,7 @@
|
|||||||
<a-icon type="question-circle" theme="filled" />
|
<a-icon type="question-circle" theme="filled" />
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</template>
|
</template>
|
||||||
<a-select
|
<a-select allowClear placeholder="请选择发布到集群的服务名" v-model="tempExtraData.dockerSwarmServiceName">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
allowClear
|
|
||||||
placeholder="请选择发布到集群的服务名"
|
|
||||||
v-model="tempExtraData.dockerSwarmServiceName"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="item2 in swarmServiceListOptions" :key="item2.spec.name">{{ item2.spec.name }}</a-select-option>
|
<a-select-option v-for="item2 in swarmServiceListOptions" :key="item2.spec.name">{{ item2.spec.name }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
@ -672,18 +592,7 @@
|
|||||||
<a-icon type="question-circle" theme="filled" />
|
<a-icon type="question-circle" theme="filled" />
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</template>
|
</template>
|
||||||
<a-select
|
<a-select allowClear show-search option-filter-prop="children" placeholder="构建过程执行对应的脚本" v-model="tempExtraData.noticeScriptId">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
allowClear
|
|
||||||
show-search
|
|
||||||
option-filter-prop="children"
|
|
||||||
placeholder="构建过程执行对应的脚本"
|
|
||||||
v-model="tempExtraData.noticeScriptId"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="item2 in scriptList" :key="item2.id">{{ item2.name }}</a-select-option>
|
<a-select-option v-for="item2 in scriptList" :key="item2.id">{{ item2.name }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
|
@ -276,16 +276,7 @@
|
|||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</template>
|
</template>
|
||||||
<a-input-group compact>
|
<a-input-group compact>
|
||||||
<a-select
|
<a-select style="width: 50%" v-model="temp.whitelistDirectory" placeholder="请选择项目白名单路径">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
style="width: 50%"
|
|
||||||
v-model="temp.whitelistDirectory"
|
|
||||||
placeholder="请选择项目白名单路径"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="access in accessList" :key="access">{{ access }}</a-select-option>
|
<a-select-option v-for="access in accessList" :key="access">{{ access }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
<a-input style="width: 50%" v-model="temp.lib" placeholder="项目存储的文件夹,jar 包存放的文件夹" />
|
<a-input style="width: 50%" v-model="temp.lib" placeholder="项目存储的文件夹,jar 包存放的文件夹" />
|
||||||
|
@ -59,17 +59,7 @@
|
|||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="11">
|
<a-col :span="11">
|
||||||
<span>项目: </span>
|
<span>项目: </span>
|
||||||
<a-select
|
<a-select :disabled="!item.nodeId" style="width: 80%" v-model="item.projectId" :placeholder="`请选择项目`">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
:disabled="!item.nodeId"
|
|
||||||
style="width: 80%"
|
|
||||||
v-model="item.projectId"
|
|
||||||
:placeholder="`请选择项目`"
|
|
||||||
>
|
|
||||||
<!-- <a-select-option value=""> 请先选择节点</a-select-option> -->
|
<!-- <a-select-option value=""> 请先选择节点</a-select-option> -->
|
||||||
<template v-if="nodeProjectList[item.nodeId]">
|
<template v-if="nodeProjectList[item.nodeId]">
|
||||||
<a-select-option
|
<a-select-option
|
||||||
@ -125,12 +115,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import {deleteLogRead, editLogRead, getLogReadList} from "@/api/log-read";
|
import { deleteLogRead, editLogRead, getLogReadList } from "@/api/log-read";
|
||||||
import {itemGroupBy, parseTime} from "@/utils/time";
|
import { itemGroupBy, parseTime } from "@/utils/time";
|
||||||
import {getNodeListAll, getProjectListAll} from "@/api/node";
|
import { getNodeListAll, getProjectListAll } from "@/api/node";
|
||||||
import {CHANGE_PAGE, COMPUTED_PAGINATION, PAGE_DEFAULT_LIST_QUERY} from "@/utils/const";
|
import { CHANGE_PAGE, COMPUTED_PAGINATION, PAGE_DEFAULT_LIST_QUERY } from "@/utils/const";
|
||||||
|
|
||||||
import {mapGetters} from "vuex";
|
import { mapGetters } from "vuex";
|
||||||
import logReadView from "./logReadView";
|
import logReadView from "./logReadView";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -8,17 +8,7 @@
|
|||||||
<template v-if="temp.projectList && temp.cacheData">
|
<template v-if="temp.projectList && temp.cacheData">
|
||||||
<div>
|
<div>
|
||||||
节点:
|
节点:
|
||||||
<a-select
|
<a-select :value="`${temp.cacheData.useNodeId},${temp.cacheData.useProjectId}`" style="width: 200px" @change="nodeChange" placeholder="请选择节点">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
:value="`${temp.cacheData.useNodeId},${temp.cacheData.useProjectId}`"
|
|
||||||
style="width: 200px"
|
|
||||||
@change="nodeChange"
|
|
||||||
placeholder="请选择节点"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="item in temp.projectList" :key="`${item.nodeId},${item.projectId}`">
|
<a-select-option v-for="item in temp.projectList" :key="`${item.nodeId},${item.projectId}`">
|
||||||
{{ nodeName[item.nodeId] && nodeName[item.nodeId].name }}
|
{{ nodeName[item.nodeId] && nodeName[item.nodeId].name }}
|
||||||
</a-select-option>
|
</a-select-option>
|
||||||
@ -131,13 +121,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import {getNodeListAll, getProjectListAll} from "@/api/node";
|
import { getNodeListAll, getProjectListAll } from "@/api/node";
|
||||||
import {itemGroupBy} from "@/utils/time";
|
import { itemGroupBy } from "@/utils/time";
|
||||||
import {getFileList} from "@/api/node-project";
|
import { getFileList } from "@/api/node-project";
|
||||||
import {getWebSocketUrl} from "@/utils/const";
|
import { getWebSocketUrl } from "@/utils/const";
|
||||||
import {mapGetters} from "vuex";
|
import { mapGetters } from "vuex";
|
||||||
import viewPre from "@/components/logView/view-pre";
|
import viewPre from "@/components/logView/view-pre";
|
||||||
import {updateCache} from "@/api/log-read";
|
import { updateCache } from "@/api/log-read";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
|
@ -79,17 +79,7 @@
|
|||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="8" :offset="1">
|
<a-col :span="8" :offset="1">
|
||||||
<a-input addon-before="容器" :disabled="item.disabled" v-model="item.port" placeholder="容器端口">
|
<a-input addon-before="容器" :disabled="item.disabled" v-model="item.port" placeholder="容器端口">
|
||||||
<a-select
|
<a-select slot="addonAfter" :disabled="item.disabled" v-model="item.scheme" placeholder="端口协议">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
slot="addonAfter"
|
|
||||||
:disabled="item.disabled"
|
|
||||||
v-model="item.scheme"
|
|
||||||
placeholder="端口协议"
|
|
||||||
>
|
|
||||||
<a-select-option value="tcp">tcp</a-select-option>
|
<a-select-option value="tcp">tcp</a-select-option>
|
||||||
<a-select-option value="udp">udp</a-select-option>
|
<a-select-option value="udp">udp</a-select-option>
|
||||||
<a-select-option value="sctp">sctp</a-select-option>
|
<a-select-option value="sctp">sctp</a-select-option>
|
||||||
@ -233,8 +223,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import {parseTime, renderSize} from "@/utils/time";
|
import { parseTime, renderSize } from "@/utils/time";
|
||||||
import {dockerImageCreateContainer, dockerImageInspect, dockerImagePullImage, dockerImageRemove, dockerImagesList} from "@/api/docker-api";
|
import { dockerImageCreateContainer, dockerImageInspect, dockerImagePullImage, dockerImageRemove, dockerImagesList } from "@/api/docker-api";
|
||||||
import PullImageLog from "@/pages/docker/pull-image-log";
|
import PullImageLog from "@/pages/docker/pull-image-log";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -120,16 +120,7 @@
|
|||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="8" :offset="1">
|
<a-col :span="8" :offset="1">
|
||||||
<a-input addon-before="容器" v-model="item.targetPort" placeholder="容器端口">
|
<a-input addon-before="容器" v-model="item.targetPort" placeholder="容器端口">
|
||||||
<a-select
|
<a-select slot="addonAfter" v-model="item.protocol" placeholder="端口协议">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
slot="addonAfter"
|
|
||||||
v-model="item.protocol"
|
|
||||||
placeholder="端口协议"
|
|
||||||
>
|
|
||||||
<a-select-option value="TCP">TCP</a-select-option>
|
<a-select-option value="TCP">TCP</a-select-option>
|
||||||
<a-select-option value="UDP">UDP</a-select-option>
|
<a-select-option value="UDP">UDP</a-select-option>
|
||||||
<a-select-option value="SCTP">SCTP</a-select-option>
|
<a-select-option value="SCTP">SCTP</a-select-option>
|
||||||
@ -404,10 +395,10 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {dockerSwarmServicesDel, dockerSwarmServicesEdit, dockerSwarmServicesList} from "@/api/docker-swarm";
|
import { dockerSwarmServicesDel, dockerSwarmServicesEdit, dockerSwarmServicesList } from "@/api/docker-swarm";
|
||||||
import SwarmTask from "./task";
|
import SwarmTask from "./task";
|
||||||
import PullLog from "./pull-log";
|
import PullLog from "./pull-log";
|
||||||
import {renderSize} from "@/utils/time";
|
import { renderSize } from "@/utils/time";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { SwarmTask, PullLog },
|
components: { SwarmTask, PullLog },
|
||||||
|
@ -9,19 +9,7 @@
|
|||||||
<a-input v-model="listQuery['taskNode']" @pressEnter="loadData" placeholder="节点id" class="search-input-item" />
|
<a-input v-model="listQuery['taskNode']" @pressEnter="loadData" placeholder="节点id" class="search-input-item" />
|
||||||
|
|
||||||
<a-tooltip :title="TASK_STATE[listQuery['taskState']]">
|
<a-tooltip :title="TASK_STATE[listQuery['taskState']]">
|
||||||
<a-select
|
<a-select show-search option-filter-prop="children" v-model="listQuery['taskState']" allowClear placeholder="状态" class="search-input-item">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
show-search
|
|
||||||
option-filter-prop="children"
|
|
||||||
v-model="listQuery['taskState']"
|
|
||||||
allowClear
|
|
||||||
placeholder="状态"
|
|
||||||
class="search-input-item"
|
|
||||||
>
|
|
||||||
<a-select-option :key="key" v-for="(item, key) in TASK_STATE">{{ item }}- {{ key }}</a-select-option>
|
<a-select-option :key="key" v-for="(item, key) in TASK_STATE">{{ item }}- {{ key }}</a-select-option>
|
||||||
<a-select-option value="">状态</a-select-option>
|
<a-select-option value="">状态</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
@ -105,8 +93,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {dockerSwarmNodeLeave, dockerSwarmNodeUpdate, dockerSwarmServicesTaskList, TASK_STATE} from "@/api/docker-swarm";
|
import { dockerSwarmNodeLeave, dockerSwarmNodeUpdate, dockerSwarmServicesTaskList, TASK_STATE } from "@/api/docker-swarm";
|
||||||
import {parseTime} from "@/utils/time";
|
import { parseTime } from "@/utils/time";
|
||||||
import PullLog from "./pull-log";
|
import PullLog from "./pull-log";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -203,18 +203,7 @@
|
|||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</template>
|
</template>
|
||||||
<a-input v-model="temp.url" placeholder="节点地址 (127.0.0.1:2123)">
|
<a-input v-model="temp.url" placeholder="节点地址 (127.0.0.1:2123)">
|
||||||
<a-select
|
<a-select placeholder="选择协议类型" slot="addonBefore" v-model="temp.protocol" default-value="Http://" style="width: 80px">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
placeholder="选择协议类型"
|
|
||||||
slot="addonBefore"
|
|
||||||
v-model="temp.protocol"
|
|
||||||
default-value="Http://"
|
|
||||||
style="width: 80px"
|
|
||||||
>
|
|
||||||
<a-select-option value="Http"> Http:// </a-select-option>
|
<a-select-option value="Http"> Http:// </a-select-option>
|
||||||
<a-select-option value="Https"> Https:// </a-select-option>
|
<a-select-option value="Https"> Https:// </a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
@ -251,17 +240,7 @@
|
|||||||
<a-input-number v-model="temp.timeOut" :min="0" placeholder="秒 (值太小可能会取不到节点状态)" style="width: 100%" />
|
<a-input-number v-model="temp.timeOut" :min="0" placeholder="秒 (值太小可能会取不到节点状态)" style="width: 100%" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item label="绑定 SSH " prop="sshId">
|
<a-form-model-item label="绑定 SSH " prop="sshId">
|
||||||
<a-select
|
<a-select show-search option-filter-prop="children" v-model="temp.sshId" placeholder="请选择SSH">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
show-search
|
|
||||||
option-filter-prop="children"
|
|
||||||
v-model="temp.sshId"
|
|
||||||
placeholder="请选择SSH"
|
|
||||||
>
|
|
||||||
<a-select-option value="">不绑定</a-select-option>
|
<a-select-option value="">不绑定</a-select-option>
|
||||||
<a-select-option v-for="ssh in sshList" :key="ssh.id" :disabled="ssh.disabled">{{ ssh.name }}</a-select-option>
|
<a-select-option v-for="ssh in sshList" :key="ssh.id" :disabled="ssh.disabled">{{ ssh.name }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
@ -269,18 +248,7 @@
|
|||||||
|
|
||||||
<a-form-model-item label="代理" prop="httpProxy">
|
<a-form-model-item label="代理" prop="httpProxy">
|
||||||
<a-input v-model="temp.httpProxy" placeholder="代理地址 (127.0.0.1:8888)">
|
<a-input v-model="temp.httpProxy" placeholder="代理地址 (127.0.0.1:8888)">
|
||||||
<a-select
|
<a-select slot="addonBefore" v-model="temp.httpProxyType" placeholder="选择代理类型" default-value="HTTP" style="width: 100px">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
slot="addonBefore"
|
|
||||||
v-model="temp.httpProxyType"
|
|
||||||
placeholder="选择代理类型"
|
|
||||||
default-value="HTTP"
|
|
||||||
style="width: 100px"
|
|
||||||
>
|
|
||||||
<a-select-option value="HTTP">HTTP</a-select-option>
|
<a-select-option value="HTTP">HTTP</a-select-option>
|
||||||
<a-select-option value="SOCKS">SOCKS</a-select-option>
|
<a-select-option value="SOCKS">SOCKS</a-select-option>
|
||||||
<a-select-option value="DIRECT">DIRECT</a-select-option>
|
<a-select-option value="DIRECT">DIRECT</a-select-option>
|
||||||
|
@ -97,15 +97,7 @@
|
|||||||
<a-modal v-model="editNginxVisible" title="编辑 Nginx 配置文件" @ok="handleEditNginxOk" :maskClosable="false" width="70vw">
|
<a-modal v-model="editNginxVisible" title="编辑 Nginx 配置文件" @ok="handleEditNginxOk" :maskClosable="false" width="70vw">
|
||||||
<a-form-model ref="editNginxForm" :rules="rules" :model="temp" :label-col="{ span: 3 }" :wrapper-col="{ span: 18 }">
|
<a-form-model ref="editNginxForm" :rules="rules" :model="temp" :label-col="{ span: 3 }" :wrapper-col="{ span: 18 }">
|
||||||
<a-form-model-item label="白名单路径" prop="whitePath">
|
<a-form-model-item label="白名单路径" prop="whitePath">
|
||||||
<a-select
|
<a-select v-model="temp.whitePath" placeholder="请选择白名单路径">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
v-model="temp.whitePath"
|
|
||||||
placeholder="请选择白名单路径"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="element in whiteList" :key="element">{{ element }}</a-select-option>
|
<a-select-option v-for="element in whiteList" :key="element">{{ element }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
@ -130,7 +122,7 @@
|
|||||||
</a-layout>
|
</a-layout>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import {deleteNginxConfig, doNginxCommand, editNginxConfig, editNginxServerName, getNginxDirectoryList, getNginxFileList, loadNginxConfig, loadNginxData, loadNginxWhiteList} from "@/api/node-nginx";
|
import { deleteNginxConfig, doNginxCommand, editNginxConfig, editNginxServerName, getNginxDirectoryList, getNginxFileList, loadNginxConfig, loadNginxData, loadNginxWhiteList } from "@/api/node-nginx";
|
||||||
|
|
||||||
import codeEditor from "@/components/codeEditor";
|
import codeEditor from "@/components/codeEditor";
|
||||||
|
|
||||||
|
@ -186,16 +186,7 @@
|
|||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</template>
|
</template>
|
||||||
<a-input-group compact>
|
<a-input-group compact>
|
||||||
<a-select
|
<a-select style="width: 50%" v-model="temp.whitelistDirectory" placeholder="请选择项目白名单路径">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
style="width: 50%"
|
|
||||||
v-model="temp.whitelistDirectory"
|
|
||||||
placeholder="请选择项目白名单路径"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="access in accessList" :key="access">{{ access }}</a-select-option>
|
<a-select-option v-for="access in accessList" :key="access">{{ access }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
<a-input style="width: 50%" v-model="temp.lib" placeholder="项目存储的文件夹" @blur.native="checkLibIndexExist" />
|
<a-input style="width: 50%" v-model="temp.lib" placeholder="项目存储的文件夹" @blur.native="checkLibIndexExist" />
|
||||||
|
@ -23,45 +23,13 @@
|
|||||||
<a-space>
|
<a-space>
|
||||||
<a-input v-model="listQuery['%name%']" @pressEnter="loadData" placeholder="节点名称" />
|
<a-input v-model="listQuery['%name%']" @pressEnter="loadData" placeholder="节点名称" />
|
||||||
<a-input v-model="listQuery['%url%']" @pressEnter="loadData" placeholder="节点地址" />
|
<a-input v-model="listQuery['%url%']" @pressEnter="loadData" placeholder="节点地址" />
|
||||||
<a-select
|
<a-select v-model="listQuery.status" allowClear placeholder="请选择状态" class="search-input-item">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
v-model="listQuery.status"
|
|
||||||
allowClear
|
|
||||||
placeholder="请选择状态"
|
|
||||||
class="search-input-item"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="(desc, key) in statusMap" :key="key">{{ desc }}</a-select-option>
|
<a-select-option v-for="(desc, key) in statusMap" :key="key">{{ desc }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
<a-select
|
<a-select show-search option-filter-prop="children" v-model="listQuery.group" allowClear placeholder="分组" class="search-input-item">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
show-search
|
|
||||||
option-filter-prop="children"
|
|
||||||
v-model="listQuery.group"
|
|
||||||
allowClear
|
|
||||||
placeholder="分组"
|
|
||||||
class="search-input-item"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="item in groupList" :key="item">{{ item }}</a-select-option>
|
<a-select-option v-for="item in groupList" :key="item">{{ item }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
<a-select
|
<a-select v-model="listQuery['order_field']" allowClear placeholder="请选择排序字段" class="search-input-item">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
v-model="listQuery['order_field']"
|
|
||||||
allowClear
|
|
||||||
placeholder="请选择排序字段"
|
|
||||||
class="search-input-item"
|
|
||||||
>
|
|
||||||
<a-select-option value="networkTime">网络延迟</a-select-option>
|
<a-select-option value="networkTime">网络延迟</a-select-option>
|
||||||
<a-select-option value="occupyCpu">cpu</a-select-option>
|
<a-select-option value="occupyCpu">cpu</a-select-option>
|
||||||
<a-select-option value="occupyDisk">硬盘</a-select-option>
|
<a-select-option value="occupyDisk">硬盘</a-select-option>
|
||||||
@ -253,11 +221,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import {getStatist, status, statusStat} from "@/api/node-stat";
|
import { getStatist, status, statusStat } from "@/api/node-stat";
|
||||||
import {formatDuration, parseTime} from "@/utils/time";
|
import { formatDuration, parseTime } from "@/utils/time";
|
||||||
import {PAGE_DEFAULT_LIST_QUERY, PAGE_DEFAULT_SHOW_TOTAL} from "@/utils/const";
|
import { PAGE_DEFAULT_LIST_QUERY, PAGE_DEFAULT_SHOW_TOTAL } from "@/utils/const";
|
||||||
import NodeTop from "@/pages/node/node-layout/node-top";
|
import NodeTop from "@/pages/node/node-layout/node-top";
|
||||||
import {getNodeGroupAll} from "@/api/node";
|
import { getNodeGroupAll } from "@/api/node";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { NodeTop },
|
components: { NodeTop },
|
||||||
|
@ -71,17 +71,7 @@
|
|||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item label="仓库地址" prop="gitUrl">
|
<a-form-model-item label="仓库地址" prop="gitUrl">
|
||||||
<a-input-group compact>
|
<a-input-group compact>
|
||||||
<a-select
|
<a-select style="width: 20%" v-model="temp.repoType" name="repoType" placeholder="仓库类型">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
style="width: 20%"
|
|
||||||
v-model="temp.repoType"
|
|
||||||
name="repoType"
|
|
||||||
placeholder="仓库类型"
|
|
||||||
>
|
|
||||||
<a-select-option :value="0">GIT</a-select-option>
|
<a-select-option :value="0">GIT</a-select-option>
|
||||||
<a-select-option :value="1">SVN</a-select-option>
|
<a-select-option :value="1">SVN</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
@ -195,15 +185,7 @@
|
|||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
</template>
|
</template>
|
||||||
<a-input-group compact>
|
<a-input-group compact>
|
||||||
<a-select
|
<a-select v-model="giteeImportForm.type" @change="importTypeChange">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
v-model="giteeImportForm.type"
|
|
||||||
@change="importTypeChange"
|
|
||||||
>
|
|
||||||
<a-select-option value="gitee"> gitee </a-select-option>
|
<a-select-option value="gitee"> gitee </a-select-option>
|
||||||
<a-select-option value="github"> github </a-select-option>
|
<a-select-option value="github"> github </a-select-option>
|
||||||
<a-select-option value="gitlab"> gitlab </a-select-option>
|
<a-select-option value="gitlab"> gitlab </a-select-option>
|
||||||
|
@ -244,16 +244,7 @@
|
|||||||
<a-input v-model="tempNode.name" placeholder="节点名称" />
|
<a-input v-model="tempNode.name" placeholder="节点名称" />
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item label="节点协议" prop="protocol">
|
<a-form-model-item label="节点协议" prop="protocol">
|
||||||
<a-select
|
<a-select v-model="tempNode.protocol" defaultValue="http" placeholder="节点协议">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
v-model="tempNode.protocol"
|
|
||||||
defaultValue="http"
|
|
||||||
placeholder="节点协议"
|
|
||||||
>
|
|
||||||
<a-select-option key="http">HTTP</a-select-option>
|
<a-select-option key="http">HTTP</a-select-option>
|
||||||
<a-select-option key="https">HTTPS</a-select-option>
|
<a-select-option key="https">HTTPS</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
|
@ -140,19 +140,7 @@
|
|||||||
<a-col :span="11">
|
<a-col :span="11">
|
||||||
<a-row type="flex" justify="center">
|
<a-row type="flex" justify="center">
|
||||||
<a-form-model-item label="模版节点">
|
<a-form-model-item label="模版节点">
|
||||||
<a-select
|
<a-select style="width: 30vw" show-search @change="changeTemplateNode" option-filter-prop="children" placeholder="请选择模版节点" v-model="tempNodeConfig.templateNodeId">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
style="width: 30vw"
|
|
||||||
show-search
|
|
||||||
@change="changeTemplateNode"
|
|
||||||
option-filter-prop="children"
|
|
||||||
placeholder="请选择模版节点"
|
|
||||||
v-model="tempNodeConfig.templateNodeId"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="item in nodeList" :key="item.id" :value="item.id">
|
<a-select-option v-for="item in nodeList" :key="item.id" :value="item.id">
|
||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</a-select-option>
|
</a-select-option>
|
||||||
@ -166,19 +154,7 @@
|
|||||||
<a-col :span="11">
|
<a-col :span="11">
|
||||||
<a-row type="flex" justify="center">
|
<a-row type="flex" justify="center">
|
||||||
<a-form-model-item label="分发节点">
|
<a-form-model-item label="分发节点">
|
||||||
<a-select
|
<a-select style="width: 30vw" show-search option-filter-prop="children" placeholder="请选择分发到的节点" mode="multiple" v-model="tempNodeConfig.chooseNode">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
style="width: 30vw"
|
|
||||||
show-search
|
|
||||||
option-filter-prop="children"
|
|
||||||
placeholder="请选择分发到的节点"
|
|
||||||
mode="multiple"
|
|
||||||
v-model="tempNodeConfig.chooseNode"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="item in nodeList" :key="item.id" :value="item.id">
|
<a-select-option v-for="item in nodeList" :key="item.id" :value="item.id">
|
||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</a-select-option>
|
</a-select-option>
|
||||||
|
@ -8,33 +8,12 @@
|
|||||||
<a-space>
|
<a-space>
|
||||||
<a-input class="search-input-item" @pressEnter="refresh" v-model="listQuery['%name%']" placeholder="节点名称" />
|
<a-input class="search-input-item" @pressEnter="refresh" v-model="listQuery['%name%']" placeholder="节点名称" />
|
||||||
<a-input class="search-input-item" @pressEnter="refresh" v-model="listQuery['%url%']" placeholder="节点地址" />
|
<a-input class="search-input-item" @pressEnter="refresh" v-model="listQuery['%url%']" placeholder="节点地址" />
|
||||||
<a-select
|
<a-select show-search option-filter-prop="children" v-model="listQuery.group" allowClear placeholder="分组" class="search-input-item">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
show-search
|
|
||||||
option-filter-prop="children"
|
|
||||||
v-model="listQuery.group"
|
|
||||||
allowClear
|
|
||||||
placeholder="分组"
|
|
||||||
class="search-input-item"
|
|
||||||
>
|
|
||||||
<a-select-option v-for="item in groupList" :key="item">{{ item }}</a-select-option>
|
<a-select-option v-for="item in groupList" :key="item">{{ item }}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
<a-button :loading="loading" type="primary" @click="refresh">搜索</a-button>
|
<a-button :loading="loading" type="primary" @click="refresh">搜索</a-button>
|
||||||
|
|
||||||
<a-select
|
<a-select v-model="temp.protocol" placeholder="升级协议" class="search-input-item">
|
||||||
:getPopupContainer="
|
|
||||||
(triggerNode) => {
|
|
||||||
return triggerNode.parentNode || document.body;
|
|
||||||
}
|
|
||||||
"
|
|
||||||
v-model="temp.protocol"
|
|
||||||
placeholder="升级协议"
|
|
||||||
class="search-input-item"
|
|
||||||
>
|
|
||||||
<a-select-option value="WebSocket">WebSocket</a-select-option>
|
<a-select-option value="WebSocket">WebSocket</a-select-option>
|
||||||
<a-select-option value="Http">Http</a-select-option>
|
<a-select-option value="Http">Http</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
@ -76,9 +55,9 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import upgrade from "@/components/upgrade";
|
import upgrade from "@/components/upgrade";
|
||||||
import {checkVersion, downloadRemote, getNodeGroupAll, getNodeList, uploadAgentFile} from "@/api/node";
|
import { checkVersion, downloadRemote, getNodeGroupAll, getNodeList, uploadAgentFile } from "@/api/node";
|
||||||
import {mapGetters} from "vuex";
|
import { mapGetters } from "vuex";
|
||||||
import {CHANGE_PAGE, COMPUTED_PAGINATION, getWebSocketUrl, PAGE_DEFAULT_LIST_QUERY} from "@/utils/const";
|
import { CHANGE_PAGE, COMPUTED_PAGINATION, getWebSocketUrl, PAGE_DEFAULT_LIST_QUERY } from "@/utils/const";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
|
Loading…
Reference in New Issue
Block a user