FromAuxiliary.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: maliang
  5. * Date: 2019-03-30
  6. * Time: 14:29
  7. */
  8. namespace Modules\Admin\Auxiliary\View;
  9. class FromAuxiliary
  10. {
  11. /**
  12. * 提交路由
  13. * @var string
  14. */
  15. public $path = '';
  16. /**
  17. * 表单标题
  18. * @var string
  19. */
  20. public $title = '表单';
  21. /**
  22. * 显示数据
  23. * @var
  24. */
  25. public $item;
  26. /**
  27. * 主视图显示字段
  28. * @var
  29. */
  30. public $columns = [];
  31. /**
  32. * 标题宽度
  33. * @var int
  34. */
  35. public $colWidth = 80;
  36. /**
  37. * 主键
  38. * @var string
  39. */
  40. public $primaryKey = 'id';
  41. /**
  42. * 当前字段
  43. * @var string
  44. */
  45. protected $currentColumn = '';
  46. /**
  47. * 底部显示按钮
  48. * @var array
  49. */
  50. public $footBtns = ['goback', 'save'];
  51. /**
  52. * 是否有分割线
  53. * @var bool
  54. */
  55. public $hasHr = false;
  56. public function __construct($path = '', $item = '')
  57. {
  58. $this->item = $item;
  59. $this->path = $path;
  60. }
  61. /**
  62. * 设置默认值
  63. * @param $default
  64. * @return $this
  65. */
  66. public function default($default)
  67. {
  68. $this->columns[$this->currentColumn]['default'] = $default;
  69. return $this;
  70. }
  71. /**
  72. * 设置提示语
  73. * @param $placeholder
  74. * @return $this
  75. */
  76. public function placeholder($placeholder)
  77. {
  78. $this->columns[$this->currentColumn]['placeholder'] = $placeholder;
  79. return $this;
  80. }
  81. public function text($varName, $label, $default = '')
  82. {
  83. $arguments = [$varName, $label, $default, ''];
  84. return $this->method('text', $arguments);
  85. }
  86. public function input($varName, $label, $default = '', $placeholder = '')
  87. {
  88. $arguments = [$varName, $label, $default, $placeholder];
  89. return $this->method('input', $arguments);
  90. }
  91. public function password($varName, $label, $default = '', $placeholder = '')
  92. {
  93. $arguments = [$varName, $label, $default, $placeholder];
  94. return $this->method('password', $arguments);
  95. }
  96. public function textarea($varName, $label, $default = '', $placeholder = '')
  97. {
  98. $arguments = [$varName, $label, $default, $placeholder];
  99. return $this->method('textarea', $arguments);
  100. }
  101. public function icon($varName, $label, $default = '', $placeholder = '')
  102. {
  103. $arguments = [$varName, $label, $default, $placeholder];
  104. return $this->method('icon', $arguments);
  105. }
  106. public function date($varName, $label, $default = '', $placeholder = '')
  107. {
  108. $arguments = [$varName, $label, $default, $placeholder];
  109. return $this->method('date', $arguments);
  110. }
  111. public function dateMonth($varName, $label, $default = '', $placeholder = '')
  112. {
  113. $arguments = [$varName, $label, $default, $placeholder];
  114. return $this->method('dateMonth', $arguments);
  115. }
  116. public function dateYear($varName, $label, $default = '', $placeholder = '')
  117. {
  118. $arguments = [$varName, $label, $default, $placeholder];
  119. return $this->method('dateYear', $arguments);
  120. }
  121. public function dateTime($varName, $label, $default = '', $placeholder = '')
  122. {
  123. $arguments = [$varName, $label, $default, $placeholder];
  124. return $this->method('dateTime', $arguments);
  125. }
  126. public function time($varName, $label, $default = '', $placeholder = '')
  127. {
  128. $arguments = [$varName, $label, $default, $placeholder];
  129. return $this->method('time', $arguments);
  130. }
  131. public function radio($varName, $label, $options, $default = '')
  132. {
  133. $arguments = [$varName, $label, $options, $default];
  134. return $this->method('radio', $arguments);
  135. }
  136. public function checkbox($varName, $label, $options, $default = '')
  137. {
  138. $arguments = [$varName, $label, $options, $default];
  139. return $this->method('checkbox', $arguments);
  140. }
  141. public function select($varName, $label, $options, $default = '')
  142. {
  143. $arguments = [$varName, $label, $options, $default];
  144. return $this->method('select', $arguments);
  145. }
  146. public function xselect($varName, $label, $options, $default = '')
  147. {
  148. $arguments = [$varName, $label, $options, $default];
  149. return $this->method('xselect', $arguments);
  150. }
  151. public function sselect($varName, $label, $options, $default = '')
  152. {
  153. $arguments = [$varName, $label, $options, $default];
  154. return $this->method('sselect', $arguments);
  155. }
  156. public function mselect($varName, $label, $options, $default = '')
  157. {
  158. $arguments = [$varName, $label, $options, $default];
  159. return $this->method('mselect', $arguments);
  160. }
  161. public function tselect($varName, $label, $options, $default = '')
  162. {
  163. $arguments = [$varName, $label, $options, $default];
  164. return $this->method('tselect', $arguments);
  165. }
  166. public function trselect($varName, $label, $options, $default = '')
  167. {
  168. $arguments = [$varName, $label, $options, $default];
  169. return $this->method('trselect', $arguments);
  170. }
  171. public function trmselect($varName, $label, $options, $default = '')
  172. {
  173. $arguments = [$varName, $label, $options, $default];
  174. return $this->method('trmselect', $arguments);
  175. }
  176. public function tree_select($varName, $label, $options, $default = '', $isShowNull = true)
  177. {
  178. $arguments = [$varName, $label, $options, $default, $isShowNull];
  179. return $this->method('tree_select', $arguments);
  180. }
  181. public function uploadImg($varName, $label, $uploadURLPath, $default = '')
  182. {
  183. $arguments = [$varName, $label, $uploadURLPath, $default];
  184. return $this->method('uploadImg', $arguments);
  185. }
  186. public function uploadFile($varName, $label, $uploadURLPath)
  187. {
  188. $arguments = [$varName, $label, $uploadURLPath, ''];
  189. return $this->method('uploadFile', $arguments);
  190. }
  191. public function uploadImgs($varName, $label, $uploadURLPath, $default = '')
  192. {
  193. $arguments = [$varName, $label, $uploadURLPath, $default];
  194. return $this->method('uploadImgs', $arguments);
  195. }
  196. public function uploadFiles($varName, $label, $uploadURLPath, $default = '')
  197. {
  198. $arguments = [$varName, $label, $uploadURLPath, $default];
  199. return $this->method('uploadFiles', $arguments);
  200. }
  201. public function hidden($varName, $value, $default = '')
  202. {
  203. $arguments = [$varName, $value, $default];
  204. return $this->method('hidden', $arguments);
  205. }
  206. public function editor($varName, $label, $default = '', $uploadURLPath = '')
  207. {
  208. $arguments = [$varName, $label, $uploadURLPath, $default];
  209. return $this->method('editor', $arguments);
  210. }
  211. public function includeBlock($varName, $label, $itemValue, $path)
  212. {
  213. $arguments = [$varName, $label, $itemValue, $path];
  214. return $this->method('includeBlock', $arguments);
  215. }
  216. /**
  217. * 调用方法
  218. * @param $method
  219. * @param $arguments
  220. * @return FromAuxiliary
  221. */
  222. protected function method($method, $arguments)
  223. {
  224. $this->columns[$arguments[0]]['type'] = $method;
  225. /**
  226. * $arguments[0] $varName
  227. * $arguments[1] $label
  228. * $arguments[2] $default = ''
  229. * $arguments[3] $placeholder = ''
  230. */
  231. if (in_array($method, ['text', 'input', 'password', 'textarea', 'icon', 'date', 'dateMonth', 'dateYear', 'dateTime', 'time', 'hidden'])) {
  232. $var = $this->columns[$arguments[0]]['placeholder'] = $arguments[3] ?? null;
  233. return $this->baseColumn($arguments[0], $arguments[1], $arguments[2] ?? '');
  234. }
  235. /**
  236. * $arguments[0] $varName
  237. * $arguments[1] $label
  238. * $arguments[2] $uploadURLPath
  239. * $arguments[3] $default = ''
  240. */
  241. if (in_array($method, ['uploadImg', 'uploadFile', 'uploadImgs', 'uploadFiles', 'editor'])) {
  242. $this->columns[$arguments[0]]['uploadURLPath'] = $arguments[2] ?? null;
  243. return $this->baseColumn($arguments[0], $arguments[1], $arguments[3] ?? '');
  244. }
  245. /**
  246. * $arguments[0] $varName
  247. * $arguments[1] $label
  248. * $arguments[2] $options
  249. * $arguments[3] $default = ''
  250. */
  251. if (in_array($method, ['radio', 'checkbox', 'trselect', 'trmselect', 'tselect', 'xselect', 'sselect', 'mselect', 'select'])) {
  252. $this->columns[$arguments[0]]['options'] = $arguments[2] ?? [];
  253. return $this->baseColumn($arguments[0], $arguments[1], $arguments[3] ?? '');
  254. }
  255. /**
  256. * $arguments[0] $varName
  257. * $arguments[1] $label
  258. * $arguments[2] $options
  259. * $arguments[3] $default = ''
  260. * $arguments[4] $isShow = ''
  261. */
  262. if (in_array($method, ['tree_select'])) {
  263. $this->columns[$arguments[0]]['options'] = $arguments[2] ?? [];
  264. $col = $this->treeSelectColumn($arguments[0], $arguments[1], $arguments[3] ?? '', $arguments[4]);
  265. return $col;
  266. }
  267. /**
  268. * $arguments[0] $varName
  269. * $arguments[1] $label
  270. * $arguments[2] $itemValue
  271. * $arguments[3] $default = ''
  272. */
  273. if (in_array($method, ['includeBlock'])) {
  274. $this->columns[$arguments[0]]['itemValue'] = $arguments[2] ?? [];
  275. $this->columns[$arguments[0]]['path'] = $arguments[3] ?? '';
  276. return $this->baseColumn($arguments[0], $arguments[1], '');
  277. }
  278. }
  279. protected function baseColumn($varName, $label, $default = '')
  280. {
  281. $this->columns[$varName]['value'] = $this->item[$varName] ?? '';
  282. $this->columns[$varName]['label'] = $label;
  283. $this->columns[$varName]['default'] = $default ?? '';
  284. $this->currentColumn = $varName;
  285. return $this;
  286. }
  287. protected function treeSelectColumn($varName, $label, $default = '', $isShowNull = true)
  288. {
  289. $this->columns[$varName]['value'] = $this->item[$varName] ?? '';
  290. $this->columns[$varName]['label'] = $label;
  291. $this->columns[$varName]['default'] = $default ?? '';
  292. $this->columns[$varName]['isShowNull'] = $isShowNull ?? true;
  293. $this->currentColumn = $varName;
  294. return $this;
  295. }
  296. }