Browse Source
- 新增 BulkCopy 组件用于批量复制操作 - 在 Model2DEditor 中集成批量复制功能 - 实现了行数、列数、行间距、列间距等配置选项 - 添加了批量复制的逻辑,包括复制对象的坐标计算master
3 changed files with 251 additions and 73 deletions
@ -0,0 +1,127 @@ |
|||||
|
<script setup lang="ts"> |
||||
|
import { reactive } from "vue"; |
||||
|
import DataForm from "@/components/data-form/DataForm.vue"; |
||||
|
import type { FormField } from "@/components/data-form/DataFormTypes.ts"; |
||||
|
|
||||
|
defineOptions({ |
||||
|
name: 'BulkCopy', |
||||
|
}); |
||||
|
|
||||
|
interface BulkCopyConfig { |
||||
|
/** 行数 */ |
||||
|
numberOfRows?: number; |
||||
|
/** 列数 */ |
||||
|
numberOfColumns?: number; |
||||
|
/** 行间距 */ |
||||
|
rowSpace?: number; |
||||
|
/** 列间距 */ |
||||
|
columnSpacing?: number; |
||||
|
/** 双排 */ |
||||
|
doubleRow?: boolean; |
||||
|
} |
||||
|
|
||||
|
// 定义 Props 类型 |
||||
|
interface BulkCopyProps { |
||||
|
config: BulkCopyConfig; |
||||
|
} |
||||
|
|
||||
|
// 读取组件 props 属性 |
||||
|
const props = withDefaults(defineProps<BulkCopyProps>(), {}); |
||||
|
|
||||
|
// 定义 State 类型 |
||||
|
interface BulkCopyState { |
||||
|
} |
||||
|
|
||||
|
// state 属性 |
||||
|
const state = reactive<BulkCopyState>({}); |
||||
|
|
||||
|
// 定义 Data 类型 |
||||
|
interface BulkCopyData { |
||||
|
formFields?: Array<FormField>; |
||||
|
} |
||||
|
|
||||
|
// 内部数据 |
||||
|
const data: BulkCopyData = { |
||||
|
formFields: [ |
||||
|
{ |
||||
|
dataPath: 'numberOfRows', label: '行数', input: 'InputNumber', |
||||
|
inputProps: { |
||||
|
placeholder: '请输入', |
||||
|
controlsPosition: 'right', |
||||
|
min: 1, |
||||
|
precision: 0, |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
dataPath: 'numberOfColumns', label: '列数', input: 'InputNumber', |
||||
|
inputProps: { |
||||
|
placeholder: '请输入', |
||||
|
controlsPosition: 'right', |
||||
|
min: 1, |
||||
|
precision: 0, |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
dataPath: 'rowSpace', label: '行间距', input: 'InputNumber', |
||||
|
inputProps: { |
||||
|
placeholder: '请输入', |
||||
|
controlsPosition: 'right', |
||||
|
min: 0, |
||||
|
// precision: |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
dataPath: 'columnSpacing', label: '列间距', input: 'InputNumber', |
||||
|
inputProps: { |
||||
|
placeholder: '请输入', |
||||
|
controlsPosition: 'right', |
||||
|
min: 0, |
||||
|
// precision: |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
dataPath: 'doubleRow', label: '单双排', input: 'Switch', |
||||
|
inputProps: { |
||||
|
// trueValue: true, |
||||
|
// falseValue: false, |
||||
|
inlinePrompt: true, |
||||
|
inactiveText: "单排", |
||||
|
activeText: "双排", |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
}; |
||||
|
|
||||
|
interface BulkCopyExpose { |
||||
|
state: BulkCopyState; |
||||
|
data: BulkCopyData; |
||||
|
} |
||||
|
|
||||
|
const expose: BulkCopyExpose = { |
||||
|
state, |
||||
|
data, |
||||
|
}; |
||||
|
// 定义组件公开内容 |
||||
|
defineExpose(expose); |
||||
|
|
||||
|
export type { |
||||
|
BulkCopyConfig, |
||||
|
BulkCopyProps, |
||||
|
BulkCopyState, |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<template> |
||||
|
<DataForm |
||||
|
:data="props.config" |
||||
|
:formFields="data.formFields" |
||||
|
:columnCount="2" |
||||
|
layout="onlyLabelFixed" |
||||
|
labelWidth="80px" |
||||
|
inputWidth="" |
||||
|
/> |
||||
|
</template> |
||||
|
|
||||
|
<style scoped> |
||||
|
|
||||
|
</style> |
||||
Loading…
Reference in new issue