@yibozhang/pro-table 0.0.3 → 0.0.4

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 (48) hide show
  1. package/README.md +55 -55
  2. package/bundles/yibozhang-pro-table.umd.js +312 -374
  3. package/bundles/yibozhang-pro-table.umd.js.map +1 -1
  4. package/bundles/yibozhang-pro-table.umd.min.js +1 -1
  5. package/bundles/yibozhang-pro-table.umd.min.js.map +1 -1
  6. package/esm2015/lib/components/colmuns-setting/colmuns-setting.component.js +1 -1
  7. package/esm2015/lib/components/dynamic-search-field/dynamic-search-field.component.js +1 -1
  8. package/esm2015/lib/constants.js +1 -1
  9. package/esm2015/lib/page-container/page-container.component.js +1 -1
  10. package/esm2015/lib/page-container/page-container.module.js +1 -1
  11. package/esm2015/lib/page-public/antd-form.js +35 -360
  12. package/esm2015/lib/page-public/array-form.js +269 -0
  13. package/esm2015/lib/plate-input/plate-input.component.js +1 -1
  14. package/esm2015/lib/plate-input/plate-input.module.js +1 -1
  15. package/esm2015/lib/plate-input/plate-prefix-load.service.js +1 -1
  16. package/esm2015/lib/pro-table.component.js +1 -1
  17. package/esm2015/lib/pro-table.module.js +1 -1
  18. package/esm2015/lib/table-search-bar/table-search-bar-module.js +1 -1
  19. package/esm2015/lib/table-search-bar/table-search-bar.component.js +1 -1
  20. package/esm2015/lib/tokens.js +1 -1
  21. package/esm2015/lib/type.js +1 -1
  22. package/esm2015/public-api.js +4 -2
  23. package/esm2015/yibozhang-pro-table.js +1 -1
  24. package/fesm2015/yibozhang-pro-table.js +303 -360
  25. package/fesm2015/yibozhang-pro-table.js.map +1 -1
  26. package/lib/components/colmuns-setting/colmuns-setting.component.d.ts.map +1 -1
  27. package/lib/components/dynamic-search-field/dynamic-search-field.component.d.ts.map +1 -1
  28. package/lib/constants.d.ts.map +1 -1
  29. package/lib/page-container/page-container.component.d.ts.map +1 -1
  30. package/lib/page-container/page-container.module.d.ts.map +1 -1
  31. package/lib/page-public/antd-form.d.ts +1 -20
  32. package/lib/page-public/antd-form.d.ts.map +1 -1
  33. package/lib/page-public/array-form.d.ts +186 -0
  34. package/lib/page-public/array-form.d.ts.map +1 -0
  35. package/lib/plate-input/plate-input.component.d.ts.map +1 -1
  36. package/lib/plate-input/plate-input.module.d.ts.map +1 -1
  37. package/lib/plate-input/plate-prefix-load.service.d.ts.map +1 -1
  38. package/lib/pro-table.component.d.ts.map +1 -1
  39. package/lib/pro-table.module.d.ts.map +1 -1
  40. package/lib/table-search-bar/table-search-bar-module.d.ts.map +1 -1
  41. package/lib/table-search-bar/table-search-bar.component.d.ts.map +1 -1
  42. package/lib/tokens.d.ts.map +1 -1
  43. package/lib/type.d.ts.map +1 -1
  44. package/package.json +1 -1
  45. package/public-api.d.ts +4 -2
  46. package/public-api.d.ts.map +1 -1
  47. package/yibozhang-pro-table.d.ts.map +1 -1
  48. package/yibozhang-pro-table.metadata.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"yibozhang-pro-table.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/pro-table/src/lib/constants.ts","../../../projects/pro-table/src/lib/tokens.ts","../../../projects/pro-table/src/lib/pro-table.component.ts","../../../projects/pro-table/src/lib/page-container/page-container.component.ts","../../../projects/pro-table/src/lib/page-container/page-container.module.ts","../../../projects/pro-table/src/lib/plate-input/plate-input.component.ts","../../../projects/pro-table/src/lib/plate-input/plate-input.module.ts","../../../projects/pro-table/src/lib/table-search-bar/table-search-bar.component.ts","../../../projects/pro-table/src/lib/table-search-bar/table-search-bar-module.ts","../../../projects/pro-table/src/lib/components/colmuns-setting/colmuns-setting.component.ts","../../../projects/pro-table/src/lib/components/dynamic-search-field/dynamic-search-field.component.ts","../../../projects/pro-table/src/lib/pro-table.module.ts","../../../projects/pro-table/src/lib/plate-input/plate-prefix-load.service.ts","../../../projects/pro-table/src/lib/page-public/antd-form.ts","../../../projects/pro-table/src/public-api.ts","../../../projects/pro-table/src/yibozhang-pro-table.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import {\r\n InputFieldProps,\r\n InputPlateFieldProps,\r\n SelectFieldProps,\r\n SelectMultipleFieldProps,\r\n DateFieldProps,\r\n CheckboxFieldProps,\r\n AutoCompleteFieldProps,\r\n CustomFieldProps,\r\n InputNumberFieldProps,\r\n} from \"./type\";\r\n\r\nexport const PRO_TABLE_DEFAULT_PROPS: {\r\n input: InputFieldProps;\r\n inputPlate: InputPlateFieldProps;\r\n select: SelectFieldProps;\r\n selectMultiple: SelectMultipleFieldProps;\r\n date: DateFieldProps;\r\n checkbox: CheckboxFieldProps;\r\n autoComplete: AutoCompleteFieldProps;\r\n custom: CustomFieldProps;\r\n inputNumber: InputNumberFieldProps;\r\n} = {\r\n input: {\r\n name: \"\",\r\n placeHolder: \"\",\r\n disabled: false,\r\n label: \"\",\r\n value: \"\",\r\n },\r\n select: {\r\n name: \"\",\r\n options: [],\r\n disabled: false,\r\n label: \"\",\r\n value: \"\",\r\n allowClear: true,\r\n placeHolder: \"\",\r\n },\r\n selectMultiple: {\r\n name: \"\",\r\n options: [],\r\n disabled: false,\r\n label: \"\",\r\n value: [],\r\n allowClear: true,\r\n placeHolder: \"请选择\",\r\n },\r\n inputPlate: {\r\n name: \"\",\r\n label: \"\",\r\n value: \"\",\r\n },\r\n checkbox: {\r\n name: \"\",\r\n options: [],\r\n disabled: false,\r\n label: \"\",\r\n value: [],\r\n noStyle: false,\r\n },\r\n date: {\r\n name: \"\",\r\n disabled: false,\r\n label: \"\",\r\n value: \"\",\r\n allowClear: true,\r\n placeHolder: \"请选择\",\r\n showTime: false,\r\n format: \"yyyy-MM-dd\",\r\n mode: \"date\",\r\n },\r\n autoComplete: {\r\n name: \"\",\r\n disabled: false,\r\n placeHolder: \"请输入\",\r\n label: \"\",\r\n value: \"\",\r\n dataSource: () => [],\r\n backFill: false,\r\n defaultActiveFirstOption: false,\r\n returnFullData: false,\r\n },\r\n inputNumber: {\r\n name: \"\",\r\n disabled: false,\r\n label: \"\",\r\n value: \"\",\r\n placeHolder: \"请输入\",\r\n min: 0,\r\n max: 100,\r\n precision: 0,\r\n formatterPercent: (value: number) => `${value}`,\r\n parserPercent: (value: string) => value,\r\n },\r\n custom: {\r\n name: \"\",\r\n value: null,\r\n label: \"\",\r\n },\r\n};\r\n\r\nexport const PRO_TABLE_DEFAULT_COLUMN = {\r\n width: \"\",\r\n align: \"left\",\r\n fixedLeft: false,\r\n fixedRight: false,\r\n auxiliaryColumn: false,\r\n};\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport interface ProTableRemoteColumnService {\r\n /**\r\n * 查询当前表的列配置\r\n */\r\n getCol: (tableName: string, multiRow?: boolean) => Promise<any>;\r\n /**\r\n * 写入列配置\r\n */\r\n setCol?: (\r\n tableName: string,\r\n columns: Array<{\r\n field: string;\r\n isShow: boolean;\r\n header: string;\r\n sortName?: string | null;\r\n }>,\r\n multiRow?: boolean\r\n ) => Promise<any> | Observable<any>;\r\n}\r\n\r\nexport const PRO_TABLE_COLUMN_REMOTE = new InjectionToken<ProTableRemoteColumnService | null>(\r\n \"PRO_TABLE_COLUMN_REMOTE\"\r\n);\r\n\r\n/**\r\n * 车牌前缀选项接口\r\n */\r\nexport interface PlatePrefixOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * 车牌前缀加载服务接口\r\n */\r\nexport interface PlatePrefixLoadService {\r\n /**\r\n * 加载车牌前缀选项列表\r\n */\r\n loadPrefixOptions(): Promise<PlatePrefixOption[]>;\r\n}\r\n\r\nexport const PLATE_PREFIX_LOAD_SERVICE = new InjectionToken<PlatePrefixLoadService>(\r\n \"PLATE_PREFIX_LOAD_SERVICE\"\r\n);\r\n\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChild,\r\n ContentChildren,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Optional,\r\n Output,\r\n QueryList,\r\n TemplateRef,\r\n} from \"@angular/core\";\r\nimport { cloneDeep, hasIn, isNil, debounce, isEqual } from \"lodash-es\";\r\nimport { PRO_TABLE_DEFAULT_COLUMN, PRO_TABLE_DEFAULT_PROPS } from \"./constants\";\r\nimport {\r\n AutoCompleteFieldProps,\r\n CheckboxFieldProps,\r\n OptionsType,\r\n ProTableColumn,\r\n ProTablePageInfo,\r\n ProTableRequestResult,\r\n ProTableValuesChange,\r\n SelectFieldProps,\r\n} from \"./type\";\r\nimport { PRO_TABLE_COLUMN_REMOTE, ProTableRemoteColumnService } from \"./tokens\";\r\nimport { isObservable } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"app-pro-table\",\r\n templateUrl: \"./pro-table.component.html\",\r\n styleUrls: [\"./pro-table.component.css\"],\r\n})\r\nexport class ProTableComponent implements OnInit, AfterContentInit {\r\n @Input() showSearchBtn: boolean = true;\r\n\r\n @Input() showClearBtn: boolean = true;\r\n\r\n @Input() title: string | null = null;\r\n\r\n @Input() tableName: string = \"\";\r\n\r\n @Input() multiRow: boolean = false;\r\n\r\n @Input() columns: ProTableColumn[] = [];\r\n\r\n @Input() showSearchBar: boolean = true;\r\n\r\n @Input() showActionBar: boolean = true;\r\n\r\n @Input() confirmBtnText: string = \"查询\";\r\n\r\n @Input() clearBtnText: string = \"清空\";\r\n\r\n @Input() labelWidth: string = \"90px\";\r\n\r\n @Input() labelAlign: string = \"right\";\r\n\r\n @Input() dataSource: any[] = [];\r\n\r\n @Input() bordered: boolean = true;\r\n\r\n @Input() outerBordered: boolean = true;\r\n\r\n @Input() showPagination: boolean = true;\r\n\r\n @Input() frontPagination: boolean = false;\r\n\r\n @Input() scroll: { x?: string | number; y?: string | number } | null = null\r\n\r\n @Input() request: (params: any) => Promise<ProTableRequestResult>;\r\n\r\n @Input() summaryData: Record<string, any> | null = null;\r\n\r\n // 排序模式:local 本地排序;server 在线排序(提交给接口)\r\n @Input() sortMode: \"local\" | \"server\" = \"local\";\r\n\r\n @Input() showColumnSetting: boolean = false;\r\n\r\n // 是否开启多列排序(默认单列)\r\n @Input() multipleSort: boolean = false;\r\n\r\n @Input() showCheckbox: boolean = false;\r\n\r\n // 判断行是否禁用的函数\r\n @Input() rowDisabled: (data: any) => boolean = () => false;\r\n\r\n // 是否自动触发请求\r\n @Input() autoTriggerRequest: boolean = true;\r\n\r\n @Input() customTableRender?: TemplateRef<any>;\r\n\r\n @Output() onRowClick = new EventEmitter<any>();\r\n\r\n @Output() onRowDbClick = new EventEmitter<any>();\r\n\r\n @Output() onValuesChange = new EventEmitter<ProTableValuesChange>();\r\n\r\n @Output() onResetFormBeforeReload = new EventEmitter<any>();\r\n\r\n @ContentChild(\"actionBar\") actionBarTpl!: TemplateRef<any>;\r\n\r\n @ContentChild(\"ImgActionBar\") imgActionBarTpl!: TemplateRef<any>;\r\n\r\n @ContentChildren(TemplateRef) allTemplates!: QueryList<TemplateRef<any>>;\r\n\r\n private _savedSearchParams: any = {};\r\n\r\n // 存储模板映射关系 - 通过字符串名称映射到模板引用\r\n private templateMap = new Map<string, TemplateRef<any>>();\r\n\r\n // 存储所有自定义模板的引用\r\n private customTemplates = new Map<string, TemplateRef<any>>();\r\n\r\n // 记录各列排序状态:'ascend' | 'descend' | null\r\n\r\n private _sortMap: Record<string, \"ascend\" | \"descend\" | null> = {};\r\n\r\n // 记录多列排序的优先级(后设置的优先)\r\n private _sortPriority: string[] = [];\r\n\r\n // 存储每个 autoComplete 字段的防抖函数\r\n private _autoCompleteDebounceMap: Map<string, (event: Event) => void> =\r\n new Map();\r\n\r\n // 仅在初始化时运行列配置预检查,避免后续调用重复触发\r\n private _preCheckDone: boolean = false;\r\n\r\n _columns: ProTableColumn[] = [];\r\n\r\n // 筛选表单数据存储\r\n _searchParams: any = {};\r\n\r\n // 筛选表单list渲染数据\r\n _searchFiledColumns: ProTableColumn[] = [];\r\n\r\n _pageInfo: ProTablePageInfo = {\r\n pageIndex: 1,\r\n pageSize: 15,\r\n total: 100,\r\n pageSizeOptions: [10, 15, 20, 50, 100, 500, 1000],\r\n };\r\n\r\n _loading: boolean = false;\r\n\r\n _selectedTableRow: any = null;\r\n\r\n // 选中的行数据(用于复选框选择)\r\n _selectedRows: any[] = [];\r\n\r\n // 全选状态\r\n _checkedAll: boolean = false;\r\n\r\n // 半选状态(部分选中)\r\n _indeterminate: boolean = false;\r\n\r\n // 远程columns\r\n _serverColumns: ProTableColumn[] = [];\r\n\r\n // 存储 autoComplete 字段的数据源\r\n _autoCompleteDataSources: Record<string, any[]> = {};\r\n\r\n constructor(\r\n @Optional()\r\n @Inject(PRO_TABLE_COLUMN_REMOTE)\r\n private columnRemote: ProTableRemoteColumnService | null\r\n ) {}\r\n\r\n private async fetchRemoteColumns() {\r\n if (!this.columnRemote?.getCol || !this.tableName) {\r\n return null;\r\n }\r\n try {\r\n const res = await this.columnRemote.getCol(this.tableName, this.multiRow);\r\n return res;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n private async persistRemoteColumns(columns: any[]) {\r\n if (!this.columnRemote?.setCol || !this.tableName) {\r\n return null;\r\n }\r\n try {\r\n const result = this.columnRemote.setCol(\r\n this.tableName,\r\n columns,\r\n this.multiRow\r\n );\r\n if (result && isObservable(result)) {\r\n return await result.toPromise();\r\n }\r\n return result;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n async ngOnInit(): Promise<void> {\r\n this._searchParams = {};\r\n this.formateInnerColumns(this.columns);\r\n await this.setSearchParams(this.columns);\r\n\r\n // 使用 Proxy 包装 _searchParams,拦截表单项值变化并向外发出事件\r\n this._searchParams = this.createSearchParamsProxy(this._searchParams);\r\n if (this.autoTriggerRequest) {\r\n this.handleQuery();\r\n }\r\n this.queryDynamicColumns();\r\n }\r\n\r\n ngAfterContentInit() {\r\n // 自动注册所有自定义模板\r\n this.autoRegisterTemplates();\r\n }\r\n\r\n private async preCheckServerColumns(): Promise<boolean> {\r\n const res = await this.fetchRemoteColumns();\r\n if (!res) return false;\r\n const initColumns = this.columns\r\n .filter((col) => !col.auxiliaryColumn)\r\n .map((column) => {\r\n return {\r\n field: column.prop,\r\n isShow: !column.hideInTable, // 默认全部显示\r\n header: column.title,\r\n sortName: column.sortName || null,\r\n };\r\n });\r\n if (res.code === 0) {\r\n if (!isEqual(res.data.tabColumn, initColumns)) {\r\n const initRes = await this.persistRemoteColumns(initColumns);\r\n if (initRes) {\r\n this.queryDynamicColumns();\r\n }\r\n\r\n return false;\r\n } else {\r\n console.log(\"一致\");\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n private async queryDynamicColumns() {\r\n if (!this.tableName || !this.columnRemote) return;\r\n if (!this._preCheckDone) {\r\n const checkResult = await this.preCheckServerColumns();\r\n this._preCheckDone = true;\r\n if (!checkResult) return;\r\n }\r\n const res = await this.fetchRemoteColumns();\r\n if (!res) return;\r\n if (res.code === 0) {\r\n const _tabColumn = res.data.tabColumn.map((item) => {\r\n return {\r\n title: item.header,\r\n prop: item.field,\r\n sortName: item.sortName,\r\n hideInTable: !item.isShow,\r\n };\r\n });\r\n this._serverColumns = _tabColumn;\r\n this.updateTableColumns(_tabColumn);\r\n } else if (res.code === 10) {\r\n // 如果未设置接口返回,需要默认调用一次修改函数初始化数据\r\n const initColumns = this.columns\r\n .filter((col) => !col.auxiliaryColumn)\r\n .map((column) => {\r\n return {\r\n field: column.prop,\r\n isShow: true, // 默认全部显示\r\n header: column.title,\r\n sortName: column.sortName || null,\r\n };\r\n });\r\n\r\n // 调用修改接口初始化数据\r\n const initRes = await this.persistRemoteColumns(initColumns);\r\n if (initRes) {\r\n this.queryDynamicColumns();\r\n }\r\n }\r\n }\r\n\r\n private formateInnerColumns(columns: ProTableColumn[]) {\r\n this._columns = columns\r\n .filter((item) => !item.hideInTable)\r\n .map((item) => {\r\n return { ...PRO_TABLE_DEFAULT_COLUMN, ...item } as ProTableColumn;\r\n });\r\n }\r\n\r\n // 自动注册模板的方法\r\n private autoRegisterTemplates() {\r\n // 获取所有需要自定义模板的列\r\n const columnsWithCustomRender = this._columns.filter(\r\n (col) => col.customRender\r\n );\r\n\r\n if (columnsWithCustomRender.length > 0) {\r\n // 尝试从ContentChildren中查找对应的模板\r\n columnsWithCustomRender.forEach((column) => {\r\n const templateName = column.customRender!;\r\n const template = this.findTemplateByName(templateName);\r\n\r\n if (template) {\r\n this.customTemplates.set(templateName, template);\r\n } else {\r\n }\r\n });\r\n }\r\n\r\n // 获取所有需要自定义label模板的列(使用原始columns,确保顺序正确)\r\n const columnsWithCustomLabel = this.columns.filter(\r\n (col) => col.customLabelRender\r\n );\r\n\r\n if (columnsWithCustomLabel.length > 0) {\r\n // 尝试从ContentChildren中查找对应的label模板\r\n columnsWithCustomLabel.forEach((column) => {\r\n const templateName = column.customLabelRender!;\r\n const template = this.findLabelTemplateByName(\r\n templateName,\r\n columnsWithCustomLabel\r\n );\r\n\r\n if (template) {\r\n this.customTemplates.set(templateName, template);\r\n } else {\r\n }\r\n });\r\n }\r\n }\r\n\r\n // 根据名称查找模板\r\n private findTemplateByName(templateName: string): TemplateRef<any> | null {\r\n return this.getTemplateFromContent(templateName);\r\n }\r\n\r\n // 从ContentChildren中查找指定名称的模板\r\n private getTemplateFromContent(\r\n templateName: string\r\n ): TemplateRef<any> | null {\r\n const customRenderColumns = this._columns.filter((col) => col.customRender);\r\n const templateIndex = customRenderColumns.findIndex(\r\n (col) => col.customRender === templateName\r\n );\r\n\r\n if (templateIndex >= 0) {\r\n // 获取所有模板,并过滤掉特殊模板(actionBar和ImgActionBar)\r\n // 这样可以避免因为特殊模板的位置导致索引计算错误\r\n const templates = this.allTemplates.toArray();\r\n const customTemplates = templates.filter(\r\n (tpl) => tpl !== this.actionBarTpl && tpl !== this.imgActionBarTpl\r\n );\r\n\r\n if (templateIndex < customTemplates.length) {\r\n const template = customTemplates[templateIndex];\r\n return template;\r\n }\r\n }\r\n\r\n console.warn(`未找到模板 ${templateName}`);\r\n return null;\r\n }\r\n\r\n // 根据名称查找label模板\r\n private findLabelTemplateByName(\r\n templateName: string,\r\n customLabelColumns: ProTableColumn[]\r\n ): TemplateRef<any> | null {\r\n const templateIndex = customLabelColumns.findIndex(\r\n (col) => col.customLabelRender === templateName\r\n );\r\n\r\n if (templateIndex >= 0) {\r\n // 获取所有模板,并过滤掉特殊模板(actionBar和ImgActionBar)\r\n const templates = this.allTemplates.toArray();\r\n const customTemplates = templates.filter(\r\n (tpl) => tpl !== this.actionBarTpl && tpl !== this.imgActionBarTpl\r\n );\r\n\r\n // 计算label模板的索引:需要跳过所有的customRender模板\r\n const customRenderColumns = this._columns.filter(\r\n (col) => col.customRender\r\n );\r\n const labelTemplateIndex = customRenderColumns.length + templateIndex;\r\n\r\n if (labelTemplateIndex < customTemplates.length) {\r\n const template = customTemplates[labelTemplateIndex];\r\n return template;\r\n }\r\n }\r\n\r\n console.warn(`未找到label模板 ${templateName}`);\r\n return null;\r\n }\r\n\r\n // 设置筛选表单默认属性\r\n private setSearchFormDefaultProp(columns: ProTableColumn[]) {\r\n columns.forEach((item) => {\r\n if (item.valueType) {\r\n if (item.fieldProps) {\r\n item.fieldProps = {\r\n ...PRO_TABLE_DEFAULT_PROPS[item.valueType],\r\n ...item.fieldProps,\r\n };\r\n } else {\r\n item.fieldProps = { ...PRO_TABLE_DEFAULT_PROPS[item.valueType] };\r\n }\r\n }\r\n });\r\n }\r\n\r\n // 动态设置Options\r\n private setSelectRequest(columns: ProTableColumn[]) {\r\n columns.map(async (item) => {\r\n if (item.fieldProps && hasIn(item.fieldProps, \"request\")) {\r\n try {\r\n const options = await (\r\n item.fieldProps as SelectFieldProps\r\n ).request?.();\r\n (item.fieldProps as SelectFieldProps).options = options;\r\n } catch (error) {\r\n (item.fieldProps as SelectFieldProps).options = [];\r\n }\r\n }\r\n });\r\n }\r\n\r\n private async setSearchParams(columns: ProTableColumn[]) {\r\n this._searchFiledColumns = [];\r\n columns\r\n .filter((item) => {\r\n const flag = !item.hideInSearch && item.valueType;\r\n if (flag) {\r\n this._searchFiledColumns.push(cloneDeep(item));\r\n }\r\n return flag;\r\n })\r\n .forEach((column) => {\r\n const key = column.fieldProps?.name || column.prop;\r\n let defaultValue = PRO_TABLE_DEFAULT_PROPS[column.valueType].value;\r\n\r\n // 对于checkbox类型,从options中找出checked为true的项作为默认值\r\n if (column.valueType === \"checkbox\") {\r\n const checkedValues = (column.fieldProps?.options || [])\r\n .filter((opt: OptionsType) => opt.checked)\r\n .map((opt: OptionsType) => opt.value);\r\n this._searchParams[key] =\r\n checkedValues.length > 0 ? checkedValues : defaultValue;\r\n } else {\r\n this._searchParams[key] = column.fieldProps?.value || defaultValue;\r\n }\r\n\r\n // 初始化 autoComplete 数据源\r\n if (column.valueType === \"autoComplete\") {\r\n this._autoCompleteDataSources[key] = [];\r\n }\r\n });\r\n\r\n // 根据列的 order 字段进行排序,未设置 order 的放在最后\r\n this._searchFiledColumns.sort((a: any, b: any) => {\r\n const aOrder = isNil(a?.order) ? Number.MAX_SAFE_INTEGER : a.order;\r\n const bOrder = isNil(b?.order) ? Number.MAX_SAFE_INTEGER : b.order;\r\n if (aOrder === bOrder) return 0;\r\n return aOrder - bOrder;\r\n });\r\n\r\n this.setSearchFormDefaultProp(this._searchFiledColumns);\r\n\r\n // 并发加载所有需要异步获取的选项\r\n this.setSelectRequest(this._searchFiledColumns);\r\n }\r\n\r\n private updateTableColumns(injectColumns: ProTableColumn[]) {\r\n // 1. 使用最原始的columns作为数据源,确保辅助列完全不受影响\r\n const originalColumns = cloneDeep(this.columns);\r\n\r\n // 2. 处理字段映射(如果提供了fields参数)\r\n let processedInjectColumns = injectColumns;\r\n\r\n // 3. 分离辅助列和非辅助列(使用原始数据)\r\n const nonAuxiliaryColumns = originalColumns.filter(\r\n (col) => !col.auxiliaryColumn\r\n );\r\n\r\n // 4. 按照injectColumns的顺序重新排列非辅助列\r\n const reorderedNonAuxiliaryColumns: ProTableColumn[] = [];\r\n const remainingNonAuxiliaryColumns = [...nonAuxiliaryColumns]; // 复制一份用于查找和移除\r\n\r\n processedInjectColumns.forEach((injectCol) => {\r\n // 查找非辅助列中对应的下标\r\n const existingColIndex = remainingNonAuxiliaryColumns.findIndex(\r\n (col) => col.prop === injectCol.prop\r\n );\r\n if (existingColIndex !== -1) {\r\n // 如果找到相同列,用injectColumns中的属性覆盖原始columns中的属性\r\n const existingCol = remainingNonAuxiliaryColumns[existingColIndex];\r\n\r\n const updatedCol = { ...existingCol, ...injectCol };\r\n reorderedNonAuxiliaryColumns.push(updatedCol);\r\n // 从剩余数组中移除,避免重复\r\n remainingNonAuxiliaryColumns.splice(existingColIndex, 1);\r\n } else {\r\n // 如果没找到对应的列,直接添加injectColumns中的列\r\n reorderedNonAuxiliaryColumns.push(injectCol);\r\n }\r\n });\r\n\r\n // 5. 处理剩余的原始columns中的非辅助列(在injectColumns中未出现的列)\r\n // 这些列应该被隐藏(设置hideInTable为true)\r\n remainingNonAuxiliaryColumns.forEach((remainingCol) => {\r\n const hiddenCol = { ...remainingCol, hideInTable: true };\r\n reorderedNonAuxiliaryColumns.push(hiddenCol);\r\n });\r\n\r\n // 6. 按照原始columns的顺序重新组合:保持辅助列的原始位置和属性\r\n const finalColumns: ProTableColumn[] = [];\r\n let nonAuxiliaryIndex = 0;\r\n let auxiliaryIndex = 0;\r\n\r\n originalColumns.forEach((originalCol) => {\r\n if (originalCol.auxiliaryColumn) {\r\n // 如果是辅助列,使用原始列数据,完全不进行任何修改\r\n finalColumns.push(originalCol);\r\n auxiliaryIndex++;\r\n } else {\r\n // 如果是非辅助列,使用重新排序后的列,但保留原始列的所有属性\r\n const reorderedCol = reorderedNonAuxiliaryColumns[nonAuxiliaryIndex];\r\n if (reorderedCol) {\r\n // 合并原始列和重新排序后的列,确保保留所有原始属性\r\n const mergedCol = { ...originalCol, ...reorderedCol };\r\n finalColumns.push(mergedCol);\r\n } else {\r\n // 如果重新排序后的列不存在,使用原始列\r\n finalColumns.push(originalCol);\r\n }\r\n nonAuxiliaryIndex++;\r\n }\r\n });\r\n this.formateInnerColumns(finalColumns);\r\n }\r\n\r\n // 通过 Proxy 监听 _searchParams 的属性变更\r\n private createSearchParamsProxy(target: any) {\r\n const self = this;\r\n const handler: ProxyHandler<any> = {\r\n set(obj: any, prop: string | symbol, value: any) {\r\n const key = String(prop);\r\n const oldVal = obj[key];\r\n if (oldVal === value) {\r\n obj[key] = value;\r\n return true;\r\n }\r\n obj[key] = value;\r\n try {\r\n self.onValuesChange.emit({\r\n key,\r\n value,\r\n params: self.getSearchParams(),\r\n });\r\n } catch (e) {}\r\n return true;\r\n },\r\n };\r\n return new Proxy(target, handler);\r\n }\r\n\r\n private clearEmptySearchParams() {\r\n const cloneSearchParams = cloneDeep(this._searchParams);\r\n return cloneSearchParams;\r\n }\r\n\r\n private buildServerSortPayload() {\r\n // 构建激活排序集合(按优先级从低到高,末尾优先)\r\n const activeKeys = this._sortPriority.filter((k) => !!this._sortMap[k]);\r\n if (activeKeys.length === 0) return null;\r\n const sorts = activeKeys.map((field) => {\r\n // 查找对应的列配置,优先使用sortName字段\r\n const column = this._columns.find((col) => col.prop === field);\r\n const sortField = column?.sortName || field;\r\n return {\r\n field: sortField,\r\n order: this._sortMap[field]!,\r\n };\r\n });\r\n if (this.multipleSort) {\r\n return sorts; // 以数组形式提交多列排序\r\n }\r\n const [first] = sorts;\r\n return first; // 兼容单列结构 { field, order }\r\n }\r\n\r\n private sortDataSourceInPlace() {\r\n if (!Array.isArray(this.dataSource) || this.dataSource.length === 0) return;\r\n const activeKeys = this._sortPriority.filter((k) => !!this._sortMap[k]);\r\n if (activeKeys.length === 0) return;\r\n\r\n // 复制一份优先级,从前到后优先级从低到高(最后设置的字段优先)\r\n const keysInPriority = [...activeKeys];\r\n this.dataSource.sort((a: any, b: any) => {\r\n for (let i = keysInPriority.length - 1; i >= 0; i--) {\r\n const field = keysInPriority[i];\r\n const order = this._sortMap[field]!;\r\n const av = a?.[field];\r\n const bv = b?.[field];\r\n const cmp = this.compareValues(av, bv);\r\n if (cmp !== 0) return order === \"ascend\" ? cmp : -cmp;\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n private compareValues(aVal: any, bVal: any): number {\r\n if (aVal == null && bVal == null) return 0;\r\n if (aVal == null) return -1;\r\n if (bVal == null) return 1;\r\n if (aVal instanceof Date && bVal instanceof Date) {\r\n return aVal.getTime() - bVal.getTime();\r\n }\r\n if (typeof aVal === \"boolean\" && typeof bVal === \"boolean\") {\r\n return aVal === bVal ? 0 : aVal ? 1 : -1;\r\n }\r\n if (typeof aVal === \"number\" && typeof bVal === \"number\") {\r\n return aVal - bVal;\r\n }\r\n if (typeof aVal === \"string\" && typeof bVal === \"string\") {\r\n return aVal.localeCompare(bVal);\r\n }\r\n const aNum = Number(aVal);\r\n const bNum = Number(bVal);\r\n if (!isNaN(aNum) && !isNaN(bNum)) return aNum - bNum;\r\n return String(aVal).localeCompare(String(bVal));\r\n }\r\n\r\n // 执行 autoComplete 数据源查询(实际执行逻辑)\r\n private executeAutoCompleteDataSource(event: Event, column: ProTableColumn) {\r\n const fieldKey = column.fieldProps?.name || column.prop;\r\n\r\n if (\r\n (column.fieldProps as AutoCompleteFieldProps).dataSource &&\r\n typeof (column.fieldProps as AutoCompleteFieldProps).dataSource ===\r\n \"function\"\r\n ) {\r\n try {\r\n const result = (column.fieldProps as AutoCompleteFieldProps).dataSource(\r\n event\r\n );\r\n // 如果返回的是 Promise,处理异步结果\r\n if (result instanceof Promise) {\r\n result\r\n .then((data) => {\r\n this._autoCompleteDataSources[fieldKey] = data || [];\r\n })\r\n .catch((error) => {\r\n console.error(\"AutoComplete dataSource error:\", error);\r\n this._autoCompleteDataSources[fieldKey] = [];\r\n });\r\n } else {\r\n // 同步返回结果\r\n this._autoCompleteDataSources[fieldKey] = result || [];\r\n }\r\n } catch (error) {\r\n console.error(\"AutoComplete dataSource error:\", error);\r\n this._autoCompleteDataSources[fieldKey] = [];\r\n }\r\n }\r\n }\r\n\r\n public getSearchParams(options?: {\r\n useSaved?: boolean; // 使用最近一次查询提交的参数,默认为 false;false 为当前表单值\r\n }): any {\r\n const { useSaved = false } = options || {};\r\n const rawParams = useSaved ? this._savedSearchParams : this._searchParams;\r\n const params = cloneDeep(rawParams || {});\r\n\r\n return {\r\n params,\r\n pageInfo: {\r\n pageIndex: this._pageInfo.pageIndex,\r\n pageSize: this._pageInfo.pageSize,\r\n },\r\n // 在线排序模式:把排序对象提交给接口\r\n ...(this.sortMode === \"server\"\r\n ? { sort: this.buildServerSortPayload() }\r\n : {}),\r\n };\r\n }\r\n\r\n public reload(afterDelete?: boolean) {\r\n this.handleQuery(afterDelete);\r\n }\r\n\r\n public setFieldsValue(fields: Record<string, any>) {\r\n Object.keys(fields).forEach((k) => {\r\n this._searchParams[k] = fields[k]; // 保留 Proxy,逐项赋值触发拦截\r\n });\r\n }\r\n\r\n public setFieldValue(key: string, value: any) {\r\n this._searchParams[key] = value;\r\n }\r\n\r\n public clearSelectedRow() {\r\n this._selectedTableRow = null;\r\n }\r\n\r\n public async setColumns(\r\n columns: ProTableColumn[],\r\n options?: {\r\n reload?: boolean; // 是否重新加载数据,默认为 false\r\n }\r\n ): Promise<void> {\r\n // 更新 columns 输入属性\r\n this.columns = cloneDeep(columns);\r\n\r\n // 重新格式化内部列\r\n this.formateInnerColumns(this.columns);\r\n\r\n // 重新设置搜索参数(异步操作)\r\n // 先清空旧的搜索参数,避免旧数据残留\r\n this._searchParams = {};\r\n await this.setSearchParams(this.columns);\r\n\r\n // 重新创建 Proxy,确保表单项值变化能正常触发事件\r\n this._searchParams = this.createSearchParamsProxy(this._searchParams);\r\n\r\n // 重新注册模板(如果组件已经初始化完成)\r\n if (this.allTemplates) {\r\n this.autoRegisterTemplates();\r\n }\r\n\r\n // 如果设置了 reload 选项为 true,则重新查询数据\r\n if (options?.reload === true) {\r\n this.handleQuery();\r\n }\r\n }\r\n\r\n public getSelectedRowData<T = any>(): T {\r\n return this._selectedTableRow;\r\n }\r\n\r\n public getCheckedRows<T = any>(): T[] {\r\n return this._selectedRows;\r\n }\r\n\r\n // 获取指定名称的模板\r\n getTemplate(name: string | undefined): TemplateRef<any> | null {\r\n if (!name) return null;\r\n try {\r\n // 首先从自定义模板中查找\r\n const customTemplate = this.customTemplates.get(name);\r\n if (customTemplate) {\r\n return customTemplate;\r\n }\r\n\r\n // 然后从通用模板映射中查找\r\n const template = this.templateMap.get(name);\r\n if (template) {\r\n return template;\r\n }\r\n return null;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n getToolTipTextValue(column: ProTableColumn, data: any): string {\r\n const key =\r\n column.customRender && this.getTemplate(column.customRender)\r\n ? \"\"\r\n : column.ellipsis\r\n ? column.prop\r\n : \"\";\r\n return !key ? \"\" : data[key];\r\n }\r\n\r\n getTableRowChecked(data: any) {\r\n // 启用复选框时:行高亮应与复选框选中状态一致(支持多选)\r\n if (this.showCheckbox) {\r\n return this.isRowChecked(data);\r\n }\r\n // 未启用复选框时:仍然使用单选行高亮\r\n if (!this._selectedTableRow) return false;\r\n return JSON.stringify(this._selectedTableRow) === JSON.stringify(data);\r\n }\r\n\r\n // 检查行是否被禁用\r\n isRowDisabled(data: any): boolean {\r\n if (!this.showCheckbox) return false;\r\n return this.rowDisabled ? this.rowDisabled(data) : false;\r\n }\r\n\r\n // 检查行是否被复选框选中\r\n isRowChecked(data: any): boolean {\r\n if (!this.showCheckbox) return false;\r\n return this._selectedRows.some(\r\n (row) => JSON.stringify(row) === JSON.stringify(data)\r\n );\r\n }\r\n\r\n // 切换行的选中状态\r\n toggleRowChecked(data: any, checked: boolean, event?: Event) {\r\n if (event) {\r\n event.stopPropagation(); // 阻止事件冒泡,避免触发行点击\r\n }\r\n // 如果行被禁用,不允许切换选中状态\r\n if (this.isRowDisabled(data)) {\r\n return;\r\n }\r\n const index = this._selectedRows.findIndex(\r\n (row) => JSON.stringify(row) === JSON.stringify(data)\r\n );\r\n if (checked) {\r\n // 选中\r\n if (index === -1) {\r\n this._selectedRows.push(data);\r\n }\r\n // 勾选复选框时同步设置高亮选中行\r\n this._selectedTableRow = data;\r\n } else {\r\n // 取消选中\r\n if (index > -1) {\r\n this._selectedRows.splice(index, 1);\r\n }\r\n // 若当前高亮行为该行,则取消高亮\r\n if (\r\n this._selectedTableRow &&\r\n JSON.stringify(this._selectedTableRow) === JSON.stringify(data)\r\n ) {\r\n this._selectedTableRow = null;\r\n }\r\n }\r\n this.updateCheckAllStatus();\r\n }\r\n\r\n // 更新全选状态\r\n updateCheckAllStatus() {\r\n if (!this.showCheckbox || !Array.isArray(this.dataSource)) {\r\n this._checkedAll = false;\r\n this._indeterminate = false;\r\n return;\r\n }\r\n // 只计算可用的行(未禁用的行)\r\n const availableRows = this.dataSource.filter(\r\n (row) => !this.isRowDisabled(row)\r\n );\r\n const checkedCount = this._selectedRows.length;\r\n const totalCount = availableRows.length;\r\n this._checkedAll =\r\n totalCount > 0 && checkedCount > 0 && checkedCount === totalCount;\r\n this._indeterminate = checkedCount > 0 && checkedCount < totalCount;\r\n }\r\n\r\n // 全选/取消全选\r\n toggleCheckAll(checked: boolean, event?: Event) {\r\n if (event) {\r\n event.stopPropagation();\r\n }\r\n if (checked) {\r\n // 全选:只选中未禁用的行\r\n this._selectedRows = this.dataSource.filter(\r\n (row) => !this.isRowDisabled(row)\r\n );\r\n // 同步设置高亮选中行为第一条可选数据\r\n const availableRows = this._selectedRows;\r\n this._selectedTableRow =\r\n availableRows.length > 0 ? availableRows[0] : null;\r\n } else {\r\n // 取消全选\r\n this._selectedRows = [];\r\n // 取消高亮\r\n this._selectedTableRow = null;\r\n }\r\n this.updateCheckAllStatus();\r\n }\r\n\r\n // 获取选中的行数据\r\n getSelectedRows(): any[] {\r\n return this._selectedRows;\r\n }\r\n\r\n // 清空选中的行\r\n clearSelectedRows() {\r\n this._selectedRows = [];\r\n this._checkedAll = false;\r\n this._indeterminate = false;\r\n this._selectedTableRow = null;\r\n }\r\n\r\n handleFieldCheckBoxChange(checkBoxOptions: OptionsType[], key: string) {\r\n this.setFieldsValue({\r\n [key]: checkBoxOptions\r\n .filter((item) => item.checked)\r\n .map((item) => item.value),\r\n });\r\n }\r\n\r\n handleSearch() {\r\n this._savedSearchParams = this.clearEmptySearchParams();\r\n this._pageInfo.pageIndex = 1;\r\n this.handleQuery();\r\n }\r\n\r\n handleResetForm() {\r\n Object.keys(this._searchParams).forEach((key) => {\r\n const targetColumn = this._searchFiledColumns.find((item) => {\r\n return (item.fieldProps?.name || item.prop) === key;\r\n });\r\n\r\n // 对于checkbox类型,需要特殊处理默认值\r\n if (targetColumn?.valueType === \"checkbox\") {\r\n // 从原始columns配置中获取初始配置,以确保使用正确的默认值\r\n const originalColumn = this.columns.find((item) => {\r\n return (item.fieldProps?.name || item.prop) === key;\r\n });\r\n\r\n // 从原始options中找出checked为true的项作为默认值\r\n const originalFieldProps = originalColumn?.fieldProps as\r\n | CheckboxFieldProps\r\n | undefined;\r\n const checkedValues = (originalFieldProps?.options || [])\r\n .filter((opt: OptionsType) => opt.checked)\r\n .map((opt: OptionsType) => opt.value);\r\n const defaultValue =\r\n checkedValues.length > 0\r\n ? checkedValues\r\n : PRO_TABLE_DEFAULT_PROPS[targetColumn.valueType].value;\r\n\r\n this._searchParams[key] = defaultValue;\r\n\r\n // 根据默认值恢复options的checked状态,使用原始options的结构\r\n const defaultValues = Array.isArray(defaultValue) ? defaultValue : [];\r\n const originalOptions = originalFieldProps?.options || [];\r\n const targetFieldProps = targetColumn.fieldProps as CheckboxFieldProps;\r\n targetFieldProps.options = originalOptions.map((item: OptionsType) => {\r\n return {\r\n ...item,\r\n checked: defaultValues.includes(item.value),\r\n };\r\n });\r\n } else {\r\n this._searchParams[key] = targetColumn?.fieldProps\r\n ? targetColumn?.fieldProps.value ||\r\n PRO_TABLE_DEFAULT_PROPS[targetColumn.valueType].value\r\n : PRO_TABLE_DEFAULT_PROPS[targetColumn.valueType].value;\r\n }\r\n });\r\n\r\n this._savedSearchParams = {};\r\n this._pageInfo.pageIndex = 1;\r\n this.onResetFormBeforeReload.emit();\r\n this.handleQuery();\r\n }\r\n\r\n handlePageIndexChange(pageIndex: number) {\r\n this._pageInfo.pageIndex = pageIndex;\r\n this.handleQuery();\r\n }\r\n\r\n handlePageSizeChange(pageSize: any) {\r\n this._pageInfo.pageSize = pageSize;\r\n this._pageInfo.pageIndex = 1;\r\n this.handleQuery();\r\n }\r\n\r\n async handleQuery(afterDelete?: boolean) {\r\n // 删除后刷新且当前页仅剩一条记录时,若不在第一页则先回退一页\r\n if (\r\n afterDelete &&\r\n Array.isArray(this.dataSource) &&\r\n this.dataSource.length === 1 &&\r\n this._pageInfo.pageIndex > 1\r\n ) {\r\n this._pageInfo.pageIndex = this._pageInfo.pageIndex - 1;\r\n }\r\n this._loading = true;\r\n if (this.request) {\r\n try {\r\n const result = await this.request({\r\n params: this.clearEmptySearchParams(),\r\n pageInfo: {\r\n pageIndex: this._pageInfo.pageIndex,\r\n pageSize: this._pageInfo.pageSize,\r\n },\r\n // 在线排序模式:把排序对象提交给接口\r\n ...(this.sortMode === \"server\"\r\n ? { sort: this.buildServerSortPayload() }\r\n : {}),\r\n });\r\n this.dataSource = result.data || [];\r\n this.summaryData = result.summaryData || null;\r\n // 本地排序模式:拿到数据后在前端排序\r\n if (this.sortMode === \"local\") {\r\n this.sortDataSourceInPlace();\r\n }\r\n this._pageInfo.total = result.total || 0;\r\n // 更新全选状态\r\n if (this.showCheckbox) {\r\n this.updateCheckAllStatus();\r\n }\r\n } catch (error) {\r\n console.error(\"查询失败:\", error);\r\n this.dataSource = [];\r\n this._pageInfo.total = 0;\r\n this.summaryData = null;\r\n } finally {\r\n this._loading = false;\r\n this._selectedTableRow = null;\r\n // 清空选中行(可选,根据业务需求决定是否保留跨页选中)\r\n // this.clearSelectedRows();\r\n }\r\n } else {\r\n console.warn(\"未提供 _request 回调函数\");\r\n this._loading = false;\r\n }\r\n this.clearSelectedRows();\r\n }\r\n\r\n // 触发列排序变更\r\n onSortChange(sortKey: string, sortOrder: \"ascend\" | \"descend\" | null) {\r\n // 单列排序:重置其它列;多列排序:保留其它列\r\n if (!this.multipleSort) {\r\n Object.keys(this._sortMap).forEach((key) => {\r\n if (key !== sortKey) this._sortMap[key] = null;\r\n });\r\n }\r\n this._sortMap[sortKey] = sortOrder;\r\n\r\n // 维护优先级队列:有序列且非空 -> 置于末尾;为空 -> 移除\r\n this._sortPriority = this._sortPriority.filter((k) => k !== sortKey);\r\n if (sortOrder) {\r\n this._sortPriority.push(sortKey);\r\n }\r\n\r\n if (this.sortMode === \"local\") {\r\n this.sortDataSourceInPlace();\r\n } else {\r\n // 在线排序:重新请求\r\n this.handleQuery();\r\n }\r\n }\r\n\r\n getSortOrder(sortKey: string): \"ascend\" | \"descend\" | null {\r\n return this._sortMap[sortKey] || null;\r\n }\r\n\r\n handleTableRowClick(data: any) {\r\n this._selectedTableRow = data;\r\n // 如果开启了复选框,点击行时只选中点击行(如果行未被禁用)\r\n if (this.showCheckbox && !this.isRowDisabled(data)) {\r\n // 先清空所有选中行\r\n this._selectedRows = [];\r\n // 只选中当前点击的行\r\n this.toggleRowChecked(data, true);\r\n }\r\n this.onRowClick.emit(this._selectedTableRow);\r\n }\r\n\r\n handleTableRowDbClick(data: any) {\r\n this._selectedTableRow = data;\r\n this.onRowDbClick.emit(this._selectedTableRow);\r\n }\r\n\r\n handleColumnsSettingConfirm() {\r\n this.queryDynamicColumns();\r\n }\r\n\r\n // 处理 autoComplete 输入事件(带防抖)\r\n handleAutoCompleteInput(event: Event, column: ProTableColumn) {\r\n const fieldKey = column.fieldProps?.name || column.prop;\r\n\r\n // 如果该字段还没有防抖函数,创建一个\r\n if (!this._autoCompleteDebounceMap.has(fieldKey)) {\r\n const debouncedFn = debounce((evt: Event) => {\r\n // 重新查找对应的 column,确保使用最新的配置\r\n const currentColumn = this._searchFiledColumns.find(\r\n (col) => (col.fieldProps?.name || col.prop) === fieldKey\r\n );\r\n if (currentColumn) {\r\n this.executeAutoCompleteDataSource(evt, currentColumn);\r\n }\r\n }, 300); // 300ms 防抖延迟\r\n this._autoCompleteDebounceMap.set(fieldKey, debouncedFn);\r\n }\r\n\r\n // 调用防抖函数\r\n const debouncedFn = this._autoCompleteDebounceMap.get(fieldKey);\r\n if (debouncedFn) {\r\n debouncedFn(event);\r\n }\r\n }\r\n\r\n // 获取 autoComplete 的数据源\r\n getAutoCompleteDataSource(column: ProTableColumn): any[] {\r\n const fieldKey = column.fieldProps?.name || column.prop;\r\n return this._autoCompleteDataSources[fieldKey] || [];\r\n }\r\n\r\n getFieldProps(column: ProTableColumn): any {\r\n return column.fieldProps;\r\n }\r\n\r\n // 获取指定名称的label模板\r\n getLabelTemplate(name: string | undefined): TemplateRef<any> | null {\r\n if (!name) return null;\r\n try {\r\n // 首先从自定义模板中查找\r\n const customTemplate = this.customTemplates.get(name);\r\n if (customTemplate) {\r\n return customTemplate;\r\n }\r\n\r\n // 然后从通用模板映射中查找\r\n const template = this.templateMap.get(name);\r\n if (template) {\r\n return template;\r\n }\r\n return null;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n // 获取 form-item 的动态类名\r\n getFormItemClassName(column: ProTableColumn): string {\r\n const fieldName = this.getFieldProps(column).name || column.prop;\r\n return `pro-table-${fieldName}-form-item`;\r\n }\r\n}\r\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"app-page-container\",\r\n templateUrl: \"./page-container.component.html\",\r\n styleUrls: [\"./page-container.component.less\"],\r\n})\r\nexport class PageContainerComponent implements OnInit {\r\n @Input() title: string = \"\";\r\n @ContentChild(\"header\") headerTpl!: TemplateRef<any>;\r\n @ContentChild(\"body\") bodyTpl!: TemplateRef<any>;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { NzCardModule } from \"ng-zorro-antd/card\";\r\nimport { PageContainerComponent } from \"./page-container.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n RouterModule,\r\n NzCardModule,\r\n ReactiveFormsModule,\r\n ],\r\n declarations: [PageContainerComponent],\r\n providers: [],\r\n exports: [PageContainerComponent],\r\n})\r\nexport class PageContainerModule {}\r\n","import { Component, OnInit, OnDestroy, forwardRef, ChangeDetectorRef, ElementRef, Inject, Optional } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { PLATE_PREFIX_LOAD_SERVICE, PlatePrefixLoadService, PlatePrefixOption } from \"../tokens\";\r\n\r\n@Component({\r\n selector: \"app-plate-input\",\r\n templateUrl: \"./plate-input.component.html\",\r\n styleUrls: [\"./plate-input.component.less\"],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => PlateInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class PlateInputComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n nzPopoverVisible: boolean = false;\r\n platePrefix: string = \"\";\r\n plateSuffix: string = \"\";\r\n platePrefixOptions: Array<PlatePrefixOption> = [];\r\n disabled: boolean = false;\r\n private onChange = (value: string) => {};\r\n private onTouched = () => {};\r\n\r\n private clickOutsideHandler?: (event: MouseEvent) => void;\r\n\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private elementRef: ElementRef,\r\n @Optional() @Inject(PLATE_PREFIX_LOAD_SERVICE) private platePrefixLoadService?: PlatePrefixLoadService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (this.platePrefixLoadService) {\r\n // 使用注入的全局服务加载车牌前缀选项\r\n this.platePrefixLoadService\r\n .loadPrefixOptions()\r\n .then((data: Array<PlatePrefixOption>) => {\r\n this.platePrefixOptions = data;\r\n })\r\n .catch(() => {\r\n this.platePrefixOptions = [];\r\n });\r\n } else {\r\n // 如果没有注入服务,则保持空数组\r\n this.platePrefixOptions = [];\r\n }\r\n }\r\n\r\n handlePlatePrefix(value: string): void {\r\n this.platePrefix = value;\r\n this.emitValue();\r\n this.nzPopoverVisible = false;\r\n this.removeClickOutsideListener();\r\n }\r\n\r\n writeValue(value: string): void {\r\n if (value) {\r\n this.platePrefix = value.split(\"\")[0];\r\n this.plateSuffix = value\r\n .split(\"\")\r\n .filter((item, index) => index > 0)\r\n .join(\"\");\r\n } else {\r\n this.platePrefix = \"\";\r\n this.plateSuffix = \"\";\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n const previousDisabled = this.disabled;\r\n this.disabled = isDisabled;\r\n \r\n // 如果禁用状态改变,关闭 popover 并移除监听器\r\n if (previousDisabled !== isDisabled) {\r\n this.nzPopoverVisible = false;\r\n this.removeClickOutsideListener();\r\n // 强制变更检测\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n handlePrefixClick(event: Event): void {\r\n if (this.disabled) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.nzPopoverVisible = false;\r\n return;\r\n }\r\n // 手动切换 popover 的显示/隐藏状态\r\n this.nzPopoverVisible = !this.nzPopoverVisible;\r\n \r\n // 如果打开了 popover,添加文档点击监听器\r\n if (this.nzPopoverVisible) {\r\n setTimeout(() => {\r\n this.attachClickOutsideListener();\r\n }, 0);\r\n } else {\r\n this.removeClickOutsideListener();\r\n }\r\n \r\n event.stopPropagation(); // 阻止事件冒泡\r\n }\r\n\r\n private attachClickOutsideListener(): void {\r\n if (this.clickOutsideHandler) {\r\n return;\r\n }\r\n \r\n this.clickOutsideHandler = (event: MouseEvent) => {\r\n const nativeElement = this.elementRef.nativeElement;\r\n const target = event.target as HTMLElement;\r\n \r\n // 检查是否点击在 popover 内容区域内\r\n const popoverContent = document.querySelector('.plate-input-popover');\r\n const clickedInPopover = popoverContent && popoverContent.contains(target);\r\n \r\n // 检查是否点击在组件内部(前缀按钮)\r\n const clickedInComponent = nativeElement.contains(target);\r\n \r\n // 如果点击既不在组件内部,也不在 popover 内容区域,则关闭 popover\r\n if (!clickedInComponent && !clickedInPopover) {\r\n this.nzPopoverVisible = false;\r\n this.removeClickOutsideListener();\r\n this.cdr.detectChanges();\r\n }\r\n };\r\n \r\n // 使用捕获阶段,确保在其他事件处理之前执行\r\n document.addEventListener('click', this.clickOutsideHandler, true);\r\n }\r\n\r\n private removeClickOutsideListener(): void {\r\n if (this.clickOutsideHandler) {\r\n document.removeEventListener('click', this.clickOutsideHandler, true);\r\n this.clickOutsideHandler = undefined;\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeClickOutsideListener();\r\n }\r\n\r\n private emitValue(): void {\r\n const fullPlate = this.platePrefix + this.plateSuffix;\r\n this.onChange(fullPlate);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n\r\n handleAntdPlateSuffixBlur(event: any): void {\r\n if (this.disabled) return;\r\n const value = event.target.value.toUpperCase();\r\n this.plateSuffix = value;\r\n this.emitValue();\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NzGridModule } from \"ng-zorro-antd/grid\";\r\nimport { NzIconModule } from \"ng-zorro-antd/icon\";\r\nimport { NzInputModule } from \"ng-zorro-antd/input\";\r\nimport { NzPopoverModule } from \"ng-zorro-antd/popover\";\r\nimport { PlateInputComponent } from \"./plate-input.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NzGridModule,\r\n NzInputModule,\r\n NzPopoverModule,\r\n NzIconModule,\r\n ],\r\n declarations: [PlateInputComponent],\r\n providers: [],\r\n exports: [PlateInputComponent],\r\n})\r\nexport class PlateInputModule {}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnInit,\r\n TemplateRef\r\n} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"app-table-search-bar\",\r\n templateUrl: \"./table-search-bar.component.html\",\r\n styleUrls: [\"./table-search-bar.component.less\"],\r\n})\r\nexport class TableSearchBarComponent implements OnInit, AfterViewInit {\r\n @Input() leftColSpan: number = 21;\r\n @Input() rightColSpan: number = 3;\r\n @Input() labelWidth: string = \"90px\";\r\n @Input() labelAlign: string = \"right\";\r\n @ContentChild(\"leftContent\") leftContentTpl!: TemplateRef<any>;\r\n @ContentChild(\"actionTextBtn\") actionTextBtnTpl!: TemplateRef<any>;\r\n @ContentChild(\"actionImgBtn\") actionImgBtnTpl!: TemplateRef<any>;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.setCSSVariablesToTarget();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setCSSVariablesToTarget();\r\n }\r\n\r\n private setCSSVariablesToTarget(): void {\r\n // setTimeout(() => {\r\n // const leftElement = document.querySelectorAll(\".table-search-bar-left\");\r\n // console.log('leftElement',leftElement);\r\n // if (leftElement.length > 0) {\r\n // leftElement.forEach((element) => {\r\n // (element as HTMLElement).style.setProperty(\r\n // \"--label-width\",\r\n // this.labelWidth\r\n // );\r\n // (element as HTMLElement).style.setProperty(\r\n // \"--label-align\",\r\n // this.labelAlign\r\n // );\r\n // });\r\n // }\r\n // });\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { NzGridModule } from \"ng-zorro-antd/grid\";\r\nimport { TableSearchBarComponent } from \"./table-search-bar.component\";\r\nimport { NzSpaceModule } from \"ng-zorro-antd/space\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n RouterModule,\r\n NzGridModule,\r\n ReactiveFormsModule,\r\n NzSpaceModule,\r\n ],\r\n declarations: [TableSearchBarComponent],\r\n providers: [],\r\n exports: [TableSearchBarComponent],\r\n})\r\nexport class TableSearchBarModule {}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport Sortable from \"sortablejs\";\r\nimport { ProTableColumn } from \"../../type\";\r\nimport { PRO_TABLE_COLUMN_REMOTE, ProTableRemoteColumnService } from \"../../tokens\";\r\nimport { Inject, Optional } from \"@angular/core\";\r\nimport { isObservable } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"app-colmuns-setting\",\r\n templateUrl: \"./colmuns-setting.component.html\",\r\n styleUrls: [\"./colmuns-setting.component.less\"],\r\n})\r\nexport class ColmunsSettingComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n @Input() columns: ProTableColumn[] = [];\r\n\r\n @Input() selectedColumns: ProTableColumn[] = [];\r\n\r\n @Input() tableName: string;\r\n\r\n @Output() afterConfirm = new EventEmitter<ProTableColumn[]>();\r\n\r\n @ViewChild(\"sortableContainer\", { static: false })\r\n sortableContainer!: ElementRef;\r\n\r\n modalVisible: boolean = false;\r\n\r\n options: Array<{ label: string; value: string; checked: boolean }> = [];\r\n\r\n private sortableInstance: Sortable | null = null;\r\n\r\n constructor(\r\n @Optional()\r\n @Inject(PRO_TABLE_COLUMN_REMOTE)\r\n private columnRemote: ProTableRemoteColumnService | null\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngAfterViewInit(): void {\r\n this.initSortable();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.sortableInstance) {\r\n this.sortableInstance.destroy();\r\n }\r\n }\r\n\r\n initSortable(): void {\r\n // 先销毁已存在的实例\r\n if (this.sortableInstance) {\r\n this.sortableInstance.destroy();\r\n this.sortableInstance = null;\r\n }\r\n\r\n if (this.sortableContainer && this.sortableContainer.nativeElement) {\r\n this.sortableInstance = new Sortable(\r\n this.sortableContainer.nativeElement,\r\n {\r\n animation: 150,\r\n ghostClass: \"sortable-ghost\",\r\n chosenClass: \"sortable-chosen\",\r\n dragClass: \"sortable-drag\",\r\n handle: \".sort-list-item\", // 指定拖拽句柄\r\n onEnd: (evt) => {\r\n this.onSortEnd(evt);\r\n },\r\n }\r\n );\r\n }\r\n }\r\n\r\n onSortEnd(evt: any): void {\r\n const { oldIndex, newIndex } = evt;\r\n if (oldIndex !== newIndex) {\r\n // 创建新的数组来避免直接修改输入属性\r\n const newSelectedColumns = [...this.selectedColumns];\r\n const movedItem = newSelectedColumns.splice(oldIndex, 1)[0];\r\n newSelectedColumns.splice(newIndex, 0, movedItem);\r\n\r\n // 更新 selectedColumns\r\n this.selectedColumns = newSelectedColumns;\r\n }\r\n }\r\n\r\n trackByColumn(index: number, item: ProTableColumn): string {\r\n return item.prop || index.toString();\r\n }\r\n\r\n /**\r\n * 同步 options 数组的 checked 状态与 selectedColumns\r\n */\r\n private syncOptionsWithSelectedColumns(): void {\r\n const selectedProps = this.selectedColumns.map((col) => col.prop);\r\n this.options.forEach((option) => {\r\n option.checked = selectedProps.includes(option.value);\r\n });\r\n }\r\n\r\n handleModalVisible() {\r\n this.options = this.columns\r\n .filter((item) => !item.auxiliaryColumn)\r\n .map((item) => {\r\n return {\r\n label: item.title,\r\n value: item.prop,\r\n checked: item.hideInTable ? false : true,\r\n sortName: item.sortName || null,\r\n };\r\n });\r\n\r\n // 同步 options 的 checked 状态与当前 selectedColumns\r\n this.syncOptionsWithSelectedColumns();\r\n\r\n this.modalVisible = true;\r\n\r\n // 模态框打开后重新初始化排序\r\n setTimeout(() => {\r\n this.initSortable();\r\n }, 100);\r\n }\r\n\r\n handleModalClose() {\r\n this.modalVisible = false;\r\n if (this.sortableInstance) {\r\n this.sortableInstance.destroy();\r\n this.sortableInstance = null;\r\n }\r\n }\r\n\r\n handleSelectRemove(key: string) {\r\n this.selectedColumns = this.selectedColumns.filter(\r\n (item) => item.prop !== key\r\n );\r\n\r\n // 使用同步方法确保所有状态一致\r\n this.syncOptionsWithSelectedColumns();\r\n }\r\n\r\n handleCheckBoxChange(value, record) {\r\n if (!value) {\r\n this.handleSelectRemove(record.value);\r\n } else {\r\n this.selectedColumns.push({\r\n title: record.label,\r\n prop: record.value,\r\n sortName: record.sortName,\r\n hideInTable: false,\r\n });\r\n // 添加项目后同步状态\r\n this.syncOptionsWithSelectedColumns();\r\n }\r\n }\r\n handleConfirm() {\r\n if (!this.columnRemote?.setCol || !this.tableName) {\r\n this.modalVisible = false;\r\n this.afterConfirm.emit();\r\n return;\r\n }\r\n const payload = this.selectedColumns.map((column) => {\r\n return {\r\n field: column.prop,\r\n isShow: column.hideInTable ? false : true,\r\n header: column.title,\r\n sortName: column.sortName || null,\r\n };\r\n });\r\n const result = this.columnRemote.setCol(this.tableName, payload);\r\n const done = (res) => {\r\n this.modalVisible = false;\r\n this.afterConfirm.emit();\r\n };\r\n if (result && isObservable(result)) {\r\n result.subscribe(done, () => done(null));\r\n } else {\r\n Promise.resolve(result).finally(() => done(null));\r\n }\r\n }\r\n}\r\n","import { Component, ComponentFactoryResolver, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, Type, ViewChild, ViewContainerRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-dynamic-search-field',\r\n template: `<ng-template #vc></ng-template>`\r\n})\r\nexport class DynamicSearchFieldComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() component: Type<any> | null = null;\r\n @Input() value: any;\r\n @Input() props: { [key: string]: any } | null = null;\r\n @Output() valueChange = new EventEmitter<any>();\r\n\r\n @ViewChild('vc', { read: ViewContainerRef, static: true }) vc!: ViewContainerRef;\r\n\r\n private cmpRef: any = null;\r\n private isCva = false;\r\n private cvaOnChange: ((val: any) => void) | null = null;\r\n\r\n constructor(private cfr: ComponentFactoryResolver) {}\r\n\r\n ngOnInit(): void {\r\n this.render();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.component && !changes.component.firstChange) {\r\n this.destroy();\r\n this.render();\r\n return;\r\n }\r\n if (this.cmpRef) {\r\n if (changes.value && !changes.value.firstChange) {\r\n if (this.isCva) {\r\n if (typeof this.cmpRef.instance.writeValue === 'function') {\r\n this.cmpRef.instance.writeValue(this.value);\r\n }\r\n } else if ('value' in this.cmpRef.instance) {\r\n this.cmpRef.instance.value = this.value;\r\n }\r\n }\r\n if (changes.props && !changes.props.firstChange) {\r\n this.applyProps();\r\n }\r\n }\r\n }\r\n\r\n private render() {\r\n if (!this.component) return;\r\n const factory = this.cfr.resolveComponentFactory(this.component);\r\n this.vc.clear();\r\n this.cmpRef = this.vc.createComponent(factory);\r\n\r\n this.isCva = typeof this.cmpRef.instance.registerOnChange === 'function' && typeof this.cmpRef.instance.writeValue === 'function';\r\n\r\n if (this.isCva) {\r\n this.cmpRef.instance.writeValue(this.value);\r\n this.cmpRef.instance.registerOnChange((v: any) => {\r\n this.valueChange.emit(v);\r\n });\r\n } else {\r\n if ('value' in this.cmpRef.instance) {\r\n this.cmpRef.instance.value = this.value;\r\n }\r\n if ('valueChange' in this.cmpRef.instance && this.cmpRef.instance.valueChange && typeof this.cmpRef.instance.valueChange.subscribe === 'function') {\r\n this.cmpRef.instance.valueChange.subscribe((v: any) => {\r\n this.valueChange.emit(v);\r\n });\r\n }\r\n }\r\n\r\n this.applyProps();\r\n }\r\n\r\n private applyProps() {\r\n const p = this.props || {};\r\n const extra = p.componentProps || {};\r\n Object.keys(extra).forEach((k) => {\r\n try {\r\n this.cmpRef.instance[k] = extra[k];\r\n } catch {}\r\n });\r\n }\r\n\r\n private destroy() {\r\n if (this.cmpRef) {\r\n try { this.cmpRef.destroy(); } catch {}\r\n this.cmpRef = null;\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\r\n }\r\n}\r\n","import { DragDropModule } from \"@angular/cdk/drag-drop\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { NzButtonModule } from \"ng-zorro-antd/button\";\r\nimport { NzCheckboxModule } from \"ng-zorro-antd/checkbox\";\r\nimport { NzDatePickerModule } from \"ng-zorro-antd/date-picker\";\r\nimport { NzFormModule } from \"ng-zorro-antd/form\";\r\nimport { NzGridModule } from \"ng-zorro-antd/grid\";\r\nimport { NzIconModule } from \"ng-zorro-antd/icon\";\r\nimport { NzInputModule } from \"ng-zorro-antd/input\";\r\nimport { NzModalModule } from \"ng-zorro-antd/modal\";\r\nimport { NzPopoverModule } from \"ng-zorro-antd/popover\";\r\nimport { NzSelectModule } from \"ng-zorro-antd/select\";\r\nimport { NzSpaceModule } from \"ng-zorro-antd/space\";\r\nimport { NzTableModule } from \"ng-zorro-antd/table\";\r\nimport { NzTypographyModule } from \"ng-zorro-antd/typography\";\r\nimport { PageContainerModule } from \"./page-container/page-container.module\";\r\nimport { PlateInputModule } from \"./plate-input/plate-input.module\";\r\nimport { TableSearchBarModule } from \"./table-search-bar/table-search-bar-module\";\r\nimport { ColmunsSettingComponent } from \"./components/colmuns-setting/colmuns-setting.component\";\r\nimport { ProTableComponent } from \"./pro-table.component\";\r\nimport { DynamicSearchFieldComponent } from \"./components/dynamic-search-field/dynamic-search-field.component\";\r\nimport { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';\r\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\r\nimport { NzToolTipModule } from \"ng-zorro-antd/tooltip\";\r\nimport { PRO_TABLE_COLUMN_REMOTE } from \"./tokens\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n RouterModule,\r\n NzFormModule,\r\n NzSelectModule,\r\n NzSpaceModule,\r\n NzGridModule,\r\n NzInputModule,\r\n ReactiveFormsModule,\r\n NzPopoverModule,\r\n NzIconModule,\r\n NzButtonModule,\r\n PageContainerModule,\r\n TableSearchBarModule,\r\n NzTableModule,\r\n PlateInputModule,\r\n NzDatePickerModule,\r\n NzModalModule,\r\n NzCheckboxModule,\r\n NzTypographyModule,\r\n DragDropModule,\r\n NzCheckboxModule,\r\n NzAutocompleteModule,\r\n NzInputNumberModule,\r\n NzToolTipModule,\r\n ],\r\n declarations: [ProTableComponent, ColmunsSettingComponent, DynamicSearchFieldComponent],\r\n providers: [\r\n {\r\n // 默认不提供远程列服务,宿主可覆盖注入\r\n provide: PRO_TABLE_COLUMN_REMOTE,\r\n useValue: null,\r\n },\r\n ],\r\n exports: [ProTableComponent],\r\n})\r\nexport class ProTableModule {}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { PlatePrefixLoadService, PlatePrefixOption } from \"../tokens\";\r\n\r\n/**\r\n * 默认的车牌前缀加载服务实现\r\n * 使用 HttpClient 调用 API 获取车牌前缀选项\r\n */\r\n@Injectable()\r\nexport class DefaultPlatePrefixLoadService implements PlatePrefixLoadService {\r\n private readonly defaultApiUrl = \"/PlateFirstWord/GetPlateFirstWord\";\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n loadPrefixOptions(): Promise<PlatePrefixOption[]> {\r\n return this.http\r\n .post<string[]>(this.defaultApiUrl, { dictCode: \"PlateFirstWord\" })\r\n .toPromise()\r\n .then((list: string[]) => {\r\n const options: PlatePrefixOption[] = [];\r\n // 添加空选项(与旧版保持一致)\r\n options.push({ label: \"\", value: \"\" });\r\n // 转换数据格式\r\n for (let i = 0; i < list.length; i++) {\r\n options.push({\r\n label: list[i],\r\n value: list[i],\r\n });\r\n }\r\n return options;\r\n })\r\n .catch(() => {\r\n // 发生错误时返回空数组\r\n return [];\r\n });\r\n }\r\n}\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport {\r\n AbstractControl,\r\n AbstractControlOptions,\r\n FormArray,\r\n FormBuilder,\r\n FormGroup,\r\n ValidatorFn,\r\n} from \"@angular/forms\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { debounceTime, distinctUntilChanged } from \"rxjs/operators\";\r\n\r\n// ==================== 类型定义 ====================\r\n\r\n// 字段错误消息类型(字符串或函数)\r\nexport type FieldErrorMessage =\r\n | string\r\n | ((context: { control: AbstractControl; controlName: string }) => string);\r\n\r\n// 字段错误消息集合\r\nexport type FieldErrorMessages = Record<string, FieldErrorMessage>;\r\n\r\n// 字段配置\r\nexport type FieldConfig = {\r\n value: any;\r\n disabled?: boolean;\r\n validators?: () => ValidatorFn[];\r\n errorMessages?: FieldErrorMessages;\r\n};\r\n\r\n// FormArray 配置类型\r\nexport type FormArrayConfig = {\r\n type: \"array\";\r\n itemConfig: FormConfig; // 每行的表单配置\r\n initialItems?: any[]; // 初始数据项\r\n errorMessages?: Record<string, FieldErrorMessages>; // 行字段的错误消息配置\r\n uniqueIdField?: string; // 业务唯一标识字段(如 'dictId', 'id' 等)\r\n};\r\n\r\n// 表单修改类型\r\nexport type FormModifyType = \"create\" | \"update\";\r\n\r\n// 表单配置(支持普通字段和 FormArray)\r\nexport type FormConfig = Record<string, FieldConfig | FormArrayConfig>;\r\n\r\n// 监听选项\r\nexport type WatchOptions = {\r\n debounce?: number;\r\n distinctUntilChanged?: boolean;\r\n emitInitial?: boolean;\r\n};\r\n\r\n// 批量添加字段配置选项\r\nexport type AddFieldsConfigOptions = {\r\n emitEvent?: boolean;\r\n updateValueAndValidity?: boolean;\r\n onFieldAdded?: (fieldName: string, success: boolean, error?: string) => void; // 每个字段添加的回调\r\n};\r\n\r\n// 批量添加字段配置结果\r\nexport type AddFieldsConfigResult = {\r\n success: boolean;\r\n added: string[]; // 成功添加的字段名列表\r\n failed: Array<{ fieldName: string; error: string }>; // 失败的字段及错误信息\r\n};\r\n\r\n// 批量删除字段配置选项\r\nexport type RemoveFieldsConfigOptions = {\r\n emitEvent?: boolean;\r\n onFieldRemoved?: (fieldName: string, success: boolean, error?: string) => void; // 每个字段删除的回调\r\n};\r\n\r\n// 批量删除字段配置结果\r\nexport type RemoveFieldsConfigResult = {\r\n success: boolean;\r\n removed: string[]; // 成功删除的字段名列表\r\n failed: Array<{ fieldName: string; error: string }>; // 失败的字段及错误信息\r\n};\r\n\r\n// ==================== 服务类 ====================\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AntdFormService {\r\n // ==================== 公共属性 ====================\r\n formStore: Record<string, FormGroup> = {};\r\n formModifyType: FormModifyType = \"create\";\r\n\r\n // ==================== 私有属性 ====================\r\n private labelWidth: string = \"120px\";\r\n private labelAlign: string = \"right\";\r\n private labelObservers: Record<string, MutationObserver> = {};\r\n private errorMessageStore: Record<\r\n string,\r\n Record<string, FieldErrorMessages>\r\n > = {};\r\n private formArrayConfigStore: Record<\r\n string,\r\n Record<string, { itemConfig: FormConfig; uniqueIdField?: string }>\r\n > = {};\r\n private readonly INTERNAL_ID_FIELD = \"__formItemId\";\r\n private classPrefix = \"ant-form-\";\r\n private readonly defaultErrorMessages: FieldErrorMessages = {\r\n required: \"该字段为必填项\",\r\n minlength: \"输入长度不足\",\r\n maxlength: \"输入长度超限\",\r\n email: \"请输入合法的邮箱地址\",\r\n pattern: \"输入格式不正确\",\r\n };\r\n\r\n // ==================== 构造函数 ====================\r\n constructor(private fb: FormBuilder) {}\r\n\r\n // ==================== 表单创建和初始化 ====================\r\n\r\n // 初始化表单(支持 FormArray)\r\n createFormGroup(\r\n name: string,\r\n config: FormConfig,\r\n options?: { labelWidth?: string; labelAlign?: string }\r\n ): FormGroup {\r\n const groupConfig: Record<string, any> = {};\r\n this.errorMessageStore[name] = {};\r\n\r\n Object.entries(config).forEach(([key, field]) => {\r\n if (this.isFormArrayConfig(field)) {\r\n // FormArray 配置处理\r\n if (!this.formArrayConfigStore[name]) {\r\n this.formArrayConfigStore[name] = {};\r\n }\r\n this.formArrayConfigStore[name][key] = {\r\n itemConfig: field.itemConfig,\r\n uniqueIdField: field.uniqueIdField,\r\n };\r\n\r\n const formArray = this.createFormArrayFromConfig(\r\n name,\r\n key,\r\n field.itemConfig,\r\n field.initialItems || [],\r\n field.uniqueIdField\r\n );\r\n groupConfig[key] = formArray;\r\n\r\n // 存储 FormArray 字段的错误消息配置,格式:arrayName[].fieldName\r\n if (field.errorMessages) {\r\n Object.entries(field.errorMessages).forEach(\r\n ([fieldName, errorMessages]) => {\r\n const errorMessageKey = `${key}[].${fieldName}`;\r\n this.errorMessageStore[name][errorMessageKey] = errorMessages;\r\n }\r\n );\r\n }\r\n } else {\r\n // 普通字段配置\r\n const fieldConfig = field as FieldConfig;\r\n groupConfig[key] = [\r\n { value: fieldConfig.value, disabled: fieldConfig.disabled ?? false },\r\n fieldConfig.validators?.() ?? [],\r\n ];\r\n if (fieldConfig.errorMessages) {\r\n this.errorMessageStore[name][key] = fieldConfig.errorMessages;\r\n }\r\n }\r\n });\r\n\r\n if (options?.labelWidth) {\r\n this.labelWidth = options.labelWidth;\r\n }\r\n if (options?.labelAlign) {\r\n this.labelAlign = options.labelAlign;\r\n }\r\n this.formStore[name] = this.fb.group(groupConfig);\r\n this.setCSSVariablesToTarget(name);\r\n return this.formStore[name];\r\n }\r\n\r\n // ==================== 表单操作 ====================\r\n\r\n // 重置表单\r\n resetFormGroup(name: string, value?: any): void {\r\n this.formStore[name]?.reset(value);\r\n }\r\n\r\n // 批量添加字段配置\r\n addFieldsConfig(\r\n formName: string,\r\n fieldsConfig: FormConfig,\r\n options?: AddFieldsConfigOptions\r\n ): AddFieldsConfigResult {\r\n const result: AddFieldsConfigResult = {\r\n success: true,\r\n added: [],\r\n failed: [],\r\n };\r\n\r\n // 1. 验证表单是否存在\r\n const formGroup = this.formStore[formName];\r\n if (!formGroup) {\r\n // 如果表单不存在,所有字段都失败\r\n Object.keys(fieldsConfig).forEach((fieldName) => {\r\n const error = `Form \"${formName}\" not found`;\r\n result.failed.push({\r\n fieldName,\r\n error,\r\n });\r\n options?.onFieldAdded?.(fieldName, false, error);\r\n });\r\n result.success = false;\r\n return result;\r\n }\r\n\r\n // 2. 初始化 errorMessageStore 和 formArrayConfigStore(如果不存在)\r\n if (!this.errorMessageStore[formName]) {\r\n this.errorMessageStore[formName] = {};\r\n }\r\n if (!this.formArrayConfigStore[formName]) {\r\n this.formArrayConfigStore[formName] = {};\r\n }\r\n\r\n // 3. 批量构建控件配置\r\n const controlsToAdd: Record<string, AbstractControl> = {};\r\n const errorMessagesToAdd: Record<string, FieldErrorMessages> = {};\r\n const formArrayConfigsToAdd: Record<\r\n string,\r\n { itemConfig: FormConfig; uniqueIdField?: string }\r\n > = {};\r\n\r\n // 4. 遍历所有字段配置,进行验证和构建\r\n Object.entries(fieldsConfig).forEach(([fieldName, fieldConfig]) => {\r\n try {\r\n // 4.1 检查字段是否已存在\r\n if (formGroup.get(fieldName)) {\r\n const error = `Field \"${fieldName}\" already exists`;\r\n result.failed.push({\r\n fieldName,\r\n error,\r\n });\r\n options?.onFieldAdded?.(fieldName, false, error);\r\n return;\r\n }\r\n\r\n // 4.2 根据字段类型创建控件\r\n if (this.isFormArrayConfig(fieldConfig)) {\r\n // FormArray 处理\r\n const formArray = this.createFormArrayFromConfig(\r\n formName,\r\n fieldName,\r\n fieldConfig.itemConfig,\r\n fieldConfig.initialItems || [],\r\n fieldConfig.uniqueIdField\r\n );\r\n controlsToAdd[fieldName] = formArray;\r\n\r\n // 存储 FormArray 配置\r\n formArrayConfigsToAdd[fieldName] = {\r\n itemConfig: fieldConfig.itemConfig,\r\n uniqueIdField: fieldConfig.uniqueIdField,\r\n };\r\n\r\n // 存储错误消息\r\n if (fieldConfig.errorMessages) {\r\n Object.entries(fieldConfig.errorMessages).forEach(\r\n ([itemFieldName, errorMessages]) => {\r\n const errorMessageKey = `${fieldName}[].${itemFieldName}`;\r\n errorMessagesToAdd[errorMessageKey] = errorMessages;\r\n }\r\n );\r\n }\r\n } else {\r\n // 普通字段处理\r\n const fieldConfigTyped = fieldConfig as FieldConfig;\r\n const controlOptions: AbstractControlOptions = {\r\n validators: fieldConfigTyped.validators?.() ?? [],\r\n };\r\n const control = this.fb.control(\r\n fieldConfigTyped.value,\r\n controlOptions\r\n );\r\n // 设置 disabled 状态\r\n if (fieldConfigTyped.disabled) {\r\n control.disable();\r\n }\r\n controlsToAdd[fieldName] = control;\r\n\r\n // 存储错误消息\r\n if (fieldConfigTyped.errorMessages) {\r\n errorMessagesToAdd[fieldName] = fieldConfigTyped.errorMessages;\r\n }\r\n }\r\n\r\n result.added.push(fieldName);\r\n options?.onFieldAdded?.(fieldName, true);\r\n } catch (error: any) {\r\n const errorMessage =\r\n error?.message || error?.toString() || \"Unknown error\";\r\n result.failed.push({\r\n fieldName,\r\n error: errorMessage,\r\n });\r\n options?.onFieldAdded?.(fieldName, false, errorMessage);\r\n }\r\n });\r\n\r\n // 5. 批量添加到 FormGroup\r\n if (Object.keys(controlsToAdd).length > 0) {\r\n Object.entries(controlsToAdd).forEach(([fieldName, control]) => {\r\n formGroup.addControl(fieldName, control);\r\n });\r\n\r\n // 6. 批量存储错误消息\r\n Object.entries(errorMessagesToAdd).forEach(([key, messages]) => {\r\n this.errorMessageStore[formName][key] = messages;\r\n });\r\n\r\n // 7. 批量存储 FormArray 配置\r\n Object.entries(formArrayConfigsToAdd).forEach(([fieldName, config]) => {\r\n this.formArrayConfigStore[formName][fieldName] = config;\r\n });\r\n\r\n // 8. 更新表单验证状态\r\n if (options?.updateValueAndValidity) {\r\n formGroup.updateValueAndValidity({\r\n emitEvent: options?.emitEvent ?? true,\r\n });\r\n }\r\n }\r\n\r\n // 9. 判断整体是否成功\r\n result.success = result.failed.length === 0;\r\n\r\n return result;\r\n }\r\n\r\n // 批量删除字段配置\r\n removeFieldsConfig(\r\n formName: string,\r\n fieldNames: string[],\r\n options?: RemoveFieldsConfigOptions\r\n ): RemoveFieldsConfigResult {\r\n const result: RemoveFieldsConfigResult = {\r\n success: true,\r\n removed: [],\r\n failed: [],\r\n };\r\n\r\n // 1. 验证表单是否存在\r\n const formGroup = this.formStore[formName];\r\n if (!formGroup) {\r\n fieldNames.forEach((fieldName) => {\r\n const error = `Form \"${formName}\" not found`;\r\n result.failed.push({\r\n fieldName,\r\n error,\r\n });\r\n options?.onFieldRemoved?.(fieldName, false, error);\r\n });\r\n result.success = false;\r\n return result;\r\n }\r\n\r\n // 2. 批量收集需要清理的信息\r\n const fieldsToRemove: string[] = [];\r\n const errorMessageKeysToRemove: string[] = [];\r\n const formArrayFields: string[] = [];\r\n\r\n // 3. 验证每个字段并收集信息\r\n fieldNames.forEach((fieldName) => {\r\n const control = formGroup.get(fieldName);\r\n\r\n if (!control) {\r\n const error = `Field \"${fieldName}\" not found`;\r\n result.failed.push({\r\n fieldName,\r\n error,\r\n });\r\n options?.onFieldRemoved?.(fieldName, false, error);\r\n return;\r\n }\r\n\r\n // 判断是否是 FormArray\r\n if (control instanceof FormArray) {\r\n formArrayFields.push(fieldName);\r\n\r\n // 收集 FormArray 相关的错误消息键(格式:arrayName[].fieldName)\r\n if (this.errorMessageStore[formName]) {\r\n Object.keys(this.errorMessageStore[formName]).forEach((key) => {\r\n if (key.startsWith(`${fieldName}[].`)) {\r\n errorMessageKeysToRemove.push(key);\r\n }\r\n });\r\n }\r\n } else {\r\n // 普通字段的错误消息键\r\n errorMessageKeysToRemove.push(fieldName);\r\n }\r\n\r\n fieldsToRemove.push(fieldName);\r\n });\r\n\r\n // 4. 批量执行删除操作\r\n try {\r\n // 4.1 从 FormGroup 中移除控件\r\n fieldsToRemove.forEach((fieldName) => {\r\n formGroup.removeControl(fieldName);\r\n result.removed.push(fieldName);\r\n options?.onFieldRemoved?.(fieldName, true);\r\n });\r\n\r\n // 4.2 批量删除错误消息\r\n if (this.errorMessageStore[formName]) {\r\n errorMessageKeysToRemove.forEach((key) => {\r\n delete this.errorMessageStore[formName][key];\r\n });\r\n }\r\n\r\n // 4.3 批量删除 FormArray 配置\r\n if (this.formArrayConfigStore[formName]) {\r\n formArrayFields.forEach((fieldName) => {\r\n delete this.formArrayConfigStore[formName][fieldName];\r\n });\r\n }\r\n } catch (error: any) {\r\n // 如果批量删除过程中出错,标记为失败\r\n fieldsToRemove.forEach((fieldName) => {\r\n if (!result.removed.includes(fieldName)) {\r\n const errorMessage =\r\n error?.message || error?.toString() || \"Failed to remove field\";\r\n result.failed.push({\r\n fieldName,\r\n error: errorMessage,\r\n });\r\n options?.onFieldRemoved?.(fieldName, false, errorMessage);\r\n }\r\n });\r\n }\r\n\r\n // 5. 判断整体是否成功\r\n result.success = result.failed.length === 0;\r\n\r\n return result;\r\n }\r\n\r\n // 局部赋值(支持 FormArray 的智能更新,统一根据 action 字段判断操作类型)\r\n patchFormValues(\r\n name: string,\r\n values: Record<string, any>,\r\n options?: { emitEvent?: boolean }\r\n ): void {\r\n const formGroup = this.formStore[name];\r\n if (!formGroup) {\r\n console.warn(\r\n `[AntdFormService] patchFormValues: form \"${name}\" not found.`\r\n );\r\n return;\r\n }\r\n\r\n const processedValues: Record<string, any> = {};\r\n\r\n Object.entries(values).forEach(([key, value]) => {\r\n const control = formGroup.get(key);\r\n\r\n // 检测是否是 FormArray\r\n if (control instanceof FormArray && Array.isArray(value)) {\r\n this.patchFormArray(name, key, value);\r\n return;\r\n }\r\n\r\n // 普通字段,直接加入\r\n processedValues[key] = value;\r\n });\r\n\r\n // 处理普通字段\r\n if (Object.keys(processedValues).length > 0) {\r\n formGroup.patchValue(processedValues, {\r\n emitEvent: options?.emitEvent ?? true,\r\n });\r\n }\r\n }\r\n\r\n // 表单校验(自动过滤内部字段)\r\n validateForm(\r\n name: string,\r\n options?: { emitEvent?: boolean; onlySelf?: boolean }\r\n ): boolean | Record<string, any> {\r\n if (this.formStore[name].valid) {\r\n const rawValue = this.formStore[name].getRawValue();\r\n return this.excludeInternalFields(rawValue);\r\n } else {\r\n // 递归校验所有控件,包括 FormArray 中的项\r\n this.markAllControlsAsDirty(\r\n this.formStore[name],\r\n options?.emitEvent ?? true,\r\n options?.onlySelf ?? false\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n // 递归标记所有无效控件为 dirty(包括 FormArray 中的项)\r\n private markAllControlsAsDirty(\r\n control: AbstractControl,\r\n emitEvent: boolean,\r\n onlySelf: boolean\r\n ): void {\r\n if (control.invalid) {\r\n control.markAsDirty();\r\n control.updateValueAndValidity({\r\n emitEvent,\r\n onlySelf,\r\n });\r\n }\r\n\r\n // 如果是 FormGroup,递归处理所有子控件\r\n if (control instanceof FormGroup) {\r\n Object.values(control.controls).forEach((childControl) => {\r\n this.markAllControlsAsDirty(childControl, emitEvent, onlySelf);\r\n });\r\n }\r\n\r\n // 如果是 FormArray,递归处理数组中的每一项\r\n if (control instanceof FormArray) {\r\n control.controls.forEach((childControl) => {\r\n this.markAllControlsAsDirty(childControl, emitEvent, onlySelf);\r\n });\r\n }\r\n }\r\n\r\n // ==================== 错误消息相关 ====================\r\n\r\n // 获取字段首条错误提示,支持普通字段和 FormArray 字段(格式:arrayName.index.fieldName)\r\n getFieldErrorMessage(name: string, controlName: string): string {\r\n const formGroup = this.formStore[name];\r\n if (!formGroup) {\r\n console.warn(\r\n `[AntdFormService] getFieldErrorMessage: form \"${name}\" not found.`\r\n );\r\n return \"\";\r\n }\r\n const control = formGroup.get(controlName);\r\n if (!control) {\r\n console.warn(\r\n `[AntdFormService] getFieldErrorMessage: control \"${controlName}\" not found in form \"${name}\".`\r\n );\r\n return \"\";\r\n }\r\n if (!control.errors) {\r\n return \"\";\r\n }\r\n\r\n // 解析 controlName,支持 FormArray 格式:arrayName.index.fieldName\r\n let errorMessageKey = controlName;\r\n const arrayMatch = controlName.match(/^(.+)\\.(\\d+)\\.(.+)$/);\r\n if (arrayMatch) {\r\n // FormArray 格式:arrayName.index.fieldName -> 使用 arrayName[].fieldName 作为 key\r\n const [, arrayName, , fieldName] = arrayMatch;\r\n errorMessageKey = `${arrayName}[].${fieldName}`;\r\n }\r\n\r\n // 从 errorMessageStore 获取错误消息配置\r\n const errorMessages = this.errorMessageStore[name]?.[errorMessageKey];\r\n const mergedMessages = {\r\n ...this.defaultErrorMessages,\r\n ...(errorMessages ?? {}),\r\n };\r\n\r\n for (const errorKey of Object.keys(control.errors)) {\r\n const message = mergedMessages[errorKey];\r\n if (message) {\r\n // 不再支持函数形式,只返回字符串\r\n return typeof message === \"string\" ? message : \"\";\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n // ==================== 监听相关 ====================\r\n\r\n // 监听表单所有字段变更\r\n watchFormChanges<T = any>(\r\n name: string,\r\n handler: (value: T) => void,\r\n options?: WatchOptions\r\n ): Subscription | undefined {\r\n const formGroup = this.formStore[name];\r\n if (!formGroup) {\r\n console.warn(\r\n `[AntdFormService] watchFormChanges: form \"${name}\" not found.`\r\n );\r\n return undefined;\r\n }\r\n\r\n return this.setupValueChangeSubscription(formGroup, handler, options);\r\n }\r\n\r\n // 监听指定字段变更\r\n watchFieldChanges<T = any>(\r\n name: string,\r\n controlName: string,\r\n handler: (value: T) => void,\r\n options?: WatchOptions\r\n ): Subscription | undefined {\r\n const formGroup = this.formStore[name];\r\n if (!formGroup) {\r\n console.warn(\r\n `[AntdFormService] watchFieldChanges: form \"${name}\" not found.`\r\n );\r\n return undefined;\r\n }\r\n\r\n const control = formGroup.get(controlName);\r\n if (!control) {\r\n console.warn(\r\n `[AntdFormService] watchFieldChanges: control \"${controlName}\" not found in form \"${name}\".`\r\n );\r\n return undefined;\r\n }\r\n\r\n return this.setupValueChangeSubscription(control, handler, options);\r\n }\r\n\r\n // ==================== 工具方法 ====================\r\n\r\n // 获取表单类名\r\n getFormClassName(name: string): string {\r\n return `${this.classPrefix}${name}`;\r\n }\r\n\r\n // 设置 CSS 变量到目标元素(支持持久化监听动态添加的元素)\r\n setCSSVariablesToTarget(name: string): void {\r\n const selector = `.${this.getFormClassName(name)} .ant-form-item-label`;\r\n const formContainerSelector = `.${this.getFormClassName(name)}`;\r\n const applyStyles = (): boolean => {\r\n const dom = document.querySelectorAll(selector);\r\n if (!dom.length) {\r\n return false;\r\n }\r\n let appliedCount = 0;\r\n dom.forEach((item) => {\r\n const target = item as HTMLElement;\r\n if (\r\n target.style.width !== this.labelWidth ||\r\n target.style.textAlign !== this.labelAlign\r\n ) {\r\n target.style.width = this.labelWidth;\r\n target.style.textAlign = this.labelAlign;\r\n appliedCount++;\r\n }\r\n });\r\n return appliedCount > 0;\r\n };\r\n if (this.labelObservers[name]) {\r\n return;\r\n }\r\n let timeout: any = null;\r\n const observer = new MutationObserver(() => {\r\n cancelAnimationFrame(timeout);\r\n timeout = requestAnimationFrame(() => {\r\n setTimeout(() => {\r\n applyStyles();\r\n }, 0);\r\n });\r\n });\r\n const formContainer = document.querySelector(formContainerSelector);\r\n observer.observe(formContainer || document.body, {\r\n childList: true,\r\n subtree: true,\r\n attributes: true,\r\n });\r\n this.labelObservers[name] = observer;\r\n }\r\n\r\n // ==================== 私有方法 ====================\r\n\r\n // 获取 FormArray\r\n private getFormArray(formName: string, arrayName: string): FormArray | null {\r\n const formGroup = this.formStore[formName];\r\n if (!formGroup) {\r\n console.warn(\r\n `[AntdFormService] getFormArray: form \"${formName}\" not found.`\r\n );\r\n return null;\r\n }\r\n\r\n const control = formGroup.get(arrayName);\r\n if (!control || !(control instanceof FormArray)) {\r\n console.warn(\r\n `[AntdFormService] getFormArray: array \"${arrayName}\" not found in form \"${formName}\".`\r\n );\r\n return null;\r\n }\r\n\r\n return control as FormArray;\r\n }\r\n\r\n // 判断是否是 FormArray 配置\r\n private isFormArrayConfig(\r\n field: FieldConfig | FormArrayConfig\r\n ): field is FormArrayConfig {\r\n return (field as FormArrayConfig).type === \"array\";\r\n }\r\n\r\n // 从配置创建 FormArray\r\n private createFormArrayFromConfig(\r\n formName: string,\r\n arrayName: string,\r\n itemConfig: FormConfig,\r\n initialItems: any[],\r\n uniqueIdField?: string\r\n ): FormArray {\r\n const formArray = this.fb.array([]);\r\n\r\n initialItems.forEach((item) => {\r\n const itemGroup = this.createItemFormGroup(\r\n itemConfig,\r\n item,\r\n uniqueIdField\r\n );\r\n formArray.push(itemGroup);\r\n });\r\n\r\n return formArray;\r\n }\r\n\r\n // 生成内部ID(使用业务唯一字段或生成临时ID)\r\n private generateInternalId(itemData: any, uniqueIdField?: string): string {\r\n // 优先使用业务唯一字段\r\n if (uniqueIdField && itemData?.[uniqueIdField] !== undefined) {\r\n const businessId = itemData[uniqueIdField];\r\n if (\r\n businessId !== null &&\r\n businessId !== undefined &&\r\n businessId !== \"\"\r\n ) {\r\n return `business-${uniqueIdField}-${businessId}`;\r\n }\r\n }\r\n\r\n // 如果没有业务ID,生成临时ID(用于新添加的项)\r\n return `temp-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\r\n }\r\n\r\n // 创建单个项的 FormGroup\r\n private createItemFormGroup(\r\n itemConfig: FormConfig,\r\n itemData: any,\r\n uniqueIdField?: string\r\n ): FormGroup {\r\n const groupConfig: Record<string, any> = {};\r\n\r\n // 添加内部ID字段\r\n const itemId = this.generateInternalId(itemData, uniqueIdField);\r\n groupConfig[this.INTERNAL_ID_FIELD] = [\r\n { value: itemId, disabled: true },\r\n [],\r\n ];\r\n\r\n // 添加业务字段\r\n Object.entries(itemConfig).forEach(([key, field]) => {\r\n // itemConfig 中的字段应该是 FieldConfig,不应该包含 FormArrayConfig\r\n if (this.isFormArrayConfig(field)) {\r\n console.warn(\r\n `[AntdFormService] createItemFormGroup: FormArrayConfig is not allowed in itemConfig. Skipping field \"${key}\".`\r\n );\r\n return;\r\n }\r\n\r\n const fieldConfig = field as FieldConfig;\r\n const value =\r\n itemData?.[key] !== undefined ? itemData[key] : fieldConfig.value;\r\n groupConfig[key] = [\r\n { value: value, disabled: fieldConfig.disabled ?? false },\r\n fieldConfig.validators?.() ?? [],\r\n ];\r\n });\r\n return this.fb.group(groupConfig);\r\n }\r\n\r\n // 通过业务唯一字段查找内部ID\r\n private findFormArrayItemIdByBusinessField(\r\n formName: string,\r\n arrayName: string,\r\n uniqueIdField: string,\r\n businessIdValue: any\r\n ): string | null {\r\n const formArray = this.getFormArray(formName, arrayName);\r\n if (!formArray) return null;\r\n\r\n for (let i = 0; i < formArray.length; i++) {\r\n const item = formArray.at(i) as FormGroup;\r\n const itemValue = item.getRawValue();\r\n const internalId = itemValue[this.INTERNAL_ID_FIELD];\r\n\r\n // 检查内部ID是否匹配业务ID\r\n if (internalId && internalId.startsWith(`business-${uniqueIdField}-`)) {\r\n const idInInternalId = internalId.replace(\r\n `business-${uniqueIdField}-`,\r\n \"\"\r\n );\r\n if (String(idInInternalId) === String(businessIdValue)) {\r\n return internalId;\r\n }\r\n }\r\n\r\n // 也检查当前业务字段值是否匹配(处理业务ID更新的情况)\r\n if (itemValue[uniqueIdField] === businessIdValue) {\r\n return internalId;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n // 通过内部ID查找项\r\n private findFormArrayItemById(\r\n formName: string,\r\n arrayName: string,\r\n itemId: string\r\n ): { index: number; formGroup: FormGroup } | null {\r\n const formArray = this.getFormArray(formName, arrayName);\r\n if (!formArray) return null;\r\n\r\n for (let i = 0; i < formArray.length; i++) {\r\n const item = formArray.at(i) as FormGroup;\r\n const id = item.get(this.INTERNAL_ID_FIELD)?.value;\r\n if (id === itemId) {\r\n return { index: i, formGroup: item };\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n // 获取操作类型(必须明确指定 action 字段)\r\n private getOperationType(\r\n itemData: any\r\n ): \"create\" | \"update\" | \"delete\" | null {\r\n if (!itemData || typeof itemData !== \"object\") return null;\r\n\r\n const action = itemData.action;\r\n if (action === \"delete\" || action === \"update\" || action === \"create\") {\r\n return action;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // 过滤操作字段(action 字段不保存到表单中)\r\n private filterOperationFields(itemData: any): any {\r\n if (!itemData || typeof itemData !== \"object\") return itemData;\r\n\r\n const filtered: any = {};\r\n Object.entries(itemData).forEach(([key, value]) => {\r\n if (key !== \"action\") {\r\n filtered[key] = value;\r\n }\r\n });\r\n return filtered;\r\n }\r\n\r\n // 处理 FormArray 的更新(统一根据 action 字段判断操作类型)\r\n private patchFormArray(\r\n formName: string,\r\n arrayName: string,\r\n newValues: any[]\r\n ): void {\r\n const formArray = this.getFormArray(formName, arrayName);\r\n if (!formArray) {\r\n console.warn(\r\n `[AntdFormService] patchFormArray: array \"${arrayName}\" not found in form \"${formName}\".`\r\n );\r\n return;\r\n }\r\n\r\n const config = this.formArrayConfigStore[formName]?.[arrayName];\r\n if (!config) {\r\n console.warn(\r\n `[AntdFormService] patchFormArray: config not found for array \"${arrayName}\" in form \"${formName}\".`\r\n );\r\n return;\r\n }\r\n\r\n const { itemConfig, uniqueIdField } = config;\r\n\r\n // 统一根据 action 字段判断操作类型\r\n const itemsToDelete = new Set<string>();\r\n const itemsToUpdate = new Map<string, any>();\r\n const itemsToAdd: any[] = [];\r\n\r\n newValues.forEach((itemData) => {\r\n if (!itemData || typeof itemData !== \"object\") return;\r\n\r\n const operationType = this.getOperationType(itemData);\r\n if (!operationType) {\r\n console.warn(\r\n `[AntdFormService] patchFormArray: Item missing required \"action\" field. Skipping.`,\r\n itemData\r\n );\r\n return;\r\n }\r\n\r\n // 删除操作\r\n if (operationType === \"delete\") {\r\n if (uniqueIdField && itemData[uniqueIdField] !== undefined) {\r\n const businessId = itemData[uniqueIdField];\r\n const internalId = this.findFormArrayItemIdByBusinessField(\r\n formName,\r\n arrayName,\r\n uniqueIdField,\r\n businessId\r\n );\r\n if (internalId) {\r\n itemsToDelete.add(internalId);\r\n } else {\r\n console.warn(\r\n `[AntdFormService] patchFormArray: Cannot delete item with ${uniqueIdField}=${businessId}, item not found.`\r\n );\r\n }\r\n } else {\r\n console.warn(\r\n `[AntdFormService] patchFormArray: Cannot delete item, missing required uniqueIdField \"${uniqueIdField}\".`\r\n );\r\n }\r\n return;\r\n }\r\n\r\n // 更新操作\r\n if (operationType === \"update\") {\r\n if (uniqueIdField && itemData[uniqueIdField] !== undefined) {\r\n const businessId = itemData[uniqueIdField];\r\n const internalId = this.findFormArrayItemIdByBusinessField(\r\n formName,\r\n arrayName,\r\n uniqueIdField,\r\n businessId\r\n );\r\n\r\n if (internalId) {\r\n const filteredData = this.filterOperationFields(itemData);\r\n itemsToUpdate.set(internalId, filteredData);\r\n } else {\r\n console.warn(\r\n `[AntdFormService] patchFormArray: Cannot update item with ${uniqueIdField}=${businessId}, item not found. Skipping.`\r\n );\r\n }\r\n } else {\r\n console.warn(\r\n `[AntdFormService] patchFormArray: Cannot update item, missing required uniqueIdField \"${uniqueIdField}\". Skipping.`\r\n );\r\n }\r\n return;\r\n }\r\n\r\n // 创建操作\r\n if (operationType === \"create\") {\r\n const filteredData = this.filterOperationFields(itemData);\r\n itemsToAdd.push(filteredData);\r\n }\r\n });\r\n\r\n // 执行删除(需要从后往前删除,避免索引变化)\r\n const deleteIndices: number[] = [];\r\n itemsToDelete.forEach((itemId) => {\r\n const found = this.findFormArrayItemById(formName, arrayName, itemId);\r\n if (found) {\r\n deleteIndices.push(found.index);\r\n }\r\n });\r\n deleteIndices\r\n .sort((a, b) => b - a)\r\n .forEach((index) => {\r\n formArray.removeAt(index);\r\n });\r\n\r\n // 执行更新\r\n itemsToUpdate.forEach((itemData, itemId) => {\r\n const found = this.findFormArrayItemById(formName, arrayName, itemId);\r\n if (found) {\r\n const { [this.INTERNAL_ID_FIELD]: _, ...dataToUpdate } = itemData;\r\n found.formGroup.patchValue(dataToUpdate);\r\n }\r\n });\r\n\r\n // 执行添加\r\n itemsToAdd.forEach((itemData) => {\r\n const newItem = this.createItemFormGroup(\r\n itemConfig,\r\n itemData,\r\n uniqueIdField\r\n );\r\n formArray.push(newItem);\r\n });\r\n }\r\n\r\n // 过滤内部字段(递归处理对象和数组)\r\n private excludeInternalFields(value: any): any {\r\n if (value === null || value === undefined) {\r\n return value;\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.map((item) => this.excludeInternalFields(item));\r\n }\r\n\r\n if (typeof value !== \"object\") {\r\n return value;\r\n }\r\n\r\n const filtered: any = {};\r\n Object.entries(value).forEach(([key, val]) => {\r\n // 过滤以 __ 开头的内部字段和 action 字段\r\n if (!key.startsWith(\"__\") && key !== \"action\") {\r\n filtered[key] = this.excludeInternalFields(val);\r\n }\r\n });\r\n return filtered;\r\n }\r\n\r\n // 设置值变更订阅\r\n private setupValueChangeSubscription<T>(\r\n target: { valueChanges: any; value: any },\r\n handler: (value: T) => void,\r\n options?: WatchOptions\r\n ): Subscription {\r\n let valueChanges$ = target.valueChanges;\r\n\r\n if (options?.debounce != null) {\r\n valueChanges$ = valueChanges$.pipe(debounceTime(options.debounce));\r\n }\r\n\r\n if (options?.distinctUntilChanged !== false) {\r\n valueChanges$ = valueChanges$.pipe(distinctUntilChanged());\r\n }\r\n\r\n if (options?.emitInitial) {\r\n handler(target.value);\r\n }\r\n\r\n return valueChanges$.subscribe(handler);\r\n }\r\n}","/*\n * Public API Surface of pro-table\n */\n\nexport * from \"./lib/pro-table.component\";\nexport * from \"./lib/pro-table.module\";\nexport * from \"./lib/constants\";\nexport * from \"./lib/type\";\nexport * from \"./lib/tokens\";\nexport * from \"./lib/plate-input/plate-prefix-load.service\";\nexport * from './lib/plate-input/plate-input.module'\n\n// Export antd-form service and types\nexport { AntdFormService } from \"./lib/page-public/antd-form\";\nexport type {\n FieldErrorMessage,\n FieldErrorMessages,\n FieldConfig,\n FormArrayConfig,\n FormModifyType,\n FormConfig,\n WatchOptions,\n AddFieldsConfigOptions,\n AddFieldsConfigResult,\n RemoveFieldsConfigOptions,\n RemoveFieldsConfigResult,\n} from \"./lib/page-public/antd-form\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {ColmunsSettingComponent as ɵf} from './lib/components/colmuns-setting/colmuns-setting.component';\nexport {DynamicSearchFieldComponent as ɵg} from './lib/components/dynamic-search-field/dynamic-search-field.component';\nexport {PageContainerComponent as ɵb} from './lib/page-container/page-container.component';\nexport {PageContainerModule as ɵa} from './lib/page-container/page-container.module';\nexport {PlateInputComponent as ɵe} from './lib/plate-input/plate-input.component';\nexport {TableSearchBarModule as ɵc} from './lib/table-search-bar/table-search-bar-module';\nexport {TableSearchBarComponent as ɵd} from './lib/table-search-bar/table-search-bar.component';"],"names":["InjectionToken","EventEmitter","isObservable","isEqual","hasIn","cloneDeep","isNil","debounce","Component","Optional","Inject","Input","Output","ContentChild","ContentChildren","TemplateRef","NgModule","CommonModule","FormsModule","HttpClientModule","RouterModule","NzCardModule","ReactiveFormsModule","NG_VALUE_ACCESSOR","forwardRef","ChangeDetectorRef","ElementRef","NzGridModule","NzInputModule","NzPopoverModule","NzIconModule","NzSpaceModule","Sortable","ViewChild","ComponentFactoryResolver","ViewContainerRef","NzFormModule","NzSelectModule","NzButtonModule","NzTableModule","NzDatePickerModule","NzModalModule","NzCheckboxModule","NzTypographyModule","DragDropModule","NzAutocompleteModule","NzInputNumberModule","NzToolTipModule","Injectable","HttpClient","FormArray","FormGroup","debounceTime","distinctUntilChanged","FormBuilder"],"mappings":"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"}
1
+ {"version":3,"file":"yibozhang-pro-table.umd.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../pro-table/src/lib/constants.ts","../../../pro-table/src/lib/tokens.ts","../../../pro-table/src/lib/pro-table.component.ts","../../../pro-table/src/lib/page-container/page-container.component.ts","../../../pro-table/src/lib/page-container/page-container.module.ts","../../../pro-table/src/lib/plate-input/plate-input.component.ts","../../../pro-table/src/lib/plate-input/plate-input.module.ts","../../../pro-table/src/lib/table-search-bar/table-search-bar.component.ts","../../../pro-table/src/lib/table-search-bar/table-search-bar-module.ts","../../../pro-table/src/lib/components/colmuns-setting/colmuns-setting.component.ts","../../../pro-table/src/lib/components/dynamic-search-field/dynamic-search-field.component.ts","../../../pro-table/src/lib/pro-table.module.ts","../../../pro-table/src/lib/plate-input/plate-prefix-load.service.ts","../../../pro-table/src/lib/page-public/antd-form.ts","../../../pro-table/src/lib/page-public/array-form.ts","../../../pro-table/src/public-api.ts","../../../pro-table/src/yibozhang-pro-table.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import {\r\n InputFieldProps,\r\n InputPlateFieldProps,\r\n SelectFieldProps,\r\n SelectMultipleFieldProps,\r\n DateFieldProps,\r\n CheckboxFieldProps,\r\n AutoCompleteFieldProps,\r\n CustomFieldProps,\r\n InputNumberFieldProps,\r\n} from \"./type\";\r\n\r\nexport const PRO_TABLE_DEFAULT_PROPS: {\r\n input: InputFieldProps;\r\n inputPlate: InputPlateFieldProps;\r\n select: SelectFieldProps;\r\n selectMultiple: SelectMultipleFieldProps;\r\n date: DateFieldProps;\r\n checkbox: CheckboxFieldProps;\r\n autoComplete: AutoCompleteFieldProps;\r\n custom: CustomFieldProps;\r\n inputNumber: InputNumberFieldProps;\r\n} = {\r\n input: {\r\n name: \"\",\r\n placeHolder: \"\",\r\n disabled: false,\r\n label: \"\",\r\n value: \"\",\r\n },\r\n select: {\r\n name: \"\",\r\n options: [],\r\n disabled: false,\r\n label: \"\",\r\n value: \"\",\r\n allowClear: true,\r\n placeHolder: \"\",\r\n },\r\n selectMultiple: {\r\n name: \"\",\r\n options: [],\r\n disabled: false,\r\n label: \"\",\r\n value: [],\r\n allowClear: true,\r\n placeHolder: \"请选择\",\r\n },\r\n inputPlate: {\r\n name: \"\",\r\n label: \"\",\r\n value: \"\",\r\n },\r\n checkbox: {\r\n name: \"\",\r\n options: [],\r\n disabled: false,\r\n label: \"\",\r\n value: [],\r\n noStyle: false,\r\n },\r\n date: {\r\n name: \"\",\r\n disabled: false,\r\n label: \"\",\r\n value: \"\",\r\n allowClear: true,\r\n placeHolder: \"请选择\",\r\n showTime: false,\r\n format: \"yyyy-MM-dd\",\r\n mode: \"date\",\r\n },\r\n autoComplete: {\r\n name: \"\",\r\n disabled: false,\r\n placeHolder: \"请输入\",\r\n label: \"\",\r\n value: \"\",\r\n dataSource: () => [],\r\n backFill: false,\r\n defaultActiveFirstOption: false,\r\n returnFullData: false,\r\n },\r\n inputNumber: {\r\n name: \"\",\r\n disabled: false,\r\n label: \"\",\r\n value: \"\",\r\n placeHolder: \"请输入\",\r\n min: 0,\r\n max: 100,\r\n precision: 0,\r\n formatterPercent: (value: number) => `${value}`,\r\n parserPercent: (value: string) => value,\r\n },\r\n custom: {\r\n name: \"\",\r\n value: null,\r\n label: \"\",\r\n },\r\n};\r\n\r\nexport const PRO_TABLE_DEFAULT_COLUMN = {\r\n width: \"\",\r\n align: \"left\",\r\n fixedLeft: false,\r\n fixedRight: false,\r\n auxiliaryColumn: false,\r\n};\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport interface ProTableRemoteColumnService {\r\n /**\r\n * 查询当前表的列配置\r\n */\r\n getCol: (tableName: string, multiRow?: boolean) => Promise<any>;\r\n /**\r\n * 写入列配置\r\n */\r\n setCol?: (\r\n tableName: string,\r\n columns: Array<{\r\n field: string;\r\n isShow: boolean;\r\n header: string;\r\n sortName?: string | null;\r\n }>,\r\n multiRow?: boolean\r\n ) => Promise<any> | Observable<any>;\r\n}\r\n\r\nexport const PRO_TABLE_COLUMN_REMOTE = new InjectionToken<ProTableRemoteColumnService | null>(\r\n \"PRO_TABLE_COLUMN_REMOTE\"\r\n);\r\n\r\n/**\r\n * 车牌前缀选项接口\r\n */\r\nexport interface PlatePrefixOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * 车牌前缀加载服务接口\r\n */\r\nexport interface PlatePrefixLoadService {\r\n /**\r\n * 加载车牌前缀选项列表\r\n */\r\n loadPrefixOptions(): Promise<PlatePrefixOption[]>;\r\n}\r\n\r\nexport const PLATE_PREFIX_LOAD_SERVICE = new InjectionToken<PlatePrefixLoadService>(\r\n \"PLATE_PREFIX_LOAD_SERVICE\"\r\n);\r\n\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChild,\r\n ContentChildren,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Optional,\r\n Output,\r\n QueryList,\r\n TemplateRef,\r\n} from \"@angular/core\";\r\nimport { cloneDeep, hasIn, isNil, debounce, isEqual } from \"lodash-es\";\r\nimport { PRO_TABLE_DEFAULT_COLUMN, PRO_TABLE_DEFAULT_PROPS } from \"./constants\";\r\nimport {\r\n AutoCompleteFieldProps,\r\n CheckboxFieldProps,\r\n OptionsType,\r\n ProTableColumn,\r\n ProTablePageInfo,\r\n ProTableRequestResult,\r\n ProTableValuesChange,\r\n SelectFieldProps,\r\n} from \"./type\";\r\nimport { PRO_TABLE_COLUMN_REMOTE, ProTableRemoteColumnService } from \"./tokens\";\r\nimport { isObservable } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"app-pro-table\",\r\n templateUrl: \"./pro-table.component.html\",\r\n styleUrls: [\"./pro-table.component.css\"],\r\n})\r\nexport class ProTableComponent implements OnInit, AfterContentInit {\r\n @Input() showSearchBtn: boolean = true;\r\n\r\n @Input() showClearBtn: boolean = true;\r\n\r\n @Input() title: string | null = null;\r\n\r\n @Input() tableName: string = \"\";\r\n\r\n @Input() multiRow: boolean = false;\r\n\r\n @Input() columns: ProTableColumn[] = [];\r\n\r\n @Input() showSearchBar: boolean = true;\r\n\r\n @Input() showActionBar: boolean = true;\r\n\r\n @Input() confirmBtnText: string = \"查询\";\r\n\r\n @Input() clearBtnText: string = \"清空\";\r\n\r\n @Input() labelWidth: string = \"90px\";\r\n\r\n @Input() labelAlign: string = \"right\";\r\n\r\n @Input() dataSource: any[] = [];\r\n\r\n @Input() bordered: boolean = true;\r\n\r\n @Input() outerBordered: boolean = true;\r\n\r\n @Input() showPagination: boolean = true;\r\n\r\n @Input() frontPagination: boolean = false;\r\n\r\n @Input() scroll: { x?: string | number; y?: string | number } | null = null\r\n\r\n @Input() request: (params: any) => Promise<ProTableRequestResult>;\r\n\r\n @Input() summaryData: Record<string, any> | null = null;\r\n\r\n // 排序模式:local 本地排序;server 在线排序(提交给接口)\r\n @Input() sortMode: \"local\" | \"server\" = \"local\";\r\n\r\n @Input() showColumnSetting: boolean = false;\r\n\r\n // 是否开启多列排序(默认单列)\r\n @Input() multipleSort: boolean = false;\r\n\r\n @Input() showCheckbox: boolean = false;\r\n\r\n // 判断行是否禁用的函数\r\n @Input() rowDisabled: (data: any) => boolean = () => false;\r\n\r\n // 是否自动触发请求\r\n @Input() autoTriggerRequest: boolean = true;\r\n\r\n @Input() customTableRender?: TemplateRef<any>;\r\n\r\n @Output() onRowClick = new EventEmitter<any>();\r\n\r\n @Output() onRowDbClick = new EventEmitter<any>();\r\n\r\n @Output() onValuesChange = new EventEmitter<ProTableValuesChange>();\r\n\r\n @Output() onResetFormBeforeReload = new EventEmitter<any>();\r\n\r\n @ContentChild(\"actionBar\") actionBarTpl!: TemplateRef<any>;\r\n\r\n @ContentChild(\"ImgActionBar\") imgActionBarTpl!: TemplateRef<any>;\r\n\r\n @ContentChildren(TemplateRef) allTemplates!: QueryList<TemplateRef<any>>;\r\n\r\n private _savedSearchParams: any = {};\r\n\r\n // 存储模板映射关系 - 通过字符串名称映射到模板引用\r\n private templateMap = new Map<string, TemplateRef<any>>();\r\n\r\n // 存储所有自定义模板的引用\r\n private customTemplates = new Map<string, TemplateRef<any>>();\r\n\r\n // 记录各列排序状态:'ascend' | 'descend' | null\r\n\r\n private _sortMap: Record<string, \"ascend\" | \"descend\" | null> = {};\r\n\r\n // 记录多列排序的优先级(后设置的优先)\r\n private _sortPriority: string[] = [];\r\n\r\n // 存储每个 autoComplete 字段的防抖函数\r\n private _autoCompleteDebounceMap: Map<string, (event: Event) => void> =\r\n new Map();\r\n\r\n // 仅在初始化时运行列配置预检查,避免后续调用重复触发\r\n private _preCheckDone: boolean = false;\r\n\r\n _columns: ProTableColumn[] = [];\r\n\r\n // 筛选表单数据存储\r\n _searchParams: any = {};\r\n\r\n // 筛选表单list渲染数据\r\n _searchFiledColumns: ProTableColumn[] = [];\r\n\r\n _pageInfo: ProTablePageInfo = {\r\n pageIndex: 1,\r\n pageSize: 15,\r\n total: 100,\r\n pageSizeOptions: [10, 15, 20, 50, 100, 500, 1000],\r\n };\r\n\r\n _loading: boolean = false;\r\n\r\n _selectedTableRow: any = null;\r\n\r\n // 选中的行数据(用于复选框选择)\r\n _selectedRows: any[] = [];\r\n\r\n // 全选状态\r\n _checkedAll: boolean = false;\r\n\r\n // 半选状态(部分选中)\r\n _indeterminate: boolean = false;\r\n\r\n // 远程columns\r\n _serverColumns: ProTableColumn[] = [];\r\n\r\n // 存储 autoComplete 字段的数据源\r\n _autoCompleteDataSources: Record<string, any[]> = {};\r\n\r\n constructor(\r\n @Optional()\r\n @Inject(PRO_TABLE_COLUMN_REMOTE)\r\n private columnRemote: ProTableRemoteColumnService | null\r\n ) {}\r\n\r\n private async fetchRemoteColumns() {\r\n if (!this.columnRemote?.getCol || !this.tableName) {\r\n return null;\r\n }\r\n try {\r\n const res = await this.columnRemote.getCol(this.tableName, this.multiRow);\r\n return res;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n private async persistRemoteColumns(columns: any[]) {\r\n if (!this.columnRemote?.setCol || !this.tableName) {\r\n return null;\r\n }\r\n try {\r\n const result = this.columnRemote.setCol(\r\n this.tableName,\r\n columns,\r\n this.multiRow\r\n );\r\n if (result && isObservable(result)) {\r\n return await result.toPromise();\r\n }\r\n return result;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n async ngOnInit(): Promise<void> {\r\n this._searchParams = {};\r\n this.formateInnerColumns(this.columns);\r\n await this.setSearchParams(this.columns);\r\n\r\n // 使用 Proxy 包装 _searchParams,拦截表单项值变化并向外发出事件\r\n this._searchParams = this.createSearchParamsProxy(this._searchParams);\r\n if (this.autoTriggerRequest) {\r\n this.handleQuery();\r\n }\r\n this.queryDynamicColumns();\r\n }\r\n\r\n ngAfterContentInit() {\r\n // 自动注册所有自定义模板\r\n this.autoRegisterTemplates();\r\n }\r\n\r\n private async preCheckServerColumns(): Promise<boolean> {\r\n const res = await this.fetchRemoteColumns();\r\n if (!res) return false;\r\n const initColumns = this.columns\r\n .filter((col) => !col.auxiliaryColumn)\r\n .map((column) => {\r\n return {\r\n field: column.prop,\r\n isShow: !column.hideInTable, // 默认全部显示\r\n header: column.title,\r\n sortName: column.sortName || null,\r\n };\r\n });\r\n if (res.code === 0) {\r\n if (!isEqual(res.data.tabColumn, initColumns)) {\r\n const initRes = await this.persistRemoteColumns(initColumns);\r\n if (initRes) {\r\n this.queryDynamicColumns();\r\n }\r\n\r\n return false;\r\n } else {\r\n console.log(\"一致\");\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n private async queryDynamicColumns() {\r\n if (!this.tableName || !this.columnRemote) return;\r\n if (!this._preCheckDone) {\r\n const checkResult = await this.preCheckServerColumns();\r\n this._preCheckDone = true;\r\n if (!checkResult) return;\r\n }\r\n const res = await this.fetchRemoteColumns();\r\n if (!res) return;\r\n if (res.code === 0) {\r\n const _tabColumn = res.data.tabColumn.map((item) => {\r\n return {\r\n title: item.header,\r\n prop: item.field,\r\n sortName: item.sortName,\r\n hideInTable: !item.isShow,\r\n };\r\n });\r\n this._serverColumns = _tabColumn;\r\n this.updateTableColumns(_tabColumn);\r\n } else if (res.code === 10) {\r\n // 如果未设置接口返回,需要默认调用一次修改函数初始化数据\r\n const initColumns = this.columns\r\n .filter((col) => !col.auxiliaryColumn)\r\n .map((column) => {\r\n return {\r\n field: column.prop,\r\n isShow: true, // 默认全部显示\r\n header: column.title,\r\n sortName: column.sortName || null,\r\n };\r\n });\r\n\r\n // 调用修改接口初始化数据\r\n const initRes = await this.persistRemoteColumns(initColumns);\r\n if (initRes) {\r\n this.queryDynamicColumns();\r\n }\r\n }\r\n }\r\n\r\n private formateInnerColumns(columns: ProTableColumn[]) {\r\n this._columns = columns\r\n .filter((item) => !item.hideInTable)\r\n .map((item) => {\r\n return { ...PRO_TABLE_DEFAULT_COLUMN, ...item } as ProTableColumn;\r\n });\r\n }\r\n\r\n // 自动注册模板的方法\r\n private autoRegisterTemplates() {\r\n // 获取所有需要自定义模板的列\r\n const columnsWithCustomRender = this._columns.filter(\r\n (col) => col.customRender\r\n );\r\n\r\n if (columnsWithCustomRender.length > 0) {\r\n // 尝试从ContentChildren中查找对应的模板\r\n columnsWithCustomRender.forEach((column) => {\r\n const templateName = column.customRender!;\r\n const template = this.findTemplateByName(templateName);\r\n\r\n if (template) {\r\n this.customTemplates.set(templateName, template);\r\n } else {\r\n }\r\n });\r\n }\r\n\r\n // 获取所有需要自定义label模板的列(使用原始columns,确保顺序正确)\r\n const columnsWithCustomLabel = this.columns.filter(\r\n (col) => col.customLabelRender\r\n );\r\n\r\n if (columnsWithCustomLabel.length > 0) {\r\n // 尝试从ContentChildren中查找对应的label模板\r\n columnsWithCustomLabel.forEach((column) => {\r\n const templateName = column.customLabelRender!;\r\n const template = this.findLabelTemplateByName(\r\n templateName,\r\n columnsWithCustomLabel\r\n );\r\n\r\n if (template) {\r\n this.customTemplates.set(templateName, template);\r\n } else {\r\n }\r\n });\r\n }\r\n }\r\n\r\n // 根据名称查找模板\r\n private findTemplateByName(templateName: string): TemplateRef<any> | null {\r\n return this.getTemplateFromContent(templateName);\r\n }\r\n\r\n // 从ContentChildren中查找指定名称的模板\r\n private getTemplateFromContent(\r\n templateName: string\r\n ): TemplateRef<any> | null {\r\n const customRenderColumns = this._columns.filter((col) => col.customRender);\r\n const templateIndex = customRenderColumns.findIndex(\r\n (col) => col.customRender === templateName\r\n );\r\n\r\n if (templateIndex >= 0) {\r\n // 获取所有模板,并过滤掉特殊模板(actionBar和ImgActionBar)\r\n // 这样可以避免因为特殊模板的位置导致索引计算错误\r\n const templates = this.allTemplates.toArray();\r\n const customTemplates = templates.filter(\r\n (tpl) => tpl !== this.actionBarTpl && tpl !== this.imgActionBarTpl\r\n );\r\n\r\n if (templateIndex < customTemplates.length) {\r\n const template = customTemplates[templateIndex];\r\n return template;\r\n }\r\n }\r\n\r\n console.warn(`未找到模板 ${templateName}`);\r\n return null;\r\n }\r\n\r\n // 根据名称查找label模板\r\n private findLabelTemplateByName(\r\n templateName: string,\r\n customLabelColumns: ProTableColumn[]\r\n ): TemplateRef<any> | null {\r\n const templateIndex = customLabelColumns.findIndex(\r\n (col) => col.customLabelRender === templateName\r\n );\r\n\r\n if (templateIndex >= 0) {\r\n // 获取所有模板,并过滤掉特殊模板(actionBar和ImgActionBar)\r\n const templates = this.allTemplates.toArray();\r\n const customTemplates = templates.filter(\r\n (tpl) => tpl !== this.actionBarTpl && tpl !== this.imgActionBarTpl\r\n );\r\n\r\n // 计算label模板的索引:需要跳过所有的customRender模板\r\n const customRenderColumns = this._columns.filter(\r\n (col) => col.customRender\r\n );\r\n const labelTemplateIndex = customRenderColumns.length + templateIndex;\r\n\r\n if (labelTemplateIndex < customTemplates.length) {\r\n const template = customTemplates[labelTemplateIndex];\r\n return template;\r\n }\r\n }\r\n\r\n console.warn(`未找到label模板 ${templateName}`);\r\n return null;\r\n }\r\n\r\n // 设置筛选表单默认属性\r\n private setSearchFormDefaultProp(columns: ProTableColumn[]) {\r\n columns.forEach((item) => {\r\n if (item.valueType) {\r\n if (item.fieldProps) {\r\n item.fieldProps = {\r\n ...PRO_TABLE_DEFAULT_PROPS[item.valueType],\r\n ...item.fieldProps,\r\n };\r\n } else {\r\n item.fieldProps = { ...PRO_TABLE_DEFAULT_PROPS[item.valueType] };\r\n }\r\n }\r\n });\r\n }\r\n\r\n // 动态设置Options\r\n private setSelectRequest(columns: ProTableColumn[]) {\r\n columns.map(async (item) => {\r\n if (item.fieldProps && hasIn(item.fieldProps, \"request\")) {\r\n try {\r\n const options = await (\r\n item.fieldProps as SelectFieldProps\r\n ).request?.();\r\n (item.fieldProps as SelectFieldProps).options = options;\r\n } catch (error) {\r\n (item.fieldProps as SelectFieldProps).options = [];\r\n }\r\n }\r\n });\r\n }\r\n\r\n private async setSearchParams(columns: ProTableColumn[]) {\r\n this._searchFiledColumns = [];\r\n columns\r\n .filter((item) => {\r\n const flag = !item.hideInSearch && item.valueType;\r\n if (flag) {\r\n this._searchFiledColumns.push(cloneDeep(item));\r\n }\r\n return flag;\r\n })\r\n .forEach((column) => {\r\n const key = column.fieldProps?.name || column.prop;\r\n let defaultValue = PRO_TABLE_DEFAULT_PROPS[column.valueType].value;\r\n\r\n // 对于checkbox类型,从options中找出checked为true的项作为默认值\r\n if (column.valueType === \"checkbox\") {\r\n const checkedValues = (column.fieldProps?.options || [])\r\n .filter((opt: OptionsType) => opt.checked)\r\n .map((opt: OptionsType) => opt.value);\r\n this._searchParams[key] =\r\n checkedValues.length > 0 ? checkedValues : defaultValue;\r\n } else {\r\n this._searchParams[key] = column.fieldProps?.value || defaultValue;\r\n }\r\n\r\n // 初始化 autoComplete 数据源\r\n if (column.valueType === \"autoComplete\") {\r\n this._autoCompleteDataSources[key] = [];\r\n }\r\n });\r\n\r\n // 根据列的 order 字段进行排序,未设置 order 的放在最后\r\n this._searchFiledColumns.sort((a: any, b: any) => {\r\n const aOrder = isNil(a?.order) ? Number.MAX_SAFE_INTEGER : a.order;\r\n const bOrder = isNil(b?.order) ? Number.MAX_SAFE_INTEGER : b.order;\r\n if (aOrder === bOrder) return 0;\r\n return aOrder - bOrder;\r\n });\r\n\r\n this.setSearchFormDefaultProp(this._searchFiledColumns);\r\n\r\n // 并发加载所有需要异步获取的选项\r\n this.setSelectRequest(this._searchFiledColumns);\r\n }\r\n\r\n private updateTableColumns(injectColumns: ProTableColumn[]) {\r\n // 1. 使用最原始的columns作为数据源,确保辅助列完全不受影响\r\n const originalColumns = cloneDeep(this.columns);\r\n\r\n // 2. 处理字段映射(如果提供了fields参数)\r\n let processedInjectColumns = injectColumns;\r\n\r\n // 3. 分离辅助列和非辅助列(使用原始数据)\r\n const nonAuxiliaryColumns = originalColumns.filter(\r\n (col) => !col.auxiliaryColumn\r\n );\r\n\r\n // 4. 按照injectColumns的顺序重新排列非辅助列\r\n const reorderedNonAuxiliaryColumns: ProTableColumn[] = [];\r\n const remainingNonAuxiliaryColumns = [...nonAuxiliaryColumns]; // 复制一份用于查找和移除\r\n\r\n processedInjectColumns.forEach((injectCol) => {\r\n // 查找非辅助列中对应的下标\r\n const existingColIndex = remainingNonAuxiliaryColumns.findIndex(\r\n (col) => col.prop === injectCol.prop\r\n );\r\n if (existingColIndex !== -1) {\r\n // 如果找到相同列,用injectColumns中的属性覆盖原始columns中的属性\r\n const existingCol = remainingNonAuxiliaryColumns[existingColIndex];\r\n\r\n const updatedCol = { ...existingCol, ...injectCol };\r\n reorderedNonAuxiliaryColumns.push(updatedCol);\r\n // 从剩余数组中移除,避免重复\r\n remainingNonAuxiliaryColumns.splice(existingColIndex, 1);\r\n } else {\r\n // 如果没找到对应的列,直接添加injectColumns中的列\r\n reorderedNonAuxiliaryColumns.push(injectCol);\r\n }\r\n });\r\n\r\n // 5. 处理剩余的原始columns中的非辅助列(在injectColumns中未出现的列)\r\n // 这些列应该被隐藏(设置hideInTable为true)\r\n remainingNonAuxiliaryColumns.forEach((remainingCol) => {\r\n const hiddenCol = { ...remainingCol, hideInTable: true };\r\n reorderedNonAuxiliaryColumns.push(hiddenCol);\r\n });\r\n\r\n // 6. 按照原始columns的顺序重新组合:保持辅助列的原始位置和属性\r\n const finalColumns: ProTableColumn[] = [];\r\n let nonAuxiliaryIndex = 0;\r\n let auxiliaryIndex = 0;\r\n\r\n originalColumns.forEach((originalCol) => {\r\n if (originalCol.auxiliaryColumn) {\r\n // 如果是辅助列,使用原始列数据,完全不进行任何修改\r\n finalColumns.push(originalCol);\r\n auxiliaryIndex++;\r\n } else {\r\n // 如果是非辅助列,使用重新排序后的列,但保留原始列的所有属性\r\n const reorderedCol = reorderedNonAuxiliaryColumns[nonAuxiliaryIndex];\r\n if (reorderedCol) {\r\n // 合并原始列和重新排序后的列,确保保留所有原始属性\r\n const mergedCol = { ...originalCol, ...reorderedCol };\r\n finalColumns.push(mergedCol);\r\n } else {\r\n // 如果重新排序后的列不存在,使用原始列\r\n finalColumns.push(originalCol);\r\n }\r\n nonAuxiliaryIndex++;\r\n }\r\n });\r\n this.formateInnerColumns(finalColumns);\r\n }\r\n\r\n // 通过 Proxy 监听 _searchParams 的属性变更\r\n private createSearchParamsProxy(target: any) {\r\n const self = this;\r\n const handler: ProxyHandler<any> = {\r\n set(obj: any, prop: string | symbol, value: any) {\r\n const key = String(prop);\r\n const oldVal = obj[key];\r\n if (oldVal === value) {\r\n obj[key] = value;\r\n return true;\r\n }\r\n obj[key] = value;\r\n try {\r\n self.onValuesChange.emit({\r\n key,\r\n value,\r\n params: self.getSearchParams(),\r\n });\r\n } catch (e) {}\r\n return true;\r\n },\r\n };\r\n return new Proxy(target, handler);\r\n }\r\n\r\n private clearEmptySearchParams() {\r\n const cloneSearchParams = cloneDeep(this._searchParams);\r\n return cloneSearchParams;\r\n }\r\n\r\n private buildServerSortPayload() {\r\n // 构建激活排序集合(按优先级从低到高,末尾优先)\r\n const activeKeys = this._sortPriority.filter((k) => !!this._sortMap[k]);\r\n if (activeKeys.length === 0) return null;\r\n const sorts = activeKeys.map((field) => {\r\n // 查找对应的列配置,优先使用sortName字段\r\n const column = this._columns.find((col) => col.prop === field);\r\n const sortField = column?.sortName || field;\r\n return {\r\n field: sortField,\r\n order: this._sortMap[field]!,\r\n };\r\n });\r\n if (this.multipleSort) {\r\n return sorts; // 以数组形式提交多列排序\r\n }\r\n const [first] = sorts;\r\n return first; // 兼容单列结构 { field, order }\r\n }\r\n\r\n private sortDataSourceInPlace() {\r\n if (!Array.isArray(this.dataSource) || this.dataSource.length === 0) return;\r\n const activeKeys = this._sortPriority.filter((k) => !!this._sortMap[k]);\r\n if (activeKeys.length === 0) return;\r\n\r\n // 复制一份优先级,从前到后优先级从低到高(最后设置的字段优先)\r\n const keysInPriority = [...activeKeys];\r\n this.dataSource.sort((a: any, b: any) => {\r\n for (let i = keysInPriority.length - 1; i >= 0; i--) {\r\n const field = keysInPriority[i];\r\n const order = this._sortMap[field]!;\r\n const av = a?.[field];\r\n const bv = b?.[field];\r\n const cmp = this.compareValues(av, bv);\r\n if (cmp !== 0) return order === \"ascend\" ? cmp : -cmp;\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n private compareValues(aVal: any, bVal: any): number {\r\n if (aVal == null && bVal == null) return 0;\r\n if (aVal == null) return -1;\r\n if (bVal == null) return 1;\r\n if (aVal instanceof Date && bVal instanceof Date) {\r\n return aVal.getTime() - bVal.getTime();\r\n }\r\n if (typeof aVal === \"boolean\" && typeof bVal === \"boolean\") {\r\n return aVal === bVal ? 0 : aVal ? 1 : -1;\r\n }\r\n if (typeof aVal === \"number\" && typeof bVal === \"number\") {\r\n return aVal - bVal;\r\n }\r\n if (typeof aVal === \"string\" && typeof bVal === \"string\") {\r\n return aVal.localeCompare(bVal);\r\n }\r\n const aNum = Number(aVal);\r\n const bNum = Number(bVal);\r\n if (!isNaN(aNum) && !isNaN(bNum)) return aNum - bNum;\r\n return String(aVal).localeCompare(String(bVal));\r\n }\r\n\r\n // 执行 autoComplete 数据源查询(实际执行逻辑)\r\n private executeAutoCompleteDataSource(event: Event, column: ProTableColumn) {\r\n const fieldKey = column.fieldProps?.name || column.prop;\r\n\r\n if (\r\n (column.fieldProps as AutoCompleteFieldProps).dataSource &&\r\n typeof (column.fieldProps as AutoCompleteFieldProps).dataSource ===\r\n \"function\"\r\n ) {\r\n try {\r\n const result = (column.fieldProps as AutoCompleteFieldProps).dataSource(\r\n event\r\n );\r\n // 如果返回的是 Promise,处理异步结果\r\n if (result instanceof Promise) {\r\n result\r\n .then((data) => {\r\n this._autoCompleteDataSources[fieldKey] = data || [];\r\n })\r\n .catch((error) => {\r\n console.error(\"AutoComplete dataSource error:\", error);\r\n this._autoCompleteDataSources[fieldKey] = [];\r\n });\r\n } else {\r\n // 同步返回结果\r\n this._autoCompleteDataSources[fieldKey] = result || [];\r\n }\r\n } catch (error) {\r\n console.error(\"AutoComplete dataSource error:\", error);\r\n this._autoCompleteDataSources[fieldKey] = [];\r\n }\r\n }\r\n }\r\n\r\n public getSearchParams(options?: {\r\n useSaved?: boolean; // 使用最近一次查询提交的参数,默认为 false;false 为当前表单值\r\n }): any {\r\n const { useSaved = false } = options || {};\r\n const rawParams = useSaved ? this._savedSearchParams : this._searchParams;\r\n const params = cloneDeep(rawParams || {});\r\n\r\n return {\r\n params,\r\n pageInfo: {\r\n pageIndex: this._pageInfo.pageIndex,\r\n pageSize: this._pageInfo.pageSize,\r\n },\r\n // 在线排序模式:把排序对象提交给接口\r\n ...(this.sortMode === \"server\"\r\n ? { sort: this.buildServerSortPayload() }\r\n : {}),\r\n };\r\n }\r\n\r\n public reload(afterDelete?: boolean) {\r\n this.handleQuery(afterDelete);\r\n }\r\n\r\n public setFieldsValue(fields: Record<string, any>) {\r\n Object.keys(fields).forEach((k) => {\r\n this._searchParams[k] = fields[k]; // 保留 Proxy,逐项赋值触发拦截\r\n });\r\n }\r\n\r\n public setFieldValue(key: string, value: any) {\r\n this._searchParams[key] = value;\r\n }\r\n\r\n public clearSelectedRow() {\r\n this._selectedTableRow = null;\r\n }\r\n\r\n public async setColumns(\r\n columns: ProTableColumn[],\r\n options?: {\r\n reload?: boolean; // 是否重新加载数据,默认为 false\r\n }\r\n ): Promise<void> {\r\n // 更新 columns 输入属性\r\n this.columns = cloneDeep(columns);\r\n\r\n // 重新格式化内部列\r\n this.formateInnerColumns(this.columns);\r\n\r\n // 重新设置搜索参数(异步操作)\r\n // 先清空旧的搜索参数,避免旧数据残留\r\n this._searchParams = {};\r\n await this.setSearchParams(this.columns);\r\n\r\n // 重新创建 Proxy,确保表单项值变化能正常触发事件\r\n this._searchParams = this.createSearchParamsProxy(this._searchParams);\r\n\r\n // 重新注册模板(如果组件已经初始化完成)\r\n if (this.allTemplates) {\r\n this.autoRegisterTemplates();\r\n }\r\n\r\n // 如果设置了 reload 选项为 true,则重新查询数据\r\n if (options?.reload === true) {\r\n this.handleQuery();\r\n }\r\n }\r\n\r\n public getSelectedRowData<T = any>(): T {\r\n return this._selectedTableRow;\r\n }\r\n\r\n public getCheckedRows<T = any>(): T[] {\r\n return this._selectedRows;\r\n }\r\n\r\n // 获取指定名称的模板\r\n getTemplate(name: string | undefined): TemplateRef<any> | null {\r\n if (!name) return null;\r\n try {\r\n // 首先从自定义模板中查找\r\n const customTemplate = this.customTemplates.get(name);\r\n if (customTemplate) {\r\n return customTemplate;\r\n }\r\n\r\n // 然后从通用模板映射中查找\r\n const template = this.templateMap.get(name);\r\n if (template) {\r\n return template;\r\n }\r\n return null;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n getToolTipTextValue(column: ProTableColumn, data: any): string {\r\n const key =\r\n column.customRender && this.getTemplate(column.customRender)\r\n ? \"\"\r\n : column.ellipsis\r\n ? column.prop\r\n : \"\";\r\n return !key ? \"\" : data[key];\r\n }\r\n\r\n getTableRowChecked(data: any) {\r\n // 启用复选框时:行高亮应与复选框选中状态一致(支持多选)\r\n if (this.showCheckbox) {\r\n return this.isRowChecked(data);\r\n }\r\n // 未启用复选框时:仍然使用单选行高亮\r\n if (!this._selectedTableRow) return false;\r\n return JSON.stringify(this._selectedTableRow) === JSON.stringify(data);\r\n }\r\n\r\n // 检查行是否被禁用\r\n isRowDisabled(data: any): boolean {\r\n if (!this.showCheckbox) return false;\r\n return this.rowDisabled ? this.rowDisabled(data) : false;\r\n }\r\n\r\n // 检查行是否被复选框选中\r\n isRowChecked(data: any): boolean {\r\n if (!this.showCheckbox) return false;\r\n return this._selectedRows.some(\r\n (row) => JSON.stringify(row) === JSON.stringify(data)\r\n );\r\n }\r\n\r\n // 切换行的选中状态\r\n toggleRowChecked(data: any, checked: boolean, event?: Event) {\r\n if (event) {\r\n event.stopPropagation(); // 阻止事件冒泡,避免触发行点击\r\n }\r\n // 如果行被禁用,不允许切换选中状态\r\n if (this.isRowDisabled(data)) {\r\n return;\r\n }\r\n const index = this._selectedRows.findIndex(\r\n (row) => JSON.stringify(row) === JSON.stringify(data)\r\n );\r\n if (checked) {\r\n // 选中\r\n if (index === -1) {\r\n this._selectedRows.push(data);\r\n }\r\n // 勾选复选框时同步设置高亮选中行\r\n this._selectedTableRow = data;\r\n } else {\r\n // 取消选中\r\n if (index > -1) {\r\n this._selectedRows.splice(index, 1);\r\n }\r\n // 若当前高亮行为该行,则取消高亮\r\n if (\r\n this._selectedTableRow &&\r\n JSON.stringify(this._selectedTableRow) === JSON.stringify(data)\r\n ) {\r\n this._selectedTableRow = null;\r\n }\r\n }\r\n this.updateCheckAllStatus();\r\n }\r\n\r\n // 更新全选状态\r\n updateCheckAllStatus() {\r\n if (!this.showCheckbox || !Array.isArray(this.dataSource)) {\r\n this._checkedAll = false;\r\n this._indeterminate = false;\r\n return;\r\n }\r\n // 只计算可用的行(未禁用的行)\r\n const availableRows = this.dataSource.filter(\r\n (row) => !this.isRowDisabled(row)\r\n );\r\n const checkedCount = this._selectedRows.length;\r\n const totalCount = availableRows.length;\r\n this._checkedAll =\r\n totalCount > 0 && checkedCount > 0 && checkedCount === totalCount;\r\n this._indeterminate = checkedCount > 0 && checkedCount < totalCount;\r\n }\r\n\r\n // 全选/取消全选\r\n toggleCheckAll(checked: boolean, event?: Event) {\r\n if (event) {\r\n event.stopPropagation();\r\n }\r\n if (checked) {\r\n // 全选:只选中未禁用的行\r\n this._selectedRows = this.dataSource.filter(\r\n (row) => !this.isRowDisabled(row)\r\n );\r\n // 同步设置高亮选中行为第一条可选数据\r\n const availableRows = this._selectedRows;\r\n this._selectedTableRow =\r\n availableRows.length > 0 ? availableRows[0] : null;\r\n } else {\r\n // 取消全选\r\n this._selectedRows = [];\r\n // 取消高亮\r\n this._selectedTableRow = null;\r\n }\r\n this.updateCheckAllStatus();\r\n }\r\n\r\n // 获取选中的行数据\r\n getSelectedRows(): any[] {\r\n return this._selectedRows;\r\n }\r\n\r\n // 清空选中的行\r\n clearSelectedRows() {\r\n this._selectedRows = [];\r\n this._checkedAll = false;\r\n this._indeterminate = false;\r\n this._selectedTableRow = null;\r\n }\r\n\r\n handleFieldCheckBoxChange(checkBoxOptions: OptionsType[], key: string) {\r\n this.setFieldsValue({\r\n [key]: checkBoxOptions\r\n .filter((item) => item.checked)\r\n .map((item) => item.value),\r\n });\r\n }\r\n\r\n handleSearch() {\r\n this._savedSearchParams = this.clearEmptySearchParams();\r\n this._pageInfo.pageIndex = 1;\r\n this.handleQuery();\r\n }\r\n\r\n handleResetForm() {\r\n Object.keys(this._searchParams).forEach((key) => {\r\n const targetColumn = this._searchFiledColumns.find((item) => {\r\n return (item.fieldProps?.name || item.prop) === key;\r\n });\r\n\r\n // 对于checkbox类型,需要特殊处理默认值\r\n if (targetColumn?.valueType === \"checkbox\") {\r\n // 从原始columns配置中获取初始配置,以确保使用正确的默认值\r\n const originalColumn = this.columns.find((item) => {\r\n return (item.fieldProps?.name || item.prop) === key;\r\n });\r\n\r\n // 从原始options中找出checked为true的项作为默认值\r\n const originalFieldProps = originalColumn?.fieldProps as\r\n | CheckboxFieldProps\r\n | undefined;\r\n const checkedValues = (originalFieldProps?.options || [])\r\n .filter((opt: OptionsType) => opt.checked)\r\n .map((opt: OptionsType) => opt.value);\r\n const defaultValue =\r\n checkedValues.length > 0\r\n ? checkedValues\r\n : PRO_TABLE_DEFAULT_PROPS[targetColumn.valueType].value;\r\n\r\n this._searchParams[key] = defaultValue;\r\n\r\n // 根据默认值恢复options的checked状态,使用原始options的结构\r\n const defaultValues = Array.isArray(defaultValue) ? defaultValue : [];\r\n const originalOptions = originalFieldProps?.options || [];\r\n const targetFieldProps = targetColumn.fieldProps as CheckboxFieldProps;\r\n targetFieldProps.options = originalOptions.map((item: OptionsType) => {\r\n return {\r\n ...item,\r\n checked: defaultValues.includes(item.value),\r\n };\r\n });\r\n } else {\r\n this._searchParams[key] = targetColumn?.fieldProps\r\n ? targetColumn?.fieldProps.value ||\r\n PRO_TABLE_DEFAULT_PROPS[targetColumn.valueType].value\r\n : PRO_TABLE_DEFAULT_PROPS[targetColumn.valueType].value;\r\n }\r\n });\r\n\r\n this._savedSearchParams = {};\r\n this._pageInfo.pageIndex = 1;\r\n this.onResetFormBeforeReload.emit();\r\n this.handleQuery();\r\n }\r\n\r\n handlePageIndexChange(pageIndex: number) {\r\n this._pageInfo.pageIndex = pageIndex;\r\n this.handleQuery();\r\n }\r\n\r\n handlePageSizeChange(pageSize: any) {\r\n this._pageInfo.pageSize = pageSize;\r\n this._pageInfo.pageIndex = 1;\r\n this.handleQuery();\r\n }\r\n\r\n async handleQuery(afterDelete?: boolean) {\r\n // 删除后刷新且当前页仅剩一条记录时,若不在第一页则先回退一页\r\n if (\r\n afterDelete &&\r\n Array.isArray(this.dataSource) &&\r\n this.dataSource.length === 1 &&\r\n this._pageInfo.pageIndex > 1\r\n ) {\r\n this._pageInfo.pageIndex = this._pageInfo.pageIndex - 1;\r\n }\r\n this._loading = true;\r\n if (this.request) {\r\n try {\r\n const result = await this.request({\r\n params: this.clearEmptySearchParams(),\r\n pageInfo: {\r\n pageIndex: this._pageInfo.pageIndex,\r\n pageSize: this._pageInfo.pageSize,\r\n },\r\n // 在线排序模式:把排序对象提交给接口\r\n ...(this.sortMode === \"server\"\r\n ? { sort: this.buildServerSortPayload() }\r\n : {}),\r\n });\r\n this.dataSource = result.data || [];\r\n this.summaryData = result.summaryData || null;\r\n // 本地排序模式:拿到数据后在前端排序\r\n if (this.sortMode === \"local\") {\r\n this.sortDataSourceInPlace();\r\n }\r\n this._pageInfo.total = result.total || 0;\r\n // 更新全选状态\r\n if (this.showCheckbox) {\r\n this.updateCheckAllStatus();\r\n }\r\n } catch (error) {\r\n console.error(\"查询失败:\", error);\r\n this.dataSource = [];\r\n this._pageInfo.total = 0;\r\n this.summaryData = null;\r\n } finally {\r\n this._loading = false;\r\n this._selectedTableRow = null;\r\n // 清空选中行(可选,根据业务需求决定是否保留跨页选中)\r\n // this.clearSelectedRows();\r\n }\r\n } else {\r\n console.warn(\"未提供 _request 回调函数\");\r\n this._loading = false;\r\n }\r\n this.clearSelectedRows();\r\n }\r\n\r\n // 触发列排序变更\r\n onSortChange(sortKey: string, sortOrder: \"ascend\" | \"descend\" | null) {\r\n // 单列排序:重置其它列;多列排序:保留其它列\r\n if (!this.multipleSort) {\r\n Object.keys(this._sortMap).forEach((key) => {\r\n if (key !== sortKey) this._sortMap[key] = null;\r\n });\r\n }\r\n this._sortMap[sortKey] = sortOrder;\r\n\r\n // 维护优先级队列:有序列且非空 -> 置于末尾;为空 -> 移除\r\n this._sortPriority = this._sortPriority.filter((k) => k !== sortKey);\r\n if (sortOrder) {\r\n this._sortPriority.push(sortKey);\r\n }\r\n\r\n if (this.sortMode === \"local\") {\r\n this.sortDataSourceInPlace();\r\n } else {\r\n // 在线排序:重新请求\r\n this.handleQuery();\r\n }\r\n }\r\n\r\n getSortOrder(sortKey: string): \"ascend\" | \"descend\" | null {\r\n return this._sortMap[sortKey] || null;\r\n }\r\n\r\n handleTableRowClick(data: any) {\r\n this._selectedTableRow = data;\r\n // 如果开启了复选框,点击行时只选中点击行(如果行未被禁用)\r\n if (this.showCheckbox && !this.isRowDisabled(data)) {\r\n // 先清空所有选中行\r\n this._selectedRows = [];\r\n // 只选中当前点击的行\r\n this.toggleRowChecked(data, true);\r\n }\r\n this.onRowClick.emit(this._selectedTableRow);\r\n }\r\n\r\n handleTableRowDbClick(data: any) {\r\n this._selectedTableRow = data;\r\n this.onRowDbClick.emit(this._selectedTableRow);\r\n }\r\n\r\n handleColumnsSettingConfirm() {\r\n this.queryDynamicColumns();\r\n }\r\n\r\n // 处理 autoComplete 输入事件(带防抖)\r\n handleAutoCompleteInput(event: Event, column: ProTableColumn) {\r\n const fieldKey = column.fieldProps?.name || column.prop;\r\n\r\n // 如果该字段还没有防抖函数,创建一个\r\n if (!this._autoCompleteDebounceMap.has(fieldKey)) {\r\n const debouncedFn = debounce((evt: Event) => {\r\n // 重新查找对应的 column,确保使用最新的配置\r\n const currentColumn = this._searchFiledColumns.find(\r\n (col) => (col.fieldProps?.name || col.prop) === fieldKey\r\n );\r\n if (currentColumn) {\r\n this.executeAutoCompleteDataSource(evt, currentColumn);\r\n }\r\n }, 300); // 300ms 防抖延迟\r\n this._autoCompleteDebounceMap.set(fieldKey, debouncedFn);\r\n }\r\n\r\n // 调用防抖函数\r\n const debouncedFn = this._autoCompleteDebounceMap.get(fieldKey);\r\n if (debouncedFn) {\r\n debouncedFn(event);\r\n }\r\n }\r\n\r\n // 获取 autoComplete 的数据源\r\n getAutoCompleteDataSource(column: ProTableColumn): any[] {\r\n const fieldKey = column.fieldProps?.name || column.prop;\r\n return this._autoCompleteDataSources[fieldKey] || [];\r\n }\r\n\r\n getFieldProps(column: ProTableColumn): any {\r\n return column.fieldProps;\r\n }\r\n\r\n // 获取指定名称的label模板\r\n getLabelTemplate(name: string | undefined): TemplateRef<any> | null {\r\n if (!name) return null;\r\n try {\r\n // 首先从自定义模板中查找\r\n const customTemplate = this.customTemplates.get(name);\r\n if (customTemplate) {\r\n return customTemplate;\r\n }\r\n\r\n // 然后从通用模板映射中查找\r\n const template = this.templateMap.get(name);\r\n if (template) {\r\n return template;\r\n }\r\n return null;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n // 获取 form-item 的动态类名\r\n getFormItemClassName(column: ProTableColumn): string {\r\n const fieldName = this.getFieldProps(column).name || column.prop;\r\n return `pro-table-${fieldName}-form-item`;\r\n }\r\n}\r\n","import { Component, ContentChild, Input, OnInit, TemplateRef } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"app-page-container\",\r\n templateUrl: \"./page-container.component.html\",\r\n styleUrls: [\"./page-container.component.less\"],\r\n})\r\nexport class PageContainerComponent implements OnInit {\r\n @Input() title: string = \"\";\r\n @ContentChild(\"header\") headerTpl!: TemplateRef<any>;\r\n @ContentChild(\"body\") bodyTpl!: TemplateRef<any>;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { NzCardModule } from \"ng-zorro-antd/card\";\r\nimport { PageContainerComponent } from \"./page-container.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n RouterModule,\r\n NzCardModule,\r\n ReactiveFormsModule,\r\n ],\r\n declarations: [PageContainerComponent],\r\n providers: [],\r\n exports: [PageContainerComponent],\r\n})\r\nexport class PageContainerModule {}\r\n","import { Component, OnInit, OnDestroy, forwardRef, ChangeDetectorRef, ElementRef, Inject, Optional } from \"@angular/core\";\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { PLATE_PREFIX_LOAD_SERVICE, PlatePrefixLoadService, PlatePrefixOption } from \"../tokens\";\r\n\r\n@Component({\r\n selector: \"app-plate-input\",\r\n templateUrl: \"./plate-input.component.html\",\r\n styleUrls: [\"./plate-input.component.less\"],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => PlateInputComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class PlateInputComponent implements OnInit, OnDestroy, ControlValueAccessor {\r\n nzPopoverVisible: boolean = false;\r\n platePrefix: string = \"\";\r\n plateSuffix: string = \"\";\r\n platePrefixOptions: Array<PlatePrefixOption> = [];\r\n disabled: boolean = false;\r\n private onChange = (value: string) => {};\r\n private onTouched = () => {};\r\n\r\n private clickOutsideHandler?: (event: MouseEvent) => void;\r\n\r\n constructor(\r\n private cdr: ChangeDetectorRef,\r\n private elementRef: ElementRef,\r\n @Optional() @Inject(PLATE_PREFIX_LOAD_SERVICE) private platePrefixLoadService?: PlatePrefixLoadService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (this.platePrefixLoadService) {\r\n // 使用注入的全局服务加载车牌前缀选项\r\n this.platePrefixLoadService\r\n .loadPrefixOptions()\r\n .then((data: Array<PlatePrefixOption>) => {\r\n this.platePrefixOptions = data;\r\n })\r\n .catch(() => {\r\n this.platePrefixOptions = [];\r\n });\r\n } else {\r\n // 如果没有注入服务,则保持空数组\r\n this.platePrefixOptions = [];\r\n }\r\n }\r\n\r\n handlePlatePrefix(value: string): void {\r\n this.platePrefix = value;\r\n this.emitValue();\r\n this.nzPopoverVisible = false;\r\n this.removeClickOutsideListener();\r\n }\r\n\r\n writeValue(value: string): void {\r\n if (value) {\r\n this.platePrefix = value.split(\"\")[0];\r\n this.plateSuffix = value\r\n .split(\"\")\r\n .filter((item, index) => index > 0)\r\n .join(\"\");\r\n } else {\r\n this.platePrefix = \"\";\r\n this.plateSuffix = \"\";\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n const previousDisabled = this.disabled;\r\n this.disabled = isDisabled;\r\n \r\n // 如果禁用状态改变,关闭 popover 并移除监听器\r\n if (previousDisabled !== isDisabled) {\r\n this.nzPopoverVisible = false;\r\n this.removeClickOutsideListener();\r\n // 强制变更检测\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n handlePrefixClick(event: Event): void {\r\n if (this.disabled) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.nzPopoverVisible = false;\r\n return;\r\n }\r\n // 手动切换 popover 的显示/隐藏状态\r\n this.nzPopoverVisible = !this.nzPopoverVisible;\r\n \r\n // 如果打开了 popover,添加文档点击监听器\r\n if (this.nzPopoverVisible) {\r\n setTimeout(() => {\r\n this.attachClickOutsideListener();\r\n }, 0);\r\n } else {\r\n this.removeClickOutsideListener();\r\n }\r\n \r\n event.stopPropagation(); // 阻止事件冒泡\r\n }\r\n\r\n private attachClickOutsideListener(): void {\r\n if (this.clickOutsideHandler) {\r\n return;\r\n }\r\n \r\n this.clickOutsideHandler = (event: MouseEvent) => {\r\n const nativeElement = this.elementRef.nativeElement;\r\n const target = event.target as HTMLElement;\r\n \r\n // 检查是否点击在 popover 内容区域内\r\n const popoverContent = document.querySelector('.plate-input-popover');\r\n const clickedInPopover = popoverContent && popoverContent.contains(target);\r\n \r\n // 检查是否点击在组件内部(前缀按钮)\r\n const clickedInComponent = nativeElement.contains(target);\r\n \r\n // 如果点击既不在组件内部,也不在 popover 内容区域,则关闭 popover\r\n if (!clickedInComponent && !clickedInPopover) {\r\n this.nzPopoverVisible = false;\r\n this.removeClickOutsideListener();\r\n this.cdr.detectChanges();\r\n }\r\n };\r\n \r\n // 使用捕获阶段,确保在其他事件处理之前执行\r\n document.addEventListener('click', this.clickOutsideHandler, true);\r\n }\r\n\r\n private removeClickOutsideListener(): void {\r\n if (this.clickOutsideHandler) {\r\n document.removeEventListener('click', this.clickOutsideHandler, true);\r\n this.clickOutsideHandler = undefined;\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeClickOutsideListener();\r\n }\r\n\r\n private emitValue(): void {\r\n const fullPlate = this.platePrefix + this.plateSuffix;\r\n this.onChange(fullPlate);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n\r\n handleAntdPlateSuffixBlur(event: any): void {\r\n if (this.disabled) return;\r\n const value = event.target.value.toUpperCase();\r\n this.plateSuffix = value;\r\n this.emitValue();\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NzGridModule } from \"ng-zorro-antd/grid\";\r\nimport { NzIconModule } from \"ng-zorro-antd/icon\";\r\nimport { NzInputModule } from \"ng-zorro-antd/input\";\r\nimport { NzPopoverModule } from \"ng-zorro-antd/popover\";\r\nimport { PlateInputComponent } from \"./plate-input.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NzGridModule,\r\n NzInputModule,\r\n NzPopoverModule,\r\n NzIconModule,\r\n ],\r\n declarations: [PlateInputComponent],\r\n providers: [],\r\n exports: [PlateInputComponent],\r\n})\r\nexport class PlateInputModule {}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnInit,\r\n TemplateRef\r\n} from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"app-table-search-bar\",\r\n templateUrl: \"./table-search-bar.component.html\",\r\n styleUrls: [\"./table-search-bar.component.less\"],\r\n})\r\nexport class TableSearchBarComponent implements OnInit, AfterViewInit {\r\n @Input() leftColSpan: number = 21;\r\n @Input() rightColSpan: number = 3;\r\n @Input() labelWidth: string = \"90px\";\r\n @Input() labelAlign: string = \"right\";\r\n @ContentChild(\"leftContent\") leftContentTpl!: TemplateRef<any>;\r\n @ContentChild(\"actionTextBtn\") actionTextBtnTpl!: TemplateRef<any>;\r\n @ContentChild(\"actionImgBtn\") actionImgBtnTpl!: TemplateRef<any>;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.setCSSVariablesToTarget();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setCSSVariablesToTarget();\r\n }\r\n\r\n private setCSSVariablesToTarget(): void {\r\n // setTimeout(() => {\r\n // const leftElement = document.querySelectorAll(\".table-search-bar-left\");\r\n // console.log('leftElement',leftElement);\r\n // if (leftElement.length > 0) {\r\n // leftElement.forEach((element) => {\r\n // (element as HTMLElement).style.setProperty(\r\n // \"--label-width\",\r\n // this.labelWidth\r\n // );\r\n // (element as HTMLElement).style.setProperty(\r\n // \"--label-align\",\r\n // this.labelAlign\r\n // );\r\n // });\r\n // }\r\n // });\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { NzGridModule } from \"ng-zorro-antd/grid\";\r\nimport { TableSearchBarComponent } from \"./table-search-bar.component\";\r\nimport { NzSpaceModule } from \"ng-zorro-antd/space\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n RouterModule,\r\n NzGridModule,\r\n ReactiveFormsModule,\r\n NzSpaceModule,\r\n ],\r\n declarations: [TableSearchBarComponent],\r\n providers: [],\r\n exports: [TableSearchBarComponent],\r\n})\r\nexport class TableSearchBarModule {}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport Sortable from \"sortablejs\";\r\nimport { ProTableColumn } from \"../../type\";\r\nimport { PRO_TABLE_COLUMN_REMOTE, ProTableRemoteColumnService } from \"../../tokens\";\r\nimport { Inject, Optional } from \"@angular/core\";\r\nimport { isObservable } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"app-colmuns-setting\",\r\n templateUrl: \"./colmuns-setting.component.html\",\r\n styleUrls: [\"./colmuns-setting.component.less\"],\r\n})\r\nexport class ColmunsSettingComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n @Input() columns: ProTableColumn[] = [];\r\n\r\n @Input() selectedColumns: ProTableColumn[] = [];\r\n\r\n @Input() tableName: string;\r\n\r\n @Output() afterConfirm = new EventEmitter<ProTableColumn[]>();\r\n\r\n @ViewChild(\"sortableContainer\", { static: false })\r\n sortableContainer!: ElementRef;\r\n\r\n modalVisible: boolean = false;\r\n\r\n options: Array<{ label: string; value: string; checked: boolean }> = [];\r\n\r\n private sortableInstance: Sortable | null = null;\r\n\r\n constructor(\r\n @Optional()\r\n @Inject(PRO_TABLE_COLUMN_REMOTE)\r\n private columnRemote: ProTableRemoteColumnService | null\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngAfterViewInit(): void {\r\n this.initSortable();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.sortableInstance) {\r\n this.sortableInstance.destroy();\r\n }\r\n }\r\n\r\n initSortable(): void {\r\n // 先销毁已存在的实例\r\n if (this.sortableInstance) {\r\n this.sortableInstance.destroy();\r\n this.sortableInstance = null;\r\n }\r\n\r\n if (this.sortableContainer && this.sortableContainer.nativeElement) {\r\n this.sortableInstance = new Sortable(\r\n this.sortableContainer.nativeElement,\r\n {\r\n animation: 150,\r\n ghostClass: \"sortable-ghost\",\r\n chosenClass: \"sortable-chosen\",\r\n dragClass: \"sortable-drag\",\r\n handle: \".sort-list-item\", // 指定拖拽句柄\r\n onEnd: (evt) => {\r\n this.onSortEnd(evt);\r\n },\r\n }\r\n );\r\n }\r\n }\r\n\r\n onSortEnd(evt: any): void {\r\n const { oldIndex, newIndex } = evt;\r\n if (oldIndex !== newIndex) {\r\n // 创建新的数组来避免直接修改输入属性\r\n const newSelectedColumns = [...this.selectedColumns];\r\n const movedItem = newSelectedColumns.splice(oldIndex, 1)[0];\r\n newSelectedColumns.splice(newIndex, 0, movedItem);\r\n\r\n // 更新 selectedColumns\r\n this.selectedColumns = newSelectedColumns;\r\n }\r\n }\r\n\r\n trackByColumn(index: number, item: ProTableColumn): string {\r\n return item.prop || index.toString();\r\n }\r\n\r\n /**\r\n * 同步 options 数组的 checked 状态与 selectedColumns\r\n */\r\n private syncOptionsWithSelectedColumns(): void {\r\n const selectedProps = this.selectedColumns.map((col) => col.prop);\r\n this.options.forEach((option) => {\r\n option.checked = selectedProps.includes(option.value);\r\n });\r\n }\r\n\r\n handleModalVisible() {\r\n this.options = this.columns\r\n .filter((item) => !item.auxiliaryColumn)\r\n .map((item) => {\r\n return {\r\n label: item.title,\r\n value: item.prop,\r\n checked: item.hideInTable ? false : true,\r\n sortName: item.sortName || null,\r\n };\r\n });\r\n\r\n // 同步 options 的 checked 状态与当前 selectedColumns\r\n this.syncOptionsWithSelectedColumns();\r\n\r\n this.modalVisible = true;\r\n\r\n // 模态框打开后重新初始化排序\r\n setTimeout(() => {\r\n this.initSortable();\r\n }, 100);\r\n }\r\n\r\n handleModalClose() {\r\n this.modalVisible = false;\r\n if (this.sortableInstance) {\r\n this.sortableInstance.destroy();\r\n this.sortableInstance = null;\r\n }\r\n }\r\n\r\n handleSelectRemove(key: string) {\r\n this.selectedColumns = this.selectedColumns.filter(\r\n (item) => item.prop !== key\r\n );\r\n\r\n // 使用同步方法确保所有状态一致\r\n this.syncOptionsWithSelectedColumns();\r\n }\r\n\r\n handleCheckBoxChange(value, record) {\r\n if (!value) {\r\n this.handleSelectRemove(record.value);\r\n } else {\r\n this.selectedColumns.push({\r\n title: record.label,\r\n prop: record.value,\r\n sortName: record.sortName,\r\n hideInTable: false,\r\n });\r\n // 添加项目后同步状态\r\n this.syncOptionsWithSelectedColumns();\r\n }\r\n }\r\n handleConfirm() {\r\n if (!this.columnRemote?.setCol || !this.tableName) {\r\n this.modalVisible = false;\r\n this.afterConfirm.emit();\r\n return;\r\n }\r\n const payload = this.selectedColumns.map((column) => {\r\n return {\r\n field: column.prop,\r\n isShow: column.hideInTable ? false : true,\r\n header: column.title,\r\n sortName: column.sortName || null,\r\n };\r\n });\r\n const result = this.columnRemote.setCol(this.tableName, payload);\r\n const done = (res) => {\r\n this.modalVisible = false;\r\n this.afterConfirm.emit();\r\n };\r\n if (result && isObservable(result)) {\r\n result.subscribe(done, () => done(null));\r\n } else {\r\n Promise.resolve(result).finally(() => done(null));\r\n }\r\n }\r\n}\r\n","import { Component, ComponentFactoryResolver, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, Type, ViewChild, ViewContainerRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-dynamic-search-field',\r\n template: `<ng-template #vc></ng-template>`\r\n})\r\nexport class DynamicSearchFieldComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() component: Type<any> | null = null;\r\n @Input() value: any;\r\n @Input() props: { [key: string]: any } | null = null;\r\n @Output() valueChange = new EventEmitter<any>();\r\n\r\n @ViewChild('vc', { read: ViewContainerRef, static: true }) vc!: ViewContainerRef;\r\n\r\n private cmpRef: any = null;\r\n private isCva = false;\r\n private cvaOnChange: ((val: any) => void) | null = null;\r\n\r\n constructor(private cfr: ComponentFactoryResolver) {}\r\n\r\n ngOnInit(): void {\r\n this.render();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.component && !changes.component.firstChange) {\r\n this.destroy();\r\n this.render();\r\n return;\r\n }\r\n if (this.cmpRef) {\r\n if (changes.value && !changes.value.firstChange) {\r\n if (this.isCva) {\r\n if (typeof this.cmpRef.instance.writeValue === 'function') {\r\n this.cmpRef.instance.writeValue(this.value);\r\n }\r\n } else if ('value' in this.cmpRef.instance) {\r\n this.cmpRef.instance.value = this.value;\r\n }\r\n }\r\n if (changes.props && !changes.props.firstChange) {\r\n this.applyProps();\r\n }\r\n }\r\n }\r\n\r\n private render() {\r\n if (!this.component) return;\r\n const factory = this.cfr.resolveComponentFactory(this.component);\r\n this.vc.clear();\r\n this.cmpRef = this.vc.createComponent(factory);\r\n\r\n this.isCva = typeof this.cmpRef.instance.registerOnChange === 'function' && typeof this.cmpRef.instance.writeValue === 'function';\r\n\r\n if (this.isCva) {\r\n this.cmpRef.instance.writeValue(this.value);\r\n this.cmpRef.instance.registerOnChange((v: any) => {\r\n this.valueChange.emit(v);\r\n });\r\n } else {\r\n if ('value' in this.cmpRef.instance) {\r\n this.cmpRef.instance.value = this.value;\r\n }\r\n if ('valueChange' in this.cmpRef.instance && this.cmpRef.instance.valueChange && typeof this.cmpRef.instance.valueChange.subscribe === 'function') {\r\n this.cmpRef.instance.valueChange.subscribe((v: any) => {\r\n this.valueChange.emit(v);\r\n });\r\n }\r\n }\r\n\r\n this.applyProps();\r\n }\r\n\r\n private applyProps() {\r\n const p = this.props || {};\r\n const extra = p.componentProps || {};\r\n Object.keys(extra).forEach((k) => {\r\n try {\r\n this.cmpRef.instance[k] = extra[k];\r\n } catch {}\r\n });\r\n }\r\n\r\n private destroy() {\r\n if (this.cmpRef) {\r\n try { this.cmpRef.destroy(); } catch {}\r\n this.cmpRef = null;\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\r\n }\r\n}\r\n","import { DragDropModule } from \"@angular/cdk/drag-drop\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { NzButtonModule } from \"ng-zorro-antd/button\";\r\nimport { NzCheckboxModule } from \"ng-zorro-antd/checkbox\";\r\nimport { NzDatePickerModule } from \"ng-zorro-antd/date-picker\";\r\nimport { NzFormModule } from \"ng-zorro-antd/form\";\r\nimport { NzGridModule } from \"ng-zorro-antd/grid\";\r\nimport { NzIconModule } from \"ng-zorro-antd/icon\";\r\nimport { NzInputModule } from \"ng-zorro-antd/input\";\r\nimport { NzModalModule } from \"ng-zorro-antd/modal\";\r\nimport { NzPopoverModule } from \"ng-zorro-antd/popover\";\r\nimport { NzSelectModule } from \"ng-zorro-antd/select\";\r\nimport { NzSpaceModule } from \"ng-zorro-antd/space\";\r\nimport { NzTableModule } from \"ng-zorro-antd/table\";\r\nimport { NzTypographyModule } from \"ng-zorro-antd/typography\";\r\nimport { PageContainerModule } from \"./page-container/page-container.module\";\r\nimport { PlateInputModule } from \"./plate-input/plate-input.module\";\r\nimport { TableSearchBarModule } from \"./table-search-bar/table-search-bar-module\";\r\nimport { ColmunsSettingComponent } from \"./components/colmuns-setting/colmuns-setting.component\";\r\nimport { ProTableComponent } from \"./pro-table.component\";\r\nimport { DynamicSearchFieldComponent } from \"./components/dynamic-search-field/dynamic-search-field.component\";\r\nimport { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';\r\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\r\nimport { NzToolTipModule } from \"ng-zorro-antd/tooltip\";\r\nimport { PRO_TABLE_COLUMN_REMOTE } from \"./tokens\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n RouterModule,\r\n NzFormModule,\r\n NzSelectModule,\r\n NzSpaceModule,\r\n NzGridModule,\r\n NzInputModule,\r\n ReactiveFormsModule,\r\n NzPopoverModule,\r\n NzIconModule,\r\n NzButtonModule,\r\n PageContainerModule,\r\n TableSearchBarModule,\r\n NzTableModule,\r\n PlateInputModule,\r\n NzDatePickerModule,\r\n NzModalModule,\r\n NzCheckboxModule,\r\n NzTypographyModule,\r\n DragDropModule,\r\n NzCheckboxModule,\r\n NzAutocompleteModule,\r\n NzInputNumberModule,\r\n NzToolTipModule,\r\n ],\r\n declarations: [ProTableComponent, ColmunsSettingComponent, DynamicSearchFieldComponent],\r\n providers: [\r\n {\r\n // 默认不提供远程列服务,宿主可覆盖注入\r\n provide: PRO_TABLE_COLUMN_REMOTE,\r\n useValue: null,\r\n },\r\n ],\r\n exports: [ProTableComponent],\r\n})\r\nexport class ProTableModule {}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { PlatePrefixLoadService, PlatePrefixOption } from \"../tokens\";\r\n\r\n/**\r\n * 默认的车牌前缀加载服务实现\r\n * 使用 HttpClient 调用 API 获取车牌前缀选项\r\n */\r\n@Injectable()\r\nexport class DefaultPlatePrefixLoadService implements PlatePrefixLoadService {\r\n private readonly defaultApiUrl = \"/PlateFirstWord/GetPlateFirstWord\";\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n loadPrefixOptions(): Promise<PlatePrefixOption[]> {\r\n return this.http\r\n .post<string[]>(this.defaultApiUrl, { dictCode: \"PlateFirstWord\" })\r\n .toPromise()\r\n .then((list: string[]) => {\r\n const options: PlatePrefixOption[] = [];\r\n // 添加空选项(与旧版保持一致)\r\n options.push({ label: \"\", value: \"\" });\r\n // 转换数据格式\r\n for (let i = 0; i < list.length; i++) {\r\n options.push({\r\n label: list[i],\r\n value: list[i],\r\n });\r\n }\r\n return options;\r\n })\r\n .catch(() => {\r\n // 发生错误时返回空数组\r\n return [];\r\n });\r\n }\r\n}\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport {\r\n AbstractControl,\r\n AbstractControlOptions,\r\n FormBuilder,\r\n FormGroup,\r\n ValidatorFn,\r\n} from \"@angular/forms\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { debounceTime, distinctUntilChanged } from \"rxjs/operators\";\r\n\r\n// ==================== 类型定义 ====================\r\n\r\n// 字段错误消息类型(字符串或函数)\r\nexport type FieldErrorMessage =\r\n | string\r\n | ((context: { control: AbstractControl; controlName: string }) => string);\r\n\r\n// 字段错误消息集合\r\nexport type FieldErrorMessages = Record<string, FieldErrorMessage>;\r\n\r\n// 字段配置\r\nexport type FieldConfig = {\r\n value: any;\r\n disabled?: boolean;\r\n validators?: () => ValidatorFn[];\r\n errorMessages?: FieldErrorMessages;\r\n};\r\n\r\n// 表单修改类型\r\nexport type FormModifyType = \"create\" | \"update\";\r\n\r\n// 表单配置\r\nexport type FormConfig = Record<string, FieldConfig>;\r\n\r\n// 监听选项\r\nexport type WatchOptions = {\r\n debounce?: number;\r\n distinctUntilChanged?: boolean;\r\n emitInitial?: boolean;\r\n};\r\n\r\n// 批量添加字段配置选项\r\nexport type AddFieldsConfigOptions = {\r\n emitEvent?: boolean;\r\n updateValueAndValidity?: boolean;\r\n onFieldAdded?: (fieldName: string, success: boolean, error?: string) => void; // 每个字段添加的回调\r\n};\r\n\r\n// 批量添加字段配置结果\r\nexport type AddFieldsConfigResult = {\r\n success: boolean;\r\n added: string[]; // 成功添加的字段名列表\r\n failed: Array<{ fieldName: string; error: string }>; // 失败的字段及错误信息\r\n};\r\n\r\n// 批量删除字段配置选项\r\nexport type RemoveFieldsConfigOptions = {\r\n emitEvent?: boolean;\r\n onFieldRemoved?: (fieldName: string, success: boolean, error?: string) => void; // 每个字段删除的回调\r\n};\r\n\r\n// 批量删除字段配置结果\r\nexport type RemoveFieldsConfigResult = {\r\n success: boolean;\r\n removed: string[]; // 成功删除的字段名列表\r\n failed: Array<{ fieldName: string; error: string }>; // 失败的字段及错误信息\r\n};\r\n\r\n// ==================== 服务类 ====================\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AntdFormService {\r\n // ==================== 公共属性 ====================\r\n formStore: Record<string, FormGroup> = {};\r\n formModifyType: FormModifyType = \"create\";\r\n\r\n // ==================== 私有属性 ====================\r\n private labelWidth: string = \"120px\";\r\n private labelAlign: string = \"right\";\r\n private labelObservers: Record<string, MutationObserver> = {};\r\n private errorMessageStore: Record<\r\n string,\r\n Record<string, FieldErrorMessages>\r\n > = {};\r\n private classPrefix = \"ant-form-\";\r\n private readonly defaultErrorMessages: FieldErrorMessages = {\r\n required: \"该字段为必填项\",\r\n minlength: \"输入长度不足\",\r\n maxlength: \"输入长度超限\",\r\n email: \"请输入合法的邮箱地址\",\r\n pattern: \"输入格式不正确\",\r\n };\r\n\r\n // ==================== 构造函数 ====================\r\n constructor(private fb: FormBuilder) {}\r\n\r\n // ==================== 表单创建和初始化 ====================\r\n\r\n // 初始化表单\r\n createFormGroup(\r\n name: string,\r\n config: FormConfig,\r\n options?: { labelWidth?: string; labelAlign?: string }\r\n ): FormGroup {\r\n const groupConfig: Record<string, any> = {};\r\n this.errorMessageStore[name] = {};\r\n\r\n Object.entries(config).forEach(([key, fieldConfig]) => {\r\n groupConfig[key] = [\r\n { value: fieldConfig.value, disabled: fieldConfig.disabled ?? false },\r\n fieldConfig.validators?.() ?? [],\r\n ];\r\n if (fieldConfig.errorMessages) {\r\n this.errorMessageStore[name][key] = fieldConfig.errorMessages;\r\n }\r\n });\r\n\r\n if (options?.labelWidth) {\r\n this.labelWidth = options.labelWidth;\r\n }\r\n if (options?.labelAlign) {\r\n this.labelAlign = options.labelAlign;\r\n }\r\n this.formStore[name] = this.fb.group(groupConfig);\r\n this.setCSSVariablesToTarget(name);\r\n return this.formStore[name];\r\n }\r\n\r\n // ==================== 表单操作 ====================\r\n\r\n // 重置表单\r\n resetFormGroup(name: string, value?: any): void {\r\n this.formStore[name]?.reset(value);\r\n }\r\n\r\n // 批量添加字段配置\r\n addFieldsConfig(\r\n formName: string,\r\n fieldsConfig: FormConfig,\r\n options?: AddFieldsConfigOptions\r\n ): AddFieldsConfigResult {\r\n const result: AddFieldsConfigResult = {\r\n success: true,\r\n added: [],\r\n failed: [],\r\n };\r\n\r\n // 1. 验证表单是否存在\r\n const formGroup = this.formStore[formName];\r\n if (!formGroup) {\r\n // 如果表单不存在,所有字段都失败\r\n Object.keys(fieldsConfig).forEach((fieldName) => {\r\n const error = `Form \"${formName}\" not found`;\r\n result.failed.push({\r\n fieldName,\r\n error,\r\n });\r\n options?.onFieldAdded?.(fieldName, false, error);\r\n });\r\n result.success = false;\r\n return result;\r\n }\r\n\r\n // 2. 初始化 errorMessageStore(如果不存在)\r\n if (!this.errorMessageStore[formName]) {\r\n this.errorMessageStore[formName] = {};\r\n }\r\n\r\n // 3. 批量构建控件配置\r\n const controlsToAdd: Record<string, AbstractControl> = {};\r\n const errorMessagesToAdd: Record<string, FieldErrorMessages> = {};\r\n\r\n // 4. 遍历所有字段配置,进行验证和构建\r\n Object.entries(fieldsConfig).forEach(([fieldName, fieldConfig]) => {\r\n try {\r\n // 4.1 检查字段是否已存在\r\n if (formGroup.get(fieldName)) {\r\n const error = `Field \"${fieldName}\" already exists`;\r\n result.failed.push({\r\n fieldName,\r\n error,\r\n });\r\n options?.onFieldAdded?.(fieldName, false, error);\r\n return;\r\n }\r\n\r\n // 4.2 创建控件\r\n const controlOptions: AbstractControlOptions = {\r\n validators: fieldConfig.validators?.() ?? [],\r\n };\r\n const control = this.fb.control(\r\n fieldConfig.value,\r\n controlOptions\r\n );\r\n // 设置 disabled 状态\r\n if (fieldConfig.disabled) {\r\n control.disable();\r\n }\r\n controlsToAdd[fieldName] = control;\r\n\r\n // 存储错误消息\r\n if (fieldConfig.errorMessages) {\r\n errorMessagesToAdd[fieldName] = fieldConfig.errorMessages;\r\n }\r\n\r\n result.added.push(fieldName);\r\n options?.onFieldAdded?.(fieldName, true);\r\n } catch (error: any) {\r\n const errorMessage =\r\n error?.message || error?.toString() || \"Unknown error\";\r\n result.failed.push({\r\n fieldName,\r\n error: errorMessage,\r\n });\r\n options?.onFieldAdded?.(fieldName, false, errorMessage);\r\n }\r\n });\r\n\r\n // 5. 批量添加到 FormGroup\r\n if (Object.keys(controlsToAdd).length > 0) {\r\n Object.entries(controlsToAdd).forEach(([fieldName, control]) => {\r\n formGroup.addControl(fieldName, control);\r\n });\r\n\r\n // 6. 批量存储错误消息\r\n Object.entries(errorMessagesToAdd).forEach(([key, messages]) => {\r\n this.errorMessageStore[formName][key] = messages;\r\n });\r\n\r\n // 7. 更新表单验证状态\r\n if (options?.updateValueAndValidity) {\r\n formGroup.updateValueAndValidity({\r\n emitEvent: options?.emitEvent ?? true,\r\n });\r\n }\r\n }\r\n\r\n // 9. 判断整体是否成功\r\n result.success = result.failed.length === 0;\r\n\r\n return result;\r\n }\r\n\r\n // 批量删除字段配置\r\n removeFieldsConfig(\r\n formName: string,\r\n fieldNames: string[],\r\n options?: RemoveFieldsConfigOptions\r\n ): RemoveFieldsConfigResult {\r\n const result: RemoveFieldsConfigResult = {\r\n success: true,\r\n removed: [],\r\n failed: [],\r\n };\r\n\r\n // 1. 验证表单是否存在\r\n const formGroup = this.formStore[formName];\r\n if (!formGroup) {\r\n fieldNames.forEach((fieldName) => {\r\n const error = `Form \"${formName}\" not found`;\r\n result.failed.push({\r\n fieldName,\r\n error,\r\n });\r\n options?.onFieldRemoved?.(fieldName, false, error);\r\n });\r\n result.success = false;\r\n return result;\r\n }\r\n\r\n // 2. 批量收集需要清理的信息\r\n const fieldsToRemove: string[] = [];\r\n const errorMessageKeysToRemove: string[] = [];\r\n\r\n // 3. 验证每个字段并收集信息\r\n fieldNames.forEach((fieldName) => {\r\n const control = formGroup.get(fieldName);\r\n\r\n if (!control) {\r\n const error = `Field \"${fieldName}\" not found`;\r\n result.failed.push({\r\n fieldName,\r\n error,\r\n });\r\n options?.onFieldRemoved?.(fieldName, false, error);\r\n return;\r\n }\r\n\r\n // 收集错误消息键\r\n errorMessageKeysToRemove.push(fieldName);\r\n fieldsToRemove.push(fieldName);\r\n });\r\n\r\n // 4. 批量执行删除操作\r\n try {\r\n // 4.1 从 FormGroup 中移除控件\r\n fieldsToRemove.forEach((fieldName) => {\r\n formGroup.removeControl(fieldName);\r\n result.removed.push(fieldName);\r\n options?.onFieldRemoved?.(fieldName, true);\r\n });\r\n\r\n // 4.2 批量删除错误消息\r\n if (this.errorMessageStore[formName]) {\r\n errorMessageKeysToRemove.forEach((key) => {\r\n delete this.errorMessageStore[formName][key];\r\n });\r\n }\r\n } catch (error: any) {\r\n // 如果批量删除过程中出错,标记为失败\r\n fieldsToRemove.forEach((fieldName) => {\r\n if (!result.removed.includes(fieldName)) {\r\n const errorMessage =\r\n error?.message || error?.toString() || \"Failed to remove field\";\r\n result.failed.push({\r\n fieldName,\r\n error: errorMessage,\r\n });\r\n options?.onFieldRemoved?.(fieldName, false, errorMessage);\r\n }\r\n });\r\n }\r\n\r\n // 5. 判断整体是否成功\r\n result.success = result.failed.length === 0;\r\n\r\n return result;\r\n }\r\n\r\n // 局部赋值\r\n patchFormValues(\r\n name: string,\r\n values: Record<string, any>,\r\n options?: { emitEvent?: boolean }\r\n ): void {\r\n const formGroup = this.formStore[name];\r\n if (!formGroup) {\r\n console.warn(\r\n `[AntdFormService] patchFormValues: form \"${name}\" not found.`\r\n );\r\n return;\r\n }\r\n\r\n formGroup.patchValue(values, {\r\n emitEvent: options?.emitEvent ?? true,\r\n });\r\n }\r\n\r\n // 表单校验(自动过滤内部字段)\r\n validateForm(\r\n name: string,\r\n options?: { emitEvent?: boolean; onlySelf?: boolean }\r\n ): boolean | Record<string, any> {\r\n if (this.formStore[name].valid) {\r\n const rawValue = this.formStore[name].getRawValue();\r\n return this.excludeInternalFields(rawValue);\r\n } else {\r\n // 递归校验所有控件\r\n this.markAllControlsAsDirty(\r\n this.formStore[name],\r\n options?.emitEvent ?? true,\r\n options?.onlySelf ?? false\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n // 递归标记所有无效控件为 dirty\r\n private markAllControlsAsDirty(\r\n control: AbstractControl,\r\n emitEvent: boolean,\r\n onlySelf: boolean\r\n ): void {\r\n if (control.invalid) {\r\n control.markAsDirty();\r\n control.updateValueAndValidity({\r\n emitEvent,\r\n onlySelf,\r\n });\r\n }\r\n\r\n // 如果是 FormGroup,递归处理所有子控件\r\n if (control instanceof FormGroup) {\r\n Object.values(control.controls).forEach((childControl) => {\r\n this.markAllControlsAsDirty(childControl, emitEvent, onlySelf);\r\n });\r\n }\r\n }\r\n\r\n // ==================== 错误消息相关 ====================\r\n\r\n // 获取字段首条错误提示\r\n getFieldErrorMessage(name: string, controlName: string): string {\r\n const formGroup = this.formStore[name];\r\n if (!formGroup) {\r\n console.warn(\r\n `[AntdFormService] getFieldErrorMessage: form \"${name}\" not found.`\r\n );\r\n return \"\";\r\n }\r\n const control = formGroup.get(controlName);\r\n if (!control) {\r\n console.warn(\r\n `[AntdFormService] getFieldErrorMessage: control \"${controlName}\" not found in form \"${name}\".`\r\n );\r\n return \"\";\r\n }\r\n if (!control.errors) {\r\n return \"\";\r\n }\r\n\r\n // 从 errorMessageStore 获取错误消息配置\r\n const errorMessages = this.errorMessageStore[name]?.[controlName];\r\n const mergedMessages = {\r\n ...this.defaultErrorMessages,\r\n ...(errorMessages ?? {}),\r\n };\r\n\r\n for (const errorKey of Object.keys(control.errors)) {\r\n const message = mergedMessages[errorKey];\r\n if (message) {\r\n // 不再支持函数形式,只返回字符串\r\n return typeof message === \"string\" ? message : \"\";\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n // ==================== 监听相关 ====================\r\n\r\n // 监听表单所有字段变更\r\n watchFormChanges<T = any>(\r\n name: string,\r\n handler: (value: T) => void,\r\n options?: WatchOptions\r\n ): Subscription | undefined {\r\n const formGroup = this.formStore[name];\r\n if (!formGroup) {\r\n console.warn(\r\n `[AntdFormService] watchFormChanges: form \"${name}\" not found.`\r\n );\r\n return undefined;\r\n }\r\n\r\n return this.setupValueChangeSubscription(formGroup, handler, options);\r\n }\r\n\r\n // 监听指定字段变更\r\n watchFieldChanges<T = any>(\r\n name: string,\r\n controlName: string,\r\n handler: (value: T) => void,\r\n options?: WatchOptions\r\n ): Subscription | undefined {\r\n const formGroup = this.formStore[name];\r\n if (!formGroup) {\r\n console.warn(\r\n `[AntdFormService] watchFieldChanges: form \"${name}\" not found.`\r\n );\r\n return undefined;\r\n }\r\n\r\n const control = formGroup.get(controlName);\r\n if (!control) {\r\n console.warn(\r\n `[AntdFormService] watchFieldChanges: control \"${controlName}\" not found in form \"${name}\".`\r\n );\r\n return undefined;\r\n }\r\n\r\n return this.setupValueChangeSubscription(control, handler, options);\r\n }\r\n\r\n // ==================== 工具方法 ====================\r\n\r\n // 获取表单类名\r\n getFormClassName(name: string): string {\r\n return `${this.classPrefix}${name}`;\r\n }\r\n\r\n // 设置 CSS 变量到目标元素(支持持久化监听动态添加的元素)\r\n setCSSVariablesToTarget(name: string): void {\r\n const selector = `.${this.getFormClassName(name)} .ant-form-item-label`;\r\n const formContainerSelector = `.${this.getFormClassName(name)}`;\r\n const applyStyles = (): boolean => {\r\n const dom = document.querySelectorAll(selector);\r\n if (!dom.length) {\r\n return false;\r\n }\r\n let appliedCount = 0;\r\n dom.forEach((item) => {\r\n const target = item as HTMLElement;\r\n if (\r\n target.style.width !== this.labelWidth ||\r\n target.style.textAlign !== this.labelAlign\r\n ) {\r\n target.style.width = this.labelWidth;\r\n target.style.textAlign = this.labelAlign;\r\n appliedCount++;\r\n }\r\n });\r\n return appliedCount > 0;\r\n };\r\n if (this.labelObservers[name]) {\r\n return;\r\n }\r\n let timeout: any = null;\r\n const observer = new MutationObserver(() => {\r\n cancelAnimationFrame(timeout);\r\n timeout = requestAnimationFrame(() => {\r\n setTimeout(() => {\r\n applyStyles();\r\n }, 0);\r\n });\r\n });\r\n const formContainer = document.querySelector(formContainerSelector);\r\n observer.observe(formContainer || document.body, {\r\n childList: true,\r\n subtree: true,\r\n attributes: true,\r\n });\r\n this.labelObservers[name] = observer;\r\n }\r\n\r\n // ==================== 私有方法 ====================\r\n\r\n // 过滤内部字段(递归处理对象和数组)\r\n private excludeInternalFields(value: any): any {\r\n if (value === null || value === undefined) {\r\n return value;\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.map((item) => this.excludeInternalFields(item));\r\n }\r\n\r\n if (typeof value !== \"object\") {\r\n return value;\r\n }\r\n\r\n const filtered: any = {};\r\n Object.entries(value).forEach(([key, val]) => {\r\n // 过滤以 __ 开头的内部字段\r\n if (!key.startsWith(\"__\")) {\r\n filtered[key] = this.excludeInternalFields(val);\r\n }\r\n });\r\n return filtered;\r\n }\r\n\r\n // 设置值变更订阅\r\n private setupValueChangeSubscription<T>(\r\n target: { valueChanges: any; value: any },\r\n handler: (value: T) => void,\r\n options?: WatchOptions\r\n ): Subscription {\r\n let valueChanges$ = target.valueChanges;\r\n\r\n if (options?.debounce != null) {\r\n valueChanges$ = valueChanges$.pipe(debounceTime(options.debounce));\r\n }\r\n\r\n if (options?.distinctUntilChanged !== false) {\r\n valueChanges$ = valueChanges$.pipe(distinctUntilChanged());\r\n }\r\n\r\n if (options?.emitInitial) {\r\n handler(target.value);\r\n }\r\n\r\n return valueChanges$.subscribe(handler);\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\n\r\n/**\r\n * 字段校验结果类型\r\n */\r\nexport type ValidationResult = string;\r\n\r\n/**\r\n * 字段校验方法类型\r\n */\r\nexport type FieldValidator = (\r\n value: any,\r\n row: ArrayFormRow,\r\n fieldName: string\r\n) => ValidationResult;\r\n\r\n/**\r\n * 字段配置接口\r\n */\r\nexport interface FieldConfig {\r\n name: string;\r\n validator?: FieldValidator;\r\n}\r\n\r\n/**\r\n * 数组表单行数据接口\r\n */\r\nexport interface ArrayFormRow {\r\n uid: string;\r\n isEdit: boolean;\r\n isAdd?: boolean;\r\n [key: string]: any;\r\n}\r\n\r\n/**\r\n * 数组表单配置接口\r\n */\r\nexport interface ArrayFormConfig {\r\n fields: FieldConfig[];\r\n defaultValues?: Record<string, any>;\r\n // 自动更新目标对象和属性名,用于触发 Angular 变化检测\r\n targetObject?: Record<string, any>;\r\n arrayPropertyName?: string;\r\n}\r\n\r\n/**\r\n * 表单存储项接口\r\n */\r\nexport interface ArrayFormStoreItem {\r\n data: ArrayFormRow[];\r\n config: ArrayFormConfig;\r\n validationResults?: Record<string, Record<string, ValidationResult>>;\r\n}\r\n\r\n/**\r\n * 表单存储接口\r\n */\r\nexport interface ArrayFormStore {\r\n [formName: string]: ArrayFormStoreItem;\r\n}\r\n\r\n/**\r\n * 数组型数据收集基础服务\r\n *\r\n * 功能:\r\n * 1. 支持通过 ngModel 绑定对应行的数据源\r\n * 2. 自动为数组数据添加 isEdit 和 uid 字段\r\n * 3. 支持每个字段的自定义校验方法,返回 'success' | 'warning' | 'error'\r\n * 4. 提供公共方法支持删除、新增、编辑等操作\r\n */\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class ArrayFormService {\r\n private formStore: ArrayFormStore = {};\r\n\r\n constructor() {}\r\n\r\n /**\r\n * 初始化数组数据\r\n * 为现有数据添加 uid 和 isEdit 字段\r\n *\r\n * @param data 原始数据数组\r\n * @param config 表单配置\r\n * @returns 初始化后的数据数组\r\n */\r\n private initializeData(data: any[]): ArrayFormRow[] {\r\n return data.map((item) => this.enrichRow(item));\r\n }\r\n\r\n /**\r\n * 为单行数据添加 uid 和 isEdit 字段\r\n *\r\n * @param row 原始行数据\r\n * @returns 增强后的行数据\r\n */\r\n private enrichRow(row: any): ArrayFormRow {\r\n return {\r\n ...row,\r\n uid: row.uid || uuidv4(),\r\n isEdit: row.isEdit !== undefined ? row.isEdit : false,\r\n };\r\n }\r\n\r\n /**\r\n * 新增一行数据\r\n *\r\n * @param data 数据数组引用\r\n * @param defaultValues 默认值\r\n * @returns 新增的行数据\r\n */\r\n private addRow(\r\n data: ArrayFormRow[],\r\n defaultValues?: Record<string, any>\r\n ): ArrayFormRow {\r\n const newRow: ArrayFormRow = {\r\n ...defaultValues,\r\n uid: uuidv4(),\r\n isEdit: true,\r\n isAdd: true,\r\n };\r\n data.push(newRow);\r\n return newRow;\r\n }\r\n\r\n /**\r\n * 校验单个字段\r\n *\r\n * @param row 行数据\r\n * @param fieldName 字段名\r\n * @param config 表单配置\r\n * @returns 校验结果\r\n */\r\n private validateField(\r\n row: ArrayFormRow,\r\n fieldName: string,\r\n config: ArrayFormConfig\r\n ): ValidationResult {\r\n const fieldConfig = config.fields.find((f) => f.name === fieldName);\r\n\r\n if (!fieldConfig) {\r\n return \"\";\r\n }\r\n\r\n if (fieldConfig.validator) {\r\n return fieldConfig.validator(row[fieldName], row, fieldName);\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n /**\r\n * 校验整行数据\r\n *\r\n * @param row 行数据\r\n * @param config 表单配置\r\n * @returns 校验结果对象,key为字段名,value为校验结果\r\n */\r\n private validateRow(\r\n row: ArrayFormRow,\r\n config: ArrayFormConfig\r\n ): Record<string, ValidationResult> {\r\n const results: Record<string, ValidationResult> = {};\r\n\r\n config.fields.forEach((fieldConfig) => {\r\n results[fieldConfig.name] = this.validateField(\r\n row,\r\n fieldConfig.name,\r\n config\r\n );\r\n });\r\n\r\n return results;\r\n }\r\n\r\n /**\r\n * 校验整个数组\r\n *\r\n * @param data 数据数组\r\n * @param config 表单配置\r\n * @returns 校验结果对象,key为行的uid,value为该行的校验结果\r\n */\r\n private validateData(\r\n data: ArrayFormRow[],\r\n config: ArrayFormConfig\r\n ): Record<string, Record<string, ValidationResult>> {\r\n const results: Record<string, Record<string, ValidationResult>> = {};\r\n\r\n data.forEach((row) => {\r\n results[row.uid] = this.validateRow(row, config);\r\n });\r\n\r\n return results;\r\n }\r\n\r\n /**\r\n * 注册表单到存储\r\n * 如果表单已存在,则更新其配置\r\n *\r\n * @param formName 表单名称\r\n * @param data 数据数组\r\n * @param config 表单配置\r\n */\r\n registerForm(\r\n formName: string,\r\n data: ArrayFormRow[],\r\n config: ArrayFormConfig\r\n ): void {\r\n this.formStore[formName] = {\r\n data: this.initializeData(data),\r\n config,\r\n validationResults: {},\r\n };\r\n // 如果配置了自动更新,立即更新一次\r\n this.autoUpdateArrayReference(formName);\r\n }\r\n\r\n /**\r\n * 从存储中获取表单\r\n *\r\n * @param formName 表单名称\r\n * @returns 表单存储项或undefined\r\n */\r\n getForm(formName: string): ArrayFormStoreItem | undefined {\r\n return this.formStore[formName];\r\n }\r\n\r\n /**\r\n * 向表单添加行\r\n *\r\n * @param formName 表单名称\r\n * @param defaultValues 默认值\r\n * @returns 新增的行数据或undefined\r\n */\r\n addRowToForm(\r\n formName: string,\r\n defaultValues?: Record<string, any>\r\n ): ArrayFormRow | undefined {\r\n const form = this.formStore[formName];\r\n if (!form) {\r\n return undefined;\r\n }\r\n const newRow = this.addRow(form.data, defaultValues);\r\n // 自动更新外部数组引用\r\n this.autoUpdateArrayReference(formName);\r\n return newRow;\r\n }\r\n\r\n /**\r\n * 校验表单\r\n *\r\n * @param formName 表单名称\r\n * @returns 校验结果或undefined\r\n */\r\n validateForm(\r\n formName: string\r\n ): Record<string, Record<string, ValidationResult>> | undefined {\r\n const form = this.formStore[formName];\r\n if (!form) {\r\n return undefined;\r\n }\r\n const results = this.validateData(form.data, form.config);\r\n form.validationResults = results;\r\n return results;\r\n }\r\n\r\n /**\r\n * 开启指定行的编辑模式\r\n *\r\n * @param row 行数据\r\n */\r\n enableEdit(row: ArrayFormRow): void {\r\n row.isEdit = true;\r\n }\r\n\r\n /**\r\n * 关闭指定行的编辑模式\r\n *\r\n * @param row 行数据\r\n */\r\n disableEdit(row: ArrayFormRow): void {\r\n row.isEdit = false;\r\n }\r\n\r\n /**\r\n * 从表单中删除指定行\r\n *\r\n * @param formName 表单名称\r\n * @param row 行的uid\r\n * @returns 是否删除成功\r\n */\r\n deleteRowFromForm(formName: string, row: ArrayFormRow): boolean {\r\n const form = this.formStore[formName];\r\n if (!form) {\r\n return false;\r\n }\r\n const index = form.data.findIndex((item) => item.uid === row.uid);\r\n if (index === -1) {\r\n return false;\r\n }\r\n form.data.splice(index, 1);\r\n if (form.validationResults && form.validationResults[row.uid]) {\r\n delete form.validationResults[row.uid];\r\n }\r\n // 自动更新外部数组引用\r\n this.autoUpdateArrayReference(formName);\r\n return true;\r\n }\r\n\r\n /**\r\n * 校验指定行的指定字段并返回校验结果\r\n * 实时执行校验,用于模板中的实时校验显示\r\n *\r\n * @param formName 表单名称\r\n * @param row 行数据\r\n * @param fieldName 字段名\r\n * @returns 校验结果\r\n */\r\n validateFieldInRow(\r\n formName: string,\r\n row: ArrayFormRow,\r\n fieldName: string\r\n ): \"success\" | \"error\" {\r\n const form = this.formStore[formName];\r\n if (!form) {\r\n return \"success\";\r\n }\r\n\r\n const fieldConfig = form.config.fields.find((f) => f.name === fieldName);\r\n if (!fieldConfig) {\r\n return \"success\";\r\n }\r\n\r\n let result: ValidationResult = \"\";\r\n if (fieldConfig.validator) {\r\n result = fieldConfig.validator(row[fieldName], row, fieldName);\r\n }\r\n\r\n // 更新校验结果存储\r\n if (!form.validationResults) {\r\n form.validationResults = {};\r\n }\r\n if (!form.validationResults[row.uid]) {\r\n form.validationResults[row.uid] = {};\r\n }\r\n form.validationResults[row.uid][fieldName] = result;\r\n\r\n return result ? \"error\" : \"success\";\r\n }\r\n\r\n /**\r\n * 校验指定行的所有字段\r\n *\r\n * @param formName 表单名称\r\n * @param row 行数据\r\n * @returns 是否所有字段都通过校验\r\n */\r\n validateRowAllFields(formName: string, row: ArrayFormRow): boolean {\r\n const form = this.formStore[formName];\r\n if (!form) {\r\n return true;\r\n }\r\n\r\n let hasError = false;\r\n\r\n form.config.fields.forEach((fieldConfig) => {\r\n const result = this.validateFieldInRow(formName, row, fieldConfig.name);\r\n if (result === \"error\") {\r\n hasError = true;\r\n }\r\n });\r\n\r\n return !hasError;\r\n }\r\n\r\n /**\r\n * 自动更新外部数组引用(如果配置了)\r\n * 私有方法,在数据变化时自动调用\r\n *\r\n * @param formName 表单名称\r\n */\r\n private autoUpdateArrayReference(formName: string): void {\r\n const form = this.formStore[formName];\r\n if (!form || !form.config.targetObject || !form.config.arrayPropertyName) {\r\n return;\r\n }\r\n const newArray = form.data ? [...form.data] : [];\r\n // 更新目标对象的数组属性为新数组引用\r\n (form.config.targetObject as any)[form.config.arrayPropertyName] = newArray;\r\n }\r\n}\r\n","/*\r\n * Public API Surface of pro-table\r\n */\r\n\r\nexport * from \"./lib/pro-table.component\";\r\nexport * from \"./lib/pro-table.module\";\r\nexport * from \"./lib/constants\";\r\nexport * from \"./lib/type\";\r\nexport * from \"./lib/tokens\";\r\nexport * from \"./lib/plate-input/plate-prefix-load.service\";\r\nexport * from \"./lib/plate-input/plate-input.module\";\r\n\r\n// Export antd-form service and types\r\nexport { AntdFormService } from \"./lib/page-public/antd-form\";\r\nexport type {\r\n FieldErrorMessage,\r\n FieldErrorMessages,\r\n FieldConfig,\r\n FormModifyType,\r\n FormConfig,\r\n WatchOptions,\r\n AddFieldsConfigOptions,\r\n AddFieldsConfigResult,\r\n RemoveFieldsConfigOptions,\r\n RemoveFieldsConfigResult,\r\n} from \"./lib/page-public/antd-form\";\r\n\r\n// Export array-form service and types\r\nexport { ArrayFormService } from \"./lib/page-public/array-form\";\r\nexport type {\r\n ValidationResult,\r\n FieldValidator,\r\n FieldConfig as ArrayFieldConfig,\r\n ArrayFormRow,\r\n ArrayFormConfig,\r\n ArrayFormStoreItem,\r\n ArrayFormStore,\r\n} from \"./lib/page-public/array-form\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {ColmunsSettingComponent as ɵf} from './lib/components/colmuns-setting/colmuns-setting.component';\nexport {DynamicSearchFieldComponent as ɵg} from './lib/components/dynamic-search-field/dynamic-search-field.component';\nexport {PageContainerComponent as ɵb} from './lib/page-container/page-container.component';\nexport {PageContainerModule as ɵa} from './lib/page-container/page-container.module';\nexport {PlateInputComponent as ɵe} from './lib/plate-input/plate-input.component';\nexport {TableSearchBarModule as ɵc} from './lib/table-search-bar/table-search-bar-module';\nexport {TableSearchBarComponent as ɵd} from './lib/table-search-bar/table-search-bar.component';"],"names":["InjectionToken","EventEmitter","isObservable","isEqual","hasIn","cloneDeep","isNil","debounce","Component","Optional","Inject","Input","Output","ContentChild","ContentChildren","TemplateRef","NgModule","CommonModule","FormsModule","HttpClientModule","RouterModule","NzCardModule","ReactiveFormsModule","NG_VALUE_ACCESSOR","forwardRef","ChangeDetectorRef","ElementRef","NzGridModule","NzInputModule","NzPopoverModule","NzIconModule","NzSpaceModule","Sortable","ViewChild","ComponentFactoryResolver","ViewContainerRef","NzFormModule","NzSelectModule","NzButtonModule","NzTableModule","NzDatePickerModule","NzModalModule","NzCheckboxModule","NzTypographyModule","DragDropModule","NzAutocompleteModule","NzInputNumberModule","NzToolTipModule","Injectable","HttpClient","FormGroup","debounceTime","distinctUntilChanged","FormBuilder","uuidv4"],"mappings":"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"}