submit.html.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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', "projectchangeID={$projectchange->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. $lastNode = zget($nodeReviewerPairs, $node['id'], array());
  57. $nodeTrs[] = h::tr
  58. (
  59. h::td
  60. (
  61. setClass('text-center'),
  62. $node['title'],
  63. formHidden('ids[]', $node['id'])
  64. ),
  65. h::td
  66. (
  67. setClass('text-center'),
  68. in_array('reviewer', $node['types']) ? div
  69. (
  70. picker
  71. (
  72. set::id("reviewer{$node['id']}"),
  73. set::name('reviewer[' . $node['id'] . '][]'),
  74. set::items(array_diff(array_intersect_key($users, $rangeUsers), $reviewers)),
  75. $lastNode ? set::value($lastNode['reviewers']) : null,
  76. set::multiple(true)
  77. ),
  78. $reviewers ? div
  79. (
  80. setClass('otherReviewer mt-2.5'),
  81. $lang->approval->otherReviewer . join(',', $reviewers)
  82. ) : null
  83. ) : div
  84. (
  85. formHidden('reviewer[' . $node['id'] . '][]', ''),
  86. $reviewers ? join(',', $reviewers) : null
  87. )
  88. ),
  89. h::td
  90. (
  91. setClass('text-center'),
  92. in_array('ccer', $node['types']) ? div
  93. (
  94. picker
  95. (
  96. set::name('ccer[' . $node['id'] . '][]'),
  97. set::items(array_diff(array_intersect_key($users, $rangeUsers), $ccers)),
  98. $lastNode ? set::value($lastNode['ccs']) : null,
  99. set::multiple(true)
  100. ),
  101. $ccers ? div
  102. (
  103. setClass('otherCcer mt-2.5'),
  104. $lang->approval->otherCcer . join(',', $ccers)
  105. ) : null
  106. ) : div
  107. (
  108. formHidden('ccer[' . $node['id'] . '][]', ''),
  109. $ccers ? join(',', $ccers) : null
  110. )
  111. )
  112. );
  113. }
  114. $content = h::table
  115. (
  116. setClass('table bordered'),
  117. h::thead
  118. (
  119. h::tr
  120. (
  121. h::th
  122. (
  123. setClass('text-center'),
  124. width('1/5'),
  125. $lang->approval->node
  126. ),
  127. h::th
  128. (
  129. setClass('text-center'),
  130. width('2/5'),
  131. $lang->approval->reviewer
  132. ),
  133. h::th
  134. (
  135. setClass('text-center'),
  136. width('2/5'),
  137. $lang->approval->ccer
  138. )
  139. )
  140. ),
  141. h::tbody
  142. (
  143. $nodeTrs
  144. )
  145. );
  146. }
  147. $reviewerBox = div
  148. (
  149. setID('reviewerBox'),
  150. setStyle('width', '100%'),
  151. $content
  152. );
  153. formPanel
  154. (
  155. set::title($title),
  156. set::layout('horz'),
  157. formGroup
  158. (
  159. set::label($lang->projectchange->reviewer),
  160. $reviewerBox
  161. )
  162. );