fix 修复下拉框组件在弹窗中不能完整显示问题

This commit is contained in:
bwcx_jzy 2022-09-29 12:35:13 +08:00
parent db494f1be8
commit 77e7b87868
No known key found for this signature in database
GPG Key ID: 5E48E9372088B9E5
18 changed files with 60 additions and 370 deletions

View File

@ -7,6 +7,7 @@
### 🐞 解决BUG、优化功能 ### 🐞 解决BUG、优化功能
1. 【server】修正错别字`传入` (感谢@fangdan 1. 【server】修正错别字`传入` (感谢@fangdan
2. 【server】修复下拉框组件在弹窗中不能完整显示问题感谢@冷月)
------ ------

View File

@ -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) {
} }
}); });

View File

@ -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>

View File

@ -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>

View File

@ -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 包存放的文件夹" />

View File

@ -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 {

View File

@ -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: {

View File

@ -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 {

View File

@ -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 },

View File

@ -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 {

View File

@ -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>

View File

@ -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";

View File

@ -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" />

View File

@ -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 },

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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: {