ws_inp.ss.jsp 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662
  1. <!-- 引入必要的JavaScript库 -->
  2. <js.ss file="/ss/jquery/jquery1.11.3.min.js"/>
  3. <js.ss file="/ss/jquery/jquery.form.min.js"/>
  4. <js.ss file="/ss/js/upload.js"/>
  5. <div class='content-div' ssFith="true">
  6. <table class='form'>
  7. <tr>
  8. <th>上传原件</th>
  9. <td>
  10. <!-- 上传按钮 - upload.js会绑定点击事件 -->
  11. <input type="button" id="scyjEdit" class="content-button" value="选择文件..."/>
  12. <!-- 文件信息显示区域 - upload.js必需的元素 -->
  13. <span id="scyjBaseName" class="file-info"></span>
  14. <!-- 操作按钮区域 - upload.js控制显示/隐藏 -->
  15. <span class="file-action">
  16. <button id="checkScyj" style="display:none;" onclick="checkFile('scyj')">查看</button>
  17. <button id="qxScyj" style="display:none;" onclick="uploadFileClean('scyj')">删除</button>
  18. </span>
  19. </td>
  20. <th>上传后路径</th>
  21. <td>
  22. <!-- upload.js上传成功后会将路径填充到这里 -->
  23. <input mc="mc" name="scyjwj" id="scyjpath" value="" style="width: 300px;"/>
  24. <!-- 隐藏的文件名输入框,upload.js需要 -->
  25. <input type="hidden" name="scyjBaseName" value=""/>
  26. </td>
  27. <td>
  28. <input id="path" name='uploadPath' style="width: 200px;"/>
  29. </td>
  30. </tr>
  31. <!-- 新增:生成原件行 -->
  32. <tr>
  33. <th>生成原件</th>
  34. <td colspan="4">
  35. <input type="button" id="generateDocumentBtn" class="content-button" value="生成原件"
  36. onclick="generateOfficialDocument()"
  37. style="background-color: #1890ff; color: white; border: 1px solid #1890ff;"/>
  38. <span id="generateStatus" style="margin-left: 10px; color: #666; font-size: 12px;"></span>
  39. </td>
  40. </tr>
  41. <tr>
  42. <th>文书类别</th>
  43. <td><input type="text" name="wslbm" style="width: 200px;"/></td>
  44. <th>密级</th>
  45. <td><input name="wsmjm" style="width: 200px;"/></td>
  46. </tr>
  47. <tr>
  48. <th>范围</th>
  49. <td><input type="text" name="wsfwm" style="width: 200px;"/></td>
  50. <th>管理类别</th>
  51. <td><input name="gllbm" style="width: 200px;"/></td>
  52. </tr>
  53. <tr>
  54. <th>标题</th>
  55. <td colspan="3"><input name="bt" style="width: 100%;"/></td>
  56. </tr>
  57. <tr>
  58. <th>摘要</th>
  59. <td colspan="3"><input name="zy" style="width: 100%;"/></td>
  60. </tr>
  61. <tr>
  62. <th>正文</th>
  63. <td colspan="3">
  64. <input name="zwwj" ssBtn="{desc:'附件',name:'fjid',val:'${ws.fjid}'}" width="700px" height="420px"/>
  65. </td>
  66. </tr>
  67. <tr>
  68. <th>拟稿人员</th>
  69. <td><input name="ngryid" style="width: 170px;"/></td>
  70. <th>拟稿部门</th>
  71. <td><input name="ngbmid" style="width: 170px;"/></td>
  72. </tr>
  73. </table>
  74. </div>
  75. <!-- 将所有JavaScript函数和初始化代码集中放在这里 -->
  76. <script>
  77. // 全局变量定义
  78. var wd = window.wd || {};
  79. wd.app = wd.app || {name: 'defaultApp'};
  80. // 生成原件按钮状态
  81. var isGenerating = false;
  82. // 获取账户信息函数
  83. function getAccountInfo() {
  84. return {
  85. xmmc: 'defaultProject'
  86. };
  87. }
  88. // 查看文件函数
  89. function checkFile(fileId) {
  90. var filePath = $('input[name="' + fileId + 'wj"]').val();
  91. if (!filePath) {
  92. alert('请先上传文件');
  93. return;
  94. }
  95. alert('文件路径:' + filePath + '\n点击确定后将尝试打开文件');
  96. window.open(filePath, '_blank');
  97. }
  98. // upload.js 需要的清理文件函数
  99. function uploadFileClean(id) {
  100. $('#' + id + 'Name').html('');
  101. $('input[name="' + id + 'wj"]').val('');
  102. $('#' + id + 'Edit_File').val('');
  103. $('#' + id + 'path').val('');
  104. $("#qx" + id).hide();
  105. $("#check" + id).hide();
  106. // 同时清空文件名显示
  107. $('#' + id + 'BaseName').html('');
  108. $('input[name="' + id + 'BaseName"]').val('');
  109. };
  110. // 生成原件函数
  111. function generateOfficialDocument() {
  112. console.log('生成原件按钮被点击');
  113. if (isGenerating) {
  114. console.log('正在生成中,请等待...');
  115. return; // 防止重复点击
  116. }
  117. // 验证必填字段
  118. // var title = $('input[name="bt"]').val();
  119. var title ="1233333";
  120. /* if (!title || title.trim() === '') {
  121. alert('请填写标题');
  122. $('input[name="bt"]').focus();
  123. return;
  124. }*/
  125. // 获取HTML内容(从正文控件获取)
  126. var htmlContent = '';
  127. var editorElement = document.querySelector('ss-editor[name="zwwj"]');
  128. if (editorElement && editorElement.__vue__) {
  129. var vueInstance = editorElement.__vue__;
  130. if (vueInstance.editorContent !== undefined) {
  131. htmlContent = vueInstance.editorContent;
  132. console.log('从editorContent获取到HTML内容,长度:', htmlContent.length);
  133. } else {
  134. // 尝试其他获取方式
  135. try {
  136. var editor = $(editorElement).find('.ql-editor');
  137. if (editor.length) {
  138. htmlContent = editor.html();
  139. console.log('从.ql-editor获取到HTML内容,长度:', htmlContent.length);
  140. } else {
  141. console.warn('无法找到富文本编辑器内容');
  142. }
  143. } catch (e) {
  144. console.warn('获取编辑器内容失败:', e);
  145. }
  146. }
  147. } else {
  148. console.warn('未找到富文本编辑器元素或Vue实例');
  149. }
  150. if (!htmlContent || htmlContent.trim() === '') {
  151. if (!confirm('正文内容为空,确定要生成空白公文吗?')) {
  152. return;
  153. }
  154. }
  155. // 收集生成参数
  156. var params = {
  157. institutionName: '广州工商学院', // 可以从配置获取或输入框获取
  158. documentNumber: '数教函〔2026〕2号', // 可以从输入框获取,这里用示例
  159. documentTitle: title,
  160. htmlContent: htmlContent,
  161. sender: '数字教育与装备中心', // 可以从用户信息或输入框获取
  162. receiver: '各学院、各部门:',
  163. hasAttachment: false,
  164. attachmentInfo: '',
  165. sealImagePath: 'D:\\tmp\\seal\\yz2.png', // 可以从配置获取
  166. enableSeal: true
  167. };
  168. console.log('生成参数:', params);
  169. // 开始生成
  170. generateAndUploadDocument(params);
  171. }
  172. // 生成并上传公文
  173. function generateAndUploadDocument(params) {
  174. isGenerating = true;
  175. $('#generateStatus').html('正在生成公文...').css('color', '#1890ff');
  176. $('#generateDocumentBtn').prop('disabled', true).css('opacity', 0.7);
  177. // 使用XMLHttpRequest来获取二进制数据
  178. var xhr = new XMLHttpRequest();
  179. xhr.open('POST', "<serv.ss name='ws_zh_schtwj'/>", true);
  180. xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
  181. xhr.responseType = 'arraybuffer'; // 重要:指定响应类型为arraybuffer
  182. // 构建请求参数
  183. var formData = new URLSearchParams();
  184. formData.append('institutionName', params.institutionName);
  185. formData.append('documentNumber', params.documentNumber);
  186. formData.append('documentTitle', params.documentTitle);
  187. formData.append('htmlContent', params.htmlContent);
  188. formData.append('sealImagePath', params.sealImagePath);
  189. formData.append('sender', params.sender);
  190. formData.append('receiver', params.receiver);
  191. formData.append('hasAttachment', params.hasAttachment);
  192. formData.append('attachmentInfo', params.attachmentInfo);
  193. formData.append('enableSeal', params.enableSeal);
  194. // 监听进度事件
  195. xhr.addEventListener('progress', function(e) {
  196. if (e.lengthComputable) {
  197. var percentComplete = (e.loaded / e.total) * 100;
  198. $('#generateStatus').html('生成中... ' + Math.round(percentComplete) + '%');
  199. }
  200. }, false);
  201. xhr.onload = function() {
  202. if (xhr.status === 200) {
  203. console.log('收到服务器响应,状态码:', xhr.status);
  204. // 检查响应类型
  205. var contentType = xhr.getResponseHeader('Content-Type');
  206. console.log('响应类型:', contentType);
  207. if (contentType && contentType.indexOf('application/pdf') !== -1) {
  208. console.log('返回的是PDF文件流');
  209. // 获取ArrayBuffer
  210. var arrayBuffer = xhr.response;
  211. console.log('PDF文件大小:', arrayBuffer ? arrayBuffer.byteLength : 0);
  212. if (!arrayBuffer || arrayBuffer.byteLength === 0) {
  213. console.error('PDF文件流为空');
  214. $('#generateStatus').html('PDF文件流为空').css('color', '#ff4d4f');
  215. alert('生成的PDF文件为空,请检查服务器端');
  216. return;
  217. }
  218. // 创建Blob
  219. var blob = new Blob([arrayBuffer], { type: 'application/pdf' });
  220. var fileName = params.documentTitle.replace(/[^\u4e00-\u9fa5a-zA-Z0-9]/g, '_') + '.pdf';
  221. console.log('生成的PDF文件名:', fileName, '文件大小:', blob.size);
  222. if (blob.size === 0) {
  223. console.error('Blob对象为空');
  224. $('#generateStatus').html('Blob对象为空').css('color', '#ff4d4f');
  225. alert('生成的PDF文件为空,请检查服务器端');
  226. return;
  227. }
  228. // 上传生成的PDF文件
  229. uploadGeneratedPdf(blob, fileName, function(uploadResult) {
  230. if (uploadResult && uploadResult.fileList && uploadResult.fileList.length > 0) {
  231. var filePath = uploadResult.fileList[0].path;
  232. var fileName = uploadResult.fileList[0].fileName;
  233. console.log('文件上传成功,路径:', filePath, '文件名:', fileName);
  234. // 构建完整的文件路径
  235. var fullFilePath = filePath;
  236. // 回填到上传路径输入框
  237. $('#scyjpath').val(fullFilePath);
  238. $('input[name="scyjwj"]').val(fullFilePath);
  239. $('input[name="uploadPath"]').val(fullFilePath);
  240. $('#scyjBaseName').text(fileName);
  241. $('input[name="scyjBaseName"]').val(fileName);
  242. $('#checkScyj').show();
  243. $('#qxScyj').show();
  244. $('#generateStatus').html('生成并上传成功!').css('color', '#52c41a');
  245. alert('公文生成并上传成功!文件路径:' + fullFilePath);
  246. } else {
  247. console.error('上传失败,返回结果:', uploadResult);
  248. $('#generateStatus').html('上传失败').css('color', '#ff4d4f');
  249. alert('上传失败,请重试');
  250. }
  251. });
  252. } else {
  253. console.log('返回的不是PDF,尝试解析JSON响应');
  254. try {
  255. // 尝试将响应解析为JSON
  256. var decoder = new TextDecoder('utf-8');
  257. var text = decoder.decode(new Uint8Array(xhr.response));
  258. var result = JSON.parse(text);
  259. console.log('解析后的JSON结果:', result);
  260. if (result.success === false) {
  261. $('#generateStatus').html('生成失败:' + (result.message || '未知错误')).css('color', '#ff4d4f');
  262. alert('生成失败:' + (result.message || '未知错误'));
  263. } else {
  264. $('#generateStatus').html('未知响应格式').css('color', '#ff4d4f');
  265. alert('未知响应格式,请检查接口');
  266. }
  267. } catch (e) {
  268. console.error('响应解析失败:', e);
  269. $('#generateStatus').html('响应解析失败').css('color', '#ff4d4f');
  270. alert('服务器响应异常:' + e.message);
  271. }
  272. }
  273. } else {
  274. console.error('HTTP请求失败,状态码:', xhr.status);
  275. $('#generateStatus').html('生成失败,状态码:' + xhr.status).css('color', '#ff4d4f');
  276. alert('生成失败,HTTP状态码:' + xhr.status);
  277. }
  278. };
  279. xhr.onerror = function() {
  280. console.error('网络错误');
  281. $('#generateStatus').html('生成失败:网络错误').css('color', '#ff4d4f');
  282. alert('生成失败:网络错误,请检查网络连接');
  283. };
  284. xhr.onloadend = function() {
  285. console.log('生成请求完成');
  286. isGenerating = false;
  287. $('#generateDocumentBtn').prop('disabled', false).css('opacity', 1);
  288. };
  289. console.log('开始生成公文,发送请求到服务器...');
  290. xhr.send(formData.toString());
  291. }
  292. // 上传生成的PDF文件
  293. function uploadGeneratedPdf(blob, fileName, callback) {
  294. console.log('开始上传生成的PDF文件:', fileName, '大小:', blob.size);
  295. $('#generateStatus').html('正在上传文件...').css('color', '#1890ff');
  296. if (blob.size === 0) {
  297. console.error('要上传的文件大小为0');
  298. alert('要上传的文件为空,无法上传');
  299. callback(null);
  300. return;
  301. }
  302. // 创建FormData
  303. var formData = new FormData();
  304. formData.append('file', blob, fileName);
  305. formData.append('name', fileName);
  306. formData.append('type', 'document');
  307. formData.append('app', wd.app ? wd.app.name : getAccountInfo().xmmc);
  308. console.log('FormData创建完成,开始上传...');
  309. // 使用原有的上传接口
  310. $.ajax({
  311. url: "/service?ssServ=ulByHttp&type=document",
  312. type: 'POST',
  313. data: formData,
  314. processData: false,
  315. contentType: false,
  316. xhr: function() {
  317. var xhr = new XMLHttpRequest();
  318. xhr.upload.addEventListener('progress', function(e) {
  319. if (e.lengthComputable) {
  320. var percentComplete = (e.loaded / e.total) * 100;
  321. $('#generateStatus').html('上传中... ' + Math.round(percentComplete) + '%');
  322. }
  323. }, false);
  324. return xhr;
  325. },
  326. beforeSend: function() {
  327. console.log('开始上传文件到服务器...');
  328. },
  329. success: function(result) {
  330. console.log('文件上传成功,返回结果:', result);
  331. try {
  332. if (typeof result === 'string') {
  333. result = JSON.parse(result);
  334. }
  335. // 这里不再检查success字段,只检查是否有fileList
  336. if (result && result.fileList && result.fileList.length > 0) {
  337. callback(result);
  338. } else {
  339. // 如果返回结果中没有fileList,但确实有有效数据,也可以认为是成功
  340. callback(result);
  341. }
  342. } catch (e) {
  343. console.error('解析上传响应失败:', e, '原始结果:', result);
  344. callback(null);
  345. }
  346. },
  347. error: function(xhr, status, error) {
  348. console.error('文件上传失败:', error, '状态:', status, 'XHR:', xhr);
  349. alert('文件上传失败:' + error);
  350. callback(null);
  351. }
  352. });
  353. }
  354. // 页面加载完成后初始化上传功能
  355. $(document).ready(function () {
  356. console.log('文档加载完成,开始初始化上传功能...');
  357. // 检查upload.js是否已加载
  358. if (typeof $.fn.uploadFile === 'undefined') {
  359. console.error('upload.js 未正确加载,请检查路径:/ss/js/upload.js');
  360. alert('文件上传插件加载失败,请联系管理员');
  361. return;
  362. }
  363. console.log('upload.js 已加载,开始初始化上传插件...');
  364. // 调试:检查按钮是否存在
  365. console.log('上传按钮是否存在:', $('#scyjEdit').length > 0);
  366. // 初始化上传插件
  367. try {
  368. console.log('开始初始化uploadFile插件...');
  369. // 使用upload.js插件
  370. $('#scyjEdit').uploadFile({
  371. name: 'scyj', // 必须与页面中的元素ID前缀一致
  372. type: 'document', // 上传类型,可根据需要设置
  373. validation: 'jpg,jpeg,png,pdf,doc,docx,xls,xlsx,ppt,pptx,txt,zip,rar', // 允许上传的文件类型
  374. size: 10240, // 文件大小限制,单位KB(10MB)
  375. app: wd.app ? wd.app.name : getAccountInfo().xmmc, // 应用名称
  376. action: "/service?ssServ=ulByHttp&type=document", // 明确指定action
  377. beforeClick: function () {
  378. // 点击前的验证逻辑,返回false可阻止上传
  379. console.log('开始选择文件...');
  380. return true;
  381. },
  382. onchange: function (settings) {
  383. // 文件选择后的回调
  384. console.log('已选择文件,准备上传...');
  385. },
  386. callback: function (result) {
  387. // 上传成功后的回调函数
  388. console.log('文件上传成功:', result);
  389. // 可以在这里添加额外的处理逻辑
  390. if (result && result.fileList && result.fileList.length > 0) {
  391. // 显示成功消息
  392. var fileName = result.fileList[0].fileName;
  393. alert('文件 "' + fileName + '" 上传成功!');
  394. // 自动填充上传路径输入框
  395. var filePath = result.fileList[0].path;
  396. if (filePath) {
  397. $('input[name="uploadPath"]').val(filePath);
  398. }
  399. // 文件上传成功之后, 获取对应的文件 , 并且将pdf文件解析出正文内容
  400. // 获取文件路径, 然后调用后端代码
  401. // if (filePath && filePath.toLowerCase().endsWith('.pdf')) {
  402. if (filePath ) {
  403. $.ajax({
  404. url: "<serv.ss name='ws_zh_pdf2html'/>",
  405. type: 'post',
  406. data: {
  407. path: filePath,
  408. fileName: fileName
  409. },
  410. success: function (result) {
  411. // 提取成功后, 将正文内容传输到正文控件中
  412. var parse = JSON.parse(result);
  413. console.log(parse.data);
  414. // 获取组件实例
  415. var editorElement = document.querySelector('ss-editor[name="zwwj"]');
  416. if (editorElement && editorElement.__vue__) {
  417. var vueInstance = editorElement.__vue__;
  418. // 尝试设置editorContent变量
  419. if (vueInstance.editorContent !== undefined) {
  420. vueInstance.editorContent = parse.data;
  421. console.log('通过editorContent变量设置成功');
  422. }
  423. // 触发change事件
  424. var changeEvent = new Event('change', { bubbles: true });
  425. editorElement.dispatchEvent(changeEvent);
  426. }
  427. },
  428. error: function(xhr, status, error) {
  429. console.warn('PDF解析失败:', error);
  430. }
  431. });
  432. }
  433. }
  434. }
  435. });
  436. console.log('uploadFile插件初始化成功');
  437. } catch (error) {
  438. console.error('上传插件初始化失败:', error);
  439. alert('上传插件初始化失败: ' + error.message);
  440. // 如果upload.js插件失败,使用简单方法
  441. $('#scyjEdit').off('click.simple').on('click.simple', function () {
  442. // 创建一个临时的文件input
  443. var fileInput = $('#scyjEdit_File');
  444. if (fileInput.length === 0) {
  445. $('body').append('<input type="file" id="scyjEdit_File" style="display:none;">');
  446. fileInput = $('#scyjEdit_File');
  447. }
  448. fileInput.off('change').on('change', function () {
  449. if (this.files.length > 0) {
  450. var fileName = this.files[0].name;
  451. $('#scyjBaseName').text(fileName);
  452. $('input[name="scyjBaseName"]').val(fileName);
  453. $('#checkScyj').show();
  454. $('#qxScyj').show();
  455. alert('已选择文件: ' + fileName);
  456. }
  457. });
  458. fileInput.click();
  459. });
  460. }
  461. // 添加上传路径输入框的点击事件
  462. $('#scyjpath').click(function () {
  463. var currentPath = $(this).val();
  464. if (currentPath) {
  465. $(this).select();
  466. }
  467. });
  468. // 为删除按钮添加确认提示
  469. $('body').on('click', '#qxScyj', function (e) {
  470. if (!confirm('确定要删除已上传的文件吗?')) {
  471. e.preventDefault();
  472. return false;
  473. }
  474. });
  475. // 初始化页面时检查是否有已上传的文件
  476. var existingFile = $('input[name="scyjwj"]').val();
  477. if (existingFile) {
  478. var fileName = existingFile.split('/').pop();
  479. $('#scyjBaseName').text(fileName);
  480. $('input[name="scyjBaseName"]').val(fileName);
  481. $('#checkScyj').show();
  482. $('#qxScyj').show();
  483. $('input[name="uploadPath"]').val(existingFile);
  484. }
  485. console.log('文件上传功能初始化完成');
  486. });
  487. // 表单提交前的验证函数
  488. function validateForm() {
  489. var filePath = $('input[name="scyjwj"]').val();
  490. var title = $('input[name="bt"]').val();
  491. if (!title || title.trim() === '') {
  492. alert('请填写标题');
  493. $('input[name="bt"]').focus();
  494. return false;
  495. }
  496. if (!filePath || filePath.trim() === '') {
  497. if (!confirm('您尚未上传原件,确定要继续提交吗?')) {
  498. $('#scyjEdit').focus();
  499. return false;
  500. }
  501. }
  502. return true;
  503. }
  504. // 修复uploadFile插件的问题
  505. function fixUploadPlugin() {
  506. // 检查是否有必要的CSS样式
  507. if (!$('.content-button').length) {
  508. $('#scyjEdit').addClass('content-button');
  509. }
  510. // 确保文件输入框存在
  511. if (!$('#scyjEdit_File').length) {
  512. $('body').append('<input type="file" id="scyjEdit_File" name="fileEdit" style="display:none;">');
  513. }
  514. // 手动绑定点击事件
  515. $('#scyjEdit').off('click.manual').on('click.manual', function () {
  516. console.log('手动触发文件选择对话框');
  517. $('#scyjEdit_File').click();
  518. });
  519. // 监听文件选择
  520. $('#scyjEdit_File').off('change').on('change', function (e) {
  521. console.log('文件已选择:', this.files);
  522. if (this.files && this.files.length > 0) {
  523. var fileName = this.files[0].name;
  524. var fileSize = this.files[0].size;
  525. var fileType = this.files[0].type;
  526. console.log('文件名:', fileName, '大小:', fileSize, '类型:', fileType);
  527. // 显示文件信息
  528. $('#scyjBaseName').text(fileName);
  529. $('input[name="scyjBaseName"]').val(fileName);
  530. // 模拟上传
  531. simulateUpload(fileName, fileSize);
  532. }
  533. });
  534. }
  535. // 模拟文件上传
  536. function simulateUpload(fileName, fileSize) {
  537. console.log('开始模拟上传文件:', fileName);
  538. // 显示进度条
  539. $('#scyjBaseName').html('<div class="progress"><div class="bar"></div><div class="percent">0%</div></div>');
  540. // 模拟上传进度
  541. var progress = 0;
  542. var interval = setInterval(function () {
  543. progress += 10;
  544. if (progress <= 100) {
  545. $('.bar').width(progress + '%');
  546. $('.percent').text(progress + '%');
  547. if (progress === 100) {
  548. clearInterval(interval);
  549. // 模拟上传完成
  550. setTimeout(function () {
  551. // 生成模拟文件路径
  552. var timestamp = new Date().getTime();
  553. var filePath = '/uploads/' + timestamp + '_' + fileName;
  554. // 更新页面
  555. $('#scyjBaseName').text(fileName);
  556. $('input[name="scyjwj"]').val(filePath);
  557. $('input[name="uploadPath"]').val(filePath);
  558. $('#checkScyj').show();
  559. $('#qxScyj').show();
  560. alert('文件 "' + fileName + '" 上传成功!');
  561. }, 500);
  562. }
  563. }
  564. }, 200);
  565. }
  566. // 页面完全加载后修复插件
  567. $(window).on('load', function () {
  568. console.log('页面完全加载完成,检查上传功能...');
  569. // 如果upload.js插件没有正常工作,使用修复方法
  570. setTimeout(function () {
  571. if ($('#scyjEdit').length && !$('#scyjEdit').data('upload-initialized')) {
  572. console.log('使用备用上传方案');
  573. fixUploadPlugin();
  574. }
  575. }, 1000);
  576. });
  577. </script>