submit.html.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. /**
  3. * The create file of cm module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  6. * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  7. * @author Yuting Wang<wangyuting@easycorp.ltd>
  8. * @package cm
  9. * @link https://www.zentao.net
  10. */
  11. namespace zin;
  12. jsVar('viewURL', inlink('view', "baselineID={$baseline->id}"));
  13. $reviewBox = '';
  14. $content = '';
  15. if(empty($nodes))
  16. {
  17. $content = div
  18. (
  19. setClass('h-8 content-center'),
  20. span($lang->noData)
  21. );
  22. }
  23. else
  24. {
  25. $nodeTrs = array();
  26. foreach($nodes as $node)
  27. {
  28. $rangeUsers = $users;
  29. if(isset($node['range']['reviewer']))
  30. {
  31. $rangeUsers = array();
  32. foreach($node['range']['reviewer'] as $range) $rangeUsers[$range] = zget($users, $range, array());
  33. }
  34. $reviewers = array();
  35. foreach(array('appointees', 'role', 'position', 'self', 'upLevel', 'superior', 'superiorList', 'productRole', 'projectRole', 'executionRole') as $key)
  36. {
  37. if(isset($node[$key]['reviewer']))
  38. {
  39. foreach($node[$key]['reviewer'] as $reviewer) $reviewers[$reviewer] = zget($users, $reviewer);
  40. }
  41. }
  42. $ccRangeUsers = $users;
  43. if(isset($node['range']['ccer']))
  44. {
  45. $ccRangeUsers = array();
  46. foreach($node['range']['ccer'] as $range) $ccRangeUsers[$range] = zget($users, $range, array());
  47. }
  48. $ccers = array();
  49. foreach(array('appointees', 'role', 'position', 'upLevel', 'superior') as $key)
  50. {
  51. if(isset($node[$key]['ccer']))
  52. {
  53. foreach($node[$key]['ccer'] as $ccer) $ccers[$ccer] = zget($users, $ccer);
  54. }
  55. }
  56. $nodeID = $node['id'];
  57. $currentReviewers = '';
  58. $currentCcers = '';
  59. if(isset($nodeReviewerPairs[$nodeID]))
  60. {
  61. $currentReviewers = $nodeReviewerPairs[$nodeID]['reviewers'];
  62. $currentCcers = $nodeReviewerPairs[$nodeID]['ccs'];
  63. $currentReviewers = join(',', $currentReviewers);
  64. $currentCcers = join(',', $currentCcers);
  65. }
  66. $nodeTrs[] = h::tr
  67. (
  68. h::td
  69. (
  70. setClass('text-center'),
  71. $node['title'],
  72. formHidden('ids[]', $node['id'])
  73. ),
  74. h::td
  75. (
  76. setClass('text-center'),
  77. in_array('reviewer', $node['types']) ? div
  78. (
  79. picker
  80. (
  81. set::id("reviewer{$node['id']}"),
  82. set::name('reviewer[' . $node['id'] . '][]'),
  83. set::items(array_diff(array_intersect_key($users, $rangeUsers), $reviewers)),
  84. set::value($currentReviewers),
  85. set::multiple(true)
  86. ),
  87. $reviewers ? div
  88. (
  89. setClass('otherReviewer mt-2.5'),
  90. $lang->approval->otherReviewer . join(',', $reviewers)
  91. ) : null
  92. ) : div
  93. (
  94. formHidden('reviewer[' . $node['id'] . '][]', ''),
  95. $reviewers ? join(',', $reviewers) : null
  96. )
  97. ),
  98. h::td
  99. (
  100. setClass('text-center'),
  101. in_array('ccer', $node['types']) ? div
  102. (
  103. picker
  104. (
  105. set::name('ccer[' . $node['id'] . '][]'),
  106. set::items(array_diff(array_intersect_key($users, $rangeUsers), $ccers)),
  107. set::value($currentCcers),
  108. set::multiple(true)
  109. ),
  110. $ccers ? div
  111. (
  112. setClass('otherCcer mt-2.5'),
  113. $lang->approval->otherCcer . join(',', $ccers)
  114. ) : null
  115. ) : div
  116. (
  117. formHidden('ccer[' . $node['id'] . '][]', ''),
  118. $ccers ? join(',', $ccers) : null
  119. )
  120. )
  121. );
  122. }
  123. $content = h::table
  124. (
  125. setClass('table bordered'),
  126. h::thead
  127. (
  128. h::tr
  129. (
  130. h::th
  131. (
  132. setClass('text-center'),
  133. width('1/5'),
  134. $lang->approval->node
  135. ),
  136. h::th
  137. (
  138. setClass('text-center'),
  139. width('2/5'),
  140. $lang->approval->reviewer
  141. ),
  142. h::th
  143. (
  144. setClass('text-center'),
  145. width('2/5'),
  146. $lang->approval->ccer
  147. )
  148. )
  149. ),
  150. h::tbody
  151. (
  152. $nodeTrs
  153. )
  154. );
  155. }
  156. $reviewerBox = div
  157. (
  158. setID('reviewerBox'),
  159. setStyle('width', '100%'),
  160. $content
  161. );
  162. formPanel
  163. (
  164. set::title($title),
  165. set::layout('horz'),
  166. formGroup
  167. (
  168. set::label($lang->cm->reviewer),
  169. $reviewerBox
  170. )
  171. );