农经大屏
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

173 wiersze
4.7 KiB

  1. import request from '@/utils/request'
  2. import { usingExternalUploadService } from "@/api/system/config";
  3. //查询已上传附件
  4. export const attachmentList = (data) => {
  5. return request({
  6. url: '/api/system/attachment/query',
  7. method: 'get',
  8. params: data
  9. })
  10. }
  11. //删除已上传附件
  12. export function systemAttachment (ids) {
  13. if (ids != undefined) {
  14. return request({
  15. url: '/api/system/attachment/remove/' + ids,
  16. method: 'get'
  17. })
  18. }
  19. }
  20. //上传凭证附件
  21. export function voucherUpload (data) {
  22. return request({
  23. url: '/api/finance/voucher/upload',
  24. method: 'post',
  25. header: { "Content-Type": 'application/x-www-form-urlencoded' },
  26. data: data
  27. })
  28. }
  29. //上传全局方法附件
  30. export function commonAttach (data) {
  31. return request({
  32. url: '/api/common/attach',
  33. method: 'post',
  34. header: { "Content-Type": 'application/x-www-form-urlencoded' },
  35. data: data
  36. })
  37. }
  38. // 上传功能对象(外部/内部)
  39. export const extUploader = function () {
  40. this._remoteHost = null; // 外部上传主机地址
  41. this._token = null; // 外部上传服务身份标识
  42. this._supportExternal = null; // 是否支持外部上传
  43. this._usingExternal = false; // 是否启用外部上传
  44. // 内部方式上传
  45. this._Upload_inner = (url, data) => {
  46. console.log('使用内部上传: ' + process.env.VUE_APP_BASE_API + url);
  47. return request({
  48. url: url,
  49. method: 'post',
  50. header: { "Content-Type": 'application/x-www-form-urlencoded' },
  51. data: data,
  52. });
  53. };
  54. // 外部方式上传
  55. this._Upload_external = (url, data) => {
  56. if (data instanceof FormData)
  57. data.append('token', this._token);
  58. else
  59. data.token = this._token;
  60. console.log('使用外部上传: ' + this._remoteHost + url);
  61. return request({
  62. url: url,
  63. method: 'post',
  64. header: { "Content-Type": 'application/x-www-form-urlencoded' },
  65. data: data,
  66. baseURL: this._remoteHost,
  67. });
  68. };
  69. // 检查是否启用外部上传
  70. this._CheckExternalEnabled = () => {
  71. return request({
  72. url: '/api/system/config/usingExternalUploadService',
  73. method: 'get'
  74. }).then((resp) => {
  75. if (resp.enabled) {
  76. this._token = resp.data;
  77. this._remoteHost = resp.fileServerAddress;
  78. this._usingExternal = true;
  79. console.log('使用外部上传: ' + this._remoteHost);
  80. }
  81. else {
  82. this._token = null;
  83. this._remoteHost = null;
  84. this._usingExternal = false;
  85. console.log('使用内部上传');
  86. }
  87. this._supportExternal = true;
  88. }).catch(() => {
  89. this._token = null;
  90. this._remoteHost = null;
  91. this._usingExternal = false;
  92. this._supportExternal = false;
  93. console.log('未配置文件外部服务, 将使用内部上传');
  94. });
  95. };
  96. // 初始化
  97. this.Init = () => {
  98. return this._CheckExternalEnabled();
  99. };
  100. // 反初始化
  101. this.Deinit = () => {
  102. this._token = null;
  103. this._remoteHost = null;
  104. this._usingExternal = false;
  105. this._supportExternal = null;
  106. };
  107. // 是否初始化
  108. this.IsInit = () => {
  109. return this._supportExternal !== null;
  110. };
  111. // 当前是否使用外部上传
  112. this._UsingExternal = () => {
  113. return this._usingExternal;
  114. };
  115. // 获取上传地址
  116. this.GetUploadUrl = (innerUrl, extUrl) => {
  117. return this._UsingExternal() ? (this._remoteHost + extUrl) : (process.env.VUE_APP_BASE_API + innerUrl);
  118. };
  119. // 处理文件上传(外部调用, 自动初始化)
  120. this.Process = (innerUrl, extUrl, data) => {
  121. if (this.IsInit())
  122. return this.Upload(innerUrl, extUrl, data);
  123. else {
  124. return this.Init().then(() => { // 使用外部上传
  125. return this.Upload(innerUrl, extUrl, data);
  126. }).catch(() => {
  127. return this._Upload_inner(innerUrl, data);
  128. });
  129. }
  130. };
  131. // 文件上传(外部调用, 必须先初始化)
  132. this.Upload = (innerUrl, extUrl, data) => {
  133. if (!this.IsInit())
  134. throw '请先调用Init进行初始化';
  135. if (this._UsingExternal()) {
  136. return this._Upload_external(extUrl, data).catch(() => {
  137. console.log('外部上传失败! 尝试转为内部上传');
  138. this.ForceDisableExternal();
  139. return this._Upload_inner(innerUrl, data);
  140. });
  141. }
  142. else
  143. return this._Upload_inner(innerUrl, data);
  144. };
  145. // 强制禁用外部上传(外部上传失败时启用内部上传)
  146. this.ForceDisableExternal = () => {
  147. this._usingExternal = false;
  148. };
  149. // 获取外部文件服务身份标识
  150. this.Token = () => {
  151. return this._token;
  152. };
  153. };