upload.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796
  1. var upload_pic = [];
  2. var upload_pic_info = [];
  3. var upload_file = [];
  4. var upload = [];
  5. var showUploadE = false;
  6. var showUploadFilesUploadE = false;
  7. var showUploadFilesSearchE = false;
  8. var showUploadFilesSearchState = 1;
  9. var showUploadFilesSearchAll = false;
  10. var upload_search_default = '';
  11. var showUploadUrl;
  12. var showUploadType = 1;
  13. var showUploadCall = false;
  14. var showUploadThis = false;
  15. var showUploadIndex = false;
  16. var picManageE = false;
  17. var picManageI = false;
  18. var picManageV = false;
  19. var picManageLayer = false;
  20. var showUploadFilesValue = [];
  21. //创建监听函数
  22. var xhrOnProgress=function(fun) {
  23. xhrOnProgress.onprogress = fun; //绑定监听
  24. //使用闭包实现监听绑
  25. return function() {
  26. //通过$.ajaxSettings.xhr();获得XMLHttpRequest对象
  27. var xhr = $.ajaxSettings.xhr();
  28. //判断监听函数是否为函数
  29. if (typeof xhrOnProgress.onprogress !== 'function')
  30. return xhr;
  31. //如果有监听函数并且xhr对象支持绑定时就把监听函数绑定上去
  32. if (xhrOnProgress.onprogress && xhr.upload) {
  33. xhr.upload.onprogress = xhrOnProgress.onprogress;
  34. }
  35. return xhr;
  36. }
  37. }
  38. function showUploadCover(i,e,key,url,assets,type)
  39. {
  40. layui.use(['upload','layer','element'], function() {
  41. var html = '';
  42. var layer = layui.layer;
  43. var layerConfig = {
  44. type: 1,
  45. title: e.attr('value'),
  46. shade: 0.1,
  47. shadeClose : true,
  48. content: html,
  49. area: ['400px', '600px']
  50. };
  51. e.unbind('click').bind('click', function()
  52. {
  53. url = url.replace('save', 'view');
  54. showUploadE = e;
  55. if (!type) {
  56. type = 1;
  57. }
  58. showUploadType = type;
  59. showUploadUrl = url;
  60. var cur = $('#' + showUploadE.attr('v')).val();
  61. var cover = e.attr('data-cover');
  62. $.getJSON(url, {json:1,key:key,cur:cur,cover:cover}, function(t)
  63. {
  64. if (showUploadIndex) {
  65. layer.close(showUploadIndex);
  66. }
  67. //layer.closeAll();
  68. layerConfig.content = t.data;
  69. layerConfig.end = function() {
  70. if (showUploadFilesUploadE) {
  71. showUploadFilesUploadE = false;
  72. }
  73. }
  74. showUploadIndex = layer.open(layerConfig);
  75. })
  76. })
  77. });
  78. }
  79. function showUpload(i,e,key,url,assets,type)
  80. {
  81. layui.use(['upload','layer','element'], function() {
  82. var html = '';
  83. var layer = layui.layer;
  84. var layerConfig = {
  85. type: 1,
  86. title: e.attr('value'),
  87. shade: 0.1,
  88. shadeClose : true,
  89. content: html,
  90. area: ['800px', '600px']
  91. };
  92. e.unbind('click').bind('click', function()
  93. {
  94. url = url.replace('save', 'view');
  95. showUploadE = e;
  96. if (!type) {
  97. type = 1;
  98. }
  99. showUploadType = type;
  100. showUploadUrl = url;
  101. var cur = $('#' + showUploadE.attr('v')).val();
  102. var value = '';
  103. if (e.attr('data-value')) {
  104. value = e.attr('data-value');
  105. }
  106. var upload_search = '';
  107. if (e.attr('upload_search')) {
  108. upload_search = e.attr('upload_search');
  109. }
  110. $.getJSON(url, {json:1,key:key,cur:cur,value:value,upload_search:upload_search}, function(t)
  111. {
  112. if (showUploadIndex) {
  113. layer.close(showUploadIndex);
  114. }
  115. //layer.closeAll();
  116. layerConfig.content = t.data;
  117. layerConfig.end = function() {
  118. if (showUploadFilesUploadE) {
  119. showUploadFilesUploadE = false;
  120. }
  121. }
  122. showUploadIndex = layer.open(layerConfig);
  123. })
  124. })
  125. });
  126. }
  127. function editorShowUpload(cur, url, title, func, self)
  128. {
  129. showUploadType = 2;
  130. showUploadCall = func;
  131. showUploadThis = self;
  132. layui.use(['upload','layer','element'], function() {
  133. var html = '';
  134. var layer = layui.layer;
  135. var layerConfig = {
  136. type: 1,
  137. title: title,
  138. shade: 0.1,
  139. shadeClose : true,
  140. content: html,
  141. area: '800px'
  142. };
  143. url = url.replace('save', 'view');
  144. showUploadUrl = url;
  145. $.getJSON(url, {json:1,cur:cur}, function(t)
  146. {
  147. layerConfig.content = t.data;
  148. showUploadIndex = layer.open(layerConfig);
  149. })
  150. });
  151. }
  152. //删除
  153. function showUploadFilesSetState(e, url)
  154. {
  155. if (confirm('确定进行此项操作吗?')) {
  156. $.getJSON(url, {json:1}, function(t)
  157. {
  158. if (!showUploadFilesSearchE) {
  159. showUploadFilesSearchE = $('#showUploadFilesSearch');
  160. }
  161. showUploadFilesSearch(showUploadFilesSearchE, showUploadFilesSearchState,showUploadFilesSearchAll);
  162. })
  163. }
  164. }
  165. function showUploadFilesShowValue(e)
  166. {
  167. var html = e.html();
  168. layer.alert(html);
  169. }
  170. function showUploadFilesSetValue(e, url, id, value)
  171. {
  172. if (showUploadFilesValue[id]) {
  173. value = showUploadFilesValue[id];
  174. }
  175. layer.prompt({
  176. formType: 2,
  177. value: value,
  178. title: '请输入附加值,例子:key1=value1&key2=value2',
  179. area: ['300px', '150px'] //自定义文本域宽高
  180. }, function(value, index, elem){
  181. showUploadFilesValue[id] = value;
  182. $.getJSON(url, {value:value}, function(t){});
  183. layer.close(index);
  184. });
  185. }
  186. function showUploadFilesSet(e, name, url, id)
  187. {
  188. $('.layui-anim-yes').addClass('layui-anim-no');
  189. $('.layui-anim-yes').removeClass('layui-anim-yes');
  190. e.parent().removeClass('layui-anim-no');
  191. e.parent().addClass('layui-anim-yes');
  192. $('.file_cur').val(url);
  193. if (showUploadType == 1) {
  194. var value = showUploadE.attr('v');
  195. var key = showUploadE.attr('key');
  196. loadUploadSet(showUploadE, value, {name:name,url:url}, key);
  197. } else if (showUploadType == 2) {
  198. showUploadCall.call(showUploadThis, url, name, id);
  199. } else if (showUploadType == 3) {
  200. var value = showUploadE.attr('editor_id');
  201. var key = showUploadE.attr('key');
  202. //KindEditor.insertHtml('#' + value, '<div class="dever-video"><embed src="'+url+'" type="video/x-ms-asf-plugin" width="450" height="300" autostart="false" loop="true" data-id="'+id+'" data-key="'+key+'"/><div style="width:450px;height:20px;">'+name+':'+id+'(请勿修改)</div></div>');
  203. KindEditor.insertHtml('#' + value, '<img src="'+url+'" style="width:450px;height:300px;" data-id="'+id+'" data-key="'+key+'"/>');
  204. }
  205. if (showUploadIndex) {
  206. layer.close(showUploadIndex);
  207. showUploadIndex = false;
  208. } else {
  209. layer.closeAll();
  210. }
  211. }
  212. function showUploadFilesUpload(e)
  213. {
  214. showUploadFilesUploadE = e;
  215. showUploadE.parent().find('.image_upload').click();
  216. }
  217. function showUploadFilesSearch(e, state, all, pg)
  218. {
  219. showUploadFilesSearchE = e;
  220. showUploadFilesSearchState = state;
  221. var p = e.parent();
  222. if (!pg) {
  223. var pg = p.find('.file_pg').val();
  224. }
  225. var key = p.find('.file_key').val();
  226. var name = p.find('.file_filename').val();
  227. var tag = p.find('.file_tag').val();
  228. var cate = p.find('.file_cate').val();
  229. var cur = p.find('.file_cur').val();
  230. var upload_search = p.find('.upload_search').val();
  231. var state = state;
  232. var url = showUploadUrl;
  233. if (upload_search) {
  234. upload_search_default = upload_search;
  235. }
  236. upload_search = upload_search_default;
  237. if (all) {
  238. upload_search = '';
  239. showUploadFilesSearchAll = true;
  240. } else {
  241. showUploadFilesSearchAll = false;
  242. }
  243. showUploadFiles(url, name, key, cate, tag, cur, pg, upload_search, state);
  244. }
  245. function showUploadFiles(url, name, key, cate, tag, cur, pg, upload_search, state)
  246. {
  247. if (!pg) {
  248. pg = 1;
  249. }
  250. $.getJSON(url, {json:1,key:key, name:name,cate:cate, tag:tag, pg:pg, cur:cur, upload_search:upload_search,state:state}, function(t)
  251. {
  252. var t = '<div>' + t.data + '</div>';
  253. html = $(t).find('#component-anim').html();
  254. $("#component-anim").html(html);
  255. })
  256. }
  257. function loadUploadL(i,e,key,url,assets)
  258. {
  259. var value = e.attr('v');
  260. if (typeof(upload[value]) != "undefined") {
  261. //return;
  262. }
  263. upload[value] = true;
  264. upload_pic[value] = [];
  265. upload_pic_info[value] = [];
  266. upload_file[value] = [];
  267. var id = e.attr('id');
  268. var token = e.attr('token');
  269. var host = e.attr('host');
  270. var domain = e.attr('domain');
  271. var bucket = e.attr('bucket');
  272. var path = e.attr('path');
  273. var cover = e.attr('cover');
  274. var type = e.attr('m');
  275. var search = '';
  276. if (e.attr('upload_search_value')) {
  277. search = e.attr('upload_search_value');
  278. }
  279. if (!cover) {
  280. cover = 1;
  281. }
  282. var uploadUrl = url;
  283. url = domain;
  284. layui.use(['layer','element'], function() {
  285. var layer = layui.layer;
  286. var element = layui.element;
  287. $("#" + id).unbind("change").bind("change",function() {
  288. var file = this.files[0];
  289. if (file) {
  290. element.progress(id + '_progress', '0%');
  291. layer.load();
  292. var filename = file.name;
  293. var temp = filename.split('.');
  294. var name = temp[0];
  295. filename = path + hex_md5(file.name) + '.' + temp[temp.length-1];
  296. //不覆盖
  297. if (cover == 2) {
  298. var timestamp = Date.parse(new Date());
  299. filename = path + hex_md5(file.name + '_' + timestamp) + '.' + temp[temp.length-1];
  300. }
  301. // 设置next,error,complete对应的操作,分别处理相应的进度信息,错误信息,以及完成后的操作
  302. var error = function(err) {
  303. //请求异常回调
  304. layer.alert('文件上传错误');
  305. element.progress(id + '_progress', '0%')
  306. $('#' + id + '_progress').hide();
  307. layer.closeAll('loading');
  308. };
  309. var complete = function(res) {
  310. //&& res.key.match(/\.(jpg|jpeg|png|gif)$/)
  311. if (res.key) {
  312. element.progress(id + '_progress', '0%')
  313. $('#' + id + '_progress').hide();
  314. layer.closeAll('loading');
  315. var data = {};
  316. if (res.hash) {
  317. if (search.indexOf('#') != -1) {
  318. var temp = search.split('#');
  319. search = temp[0];
  320. if (temp[1]) {
  321. temp[1] = $('#update_'+temp[1]+'_value').val();
  322. if (temp[1] > 0) {
  323. search = search + '_' + temp[1];
  324. }
  325. }
  326. }
  327. $.getJSON(uploadUrl.replace('save.start', 'yun.addFile'), {source:file.name,file:res.key, key:key, search:search});
  328. data.status = 1;
  329. data.name = res.key;
  330. data.url = host + res.key;
  331. loadUploadSet(e,value,data,key);
  332. } else {
  333. layer.alert('文件上传错误');
  334. return false;
  335. }
  336. }
  337. };
  338. if (type == 'qiniu') {
  339. qiniuHandle(id, name, token, domain, bucket, file, filename, element, error, complete);
  340. } else if(type == 'oss') {
  341. ossHandle(id, name, token, domain, bucket, file, filename, element, error, complete);
  342. }
  343. }
  344. });
  345. });
  346. }
  347. function ossHandle(id, name, token, domain, bucket, file, filename, element, error, complete)
  348. {
  349. var temp = token.split('||');
  350. if (temp[0]) {
  351. token = temp[0];
  352. } else {
  353. token = '';
  354. }
  355. let ossConfig = {
  356. // region以杭州为例(oss-cn-hangzhou),其他region按实际情况填写。
  357. region: 'oss-' + domain,
  358. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。
  359. accessKeyId: temp[1],
  360. accessKeySecret: temp[2],
  361. bucket: bucket,
  362. }
  363. if (token) {
  364. ossConfig.stsToken = token;
  365. }
  366. let client = new OSS(ossConfig);
  367. let tempCheckpoint;
  368. // 定义上传方法。
  369. async function multipartUpload () {
  370. try {
  371. // object-key可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。
  372. let result = await client.multipartUpload(filename, file, {
  373. progress: function (p, checkpoint) {
  374. $('#' + id + '_progress').show();
  375. element.progress(id + '_progress', parseInt(p*100)+'%')
  376. // 断点记录点。浏览器重启后无法直接继续上传,您需要手动触发上传操作。
  377. tempCheckpoint = checkpoint;
  378. if (p >= 1) {
  379. complete({key:filename,hash:true});
  380. }
  381. },
  382. //meta: { year: 2020, people: 'test' },
  383. //mime: 'image/jpeg'
  384. })
  385. } catch(e){
  386. console.log(e);
  387. error();
  388. }
  389. }
  390. // 开始分片上传。
  391. multipartUpload();
  392. }
  393. function qiniuHandle(id, name, token, domain, bucket, file, filename, element, error, complete)
  394. {
  395. // eslint-disable-next-line
  396. var finishedAttr = [];
  397. // eslint-disable-next-line
  398. var compareChunks = [];
  399. var observable;
  400. var subscription;
  401. var next = function(response) {
  402. var chunks = response.chunks||[];
  403. var total = response.total;
  404. // 这里对每个chunk更新进度,并记录已经更新好的避免重复更新,同时对未开始更新的跳过
  405. for (var i = 0; i < chunks.length; i++) {
  406. if (chunks[i].percent === 0 || finishedAttr[i]){
  407. continue;
  408. }
  409. if (compareChunks[i].percent === chunks[i].percent){
  410. continue;
  411. }
  412. if (chunks[i].percent === 100){
  413. finishedAttr[i] = true;
  414. }
  415. }
  416. $('#' + id + '_progress').show();
  417. element.progress(id + '_progress', parseInt(total.percent)+'%')
  418. compareChunks = chunks;
  419. };
  420. var subObject = {
  421. next: next,
  422. error: error,
  423. complete: complete
  424. };
  425. // 调用sdk上传接口获得相应的observable,控制上传和暂停
  426. var layerConfig = {
  427. useCdnDomain: true,
  428. disableStatisticsReport: false,
  429. retryCount: 6
  430. };
  431. var putExtra = {
  432. fname: "",
  433. params: {"x:name":name},
  434. mimeType: null
  435. };
  436. observable = qiniu.upload(file, filename, token, putExtra, layerConfig);
  437. subscription = observable.subscribe(subObject);
  438. }
  439. function loadUpload(i,e,key,url,assets)
  440. {
  441. var value = e.attr('v');
  442. if (typeof(upload[value]) != "undefined") {
  443. //return;
  444. }
  445. upload[value] = true;
  446. upload_pic[value] = [];
  447. upload_pic_info[value] = [];
  448. upload_file[value] = [];
  449. var data = {};
  450. data.key = key;
  451. var token = e.attr('token');
  452. var host = e.attr('host');
  453. var domain = e.attr('domain');
  454. var path = e.attr('path');
  455. var cover = e.attr('cover');
  456. data.search = '';
  457. if (e.attr('upload_search_value')) {
  458. data.search = e.attr('upload_search_value');
  459. }
  460. if (!cover) {
  461. cover = 1;
  462. }
  463. if (token) {
  464. data.token = token;
  465. }
  466. var uploadUrl = url;
  467. if (domain) {
  468. url = domain;
  469. delete data.key;
  470. //data.key = 2;
  471. }
  472. var id = e.attr('id');
  473. layui.use(['upload','layer','element'], function() {
  474. var layer = layui.layer;
  475. var layuiUpload = layui.upload;
  476. var element = layui.element;
  477. var uploadInst = layuiUpload.render({
  478. elem: '#' + id
  479. ,data: data
  480. ,field: 'file'
  481. ,url: url
  482. ,multiple: true
  483. ,accept:'file'
  484. //,auto:false
  485. ,xhr:xhrOnProgress
  486. ,progress:function(value){//上传进度回调 value进度值
  487. $('#' + id + '_progress').show();
  488. element.progress(id + '_progress', value+'%')//设置页面进度条
  489. }
  490. ,before: function(obj){
  491. if (this.data.search.indexOf('#') != -1) {
  492. var temp = this.data.search.split('#');
  493. this.data.search = temp[0];
  494. if (temp[1]) {
  495. temp[1] = $('#update_'+temp[1]+'_value').val();
  496. if (temp[1] > 0) {
  497. this.data.search = this.data.search + '_' + temp[1];
  498. }
  499. }
  500. }
  501.             }
  502. ,choose: function(obj, self){
  503. if (domain) {
  504. obj.editFile(path, cover);
  505. }
  506. element.progress(id + '_progress', '0%')
  507. //layer.load();
  508. }
  509. ,done: function(data, file) {
  510. if (data.hash) {
  511. data.status = 1;
  512. data.name = data.key;
  513. data.url = host + data.key;
  514. $.getJSON(uploadUrl.replace('save.start', 'qiniu.addFile'), {source:file.name,file:data.key, key:key});
  515. }
  516. element.progress(id + '_progress', '0%')
  517. $('#' + id + '_progress').hide();
  518. layer.closeAll('loading');
  519. if (data.status == 1) {
  520. loadUploadSet(e,value,data,key);
  521. } else {
  522. element.progress(id + '_progress', '0%')
  523. layer.alert(data.message);
  524. return false;
  525. }
  526. }
  527. ,error: function(){
  528. //请求异常回调
  529. layer.alert('文件上传错误');
  530. element.progress(id + '_progress', '0%')
  531. $('#' + id + '_progress').hide();
  532. layer.closeAll('loading');
  533. }
  534. });
  535. });
  536. }
  537. function loadUploadSet(e,value,data,key)
  538. {
  539. if (showUploadFilesUploadE) {
  540. showUploadFilesSearch(showUploadFilesUploadE, showUploadFilesSearchState, showUploadFilesSearchAll);
  541. return;
  542. }
  543. var mul = e.attr('mul');
  544. var place = e.attr('place');
  545. if (mul == 'yes') {
  546. if (e.attr('t') == 'file') {
  547. if (upload_file[value].length <= 0 && $("#" + value).val()) {
  548. upload_file[value] = $("#" + value).val().split(',');
  549. }
  550. var m = $('.' +value+'_mul');
  551. var i = m.find('li').eq(upload_file[value].length);
  552. if (i.length) {
  553. i.find('a').eq(0).html(data.name);
  554. } else {
  555. m.append('<li><a href="'+data.url+'" target="_blank" title="点此下载" >'+data.name+'</a>&nbsp;&nbsp;<a href="javascript:;" title="点此删除" style="color:red;" onclick="fileDel($(this), \''+value+'\')">[删除]</a></li>');
  556. }
  557. upload_file[value].push(data.url);
  558. $("#" + value).val(upload_file.join(','));
  559. } else {
  560. var i = e.attr('i');
  561. var info = '';
  562. if (data.width) {
  563. info = data.width + '_' + data.height + '_' +data.size + '_' + data.fid;
  564. }
  565. if (upload_pic[value].length <= 0 && $("#" + value).val()) {
  566. upload_pic[value] = $("#" + value).val().split(',');
  567. }
  568. if ($('#'+i).length) {
  569. upload_pic_info[value] = $("#" + i).val().split(',');
  570. }
  571. var m = $('.' +value+'_mul');
  572. var index = m.find('img').eq(upload_pic[value].length);
  573. var set = index.length;
  574. var place = m.find('.place');
  575. if (place.length) {
  576. set = false;
  577. }
  578. if (set) {
  579. index.attr('src', data.url);
  580. index.attr('data-src', data.url);
  581. index.attr('info', info);
  582. } else {
  583. m.append('<a href="javascript:;" title="打开图片管理工具" onclick="picManage($(this), \''+value+'\', \''+key+'\', 2, \''+i+'\', \''+place+'\')"><img src="'+data.url+'" data-src="'+data.url+'" info="'+info+'" width="150" class="cropper_img" style="margin-left:5px;" alt="打开图片管理工具"/></a>');
  584. }
  585. upload_pic[value].push(data.url);
  586. $("#" + value).val(upload_pic[value].join(','));
  587. if ($('#'+i).length && info) {
  588. upload_pic_info[value].push(info);
  589. $('#'+i).val(upload_pic_info[value].join(','));
  590. }
  591. }
  592. } else {
  593. if (e.attr('t') == 'file') {
  594. } else {
  595. var i = e.attr('i');
  596. if ($('#show_'+value).length) {
  597. $('#show_'+value).parent().show();
  598. $('#show_'+value).attr('src',data.url).show();
  599. $('#show_'+value).attr('data-src',data.url);
  600. if (!checkClick($('#show_'+value))) {
  601. $('#show_'+value).unbind('click').bind('click', function()
  602. {
  603. picManage($(this), value, key, 1, i, place);
  604. })
  605. }
  606. }
  607. }
  608. $('#'+value).val(data.url);
  609. if ($('#'+i).length && data.width) {
  610. var info = data.width + '_' + data.height + '_' +data.size + '_' + data.fid;
  611. $('#'+i).val(info);
  612. }
  613. }
  614. }
  615. function picSet(pic, s, info)
  616. {
  617. if (picManageE) {
  618. //$('#'+value).val(data.url);
  619. var img = picManageE.find('img');
  620. var old = img.attr('src');
  621. img.attr('src', pic);
  622. var value = $("#" + picManageV);
  623. value.val(value.val().replace(old, pic));
  624. if (s != 1) {
  625. upload_pic[picManageV].replaceOne(old,pic);
  626. }
  627. var i = picManageI;
  628. if ($('#'+i).length) {
  629. if (s == 1) {
  630. $('#'+i).val(info);
  631. } else {
  632. var old = img.attr('info');
  633. if (old) {
  634. upload_pic_info[picManageV].replaceOne(old,info);
  635. $("#" + i).val(upload_pic_info[picManageV].join(','));
  636. }
  637. }
  638. }
  639. }
  640. layer.close(picManageLayer);
  641. }
  642. function picDel(s)
  643. {
  644. if (!picManageE) {
  645. return;
  646. }
  647. if (confirm('确定要删除图片吗?')) {
  648. var v = picManageV;
  649. var e = picManageE;
  650. var i = picManageI;
  651. if (s == 1) {
  652. e.hide();
  653. $("#" + v).val('');
  654. if ($('#'+i).length) {
  655. $('#'+i).val('');
  656. }
  657. } else {
  658. if (upload_pic[v].length <= 0 && $("#" + v).val()) {
  659. upload_pic[v] = $("#" + v).val().split(',');
  660. }
  661. if (upload_pic_info[v].length <= 0 && $('#'+i).length && $("#" + i).val()) {
  662. upload_pic_info[v] = $("#" + i).val().split(',');
  663. }
  664. var p = e.find('img').attr('src');
  665. e.remove();
  666. upload_pic[v].remove(p);
  667. $("#" + v).val(upload_pic[v].join(','));
  668. if ($('#'+i).length) {
  669. var info = e.find('img').attr('info');
  670. upload_pic_info[v].remove(info);
  671. $("#" + i).val(upload_pic_info[v].join(','));
  672. }
  673. }
  674. }
  675. layer.close(picManageLayer);
  676. }
  677. function picManage(e,v,k,s,i,wh)
  678. {
  679. if (!s) {
  680. s = 2;
  681. }
  682. if (!wh) {
  683. wh = '160*90';
  684. }
  685. picManageE = e;
  686. picManageV = v;
  687. picManageI = i;
  688. var param = '';
  689. var img = e.find('img');
  690. if (img.attr('data-src')) {
  691. var pic = img.attr('data-src');
  692. param = img.attr('src');
  693. } else {
  694. var pic = img.attr('src');
  695. img.attr('data-src', pic);
  696. }
  697. if (pic.indexOf('temp.im') != -1) {
  698. return;
  699. }
  700. var url = config.upload.replace('save', 'view') + '.manage&state='+s+'&key='+k+'&pic=' + pic + '&param=' + param+'&wh='+wh;
  701. var layerConfig = {
  702. type: 2,
  703. title: '图片裁剪工具',
  704. content : [url, 'no'],
  705. shade: 0.1,
  706. shadeClose : true,
  707. area: ['1000px','550px']
  708. };
  709. picManageLayer = layer.open(layerConfig);
  710. }
  711. function fileDel(e,v)
  712. {
  713. if(confirm('确定要删除文件吗?'))
  714. {
  715. if(upload_file[v].length <= 0 && $("#" + v).val())
  716. {
  717. upload_file[v] = $("#" + v).val().split(',');
  718. }
  719. var parent = e.parent();
  720. var p = parent.find('a').eq(0).attr('href');
  721. parent.remove();
  722. upload_file[v].remove(p);
  723. //console.info(pic);
  724. $("#" + v).val(upload_file[v].join(','));
  725. }
  726. }