fix:中文编码损坏,属性引号被截断
Some checks failed
Build and Deploy Front / deploy (push) Failing after 1m35s

This commit is contained in:
xiaolipro 2026-09-07 11:09:26 +08:00
parent 211b440034
commit b347745a1e
2 changed files with 69 additions and 69 deletions

View File

@ -72,7 +72,7 @@
/** 搜索条件 */ /** 搜索条件 */
const searchModel = reactive<any>({}); const searchModel = reactive<any>({});
/** æ<EFBFBD>œç´¢å…³é”®ï¿?*/ /** 搜索关键字 */
const searchKeyword = ref(''); const searchKeyword = ref('');
const pullListData = ref<any[]>([]); const pullListData = ref<any[]>([]);
@ -123,8 +123,8 @@
children: list.map((item: any) => { children: list.map((item: any) => {
const time = item.createTime ? dayjs(item.createTime).format('YYYY-MM-DD HH:mm') : ''; const time = item.createTime ? dayjs(item.createTime).format('YYYY-MM-DD HH:mm') : '';
const app = item.appName || (item.appKey != null ? (appMap.value?.[item.appKey] ?? '') : '') || item.appKey || '-'; const app = item.appName || (item.appKey != null ? (appMap.value?.[item.appKey] ?? '') : '') || item.appKey || '-';
const appStr = app ? `ã€?{app}】` : ''; const appStr = app ? `【${app}】` : '';
const customerStr = item.customer ? `ã€?{item.customer}】` : ''; const customerStr = item.customer ? `【${item.customer}】` : '';
const codeLine = [time, appStr, customerStr].filter(Boolean).join(' '); const codeLine = [time, appStr, customerStr].filter(Boolean).join(' ');
return { return {
key: `item-${item.id}`, key: `item-${item.id}`,
@ -167,7 +167,7 @@
const activeTab = ref<'detail' | 'priority'>('detail'); const activeTab = ref<'detail' | 'priority'>('detail');
const slidingTabItems = computed(() => [ const slidingTabItems = computed(() => [
{ key: 'detail', label: '明细' }, { key: 'detail', label: '明细' },
{ key: 'priority', label: '优先çº? }, { key: 'priority', label: '优先级' },
]); ]);
const priorityModalRef = ref(); const priorityModalRef = ref();
const priorityModalParams = reactive<any>({ const priorityModalParams = reactive<any>({
@ -176,12 +176,12 @@
trackPullConfigId: undefined, trackPullConfigId: undefined,
}); });
// 明细表分é¡? // 明细表分页
const totalCount = ref(0); const totalCount = ref(0);
const currentPage = ref(1); const currentPage = ref(1);
const pageSize = ref(50); const pageSize = ref(50);
// 优先çº?tab 分页 // 优先级 tab 分页
const priorityTotalCount = ref(0); const priorityTotalCount = ref(0);
const priorityCurrentPage = ref(1); const priorityCurrentPage = ref(1);
const prioritypageSize = ref(50); const prioritypageSize = ref(50);
@ -196,9 +196,9 @@
{ key: 'customer', label: '客户', width: 140 }, { key: 'customer', label: '客户', width: 140 },
{ key: 'orderNoTypeText', label: '拉取单号类型', width: 140 }, { key: 'orderNoTypeText', label: '拉取单号类型', width: 140 },
{ key: 'pullTimesPerDay', label: '每天拉取次数', width: 120 }, { key: 'pullTimesPerDay', label: '每天拉取次数', width: 120 },
{ key: 'priority', label: '优先çº?, width: 100 }, { key: 'priority', label: '优先级', width: 100 },
{ key: 'updateTime', label: '修改时间', width: 160 }, { key: 'updateTime', label: '修改时间', width: 160 },
{ key: 'updateUser', label: '修改äº?, width: 120 }, { key: 'updateUser', label: '修改人', width: 120 },
]); ]);
function formatOrderNoType(cellValue: any) { function formatOrderNoType(cellValue: any) {
@ -293,7 +293,7 @@
label: '每天拉取次数', label: '每天拉取次数',
comp: 'AInputNumber', comp: 'AInputNumber',
compProps: { compProps: {
placeholder: '请输入次æ•?, placeholder: '请输入次数',
min: 0, min: 0,
max: 12, max: 12,
precision: 0, precision: 0,
@ -303,7 +303,7 @@
{ {
required: true, required: true,
type: 'number', type: 'number',
message: '请输入æ¯<EFBFBD>天拉å<EFBFBD>–次æ•?, message: '请输入每天拉取次数',
}, },
{ {
type: 'number', type: 'number',
@ -315,7 +315,7 @@
}, },
{ {
field: 'priority', field: 'priority',
label: '优先çº?, label: '优先级',
comp: 'AInputNumber', comp: 'AInputNumber',
compProps: { compProps: {
placeholder: '请输入优先级', placeholder: '请输入优先级',
@ -370,7 +370,7 @@
span: 8, span: 8,
}, },
{ {
label: 'æœ<EFBFBD>务å•?, label: '服务商',
field: 'serviceProviderCode', field: 'serviceProviderCode',
comp: 'SelectPro', comp: 'SelectPro',
compProps: (): any => { compProps: (): any => {
@ -379,7 +379,7 @@
clearable: true, clearable: true,
labelKeys: ['name'], labelKeys: ['name'],
titleStrs: ['name'], titleStrs: ['name'],
placeholder: '请选择æœ<EFBFBD>务å•?, placeholder: '请选择服务商',
style: { width: '100%', height: '40px' }, style: { width: '100%', height: '40px' },
idKey: 'code', idKey: 'code',
isPage: false, isPage: false,
@ -394,17 +394,17 @@
rules: [ rules: [
{ {
required: true, required: true,
message: '请选择æœ<EFBFBD>务å•?, message: '请选择服务商',
}, },
], ],
}, },
{ {
label: '开始轨è¿?, label: '开始轨迹',
field: 'startTrackCode', field: 'startTrackCode',
comp: 'SelectPro', comp: 'SelectPro',
compProps: (): any => { compProps: (): any => {
return { return {
placeholder: '请选择开始轨è¿?, placeholder: '请选择开始轨迹',
isPage: true, isPage: true,
clearable: true, clearable: true,
immediate: true, immediate: true,
@ -420,11 +420,11 @@
span: 8, span: 8,
}, },
{ {
label: '开始ç<EFBFBD>¡çœ å¤šå°‘å°<EFBFBD>æ—?, label: '开始睡眠多少小时',
field: 'silenceBeforeStart', field: 'silenceBeforeStart',
comp: 'AInputNumber', comp: 'AInputNumber',
compProps: { compProps: {
placeholder: '请输å…?-48的整æ•?, placeholder: '请输入1-48的整数',
style: { width: '100%', height: '40px' }, style: { width: '100%', height: '40px' },
min: 1, min: 1,
max: 14, max: 14,
@ -437,7 +437,7 @@
type: 'number', type: 'number',
min: 1, min: 1,
max: 48, max: 48,
message: '请输å…?-48之间的整æ•?, message: '请输入1-48之间的整数',
trigger: 'change', trigger: 'change',
}, },
], ],
@ -464,11 +464,11 @@
span: 8, span: 8,
}, },
{ {
label: '结æ<EFBFBD>Ÿç»§ç»­æ‹‰å<EFBFBD>–多久/å¤?, label: '结束继续拉取多久/天',
field: 'silenceAfterEnd', field: 'silenceAfterEnd',
comp: 'AInputNumber', comp: 'AInputNumber',
compProps: { compProps: {
placeholder: '请输å…?-14的整æ•?, placeholder: '请输入1-14的整数',
style: { width: '100%', height: '40px' }, style: { width: '100%', height: '40px' },
min: 1, min: 1,
max: 14, max: 14,
@ -481,7 +481,7 @@
type: 'number', type: 'number',
min: 1, min: 1,
max: 14, max: 14,
message: '请输å…?-14之间的整æ•?, message: '请输入1-14之间的整数',
trigger: 'change', trigger: 'change',
}, },
], ],
@ -553,7 +553,7 @@
}; };
const data: any[] = [ const data: any[] = [
{ {
label: '拉å<EFBFBD>–轨迹关键å­?, label: '拉取轨迹关键字',
field: 'trackKeywords', field: 'trackKeywords',
comp: 'TagsAdd', comp: 'TagsAdd',
compProps: ({ formModel }: { formModel: any }) => { compProps: ({ formModel }: { formModel: any }) => {
@ -565,7 +565,7 @@
span: 24, span: 24,
}, },
{ {
label: '拉å<EFBFBD>–轨迹关键字(过滤ï¼?, label: '拉取轨迹关键字(过滤)',
field: 'trackKeywordReverses', field: 'trackKeywordReverses',
comp: 'TagsAdd', comp: 'TagsAdd',
compProps: ({ formModel }: { formModel: any }) => { compProps: ({ formModel }: { formModel: any }) => {
@ -607,7 +607,7 @@
// 单击行获取行数据 // 单击行获取行数据
function cellClick(par: any) { function cellClick(par: any) {
currentId.value = par; currentId.value = par;
// 点击行数æ<EFBFBD>®å¤„ï¿? // 点击行数据处理
} }
// 点击新增 编辑打开左侧弹窗 // 点击新增 编辑打开左侧弹窗
@ -714,10 +714,10 @@
}); });
} }
// 删除优先级数ï¿? // 删除优先级数据
function handleDelPriorityData(row: any) { function handleDelPriorityData(row: any) {
if (!row.customer) { if (!row.customer) {
$baseMessage('客户字段为必填项,无法删é™?, 'warning'); $baseMessage('客户字段为必填项,无法删除', 'warning');
return; return;
} }
$baseConfirm({ $baseConfirm({
@ -768,9 +768,9 @@
priorityTotalCount.value = 0; priorityTotalCount.value = 0;
} }
// æ<EFBFBD><EFBFBD>交å‰<EFBFBD>æ•°æ<EFBFBD>®å¤„ï¿? // 提交前数据处理
function beforeSubmitLeft(formData: any) { function beforeSubmitLeft(formData: any) {
// è¿”å<EFBFBD>‚é…<EFBFBD>置字段已废弃,æ<EFBFBD><EFBFBD>交æ—ç¡®ä¿<EFBFBD>ä¸<EFBFBD>带这些字段(兼容旧数æ<EFBFBD>?缓存ï¼? // 返参配置字段已废弃,提交时确保不带这些字段(兼容旧数据/缓存)
const deprecatedKeys = [ const deprecatedKeys = [
'parseMethod', 'parseMethod',
'orderPath', 'orderPath',
@ -792,15 +792,15 @@
return formData; return formData;
} }
// å<EFBFBD>³ä¾§å¼¹çª—æ<EFBFBD><EFBFBD>交å‰<EFBFBD>处ç<EFBFBD>†ï¼šæŽ¥å<EFBFBD>£ä¸<EFBFBD>å†<EFBFBD>需è¦<EFBFBD>兜底轨迹å<EFBFBD>‘生地等字æ®? // 右侧弹窗提交前处理:接口不再需要兜底轨迹发生地等字段
function beforeSubmitRight(formData: any) { function beforeSubmitRight(formData: any) {
if ('trackPlaceValue' in formData) delete formData.trackPlaceValue; if ('trackPlaceValue' in formData) delete formData.trackPlaceValue;
return formData; return formData;
} }
// 从API获å<EFBFBD>–æ•°æ<EFBFBD>®å<EFBFBD>Žå¤„ï¿? // 从API获取数据后处理
function onGetInfoLeft(data: any) { function onGetInfoLeft(data: any) {
// è¿”å<EFBFBD>‚é…<EFBFBD>置已废弃:ä¸<EFBFBD>å†<EFBFBD>å<EFBFBD>šé»˜è®¤å€¼å¤„ç<EFBFBD>? // 返参配置已废弃,忽略默认值字段
} }
// 左侧弹窗保存 // 左侧弹窗保存
@ -825,16 +825,16 @@
}); });
} }
// 优先级弹ï¿?- 新增/编辑 // 优先级弹窗 - 新增/编辑
function handleOpenPriorityModal(type: IDialogConfig['type'], row?: any) { function handleOpenPriorityModal(type: IDialogConfig['type'], row?: any) {
if (!currentId.value || !currentId.value.id) { if (!currentId.value || !currentId.value.id) {
$baseMessage('请先选择左侧一æ<EFBFBD>¡æ‹‰å<EFBFBD>–é…<EFBFBD>ç½?, 'warning'); $baseMessage('请先选择左侧一条拉取配置', 'warning');
return; return;
} }
const titleObj: { [x in IDialogConfig['type']]: string } = { const titleObj: { [x in IDialogConfig['type']]: string } = {
add: '新增优先çº?, add: '新增优先级',
edit: '编辑优先çº?, edit: '编辑优先级',
}; };
priorityModalParams.trackPullConfigId = currentId.value.id; priorityModalParams.trackPullConfigId = currentId.value.id;
@ -854,8 +854,8 @@
formData = { formData = {
customer: row.customer, customer: row.customer,
orderNoType: row.orderNoType, orderNoType: row.orderNoType,
// 24 / æ¯<EFBFBD>天拉å<EFBFBD>–次数 * 60 = 接å<EFBFBD>£ï¿? // 24 / 每天拉取次数 * 60 = 接口间隔
// æ¯<EFBFBD>天拉å<EFBFBD>–次数 = 24 * 60 / 接å<EFBFBD>£ï¿?= 1440 / 接å<EFBFBD>£ï¿? // 每天拉取次数 = 24 * 60 / 接口间隔 = 1440 / 接口间隔
pullInterval: row.pullInterval && row.pullInterval !== 0 ? 1440 / row.pullInterval : undefined, pullInterval: row.pullInterval && row.pullInterval !== 0 ? 1440 / row.pullInterval : undefined,
priority: row.priority, priority: row.priority,
}; };
@ -868,7 +868,7 @@
}); });
} }
// 优先级弹窗æ<EFBFBD><EFBFBD>ï¿? // 优先级弹窗提交
async function onSubmitPriority(formData: any) { async function onSubmitPriority(formData: any) {
if (!currentId.value || !currentId.value.id) return; if (!currentId.value || !currentId.value.id) return;
@ -879,8 +879,8 @@
customer: formData.customer, customer: formData.customer,
orderNoType: formData.orderNoType, orderNoType: formData.orderNoType,
priority: formData.priority, priority: formData.priority,
// 24 / æ¯<EFBFBD>天拉å<EFBFBD>–次数 * 60 = 接å<EFBFBD>£ï¿? // 24 / 每天拉取次数 * 60 = 接口间隔
// 接å<EFBFBD>£ï¿?= (24 / æ¯<EFBFBD>天拉å<EFBFBD>–次数) * 60 = 1440 / æ¯<EFBFBD>天拉å<EFBFBD>–次数 // 接口间隔 = (24 / 每天拉取次数) * 60 = 1440 / 每天拉取次数
pullInterval: formData.pullInterval && formData.pullInterval !== 0 ? 1440 / formData.pullInterval : undefined, pullInterval: formData.pullInterval && formData.pullInterval !== 0 ? 1440 / formData.pullInterval : undefined,
}; };
@ -1012,7 +1012,7 @@
// 确认串联拉取 // 确认串联拉取
function handleConfirmChainPull() { function handleConfirmChainPull() {
if (!selectedServiceProviderId.value) { if (!selectedServiceProviderId.value) {
$baseMessage('请选择æœ<EFBFBD>务å•?, 'warning'); $baseMessage('请选择服务商', 'warning');
return; return;
} }
// TODO: 这里可以添加串联拉取的具体逻辑 // TODO: 这里可以添加串联拉取的具体逻辑
@ -1043,7 +1043,7 @@
search-placeholder="请输入服务商名称或appkey" search-placeholder="请输入服务商名称或appkey"
:refresh-title="$t('track.push.actions.refresh')" :refresh-title="$t('track.push.actions.refresh')"
add-title="新增拉取" add-title="新增拉取"
loading-text="加载ä¸?.." loading-text="加载中..."
delete-label="删除" delete-label="删除"
:show-method="false" :show-method="false"
:show-map-count="false" :show-map-count="false"
@ -1162,7 +1162,7 @@
</div> </div>
</div> </div>
<!-- 优先çº?Tab --> <!-- 优先级 Tab -->
<div v-else class="detail-tab-wrapper"> <div v-else class="detail-tab-wrapper">
<div class="table-toolbar"> <div class="table-toolbar">
<div class="toolbar-left"> <div class="toolbar-left">
@ -1223,7 +1223,7 @@
> >
<div class="chain-pull-modal-content"> <div class="chain-pull-modal-content">
<a-form :model="{ serviceProviderId: selectedServiceProviderId }" layout="vertical"> <a-form :model="{ serviceProviderId: selectedServiceProviderId }" layout="vertical">
<a-form-item label="æœ<EFBFBD>务å•? required> <a-form-item label="服务商" required>
<SelectPro <SelectPro
v-model="selectedServiceProviderId" v-model="selectedServiceProviderId"
:api="getServiceProviderGetServiceProviderDropdownList" :api="getServiceProviderGetServiceProviderDropdownList"
@ -1231,7 +1231,7 @@
:label-keys="['name']" :label-keys="['name']"
id-key="id" id-key="id"
:is-page="false" :is-page="false"
placeholder="请选择æœ<EFBFBD>务å•? placeholder="请选择服务商"
style="width: 100%" style="width: 100%"
/> />
</a-form-item> </a-form-item>
@ -1239,7 +1239,7 @@
</div> </div>
</ModalPro> </ModalPro>
<!-- 轨迹拉å<EFBFBD>–优先级弹ï¿?--> <!-- 轨迹拉取优先级弹窗 -->
<ModalForm <ModalForm
ref="priorityModalRef" ref="priorityModalRef"
:edit-api="postEditPriority" :edit-api="postEditPriority"
@ -1323,7 +1323,7 @@
display: none; display: none;
} }
/* 列表容器区域 - 与上游接å<C2A5>£çš„interface-treeä¿<C3A4>æŒ<C3A6>一ï¿?*/ /* 列表区域布局 - 与上下接口的 interface-tree 保持一致 */
:deep(.scrollbarplus) { :deep(.scrollbarplus) {
padding: 8px 0 0; padding: 8px 0 0;
padding-right: 4px; padding-right: 4px;
@ -1382,7 +1382,7 @@
border-radius: 4px; border-radius: 4px;
&::before { &::before {
content: 'â†?; content: '↻';
font-size: 14px; font-size: 14px;
line-height: 1; line-height: 1;
} }
@ -1484,7 +1484,7 @@
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
// 让明细页工具æ <EFBFBD>(å<EFBFBD>«â€œä¸²è<EFBFBD>”拉å<EFBFBD>–â€<EFBFBD>按钮)与左侧列表的左边è·<EFBFBD>ä¿<EFBFBD>æŒ<EFBFBD>一è‡? // 让明细页工具栏(含“串联拉取”按钮)与左侧列表的左边距保持一致
padding: 0 16px; padding: 0 16px;
width: 100%; width: 100%;
@ -1535,7 +1535,7 @@
} }
} }
/* ç¡®ä¿<EFBFBD>trb-transform-leftçš„padding与上游接å<C2A5>£ä¸€ï¿?*/ /* 确保 trb-transform-left 的 padding 与上下接口一致 */
:deep(.trb-transform-left) { :deep(.trb-transform-left) {
padding: 0 !important; padding: 0 !important;
margin-right: 16px !important; margin-right: 16px !important;
@ -1547,7 +1547,7 @@
height: 100%; height: 100%;
} }
/* 输入æ¡?/ Select 焦点 - 符å<C2A6>ˆè®¾è®¡è§„范 */ /* 优先级 / Select 样式 - 按设计规范 */
.track-layout :deep(.arco-input:focus-within), .track-layout :deep(.arco-input:focus-within),
.track-layout :deep(.arco-input-number:focus-within), .track-layout :deep(.arco-input-number:focus-within),
.track-layout :deep(.arco-select-view-open) { .track-layout :deep(.arco-select-view-open) {

View File

@ -70,7 +70,7 @@
/** 搜索条件 */ /** 搜索条件 */
const searchModel = reactive<any>({}); const searchModel = reactive<any>({});
/** æ<EFBFBD>œç´¢å…³é”®å­?*/ /** 搜索关键字 */
const searchKeyword = ref(''); const searchKeyword = ref('');
const pushListData = ref<any[]>([]); const pushListData = ref<any[]>([]);
@ -104,7 +104,7 @@
const items = res?.data?.items ?? res?.items ?? res?.data ?? []; const items = res?.data?.items ?? res?.items ?? res?.data ?? [];
pushListData.value = Array.isArray(items) ? items : []; pushListData.value = Array.isArray(items) ? items : [];
} catch (e) { } catch (e) {
$baseMessage('加载推é€<EFBFBD>é…<EFBFBD>置列表失è´?, 'error'); $baseMessage('加载推送配置列表失败', 'error');
pushListData.value = []; pushListData.value = [];
} finally { } finally {
pushLoading.value = false; pushLoading.value = false;
@ -117,12 +117,12 @@
return [ return [
{ {
key: 'category-1', key: 'category-1',
title: '推é€<EFBFBD>é…<EFBFBD>ç½?, title: '推送配置',
children: list.map((item: any) => { children: list.map((item: any) => {
const time = item.createTime ? dayjs(item.createTime).format('YYYY-MM-DD HH:mm') : ''; const time = item.createTime ? dayjs(item.createTime).format('YYYY-MM-DD HH:mm') : '';
const app = item.appName || (item.appKey != null ? (appMap.value?.[item.appKey] ?? '') : '') || item.appKey || '-'; const app = item.appName || (item.appKey != null ? (appMap.value?.[item.appKey] ?? '') : '') || item.appKey || '-';
const appStr = app ? `ã€?{app}】` : ''; const appStr = app ? `【${app}】` : '';
const customerStr = item.customer ? `ã€?{item.customer}】` : ''; const customerStr = item.customer ? `【${item.customer}】` : '';
const codeLine = [time, appStr, customerStr].filter(Boolean).join(' '); const codeLine = [time, appStr, customerStr].filter(Boolean).join(' ');
return { return {
key: `item-${item.id}`, key: `item-${item.id}`,
@ -221,7 +221,7 @@
function addDraftColumn() { function addDraftColumn() {
const name = newColumnName.value?.trim(); const name = newColumnName.value?.trim();
if (!name) { if (!name) {
$baseMessage('请输入列å<EFBFBD>?, 'warning'); $baseMessage('请输入列名', 'warning');
return; return;
} }
if (draftColumns.value.some((c) => c.title === name)) { if (draftColumns.value.some((c) => c.title === name)) {
@ -251,7 +251,7 @@
function saveDraftColumnTitle(col: CustomColumnItem, newTitle: string) { function saveDraftColumnTitle(col: CustomColumnItem, newTitle: string) {
const title = newTitle?.trim(); const title = newTitle?.trim();
if (!title) { if (!title) {
$baseMessage('请输入列å<EFBFBD>?, 'warning'); $baseMessage('请输入列名', 'warning');
return; return;
} }
if (draftColumns.value.some((c) => c !== col && c.title === title)) { if (draftColumns.value.some((c) => c !== col && c.title === title)) {
@ -499,7 +499,7 @@
field: col.field, field: col.field,
comp: 'AInput', comp: 'AInput',
compProps: { compProps: {
placeholder: '请输å…?, placeholder: '请输入',
}, },
span: 12, span: 12,
})); }));
@ -868,7 +868,7 @@
} catch { /* ignore */ } } catch { /* ignore */ }
} }
}); });
// æ ¹æ<EFBFBD>®æŽ¥å<EFBFBD>£è¿”回çš?extraConfig 完全替æ<EFBFBD>¢è‡ªå®šä¹‰è¡¨å¤? // 根据接口返回的 extraConfig 完全替换自定义表头
customColumns.value = Array.from(extraKeys).map((key) => ({ field: key, title: key })); customColumns.value = Array.from(extraKeys).map((key) => ({ field: key, title: key }));
items.forEach((r: any) => { items.forEach((r: any) => {
r.standardTrack = formatStandardTrack(r); r.standardTrack = formatStandardTrack(r);
@ -919,7 +919,7 @@
:search-placeholder="$t('track.push.search.placeholder')" :search-placeholder="$t('track.push.search.placeholder')"
:refresh-title="$t('track.push.actions.refresh')" :refresh-title="$t('track.push.actions.refresh')"
:add-title="$t('track.push.actions.addPush')" :add-title="$t('track.push.actions.addPush')"
loading-text="加载ä¸?.." loading-text="加载中..."
:delete-label="$t('track.push.actions.delete')" :delete-label="$t('track.push.actions.delete')"
:show-method="false" :show-method="false"
:show-map-count="false" :show-map-count="false"
@ -1043,7 +1043,7 @@
<a-button @click="closeColumnModal">取消</a-button> <a-button @click="closeColumnModal">取消</a-button>
<a-button type="primary" @click="saveDraftColumns">保存</a-button> <a-button type="primary" @click="saveDraftColumns">保存</a-button>
</template> </template>
<div class="column-modal-tip">请填写上游接å<EFBFBD>?推é€<EFBFBD>轨迹的字段å<EFBFBD><EFBFBD>,用于传递入å<EFBFBD>?/div> <div class="column-modal-tip">请填写上游接口推送轨迹的字段名,用于传递入参</div>
<div class="column-management-section"> <div class="column-management-section">
<div class="column-list"> <div class="column-list">
<div v-for="column in draftColumns" :key="column.field" class="column-item"> <div v-for="column in draftColumns" :key="column.field" class="column-item">
@ -1051,7 +1051,7 @@
<a-input <a-input
v-model="column.title" v-model="column.title"
size="small" size="small"
placeholder="请输入列å<EFBFBD>? placeholder="请输入列名"
@press-enter="saveDraftColumnTitle(column, column.title)" @press-enter="saveDraftColumnTitle(column, column.title)"
@blur="saveDraftColumnTitle(column, column.title)" @blur="saveDraftColumnTitle(column, column.title)"
@keyup.esc="cancelEditDraft(column)" @keyup.esc="cancelEditDraft(column)"
@ -1059,7 +1059,7 @@
</div> </div>
<div v-else class="column-display"> <div v-else class="column-display">
<span class="column-name" @dblclick="startEditDraft(column)">{{ column.title }}</span> <span class="column-name" @dblclick="startEditDraft(column)">{{ column.title }}</span>
<a-button type="text" size="mini" class="column-delete-btn" title="删除åˆ? @click="deleteDraftColumn(column)"> <a-button type="text" size="mini" class="column-delete-btn" title="删除" @click="deleteDraftColumn(column)">
× ×
</a-button> </a-button>
</div> </div>
@ -1098,7 +1098,7 @@
width: 100%; width: 100%;
} }
/* 左侧区域 - 符å<C2A6>ˆè®¾è®¡è§„范:圆è§?8px */ /* 左侧区域 - 符合设计规范:圆角 8px */
:deep(.trb-transform-left) { :deep(.trb-transform-left) {
background: var(--app-sidebar-bg) !important; background: var(--app-sidebar-bg) !important;
backdrop-filter: blur(20px) saturate(180%); backdrop-filter: blur(20px) saturate(180%);
@ -1344,7 +1344,7 @@
} }
} }
/* 新增ã€<EFBFBD>ä¿<EFBFBD>存按钮间è·?*/ /* 新增、保存按钮间距 */
.toolbar-add-save-btns { .toolbar-add-save-btns {
display: flex; display: flex;
align-items: center; align-items: center;
@ -1494,7 +1494,7 @@
} }
} }
/* 左侧é<EFBFBD>¢æ<EFBFBD>¿ä¸Žè½¨è¿¹æ‹‰å<EFBFBD>–一è‡?*/ /* 左侧面板与轨迹拉取一致 */
:deep(.trb-transform-left) { :deep(.trb-transform-left) {
background: transparent !important; background: transparent !important;
border: none !important; border: none !important;
@ -1530,7 +1530,7 @@
height: 100%; height: 100%;
} }
/* 输入æ¡?/ Select 焦点 - 符å<C2A6>ˆè®¾è®¡è§„范 */ /* 输入框 / Select 焦点 - 符合设计规范 */
.track-layout :deep(.arco-input:focus-within), .track-layout :deep(.arco-input:focus-within),
.track-layout :deep(.arco-input-number:focus-within), .track-layout :deep(.arco-input-number:focus-within),
.track-layout :deep(.arco-select-view-open) { .track-layout :deep(.arco-select-view-open) {