Без опису
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

users_release_field.htm 54KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900
  1. <script>
  2. // 获取联动地址
  3. function GetFieldRegionData_1671086814(t,type){
  4. var name = $(t).attr('data-name');
  5. var parent_id = parseInt($(t).val());
  6. if(!parent_id || 0 >= parent_id){
  7. if ('province' == type) {
  8. $('#city_'+name).hide();
  9. $('#area_'+name).hide();
  10. }else if ('city' == type){
  11. $('#area_'+name).hide();
  12. }
  13. return false;
  14. }
  15. var url = "{:url('home/Ajax/ajax_get_region_data')}";
  16. $.ajax({
  17. url: url,
  18. data: {parent_id:parent_id,_ajax:1},
  19. type:'post',
  20. dataType:'json',
  21. success:function(res){
  22. if (res.region_html) {
  23. // 输出下一级栏目选项
  24. if ('province' == type) {
  25. res = '<option value="-1">请选择</option>'+ res.region_html;
  26. $('#city_'+name).empty().html(res);
  27. $('#city_'+name).show();
  28. $('#area_'+name).hide();
  29. $('#area_'+name).empty();
  30. }else if ('city' == type){
  31. res = '<option value="-1">请选择</option>'+ res.region_html;
  32. $('#area_'+name).empty().html(res);
  33. $('#area_'+name).show();
  34. }
  35. }
  36. },
  37. error : function(e) {
  38. layer.closeAll();
  39. layer.alert(e.responseText, {icon: 5});
  40. }
  41. });
  42. }
  43. </script>
  44. {volist name="$addonFieldExtList" id="vo"}
  45. {if !isset($vo.ifeditable) || $vo.ifeditable}
  46. {switch name="vo.dtype"}
  47. {case value="hidden"}
  48. <!-- 隐藏域 start -->
  49. <div class="item-from-row" style="display: none;">
  50. <div class="from-row-l">
  51. {if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<em>*</em>{/if}{$vo.title|default=''}:
  52. </div>
  53. <div class="from-row-r">
  54. <input type="hidden" class="el-input__inner w500" id="{$vo.fieldArr}_{$vo.name|default=''}" name="{$vo.fieldArr}[{$vo.name|default=''}]" value="{$vo.dfvalue|default=''}">
  55. <span class="err"></span>
  56. <p class="notic">{$vo.remark|default=''}</p>
  57. </div>
  58. </div>
  59. <!-- 隐藏域 start -->
  60. {/case}
  61. {case value="region"}
  62. {empty name="$vo.set_type"}
  63. <!-- 区域选项 单个区域 start -->
  64. <div class="item-from-row">
  65. <div class="from-row-l">
  66. {if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:
  67. </div>
  68. <div class="from-row-r">
  69. {volist name="$vo.dfvalue" id="v2"}
  70. <label class="radio-label">
  71. <span>{$v2['name']}</span>
  72. <input type="radio" class="radio" id="{$vo.fieldArr}_{$vo.name|default=''}" name="{$vo.fieldArr}[{$vo.name|default=''}]" value="{$v2['id']}" {if condition="isset($vo['trueValue']) AND in_array($v2['id'], $vo['trueValue'])"}checked="checked"{/if}>
  73. <span class="check-mark"></span>
  74. </label>
  75. {/volist}
  76. <span class="err"></span>
  77. <p class="notic">{$vo.remark|default=''}</p>
  78. </div>
  79. </div>
  80. <!-- 区域选项 end -->
  81. {else /}
  82. <!-- 区域选项 三级联动 start -->
  83. <div class="item-from-row">
  84. <div class="from-row-l">
  85. {if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:
  86. </div>
  87. <div class="from-row-r">
  88. <!--一级-->
  89. <select class="el-input_select_inner" name="{$vo.fieldArr}[{$vo.name|default=''}][]" id="province_{$vo.fieldArr}_{$vo.name|default=''}" data-name="{$vo.fieldArr}_{$vo.name|default=''}" onchange="GetFieldRegionData_1671086814(this,'province');" {if condition="!empty($vo.region_level) && $vo.region_level > 1"}disabled{/if}>
  90. <option value="-1">请选择</option>
  91. <option {if condition="$vo['trueValue'][0] === 0 || $vo['trueValue'][0] ==='0'"} selected {/if} value="0">全国</option>
  92. {volist name="$vo.dfvalue" id="v_p"}
  93. <option {if condition="$vo['trueValue'][0] == $v_p.id"} selected {/if} value="{$v_p.id}">{$v_p.name}</option>
  94. {/volist}
  95. </select>
  96. <!--二级-->
  97. <select class="el-input_select_inner" name="{$vo.fieldArr}[{$vo.name|default=''}][]" id="city_{$vo.fieldArr}_{$vo.name|default=''}" data-name="{$vo.fieldArr}_{$vo.name|default=''}" onchange="GetFieldRegionData_1671086814(this,'city');" {empty name="$vo['city_list']"}style="display: none;"{/empty} {if condition="!empty($vo.region_level) && $vo.region_level > 2"}disabled{/if}>
  98. {volist name="$vo.city_list" id="v_p"}
  99. <option {if condition="$vo['trueValue'][1] == $v_p.id"} selected {/if} value="{$v_p.id}">{$v_p.name}</option>
  100. {/volist}
  101. </select>
  102. <!--三级-->
  103. <select class="el-input_select_inner" name="{$vo.fieldArr}[{$vo.name|default=''}][]" id="area_{$vo.fieldArr}_{$vo.name|default=''}" {empty name="$vo['trueValue'][2]"}style="display: none;"{/empty}>
  104. {volist name="$vo.area_list" id="v_p"}
  105. <option {if condition="$vo['trueValue'][2] == $v_p.id"} selected {/if} value="{$v_p.id}">{$v_p.name}</option>
  106. {/volist}
  107. </select>
  108. <span class="err"></span>
  109. <p class="notic">{$vo.remark|default=''}</p>
  110. </div>
  111. </div>
  112. <!-- 区域选项 end -->
  113. {/empty}
  114. {/case}
  115. {case value="text"}
  116. <!-- 单行文本框 start -->
  117. <div class="item-from-row">
  118. <div class="from-row-l">
  119. {if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:
  120. </div>
  121. <div class="from-row-r">
  122. <input type="text" class="el-input__inner w500 fs16" id="{$vo.fieldArr}_{$vo.name|default=''}" name="{$vo.fieldArr}[{$vo.name|default=''}]" value="{$vo.dfvalue|default=''}">&nbsp;{$vo.dfvalue_unit|default=''}
  123. <span class="err"></span>
  124. <p class="notic">{$vo.remark|default=''}</p>
  125. </div>
  126. </div>
  127. <!-- 单行文本框 end -->
  128. {/case}
  129. {case value="multitext"}
  130. <!-- 多行1文本框 start -->
  131. <div class="item-from-row">
  132. <div class="from-row-l">
  133. {if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:
  134. </div>
  135. <div class="from-row-r">
  136. <textarea rows="5" cols="60" id="{$vo.fieldArr}_{$vo.name|default=''}" name="{$vo.fieldArr}[{$vo.name|default=''}]" class="fs16" style="height:60px;">{$vo.dfvalue|default=''}</textarea>
  137. <span class="err"></span>
  138. <p class="notic">{$vo.remark|default=''}</p>
  139. </div>
  140. </div>
  141. <!-- 多行文本框 end -->
  142. {/case}
  143. {case value="checkbox"}
  144. <!-- 复选框 start -->
  145. <div class="item-from-row">
  146. <div class="from-row-l">
  147. {if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:
  148. </div>
  149. <div class="from-row-r">
  150. {volist name="$vo.dfvalue" id="v2"}
  151. <label class="checkbox-label">
  152. <span>{$v2}</span>
  153. <input type="checkbox" class="checkbox" name="{$vo.fieldArr}[{$vo.name|default=''}][]" value="{$v2}" {if condition="isset($vo['trueValue']) AND in_array($v2, $vo['trueValue'])"}checked="checked"{/if} onclick="func_{$vo.name}_eyempty();">
  154. <span class="check-mark"></span>
  155. </label>&nbsp;
  156. {/volist}
  157. <input type="hidden" name="{$vo.fieldArr}[{$vo.name}_eyempty]" value="{if condition="!empty($vo['trueValue'])"}1{else /}0{/if}">
  158. <span class="err"></span>
  159. <p class="notic">{$vo.remark|default=''}</p>
  160. </div>
  161. </div>
  162. <script type="text/javascript">
  163. function func_{$vo.name}_eyempty()
  164. {
  165. var len = $("input[name='{$vo.fieldArr}[{$vo.name}][]']:checked").length;
  166. $("input[name='{$vo.fieldArr}[{$vo.name}_eyempty]']").val(len);
  167. }
  168. </script>
  169. <!-- 复选框 end -->
  170. {/case}
  171. {case value="radio"}
  172. <!-- 单选项 start -->
  173. <div class="item-from-row">
  174. <div class="from-row-l">
  175. {if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:
  176. </div>
  177. <div class="from-row-r">
  178. {volist name="$vo.dfvalue" id="v2"}
  179. <label class="radio-label">
  180. <span>{$v2}</span>
  181. <input type="radio" class="radio" id="{$vo.fieldArr}_{$vo.name|default=''}" name="{$vo.fieldArr}[{$vo.name|default=''}]" value="{$v2}" {if condition="isset($vo['trueValue']) AND in_array($v2, $vo['trueValue'])"}checked="checked"{/if}>
  182. <span class="check-mark"></span>
  183. </label>&nbsp;
  184. {/volist}
  185. <span class="err"></span>
  186. <p class="notic">{$vo.remark|default=''}</p>
  187. </div>
  188. </div>
  189. <!-- 单选项 end -->
  190. {/case}
  191. {case value="switch"}
  192. <!-- 开关 start -->
  193. <div class="item-from-row">
  194. <div class="from-row-l">
  195. {if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:
  196. </div>
  197. <div class="from-row-r">
  198. <div class="on-off">
  199. <label for="{$vo.fieldArr}_{$vo.name|default=''}1" class="cb-enable {if condition="0 != $vo['dfvalue']"}selected{/if}">是</label>
  200. <label for="{$vo.fieldArr}_{$vo.name|default=''}0" class="cb-disable {if condition="0 == $vo['dfvalue']"}selected{/if}">否</label>
  201. <input id="{$vo.fieldArr}_{$vo.name|default=''}1" name="{$vo.fieldArr}[{$vo.name|default=''}]" value="1" type="radio" {if condition="0 != $vo['dfvalue']"}checked="checked"{/if}>
  202. <input id="{$vo.fieldArr}_{$vo.name|default=''}0" name="{$vo.fieldArr}[{$vo.name|default=''}]" value="0" type="radio" {if condition="0 == $vo['dfvalue']"}checked="checked"{/if}>
  203. </div>
  204. <span class="err"></span>
  205. <p class="notic">{$vo.remark|default=''}</p>
  206. </div>
  207. </div>
  208. <script type="text/javascript">
  209. $(function(){
  210. //自定义radio样式
  211. $(".cb-enable").on('click', function(){
  212. var parent = $(this).parents('.on-off');
  213. $('.cb-disable',parent).removeClass('selected');
  214. $(this).addClass('selected');
  215. $('.checkbox',parent).attr('checked', true);
  216. });
  217. $(".cb-disable").on('click', function(){
  218. var parent = $(this).parents('.on-off');
  219. $('.cb-enable',parent).removeClass('selected');
  220. $(this).addClass('selected');
  221. $('.checkbox',parent).attr('checked', false);
  222. });
  223. });
  224. </script>
  225. <!-- 开关 end -->
  226. {/case}
  227. {case value="select"}
  228. <!-- 下拉框 start -->
  229. <div class="item-from-row">
  230. <div class="from-row-l">
  231. {if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:
  232. </div>
  233. <div class="from-row-r">
  234. <div class="w300 select">
  235. <select name="{$vo.fieldArr}[{$vo.name|default=''}]" id="{$vo.fieldArr}_{$vo.name|default=''}">
  236. {volist name="$vo.dfvalue" id="v2"}
  237. <option value="{$v2}" {if condition="isset($vo['trueValue']) AND in_array($v2, $vo['trueValue'])"}selected{/if}>{$v2}</option>
  238. {/volist}
  239. </select>
  240. </div>
  241. <span class="err"></span>
  242. <p class="notic">{$vo.remark|default=''}</p>
  243. </div>
  244. </div>
  245. <!-- 下拉框 end -->
  246. {/case}
  247. {case value="img"}
  248. <style type="text/css">
  249. .input-file-show{
  250. position: relative;
  251. width: 120px;
  252. height: 120px;
  253. overflow: hidden;
  254. }
  255. .input-file-show img {
  256. position: absolute;
  257. width: 120px;
  258. height: 120px;
  259. }
  260. .input-file-show span {
  261. position: absolute;
  262. bottom: 0;
  263. width: 120px;
  264. height: 26px;
  265. line-height: 26px;
  266. text-align: center;
  267. background-color: rgba(0,0,0,0.6);
  268. color: #fff;
  269. z-index: 2;
  270. }
  271. </style>
  272. <div class="item-from-row">
  273. <div class="from-row-l">
  274. {$vo.title}:
  275. </div>
  276. <div class="from-row-r">
  277. <div tabindex="0" class="input-file-show" onclick="$('#file_{$vo.fieldArr}_{$vo.name|default=''}').trigger('click');" style="cursor: pointer;">
  278. <img id="img_{$vo.fieldArr}_{$vo.name|default=''}" class="img-fluid" src="{$vo['dfvalue']|default='__PUBLIC__/static/common/images/not_upload_pic.png'}"/>
  279. </div>
  280. </div>
  281. <input type="file" id="file_{$vo.fieldArr}_{$vo.name|default=''}" onchange="upload_{$vo.fieldArr}_{$vo.name|default=''}(this)" style="display: none;">
  282. <input type="hidden" class="type-file-text" name="{$vo.fieldArr}[{$vo.name|default=''}]" id="{$vo.fieldArr}_{$vo.name|default=''}" value="{$vo.dfvalue|default=''}">
  283. </div>
  284. <script type="text/javascript">
  285. // 单图上传 2021.01.05
  286. function upload_{$vo.fieldArr}_{$vo.name|default=''}(e){
  287. var file = $(e)[0].files[0];
  288. if (!file) {
  289. return false;
  290. }
  291. var formData = new FormData();
  292. formData.append('file',file);
  293. formData.append('_ajax',1);
  294. layer_loading('正在处理');
  295. $.ajax({
  296. type: 'post',
  297. url: eyou_basefile + "?m=user&c=Uploadify&a=imageUp",
  298. data: formData,
  299. contentType: false,
  300. processData: false,
  301. dataType: 'json',
  302. success: function (res) {
  303. if (res.state == 'SUCCESS') {
  304. $("#{$vo.fieldArr}_{$vo.name|default=''}").val(res.url)
  305. $("#img_{$vo.fieldArr}_{$vo.name|default=''}").attr('src',res.url);
  306. layer.closeAll();
  307. } else {
  308. layer.closeAll();
  309. showErrorAlert(res.state);
  310. }
  311. },
  312. error : function(e) {
  313. layer.closeAll();
  314. showErrorAlert(e.responseText);
  315. }
  316. })
  317. }
  318. </script>
  319. <!-- 单张图 end -->
  320. {/case}
  321. {case value="file"}
  322. {eyou:static file="/public/plugins/layui/css/layui.css" /}
  323. <!-- {eyou:static file="/public/plugins/layui/layui.js" /} -->
  324. <!-- 单个文件 start -->
  325. <div class="item-from-row">
  326. <div class="from-row-l">
  327. {$vo.title}:
  328. </div>
  329. <div class="from-row-r" >
  330. <a id="download_file_{$vo.fieldArr}_{$vo.name|default=''}" style="margin-right: 30px;text-decoration: underline;{eyou:notempty name='$vo.dfvalue' /}display: '';{eyou:else /}display: none;{/eyou:notempty}"
  331. {eyou:notempty name='$vo.dfvalue' /} href="{$vo.dfvalue|default=''}" download="{$vo.dfvalue|get_filename=###}" {/eyou:notempty}>
  332. <img src="__STATIC__/common/images/file.png" alt="" style="width: 16px;height: 16px;">下载附件</a>
  333. <input type="text" id="{$vo.fieldArr}_{$vo.name|default=''}" name="{$vo.fieldArr}[{$vo.name|default=''}]" value="{$vo.dfvalue|default=''}" style="display: none;">
  334. <button type="button" class="el-button el-button--primary is-plain el-button--small" id="upload_{$vo.fieldArr}_{$vo.name|default=''}" ><i class="el-icon-paperclip"></i>上传文件</button>
  335. </div>
  336. </div>
  337. <script>
  338. $(function(){
  339. layui.use('upload', function(){
  340. var upload = layui.upload;
  341. //执行实例
  342. upload.render({
  343. elem: "#upload_{$vo.fieldArr}_{$vo.name|default=''}" //绑定元素
  344. ,url: "{:url('user/Uploadify/DownloadUploadFileAjax')}"
  345. ,accept: 'file' //普通文件
  346. ,exts: '{$vo.ext}'
  347. ,size: {$vo.filesize} //限制文件大小,单位 KB
  348. ,done: function(res){
  349. //上传完毕回调
  350. if (res.state=="SUCCESS"){
  351. layer.msg('上传成功!')
  352. $("#{$vo.fieldArr}_{$vo.name|default=''}").val(res.url);
  353. $("#download_file_{$vo.fieldArr}_{$vo.name|default=''}").css('display','');
  354. $("#download_file_{$vo.fieldArr}_{$vo.name|default=''}").attr('href',res.url);
  355. var arr = res.url.split("/");
  356. var download = arr[arr.length-1];
  357. $("#download_file_{$vo.fieldArr}_{$vo.name|default=''}").attr('download',download);
  358. $("#download_file_{$vo.fieldArr}_{$vo.name|default=''}").css('color','#000');
  359. $("#download_file_{$vo.fieldArr}_{$vo.name|default=''}").html('<img src="__STATIC__/common/images/file.png" alt="" style="width: 16px;height: 16px;">下载附件');
  360. }else {
  361. $("#download_file_{$vo.fieldArr}_{$vo.name|default=''}").css('display','');
  362. $("#download_file_{$vo.fieldArr}_{$vo.name|default=''}").css('color','red');
  363. $("#download_file_{$vo.fieldArr}_{$vo.name|default=''}").text(res.state);
  364. }
  365. }
  366. ,error: function(){
  367. //请求异常回调
  368. }
  369. });
  370. });
  371. })
  372. </script>
  373. <!-- 单个文件 end -->
  374. {/case}
  375. {case value="media"}
  376. {eyou:static file="/public/plugins/layui/css/layui.css" /}
  377. <!-- {eyou:static file="/public/plugins/layui/layui.js" /} -->
  378. <!-- 多媒体上传 -->
  379. <div class="item-from-row">
  380. <div class="from-row-l">
  381. {$vo.title}:
  382. </div>
  383. <div class="from-row-r" >
  384. <a id="media_a_{$vo.fieldArr}_{$vo.name|default=''}" style="margin-right: 30px;text-decoration: underline;{eyou:notempty name='$vo.dfvalue' /}display: '';{eyou:else /}display: none;{/eyou:notempty}" target="_blank"
  385. {eyou:notempty name='$vo.dfvalue' /} href="{$vo.dfvalue|default=''}" {/eyou:notempty}>
  386. <img src="__STATIC__/common/images/file.png" alt="" style="width: 16px;height: 16px;">点击查看</a>
  387. <input type="text" id="{$vo.fieldArr}_{$vo.name|default=''}" name="{$vo.fieldArr}[{$vo.name|default=''}]" value="{$vo.dfvalue|default=''}" style="display: none;">
  388. <input type="file" id="{$vo.fieldArr}_{$vo.name|default=''}_upload_media" onchange="{$vo.fieldArr}_{$vo.name|default=''}_upload_media_20210506(this)" style="display: none;">
  389. <button type="button" class="el-button el-button--primary is-plain el-button--small" id="{$vo.fieldArr}_{$vo.name|default=''}_title_upload_media" onclick="$('#{$vo.fieldArr}_{$vo.name|default=\'\'}_upload_media').attr('data-type', '{$vo.upload_flag}').trigger('click');">上传文件</button>
  390. </div>
  391. </div>
  392. <script>
  393. function {$vo.fieldArr}_{$vo.name|default=''}_upload_media_20210506(e){
  394. var data_type = $(e).attr('data-type');
  395. if ('qny' == data_type) {
  396. {$vo.fieldArr}_{$vo.name|default=''}_qny_upload_media(e);
  397. } else if ('oss' == data_type) {
  398. {$vo.fieldArr}_{$vo.name|default=''}_oss_upload_media(e);
  399. } else if ('cos' == data_type) {
  400. {$vo.fieldArr}_{$vo.name|default=''}_cos_upload_media(e);
  401. } else {
  402. {$vo.fieldArr}_{$vo.name|default=''}_local_upload_media(e);
  403. }
  404. }
  405. function beforeUploadMedia(ext,file){
  406. var type = '{$vo.ext}';
  407. var extArr = [];
  408. extArr = type.split("|");
  409. var exts = ext.replace(".","");
  410. if (extArr.indexOf(exts) == -1) {
  411. showErrorMsg('仅支持{$vo.ext}格式');
  412. return false;
  413. }
  414. size = parseInt("{$vo.filesize}");
  415. if (file.size > size) {
  416. if (size >= 1048576) {
  417. limit = size/1024/1024;
  418. limit = limit + 'MB';
  419. }else {
  420. limit = size/1024 ;
  421. limit = limit + 'KB';
  422. }
  423. showErrorMsg('仅支持'+limit+'以内的文件');
  424. return false;
  425. }
  426. return true;
  427. }
  428. function {$vo.fieldArr}_{$vo.name|default=''}_qny_upload_media(e) {
  429. var file = $(e)[0].files[0];
  430. var fileName = file.name;
  431. var fileExt = fileName.substr(fileName.lastIndexOf('.')).toLowerCase();
  432. ret = beforeUploadMedia(fileExt,file);
  433. if (ret){
  434. $.ajax({
  435. type: 'POST',
  436. url: '__ROOT_DIR__/index.php?m=plugins&c=Qiniuyun&a=qiniu_upload',
  437. data: {_ajax: 1},
  438. dataType: "JSON",
  439. success: function(res1) {
  440. if (1 == res1.code) {
  441. var token = res1.data.token;
  442. var formData = new FormData();
  443. formData.append('file', file);
  444. formData.append('token', token);
  445. fileName = res1.data.filePath + fileExt;
  446. formData.append('key', fileName);
  447. $.ajax({
  448. url: res1.data.uphost,
  449. type: 'POST',
  450. dataType: 'JSON',
  451. data: formData,
  452. timeout: 1200000,
  453. cache: false,
  454. processData: false,
  455. contentType: false,
  456. xhr: function () {
  457. myXhr = $.ajaxSettings.xhr();
  458. if (myXhr.upload) {
  459. myXhr.upload.addEventListener('progress', function(e){
  460. var curr = e.loaded;
  461. var total = e.total;
  462. process = parseInt(curr / total * 100);
  463. $("#{$vo.fieldArr}_{$vo.name|default=''}_title_upload_media").text('上传中...'+process+"%");
  464. });
  465. }
  466. return myXhr;
  467. },
  468. success: function(res2) {
  469. $("#{$vo.fieldArr}_{$vo.name|default=''}_title_upload_media").text('上传成功');
  470. setTimeout(function() {
  471. $('#{$vo.fieldArr}_{$vo.name|default=\'\'}_title_upload_media').text('上传文件');
  472. }, 2000);
  473. var video_url = res1.data.domain + "/" + res2.key;
  474. $("#{$vo.fieldArr}_{$vo.name|default=''}").val(video_url);
  475. $("#media_a_{$vo.fieldArr}_{$vo.name|default=''}").show();
  476. $("#media_a_{$vo.fieldArr}_{$vo.name|default=''}").attr('href',video_url);
  477. },
  478. error: function(e) {
  479. layer.closeAll();
  480. showErrorMsg(e.responseText);
  481. return false;
  482. }
  483. });
  484. } else {
  485. layer.closeAll();
  486. showErrorMsg(res1.msg);
  487. }
  488. },
  489. error: function(e) {
  490. layer.closeAll();
  491. showErrorMsg(e.responseText);
  492. }
  493. });
  494. }
  495. }
  496. function {$vo.fieldArr}_{$vo.name|default=''}_oss_upload_media(e) {
  497. var file = $(e)[0].files[0];
  498. var fileName = file.name;
  499. var fileExt = fileName.substr(fileName.lastIndexOf('.')).toLowerCase();
  500. ret = beforeUploadMedia(fileExt,file);
  501. if (ret) {
  502. $.ajax({
  503. type: 'POST',
  504. url: '__ROOT_DIR__/index.php?m=plugins&c=AliyunOss&a=oss_upload',
  505. data: {_ajax: 1},
  506. dataType: "JSON",
  507. success: function (res1) {
  508. if (1 == res1.code) {
  509. fileName = res1.data.filePath + fileExt;
  510. //组装发送数据
  511. var request = new FormData();
  512. request.append("OSSAccessKeyId", res1.data.accessid);
  513. request.append("policy", res1.data.policy);
  514. request.append("Signature", res1.data.signature);
  515. request.append("key", fileName);
  516. request.append("success_action_status", 201);
  517. request.append('file', file);
  518. $.ajax({
  519. url: res1.data.host,
  520. data: request,
  521. processData: false,
  522. cache: false,
  523. contentType: false,
  524. dataType: 'xml',
  525. type: 'post',
  526. xhr: function () {
  527. myXhr = $.ajaxSettings.xhr();
  528. if (myXhr.upload) {
  529. myXhr.upload.addEventListener('progress', function (e) {
  530. var curr = e.loaded;
  531. var total = e.total;
  532. var process = parseInt(curr / total * 100);
  533. $("#{$vo.fieldArr}_{$vo.name|default=''}_title_upload_media").text('上传中...' + process + "%");
  534. });
  535. }
  536. return myXhr;
  537. },
  538. success: function (data) {
  539. var res = $(data).find('PostResponse');
  540. if (res) {
  541. var key = res.find('Key').text();
  542. $("#{$vo.fieldArr}_{$vo.name|default=''}_title_upload_media").text('上传成功');
  543. setTimeout(function () {
  544. $('#{$vo.fieldArr}_{$vo.name|default=\'\'}_title_upload_media').text('上传文件');
  545. }, 2000);
  546. var video_url = res1.data.domain + "/" + key;
  547. $("#{$vo.fieldArr}_{$vo.name|default=''}").val(video_url);
  548. $("#media_a_{$vo.fieldArr}_{$vo.name|default=''}").show();
  549. $("#media_a_{$vo.fieldArr}_{$vo.name|default=''}").attr('href', video_url);
  550. } else {
  551. $("#{$vo.fieldArr}_{$vo.name|default=''}_title_upload_media").text('上传失败');
  552. setTimeout(function () {
  553. $('#{$vo.fieldArr}_{$vo.name|default=\'\'}_title_upload_media').text('上传文件');
  554. }, 2000);
  555. }
  556. },
  557. error: function (e) {
  558. layer.closeAll();
  559. console.log(e.responseText);
  560. }
  561. });
  562. } else {
  563. layer.closeAll();
  564. showErrorMsg(res1.msg);
  565. }
  566. },
  567. error: function (e) {
  568. layer.closeAll();
  569. showErrorMsg(e.responseText);
  570. }
  571. });
  572. }
  573. }
  574. function {$vo.fieldArr}_{$vo.name|default=''}_cos_upload_media(e) {
  575. var file = $(e)[0].files[0];
  576. var fileName = file.name;
  577. var fileExt = fileName.substr(fileName.lastIndexOf('.')).toLowerCase();
  578. ret = beforeUploadMedia(fileExt,file);
  579. if (ret) {
  580. var formData = new FormData();
  581. formData.append('file', file);
  582. formData.append('file_ext', fileExt);
  583. $.ajax({
  584. type: 'post',
  585. url: '__ROOT_DIR__/index.php?m=plugins&c=Cos&a=cos_upload&_ajax=1',
  586. data: formData,
  587. contentType: false,
  588. processData: false,
  589. dataType: 'json',
  590. xhr: function () {
  591. myXhr = $.ajaxSettings.xhr();
  592. if (myXhr.upload) {
  593. myXhr.upload.addEventListener('progress', function (e) {
  594. var curr = e.loaded;
  595. var total = e.total;
  596. process = parseInt(curr / total * 100);
  597. if (100 == process) {
  598. process = 99;
  599. }
  600. $("#{$vo.fieldArr}_{$vo.name|default=''}_title_upload_media").text('上传中...' + process + "%");
  601. });
  602. }
  603. return myXhr;
  604. },
  605. success: function (res) {
  606. if (1 == res.code) {
  607. $("#{$vo.fieldArr}_{$vo.name|default=''}_title_upload_media").text('上传成功');
  608. $("#{$vo.fieldArr}_{$vo.name|default=''}").val(res.data.url);
  609. $("#media_a_{$vo.fieldArr}_{$vo.name|default=''}").show();
  610. $("#media_a_{$vo.fieldArr}_{$vo.name|default=''}").attr('href', res.data.url);
  611. } else {
  612. $("#{$vo.fieldArr}_{$vo.name|default=''}_title_upload_media").text('上传失败');
  613. }
  614. setTimeout(function () {
  615. $('#{$vo.fieldArr}_{$vo.name|default=\'\'}_title_upload_media').text('上传文件');
  616. }, 2000);
  617. },
  618. error: function (e) {
  619. layer.closeAll();
  620. showErrorMsg(e.responseText);
  621. }
  622. });
  623. }
  624. }
  625. function {$vo.fieldArr}_{$vo.name|default=''}_local_upload_media(e){
  626. var file = $(e)[0].files[0];
  627. var fileName = file.name;
  628. var fileExt = fileName.substr(fileName.lastIndexOf('.')).toLowerCase();
  629. ret = beforeUploadMedia(fileExt,file);
  630. if (ret) {
  631. var formData = new FormData();
  632. formData.append('file', file);
  633. $.ajax({
  634. type: 'post',
  635. url: "{:url('user/Uploadify/AjaxUploadMedia', ['savepath'=>'media'])}",
  636. data: formData,
  637. contentType: false,
  638. processData: false,
  639. dataType: 'json',
  640. xhr: function () {
  641. myXhr = $.ajaxSettings.xhr();
  642. if (myXhr.upload) {
  643. myXhr.upload.addEventListener('progress', function (e) {
  644. var curr = e.loaded;
  645. var total = e.total;
  646. process = parseInt(curr / total * 100);
  647. $("#upload_video_litpic_local").html('上传中...' + process + "%");
  648. });
  649. }
  650. return myXhr;
  651. },
  652. success: function (res) {
  653. if ("SUCCESS" == res.state) {
  654. $("#{$vo.fieldArr}_{$vo.name|default=''}_title_upload_media").html('上传成功');
  655. setTimeout(function () {
  656. $('#{$vo.fieldArr}_{$vo.name|default=\'\'}_title_upload_media').html('上传文件');
  657. }, 2000);
  658. $("#{$vo.fieldArr}_{$vo.name|default=''}").val(res.url);
  659. $("#media_a_{$vo.fieldArr}_{$vo.name|default=''}").show();
  660. $("#media_a_{$vo.fieldArr}_{$vo.name|default=''}").attr('href', res.url);
  661. } else {
  662. showErrorMsg(res.msg);
  663. }
  664. }
  665. });
  666. }
  667. }
  668. </script>
  669. {/case}
  670. {case value="imgs"}
  671. <script type="text/javascript" src="__STATIC__/admin/js/jquery-ui/jquery-ui.min.js"></script>
  672. <!-- 多张图 start -->
  673. <div class="item-from-row" id="dl_{$vo.fieldArr}_{$vo.name|default=''}">
  674. <div class="from-row-l">
  675. <label for="title">{if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:</label>
  676. </div>
  677. <div class="from-row-r">
  678. <div class="images_upload_main" id="tab_{$vo.fieldArr}_{$vo.name|default=''}">
  679. <!-- <a href="javascript:void(0);" onClick="GetUploadify(100,'','allimg','{$vo.fieldArr}_{$vo.name|default=''}_call_back', '', '{$vo.title}');" class="el-button el-button--primary is-plain el-button--small">
  680. <i class="el-icon-picture"></i>上传图片
  681. </a> -->
  682. <div class="sort-list-{$vo.fieldArr}_{$vo.name|default=''} mt10">
  683. {volist name="$vo[$vo['name'].'_eyou_imgupload_list']" id="v2" key="k2"}
  684. <div class="fieldext_upload fieldext_upload_html" >
  685. <div class="images_upload_item">
  686. <input type="hidden" name="{$vo.fieldArr}[{$vo.name|default=''}][]" value="{$v2.image_url|default=''}">
  687. <a href="{$v2.image_url|default=''}" onclick="" target="_blank">
  688. <img src="{$v2.image_url|default=''}" width="120" height="120">
  689. </a>
  690. <a class="delete" title="删除" href="javascript:void(0)" onclick="{$vo.fieldArr}_{$vo.name|default=''}_ClearPicArr2(this,'{$v2.image_url|default=''}')"></a>
  691. </div>
  692. </div>
  693. {/volist}
  694. <div class="fieldext_upload" style="display:none;"></div>
  695. </div>
  696. <a href="javascript:void(0);" onClick="GetUploadify(100,'','allimg','{$vo.fieldArr}_{$vo.name|default=''}_call_back', '', '{$vo.title}');" class="img-upload" title="上传图片">
  697. <div class="y-line"></div>
  698. <div class="x-line"></div>
  699. </a>
  700. </div>
  701. <!-- 上传图片显示的样板 start -->
  702. <div class="{$vo.fieldArr}_{$vo.name|default=''}_upload_tpl" style="display: none;">
  703. <div class="fieldext_upload fieldext_upload_html">
  704. <div class="images_upload_item">
  705. <input type="hidden" name="{$vo.fieldArr}[{$vo.name|default=''}][]" value="" />
  706. <a href="javascript:void(0);" onClick="" >
  707. <img src="__STATIC__/admin/images/add-button.jpg" width="120" height="120" />
  708. </a>
  709. <a class="delete" href="javascript:void(0)" title="删除">&nbsp;&nbsp;</a>
  710. </div>
  711. </div>
  712. </div>
  713. <!-- 上传图片显示的样板 end -->
  714. </div>
  715. </div>
  716. <script type="text/javascript">
  717. // 上传多图回调函数
  718. function {$vo.fieldArr}_{$vo.name|default=''}_call_back(paths){
  719. var last_div = $(".{$vo.fieldArr}_{$vo.name|default=''}_upload_tpl").html();
  720. for (var i=0;i<paths.length ;i++ )
  721. {
  722. if ($(".sort-list-{$vo.fieldArr}_{$vo.name|default=''} .fieldext_upload_html").length > 0) {
  723. $(".sort-list-{$vo.fieldArr}_{$vo.name|default=''} .fieldext_upload_html:last").after(last_div); // 插入一个 新图片
  724. } else {
  725. $(".sort-list-{$vo.fieldArr}_{$vo.name|default=''} .fieldext_upload:last").before(last_div); // 插入一个 新图片
  726. }
  727. $(".sort-list-{$vo.fieldArr}_{$vo.name|default=''} .fieldext_upload_html:last").find('a:eq(0)').attr('href',paths[i]).attr('onclick','').attr('target', "_blank");// 修改他的链接地址
  728. $(".sort-list-{$vo.fieldArr}_{$vo.name|default=''} .fieldext_upload_html:last").find('img').attr('src',paths[i]);// 修改他的图片路径
  729. $(".sort-list-{$vo.fieldArr}_{$vo.name|default=''} .fieldext_upload_html:last").find('a:eq(1)').attr('onclick',"{$vo.fieldArr}_{$vo.name|default=''}_ClearPicArr2(this,'"+paths[i]+"')").text('');
  730. $(".sort-list-{$vo.fieldArr}_{$vo.name|default=''} .fieldext_upload_html:last").find('input').val(paths[i]); // 设置隐藏域 要提交的值
  731. }
  732. }
  733. /*
  734. * 上传之后删除组图input
  735. * @access public
  736. * @val string 删除的图片input
  737. */
  738. function {$vo.fieldArr}_{$vo.name|default=''}_ClearPicArr2(obj,path)
  739. {
  740. // 删除数据库记录
  741. $.ajax({
  742. type:'POST',
  743. url:"{:url('user/UsersRelease/del_channelimgs', ['_ajax'=>1])}",
  744. data:{filename:path,channel:"{$channel_id|default='0'}",fieldid:"{$vo.id}",aid:"{$aid|default='0'}"},
  745. success:function(){
  746. $(obj).parent().remove(); // 删除完服务器的, 再删除 html上的图片
  747. $.ajax({
  748. type:'POST',
  749. url:"{:url('user/Uploadify/delupload', ['_ajax'=>1])}",
  750. data:{action:"del", filename:path},
  751. success:function(){}
  752. });
  753. }
  754. });
  755. }
  756. /** 以下 图集相册的拖动排序相关 js*/
  757. $( ".sort-list-{$vo.fieldArr}_{$vo.name|default=''}" ).sortable({
  758. start: function( event, ui) {
  759. }
  760. ,stop: function( event, ui ) {
  761. }
  762. });
  763. //因为他们要拖动,所以尽量设置他们的文字不能选择。
  764. $( ".sort-list-{$vo.fieldArr}_{$vo.name|default=''}" ).disableSelection();
  765. </script>
  766. <!-- 多张图 end -->
  767. {/case}
  768. {case value="int"}
  769. <!-- 整数类型 start -->
  770. <div class="item-from-row">
  771. <div class="from-row-l">
  772. <label for="title">{if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:</label>
  773. </div>
  774. <div class="from-row-r">
  775. <input type="text" value="{$vo.dfvalue|default=''}" name="{$vo.fieldArr}[{$vo.name|default=''}]" id="{$vo.fieldArr}_{$vo.name|default=''}" placeholder="只允许纯数字" class="el-input__inner w500" onkeyup="this.value=this.value.replace(/[^0-9]/g,'');" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^0-9]/g,''));">&nbsp;{$vo.dfvalue_unit|default=''}
  776. <span class="err"></span>
  777. <p class="notic">{$vo.remark|default=''}</p>
  778. </div>
  779. </div>
  780. <!-- 整数类型 end -->
  781. {/case}
  782. {case value="float"}
  783. <!-- 小数类型 start -->
  784. <div class="item-from-row">
  785. <div class="from-row-l">
  786. <label for="title">{if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:</label>
  787. </div>
  788. <div class="from-row-r">
  789. <input type="text" value="{$vo.dfvalue|default=''}" name="{$vo.fieldArr}[{$vo.name|default=''}]" id="{$vo.fieldArr}_{$vo.name|default=''}" placeholder="允许带有小数点的数值" class="el-input__inner w500" onkeyup="this.value=this.value.replace(/[^0-9\.]/g,'');" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^0-9\.]/g,''));">&nbsp;{$vo.dfvalue_unit|default=''}
  790. <span class="err"></span>
  791. <p class="notic">{$vo.remark|default=''}</p>
  792. </div>
  793. </div>
  794. <!-- 小数类型 end -->
  795. {/case}
  796. {case value="decimal"}
  797. <!-- 金额类型 start -->
  798. <div class="item-from-row">
  799. <div class="from-row-l">
  800. <label for="title">{if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:</label>
  801. </div>
  802. <div class="from-row-r">
  803. <input type="text" value="{$vo.dfvalue|default=''}" name="{$vo.fieldArr}[{$vo.name|default=''}]" id="{$vo.fieldArr}_{$vo.name|default=''}" placeholder="允许带有小数点的金额" class="el-input__inner w500" onkeyup="this.value=this.value.replace(/[^0-9\.]/g,'');" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^0-9\.]/g,''));">&nbsp;{$vo.dfvalue_unit|default=''}
  804. <span class="err"></span>
  805. <p class="notic">{$vo.remark|default=''}</p>
  806. </div>
  807. </div>
  808. <!-- 金额类型 end -->
  809. {/case}
  810. {case value="datetime"}
  811. <!-- 日期和时间 start -->
  812. <div class="item-from-row">
  813. <div class="from-row-l">
  814. <label for="title">{if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:</label>
  815. </div>
  816. <div class="from-row-r">
  817. <input type="text" class="el-input__inner w500" name="{$vo.fieldArr}[{$vo.name|default=''}]" id="{$vo.fieldArr}_{$vo.name|default=''}" value="{$vo['dfvalue']}">
  818. <i class="el-icon-date"></i>
  819. <span class="err"></span>
  820. <p class="notic">{$vo.remark|default=''}</p>
  821. </div>
  822. </div>
  823. <script type="text/javascript">
  824. $(function () {
  825. $('#{$vo.fieldArr}_{$vo.name|default=''}').layDate();
  826. });
  827. </script>
  828. <!-- 日期和时间 end -->
  829. {/case}
  830. {case value="htmltext"}
  831. <!-- HTML文本 start -->
  832. <div class="item-from-row">
  833. <div class="from-row-l">
  834. <label for="title">{if condition="isset($vo['ifrequire']) AND !empty($vo['ifrequire'])"}<span class="red">*</span>{/if}{$vo.title|default=''}:</label>
  835. </div>
  836. <div class="from-row-r">
  837. <textarea class="wb100" id="{$vo.fieldArr}_{$vo.name|default=''}" data-func="{$vo.fieldArr}_{$vo.name|default=''}" name="{$vo.fieldArr}[{$vo.name|default=''}]" title="">{$vo.dfvalue|default=''}</textarea>
  838. <span class="err"></span>
  839. <p class="notic">{$vo.remark|default=''}</p>
  840. </div>
  841. </div>
  842. <script type="text/javascript">
  843. var ue_{$vo.fieldArr}_{$vo.name|default=''} = UE.getEditor('{$vo.fieldArr}_{$vo.name|default=''}',{
  844. serverUrl :"{:url('Uploadify/index',array('savepath'=>'allimg'))}",
  845. zIndex: 999,
  846. initialFrameWidth: "100%", //初化宽度
  847. initialFrameHeight: 350, //初化高度
  848. focus: false, //初始化时,是否让编辑器获得焦点true或false
  849. maximumWords: 99999,
  850. removeFormatAttributes: 'class,style,lang,width,height,align,hspace,valign',//允许的最大字符数 'fullscreen',
  851. pasteplain:false, //是否默认为纯文本粘贴。false为不使用纯文本粘贴,true为使用纯文本粘贴
  852. autoHeightEnabled: false,
  853. toolbars: [['fullscreen', 'forecolor', 'backcolor', 'removeformat', '|', 'simpleupload', 'unlink', '|', 'paragraph', 'fontfamily', 'fontsize']],
  854. // xss 过滤是否开启,inserthtml等操作
  855. xssFilterRules: true,
  856. //input xss过滤
  857. inputXssFilter: true,
  858. //output xss过滤
  859. outputXssFilter: true
  860. });
  861. //必须在提交前渲染编辑器;
  862. function {$vo.fieldArr}_{$vo.name|default=''}() {
  863. //判断编辑模式状态:0表示【源代码】HTML视图;1是【设计】视图,即可见即所得;-1表示不可用
  864. if(UE.getEditor("{$vo.fieldArr}_{$vo.name|default=''}").queryCommandState('source') != 0) {
  865. UE.getEditor("{$vo.fieldArr}_{$vo.name|default=''}").execCommand('source'); //切换到【设计】视图
  866. }
  867. }
  868. </script>
  869. <!-- HTML文本 end -->
  870. {/case}
  871. {/switch}
  872. {/if}
  873. {/volist}