inputItem.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <style>
  2. .editor_tool .layui-btn+.layui-btn {margin-left: 0px;}
  3. .editor_tool .layui-form-checkbox {margin-right: 0px;}
  4. </style>
  5. {volist name="fieldList" id="vo"}
  6. <div data-favisible="{$vo.visible|default=''}">
  7. <div class="layui-form-item">
  8. {if $vo.type!='hidden'}<label class="layui-form-label {if condition="isset($vo.ifrequire) AND $vo.ifrequire"}layui-form-item-required{/if}">{$vo.title}</label>{/if}
  9. {switch name="vo.type"}
  10. {case value="hidden"}
  11. {if $vo.value}<input type="hidden" class="form-control" name="{$vo.fieldArr}[{$vo.name}]" value="{$vo.value}">{/if}
  12. {/case}
  13. {case value="text"}
  14. <div class="layui-input-block">
  15. <input {$vo.extend_html} type="text" name="{$vo.fieldArr}[{$vo.name}]" placeholder="请输入{$vo.title}" autocomplete="off" class="layui-input" value="{$vo.value}">
  16. </div>
  17. {/case}
  18. {case value="password"}
  19. <div class="layui-input-block">
  20. <input {$vo.extend_html} type="password" name="{$vo.fieldArr}[{$vo.name}]" placeholder="请输入{$vo.title}" autocomplete="off" class="layui-input" value="{$vo.value}" lay-affix="eye">
  21. </div>
  22. {/case}
  23. {case value="tags"}
  24. <div class="layui-input-block">
  25. <input {$vo.extend_html} type="text" name="{$vo.fieldArr}[{$vo.name}]" class="layui-input form-tags tags-{$vo.name}" value="{$vo.value}" data-remark="{$vo.remark|default='输入回车键确认'}">
  26. </div>
  27. {/case}
  28. {case value="number"}
  29. <div class="layui-input-block">
  30. <input {$vo.extend_html} type="number" name="{$vo.fieldArr}[{$vo.name}]" placeholder="请输入{$vo.title}" autocomplete="off" lay-affix="number" class="layui-input" value="{$vo.value}">
  31. </div>
  32. {/case}
  33. {case value="switch"}
  34. <div class="layui-input-block">
  35. <input type="checkbox" name="{$vo.fieldArr}[{$vo.name}]" lay-skin="switch" lay-text="ON|OFF" value="{$vo['value']}" {if 1==$vo['value']}checked='' {/if}>
  36. </div>
  37. {/case}
  38. {case value="array"}
  39. <dl {$vo.extend_html} class="layui-input-block fieldlist" data-name="{$vo.fieldArr}[{$vo.name}]" data-id="{$vo.name}">
  40. <dd>
  41. <ins>键名</ins>
  42. <ins>键值</ins>
  43. </dd>
  44. <dd><button type="button" class="layui-btn btn-append">追加</button></dd>
  45. <textarea name="{$vo.fieldArr}[{$vo.name}]" class="layui-textarea layui-hide">{$vo.value}</textarea>
  46. </dl>
  47. {/case}
  48. {case value="checkbox"}
  49. <div class="layui-input-block">
  50. {volist name="vo.options" id="v"}
  51. <input type="checkbox" name="{$vo.fieldArr}[{$vo.name}][]" lay-skin="primary" title="{$v}" value="{$key}" {if in_array($key,$vo['value'])}checked{/if}>
  52. {/volist}
  53. </div>
  54. {/case}
  55. {case value="radio"}
  56. <div class="layui-input-block">
  57. {volist name="vo.options" id="v"}
  58. <input type="radio" name="{$vo.fieldArr}[{$vo.name}]" value="{$key}" title="{$v}" {if $key==$vo['value']}checked='' {/if}> {/volist}
  59. </div>
  60. {/case}
  61. {case value="select"}
  62. <div class="layui-input-block">
  63. <select name="{$vo.fieldArr}[{$vo.name}]">
  64. <option value=""></option>
  65. {if $vo.name=='project_id' && empty($vo.options)}
  66. {php}
  67. $productOptions = [];
  68. try {
  69. $productModel = \app\admin\model\cms\Models::where('status', 1)
  70. ->where(function ($query) {
  71. $query->where('tablename', 'cms_product')->whereOr('name', '产品模型');
  72. })->order('id', 'asc')->find();
  73. if ($productModel) {
  74. $prefix = \think\facade\Config::get('database.connections.mysql.prefix', '');
  75. $tableName = strpos($productModel['tablename'], $prefix) === 0 ? $productModel['tablename'] : $prefix . $productModel['tablename'];
  76. $list = \think\facade\Db::table($tableName)->where('status', 'in', [0,1])->order('id desc')->select()->toArray();
  77. foreach ($list as $item) {
  78. $label = $item['title'] ?? ($item['name'] ?? ('ID:' . $item['id']));
  79. $productOptions[$item['id']] = $label . ' [#' . $item['id'] . ']';
  80. }
  81. }
  82. } catch (\Throwable $e) {
  83. $productOptions = [];
  84. }
  85. {/php}
  86. {volist name="productOptions" id="v"}
  87. <option value="{$key}" {if $key==$vo['value']}selected="" {/if}>{$v}</option>
  88. {/volist}
  89. {else /}
  90. {volist name="vo.options" id="v"}
  91. <option value="{$key}" {if $key==$vo['value']}selected="" {/if}>{$v}</option>
  92. {/volist}
  93. {/if}
  94. </select>
  95. </div>
  96. {/case}
  97. {case value="selects"}
  98. <div class="layui-input-block">
  99. <div {$vo.extend_html} class="form-selects" data-name="{$vo.fieldArr}[{$vo.name}]" data-id="{$vo.name}" data-value="{$vo.value}" data-list="{$vo.options|json_encode}"></div>
  100. </div>
  101. {/case}
  102. {case value="selectpage"}
  103. <div class="layui-input-block">
  104. <input {$vo.extend_html} class="form-control layui-input selectpage" type="text" name="{$vo.fieldArr}[{$vo.name}]" data-source="{$vo.options.url|url}" data-multiple="{$vo.options.multiple|default='false'}" data-field="{$vo.options.field|default='name'}" data-primary-key="{$vo.options.key|default='id'}" data-max-select-limit="{$vo.options.max|default='20'}" data-pagination="{$vo.options.pagination|default='true'}" data-page-size="{$vo.options.limit|default='10'}" data-order-by="{$vo.options.order|default='id'}" value="{$vo.value}">
  105. </div>
  106. {/case}
  107. {case value="color"}
  108. <div class="layui-input-block">
  109. <div class="layui-input-inline" style="width: 120px;">
  110. <input {$vo.extend_html} type="text" name="{$vo.fieldArr}[{$vo.name}]" value="{$vo.value}" placeholder="请选择颜色" class="layui-input test-form-input" id="c-{$vo.name}">
  111. </div>
  112. <div class="layui-inline" style="left: -11px;">
  113. <div class="colorpicker" data-input-id="c-{$vo.name}"></div>
  114. </div>
  115. </div>
  116. {/case}
  117. {case value="datetime"}
  118. <div class="layui-input-block">
  119. <input {$vo.extend_html} type="text" class="layui-input datetime" name="{$vo.fieldArr}[{$vo.name}]" placeholder="请输入{$vo.title}" value="{$vo.value}">
  120. </div>
  121. {/case}
  122. {case value="datetimerange"}
  123. <div class="layui-input-block">
  124. <input {$vo.extend_html} type="text" class="layui-input datetime" name="{$vo.fieldArr}[{$vo.name}]" placeholder="请输入{$vo.title}" value="{$vo.value}" data-date-range="-">
  125. </div>
  126. {/case}
  127. {case value="textarea"}
  128. <div class="layui-input-block">
  129. <textarea {$vo.extend_html} placeholder="请输入{$vo.title}" class="layui-textarea" name="{$vo.fieldArr}[{$vo.name}]">{$vo.value}</textarea>
  130. </div>
  131. {/case}
  132. {case value="image" break="0"}{/case}
  133. {case value="images"}
  134. <div class="layui-input-block">
  135. <div class="layui-col-xs6">
  136. <input type="text" name="{$vo.fieldArr}[{$vo.name}]" id="c-{$vo.name}" value="{$vo.value|default=''}" class="layui-input">
  137. </div>
  138. <button type="button" class="layui-btn faupload" id="faupload-{$vo.name}" data-multiple="{$vo.type=='image'?'false':'true'}" data-input-id="c-{$vo.name}" data-preview-id="p-{$vo.name}" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp"><i class="iconfont icon-upload-line"></i> 上传</button><button type="button" class="layui-btn fachoose" data-multiple="{$vo.type=='image'?'false':'true'}" data-mimetype="image/*" data-input-id="c-{$vo.name}" id="fachoose-c-{$vo.name}"><i class="iconfont icon-list-unordered"></i> 选择</button>
  139. <ul class="layui-row list-inline plupload-preview" id="p-{$vo.name}"></ul>
  140. </div>
  141. {/case}
  142. {case value="file" break="0"}{/case}
  143. {case value="files"}
  144. <div class="layui-input-block">
  145. <div class="layui-col-xs6">
  146. <input type="text" name="{$vo.fieldArr}[{$vo.name}]" id="c-{$vo.name}" value="{$vo.value|default=''}" class="layui-input">
  147. </div>
  148. <button type="button" class="layui-btn faupload" id="faupload-{$vo.name}" data-multiple="{$vo.type=='file'?'false':'true'}" data-input-id="c-{$vo.name}" data-preview-id="p-{$vo.name}" data-type="file"><i class="iconfont icon-upload-line"></i> 上传</button><button type="button" class="layui-btn fachoose" data-multiple="{$vo.type=='file'?'false':'true'}" data-input-id="c-{$vo.name}" id="fachoose-c-{$vo.name}"><i class="iconfont icon-list-unordered"></i> 选择</button>
  149. </div>
  150. {/case}
  151. {case value="editor"}
  152. <div class="layui-input-block">
  153. <textarea {$vo.extend_html} name="{$vo.fieldArr}[{$vo.name}]" id="editor-{$vo.name}" class="layui-textarea editor" rows="5">{$vo.value}</textarea>
  154. </div>
  155. {if $vo.name == 'content'}
  156. <div class="{$vo.name}_attr editor_tool" style="margin-left: 140px;">
  157. <a class="layui-btn layui-btn-sm btn-grabimg" style="margin-top: 4px;"><i class="iconfont icon-image-line"></i> 图片本地化</a>
  158. {if $cmsConfig['site_getwords']}
  159. <a class="layui-btn layui-btn-sm btn-filterword" style="margin-top: 4px;"><i class="iconfont icon-alert-line"></i> 检测违禁词</a>
  160. {/if}
  161. {php}$info = get_addon_info('getwords');{/php}
  162. {if $info && $info['status']>0}
  163. <a class="layui-btn layui-btn-sm btn-getwords" style="margin-top: 4px;"><i class="iconfont icon-price-tag-3-line"></i> 提取关键词</a>
  164. {/if}
  165. <input type='checkbox' lay-skin='tag' name='modelField[get_introduce]' title='是否截取到内容摘要' checked>
  166. <input type='checkbox' lay-skin='tag' name='modelField[auto_thumb]' title='是否提取到缩略图' checked>
  167. </div>
  168. {/if}
  169. {/case}
  170. {case value="markdown"}
  171. <div class="layui-input-block">
  172. <textarea {$vo.extend_html} name="{$vo.fieldArr}[{$vo.name}]" id="markdown-{$vo.name}" class="layui-textarea markdown" rows="5">{$vo.value}</textarea>
  173. </div>
  174. {/case}
  175. {case value="city"}
  176. <div class="layui-input-block">
  177. <input {$vo.extend_html} type="text" autocomplete="on" class="layui-input" name="{$vo.fieldArr}[{$vo.name}]" id="{$vo.name}" value="{$vo.value}" data-toggle="city-picker" placeholder="请选择"/>
  178. </div>
  179. {/case}
  180. {case value="custom"}
  181. {$vo.options|raw}
  182. {/case}
  183. {/switch}
  184. {if $vo.remark}<div class="layui-form-mid no-float layui-word-aux">{$vo.remark}</div>{/if}
  185. </div>
  186. </div>
  187. {/volist}