From fc8c8d714687a22f711d642d192bd4149f3b7e88 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 22 四月 2024 11:15:14 +0800
Subject: [PATCH] 2024-04-22

---
 src/utils/utils.js |  150 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 142 insertions(+), 8 deletions(-)

diff --git a/src/utils/utils.js b/src/utils/utils.js
index c46bc39..46e40aa 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -2135,6 +2135,7 @@
     let statusName = ''
     let detailId = ''
     let error = ''
+    let userid = sessionStorage.getItem('UserID') || ''
 
     if (verify.flowType === 'start') {
       target = flow.cells.filter(cell => cell.mknode === 'start')[0]
@@ -2263,7 +2264,15 @@
       error = '琛屼俊鎭腑鏃犲伐浣滄祦鍙傛暟'
     }
 
-    if (verify.flowSql === 'true' && target) {
+    if (error) {
+      status = 0
+      statusName = '寮傚父'
+
+      _sql += `
+      /* 宸ヤ綔娴佸紓甯竤ql */
+      select @ErrorCode='E',@retmsg='${error}' goto aaa
+      `
+    } else if (verify.flowSql === 'true' && target) {
       if (verify.flowType === 'start') {
         _sql += `
       /* 宸ヤ綔娴侀粯璁ql */
@@ -2274,16 +2283,124 @@
       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@
       `
+      } 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) {
+        let label = ''
+        let field = ''
+        let mark = line.mark || '宸插鏍�'
+        let _declare = []
+        let _select = []
+        let _select2 = []
+        let _where = []
+        let fields = ['statuscharone', 'statuschartwo', 'statuscharthree', 'statuscharfour', 'statuscharfive']
+        node.checkUsers.forEach((user, index) => {
+          if (user.worker_id === userid) {
+            field = fields[index]
+            label = `'${user.parentNames[2] || ''}${user.workername || ''}${mark}'`
+          } else {
+            _declare.push(`@works_flow_${fields[index]} nvarchar(50)`)
+            _select.push(`@works_flow_${fields[index]}=''`)
+            _select2.push(`@works_flow_${fields[index]}=${fields[index]}`)
+            _where.push(`@works_flow_${fields[index]}!=''`)
+          }
+        })
+        _declare = _declare.join(',')
+        _select = _select.join(',')
+        _select2 = _select2.join(',')
+        _where = _where.join(' and ')
+
+        _sql += `
+      /* 宸ヤ綔娴侀粯璁ql */
+      declare ${_declare},@works_flow_key_id nvarchar(50),@works_flow_key_status nvarchar(20),@s_my_works_flow_log_param  nvarchar(max),@s_my_works_flow_log_status int,@s_my_works_flow_log_statusname nvarchar(50),@s_my_works_flow_log_detail_id  nvarchar(50)
+      select ${_select},@works_flow_key_id='',@works_flow_key_status ='',@s_my_works_flow_log_param='',@s_my_works_flow_log_status=0,@s_my_works_flow_log_statusname='',@s_my_works_flow_log_detail_id=''
+
+      select ${_select2},@works_flow_key_id=id,@s_my_works_flow_log_param=works_flow_param,@s_my_works_flow_log_status=status,@s_my_works_flow_log_statusname=statusname,@s_my_works_flow_log_detail_id=works_flow_detail_id
+      from s_my_works_flow where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0
+
+      if ${_where}
+      begin
+          set @works_flow_key_status='Y'
+      end
+
+      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
+            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}
+            
+            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
+
+            if @check_userids@ != ''
+            begin
+                  insert into s_my_works_flow_role (works_flow_id,works_flow_code,userid,works_flow_detail_id,createuserid,CreateUser,CreateStaff,upid)
+                  select @ID@,@works_flow_code@,ID,@works_flow_detail_id@,@userid@,@UserName,@FullName,@time_id@ from dbo.SplitComma(@check_userids@)
+                  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@,ID,@check_type@,@userid@,@UserName,@FullName,@time_id@ from dbo.SplitComma(@check_userids@)
+            end
+            if @notice_userids@ != ''
+            begin
+                  update n
+                  set deleted=10,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname 
+                  from (select * from s_my_works_flow_notice where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0) n
+                  inner join (select ID from dbo.SplitComma(@notice_userids@)) s
+                  on n.userid = s.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@,ID,@notice_type@,@userid@,@UserName,@FullName,@time_id@ from dbo.SplitComma(@notice_userids@)
+            end
+      end
+      else
+      begin
+            update s_my_works_flow set ${field}=${label},modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname
+            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}
+          
+            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@
+      end
+      `
       } else {
         _sql += `
       /* 宸ヤ綔娴侀粯璁ql */
-      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(),modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname
+      set @retmsg =''
+      select @retmsg='X' from s_my_works_flow_role where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0 and userid =@userid@
+
+      if @retmsg =''
+      begin
+          select @retmsg='X' from s_my_works_flow_role where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and userid=@userid@
+
+          if @retmsg !='' 
+          begin
+              select @ErrorCode='E', @retmsg='褰撳墠鍗曟嵁宸插鏍革紝璇峰埛鏂板悗閲嶈瘯'
+            goto aaa 
+          end
+
+          select @retmsg='椤甸潰鏁版嵁宸叉洿鏂帮紝鎴栨病鏈夊綋鍓嶅崟鎹殑瀹℃壒鏉冮檺'
+            goto aaa 
+      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
       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@
+      
+      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
+
       if @check_userids@ != ''
       begin
-            delete s_my_works_flow_role where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0
             insert into s_my_works_flow_role (works_flow_id,works_flow_code,userid,works_flow_detail_id,createuserid,CreateUser,CreateStaff,upid)
             select @ID@,@works_flow_code@,ID,@works_flow_detail_id@,@userid@,@UserName,@FullName,@time_id@ from dbo.SplitComma(@check_userids@)
             insert into s_my_works_flow_notice (works_flow_id,works_flow_code,works_flow_detail_id,userid,notice_type,createuserid,CreateUser,CreateStaff,upid)
@@ -2291,7 +2408,8 @@
       end
       if @notice_userids@ != ''
       begin
-            delete n
+            update n
+            set deleted=10,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname 
             from (select * from s_my_works_flow_notice where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0) n
             inner join (select ID from dbo.SplitComma(@notice_userids@)) s
             on n.userid = s.id
@@ -2310,12 +2428,27 @@
       `
     }
 
+    let checkIds = []
+    let checkUsers = []
+    let work_grade = sessionStorage.getItem('work_grade') || 0
     if (verify.flowType !== 'start') {
       if (line) {
-        let checkIds = []
         let noticeIds = []
         line.mkdata.members && line.mkdata.members.forEach(item => {
-          checkIds.push(item.worker_id)
+          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)
@@ -2337,9 +2470,10 @@
 
     _sql = _sql.replace(/@works_flow_code@/ig, `'${flow.flow_code}'`)
     _sql = _sql.replace(/@works_flow_name@/ig, `'${flow.flow_name}'`)
+
     if (target) {
       let label = target.attrs && target.attrs.text && target.attrs.text.text ? target.attrs.text.text : ''
-      let msg = {...target.mkdata, label: label, id: target.id}
+      let msg = {...target.mkdata, label: label, id: target.id, checkIds, checkUsers}
       _sql = _sql.replace(/@works_flow_param@/ig, `'${window.btoa(window.encodeURIComponent(JSON.stringify(msg)))}'`)
     } else {
       _sql = _sql.replace(/@works_flow_param@/ig, `''`)
@@ -2348,7 +2482,7 @@
     _sql = _sql.replace(/@status@/ig, `'${status}'`)
     _sql = _sql.replace(/@statusname@/ig, `'${statusName}'`)
     _sql = _sql.replace(/@work_group@/ig, `'${sessionStorage.getItem('work_group') || ''}'`)
-    _sql = _sql.replace(/@work_grade@/ig, `'${sessionStorage.getItem('work_grade') || 0}'`)
+    _sql = _sql.replace(/@work_grade@/ig, `'${work_grade}'`)
   }
 
   if (_backCustomScript) {

--
Gitblit v1.8.0