1.修复智能解析页面的搜索。2.修复Cloudflare自定义主机名的分页,去掉多余代码 (#447)

* Update RewriteRule in .htaccess for cleaner routing

修复Apache环境下路由重写规则
废弃旧版 index.php/$1 写法,改用兼容新版PHP的PATH_INFO传参方式
解决访问时报错 No input file specified. 问题

* Add files via upload

1.添加DCV 委派一键添加CNAME
2.添加证书验证方法和最低 TLS 版本
3.添加批量添加 修改 删除
4.修复华为云一键txt解析失败(我没其他dns, 其他的需关注)
5.Cloudflare增强改Cloudflare自定义主机名

* 1.添加快速解析 2.Cloudflare自定义主机名添加搜索功能

* Add files via upload

1.Cloudflare自定义主机名自动获取默认线路(支持所有dns,华为云退回之前)
2.优化手机上显示问题
3.一键添加 DCV 委派支持选择要写入的解析域名

* 优化手机显示

* 添加1. 批量 DCV 委派 2. 批量主机名 TXT 验证 3. 批量证书 TXT 验证 4. 批量刷新验证

1. 批量 DCV 委派
2. 批量主机名 TXT 验证
3. 批量证书 TXT 验证
4. 批量刷新验证

* 快速解析改名智能解析,添加已有解析记录和智能批量添加

* 快速解析改名智能解析,添加已有解析记录和智能批量添加

* 由于之前复制保存的,代码有些差异

* 修复已有解析记录的备注功能

* 备注按dns显示

* 修复记录值过长无法复制,优化显示

* 优化显示

* 1.修复智能解析页面的搜索。2.修复Cloudflare自定义主机名的分页,去掉多余代码
This commit is contained in:
wmwlwmwl
2026-04-24 20:03:43 +08:00
committed by GitHub
parent 668e2b4ceb
commit 945d91386c
2 changed files with 81 additions and 33 deletions

View File

@@ -182,25 +182,6 @@
</div>
</div>
<div class="modal" id="modal-batch-dcv-target-picker" role="dialog" aria-hidden="true" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content animated flipInX">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span>&times;</span></button>
<h4 class="modal-title">选择解析服务商 - 批量 DCV 委派</h4>
</div>
<div class="modal-body">
<div class="alert alert-warning" style="margin-bottom:12px;">检测到多个可用解析域名,请确认要写入哪个服务商。</div>
<div id="batchDcvTargetPickerList"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-white" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary" onclick="confirmBatchDcvTargetSelection()">确定</button>
</div>
</div>
</div>
</div>
<div class="modal" id="modal-batch-hostname-txt" role="dialog" aria-hidden="true" data-backdrop="static">
<div class="modal-dialog">
<div class="modal-content animated flipInX">
@@ -443,6 +424,11 @@ $(document).ready(function(){
toolbar: '#toolbar',
classes: 'table table-striped table-hover table-bordered',
uniqueId: 'id',
sidePagination: 'client',
pagination: true,
pageSize: 20,
pageList: [10, 20, 50, 100],
queryParams: function(params){ return {}; },
responseHandler: hostnameResponseHandler,
columns: [
{field: 'checkbox', checkbox: true, width: '50px'},
@@ -550,8 +536,6 @@ function confirmBatchDelete(){
}
var batchDcvHostnamesData = [];
var batchDcvSelectedTarget = null;
var batchDcvCnameValue = '';
function batchDcvDelegation(){
var selectedRows = $("#listTable").bootstrapTable('getSelections');

View File

@@ -1611,25 +1611,89 @@ function changePageSize(){
}
function searchRecords(){
var keyword = $('#searchKeyword').val().toLowerCase();
var keyword = $('#searchKeyword').val().trim();
var domainId = $('#domainSelect').val();
if(!domainId){
layer.msg('请先选择域名', {icon: 0, time: 1500});
return;
}
if(!keyword){
filteredRecords = allRecords;
}else{
filteredRecords = allRecords.filter(function(row){
// 无搜索词时,恢复正常加载
currentPage = 1;
loadRecordList();
return;
}
// 获取所有记录进行搜索(分页获取所有数据)
var ii = layer.load(2);
var allData = [];
var offset = 0;
var limit = 100; // 每页100条
var hasMore = true;
// 递归获取所有数据
function fetchAllRecords(){
if(!hasMore){
// 所有数据已获取,开始搜索
performSearch();
return;
}
$.ajax({
type : 'POST',
url : '/record/data/' + domainId,
data : {offset: offset, limit: limit},
dataType : 'json',
success : function(data) {
var rows = data.rows || [];
allData = allData.concat(rows);
if(rows.length < limit){
hasMore = false; // 已获取完所有数据
}
offset += limit;
fetchAllRecords(); // 递归获取下一页
},
error : function(xhr, status, error) {
layer.close(ii);
layer.alert('获取数据失败:' + (error || '网络错误'), {icon: 2});
}
});
}
// 执行搜索
function performSearch(){
layer.close(ii);
// 客户端搜索
filteredRecords = allData.filter(function(row){
var name = (row.Name || '').toLowerCase();
var value = Array.isArray(row.Value) ? row.Value.join(', ') : (row.Value || '').toLowerCase();
var remark = (row.Remark || '').toLowerCase();
return name.indexOf(keyword) > -1 || value.indexOf(keyword) > -1 || remark.indexOf(keyword) > -1;
var line = (row.LineName || '').toLowerCase();
var kw = keyword.toLowerCase();
return name.indexOf(kw) > -1 || value.indexOf(kw) > -1 || remark.indexOf(kw) > -1 || line.indexOf(kw) > -1;
});
}
allRecords = allData;
totalRecords = filteredRecords.length;
currentPage = 1;
if(filteredRecords.length > 0){
renderRecordList(filteredRecords);
}else{
$('#recordListBody').html('<tr><td colspan="9" class="no-records"><i class="fa fa-search fa-3x"></i><br>未找到匹配的记录</td></tr>');
$('#selectedCount').text('');
if(filteredRecords.length > 0){
renderRecordList(filteredRecords);
}else{
$('#recordListBody').html('<tr><td colspan="9" class="no-records"><i class="fa fa-search fa-3x"></i><br>未找到匹配的记录</td></tr>');
$('#selectedCount').text('');
$('#paginationWrapper').hide();
}
renderPagination();
}
// 开始获取数据
fetchAllRecords();
}
function toggleCheckAll(obj){