columnitem.html.php 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <?php
  2. /**
  3. * The columnitem file of pivot design module of ZenTaoPMS.
  4. * @copyright Copyright 2009-2024 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  5. * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  6. * @author Chenxuan Song <songchenxuan@easycorp.ltd>
  7. * @package pivot
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. $fnGenPicker = function($showOrigin, $id, $field, $column, $options, $required, $isError = false)
  12. {
  13. $value = $showOrigin ? '' : $column[$field];
  14. $options = $showOrigin ? array() : $options[$field];
  15. $onChange = "changeSettingColumn" . ucfirst($field);
  16. return $showOrigin ? picker
  17. (
  18. setID($id),
  19. set::name($field),
  20. set::placeholder($this->lang->pivot->showOriginPlaceholder->$field),
  21. set::items($options),
  22. set::disabled(true)
  23. ) : picker
  24. (
  25. setID($id),
  26. $isError ? setClass('has-error') : null,
  27. set::name($field),
  28. set::value($value),
  29. set::items($options),
  30. set::required($required),
  31. on::change()->do("$onChange(event)")
  32. );
  33. };
  34. $fnGenerateColumnItem = function($index, $column, $itemCount, $options, $errors) use ($pivotState, $fnGenPicker)
  35. {
  36. $showDelete = $itemCount != 1;
  37. $checkOrigin = $column['showOrigin'] === 1;
  38. $showTotal = (!$checkOrigin && $column['slice'] != 'noSlice');
  39. $showMonopolize = (!$checkOrigin && $column['showMode'] != 'default');
  40. $checkMonopolize = (!$checkOrigin && $column['monopolize'] === 1);
  41. $isFieldError = isset($errors['field']);
  42. $fieldError = $this->lang->pivot->emptyColumnFieldError;
  43. $isStatError = isset($errors['stat']);
  44. $statError = $this->lang->pivot->emptyColumnStatError;
  45. return div
  46. (
  47. setClass('pl-1 column-line'),
  48. set('data-index', $index),
  49. div
  50. (
  51. setID("columnIndex$index"),
  52. setClass('column'),
  53. div
  54. (
  55. setClass('p-3'),
  56. div
  57. (
  58. setClass('column-header border-bottom-300 pb-3'),
  59. div
  60. (
  61. setClass('flex justify-between'),
  62. div(setClass('flex column-header-begin items-center gap-4'), div
  63. (
  64. setClass('text-base font-semibold'),
  65. sprintf($this->lang->pivot->columnIndex, $index)
  66. ), div
  67. (
  68. setClass('picker-column'),
  69. picker
  70. (
  71. setID("picker_column$index"),
  72. $isFieldError ? setClass('has-error') : null,
  73. set::name('column'),
  74. set::value($column['field']),
  75. set::items($options['fields']),
  76. on::change()->do('changeSettingColumnField(event)')
  77. ),
  78. $isFieldError ? span
  79. (
  80. setClass('text-danger'),
  81. $fieldError
  82. ) : null
  83. ), div
  84. (
  85. checkbox
  86. (
  87. setID("checkbox_showOrigin$index"),
  88. set::name('showOrigin[]'),
  89. set::checked($checkOrigin),
  90. set::text($this->lang->pivot->showOriginItem),
  91. on::change()->do('changeSettingColumnOrigin(event)')
  92. )
  93. )),
  94. $showDelete ? toolbar
  95. (
  96. setClass('flex'),
  97. btn
  98. (
  99. setClass('ghost size-sm squre column-delete'),
  100. set::icon('minus'),
  101. on::click()->do('deleteSettingColumn(event)')
  102. )
  103. ) : null
  104. )
  105. ),
  106. div
  107. (
  108. setClass('column-body pt-3'),
  109. div
  110. (
  111. setClass('flex col gap-y-3'),
  112. div
  113. (
  114. setClass('flex items-center'),
  115. div
  116. (
  117. setClass('body-th text-right pr-4'),
  118. $this->lang->pivot->slice
  119. ),
  120. div
  121. (
  122. setClass('body-picker'),
  123. $fnGenPicker($checkOrigin, "picker_slice$index", 'slice', $column, $options, true)
  124. )
  125. ),
  126. div
  127. (
  128. setClass('flex items-center'),
  129. div
  130. (
  131. setClass('body-th text-right pr-4'),
  132. $this->lang->pivot->stat
  133. ),
  134. div
  135. (
  136. setClass('body-picker'),
  137. $fnGenPicker($checkOrigin, "picker_stat$index", 'stat', $column, $options, false, $isStatError),
  138. $isStatError ? span
  139. (
  140. setClass('text-danger'),
  141. $statError
  142. ) : null
  143. )
  144. ),
  145. div
  146. (
  147. setClass('flex items-center'),
  148. div
  149. (
  150. setClass('body-th text-right pr-4'),
  151. $this->lang->pivot->showMode
  152. ),
  153. div
  154. (
  155. setClass($showMonopolize ? 'showmode-picker' : 'body-picker'),
  156. $fnGenPicker($checkOrigin, "picker_showMode$index", 'showMode', $column, $options, true)
  157. ),
  158. $showMonopolize ? div
  159. (
  160. setClass('pl-2'),
  161. checkbox
  162. (
  163. setID("checkbox_monopolize$index"),
  164. set::name('monopolize[]'),
  165. set::checked($checkMonopolize),
  166. set::text($this->lang->pivot->monopolize),
  167. on::change()->do('changeSettingColumnMonopolize(event)')
  168. )
  169. ) : null
  170. ),
  171. div
  172. (
  173. setClass('flex items-center' . (!$showTotal ? ' hidden' : '')),
  174. div
  175. (
  176. setClass('body-th text-right pr-4'),
  177. $this->lang->pivot->showTotal
  178. ),
  179. div
  180. (
  181. setClass('body-picker'),
  182. picker
  183. (
  184. setID("picker_showTotal$index"),
  185. set::name('showTotal'),
  186. set::value(zget($column, 'showTotal', 'noShow')),
  187. set::items($options['showTotal']),
  188. set::required(true),
  189. on::change()->do('changeShowTotal(event)')
  190. )
  191. )
  192. )
  193. )
  194. )
  195. )
  196. )
  197. );
  198. };