Update App.jsx via upload script - 2026-08-01 00:20:34
This commit is contained in:
parent
3292dd7552
commit
1bdb84c240
17
App.jsx
17
App.jsx
|
|
@ -4279,7 +4279,7 @@ async function jmsResolveIp(domain) {
|
||||||
return answer ? answer.data : null;
|
return answer ? answer.data : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function JmsLineCard({ line, ip, onRefreshIp, onCheck, onCopy, onQr, onEdit, onDelete }) {
|
function JmsLineCard({ line, ip, onRefreshIp, onCheck, onCopy, onQr, onDuplicate, onEdit, onDelete }) {
|
||||||
const meta = JMS_PROTO_META[line.protocol];
|
const meta = JMS_PROTO_META[line.protocol];
|
||||||
const status = line.monitorStatus || 'normal';
|
const status = line.monitorStatus || 'normal';
|
||||||
const dotClass = status === 'abnormal' ? 'jms-dot-abnormal' : status === 'checking' ? 'jms-dot-checking' : 'jms-dot-normal';
|
const dotClass = status === 'abnormal' ? 'jms-dot-abnormal' : status === 'checking' ? 'jms-dot-checking' : 'jms-dot-normal';
|
||||||
|
|
@ -4320,8 +4320,9 @@ function JmsLineCard({ line, ip, onRefreshIp, onCheck, onCopy, onQr, onEdit, onD
|
||||||
<div className="jms-card-actions">
|
<div className="jms-card-actions">
|
||||||
<button className="btn btn-sm" onClick={() => onCopy(line)}><Copy size={13} />复制链接</button>
|
<button className="btn btn-sm" onClick={() => onCopy(line)}><Copy size={13} />复制链接</button>
|
||||||
<button className="btn btn-sm" onClick={() => onQr(line)}><QrCode size={13} />二维码</button>
|
<button className="btn btn-sm" onClick={() => onQr(line)}><QrCode size={13} />二维码</button>
|
||||||
<button className="btn btn-sm btn-ghost" onClick={() => onEdit(line)}><Edit2 size={13} /></button>
|
<button className="btn btn-sm btn-ghost" onClick={() => onDuplicate(line)} title="复制为新线路"><Layers size={13} /></button>
|
||||||
<button className="btn btn-sm btn-ghost btn-danger" onClick={() => onDelete(line.id)}><Trash2 size={13} /></button>
|
<button className="btn btn-sm btn-ghost" onClick={() => onEdit(line)} title="编辑"><Edit2 size={13} /></button>
|
||||||
|
<button className="btn btn-sm btn-ghost btn-danger" onClick={() => onDelete(line.id)} title="删除"><Trash2 size={13} /></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
@ -4434,6 +4435,15 @@ function JmsPage({ lines, onSave, onDelete, onCheck, onNotify }) {
|
||||||
setDraft({ ...line });
|
setDraft({ ...line });
|
||||||
setModalOpen(true);
|
setModalOpen(true);
|
||||||
}
|
}
|
||||||
|
function duplicateLine(line) {
|
||||||
|
setEditingId(null); // 不带id,保存时会当成全新的一条线路,不会覆盖原线路
|
||||||
|
setGroup(line.group);
|
||||||
|
setProtocol(line.protocol);
|
||||||
|
const { id, monitorStatus, lastChecked, ...rest } = line;
|
||||||
|
setDraft({ ...rest, name: line.name ? `${line.name} 副本` : '' });
|
||||||
|
setModalOpen(true);
|
||||||
|
onNotify('已复制配置,改一下地址/端口/名称就能存成新线路');
|
||||||
|
}
|
||||||
function closeModal() { setModalOpen(false); }
|
function closeModal() { setModalOpen(false); }
|
||||||
|
|
||||||
function handleGroupChange(g) {
|
function handleGroupChange(g) {
|
||||||
|
|
@ -4481,6 +4491,7 @@ function JmsPage({ lines, onSave, onDelete, onCheck, onNotify }) {
|
||||||
onCheck={onCheck}
|
onCheck={onCheck}
|
||||||
onCopy={copyLink}
|
onCopy={copyLink}
|
||||||
onQr={openQr}
|
onQr={openQr}
|
||||||
|
onDuplicate={duplicateLine}
|
||||||
onEdit={openEditModal}
|
onEdit={openEditModal}
|
||||||
onDelete={onDelete}
|
onDelete={onDelete}
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue