From b69b5f6329ca5f87932436b7a6c1ddfc3377e10f Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 16 五月 2024 10:56:41 +0800
Subject: [PATCH] 2024-05-16

---
 src/utils/utils.js |  214 +++++++++++++++++++++++++++-------------------------
 1 files changed, 111 insertions(+), 103 deletions(-)

diff --git a/src/utils/utils.js b/src/utils/utils.js
index d151843..9d92c76 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -2149,8 +2149,13 @@
     let status = 0
     let statusName = ''
     let detailId = ''
+    let sign = ''
     let error = ''
     let userid = sessionStorage.getItem('UserID') || ''
+    let checkIds = []
+    let checkUsers = []
+    let noticeIds = []
+    let work_grade = sessionStorage.getItem('work_grade') || 0
 
     if (verify.flowType === 'start') {
       target = flow.cells.filter(cell => cell.mknode === 'start')[0]
@@ -2174,22 +2179,10 @@
         if (verify.flowType === 'reject') {
           line = lines.filter(cell => cell.mkdata.flowType === 'reject' || cell.mknode === 'startEdge')[0]
         } else {
-          let endEdge = null
-          lines = lines.filter(cell => {
-            if (cell.mknode === 'endEdge') {
-              endEdge = cell
-              return false
-            }
-
-            return cell.mkdata.flowType !== 'reject' && cell.mknode !== 'startEdge'
-          })
+          lines = lines.filter(cell => cell.mkdata.flowType !== 'reject' && cell.mknode !== 'startEdge')
 
           if (lines.length === 0) {
-            if (!endEdge) {
-              error = '鏃犲彲鎵ц鐨勬祦绋嬪垎鏀�'
-            } else {
-              line = endEdge
-            }
+            error = '鏃犲彲鎵ц鐨勬祦绋嬪垎鏀�'
           } else {
             let branchKey = verify.flowBranch ? verify.flowBranch.toLowerCase() : ''
 
@@ -2197,7 +2190,7 @@
               let _key = form.key.toLowerCase()
               _data[_key] = form.value
             })
-  
+
             if (!branchKey) {
               lines.forEach(line => {
                 if (line.mkdata.execCondition === 'open') {
@@ -2205,18 +2198,31 @@
                 }
               })
               if (!error) {
-                line = lines[0]
+                lines = lines.filter(cell => {
+                  if (cell.mkdata.seniorCondition === 'open' && !line) {
+                    cell.mkdata.seniorbers && cell.mkdata.seniorbers.forEach(per => {
+                      if (per.worker_id === userid) {
+                        line = cell
+                      }
+                    })
+  
+                    return false
+                  }
+  
+                  return true
+                })
+
+                if (!line) {
+                  line = lines[0]
+                }
               }
             } else if (!_data.hasOwnProperty(branchKey)) {
               error = '淇℃伅涓棤娴佺▼鎺у埗瀛楁銆�'
             } else {
-              if (endEdge) {
-                line = endEdge
-              }
-
-              let equalLine = null
-              let gtOrLtLine = []
-              let unEqualLine = null
+              let _def_lines = []
+              let _equ_lines = []
+              let _unequ_lines = []
+              let _or_lines = []
               let branchVal = _data[branchKey]
 
               if (branchVal && typeof(branchVal) === 'string' && !isNaN(branchVal)) {
@@ -2225,45 +2231,58 @@
 
               lines.forEach(item => {
                 if (item.mkdata.execCondition !== 'open') {
-                  line = item
+                  _def_lines.push(item)
                 } else {
                   if (item.mkdata.match === '=') {
                     if (item.mkdata.matchVal === branchVal + '') {
-                      equalLine = item
+                      _equ_lines.push(item)
                     }
                   } else if (item.mkdata.match === '!=') {
                     if (item.mkdata.matchVal !== branchVal + '') {
-                      unEqualLine = item
+                      _unequ_lines.push(item)
                     }
                   } else {
                     if (item.mkdata.match === '<') {
                       if (item.mkdata.matchVal < branchVal) {
-                        gtOrLtLine.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)})
+                        _or_lines.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)})
                       }
                     } else if (item.mkdata.match === '>') {
                       if (item.mkdata.matchVal > branchVal) {
-                        gtOrLtLine.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)})
+                        _or_lines.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)})
                       }
                     } else if (item.mkdata.match === '<=') {
                       if (item.mkdata.matchVal <= branchVal) {
-                        gtOrLtLine.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)})
+                        _or_lines.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)})
                       }
                     } else if (item.mkdata.match === '>=') {
                       if (item.mkdata.matchVal >= branchVal) {
-                        gtOrLtLine.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)})
+                        _or_lines.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)})
                       }
                     }
                   }
                 }
               })
 
-              if (equalLine) {
-                line = equalLine
-              } else if (gtOrLtLine.length > 0) {
-                gtOrLtLine.sort((a, b) => a.dist - b.dist)
-                line = gtOrLtLine[0]
-              } else if (unEqualLine) {
-                line = unEqualLine
+              _or_lines.sort((a, b) => a.dist - b.dist)
+
+              let _lines = [..._equ_lines, ..._or_lines, ..._unequ_lines, ..._def_lines]
+
+              _lines = _lines.filter(cell => {
+                if (cell.mkdata.seniorCondition === 'open' && !line) {
+                  cell.mkdata.seniorbers && cell.mkdata.seniorbers.forEach(per => {
+                    if (per.worker_id === userid) {
+                      line = cell
+                    }
+                  })
+
+                  return false
+                }
+
+                return true
+              })
+              
+              if (!line) {
+                line = _lines[0]
               }
             }
           }
@@ -2276,7 +2295,36 @@
         detailId = line.id
         status = line.mkdata.status
         statusName = line.mkdata.statusName
+        sign = line.mkdata.seniorSign || ''
         target = flow.cells.filter(cell => cell.id === line.target.cell)[0]
+
+        line.mkdata.members && line.mkdata.members.forEach(item => {
+          if (line.mkdata.approver === 'departmentManager') {
+            if (item.job_type === 'manage' && departmentcode === item.parentIds[1]) {
+              checkIds.push(item.worker_id)
+              checkUsers.push(item)
+            }
+          } else if (line.mkdata.approver === 'directManager') {
+            if (departmentcode === item.parentIds[1] && item.work_grade > work_grade) {
+              checkIds.push(item.worker_id)
+              checkUsers.push(item)
+            }
+          } else {
+            checkIds.push(item.worker_id)
+            checkUsers.push(item)
+          }
+        })
+        line.mkdata.copys && line.mkdata.copys.forEach(item => {
+          noticeIds.push(item.worker_id)
+        })
+
+        if (!target) {
+          error = '鏈煡璇㈠埌宸ヤ綔娴佺洰鏍囪妭鐐�'
+        } else if (checkIds.length === 0 && !['startEdge', 'endEdge', 'throughEdge'].includes(line.mknode)) {
+          error = '鏈幏鍙栧埌涓嬩竴姝ュ鎵逛汉'
+        } else if (line.approvalMethod === 'countersign' && (!node.checkIds || !node.checkIds.includes(userid))) {
+          error = '褰撳墠鐢ㄦ埛涓嶅湪瀹℃壒浜哄垪琛ㄤ腑'
+        }
       } else if (!error) {
         error = '宸ヤ綔娴佷腑鏃犲搴旀祦绋�'
       }
@@ -2292,26 +2340,20 @@
       /* 宸ヤ綔娴佸紓甯竤ql */
       select @ErrorCode='E',@retmsg='${error}' goto aaa
       `
-    } else if (verify.flowSql === 'true' && target) {
+    } else if (verify.flowSql === 'true') {
       if (verify.flowType === 'start') {
         _sql += `
       /* 宸ヤ綔娴侀粯璁ql */
       insert into s_my_works_flow (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,work_group,works_flow_detail_id,work_grade,bid,createuserid,CreateUser,CreateStaff,upid)
       select @ID@,@works_flow_code@,@works_flow_name@,@works_flow_param@,@status@,@statusname@,@work_group@,@works_flow_detail_id@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@
-      insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,upid)
-      select @ID@,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@time_id@
+      insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,bid,createuserid,CreateUser,CreateStaff,upid)
+      select @ID@,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@
       insert into s_my_works_flow_notice (works_flow_id,works_flow_code,works_flow_detail_id,userid,notice_type,createuserid,CreateUser,CreateStaff,upid)
       select @ID@,@works_flow_code@,@works_flow_detail_id@,@userid@,@start_type@,@userid@,@UserName,@FullName,@time_id@
+      insert into s_my_works_flow_role (works_flow_id,works_flow_code,userid,works_flow_detail_id,createuserid,CreateUser,CreateStaff,upid,typecharone)
+      select @ID@,@works_flow_code@,@userid@,@works_flow_detail_id@,@userid@,@UserName,@FullName,@time_id@,'begin'
       `
-      } else if (line && line.approvalMethod === 'countersign' && (!node.checkIds || !node.checkIds.includes(userid))) {
-        status = 0
-        statusName = '寮傚父'
-
-        _sql += `
-        /* 宸ヤ綔娴佸紓甯竤ql */
-        select @ErrorCode='E',@retmsg='褰撳墠鐢ㄦ埛涓嶅湪瀹℃壒浜哄垪琛ㄤ腑' goto aaa
-        `
-      } else if (line && line.approvalMethod === 'countersign' && node.checkIds.length > 1) {
+      } else if (line.approvalMethod === 'countersign' && node.checkIds.length > 1) {
         let label = ''
         let field = ''
         let mark = line.mark || '宸插鏍�'
@@ -2351,11 +2393,11 @@
 
       if @works_flow_key_status='Y'
       begin
-            update s_my_works_flow set ${field}=${label},status=@status@,statusname=@statusname@,works_flow_param=@works_flow_param@,works_flow_detail_id=@works_flow_detail_id@,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname
+            update s_my_works_flow set ${field}=${label},status=@status@,statusname=@statusname@,works_flow_param=@works_flow_param@,works_flow_detail_id=@works_flow_detail_id@,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname${verify.flowRemark ? ',remark=@' + verify.flowRemark : ''}
             where id=@works_flow_key_id
 
-            insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,upid,${field})
-            select @ID@,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@time_id@,${label}
+            insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,bid,createuserid,CreateUser,CreateStaff,upid${verify.flowRemark ? ',remark' : ''},${field})
+            select @ID@,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@${verify.flowRemark ? ',@' + verify.flowRemark : ''},${label}
             
             update s_my_works_flow_role set deleted=10,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname 
             where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0
@@ -2380,11 +2422,11 @@
       end
       else
       begin
-            update s_my_works_flow set ${field}=${label},modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname
+            update s_my_works_flow set ${field}=${label},modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname${verify.flowRemark ? ',remark=@' + verify.flowRemark : ''}
             where id =@works_flow_key_id
 
-            insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,upid,${field})
-            select @ID@,@works_flow_code@,@works_flow_name@ ,@s_my_works_flow_log_param,@s_my_works_flow_log_status,@s_my_works_flow_log_statusname,@s_my_works_flow_log_detail_id,@work_group@,@work_grade@,@time_id@,${label}
+            insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,bid,createuserid,CreateUser,CreateStaff,upid${verify.flowRemark ? ',remark' : ''},${field})
+            select @ID@,@works_flow_code@,@works_flow_name@ ,@s_my_works_flow_log_param,@s_my_works_flow_log_status,@s_my_works_flow_log_statusname,@s_my_works_flow_log_detail_id,@work_group@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@${verify.flowRemark ? ',@' + verify.flowRemark : ''},${label}
           
             update s_my_works_flow_role set deleted=10,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname 
             where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0 and userid =@userid@
@@ -2411,13 +2453,16 @@
       end
       set @retmsg=''
 
-      update s_my_works_flow set status=@status@,statusname=@statusname@,works_flow_param=@works_flow_param@,works_flow_detail_id=@works_flow_detail_id@,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname
+      update s_my_works_flow set status=@status@,statusname=@statusname@,works_flow_param=@works_flow_param@,works_flow_detail_id=@works_flow_detail_id@,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname${verify.flowRemark ? ',remark=@' + verify.flowRemark : ''}
       where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0
-      insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,upid)
-      select @ID@,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@time_id@
+      insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,bid,createuserid,CreateUser,CreateStaff,upid${verify.flowRemark ? ',remark' : ''})
+      select @ID@,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@${verify.flowRemark ? ',@' + verify.flowRemark : ''}
       
       update s_my_works_flow_role set deleted=10,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname 
       where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0
+
+      ${line.mknode === 'startEdge' ? `update s_my_works_flow_role set deleted=0,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname 
+      where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and typecharone='begin'` : ''}
 
       if @check_userids@ != ''
       begin
@@ -2438,51 +2483,16 @@
       end
       `
       }
-    } else if (verify.flowSql === 'true') {
-      status = 0
-      statusName = '寮傚父'
-
-      _sql += `
-      /* 宸ヤ綔娴佸紓甯竤ql */
-      select @ErrorCode='E',@retmsg='${error || '宸ヤ綔娴佹墽琛屽紓甯�'}' goto aaa
-      `
     }
 
-    let checkIds = []
-    let checkUsers = []
-    let work_grade = sessionStorage.getItem('work_grade') || 0
-    if (verify.flowType !== 'start') {
-      if (line) {
-        let noticeIds = []
-        line.mkdata.members && line.mkdata.members.forEach(item => {
-          if (line.mkdata.approver === 'departmentManager') {
-            if (item.job_type === 'manage' && departmentcode === item.parentIds[1]) {
-              checkIds.push(item.worker_id)
-              checkUsers.push(item)
-            }
-          } else if (line.mkdata.approver === 'directManager') {
-            if (departmentcode === item.parentIds[1] && item.work_grade > work_grade) {
-              checkIds.push(item.worker_id)
-              checkUsers.push(item)
-            }
-          } else {
-            checkIds.push(item.worker_id)
-            checkUsers.push(item)
-          }
-        })
-        line.mkdata.copys && line.mkdata.copys.forEach(item => {
-          noticeIds.push(item.worker_id)
-        })
-        _sql = _sql.replace(/@check_userids@/ig, `'${checkIds.join(',')}'`)
-        _sql = _sql.replace(/@notice_userids@/ig, `'${noticeIds.join(',')}'`)
-      } else {
-        _sql = _sql.replace(/@check_userids@/ig, `''`)
-        _sql = _sql.replace(/@notice_userids@/ig, `''`)
-      }
-    } else {
-      _sql = _sql.replace(/@check_userids@/ig, `''`)
-      _sql = _sql.replace(/@notice_userids@/ig, `''`)
+    if (_backCustomScript) {
+      _sql += _backCustomScript
     }
+
+    _sql = _sql.replace(/@works_flow_sign@/ig, `'${sign}'`)
+
+    _sql = _sql.replace(/@check_userids@/ig, `'${checkIds.join(',')}'`)
+    _sql = _sql.replace(/@notice_userids@/ig, `'${noticeIds.join(',')}'`)
 
     _sql = _sql.replace(/@start_type@/ig, `'寮�濮�'`)
     _sql = _sql.replace(/@check_type@/ig, verify.flowType === 'reject' ? `'椹冲洖'` : `'瀹℃牳'`)
@@ -2503,9 +2513,7 @@
     _sql = _sql.replace(/@statusname@/ig, `'${statusName}'`)
     _sql = _sql.replace(/@work_group@/ig, `'${sessionStorage.getItem('work_group') || ''}'`)
     _sql = _sql.replace(/@work_grade@/ig, `'${work_grade}'`)
-  }
-
-  if (_backCustomScript) {
+  } else if (_backCustomScript) {
     _sql += _backCustomScript
   }
 

--
Gitblit v1.8.0