Ingen beskrivning
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

users_release_field.htm 49KB

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