更新ASIN库新需求

This commit is contained in:
super
2026-07-20 20:12:38 +08:00
parent cbde22ec79
commit ba48bbc6af
13 changed files with 1313 additions and 212 deletions

View File

@@ -115,7 +115,10 @@
function runTabLoader(tabName) {
if (tabName === 'users') { loadUsers(1); loadColumnsForPermission(); }
else if (tabName === 'columns') loadColumns();
else if (tabName === 'dedupe-total-data') loadDedupeTotalData(1);
else if (tabName === 'dedupe-total-data') {
loadDedupeTotalData(1);
loadDedupeGroupSummary();
}
else if (tabName === 'invalid-asin-data') loadInvalidAsinData(1);
else if (tabName === 'shop-keys') loadShopKeys(1);
else if (tabName === 'shop-manage') loadShopManage(1);
@@ -1407,7 +1410,9 @@
function buildDedupeTotalDataQuery(page) {
var q = 'page=' + (page || 1) + '&page_size=' + dedupeTotalDataPageSize;
var keyword = (document.getElementById('searchDedupeTotalData').value || '').trim();
var username = (document.getElementById('searchDedupeTotalDataUsername').value || '').trim();
if (keyword) q += '&keyword=' + encodeURIComponent(keyword);
if (username) q += '&username=' + encodeURIComponent(username);
return q;
}
function loadDedupeTotalData(page) {
@@ -1417,17 +1422,17 @@
.then(function (res) {
var tbody = document.getElementById('dedupeTotalDataListBody');
if (!res.success) {
tbody.innerHTML = '<tr><td colspan="4" class="empty-tip">加载失败: ' + (res.error || '') + '</td></tr>';
tbody.innerHTML = '<tr><td colspan="5" class="empty-tip">加载失败: ' + escapeHtml(res.error || '') + '</td></tr>';
return;
}
var items = res.items || [];
if (items.length === 0) {
tbody.innerHTML = '<tr><td colspan="4" class="empty-tip">暂无总数据</td></tr>';
tbody.innerHTML = '<tr><td colspan="5" class="empty-tip">暂无总数据</td></tr>';
} else {
tbody.innerHTML = items.map(function (item) {
return '<tr><td>' + item.id + '</td><td>' + (item.data_value || '') + '</td><td>' + (item.created_at || '') + '</td><td>' +
'<button class="btn btn-sm" data-dedupe-total-edit="' + item.id + '" data-value="' + (item.data_value || '').replace(/"/g, '&quot;') + '">编辑</button> ' +
'<button class="btn btn-sm btn-danger" data-dedupe-total-delete="' + item.id + '" data-value="' + (item.data_value || '').replace(/"/g, '&quot;') + '">删除</button>' +
return '<tr><td>' + escapeHtml(item.id) + '</td><td>' + escapeHtml(item.data_value || '') + '</td><td>' + escapeHtml(item.username || '') + '</td><td>' + escapeHtml(item.created_at || '') + '</td><td>' +
'<button class="btn btn-sm" data-dedupe-total-edit="' + escapeHtml(item.id) + '" data-value="' + escapeHtml(item.data_value || '') + '">编辑</button> ' +
'<button class="btn btn-sm btn-danger" data-dedupe-total-delete="' + escapeHtml(item.id) + '" data-value="' + escapeHtml(item.data_value || '') + '">删除</button>' +
'</td></tr>';
}).join('');
}
@@ -1435,7 +1440,7 @@
bindDedupeTotalDataActions();
})
.catch(function () {
document.getElementById('dedupeTotalDataListBody').innerHTML = '<tr><td colspan="4" class="empty-tip">请求失败</td></tr>';
document.getElementById('dedupeTotalDataListBody').innerHTML = '<tr><td colspan="5" class="empty-tip">请求失败</td></tr>';
});
}
function bindDedupeTotalDataActions() {
@@ -2114,6 +2119,38 @@
});
}
function renderDedupeGroupSummary() {
var summaryEl = document.getElementById('dedupeGroupSummary');
if (!summaryEl) return;
if (currentUserRole === 'super_admin') {
summaryEl.innerHTML = '<span class="dedupe-group-summary-chip">全部分组 · ' +
escapeHtml(shopManageGroups.length) + ' 个</span>';
return;
}
if (!shopManageGroups.length) {
summaryEl.textContent = '未加入分组';
return;
}
var visibleGroups = shopManageGroups.slice(0, 4);
summaryEl.innerHTML = visibleGroups.map(function (group) {
var relation = String(group.leader_user_id || '') === String(currentUserId || '') ? '组长' : '组员';
return '<span class="dedupe-group-summary-chip" title="' + escapeHtml(group.group_name || '') + '">' +
escapeHtml(group.group_name || '') + ' · ' + relation + '</span>';
}).join('') + (shopManageGroups.length > visibleGroups.length
? '<span>另 ' + escapeHtml(shopManageGroups.length - visibleGroups.length) + ' 个</span>'
: '');
}
function loadDedupeGroupSummary(force) {
var summaryEl = document.getElementById('dedupeGroupSummary');
if (!summaryEl) return Promise.resolve([]);
summaryEl.textContent = '正在加载...';
return loadShopManageGroups(null, null, force).then(function (groups) {
renderDedupeGroupSummary();
return groups;
});
}
function resetShopManageGroupForm() {
document.getElementById('shopManageGroupEditId').value = '';
document.getElementById('shopManageGroupLeaderUserId').value = currentUserId || '';
@@ -2130,7 +2167,7 @@
function updateShopManageGroupButtonsAccess() {
var canManageGroups = !!currentUserId;
['btnManageShopGroups', 'btnManageShopGroupsFromEdit', 'btnManageSkipPriceAsinGroups', 'btnManageQueryAsinGroups'].forEach(function (id) {
['btnManageShopGroups', 'btnManageShopGroupsFromEdit', 'btnManageSkipPriceAsinGroups', 'btnManageQueryAsinGroups', 'btnManageDedupeGroups'].forEach(function (id) {
var btn = document.getElementById(id);
if (btn) btn.style.display = canManageGroups ? '' : 'none';
});
@@ -2210,6 +2247,7 @@
}
loadShopManageGroups(null, null, true).then(function () {
renderShopManageGroupRows();
renderDedupeGroupSummary();
loadShopManage(shopManagePage);
loadSkipPriceAsin(skipPriceAsinPage);
});
@@ -2234,6 +2272,10 @@
setShopManageGroupGrantRoutes(['query-asin']);
openShopManageGroupModal();
};
document.getElementById('btnManageDedupeGroups').onclick = function () {
setShopManageGroupGrantRoutes(['dedupe-total-data']);
openShopManageGroupModal();
};
document.getElementById('btnSearchShopManage').onclick = function () {
loadShopManage(1);
};
@@ -2282,6 +2324,7 @@
msgEl.className = 'msg ok';
loadShopManageGroups(null, null, true).then(function () {
renderShopManageGroupRows();
renderDedupeGroupSummary();
loadShopManage(shopManagePage);
loadSkipPriceAsin(skipPriceAsinPage);
});