v1.2.1 - SonarQube scanning issues fixed.
This commit is contained in:
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [1.2.1] - 2025-07-22
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- SonarQube代码质量检查问题修改
|
||||||
|
|
||||||
## [1.2.0] - 2025-07-21
|
## [1.2.0] - 2025-07-21
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
+10
-10
@@ -118,14 +118,14 @@ const handleMilestoneDelete = async (milestoneId: number) => {
|
|||||||
window.dispatchEvent(
|
window.dispatchEvent(
|
||||||
new CustomEvent('milestone-deleted', {
|
new CustomEvent('milestone-deleted', {
|
||||||
detail: { milestoneId },
|
detail: { milestoneId },
|
||||||
}),
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
// 触发强制更新事件,确保Timeline重新渲染
|
// 触发强制更新事件,确保Timeline重新渲染
|
||||||
window.dispatchEvent(
|
window.dispatchEvent(
|
||||||
new CustomEvent('milestone-data-changed', {
|
new CustomEvent('milestone-data-changed', {
|
||||||
detail: { milestones: milestones.value },
|
detail: { milestones: milestones.value },
|
||||||
}),
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,7 +219,7 @@ const handleTaskUpdate = (updatedTask: Task) => {
|
|||||||
showMessage(
|
showMessage(
|
||||||
formatTranslation('newParentTaskNotFound', { parentId: taskToAdd.parentId }),
|
formatTranslation('newParentTaskNotFound', { parentId: taskToAdd.parentId }),
|
||||||
'warning',
|
'warning',
|
||||||
{ closable: true },
|
{ closable: true }
|
||||||
)
|
)
|
||||||
tasks.value.push(taskToAdd)
|
tasks.value.push(taskToAdd)
|
||||||
}
|
}
|
||||||
@@ -267,7 +267,7 @@ const handleTaskAdd = (newTask: Task) => {
|
|||||||
const maxId = Math.max(
|
const maxId = Math.max(
|
||||||
...tasks.value.map(t => t.id || 0),
|
...tasks.value.map(t => t.id || 0),
|
||||||
...milestones.value.map(m => m.id || 0),
|
...milestones.value.map(m => m.id || 0),
|
||||||
0,
|
0
|
||||||
)
|
)
|
||||||
newTask.id = maxId + 1
|
newTask.id = maxId + 1
|
||||||
}
|
}
|
||||||
@@ -362,7 +362,7 @@ const handleStoryDeleteWithChildren = (storyToDelete: Task) => {
|
|||||||
'success',
|
'success',
|
||||||
{
|
{
|
||||||
closable: false,
|
closable: false,
|
||||||
},
|
}
|
||||||
)
|
)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@@ -424,7 +424,7 @@ const handleStoryDeleteOnly = (storyToDelete: Task) => {
|
|||||||
'success',
|
'success',
|
||||||
{
|
{
|
||||||
closable: false,
|
closable: false,
|
||||||
},
|
}
|
||||||
)
|
)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@@ -498,7 +498,7 @@ function handleTaskbarDragOrResizeEnd(newTask) {
|
|||||||
`开始: ${oldTask.startDate} → ${newTask.startDate}\n` +
|
`开始: ${oldTask.startDate} → ${newTask.startDate}\n` +
|
||||||
`结束: ${oldTask.endDate} → ${newTask.endDate}`,
|
`结束: ${oldTask.endDate} → ${newTask.endDate}`,
|
||||||
'info',
|
'info',
|
||||||
{ closable: true },
|
{ closable: true }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
function handleMilestoneDragEnd(newMilestone) {
|
function handleMilestoneDragEnd(newMilestone) {
|
||||||
@@ -508,7 +508,7 @@ function handleMilestoneDragEnd(newMilestone) {
|
|||||||
`里程碑【${newMilestone.name}】\n` +
|
`里程碑【${newMilestone.name}】\n` +
|
||||||
`开始: ${oldMilestone.endDate} → ${newMilestone.startDate}`,
|
`开始: ${oldMilestone.endDate} → ${newMilestone.startDate}`,
|
||||||
'info',
|
'info',
|
||||||
{ closable: true },
|
{ closable: true }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -573,9 +573,9 @@ const collectAllTaskIds = (task: Task): number[] => {
|
|||||||
// Timer事件处理
|
// Timer事件处理
|
||||||
function onTimerStarted(task: Task) {
|
function onTimerStarted(task: Task) {
|
||||||
showMessage(
|
showMessage(
|
||||||
`Demo 任务【${task.name}】\n开始计时:${new Date(task.timerStartTime).toLocaleString()}${task.timerStartDesc ? `\n计时说明:${task.timerStartDesc}` : ''}`,
|
`Demo 任务【${task.name}】\n开始计时:${new Date(task.timerStartTime).toLocaleString()}\n计时说明:${task.timerStartDesc ? task.timerStartDesc : ''}`,
|
||||||
'info',
|
'info',
|
||||||
{ closable: true },
|
{ closable: true }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
function onTimerStopped(task: Task) {
|
function onTimerStopped(task: Task) {
|
||||||
|
|||||||
@@ -157,5 +157,10 @@
|
|||||||
"GanttChart增加@task-updated(编辑任务完成)事件",
|
"GanttChart增加@task-updated(编辑任务完成)事件",
|
||||||
"升级TaskDrawer统一在GanttChart中管理"
|
"升级TaskDrawer统一在GanttChart中管理"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "1.2.1",
|
||||||
|
"date": "2025-07-22",
|
||||||
|
"notes": ["SonarQube代码质量检查问题修改"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "jordium-gantt-vue3",
|
"name": "jordium-gantt-vue3",
|
||||||
"version": "1.2.0",
|
"version": "1.2.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "dist/jordium-gantt-vue3.cjs.js",
|
"main": "dist/jordium-gantt-vue3.cjs.js",
|
||||||
"module": "dist/jordium-gantt-vue3.es.js",
|
"module": "dist/jordium-gantt-vue3.es.js",
|
||||||
|
|||||||
+10
-10
@@ -118,14 +118,14 @@ const handleMilestoneDelete = async (milestoneId: number) => {
|
|||||||
window.dispatchEvent(
|
window.dispatchEvent(
|
||||||
new CustomEvent('milestone-deleted', {
|
new CustomEvent('milestone-deleted', {
|
||||||
detail: { milestoneId },
|
detail: { milestoneId },
|
||||||
}),
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
// 触发强制更新事件,确保Timeline重新渲染
|
// 触发强制更新事件,确保Timeline重新渲染
|
||||||
window.dispatchEvent(
|
window.dispatchEvent(
|
||||||
new CustomEvent('milestone-data-changed', {
|
new CustomEvent('milestone-data-changed', {
|
||||||
detail: { milestones: milestones.value },
|
detail: { milestones: milestones.value },
|
||||||
}),
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,7 +219,7 @@ const handleTaskUpdate = (updatedTask: Task) => {
|
|||||||
showMessage(
|
showMessage(
|
||||||
formatTranslation('newParentTaskNotFound', { parentId: taskToAdd.parentId }),
|
formatTranslation('newParentTaskNotFound', { parentId: taskToAdd.parentId }),
|
||||||
'warning',
|
'warning',
|
||||||
{ closable: true },
|
{ closable: true }
|
||||||
)
|
)
|
||||||
tasks.value.push(taskToAdd)
|
tasks.value.push(taskToAdd)
|
||||||
}
|
}
|
||||||
@@ -267,7 +267,7 @@ const handleTaskAdd = (newTask: Task) => {
|
|||||||
const maxId = Math.max(
|
const maxId = Math.max(
|
||||||
...tasks.value.map(t => t.id || 0),
|
...tasks.value.map(t => t.id || 0),
|
||||||
...milestones.value.map(m => m.id || 0),
|
...milestones.value.map(m => m.id || 0),
|
||||||
0,
|
0
|
||||||
)
|
)
|
||||||
newTask.id = maxId + 1
|
newTask.id = maxId + 1
|
||||||
}
|
}
|
||||||
@@ -362,7 +362,7 @@ const handleStoryDeleteWithChildren = (storyToDelete: Task) => {
|
|||||||
'success',
|
'success',
|
||||||
{
|
{
|
||||||
closable: false,
|
closable: false,
|
||||||
},
|
}
|
||||||
)
|
)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@@ -424,7 +424,7 @@ const handleStoryDeleteOnly = (storyToDelete: Task) => {
|
|||||||
'success',
|
'success',
|
||||||
{
|
{
|
||||||
closable: false,
|
closable: false,
|
||||||
},
|
}
|
||||||
)
|
)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@@ -498,7 +498,7 @@ function handleTaskbarDragOrResizeEnd(newTask) {
|
|||||||
`开始: ${oldTask.startDate} → ${newTask.startDate}\n` +
|
`开始: ${oldTask.startDate} → ${newTask.startDate}\n` +
|
||||||
`结束: ${oldTask.endDate} → ${newTask.endDate}`,
|
`结束: ${oldTask.endDate} → ${newTask.endDate}`,
|
||||||
'info',
|
'info',
|
||||||
{ closable: true },
|
{ closable: true }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
function handleMilestoneDragEnd(newMilestone) {
|
function handleMilestoneDragEnd(newMilestone) {
|
||||||
@@ -508,7 +508,7 @@ function handleMilestoneDragEnd(newMilestone) {
|
|||||||
`里程碑【${newMilestone.name}】\n` +
|
`里程碑【${newMilestone.name}】\n` +
|
||||||
`开始: ${oldMilestone.endDate} → ${newMilestone.startDate}`,
|
`开始: ${oldMilestone.endDate} → ${newMilestone.startDate}`,
|
||||||
'info',
|
'info',
|
||||||
{ closable: true },
|
{ closable: true }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -573,9 +573,9 @@ const collectAllTaskIds = (task: Task): number[] => {
|
|||||||
// Timer事件处理
|
// Timer事件处理
|
||||||
function onTimerStarted(task: Task) {
|
function onTimerStarted(task: Task) {
|
||||||
showMessage(
|
showMessage(
|
||||||
`Demo 任务【${task.name}】\n开始计时:${new Date(task.timerStartTime).toLocaleString()}${task.timerStartDesc ? `\n计时说明:${task.timerStartDesc}` : ''}`,
|
`Demo 任务【${task.name}】\n开始计时:${new Date(task.timerStartTime).toLocaleString()}\n计时说明:${task.timerStartDesc ? task.timerStartDesc : ''}`,
|
||||||
'info',
|
'info',
|
||||||
{ closable: true },
|
{ closable: true }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
function onTimerStopped(task: Task) {
|
function onTimerStopped(task: Task) {
|
||||||
|
|||||||
@@ -157,5 +157,10 @@
|
|||||||
"GanttChart增加@task-updated(编辑任务完成)事件",
|
"GanttChart增加@task-updated(编辑任务完成)事件",
|
||||||
"升级TaskDrawer统一在GanttChart中管理"
|
"升级TaskDrawer统一在GanttChart中管理"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "1.2.1",
|
||||||
|
"date": "2025-07-22",
|
||||||
|
"notes": ["SonarQube代码质量检查问题修改"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ const availableTasks = computed(() => {
|
|||||||
task =>
|
task =>
|
||||||
task.type === 'task' &&
|
task.type === 'task' &&
|
||||||
task.id !== props.currentTaskId &&
|
task.id !== props.currentTaskId &&
|
||||||
!selectedPredecessorIds.value.includes(task.id),
|
!selectedPredecessorIds.value.includes(task.id)
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -69,13 +69,13 @@ watch(
|
|||||||
() => {
|
() => {
|
||||||
selectedValue.value = ''
|
selectedValue.value = ''
|
||||||
},
|
},
|
||||||
{ immediate: true },
|
{ immediate: true }
|
||||||
)
|
)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="multi-select-predecessor">
|
<div class="multi-select-predecessor">
|
||||||
<label class="form-label">{{ label }}</label>
|
<label class="form-label" for="predecessor-select">{{ label }}</label>
|
||||||
<div class="predecessor-selector">
|
<div class="predecessor-selector">
|
||||||
<!-- 已选择的前置任务标签 -->
|
<!-- 已选择的前置任务标签 -->
|
||||||
<div v-if="selectedPredecessors.length > 0" class="selected-tags">
|
<div v-if="selectedPredecessors.length > 0" class="selected-tags">
|
||||||
@@ -89,7 +89,12 @@ watch(
|
|||||||
|
|
||||||
<!-- 下拉选择器 -->
|
<!-- 下拉选择器 -->
|
||||||
<div class="select-wrapper">
|
<div class="select-wrapper">
|
||||||
<select v-model="selectedValue" class="form-select" @change="addPredecessor">
|
<select
|
||||||
|
id="predecessor-select"
|
||||||
|
v-model="selectedValue"
|
||||||
|
class="form-select"
|
||||||
|
@change="addPredecessor"
|
||||||
|
>
|
||||||
<option value="">{{ placeholder }}</option>
|
<option value="">{{ placeholder }}</option>
|
||||||
<option v-for="task in availableTasks" :key="task.id" :value="task.id">
|
<option v-for="task in availableTasks" :key="task.id" :value="task.id">
|
||||||
{{ task.name }} (ID: {{ task.id }})
|
{{ task.name }} (ID: {{ task.id }})
|
||||||
|
|||||||
@@ -1117,10 +1117,6 @@ function confirmTimer(desc: string) {
|
|||||||
background: var(--gantt-primary, #409eff);
|
background: var(--gantt-primary, #409eff);
|
||||||
}
|
}
|
||||||
|
|
||||||
.progress-slider::-moz-range-track {
|
|
||||||
background: var(--gantt-border-light, #e4e7ed);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 为更好的兼容性,添加一个伪元素来显示已完成部分 */
|
/* 为更好的兼容性,添加一个伪元素来显示已完成部分 */
|
||||||
.progress-slider::before {
|
.progress-slider::before {
|
||||||
content: '';
|
content: '';
|
||||||
|
|||||||
Reference in New Issue
Block a user