collabdocchat 2.0.5 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { AuthService } from '../services/auth.js';
1
+ import { AuthService } from '../services/auth.js';
2
2
 
3
3
  export function renderLoginPage(onSuccess) {
4
4
  const app = document.getElementById('app');
@@ -9,18 +9,18 @@ export function renderLoginPage(onSuccess) {
9
9
  <div class="login-card">
10
10
  <div class="login-header">
11
11
  <h1 class="logo">CollabDocChat</h1>
12
- <p class="tagline">实时协作 · 智能沟�?/p>
12
+ <p class="tagline">实时协作 · 智能沟�?/p>
13
13
  </div>
14
14
 
15
15
  <div id="loginSection">
16
16
  <form id="loginForm" class="auth-form">
17
17
  <div class="form-group">
18
- <label>用户�?/label>
18
+ <label>用户�?/label>
19
19
  <input type="text" name="username" required placeholder="请输入用户名">
20
20
  </div>
21
21
  <div class="form-group">
22
22
  <label>密码</label>
23
- <input type="password" name="password" required placeholder="•••••••�?>
23
+ <input type="password" name="password" required placeholder="•••••••�?>
24
24
  </div>
25
25
  <button type="submit" class="btn-primary">登录</button>
26
26
  <div class="error-message" id="loginError"></div>
@@ -34,22 +34,22 @@ export function renderLoginPage(onSuccess) {
34
34
  <div id="registerSection" class="hidden">
35
35
  <form id="registerForm" class="auth-form">
36
36
  <div class="form-group">
37
- <label>用户�?/label>
37
+ <label>用户�?/label>
38
38
  <input type="text" name="username" required placeholder="请输入用户名">
39
39
  </div>
40
40
  <div class="form-group">
41
41
  <label>密码</label>
42
- <input type="password" name="password" required placeholder="•••••••�?>
42
+ <input type="password" name="password" required placeholder="•••••••�?>
43
43
  </div>
44
44
  <div class="register-note">
45
- <p>注册后将自动分配为普通用�?/p>
45
+ <p>注册后将自动分配为普通用�?/p>
46
46
  </div>
47
47
  <button type="submit" class="btn-primary">注册</button>
48
48
  <div class="error-message" id="registerError"></div>
49
49
  </form>
50
50
 
51
51
  <div class="auth-switch">
52
- <p class="switch-text">已有账号�?button class="link-btn" id="showLogin">返回登录</button></p>
52
+ <p class="switch-text">已有账号�?button class="link-btn" id="showLogin">返回登录</button></p>
53
53
  </div>
54
54
  </div>
55
55
  </div>
@@ -99,3 +99,4 @@ export function renderLoginPage(onSuccess) {
99
99
  }
100
100
 
101
101
 
102
+
@@ -1,4 +1,4 @@
1
- // 优化后的备份管理界面
1
+ // 优化后的备份管理界面
2
2
  // 使用卡片式布局,提升视觉效果和用户体验
3
3
 
4
4
  async function renderOptimizedBackupView(container) {
@@ -611,3 +611,4 @@ function setupBackupEvents(token, container) {
611
611
 
612
612
  // 导出函数供其他模块使�?export { renderOptimizedBackupView };
613
613
 
614
+
@@ -1,4 +1,4 @@
1
- /**
1
+ /**
2
2
  * 美化后的知识库视�? * 现代化卡片布局,增强视觉效�? */
3
3
 
4
4
  import { showCreateKnowledgeModal, showEditKnowledgeModal } from '../components/knowledge-modal.js';
@@ -794,3 +794,4 @@ function addKnowledgeViewStyles() {
794
794
 
795
795
 
796
796
 
797
+
@@ -1,4 +1,4 @@
1
- // 优化后的任务详情界面
1
+ // 优化后的任务详情界面
2
2
  // 使用卡片式布局,提升视觉效果和信息层次
3
3
 
4
4
  function renderOptimizedTaskDetail(task, container) {
@@ -18,7 +18,7 @@ function renderOptimizedTaskDetail(task, container) {
18
18
  </div>
19
19
  </div>
20
20
  <button class="btn-close-modern" id="closeTaskDetail">
21
- <span>�?/span>
21
+ <span>�?/span>
22
22
  </button>
23
23
  </div>
24
24
 
@@ -32,20 +32,20 @@ function renderOptimizedTaskDetail(task, container) {
32
32
  <div class="info-label-modern">
33
33
  <span class="label-icon">👤</span> 任务组长
34
34
  </div>
35
- <div class="info-value-modern">${task.assignedTo || '未分�?}</div>
35
+ <div class="info-value-modern">${task.assignedTo || '未分�?}</div>
36
36
  </div>
37
37
 
38
38
  <div class="info-item-modern">
39
39
  <div class="info-label-modern">
40
- <span class="label-icon">👥</span> 所属群�? </div>
41
- <div class="info-value-modern">${task.group || '未指�?}</div>
40
+ <span class="label-icon">👥</span> 所属群�? </div>
41
+ <div class="info-value-modern">${task.group || '未指�?}</div>
42
42
  </div>
43
43
 
44
44
  <div class="info-item-modern">
45
45
  <div class="info-label-modern">
46
46
  <span class="label-icon">📅</span> 截止日期
47
47
  </div>
48
- <div class="info-value-modern">${task.deadline ? new Date(task.deadline).toLocaleString() : '�?}</div>
48
+ <div class="info-value-modern">${task.deadline ? new Date(task.deadline).toLocaleString() : '�?}</div>
49
49
  </div>
50
50
 
51
51
  <div class="info-item-modern">
@@ -75,23 +75,23 @@ function renderOptimizedTaskDetail(task, container) {
75
75
  <div class="stat-item-modern stat-total">
76
76
  <div class="stat-icon-modern">👥</div>
77
77
  <div class="stat-content-modern">
78
- <div class="stat-label-modern">总人�?/div>
78
+ <div class="stat-label-modern">总人�?/div>
79
79
  <div class="stat-value-modern">${task.members?.length || 0}</div>
80
80
  </div>
81
81
  </div>
82
82
 
83
83
  <div class="stat-item-modern stat-completed">
84
- <div class="stat-icon-modern">�?/div>
84
+ <div class="stat-icon-modern">�?/div>
85
85
  <div class="stat-content-modern">
86
- <div class="stat-label-modern">已完�?/div>
86
+ <div class="stat-label-modern">已完�?/div>
87
87
  <div class="stat-value-modern">${task.completedCount || 0}</div>
88
88
  </div>
89
89
  </div>
90
90
 
91
91
  <div class="stat-item-modern stat-pending">
92
- <div class="stat-icon-modern">�?/div>
92
+ <div class="stat-icon-modern">�?/div>
93
93
  <div class="stat-content-modern">
94
- <div class="stat-label-modern">未完�?/div>
94
+ <div class="stat-label-modern">未完�?/div>
95
95
  <div class="stat-value-modern">${(task.members?.length || 0) - (task.completedCount || 0)}</div>
96
96
  </div>
97
97
  </div>
@@ -99,13 +99,13 @@ function renderOptimizedTaskDetail(task, container) {
99
99
  <div class="stat-item-modern stat-progress">
100
100
  <div class="stat-icon-modern">📈</div>
101
101
  <div class="stat-content-modern">
102
- <div class="stat-label-modern">完成�?/div>
102
+ <div class="stat-label-modern">完成�?/div>
103
103
  <div class="stat-value-modern">${calculateProgress(task)}%</div>
104
104
  </div>
105
105
  </div>
106
106
  </div>
107
107
 
108
- <!-- 进度�?-->
108
+ <!-- 进度�?-->
109
109
  <div class="progress-bar-container-modern">
110
110
  <div class="progress-bar-modern">
111
111
  <div class="progress-fill-modern" style="width: ${calculateProgress(task)}%">
@@ -115,7 +115,7 @@ function renderOptimizedTaskDetail(task, container) {
115
115
  </div>
116
116
  </div>
117
117
 
118
- <!-- 投票结果卡片(如果有投票�?-->
118
+ <!-- 投票结果卡片(如果有投票�?-->
119
119
  ${task.poll ? renderPollResults(task.poll) : ''}
120
120
 
121
121
  <!-- 成员完成情况卡片 -->
@@ -134,10 +134,10 @@ function renderOptimizedTaskDetail(task, container) {
134
134
  <span>✏️</span> 编辑任务
135
135
  </button>
136
136
  <button class="btn-action-modern btn-complete" id="completeTask">
137
- <span>�?/span> 标记完成
137
+ <span>�?/span> 标记完成
138
138
  </button>
139
139
  <button class="btn-action-modern btn-delete" id="deleteTask">
140
- <span>🗑�?/span> 删除任务
140
+ <span>🗑�?/span> 删除任务
141
141
  </button>
142
142
  </div>
143
143
  </div>
@@ -169,7 +169,7 @@ function renderPollResults(poll) {
169
169
  <div class="poll-option-modern">
170
170
  <div class="poll-option-header-modern">
171
171
  <span class="poll-option-text-modern">${option.text}</span>
172
- <span class="poll-option-count-modern">${option.votes || 0} �?(${percentage}%)</span>
172
+ <span class="poll-option-count-modern">${option.votes || 0} �?(${percentage}%)</span>
173
173
  </div>
174
174
  <div class="poll-option-bar-modern">
175
175
  <div class="poll-option-fill-modern" style="width: ${percentage}%"></div>
@@ -183,9 +183,9 @@ function renderPollResults(poll) {
183
183
  `;
184
184
  }
185
185
 
186
- // 渲染成员�?function renderMemberItem(member) {
186
+ // 渲染成员�?function renderMemberItem(member) {
187
187
  const isCompleted = member.completed || member.status === 'completed';
188
- const completedTime = member.completedAt ? new Date(member.completedAt).toLocaleString() : '未完�?;
188
+ const completedTime = member.completedAt ? new Date(member.completedAt).toLocaleString() : '未完�?;
189
189
 
190
190
  return `
191
191
  <div class="member-item-modern ${isCompleted ? 'completed' : 'pending'}">
@@ -195,13 +195,13 @@ function renderPollResults(poll) {
195
195
  <div class="member-info-modern">
196
196
  <div class="member-name-modern">${member.username || '未知用户'}</div>
197
197
  <div class="member-time-modern">
198
- ${isCompleted ? `�?${completedTime}` : '�?待完�?}
198
+ ${isCompleted ? `�?${completedTime}` : '�?待完�?}
199
199
  </div>
200
200
  </div>
201
201
  <div class="member-status-modern">
202
202
  ${isCompleted ?
203
- '<span class="status-badge-small completed">已完�?/span>' :
204
- '<span class="status-badge-small pending">未完�?/span>'}
203
+ '<span class="status-badge-small completed">已完�?/span>' :
204
+ '<span class="status-badge-small pending">未完�?/span>'}
205
205
  </div>
206
206
  </div>
207
207
  `;
@@ -214,33 +214,33 @@ function calculateProgress(task) {
214
214
  return Math.round((completed / task.members.length) * 100);
215
215
  }
216
216
 
217
- // 获取状态图�?function getStatusIcon(status) {
217
+ // 获取状态图�?function getStatusIcon(status) {
218
218
  const icons = {
219
- 'pending': '�?,
219
+ 'pending': '�?,
220
220
  'in_progress': '🔄',
221
- 'completed': '�?,
222
- 'terminated': '�?
221
+ 'completed': '�?,
222
+ 'terminated': '�?
223
223
  };
224
224
  return icons[status] || '📋';
225
225
  }
226
226
 
227
- // 获取状态文�?function getStatusText(status) {
227
+ // 获取状态文�?function getStatusText(status) {
228
228
  const texts = {
229
- 'pending': '待处�?,
230
- 'in_progress': '进行�?,
231
- 'completed': '已完�?,
232
- 'terminated': '已终�?
229
+ 'pending': '待处�?,
230
+ 'in_progress': '进行�?,
231
+ 'completed': '已完�?,
232
+ 'terminated': '已终�?
233
233
  };
234
234
  return texts[status] || '未知';
235
235
  }
236
236
 
237
- // 获取优先级图�?function getPriorityIcon(priority) {
237
+ // 获取优先级图�?function getPriorityIcon(priority) {
238
238
  const icons = {
239
239
  'high': '🔴',
240
240
  'medium': '🟡',
241
241
  'low': '🟢'
242
242
  };
243
- return icons[priority] || '�?;
243
+ return icons[priority] || '�?;
244
244
  }
245
245
 
246
246
  // 添加样式
@@ -262,7 +262,7 @@ function addTaskDetailStyles() {
262
262
  overflow-x: hidden;
263
263
  }
264
264
 
265
- /* 滚动条样�?*/
265
+ /* 滚动条样�?*/
266
266
  .task-detail-view-modern::-webkit-scrollbar {
267
267
  width: 8px;
268
268
  }
@@ -825,13 +825,14 @@ function setupTaskDetailEvents(task, container) {
825
825
 
826
826
  // 删除任务
827
827
  container.querySelector('#deleteTask')?.addEventListener('click', async () => {
828
- if (confirm('确定要删除此任务吗?此操作不可撤销�?)) {
828
+ if (confirm('确定要删除此任务吗?此操作不可撤销�?)) {
829
829
  // 调用 API 删除任务
830
- alert('任务已删�?);
830
+ alert('任务已删�?);
831
831
  container.closest('.modal')?.remove();
832
832
  }
833
833
  });
834
834
  }
835
835
 
836
- // 导出函数供其他模块使�?export { renderOptimizedTaskDetail };
836
+ // 导出函数供其他模块使�?export { renderOptimizedTaskDetail };
837
837
 
838
+
@@ -1,4 +1,4 @@
1
- /**
1
+ /**
2
2
  * 优化后的工作流管理界�? * 可视化创建工作流,无需编写JSON代码
3
3
  */
4
4
 
@@ -787,3 +787,4 @@ function setupWorkflowEvents(token, container, currentGroup, apiService) {
787
787
  // 导出函数
788
788
  export { renderOptimizedWorkflowView };
789
789
 
790
+