common.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. use app\common\model\Category;
  3. use app\common\model\Configvalue;
  4. use fast\Form;
  5. use fast\Tree;
  6. use think\Db;
  7. /**
  8. * 重新生成上传的参数配置
  9. * @param array $params
  10. * @return string
  11. */
  12. function get_upload_multipart($params = [])
  13. {
  14. // 加载配置
  15. $configvalue = new Configvalue;
  16. // 上传参数配置配置
  17. $uploadcfg = $configvalue->upload($params);
  18. return json_encode(isset($uploadcfg['multipart']) ? $uploadcfg['multipart'] : []);
  19. }
  20. /**
  21. * 生成下拉列表
  22. * @param string $name
  23. * @param mixed $options
  24. * @param mixed $selected
  25. * @param mixed $attr
  26. * @return string
  27. */
  28. function build_select($name, $options, $selected = [], $attr = [])
  29. {
  30. $options = is_array($options) ? $options : explode(',', $options);
  31. $selected = is_array($selected) ? $selected : explode(',', $selected);
  32. return Form::select($name, $options, $selected, $attr);
  33. }
  34. /**
  35. * 生成单选按钮组
  36. * @param string $name
  37. * @param array $list
  38. * @param mixed $selected
  39. * @return string
  40. */
  41. function build_radios($name, $list = [], $selected = null)
  42. {
  43. $html = [];
  44. $selected = is_null($selected) ? key($list) : $selected;
  45. $selected = is_array($selected) ? $selected : explode(',', $selected);
  46. foreach ($list as $k => $v)
  47. {
  48. $html[] = sprintf(Form::label("{$name}-{$k}", "%s {$v}"), Form::radio($name, $k, in_array($k, $selected), ['id' => "{$name}-{$k}"]));
  49. }
  50. return implode(' ', $html);
  51. }
  52. /**
  53. * 生成复选按钮组
  54. * @param string $name
  55. * @param array $list
  56. * @param mixed $selected
  57. * @return string
  58. */
  59. function build_checkboxs($name, $list = [], $selected = null)
  60. {
  61. $html = [];
  62. $selected = is_null($selected) ? [] : $selected;
  63. $selected = is_array($selected) ? $selected : explode(',', $selected);
  64. foreach ($list as $k => $v)
  65. {
  66. $html[] = sprintf(Form::label("{$name}-{$k}", "%s {$v}"), Form::checkbox($name, $k, in_array($k, $selected), ['id' => "{$name}-{$k}"]));
  67. }
  68. return implode(' ', $html);
  69. }
  70. /**
  71. * 生成分类下拉列表框
  72. * @param string $name
  73. * @param string $type
  74. * @param mixed $selected
  75. * @param array $attr
  76. * @return string
  77. */
  78. function build_category_select($name, $type, $selected = null, $attr = [], $header = [])
  79. {
  80. $tree = Tree::instance();
  81. $tree->init(Category::getCategoryArray($type), 'pid');
  82. $categorylist = $tree->getTreeList($tree->getTreeArray(0), 'name');
  83. $categorydata = $header ? $header : [];
  84. foreach ($categorylist as $k => $v)
  85. {
  86. $categorydata[$v['id']] = $v['name'];
  87. }
  88. $attr = array_merge(['id' => "c-{$name}", 'class' => 'form-control selectpicker'], $attr);
  89. return build_select($name, $categorydata, $selected, $attr);
  90. }
  91. /**
  92. * 生成表格操作按钮栏
  93. * @param array $btns 按钮组
  94. * @param array $attr 按钮属性值
  95. * @return string
  96. */
  97. function build_toolbar($btns = NULL, $attr = [])
  98. {
  99. $btns = $btns ? $btns : ['refresh', 'add', 'edit', 'delete'];
  100. $btns = is_array($btns) ? $btns : explode(',', $btns);
  101. $btnAttr = [
  102. 'refresh' => ['javascript:;', 'btn btn-primary btn-refresh', 'fa fa-refresh', ''],
  103. 'add' => ['javascript:;', 'btn btn-success btn-add', 'fa fa-plus', __('Add')],
  104. 'edit' => ['javascript:;', 'btn btn-success btn-edit btn-disabled disabled', 'fa fa-pencil', __('Edit')],
  105. 'delete' => ['javascript:;', 'btn btn-danger btn-del btn-disabled disabled', 'fa fa-trash', __('Delete')],
  106. ];
  107. $btnAttr = array_merge($btnAttr, $attr);
  108. $html = [];
  109. foreach ($btns as $k => $v)
  110. {
  111. if (!isset($btnAttr[$v]))
  112. {
  113. continue;
  114. }
  115. list($href, $class, $icon, $text) = $btnAttr[$v];
  116. $html[] = '<a href="' . $href . '" class="' . $class . '" ><i class="' . $icon . '"></i> ' . $text . '</a>';
  117. }
  118. return implode(' ', $html);
  119. }
  120. /**
  121. * 生成页面Heading
  122. *
  123. * @param string $title
  124. * @param string $content
  125. * @return string
  126. */
  127. function build_heading($title = NULL, $content = NULL)
  128. {
  129. if (is_null($title) && is_null($content))
  130. {
  131. $path = request()->pathinfo();
  132. $path = $path[0] == '/' ? $path : '/' . $path;
  133. // 根据当前的URI自动匹配父节点的标题和备注
  134. $data = Db::name('auth_rule')->where('name', $path)->field('title,remark')->find();
  135. if ($data)
  136. {
  137. $title = $data['title'];
  138. $content = $data['remark'];
  139. }
  140. }
  141. if (!$content)
  142. return '';
  143. return '<div class="panel-heading"><div class="panel-lead"><em>' . $title . '</em>' . $content . '</div></div>';
  144. }