소스 검색

任务流程更改

duy 1 년 전
부모
커밋
305b1243ae
2개의 변경된 파일62개의 추가작업 그리고 6개의 파일을 삭제
  1. 42 5
      src/components/hc-tasks-user/index.vue
  2. 20 1
      src/utils/tools.js

+ 42 - 5
src/components/hc-tasks-user/index.vue

@@ -73,7 +73,7 @@
                         <div class="user-list">
                             <el-scrollbar>
                                 <template v-for="(item, index) in checkboxUserList" :key="index">
-                                    <el-tag closable @close="delCheckboxUser(index)">{{ setCheckboxUserName(item) }}</el-tag>
+                                    <el-tag closable @close="delCheckboxUser(item, index)">{{ setCheckboxUserName(item) }}</el-tag>
                                 </template>
                             </el-scrollbar>
                         </div>
@@ -135,7 +135,7 @@ import { onMounted, ref, watch } from 'vue'
 import tasksFlowApi from '~api/tasks/flow'
 import { arrToKey, deepClone, getArrValue } from 'js-fast-way'
 import Draggable from 'vuedraggable'
-import { delMessage } from '~uti/tools'
+import { hasDuplicates } from '~uti/tools'
 
 //参数
 const props = defineProps({
@@ -260,6 +260,26 @@ watch(() => [
    
     }
 })
+watch(() => [
+fixedBranchList.value,
+], ([list]) => {
+    fixedBranchList.value = list
+    const userIdList = arrToKey(fixedBranchList.value, 'userIds', ',')
+    const { isWarn, element } = hasDuplicates(userIdList.split(','))
+    if (isWarn) {
+        checkboxUserList.value.forEach((ele, index)=>{
+            if (ele.split('-')[1] === element) {
+                window.$message.warning('不能选择重复的任务人员' + ele.split('-')[0])
+                checkboxUserList.value.splice(index, 1)
+            }
+        })
+    }
+    
+    
+}, {
+    deep:true,
+},
+)
 
 //渲染完成
 onMounted(() => {
@@ -330,8 +350,26 @@ const setCheckboxUserName = (item) => {
 }
 
 //删除已选择的用户
-const delCheckboxUser = (index) => {
+const delCheckboxUser = (item, index) => {
     checkboxUserList.value.splice(index, 1)
+    let delId = item.split('-')[1]
+    fixedBranchList.value.forEach((ele)=>{
+      let arr = ele.userIds.split(',')
+      arr.forEach((ele1, index1)=>{
+        if (ele1 === delId) {
+           arr.splice(index1, 1)
+        }
+      })
+      let arr1 = ele.users.split(',')
+      arr1.forEach((ele2, index2)=>{
+        if (ele2.split('-')[1] === delId) {
+           arr1.splice(index2, 1)
+        }
+      })
+      ele.userIds = arr.join(',')
+      ele.users = arr1.join(',')
+    })
+    console.log( fixedBranchList.value, '    fixedBranchList.value')
 }
 
 //排序
@@ -432,10 +470,9 @@ const delTask = async (item, index)=>{
 }
 const curItem = ref(null)
 const chekckTask = (item)=>{
-    console.log(item)
     curItem.value = item
     setUserDataList(item.users)
-    console.log(checkboxUserList.value, 'checkboxUserList.value')
+
 }
 </script>
 

+ 20 - 1
src/utils/tools.js

@@ -104,4 +104,23 @@ export const keepdecimal = (str)=>{
             } else {
                 return str
             }
-}
+}
+
+//是否重复
+export const hasDuplicates = (array) =>{
+    let counts = {} // 用于存储每个元素的出现次数
+    for (let i = 0; i < array.length; i++) {
+      let element = array[i]
+      // 如果 counts 中已经有了这个元素,则将其出现次数加 1;否则,将其出现次数设为 1
+      counts[element] = (counts[element] || 0) + 1
+      // 如果某个元素的出现次数大于 1,则数组中存在重复元素,返回 true
+      if (counts[element] > 1) {
+        return {
+            isWarn:true,
+            element:array[i],
+        }
+      }
+    }
+    // 遍历完成后未发现重复元素,返回 false
+    return false
+  }