Merge branch 'main' of ssh://18.167.251.121:10002/aidlab/FiDA_Front

This commit is contained in:
2026-04-02 14:51:08 +08:00
4 changed files with 18 additions and 15 deletions

View File

@@ -101,12 +101,15 @@ export class AISelectboxToolManager {
}
createIndicatorObject() {
this.clearIndicatorObject()
var color = 'rgba(0, 255, 0, 0.5)'
if (this.toolManager.currentTool.value === OperationType.AISELECT_REMOVE) {
color = 'rgba(255, 0, 0, 0.5)'
}
const rect = new fabric.Rect({
left: this.startX,
top: this.startY,
width: 0,
height: 0,
fill: 'transparent',
fill: color,
stroke: '#000',
strokeWidth: 1,
evented: false,

View File

@@ -101,8 +101,6 @@ export class CanvasManager {
})
}
this.canvas = createCanvas(options.canvasRef.value, {
preserveObjectStacking: true,
enableRetinaScaling: true,
backgroundColor: '#fff',
})
if (image) {

View File

@@ -6,8 +6,9 @@ import { fabric } from "fabric-with-all";
export const createCanvas = (elementId, options = {}) => {
// Create the canvas instance
const canvas = new fabric.Canvas(elementId, {
enableRetinaScaling: true,
renderOnAddRemove: false,
controlsAboveOverlay: true,// 控制面板在图层之上
enableRetinaScaling: true,// 启用Retina缩放
renderOnAddRemove: false,// 不在添加或移除对象时重新渲染
preserveObjectStacking: true, // 保持对象堆叠顺序
// skipOffscreen: true, // 跳过离屏渲染
imageSmoothingEnabled: true, // 启用图像平滑 - 抗锯齿
@@ -26,7 +27,7 @@ export const createCanvas = (elementId, options = {}) => {
*/
export const createStaticCanvas = (elementId, options = {}) => {
const canvas = new fabric.StaticCanvas(elementId, {
enableRetinaScaling: true,
enableRetinaScaling: true,// 启用Retina缩放
imageSmoothingEnabled: true, // 启用图像平滑 - 抗锯齿
imageSmoothingQuality: "high", // 设置高质量图像平滑
skipOffscreen: false, // 不跳过离屏渲染

View File

@@ -5,7 +5,7 @@
v-for="(item, i) in data.imageProcessTasks"
:key="item.taskId"
:class="{'active': node.id == stateManager.activeNodeID.value && item.taskId == data.selectTaskId}"
@click="setSelectTaskId(item.taskId)"
@mousedown="setSelectTaskId(item.taskId)"
>
<div class="header" v-if="item.status == 'RETURNED'" v-show="showHeader && node.id == stateManager.activeNodeID.value && item.taskId == data.selectTaskId" @mousedown.stop>
<span class="icon">
@@ -36,10 +36,10 @@
</HighlightAdmin>
</div>
</div>
<div class="more" v-if="item.status == 'RETURNED'" @click="clickimageProcessTaskItem(item.taskId)" @mousedown.stop>
<div class="more" v-if="item.status == 'RETURNED'" @mousedown="clickimageProcessTaskItem(item.taskId)">
<svg-icon name="more" size="24" size-unit="px" color="#C9C9C9" />
</div>
<div class="menu" v-show="showMenu && item.taskId === clickTaskId" @mousedown.stop>
<div class="menu" v-show="showMenu && item.taskId === data.selectTaskId && node.id == stateManager.activeNodeID.value" @mousedown.stop>
<div
v-for="(v, i) in menus"
:key="i"
@@ -92,15 +92,16 @@
const showHeader = ref(true)
// const showHeader = ref(!!props.node?.data?.isHeader)
const showMenu = ref(false)
const clickTaskId = ref('')
const generateManager = inject('generateManager') as any
const stateManager = inject('stateManager') as any
const eventManager = inject('eventManager') as any
const clickimageProcessTaskItem = (taskId: string) => {
if(clickTaskId.value == taskId){
if(data.selectTaskId == taskId){
showMenu.value = !showMenu.value
}else{
showMenu.value = true
}
clickTaskId.value = taskId
data.selectTaskId = taskId
}
const data = reactive({
selectTaskId: props.data?.selectTaskId || '',
@@ -203,7 +204,6 @@
}
const hideMenu = () => {
showMenu.value = false
clickTaskId.value = ''
}
const depthCanvasClose = ()=>{
@@ -377,7 +377,8 @@
}
> .status{
width: 100%;
height: 140px;
// height: 140px;
height: 100%;
display: flex;
align-items: center;
justify-content: center;