Quellcode durchsuchen

任务流程页面接口调用

duy vor 1 Jahr
Ursprung
Commit
7ddc04c42b
3 geänderte Dateien mit 189 neuen und 61 gelöschten Zeilen
  1. 25 8
      src/api/modules/tasks/flow.js
  2. 120 27
      src/components/hc-tasks-user/index.vue
  3. 44 26
      src/views/tasks/flow.vue

+ 25 - 8
src/api/modules/tasks/flow.js

@@ -4,9 +4,9 @@ export default {
     //分页数据
     async getPageData(form, msg = true) {
         return HcApi({
-            url: '/api/blade-business/fixedFlow/page',
-            method: 'get',
-            params: form,
+            url: '/api/blade-meter/task/getFixedFlowPage',
+            method: 'post',
+            data: form,
         }, msg)
     },
     //获取系统所有角色划分
@@ -20,15 +20,15 @@ export default {
     //详情
     async queryFixedFlowDetail(form, msg = true) {
         return HcApi({
-            url: '/api/blade-business/fixedFlow/detail',
+            url: '/api/blade-meter/task/getFixedFlow',
             method: 'get',
             params: form,
         }, msg)
     },
     //新增
-    async addFixedFlowData(form, msg = true) {
+    async saveFixedFlow(form, msg = true) {
         return HcApi({
-            url: '/api/blade-business/fixedFlow/save',
+            url: '/api/blade-meter/task/saveFixedFlow',
             method: 'post',
             data: form,
         }, msg)
@@ -36,7 +36,7 @@ export default {
     //修改
     async updateFixedFlowData(form, msg = true) {
         return HcApi({
-            url: '/api/blade-business/fixedFlow/update',
+            url: '/api/blade-meter/task/updateFixedFlow',
             method: 'post',
             data: form,
         }, msg)
@@ -44,7 +44,15 @@ export default {
     //删除
     async removeFixedFlowData(form, msg = true) {
         return HcApi({
-            url: '/api/blade-business/fixedFlow/remove',
+            url: '/api/blade-meter/task/deleteFixedFlow',
+            method: 'post',
+            params: form,
+        }, msg)
+    },
+    //计量刪除预设流程分支
+    async deleteFixedFlowBranch(form, msg = true) {
+        return HcApi({
+            url: '/api/blade-meter/task/deleteFixedFlowBranch',
             method: 'post',
             params: form,
         }, msg)
@@ -98,4 +106,13 @@ export default {
             data: form,
         }, false)
     },
+    //获取预设流程信息
+
+    async getFixedFlow(form, msg = true) {
+            return HcApi({
+                url: '/api/blade-meter/task/getFixedFlow',
+                method: 'get',
+                params: form,
+            }, msg)
+    },
 }

+ 120 - 27
src/components/hc-tasks-user/index.vue

@@ -2,9 +2,13 @@
     <div :class="ui" class="hc-tasks-user">
         <div class="tasks-user-box">
             <div class="tag-user-list" @click="showModalClick">
-                <template v-for="(item, index) in UserDataList" :key="index">
+                <!-- <template v-for="(item, index) in UserDataList" :key="index">
                     <el-tag>{{ setCheckboxUserName(item) }}</el-tag>
                     <HcIcon v-if="(UserDataList.length - 1) > index" name="arrow-right" ui="arrow-icon-tag" />
+                </template> -->
+                <template v-for="(item, index) in fixedBranchList" :key="index">
+                    <el-tag>{{ item.name }}</el-tag>
+                    <HcIcon v-if="(UserDataList.length - 1) > index" name="arrow-right" ui="arrow-icon-tag" />
                 </template>
                 <div v-if="UserDataList.length <= 0" class="tasks-placeholder">点击这里选择任务人</div>
             </div>
@@ -20,13 +24,13 @@
                         <el-button type="primary" size="default" @click="addTaskName">添加</el-button>
                     </div>
                     <div class="task-list-box">
-                        <div v-for="(item, index) in taskNameList" class="task-list-box-item">
+                        <div v-for="(item, index) in fixedBranchList" class="task-list-box-item">
                             <el-tooltip :content="item.type === 2 ? '流程审批' : '平行审批'" placement="right">
-                                <el-button size="default">
-                                    {{ item.title }}
+                                <el-button size="default" :color="curItem?.name === item.name ? 'orange' : ''" @click="chekckTask(item)">
+                                    {{ item.name }}
                                     <HcIcon v-if="item.type === 1" name="links" class="ml-2" @click="item.type = 2" />
                                     <HcIcon v-if="item.type === 2" name="exchange-2" class="ml-2" @click="item.type = 1" />
-                                    <HcIcon name="close" class="ml-2" @click="delTask(index)" />
+                                    <HcIcon name="close" class="ml-2" @click="delTask(item, index)" />
                                 </el-button>
                             </el-tooltip>
                         </div>
@@ -124,8 +128,9 @@
 <script setup>
 import { onMounted, ref, watch } from 'vue'
 import tasksFlowApi from '~api/tasks/flow'
-import { deepClone, getArrValue } from 'js-fast-way'
+import { arrToKey, deepClone, getArrValue } from 'js-fast-way'
 import Draggable from 'vuedraggable'
+import { delMessage } from '~uti/tools'
 
 //参数
 const props = defineProps({
@@ -150,6 +155,15 @@ const props = defineProps({
         type:Boolean,
         default:false,
     },
+    id:{
+        type: [String, Number],
+        default: '', //预设流程ID
+    },
+    fixedBranchList:{
+        type:Array,
+        default: () => ([]),
+    },
+    
 })
 //事件
 const emit = defineEmits(['change'])
@@ -161,6 +175,8 @@ const checkboxUserList = ref([])
 const UserDataList = ref([])
 const projectId = ref(props.projectId)
 const contractId = ref(props.contractId)
+const id = ref(props.id)
+const fixedBranchList = ref(props.fixedBranchList)
 
 //树数据
 const ElTreeProps = { children: 'childRoleList', label: 'roleName' }
@@ -177,21 +193,79 @@ watch(() => [
     props.projectId,
     props.contractId,
     props.isShowTaskName,
-], ([users, pid, cid, ishow]) => {
+    props.id,
+    props.fixedBranchList,
+], ([users, pid, cid, ishow, Id, list]) => {
     projectId.value = pid
     contractId.value = cid
     setUserDataList(users)
     isShowTaskName.value = ishow
+    id.value = Id
+    fixedBranchList.value = list
+    fixedBranchList.value.forEach((ele)=>{
+        let userList = getArrValue(ele.userList)
+       let userIds = arrToKey(userList, 'userId', ',') // '1,2,3'
+       ele.userIds = userIds
+        let users = ''
+        for (let index = 0; index < userList.length; index++) {
+                const element = userList[index]
+                 if (users) {
+                users += `,${element['userName']}-${element['userId']}`
+                    } else {
+                        users = `${element['userName']}-${element['userId']}`
+                    }
+         }
+         ele.users = users
+       delete ele.userList
+    })
+    console.log(fixedBranchList.value, 'fixedBranchList.value')
+    if ( fixedBranchList.value.length > 0) {
+        curItem.value = fixedBranchList.value[0]
+    }
+})
+//监听
+watch(() => [
+    checkboxUserList.value,
+], ([list]) => {
+
+    console.log(list, 'list')
+        let newUser = [], newUserId = [], users = ''
+    const dataList = deepClone(checkboxUserList.value)
+    UserDataList.value = dataList
+    if (dataList.length > 0) {
+     
+        //封装数据
+        dataList.forEach(item => {
+            const itemArr = item.split('-')
+            if (itemArr.length > 0 && itemArr[0]) {
+                users = users ? `${users},${item}` : item
+                newUser.push({
+                    userId: itemArr[1],
+                    userName: itemArr[0],
+                })
+                newUserId.push(itemArr[1])
+            }
+        })
+        console.log(users, 'users')
+        if ( curItem.value) {
+            curItem.value.userIds = newUserId.join(',')
+            curItem.value.users = users
+        } 
+    
+   
+    }
 })
 
 //渲染完成
 onMounted(() => {
     setUserDataList(props.users)
     queryAllRoleList()
+
 })
 
 //处理用户数据
 const setUserDataList = (users) => {
+    console.log(users, 'users')
     if (users) {
         const usersArr = users.split(',')
         UserDataList.value = usersArr
@@ -282,10 +356,19 @@ const upSortClick = (index) => {
 //确认选择
 const sureSignUserLoading = ref(false)
 const sureSignUserClick = () => {
-    let newUser = [], newUserId = [], users = ''
+    console.log(fixedBranchList.value, 'fixedBranchList.value3333333')
+    let isEmptyuserIds = fixedBranchList.value.some(obj => obj.userIds === '')
+    if (isEmptyuserIds) {
+        window.$message.warning('请选择对应的任务人员')
+        return
+    } else if (fixedBranchList.value.length === 0) {
+        window.$message.warning('请选择对应的任务人员和任务名称')
+        return
+    } else {
+        let newUser = [], newUserId = [], users = ''
     const dataList = deepClone(checkboxUserList.value)
     UserDataList.value = dataList
-    if (dataList.length > 0) {
+   
         sureSignUserLoading.value = true
         //封装数据
         dataList.forEach(item => {
@@ -301,38 +384,48 @@ const sureSignUserClick = () => {
         })
         showModal.value = false
         sureSignUserLoading.value = false
-        emit('change', newUser, newUserId, users)
-    } else {
-        window.$message?.warning('请先选择任务人员,或点击取消')
+   
+          
+        
+
+    
+       console.log(fixedBranchList.value, fixedBranchList.value)
+       emit('change', fixedBranchList.value)
+       
     }
+  
+         
+    
 }
 const taskNameinput = ref('')
-const taskNameList = ref([
-    {
-    title:'任务1',
-    type:1,
-    },
-    {
-    title:'任务2',
-    type:2,
-    },
-])
+
 const addTaskName = ()=>{
     if (taskNameinput.value) {
-            taskNameList.value.push({
-            title:taskNameinput.value,
+        fixedBranchList.value.push({
+            name:taskNameinput.value,
             type:1,
+            userIds:'',
         })
         taskNameinput.value = ''
+     
     } else {
         window.$message.warning('请输入任务名称')
     }
-    
+    checkboxUserList.value = []
+    curItem.value = null
 }
 
-const delTask = (index)=>{
+const delTask = async (item, index)=>{
     console.log(index, 'index')
-    taskNameList.value.splice(index, 1)
+
+  fixedBranchList.value.splice(index, 1)
+}
+const curItem = ref(null)
+const chekckTask = (item)=>{
+    console.log(item)
+    curItem.value = item
+    setUserDataList(item.users)
+    console.log(checkboxUserList.value, 'checkboxUserList.value')
 }
 </script>
 

+ 44 - 26
src/views/tasks/flow.vue

@@ -18,11 +18,11 @@
         <!-- 新增/编辑流程 弹框 -->
         <hc-new-dialog v-model="showEditModal" :title="`${flowFormData.id ? '编辑' : '新增'}流程`" widths="40rem">
             <el-form ref="formFlowRef" class="p-4" :model="flowFormData" :rules="formFlowRules" label-width="auto" size="large">
-                <el-form-item label="流程名称" prop="fixedFlowName">
-                    <el-input v-model="flowFormData.fixedFlowName" placeholder="请输入流程名称" />
+                <el-form-item label="流程名称" prop="fixedName">
+                    <el-input v-model="flowFormData.fixedName" placeholder="请输入流程名称" />
                 </el-form-item>
-                <el-form-item label="任务人" prop="linkUserJoinString">
-                    <hc-tasks-user :contract-id="contractId" :project-id="projectId" :users="flowFormData.linkUserJoinString" ui="w-full" :is-show-task-name="true" @change="tasksUserChange" />
+                <el-form-item label="任务名称" prop="fixedBranchList">
+                    <hc-tasks-user :id="changeId" :contract-id="contractId" :project-id="projectId" :users="linkUserJoinString" ui="w-full" :is-show-task-name="true" :fixed-branch-list="flowFormData.fixedBranchList" @change="tasksUserChange" />
                 </el-form-item>
             </el-form>
             <template #footer>
@@ -53,7 +53,7 @@ onActivated(() => {
 })
 
 //搜索表单
-const searchForm = ref({ current: 1, size: 10, total: 0 })
+const searchForm = ref({ current: 1, size: 20, total: 0 })
 
 //分页
 const pageChange = ({ current, size }) => {
@@ -90,44 +90,54 @@ const getTableData = async () => {
 
 //新建流程
 const addFlowData = () => {
-    flowFormData.value = { id: '', fixedFlowName: '', linkUserJoinString: '' }
+    flowFormData.value = { id: '', fixedName: '', fixedBranchList: [] }
+    linkUserJoinString.value = ''
     showEditModal.value = true
 }
 
 
 //编辑流程
+const linkUserJoinString = ref(null)
+const changeId = ref('')
 const handleTableEdit = async (row) => {
-    flowFormData.value = { id: '', fixedFlowName: '', linkUserJoinString: '' }
+    changeId.value = row.id
+    flowFormData.value = { id: '', fixedName: '', fixedBranchList: [] }
     showEditModal.value = true
     const { error, code, data } = await tasksFlowApi.queryFixedFlowDetail({ id: row?.id })
     if (!error && code === 200) {
         let users = '', res = getObjValue(data)
-        const list = getArrValue(res['fixedFlowLinkList'])
-        for (let i = 0; i < list.length; i++) {
-            const item = getObjValue(list[i])
-            if (users) {
-                users += `,${item['fixedFlowLinkUserName']}-${item['fixedFlowLinkUser']}`
-            } else {
-                users = `${item['fixedFlowLinkUserName']}-${item['fixedFlowLinkUser']}`
-            }
+        const list = getArrValue(res['fixedBranchVOList'])
+      
+            const item = getObjValue(list[0])['userList']
+            for (let index = 0; index < item.length; index++) {
+                const element = item[index]
+                 if (users) {
+                users += `,${element['userName']}-${element['userId']}`
+                    } else {
+                        users = `${element['userName']}-${element['userId']}`
+                    }
+            
+      
+            console.log(users, 'users')
         }
-        flowFormData.value = { id: res.id, fixedFlowName: res.fixedFlowName, linkUserJoinString: users }
+        flowFormData.value = { id: res.fixedFlowId, fixedName: res.fixedFlowName, fixedBranchList:res.fixedBranchVOList }
+        linkUserJoinString.value = users
     } else {
-        flowFormData.value = { id: '', fixedFlowName: '', linkUserJoinString: '' }
+        flowFormData.value = { id: '', fixedName: '', fixedBranchList: [] }
     }
 }
 
 //新增编辑数据
 const showEditModal = ref(false)
 const formFlowRef = ref(null)
-const flowFormData = ref({ id: '', fixedFlowName: '', linkUserJoinString: '' })
+const flowFormData = ref({ id: '', fixedName: '', fixedBranchList: [] })
 const formFlowRules = {
-    fixedFlowName: {
+    fixedName: {
         required: true,
         trigger: 'blur',
         message: '请输入流程名称',
     },
-    linkUserJoinString: {
+    fixedBranchList: {
         required: true,
         trigger: 'blur',
         message: '请选择任务人',
@@ -135,17 +145,23 @@ const formFlowRules = {
 }
 
 //任务人选择改变
-const tasksUserChange = (a, b, users) => {
-    flowFormData.value.linkUserJoinString = users
+const tasksUserChange = ( fixedBranchList) => {
+    flowFormData.value.fixedBranchList = fixedBranchList
 }
 
 //提交保存
 const sevaLoading = ref(false)
 const saveFormClick = async () => {
     const form = flowFormData.value
+    console.log(form, 'form')
+    const fixedBranchList = form.fixedBranchList
+    fixedBranchList.forEach((ele)=>{
+        delete ele.users
+    })
+    form.fixedBranchList = fixedBranchList
     if (!form.id) {
         sevaLoading.value = true
-        const { error, code } = await tasksFlowApi.addFixedFlowData({
+        const { error, code } = await tasksFlowApi.saveFixedFlow({
             ...form,
             projectId: projectId.value,
             contractId: contractId.value,
@@ -159,6 +175,8 @@ const saveFormClick = async () => {
         }
     } else {
         sevaLoading.value = true
+        form.fixedFlowId = form.id
+        delete form.id
         const { error, code } = await tasksFlowApi.updateFixedFlowData({
             ...form,
             projectId: projectId.value,
@@ -178,9 +196,9 @@ const saveFormClick = async () => {
 const handleTableDel = (row) => {
     delMessage(async () => {
         const { error, code } = await tasksFlowApi.removeFixedFlowData({
-            ids: row?.id || '',
-            projectId: projectId.value,
-            contractId: contractId.value,
+            id:row?.id || '',
+            name: row?.fixedFlowName,
+          
         })
         //处理数据
         if (!error && code === 200) {