diff --git a/apps/web/src/components/UserMultiSelect.vue b/apps/web/src/components/UserMultiSelect.vue
index 8303563..e707fc5 100644
--- a/apps/web/src/components/UserMultiSelect.vue
+++ b/apps/web/src/components/UserMultiSelect.vue
@@ -168,13 +168,24 @@ function commit(ids: string[]) {
function onUpdate(value: unknown) {
const tokens = Array.isArray(value) ? value.map(String) : [];
+ const tokenSet = new Set(tokens);
+ const removedMemberIds = new Set();
+ for (const token of selectValue.value) {
+ if (tokenSet.has(token)) continue;
+ const dropped = catalogByToken.value.get(token);
+ if (!dropped) continue;
+ for (const id of dropped.userIds) removedMemberIds.add(id);
+ }
const ids = new Set();
const pins = new Set();
for (const token of tokens) {
const group = catalogByToken.value.get(token);
if (group) {
pins.add(token);
- for (const id of group.userIds) ids.add(id);
+ for (const id of group.userIds) {
+ if (removedMemberIds.has(id)) continue;
+ ids.add(id);
+ }
continue;
}
if (!token.startsWith('role:') && !token.startsWith('team:')) ids.add(token);
diff --git a/apps/web/src/views/ActivityDetailView.vue b/apps/web/src/views/ActivityDetailView.vue
index 58883fb..21eb772 100644
--- a/apps/web/src/views/ActivityDetailView.vue
+++ b/apps/web/src/views/ActivityDetailView.vue
@@ -323,6 +323,18 @@ function shareExpanded(group: ShareGroup) {
function toggleShare(group: ShareGroup) {
shareOpen.value = { ...shareOpen.value, [group.key]: !shareExpanded(group) };
}
+
+function removeAssignees(ids: string[]) {
+ if (!canReassign.value || saving.value) return;
+ const drop = new Set(ids);
+ const next = assignUserIds.value.filter((id) => !drop.has(id));
+ if (!next.length) {
+ error.value = 'حداقل یک مسئول لازم است.';
+ return;
+ }
+ assignUserIds.value = next;
+ void reassign();
+}
const myShareDone = computed(() => {
const mine = auth.user?.id;
return Boolean(mine && completedIds.value.has(mine));
@@ -808,21 +820,33 @@ onMounted(() => {
{{ toFaDigits(shareDoneTotal) }} از {{ toFaDigits(assigneePeople.length) }} انجام شده
-
+
+
+
+
- {
>
{{ person.fullName }}
{{ completedIds.has(person.id) ? 'انجام شد' : 'مانده' }}
+
-
+
- {
>
{{ person.fullName }}
{{ completedIds.has(person.id) ? 'انجام شد' : 'مانده' }}
+