@quansitech/antd-admin 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/components/Column/Cascader.d.ts +3 -0
  2. package/dist/components/Column/Cascader.js +110 -0
  3. package/dist/components/Column/File.d.ts +18 -0
  4. package/dist/components/Column/File.js +176 -0
  5. package/dist/components/Column/Image.d.ts +10 -0
  6. package/dist/components/Column/Image.js +104 -0
  7. package/dist/components/Column/Readonly/Action/Link.d.ts +11 -0
  8. package/dist/components/Column/Readonly/Action/Link.js +114 -0
  9. package/dist/components/Column/Readonly/Action/index.d.ts +4 -0
  10. package/dist/components/Column/Readonly/Action/index.js +3 -0
  11. package/dist/components/Column/Readonly/Action.d.ts +12 -0
  12. package/dist/components/Column/Readonly/Action.js +96 -0
  13. package/dist/components/Column/Readonly/Cascader.d.ts +9 -0
  14. package/dist/components/Column/Readonly/Cascader.js +52 -0
  15. package/dist/components/Column/Readonly/File.d.ts +8 -0
  16. package/dist/components/Column/Readonly/File.js +54 -0
  17. package/dist/components/Column/Readonly/Image.d.ts +3 -0
  18. package/dist/components/Column/Readonly/Image.js +69 -0
  19. package/dist/components/Column/Readonly/Ueditor.d.ts +3 -0
  20. package/dist/components/Column/Readonly/Ueditor.js +24 -0
  21. package/dist/components/Column/Readonly/index.d.ts +8 -0
  22. package/dist/components/Column/Readonly/index.js +7 -0
  23. package/dist/components/Column/Ueditor.d.ts +27 -0
  24. package/dist/components/Column/Ueditor.js +333 -0
  25. package/dist/components/Column/index.d.ts +7 -0
  26. package/dist/components/Column/index.js +6 -0
  27. package/dist/components/Form/Action/Button.d.ts +15 -0
  28. package/dist/components/Form/Action/Button.js +194 -0
  29. package/dist/components/Form/Action/index.d.ts +4 -0
  30. package/dist/components/Form/Action/index.js +3 -0
  31. package/dist/components/Form/Actions.d.ts +6 -0
  32. package/dist/components/Form/Actions.js +48 -0
  33. package/dist/components/Form.d.ts +20 -0
  34. package/dist/components/Form.js +217 -0
  35. package/dist/components/FormContext.d.ts +7 -0
  36. package/dist/components/FormContext.js +2 -0
  37. package/dist/components/Layout/New.d.ts +7 -0
  38. package/dist/components/Layout/New.js +257 -0
  39. package/dist/components/Layout.d.ts +4 -0
  40. package/dist/components/Layout.js +67 -0
  41. package/dist/components/LayoutContext.d.ts +26 -0
  42. package/dist/components/LayoutContext.js +2 -0
  43. package/dist/components/ModalContext.d.ts +8 -0
  44. package/dist/components/ModalContext.js +6 -0
  45. package/dist/components/Table/Action/Button.d.ts +10 -0
  46. package/dist/components/Table/Action/Button.js +166 -0
  47. package/dist/components/Table/Action/StartEditable.d.ts +10 -0
  48. package/dist/components/Table/Action/StartEditable.js +79 -0
  49. package/dist/components/Table/Action/index.d.ts +5 -0
  50. package/dist/components/Table/Action/index.js +4 -0
  51. package/dist/components/Table/ToolbarActions.d.ts +6 -0
  52. package/dist/components/Table/ToolbarActions.js +52 -0
  53. package/dist/components/Table.d.ts +19 -0
  54. package/dist/components/Table.js +322 -0
  55. package/dist/components/TableContext.d.ts +14 -0
  56. package/dist/components/TableContext.js +2 -0
  57. package/dist/components/Tabs.d.ts +15 -0
  58. package/dist/components/Tabs.js +62 -0
  59. package/dist/env.d.ts +1 -0
  60. package/dist/global.d.ts +6 -0
  61. package/dist/index.d.ts +7 -0
  62. package/dist/index.js +7 -0
  63. package/dist/lib/container.d.ts +9 -0
  64. package/dist/lib/container.js +93 -0
  65. package/dist/lib/customRule.d.ts +3 -0
  66. package/dist/lib/customRule.js +7 -0
  67. package/dist/lib/global.d.ts +9 -0
  68. package/dist/lib/global.js +2 -0
  69. package/dist/lib/helpers.d.ts +14 -0
  70. package/dist/lib/helpers.js +183 -0
  71. package/dist/lib/http.d.ts +5 -0
  72. package/dist/lib/http.js +72 -0
  73. package/dist/lib/schemaHandler.d.ts +5 -0
  74. package/dist/lib/schemaHandler.js +133 -0
  75. package/dist/lib/upload.d.ts +20 -0
  76. package/dist/lib/upload.js +215 -0
  77. package/dist/lib/writeExtra.d.ts +1 -0
  78. package/dist/lib/writeExtra.js +28 -0
  79. package/dist/types.d.ts +25 -0
  80. package/package.json +14 -8
  81. package/components/Column/Cascader.tsx +0 -79
  82. package/components/Column/File.tsx +0 -166
  83. package/components/Column/Image.tsx +0 -77
  84. package/components/Column/Readonly/Action/Link.tsx +0 -78
  85. package/components/Column/Readonly/Action.tsx +0 -80
  86. package/components/Column/Readonly/Cascader.tsx +0 -51
  87. package/components/Column/Readonly/File.tsx +0 -53
  88. package/components/Column/Readonly/Image.tsx +0 -39
  89. package/components/Column/Readonly/Ueditor.tsx +0 -18
  90. package/components/Column/Ueditor.tsx +0 -314
  91. package/components/Form/Action/Button.tsx +0 -129
  92. package/components/Form/Actions.tsx +0 -39
  93. package/components/Form.tsx +0 -177
  94. package/components/FormContext.ts +0 -9
  95. package/components/Layout/New.tsx +0 -252
  96. package/components/Layout.tsx +0 -52
  97. package/components/LayoutContext.ts +0 -26
  98. package/components/ModalContext.ts +0 -16
  99. package/components/Table/Action/Button.tsx +0 -89
  100. package/components/Table/Action/StartEditable.tsx +0 -59
  101. package/components/Table/ToolbarActions.tsx +0 -44
  102. package/components/Table.tsx +0 -280
  103. package/components/TableContext.ts +0 -15
  104. package/components/Tabs.tsx +0 -72
  105. package/lib/container.ts +0 -84
  106. package/lib/customRule.ts +0 -10
  107. package/lib/global.ts +0 -11
  108. package/lib/helpers.tsx +0 -146
  109. package/lib/http.ts +0 -74
  110. package/lib/schemaHandler.ts +0 -122
  111. package/lib/upload.ts +0 -177
  112. package/lib/writeExtra.js +0 -31
  113. /package/{components → dist/components}/Column/Readonly/Action/types.d.ts +0 -0
  114. /package/{components → dist/components}/Column/Readonly/types.d.ts +0 -0
  115. /package/{components → dist/components}/Column/types.d.ts +0 -0
  116. /package/{components → dist/components}/Form/Action/types.d.ts +0 -0
  117. /package/{components → dist/components}/Table/Action/types.d.ts +0 -0
  118. /package/{components → dist/components}/Table.scss +0 -0
  119. /package/{components → dist/components}/types.d.ts +0 -0
@@ -0,0 +1,215 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
9
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
10
+ import http from "./http";
11
+ import { AxiosError } from "axios";
12
+ import { message, Upload } from "antd";
13
+ import { md5 } from "js-md5";
14
+ export function customRequest(_x) {
15
+ return _customRequest.apply(this, arguments);
16
+ }
17
+ function _customRequest() {
18
+ _customRequest = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {
19
+ var _options$file;
20
+ var policyRes, formData, url, key, res, _e$response;
21
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
22
+ while (1) switch (_context.prev = _context.next) {
23
+ case 0:
24
+ _context.next = 2;
25
+ return http({
26
+ url: options.action,
27
+ method: 'get',
28
+ headers: options.headers,
29
+ fetchOptions: {
30
+ noHandle: true
31
+ },
32
+ params: {
33
+ title: options.file.name,
34
+ hash_id: options.file.hash_id,
35
+ file_type: ((_options$file = options.file) === null || _options$file === void 0 ? void 0 : _options$file.type) || ''
36
+ }
37
+ });
38
+ case 2:
39
+ policyRes = _context.sent;
40
+ if (!policyRes.data.status) {
41
+ _context.next = 6;
42
+ break;
43
+ }
44
+ options.onSuccess && options.onSuccess(_objectSpread(_objectSpread({}, policyRes.data), {}, {
45
+ url: policyRes.data.url || policyRes.data.file_url
46
+ }));
47
+ return _context.abrupt("return");
48
+ case 6:
49
+ formData = new FormData();
50
+ url = '';
51
+ if (policyRes.data.server_url) {
52
+ url = policyRes.data.server_url;
53
+ } else if (policyRes.data.url) {
54
+ url = policyRes.data.url;
55
+ }
56
+ if (policyRes.data.params) {
57
+ for (key in policyRes.data.params) {
58
+ formData.append(key, policyRes.data.params[key]);
59
+ }
60
+ }
61
+ formData.append('file', options.file);
62
+ _context.prev = 11;
63
+ _context.next = 14;
64
+ return http({
65
+ url: url,
66
+ method: 'post',
67
+ data: formData,
68
+ fetchOptions: {
69
+ noHandle: true
70
+ },
71
+ headers: options.headers,
72
+ onUploadProgress: function onUploadProgress(ev) {
73
+ options.onProgress && options.onProgress({
74
+ percent: (ev.progress || 0) * 100
75
+ });
76
+ }
77
+ });
78
+ case 14:
79
+ res = _context.sent;
80
+ if (!res.data.info) {
81
+ _context.next = 19;
82
+ break;
83
+ }
84
+ message.error(res.data.info);
85
+ options.onError && options.onError(new Error(res.data.info), res.data);
86
+ return _context.abrupt("return");
87
+ case 19:
88
+ options.onSuccess && options.onSuccess(_objectSpread(_objectSpread({}, res.data), {}, {
89
+ url: res.data.url || res.data.file_url
90
+ }));
91
+ _context.next = 27;
92
+ break;
93
+ case 22:
94
+ _context.prev = 22;
95
+ _context.t0 = _context["catch"](11);
96
+ if (_context.t0 instanceof AxiosError) {
97
+ options.onError && options.onError(_context.t0, (_e$response = _context.t0.response) === null || _e$response === void 0 ? void 0 : _e$response.data);
98
+ }
99
+ if (_context.t0 instanceof Error) {
100
+ options.onError && options.onError({
101
+ name: _context.t0.name,
102
+ message: _context.t0.message,
103
+ method: options.method,
104
+ url: options.action
105
+ });
106
+ }
107
+ throw _context.t0;
108
+ case 27:
109
+ case "end":
110
+ return _context.stop();
111
+ }
112
+ }, _callee, null, [[11, 22]]);
113
+ }));
114
+ return _customRequest.apply(this, arguments);
115
+ }
116
+ export function getBase64(file) {
117
+ return new Promise(function (resolve, reject) {
118
+ var reader = new FileReader();
119
+ reader.readAsDataURL(file);
120
+ reader.onload = function () {
121
+ return resolve(reader.result);
122
+ };
123
+ reader.onerror = function (error) {
124
+ return reject(error);
125
+ };
126
+ });
127
+ }
128
+
129
+ /**
130
+ * 计算文件MD5
131
+ * https://github.com/quansitech/file-md5-wasm/blob/master/js/calc_file_hash.js
132
+ * @param file
133
+ */
134
+ export function calc_file_hash(file) {
135
+ var MD5_RANGE_SIZE = 10 * 1024 * 1024;
136
+ var CUT_LIMIT = 40 * 1024 * 1024;
137
+ function makeMd5Range(fileSize) {
138
+ if (CUT_LIMIT > fileSize) {
139
+ return [[0, fileSize]];
140
+ }
141
+
142
+ // MD5_RANGE_SIZE设置为10
143
+ var first = [0.0, MD5_RANGE_SIZE];
144
+ var last = [fileSize - MD5_RANGE_SIZE, fileSize];
145
+
146
+ // 中间段算法
147
+ var rangeMod = fileSize - 3.0 * MD5_RANGE_SIZE;
148
+ var midStart = fileSize % rangeMod;
149
+ var middle = [MD5_RANGE_SIZE + midStart, MD5_RANGE_SIZE + midStart + MD5_RANGE_SIZE];
150
+ return [first, middle, last];
151
+ }
152
+ return new Promise(function (resolve, reject) {
153
+ var fileSize = file.size;
154
+ var range = makeMd5Range(fileSize);
155
+ var index = 0;
156
+ var hash = md5.create(); // 创建MD5哈希对象
157
+
158
+ var reader = new FileReader();
159
+ reader.onload = function (e) {
160
+ var _e$target;
161
+ // 处理当前分块的读取结果
162
+ var chunkData = (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.result;
163
+ hash.update(chunkData); // 更新哈希计算结果
164
+
165
+ if (index < range.length - 1) {
166
+ index++;
167
+ readNextChunk(range, index);
168
+ } else {
169
+ var fileMD5 = hash.hex(); // 计算文件的最终MD5哈希值
170
+
171
+ resolve(fileMD5);
172
+ }
173
+ };
174
+ reader.onerror = function (e) {
175
+ reject(e);
176
+ };
177
+ function readNextChunk(chunkRange, index) {
178
+ var chunk = file.slice(chunkRange[index][0], chunkRange[index][1]);
179
+ reader.readAsArrayBuffer(chunk);
180
+ }
181
+ readNextChunk(range, index);
182
+ });
183
+ }
184
+ export function beforeUpload(_x2, _x3, _x4) {
185
+ return _beforeUpload.apply(this, arguments);
186
+ }
187
+ function _beforeUpload() {
188
+ _beforeUpload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(file, fileList, allFileList) {
189
+ var f;
190
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
191
+ while (1) switch (_context2.prev = _context2.next) {
192
+ case 0:
193
+ _context2.next = 2;
194
+ return calc_file_hash(file);
195
+ case 2:
196
+ file.hash_id = _context2.sent;
197
+ f = allFileList.filter(function (item) {
198
+ return !!item.hash_id;
199
+ }).find(function (item) {
200
+ return item.hash_id === file.hash_id;
201
+ });
202
+ if (!f) {
203
+ _context2.next = 7;
204
+ break;
205
+ }
206
+ message.error(file.name + '文件已上传');
207
+ return _context2.abrupt("return", Upload.LIST_IGNORE);
208
+ case 7:
209
+ case "end":
210
+ return _context2.stop();
211
+ }
212
+ }, _callee2);
213
+ }));
214
+ return _beforeUpload.apply(this, arguments);
215
+ }
@@ -0,0 +1 @@
1
+ export default function (): void;
@@ -0,0 +1,28 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import * as process from "node:process";
4
+ export default function () {
5
+ // 分析额外组件
6
+ if (!fs.existsSync(process.cwd() + '/vendor')) {
7
+ throw new Error('Please run `composer install` first.');
8
+ }
9
+ var installed = JSON.parse(fs.readFileSync(process.cwd() + '/vendor/composer/installed.json').toString());
10
+ var extras = installed.packages.filter(function (p) {
11
+ var _p$extra;
12
+ return !!((_p$extra = p.extra) !== null && _p$extra !== void 0 && (_p$extra = _p$extra.qscmf) !== null && _p$extra !== void 0 && _p$extra['antd-admin']);
13
+ }).map(function (p) {
14
+ return {
15
+ name: p.name,
16
+ path: p['install-path'],
17
+ component: p.extra.qscmf['antd-admin'].component
18
+ };
19
+ });
20
+ var extra_script = "\nimport {container} from \"@quansitech/antd-admin\";\n\n".concat(extras.map(function (e) {
21
+ var cs = [];
22
+ for (var componentKey in e.component) {
23
+ cs.push("container.register('".concat(componentKey, "', () => import('../../../vendor").concat(path.join('/', e.path, e.component[componentKey]), "'));"));
24
+ }
25
+ return cs.join('\n');
26
+ }), "\n");
27
+ fs.writeFileSync(process.cwd() + '/resources/js/backend/extra.ts', extra_script);
28
+ }
@@ -0,0 +1,25 @@
1
+ type RequestOptions = {
2
+ url: string,
3
+ method: string,
4
+ data?: Record<string, any>,
5
+ confirm?: string | boolean,
6
+ afterAction?: string[],
7
+ headers?: Record<string, string>,
8
+ }
9
+
10
+ type Condition = {
11
+ field: string,
12
+ operator: string,
13
+ value: any
14
+ }
15
+
16
+ type ModalOptions = {
17
+ tableContext: TableContext,
18
+ contexts?: Record<string, any>
19
+ title?: string,
20
+ content: {
21
+ type: 'form' | 'table',
22
+ props?: any,
23
+ url?: string,
24
+ },
25
+ }
package/package.json CHANGED
@@ -1,26 +1,32 @@
1
1
  {
2
2
  "name": "@quansitech/antd-admin",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "type": "module",
5
5
  "files": [
6
- "components",
7
- "lib"
6
+ "dist"
8
7
  ],
8
+ "main": "dist/index.js",
9
+ "scripts": {
10
+ "build": "father build",
11
+ "dev": "father dev"
12
+ },
9
13
  "dependencies": {
10
14
  "@ant-design/pro-components": "^2.7.15",
11
15
  "@inertiajs/react": "^1.2.0",
12
16
  "antd": "^5.20.5",
13
17
  "antd-img-crop": "^4.23.0",
14
18
  "axios": "^1.7.7",
15
- "lodash": "^4.17.21",
19
+ "es-toolkit": "^1.26.1",
20
+ "js-md5": "^0.8.3",
16
21
  "react": "^18.3.0",
17
- "react-dom": "^18.3.0",
18
- "js-md5": "^0.8.3"
22
+ "react-dom": "^18.3.0"
19
23
  },
20
24
  "devDependencies": {
21
- "@types/lodash": "^4.14.193",
22
25
  "@types/react": "^18.3.0",
23
- "@types/react-dom": "^18.3.0"
26
+ "@types/react-dom": "^18.3.0",
27
+ "father": "^4.5.1",
28
+ "sass-embedded": "^1.80.6",
29
+ "typescript": "^5.6.3"
24
30
  },
25
31
  "author": "958691165@qq.com",
26
32
  "license": "MIT",
@@ -1,79 +0,0 @@
1
- import {ColumnProps} from "./types";
2
- import {Cascader} from "antd";
3
- import {useEffect, useState} from "react";
4
- import http from "../../lib/http";
5
-
6
- export default function (props: ColumnProps) {
7
- const [options, setOptions] = useState<{ value: string, label: string }[]>();
8
- const [values, setValues] = useState<any>()
9
-
10
- useEffect(() => {
11
- const value = props.config.value
12
- setOptions(props.config.options as []);
13
-
14
- // 远程获取数据
15
- if (props.fieldProps.loadDataUrl) {
16
- http({
17
- url: props.fieldProps.loadDataUrl,
18
- method: 'get',
19
- params: {
20
- value,
21
- }
22
- }).then(res => {
23
- setOptions(res.data)
24
-
25
- if (value) {
26
- const findValue = (options: any[], value: any): any => {
27
- for (let i = 0; i < options.length; i++) {
28
- const option = options[i];
29
- if (option.value === value) {
30
- return [option.value]
31
- } else if (option.children) {
32
- return [option.value, ...findValue(option.children, value)]
33
- }
34
- }
35
- }
36
-
37
- setValues(findValue(res.data, value))
38
- }
39
-
40
- })
41
- }
42
-
43
- }, []);
44
-
45
- const loadData = async (selectedOptions: any) => {
46
- const targetOption = selectedOptions[selectedOptions.length - 1];
47
- if (targetOption.children) {
48
- return
49
- }
50
- targetOption.loading = true;
51
- const res = await http(props.fieldProps.loadDataUrl, {
52
- params: {
53
- selected: targetOption.value
54
- }
55
- })
56
- targetOption.loading = false;
57
- targetOption.children = res.data;
58
- setOptions([...options as []]);
59
- }
60
-
61
- const onChange = (values: any[]) => {
62
- setValues(values)
63
- if (!values?.length) {
64
- props.form.setFieldValue(props.dataIndex, undefined)
65
- return
66
- }
67
- const value = values[values.length - 1]
68
- props.form.setFieldValue(props.dataIndex, value)
69
- }
70
-
71
- return <div className={props.className}>
72
- <Cascader options={options}
73
- onChange={onChange}
74
- placeholder={'请选择'}
75
- value={values}
76
- loadData={props.fieldProps.loadDataUrl ? loadData : undefined}
77
- ></Cascader>
78
- </div>
79
- }
@@ -1,166 +0,0 @@
1
- import {Alert, Button, Spin, Tooltip, Upload, UploadFile, UploadProps} from "antd";
2
- import React, {ReactNode, useContext, useEffect, useState} from "react";
3
- import {beforeUpload, customRequest} from "../../lib/upload";
4
- import {ColumnProps} from "./types";
5
- import {UploadListType} from "antd/es/upload/interface";
6
- import {DndContext, DragEndEvent, PointerSensor, useSensor} from '@dnd-kit/core';
7
- import {arrayMove, SortableContext, useSortable, verticalListSortingStrategy,} from '@dnd-kit/sortable';
8
- import {CSS} from '@dnd-kit/utilities';
9
- import {RcFile} from "antd/lib/upload";
10
- import {FormContext} from "../FormContext";
11
- import {TableContext} from "../TableContext";
12
-
13
-
14
- interface DraggableUploadListItemProps {
15
- originNode: React.ReactElement<any, string | React.JSXElementConstructor<any>>;
16
- file: UploadFile<any>;
17
- }
18
-
19
- const DraggableUploadListItem = ({originNode, file}: DraggableUploadListItemProps) => {
20
- const {attributes, listeners, setNodeRef, transform, transition, isDragging} = useSortable({
21
- id: file.uid,
22
- });
23
-
24
- const style: React.CSSProperties = {
25
- transform: CSS.Translate.toString(transform),
26
- transition,
27
- cursor: 'move',
28
- height: '100%',
29
- };
30
-
31
- return (
32
- <div
33
- ref={setNodeRef}
34
- style={style}
35
- // prevent preview event when drag end
36
- className={isDragging ? 'is-dragging' : ''}
37
- {...attributes}
38
- {...listeners}
39
- >
40
- {/* hide error tooltip when dragging */}
41
- {file.status === 'error' && isDragging ? originNode.props.children : originNode}
42
- </div>
43
- );
44
- };
45
-
46
-
47
- export default function (props: ColumnProps & {
48
- fieldProps?: {
49
- uploadRequest: {
50
- policyGetUrl: string,
51
- },
52
- maxCount?: number,
53
- }
54
-
55
- uploadButton?: (fileList: UploadFile[]) => ReactNode,
56
- listType?: UploadListType,
57
- onPreview?: (file: UploadFile) => Promise<void>,
58
- renderUploader?: (attr: {
59
- dom: JSX.Element,
60
- }) => ReactNode
61
- }) {
62
-
63
- const [loading, setLoading] = useState(true);
64
- const [fileList, setFileList] = useState<UploadFile[]>([]);
65
- const formContext = useContext(FormContext);
66
- const tableContext = useContext(TableContext);
67
-
68
- const handlePreview = async (file: UploadFile) => {
69
- if (!file.url && !file.preview) {
70
- file.preview = URL.createObjectURL(file.originFileObj as RcFile);
71
- }
72
-
73
- window.open(file.url || (file.preview as string))
74
- };
75
-
76
- useEffect(() => {
77
- let extraRenderValue = [];
78
- if (formContext && formContext.extraRenderValues) {
79
- extraRenderValue = formContext.extraRenderValues[props.dataIndex as string] ?? []
80
- } else if (tableContext && tableContext.extraRenderValues) {
81
- console.log(111)
82
- extraRenderValue = tableContext.extraRenderValues[props.index as number]?.[props.schema.dataIndex as string] ?? []
83
- }
84
-
85
- setFileList(extraRenderValue.map((item: any) => {
86
- return {
87
- uid: item.id,
88
- status: 'done',
89
- url: item.url,
90
- name: item.name,
91
- hash_id: item.hash_id,
92
- response: {
93
- file_id: item.id,
94
- url: item.url,
95
- }
96
- }
97
- }))
98
-
99
- setLoading(false)
100
- }, []);
101
-
102
- useEffect(() => {
103
- props.form?.setFieldValue(props.dataIndex, fileList.map(file => {
104
- if (file.status === 'done') {
105
- file.url = file.response.url || file.response.file_url
106
- }
107
- return file
108
- }))
109
- }, [fileList]);
110
-
111
- const uploadButton = (
112
- <Tooltip
113
- title={fileList.length >= (props.fieldProps?.maxCount || 1) ? '最多只能上传' + (props.fieldProps?.maxCount || 1) + '个文件' : ''}>
114
- <Button disabled={fileList.length >= (props.fieldProps?.maxCount || 1)}>上传文件</Button>
115
- </Tooltip>
116
- );
117
-
118
- const sensor = useSensor(PointerSensor, {
119
- activationConstraint: {distance: 10},
120
- });
121
-
122
- const onDragEnd = ({active, over}: DragEndEvent) => {
123
- if (active.id !== over?.id) {
124
- setFileList((prev) => {
125
- const activeIndex = prev.findIndex((i) => i.uid === active.id);
126
- const overIndex = prev.findIndex((i) => i.uid === over?.id);
127
- return arrayMove(prev, activeIndex, overIndex);
128
- });
129
- }
130
- };
131
-
132
- const uploader = (<Upload
133
- {...props.fieldProps}
134
- action={props.fieldProps.uploadRequest.policyGetUrl}
135
- listType={props.listType || 'text'}
136
- fileList={fileList}
137
- itemRender={(originNode, file) => (
138
- <DraggableUploadListItem originNode={originNode} file={file}/>
139
- )}
140
- onPreview={props.onPreview || handlePreview}
141
- onChange={({fileList}) => setFileList(fileList)}
142
- beforeUpload={(f, fl) => beforeUpload(f, fl, fileList)}
143
- customRequest={customRequest as UploadProps['customRequest']}
144
- >
145
- {props.uploadButton ? props.uploadButton(fileList) : uploadButton}
146
- </Upload>)
147
-
148
- return <>
149
- {props.fieldProps?.uploadRequest
150
- ? <>
151
- <Spin spinning={loading}>
152
- <DndContext sensors={[sensor]} onDragEnd={onDragEnd}>
153
- <SortableContext items={fileList.map((i) => i.uid)} strategy={verticalListSortingStrategy}>
154
- {props.renderUploader ? props.renderUploader({dom: uploader}) : uploader}
155
- </SortableContext>
156
- </DndContext>
157
- {<div style={{marginBottom: '16px'}}></div>}
158
- </Spin>
159
- </>
160
- : <>
161
- <Alert message={'缺少 uploadRequest 属性'}
162
- type={"error"}/>
163
- </>
164
- }
165
- </>
166
- }
@@ -1,77 +0,0 @@
1
- import {Col, Image, Row, UploadFile} from "antd";
2
- import React, {useState} from "react";
3
- import {PlusOutlined} from '@ant-design/icons';
4
- import {FileType, getBase64} from "../../lib/upload";
5
- import {ColumnProps} from "./types";
6
- import File from "./File";
7
- import ImgCrop from 'antd-img-crop';
8
-
9
- export default function (props: ColumnProps & {
10
- fieldProps?: {
11
- maxCount?: number,
12
- crop?: {
13
- ratio: string,
14
- }
15
- }
16
- }) {
17
-
18
- const [previewOpen, setPreviewOpen] = useState(false);
19
- const [previewImage, setPreviewImage] = useState('');
20
-
21
- const handlePreview = async (file: UploadFile) => {
22
- if (!file.url && !file.preview) {
23
- file.preview = await getBase64(file.originFileObj as FileType);
24
- }
25
-
26
- setPreviewImage(file.url || (file.preview as string));
27
- setPreviewOpen(true);
28
- };
29
-
30
- const uploadButton = (fileList: UploadFile[]) => (
31
- fileList.length < (props.fieldProps?.maxCount || 1) ?
32
- <Row justify={'center'}>
33
- <Col flex={1}>
34
- <PlusOutlined size={18}/>
35
- <div style={{marginTop: 8}}>上传</div>
36
- </Col>
37
- </Row> : null
38
- );
39
-
40
- const renderUploader = ({dom}: { dom: JSX.Element }) => {
41
- if (props.fieldProps?.crop) {
42
- const aspects = props.fieldProps.crop.ratio.split(/[\/:]/)
43
- let aspect = Number(aspects)
44
- if (aspects.length === 2) {
45
- aspect = parseInt(aspects[0]) / parseInt(aspects[1])
46
- }
47
- return <>
48
- <ImgCrop rotationSlider aspect={aspect}>
49
- {dom}
50
- </ImgCrop>
51
- </>
52
- } else {
53
- return dom
54
- }
55
- }
56
-
57
- return <>
58
- <File {...props}
59
-
60
- uploadButton={uploadButton}
61
- listType={'picture-card'}
62
- onPreview={handlePreview}
63
- renderUploader={renderUploader}
64
- ></File>
65
- {previewImage && (
66
- <Image
67
- wrapperStyle={{display: 'none'}}
68
- preview={{
69
- visible: previewOpen,
70
- onVisibleChange: (visible) => setPreviewOpen(visible),
71
- afterOpenChange: (visible) => !visible && setPreviewImage(''),
72
- }}
73
- src={previewImage}
74
- />
75
- )}
76
- </>
77
- }