diff --git a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/components/SegmentEditor.vue b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/components/SegmentEditor.vue index 0ccd0a6a..71eded9b 100644 --- a/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/components/SegmentEditor.vue +++ b/nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/base/codegen/components/SegmentEditor.vue @@ -13,7 +13,6 @@ const emit = defineEmits<{ (e: 'update:modelValue', value: BaseCodeRuleApi.SegmentConfig[]): void; }>(); -/** 内部编辑的 segments 列表 */ const segments = ref([]); watch( @@ -24,57 +23,47 @@ watch( { immediate: true }, ); -/** 触发更新 */ function emitUpdate() { emit('update:modelValue', [...segments.value]); } -/** 段类型选项 */ const typeOptions = [ { label: '固定前缀 (PREFIX)', value: 'PREFIX' }, { label: '日期 (DATE)', value: 'DATE' }, { label: '流水序号 (SEQUENCE)', value: 'SEQUENCE' }, ]; -/** 重置维度选项 */ const resetByOptions = [ - { label: '按天重置', value: 'DAY' }, - { label: '按月重置', value: 'MONTH' }, - { label: '按年重置', value: 'YEAR' }, - { label: '全局不重置', value: 'GLOBAL' }, + { label: '按天', value: 'DAY' }, + { label: '按月', value: 'MONTH' }, + { label: '按年', value: 'YEAR' }, + { label: '全局', value: 'GLOBAL' }, ]; -/** 正在编辑的段索引(-1 表示新增) */ +/** 是否显示编辑器面板 */ +const showEditor = ref(false); +/** 编辑中的段索引(-1 = 新增) */ const editingIndex = ref(-1); /** 编辑中的段类型 */ -const editingType = ref(''); -/** 编辑中的配置数据 */ +const editingType = ref(''); +/** 编辑中的数据 */ const editingData = ref>({}); -/** 当前正在编辑的是新增还是修改 */ const isNewSegment = computed(() => editingIndex.value === -1); -/** 开始新增段 */ +/** 点击"添加分段"按钮 */ function handleAdd() { editingIndex.value = -1; editingType.value = ''; editingData.value = {}; + showEditor.value = true; } -/** 选择段类型后进入配置 */ +/** 选择段类型 */ function handleSelectType(type: string) { editingType.value = type; - editingData.value = { type }; - // 设置默认值 if (type === 'SEQUENCE') { - editingData.value = { - type, - resetBy: 'DAY', - startAt: 1, - paddingLen: 4, - paddingChar: '0', - maxValue: 9999, - }; + editingData.value = { type, resetBy: 'DAY', startAt: 1, paddingLen: 4, paddingChar: '0', maxValue: 9999 }; } else if (type === 'DATE') { editingData.value = { type, format: 'yyyyMMdd' }; } else { @@ -85,8 +74,10 @@ function handleSelectType(type: string) { /** 编辑已有段 */ function handleEdit(index: number) { editingIndex.value = index; - editingData.value = { ...segments.value[index] }; - editingType.value = segments.value[index].type || ''; + const seg = segments.value[index]; + editingType.value = seg.type || ''; + editingData.value = { ...seg }; + showEditor.value = true; } /** 确认编辑 */ @@ -95,17 +86,13 @@ function handleConfirmEdit() { message.warning('请选择段类型'); return; } - if (editingType.value === 'PREFIX' && !editingData.value.value) { - message.warning('请输入前缀值'); - return; - } + const seg = { ...editingData.value, type: editingType.value } as BaseCodeRuleApi.SegmentConfig; if (isNewSegment.value) { - segments.value.push({ ...editingData.value } as BaseCodeRuleApi.SegmentConfig); + segments.value.push(seg); } else { - segments.value[editingIndex.value] = { - ...editingData.value, - } as BaseCodeRuleApi.SegmentConfig; + segments.value[editingIndex.value] = seg; } + showEditor.value = false; editingIndex.value = -1; editingType.value = ''; editingData.value = {}; @@ -114,49 +101,38 @@ function handleConfirmEdit() { /** 取消编辑 */ function handleCancelEdit() { + showEditor.value = false; editingIndex.value = -1; editingType.value = ''; editingData.value = {}; } -/** 删除段 */ +/** 删除 */ function handleDelete(index: number) { segments.value.splice(index, 1); - if (editingIndex.value === index) { - handleCancelEdit(); - } emitUpdate(); } /** 上移 */ function handleMoveUp(index: number) { if (index <= 0) return; - const item = segments.value[index]; - segments.value[index] = segments.value[index - 1]; - segments.value[index - 1] = item; + [segments.value[index], segments.value[index - 1]] = [segments.value[index - 1], segments.value[index]]; emitUpdate(); } /** 下移 */ function handleMoveDown(index: number) { if (index >= segments.value.length - 1) return; - const item = segments.value[index]; - segments.value[index] = segments.value[index + 1]; - segments.value[index + 1] = item; + [segments.value[index], segments.value[index + 1]] = [segments.value[index + 1], segments.value[index]]; emitUpdate(); } -/** 获取段的描述文本 */ function getSegmentSummary(seg: BaseCodeRuleApi.SegmentConfig): string { switch (seg.type) { - case 'PREFIX': - return `固定值: ${seg.value || '-'}`; - case 'DATE': - return `格式: ${seg.format || 'yyyyMMdd'}`; - case 'SEQUENCE': - return `${seg.resetBy || 'DAY'}重置 | ${seg.startAt || 1}起 | ${seg.paddingLen || 4}位补${seg.paddingChar || '0'} | 上限${seg.maxValue || 9999}`; - default: - return JSON.stringify(seg); + case 'PREFIX': return `固定值: ${seg.value || '-'}`; + case 'DATE': return `格式: ${seg.format || 'yyyyMMdd'}`; + case 'SEQUENCE': return `${seg.resetBy || 'DAY'} | 起${seg.startAt || 1} | ${seg.paddingLen || 4}位补"${seg.paddingChar || '0'}" | 上限${seg.maxValue || 9999}`; + default: return JSON.stringify(seg); } } @@ -168,34 +144,22 @@ function getSegmentSummary(seg: BaseCodeRuleApi.SegmentConfig): string {
- {{ seg.type }} - - - {{ getSegmentSummary(seg) }} - + >{{ seg.type }} + {{ getSegmentSummary(seg) }}
- - ↑ - - - ↓ - + + 编辑 删除
@@ -203,41 +167,41 @@ function getSegmentSummary(seg: BaseCodeRuleApi.SegmentConfig): string {
-
+
-
- 选择段类型: - - {{ opt.label }} - -
+ -
+