@gonsin/gview 1.1.19 → 1.1.20

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../node_modules/core-js/internals/global.js","../node_modules/core-js/internals/engine-v8-version.js","../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/function-bind-native.js","../node_modules/core-js/internals/function-call.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/function-uncurry-this.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/is-null-or-undefined.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/document-all.js","../node_modules/core-js/internals/is-callable.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/object-is-prototype-of.js","../node_modules/core-js/internals/engine-user-agent.js","../node_modules/core-js/internals/symbol-constructor-detection.js","../node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/core-js/internals/is-symbol.js","../node_modules/core-js/internals/try-to-string.js","../node_modules/core-js/internals/a-callable.js","../node_modules/core-js/internals/ordinary-to-primitive.js","../node_modules/core-js/internals/define-global-property.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/has-own-property.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/get-method.js","../node_modules/core-js/internals/to-property-key.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/v8-prototype-define-bug.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/function-name.js","../node_modules/core-js/internals/inspect-source.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/weak-map-basic-detection.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/make-built-in.js","../node_modules/core-js/internals/define-built-in.js","../node_modules/core-js/internals/math-trunc.js","../node_modules/core-js/internals/to-integer-or-infinity.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/length-of-array-like.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/is-array.js","../node_modules/core-js/internals/array-set-length.js","../node_modules/core-js/internals/does-not-exceed-safe-integer.js","../node_modules/core-js/modules/es.array.push.js","../packages/config/nprogress.ts","../packages/config/constant.ts","../packages/config/socket.ts","../packages/config/setting.ts","../packages/config/color.ts","../packages/config/api.ts","../packages/utils/common.ts","../packages/utils/menu.ts","../packages/utils/url.ts","../packages/utils/table.ts","../packages/utils/form.ts","../packages/utils/color.ts","../packages/utils/validate.ts","../packages/utils/nanoid.ts","../packages/components/GLayout/components/GLayoutHeaderTab.vue","../packages/components/GLayout/components/GLayoutHeader.vue","../packages/components/GLayout/components/GLayoutContent.vue","../packages/components/common/color/index.vue","../node_modules/core-js/internals/an-instance.js","../node_modules/core-js/internals/a-possible-prototype.js","../node_modules/core-js/internals/object-set-prototype-of.js","../node_modules/core-js/internals/inherit-if-required.js","../node_modules/core-js/internals/to-string-tag-support.js","../node_modules/core-js/internals/classof.js","../node_modules/core-js/internals/to-string.js","../node_modules/core-js/internals/normalize-string-argument.js","../node_modules/core-js/internals/dom-exception-constants.js","../node_modules/core-js/internals/error-stack-clear.js","../node_modules/core-js/modules/web.dom-exception.stack.js","../packages/components/GLayout/components/GLayoutSetting.vue","../packages/components/GLayout/index.vue","../packages/components/GLayout/components/GLayoutSideMenu.vue","../packages/components/GLayout/components/GLayoutSideMenuContent.vue","../packages/components/common/GCommonHeader/index.vue","../packages/components/GForm/components/GFormInput.vue","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../packages/api/index.ts","../packages/api/config.ts","../packages/api/modules/view.ts","../packages/components/GForm/components/GFormSelect.vue","../packages/components/GForm/components/GFormSelectDateTime.vue","../packages/components/GHeader/index.vue","../packages/components/GHeader/components/GHeaderUpload.vue","../packages/components/common/GCommonTable/index.vue","../packages/components/GForm/components/GFormLabel.vue","../packages/components/GForm/components/GFormCheckBox.vue","../packages/components/GForm/components/GFormSwitch.vue","../packages/components/GForm/components/GFormRadio.vue","../packages/components/GForm/components/GFormTreeCheckBox.vue","../packages/components/GForm/components/GFormCascader.vue","../packages/components/GForm/components/GFormUpload.vue","../packages/components/GTable/index.vue","../packages/components/GTable/components/GTableForm.vue","../packages/components/common/GCommonForm/index.vue","../packages/components/GForm/components/GFormBlock.vue","../packages/components/GForm/components/GFormItem.vue","../packages/components/GForm/components/GFormEditor.vue","../packages/components/GForm/index.vue","../packages/components/GTab/index.vue","../packages/components/common/GCommonDialog/index.vue","../packages/components/GDialog/index.vue","../packages/components/GTemplate/index.vue","../packages/components/GTemplateView/index.vue","../packages/components/GView/index.vue","../packages/store/socket.ts","../packages/store/props.ts","../packages/store/index.ts","../packages/store/setting.ts","../packages/store/view.ts","../packages/views/GMenuManage/icon.ts","../packages/views/GMenuManage/index.vue","../packages/index.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.26.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.26.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","var $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar SILENT_ON_NON_WRITABLE_LENGTH = !function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: INCORRECT_TO_LENGTH || SILENT_ON_NON_WRITABLE_LENGTH }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","import NProgress from \"nprogress\";\n\nNProgress.configure({\n easing: \"ease\", // 动画方式\n speed: 600, // 递增进度条的速度\n showSpinner: true, // 是否显示加载spinner\n trickle: false,\n trickleSpeed: 300, // 自动递增间隔\n minimum: 0.1, // 初始化时的最小百分比\n});\n\nexport { NProgress };\n","// 全局样式前缀\nexport const PREFIX = \"gview\";\n\n// 存储键名规范\nexport const LOCAL_CONFIG = \"config\";\nexport const LOCAL_THEME_CONFIG = \"themeConfig\";\nexport const LOCAL_MENU_CONFIG = \"menuConfig\";\nexport const LOCAL_USER = \"user\";\nexport const LOCAL_MENU = \"menu\";\nexport const LOCAL_TAB_MENU = \"tabMenu\";\nexport const LOCAL_INIT_TAB_MENU_LIST = \"initTabMenuList\";\nexport const TOKEN_NAME = \"token\";\nexport const TOKEN_EXPIRED_TIME = \"tokenExpiredTime\";\n\nexport const LOCAL_DATA_ID = \"dataId\";\nexport const LOCAL_SESSION_ID = \"sessionId\";\n","// WebSocket 相关接口配置\nconst DEVELOP_WS_SERVICE = \"http://192.168.2.192:8088/gview/websocket\".replace(\"http\", \"ws\");\nexport const WS_SERVICE =\n process.env.NODE_ENV !== \"development\"\n ? window.location.origin.replace(window.location.protocol, \"ws:\") + \"/gview/websocket\"\n : DEVELOP_WS_SERVICE;\n\n// WebSocket 消息模板\nexport const INIT_WS_MODEL = (subcmd: string, dataId: string = \"\") => {\n if (!dataId) {\n return {\n head: \"gonsin\",\n cmd: {\n cmd: \"gview_client\",\n subcmd,\n response: 0,\n },\n };\n } else {\n return {\n head: \"gonsin\",\n cmd: {\n cmd: \"gview_client\",\n subcmd,\n },\n args: {\n dataId,\n },\n };\n }\n};\n\n// 心跳间隔时长\n// -- 前端自websocket连接成功之后,应该每30秒发送一次心跳,如果到40秒还没发送心跳,websocket将自动断开\nexport const WS_INTERVAL_TIMEOUT = 30000;\n// 重连超时时长\nexport const WS_RESET_TIMEOUT = 3000;\n","export const THEME_CONFIG = {\n brandTheme: \"default\", // 主题色\n displayMode: \"light\", // 主题模式 light | dark | auto\n};\n","// /* eslint-disable indent */\nexport type ColorToken = Record<string, string>;\nexport type ColorSeries = Record<string, ColorToken>;\n\nexport const defaultLightColor = [\n \"#0052d9\",\n \"#0594fa\",\n \"#00a870\",\n \"#ebb105\",\n \"#ed7b2f\",\n \"#e34d59\",\n \"#ed49b4\",\n \"#834ec2\",\n];\nexport const defaultDarkColor = [\n \"#4582e6\",\n \"#29a4fb\",\n \"#03a56f\",\n \"#ca8d03\",\n \"#ed7b2f\",\n \"#ea7b84\",\n \"#f172c5\",\n \"#ab87d5\",\n];\n\nexport const COLOR_TOKEN: ColorSeries = {\n DEFAULT: {\n \"--td-brand-color\": \"#0052d9\",\n \"--td-brand-color-1\": \"#f2f3ff\",\n \"--td-brand-color-2\": \"#d9e1ff\",\n \"--td-brand-color-3\": \"#b5c7ff\",\n \"--td-brand-color-4\": \"#8eabff\",\n \"--td-brand-color-5\": \"#618dff\",\n \"--td-brand-color-6\": \"#366ef4\",\n \"--td-brand-color-7\": \"#0052d9\",\n \"--td-brand-color-8\": \"#003cab\",\n \"--td-brand-color-9\": \"#002a7c\",\n \"--td-brand-color-10\": \"#001a57\",\n },\n\n CYAN: {\n \"--td-brand-color\": \"#0594FA\",\n \"--td-brand-color-1\": \"#d7eefe\",\n \"--td-brand-color-2\": \"#aeddfd\",\n \"--td-brand-color-3\": \"#84cafd\",\n \"--td-brand-color-4\": \"#58b8fc\",\n \"--td-brand-color-5\": \"#29a4fb\",\n \"--td-brand-color-6\": \"#0594FA\",\n \"--td-brand-color-7\": \"#29a4fb\",\n \"--td-brand-color-8\": \"#0594FA\",\n \"--td-brand-color-9\": \"#0378df\",\n \"--td-brand-color-10\": \"#01409b\",\n },\n GREEN: {\n \"--td-brand-color\": \"#00A870\",\n \"--td-brand-color-1\": \"#8dffd9\",\n \"--td-brand-color-2\": \"#00f2a2\",\n \"--td-brand-color-3\": \"#00dc92\",\n \"--td-brand-color-4\": \"#00c583\",\n \"--td-brand-color-5\": \"#00A870\",\n \"--td-brand-color-6\": \"#009a5d\",\n \"--td-brand-color-7\": \"#00c583\",\n \"--td-brand-color-8\": \"#00A870\",\n \"--td-brand-color-9\": \"#009a5d\",\n \"--td-brand-color-10\": \"#004a14\",\n },\n ORANGE: {\n \"--td-brand-color\": \"#ED7B2F\",\n \"--td-brand-color-1\": \"#fce5d7\",\n \"--td-brand-color-2\": \"#f8cdaf\",\n \"--td-brand-color-3\": \"#f4b285\",\n \"--td-brand-color-4\": \"#f19659\",\n \"--td-brand-color-5\": \"#ED7B2F\",\n \"--td-brand-color-6\": \"#e75510\",\n \"--td-brand-color-7\": \"#f19659\",\n \"--td-brand-color-8\": \"#ED7B2F\",\n \"--td-brand-color-9\": \"#e75510\",\n \"--td-brand-color-10\": \"#7f0a02\",\n },\n RED: {\n \"--td-brand-color\": \"#E34D59\",\n \"--td-brand-color-1\": \"#fbe5e7\",\n \"--td-brand-color-2\": \"#f7ccd0\",\n \"--td-brand-color-3\": \"#f3b2b8\",\n \"--td-brand-color-4\": \"#ef989f\",\n \"--td-brand-color-5\": \"#ea7b84\",\n \"--td-brand-color-6\": \"#E34D59\",\n \"--td-brand-color-7\": \"#ea7b84\",\n \"--td-brand-color-8\": \"#E34D59\",\n \"--td-brand-color-9\": \"#e42c3a\",\n \"--td-brand-color-10\": \"#8d0309\",\n },\n PINK: {\n \"--td-brand-color\": \"#ED49B4\",\n \"--td-brand-color-1\": \"#fce5f4\",\n \"--td-brand-color-2\": \"#facae9\",\n \"--td-brand-color-3\": \"#f7aede\",\n \"--td-brand-color-4\": \"#f491d2\",\n \"--td-brand-color-5\": \"#f172c5\",\n \"--td-brand-color-6\": \"#ED49B4\",\n \"--td-brand-color-7\": \"#f172c5\",\n \"--td-brand-color-8\": \"#ED49B4\",\n \"--td-brand-color-9\": \"#e80f9d\",\n \"--td-brand-color-10\": \"#8f025e\",\n },\n PURPLE: {\n \"--td-brand-color\": \"#834EC2\",\n \"--td-brand-color-1\": \"#eee6f7\",\n \"--td-brand-color-2\": \"#ddceee\",\n \"--td-brand-color-3\": \"#ccb6e6\",\n \"--td-brand-color-4\": \"#bb9edc\",\n \"--td-brand-color-5\": \"#ab87d5\",\n \"--td-brand-color-6\": \"#9a6fce\",\n \"--td-brand-color-7\": \"#9a6fce\",\n \"--td-brand-color-8\": \"#834EC2\",\n \"--td-brand-color-9\": \"#783ac3\",\n \"--td-brand-color-10\": \"#4c1397\",\n },\n YELLOW: {\n \"--td-brand-color\": \"#EBB105\",\n \"--td-brand-color-1\": \"#fde9ab\",\n \"--td-brand-color-2\": \"#fbd152\",\n \"--td-brand-color-3\": \"#EBB105\",\n \"--td-brand-color-4\": \"#dda204\",\n \"--td-brand-color-5\": \"#ca8d03\",\n \"--td-brand-color-6\": \"#b67803\",\n \"--td-brand-color-7\": \"#fbd152\",\n \"--td-brand-color-8\": \"#EBB105\",\n \"--td-brand-color-9\": \"#dda204\",\n \"--td-brand-color-10\": \"#603100\",\n },\n};\n","// 相关接口配置\n// 上传接口\nexport const UPLOAD_API = \"http://192.168.2.192:8088/restapi/s09/gview/active/upload_file\";\n","function createContextFunctionTemplate(eval_string, context) {\n return `\nreturn function (context) {\n \"use strict\";\n ${Object.keys(context).length > 0 ? `let ${Object.keys(context).map((key) => ` ${key} = context['${key}']`)};` : ``}\n return ${eval_string};\n} \n`;\n}\n\nfunction createContextEvaluator(eval_string, context) {\n let template = createContextFunctionTemplate(eval_string, context);\n let functor = Function(template);\n return functor();\n}\n\nexport function evalContext(text, context = {}) {\n let evaluator = createContextEvaluator(text, context);\n return evaluator(context);\n}\n\n/**\n * @description: 处理showIf可能出现的值\n * @param {any} value\n * @return {any}\n */\nexport function vFun(value: any): any {\n if (value === undefined) {\n return \"\";\n }\n if (value === null) {\n return \"\";\n }\n if (value === \"\") {\n return \"\";\n }\n if (value === 0) {\n return 0;\n }\n if (value === \"0\") {\n return \"0\";\n }\n return value;\n}\n\n// 处理 path, path有三种形式:'a[0].b.c'、'a.0.b.c' 和 ['a','0','b','c'],需要统一处理成数组,便于后续使用\nfunction _basePath(path) {\n // 若是数组,则直接返回\n if (Array.isArray(path)) return path;\n // 若有 '[',']',则替换成将 '[' 替换成 '.',去掉 ']'\n return path.replace(/\\[/g, \".\").replace(/\\]/g, \"\").split(\".\");\n}\n\n/**\n * @description: 获取对象属性方法\n * @param {*} target\n * @param {*} propertyStr\n * @return {*}\n */\nexport function getProperty(object, path, defaultValue = \"\") {\n // 判断 object 是否是数组或者对象,否则直接返回默认值 defaultValue\n if (typeof object !== \"object\") return defaultValue;\n\n // 沿着路径寻找到对应的值,未找到则返回默认值 defaultValue\n let result = _basePath(path).reduce((o, k) => (o || {})[k], object);\n\n if ((result ?? \"\") != \"\" || result == 0) {\n return result;\n } else {\n return defaultValue;\n }\n}\n\nexport function setProperty(object, path, value) {\n // 判断 object 是否是数组或者对象,否则直接返回 object\n if (typeof object !== \"object\") return object;\n\n _basePath(path).reduce((o, k, i, _) => {\n if (i === _.length - 1) {\n // 若遍历结束直接赋值\n o[k] = value;\n return null;\n } else if (k in o) {\n // 若存在对应路径,则返回找到的对象,进行下一次遍历\n return o[k];\n } else {\n // 若不存在对应路径,则创建对应对象,若下一路径是数字,新对象赋值为空数组,否则赋值为空对象\n o[k] = /^[0-9]{1,}$/.test(_[i + 1]) ? [] : {};\n return o[k];\n }\n }, object);\n\n Object.assign(object, object);\n\n // 返回object\n return object;\n}\n\nexport function deepClone(sourceObj, targetObj) {\n let cloneObj = targetObj || {};\n if (!sourceObj || typeof sourceObj !== \"object\" || sourceObj.length === undefined) {\n return sourceObj;\n }\n if (sourceObj instanceof Array) {\n cloneObj = sourceObj.concat();\n } else {\n for (let i in sourceObj) {\n if (typeof sourceObj[i] === \"object\") {\n cloneObj[i] = deepClone(sourceObj[i], {});\n } else {\n cloneObj[i] = sourceObj[i];\n }\n }\n }\n return cloneObj;\n}\n","import { IMenuTree } from \"../types\";\n\n/**\n * 递归生成菜单树\n * @param data 原始菜单树数据\n * @param parent 标记父菜单\n * @param level 标记当前菜单层级\n * @returns\n */\nexport function generateMenuTree(data: IMenuTree[], parent: string | null, level: number): IMenuTree[] {\n return data\n .filter((item) => item.parent === parent)\n .map((item) => ({\n ...item,\n children: generateMenuTree(data, item.name, level + 1),\n\n path: item.url, // 菜单路径\n alias: item.title, // 菜单备注名称\n level, // 标记当前层级\n isGroup: !item.url, // 标记当前是否为分组\n }));\n}\n\n/**\n * 扁平化菜单树\n */\nexport const flattenMenuData = (tree: IMenuTree[]) => {\n const flatMenu: Array<IMenuTree> = [];\n function flat(menuTree: IMenuTree[], parentName: string | null) {\n menuTree.forEach((item) => {\n const { edificeKey, name, title, url, icon } = item;\n flatMenu.push({\n edificeKey,\n name,\n parent: parentName,\n title,\n url,\n icon,\n });\n\n if (item.children && item.children.length > 0) {\n flat(item.children, name);\n }\n });\n }\n\n flat(tree, null);\n\n flatMenu.forEach((item, index) => {\n item.sort = index;\n });\n return flatMenu;\n};\n\n/**\n * 获取首页菜单 第一个url不为空的菜单信息\n * @param menus\n * @param url\n * @returns\n */\nexport const getHomeUrl = (menus: IMenuTree[], url = \"\"): string => {\n for (const menu of menus) {\n if (menu.url) {\n url = menu.url;\n break;\n }\n const childrenPath = getHomeUrl(menu.children || [], url);\n if (childrenPath) {\n url = childrenPath;\n break;\n }\n }\n return url;\n};\n","/**\n * @description: 获取路径中的参数,例子路径 view?viewName=GropBean&MeetingName=TestMeeting\n * @param {*} url\n * @return {*}\n */\nexport function getUrlQuery(url) {\n let queryObj = {};\n\n if (url.indexOf(\"?\") !== -1) {\n let queryStr = url.split(\"?\")[1].split(\"&\");\n\n queryStr.forEach((queryItem) => {\n queryObj[queryItem.split(\"=\")[0]] = queryItem.split(\"=\")[1];\n });\n }\n\n return queryObj;\n}\n","import { TableColumns } from \"../types\";\nimport { PrimaryTableCol } from \"tdesign-vue\";\n\nexport function initTableColumns(tableColumns: TableColumns[]): Array<PrimaryTableCol> {\n let tableColumnsResult: Array<PrimaryTableCol> = [];\n\n // 多选框单元列配置\n tableColumnsResult.push({\n colKey: \"row-select\",\n type: \"multiple\",\n fixed: \"left\",\n attrs: {\n style: {\n minWidth: \"30px\",\n },\n },\n });\n\n tableColumns.forEach((column, idx, arr) => {\n let tempColumnResult: any = {\n colKey: column.keyName !== \"\" ? column.keyName : column.name,\n title: column.name,\n cell: column.columnType,\n width: `calc(${convertTableColumnWeight(column.weight ?? 1, arr.length)} * 100vw - 32px)`,\n ellipsis: { props: { theme: \"light\", showArrow: false, placement: \"bottom\" } },\n ...column,\n };\n\n if (idx == 0) {\n tempColumnResult.fixed = \"left\";\n tempColumnResult.attrs = {\n style: {\n maxWidth: `calc(${convertTableColumnWeight(1, arr.length)} * 100vw - 32px)`,\n },\n };\n }\n\n if (column.columnType == \"BUTTONS\") {\n const buttonLength = column.buttons?.length || 1;\n\n tempColumnResult.ellipsis = undefined;\n tempColumnResult.attrs = {\n style: {\n minWidth: buttonLength * 90 + \"px\",\n },\n };\n tempColumnResult.fixed = \"right\";\n }\n\n if (column.columnType == \"FORM_ITEM\") {\n tempColumnResult.ellipsis = undefined;\n }\n tableColumnsResult.push(tempColumnResult);\n });\n\n return tableColumnsResult;\n}\n\n/**\n * @description: 表格列宽度权重转换\n * @return {*}\n */\nfunction convertTableColumnWeight(weight: number, columnAmount: number) {\n // return (weight / columnAmount) * 100 + \"%\";\n return weight / columnAmount;\n}\n","/**\n * @description: 初始化处理树形选择列表数据\n * @param {*} config\n * @return {*}\n */\nexport function initTreeSelectorData(config) {\n const { list, keyName, valueName, titleName, parentKey, parentKeyName } = config;\n\n const selector = (parentKey, arr) => {\n const res: any = [];\n\n arr.forEach((item) => {\n if (item[parentKeyName] == parentKey) {\n const children = selector(item[keyName], list);\n\n const parentObj = {\n key: item[keyName],\n label: item[titleName],\n value: item[valueName],\n children: [],\n };\n\n if (children.length) {\n parentObj.children = children;\n }\n\n res.push(parentObj);\n }\n });\n\n return res;\n };\n\n return selector(parentKey, list);\n}\n","import { ColorSeries, ColorToken } from \"../config/color\";\nfunction toUnderline(name: string): string {\n return name.replace(/([A-Z])/g, \"_$1\").toUpperCase();\n}\n\nexport function getBrandColor(type: string, colorList: ColorSeries): ColorToken {\n const name = /^#[A-F\\d]{6}$/i.test(type) ? type : toUnderline(type);\n return colorList[name || \"DEFAULT\"];\n}\n","/**\n * @description: 判断表单内容是否为空\n * @param {*} value\n * @return {*}\n */\nexport function isVoid(value) {\n if (value === null) {\n return false;\n }\n\n value = (\"\" + value).trim();\n return value != \"\";\n}\n","import { customAlphabet } from \"nanoid\";\n\nexport function nanoid(length: number) {\n return customAlphabet(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\", 32)(length);\n}\n","<template>\n <t-tabs\n :class=\"`${PREFIX}-tabs`\"\n size=\"large\"\n :value=\"decodeURIComponent($route.fullPath)\"\n @change=\"handleChangeCurrentTab\"\n @remove=\"handleRemoveCurrentTab\"\n >\n <t-tab-panel v-for=\"(item, index) in tabMenuList\" :key=\"item.path\" :value=\"item.path\" :removable=\"!item.isHome\">\n <template #label>\n <t-dropdown\n trigger=\"context-menu\"\n :popup-props=\"{\n onVisibleChange: (visible, ctx) => handleTabMenuClick(visible, ctx, item.path),\n visible: activeItemPath != '' ? activeItemPath === item.path : false,\n }\"\n >{{ item.title }}\n <template #dropdown>\n <t-dropdown-menu>\n <t-dropdown-item v-if=\"item.isHome\" @click=\"() => handleChangeCurrentTab(item.path)\">\n <t-icon name=\"home\"></t-icon>前往首页\n </t-dropdown-item>\n <t-dropdown-item v-if=\"!item.isHome\" @click=\"() => handleTabRefresh(item, index)\">\n <t-icon name=\"refresh\"></t-icon>刷新\n </t-dropdown-item>\n <t-dropdown-item v-if=\"index > 1\" @click=\"() => handleTabCloseAhead(item.path, index)\">\n <t-icon name=\"arrow-left\"></t-icon>关闭左侧\n </t-dropdown-item>\n <t-dropdown-item\n v-if=\"index > 0 && index < tabMenuList.length - 1\"\n @click=\"() => handleTabCloseBehind(item.path, index)\"\n >\n <t-icon name=\"arrow-right \"></t-icon>关闭右侧\n </t-dropdown-item>\n <t-dropdown-item\n v-if=\"index > 0 && tabMenuList.length > 2\"\n @click=\"() => handleTabCloseOther(item.path, index)\"\n >\n <t-icon name=\"close-circle\"></t-icon>关闭其他\n </t-dropdown-item>\n </t-dropdown-menu>\n </template>\n </t-dropdown>\n </template>\n </t-tab-panel>\n </t-tabs>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\nimport { getUrlQuery } from \"../../../utils\";\n\nexport default {\n computed: {\n tabMenuList() {\n return this.$store.state.setting.tabMenuList;\n },\n homeUrl() {\n return this.$store.getters[\"setting/homeUrl\"];\n },\n },\n data() {\n return {\n PREFIX,\n activeItemPath: \"\",\n };\n },\n methods: {\n handleTabMenuClick(visible, ctx, path) {\n if (ctx.trigger === \"document\") this.activeItemPath = null;\n if (visible) this.activeItemPath = path;\n },\n handleChangeCurrentTab(path) {\n if (path === \"/home\") {\n this.$router.push(\n { path: this.homeUrl, query: getUrlQuery(this.homeUrl) },\n () => {},\n () => {},\n );\n } else {\n this.$router.push(\n { path, query: getUrlQuery(path) },\n () => {},\n () => {},\n );\n }\n },\n handleRemoveCurrentTab({ value: path, index }) {\n const { tabMenuList } = this.$store.state.setting;\n\n if (tabMenuList.length > 2) {\n const nextTabMenuItem = tabMenuList[index + 1] || tabMenuList[index - 1];\n\n this.$store.dispatch(\"setting/subtractCurrentTabMenuItem\", { path, itemIdx: index });\n const fullPath = decodeURIComponent(this.$route.fullPath);\n if (path === fullPath) {\n this.$router.push(\n {\n path: nextTabMenuItem.path,\n query: nextTabMenuItem.query,\n },\n () => {},\n () => {},\n );\n }\n }\n },\n handleTabRefresh(item, index) {\n this.$nextTick(() => {\n this.$router.push(\n {\n path: item.path,\n query: item.query,\n },\n () => {},\n () => {},\n );\n });\n\n this.$store.dispatch(\"setting/reloadGlobal\");\n this.activeItemPath = null;\n },\n handleTabCloseAhead(path, itemIdx) {\n this.$store.dispatch(\"setting/subtractTabMenuItemAhead\", { path, itemIdx });\n\n this.handleTabOperationEffect(\"ahead\", itemIdx);\n },\n handleTabCloseBehind(path, itemIdx) {\n this.$store.dispatch(\"setting/subtractTabMenuItemBehind\", { path, itemIdx });\n\n this.handleTabOperationEffect(\"behind\", itemIdx);\n },\n handleTabCloseOther(path, itemIdx) {\n if (this.tabMenuList.length > 2) {\n this.$store.dispatch(\"setting/subtractTabMenuItemOther\", { path, itemIdx });\n\n this.handleTabOperationEffect(\"other\", itemIdx);\n }\n },\n handleTabOperationEffect(type, itemIdx) {\n const currentPath = this.$route.fullPath;\n const { tabMenuList } = this.$store.state.setting;\n\n const currentIdx = tabMenuList.findIndex((item) => item.path === currentPath);\n\n const needRefreshRouter =\n (type === \"other\" && currentIdx !== itemIdx) ||\n (type === \"ahead\" && currentIdx < itemIdx) ||\n (type === \"behind\" && currentIdx === -1);\n\n if (needRefreshRouter) {\n const nextItemIdx = type === \"behind\" ? tabMenuList.length - 1 : 1;\n const nextItem = tabMenuList[nextItemIdx];\n\n this.$router.push({\n path: nextItem.path,\n query: nextItem.query,\n });\n }\n\n this.activeItemPath = null;\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-header :class=\"`${PREFIX}-header`\">\n <t-head-menu :theme=\"displayMode\">\n <template #logo>\n <div class=\"header-logo-container\">\n <div class=\"header-logo\"></div>\n </div>\n <div class=\"header-operate-left\">\n <t-button theme=\"default\" shape=\"square\" variant=\"text\" @click=\"toggleSideMenuCollapsed\">\n <t-icon class=\"collapsed-icon\" name=\"view-list\"></t-icon>\n </t-button>\n </div>\n </template>\n <!-- Tab菜单栏 -->\n <GLayoutHeaderTab />\n <template #operations>\n <div class=\"operation-container\">\n <t-dropdown trigger=\"click\">\n <t-button class=\"header-user-btn\" theme=\"default\" variant=\"text\">\n <t-icon class=\"header-user-avatar\" name=\"user-circle\" />\n <span v-if=\"userRealName\">{{ userRealName }}</span>\n <t-icon name=\"chevron-down\"></t-icon>\n </t-button>\n <template #dropdown>\n <t-dropdown-menu>\n <t-dropdown-item class=\"operations-dropdown-container-item\" @click=\"handleLogout\">\n <t-icon name=\"poweroff\" /> 退出登录\n </t-dropdown-item>\n </t-dropdown-menu>\n </template>\n </t-dropdown>\n\n <t-tooltip placement=\"bottom\" content=\"系统设置\">\n <t-button theme=\"default\" shape=\"square\" variant=\"text\" @click=\"toggleSettingPanel\"\n ><t-icon name=\"setting\" /></t-button\n ></t-tooltip>\n </div>\n </template>\n </t-head-menu>\n </t-header>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\nimport GLayoutHeaderTab from \"./GLayoutHeaderTab.vue\";\n\nexport default {\n components: {\n GLayoutHeaderTab,\n },\n data() {\n return {\n PREFIX,\n };\n },\n computed: {\n userRealName() {\n return this.$store.getters[\"setting/userRealName\"];\n },\n displayMode() {\n return this.$store.getters[\"setting/displayMode\"];\n },\n },\n methods: {\n toggleSideMenuCollapsed() {\n this.$store.commit(\"setting/toggleSideBarCollapse\");\n },\n toggleSettingPanel() {\n this.$store.commit(\"setting/toggleSettingPanel\");\n },\n handleLogout() {\n this.$store.dispatch(\"setting/userLogout\");\n this.$router.push({ path: \"/login\" });\n },\n },\n};\n</script>\n\n<style lang=\"scss\"></style>\n","<template>\n <t-layout :class=\"`${PREFIX}-layout`\">\n <t-content :class=\"`${PREFIX}-content-layout`\">\n <slot />\n </t-content>\n </t-layout>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\n\nexport default {\n data() {\n return {\n PREFIX,\n };\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <div :style=\"style\" class=\"color-container\" />\n</template>\n\n<script>\nimport { getBrandColor } from \"../../../utils\";\nimport { COLOR_TOKEN as colorList } from \"../../../config\";\n\nexport default {\n name: \"ColorContainer\",\n props: {\n value: {\n type: String,\n default: \"default\",\n },\n },\n computed: {\n style() {\n return {\n background: getBrandColor(this.value, colorList)[\"--td-brand-color\"],\n };\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.color-container {\n width: 48px;\n height: 48px;\n border-radius: 3px;\n display: inline-block;\n}\n</style>\n","var isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","module.exports = {\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n var that = new NativeDOMException(message, name);\n var error = Error(message);\n error.name = DOM_EXCEPTION;\n defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n inheritIfRequired(that, this, $DOMException);\n return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n if (!IS_PURE) {\n defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n }\n\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n }\n }\n}\n","<template>\n <t-drawer :class=\"`${PREFIX}-setting`\" :visible.sync=\"isSettingPanelShow\" :footer=\"false\">\n <template #header><t-icon name=\"setting\" />系统设置</template>\n <div class=\"setting-container\">\n <div class=\"setting-group-title\">主题色</div>\n <t-radio-group v-model=\"themeData.brandTheme\">\n <div v-for=\"(item, index) in COLOR_OPTIONS.slice(0, COLOR_OPTIONS.length - 1)\" :key=\"index\">\n <t-radio-button :key=\"index\" :value=\"item\" class=\"setting-layout-color-group\">\n <ColorContainer :value=\"item\" />\n </t-radio-button>\n </div>\n </t-radio-group>\n\n <div class=\"setting-group-title\">主题模式</div>\n <t-radio-group v-model=\"themeData.displayMode\" variant=\"default-filled\">\n <div v-for=\"(item, index) in MODE_OPTIONS\" :key=\"index\">\n <t-radio-button :key=\"index\" :value=\"item.type\">{{ item.text }}</t-radio-button>\n </div>\n </t-radio-group>\n\n <div class=\"setting-group-title\">其他设置</div>\n </div>\n </t-drawer>\n</template>\n\n<script>\nimport ColorContainer from \"../../common/color/index.vue\";\nimport { PREFIX, THEME_CONFIG } from \"../../../config\";\n\nconst COLOR_OPTIONS = [\"default\", \"cyan\", \"green\", \"yellow\", \"orange\", \"red\", \"pink\", \"purple\", \"dynamic\"];\nconst MODE_OPTIONS = [\n { type: \"light\", text: \"明亮\" },\n { type: \"dark\", text: \"暗黑\" },\n { type: \"auto\", text: \"跟随系统\" },\n];\n\nexport default {\n components: {\n ColorContainer,\n },\n data() {\n return {\n PREFIX,\n MODE_OPTIONS,\n COLOR_OPTIONS,\n };\n },\n computed: {\n themeData() {\n return this.$store.state.setting.themeConfig;\n },\n isSettingPanelShow: {\n get() {\n return this.$store.state.setting.isSettingPanelShow;\n },\n set() {\n this.$store.commit(\"setting/toggleSettingPanel\");\n },\n },\n },\n watch: {\n themeData: {\n handler(value) {\n this.$store.dispatch(\"setting/changeTheme\", value);\n },\n deep: true,\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-layout>\n <t-layout>\n <GLayoutHeader />\n <t-content>\n <GLayoutContent>\n <t-card :class=\"`${PREFIX}-card`\" :bordered=\"false\" :title=\"title\">\n <slot />\n </t-card>\n </GLayoutContent>\n </t-content>\n </t-layout>\n <GLayoutSideMenu />\n <GLayoutSetting />\n </t-layout>\n</template>\n\n<script>\nimport GLayoutHeader from \"./components/GLayoutHeader.vue\";\nimport GLayoutContent from \"./components/GLayoutContent.vue\";\nimport GLayoutSetting from \"./components/GLayoutSetting.vue\";\nimport GLayoutSideMenu from \"./components/GLayoutSideMenu.vue\";\nimport { PREFIX } from \"../../config\";\n\nexport default {\n name: \"GLayout\",\n components: {\n GLayoutHeader,\n GLayoutContent,\n GLayoutSetting,\n GLayoutSideMenu,\n },\n props: {\n title: String,\n config: Object,\n },\n data() {\n return {\n PREFIX,\n };\n },\n computed: {\n isUserLogin() {\n return this.$store.state.setting.isUserLogin;\n },\n homeUrl() {\n return this.$store.getters[\"setting/homeUrl\"];\n },\n },\n mounted() {\n // 初始化主题配置\n this.$store.dispatch(\"setting/loadLocalTheme\");\n\n if ((this.config ?? \"\") != \"\" && !this.isUserLogin) {\n this.$store.dispatch(\"setting/userLoadInit\", this.config);\n this.$router.push(this.homeUrl);\n }\n\n // 初始化WebSocket连接\n this.$store.dispatch(\"socket/initSocket\");\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <!-- 侧边抽屉菜单 -->\n <t-drawer\n :class=\"`${PREFIX}-drawer`\"\n size=\"232px\"\n placement=\"left\"\n :visible.sync=\"menuCollapsed\"\n :showOverlay=\"true\"\n :header=\"false\"\n :footer=\"false\"\n :showInAttachedElement=\"true\"\n >\n <t-menu width=\"210px\" :theme=\"displayMode\" :value=\"menuActivePath\" :default-expanded=\"menuDefaultExpanded\">\n <GLayoutSideMenuContent :nav-data=\"menu\" />\n\n <template #operations>\n <t-button\n variant=\"text\"\n theme=\"primary\"\n size=\"large\"\n block\n @click=\"toMenuManage\"\n style=\"justify-content: flex-start; padding: 0 0 0 10px\"\n >\n <template #icon><t-icon name=\"view-list\"></t-icon></template>菜单管理\n </t-button>\n </template>\n </t-menu>\n </t-drawer>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\nimport GLayoutSideMenuContent from \"./GLayoutSideMenuContent.vue\";\n\nexport default {\n components: {\n GLayoutSideMenuContent,\n },\n data() {\n return {\n PREFIX,\n };\n },\n computed: {\n menu() {\n return this.$store.getters[\"setting/userMenu\"];\n },\n displayMode() {\n return this.$store.getters[\"setting/displayMode\"];\n },\n // 侧边菜单折叠状态\n menuCollapsed: {\n get() {\n return this.$store.state.setting.isSideBarCollapse;\n },\n set() {\n this.$store.commit(\"setting/toggleSideBarCollapse\");\n },\n },\n // 当前菜单激活项\n menuActivePath() {\n const length = this.$route.fullPath.split(\"/\").length;\n return this.$route.fullPath.split(\"/\")[length - 1];\n },\n // 当前菜单默认折叠项\n menuDefaultExpanded() {\n let currentParent;\n this.menu.forEach((parentMenu) => {\n parentMenu.children.forEach((childrenMenu) => {\n if (childrenMenu.path == this.menuActivePath) {\n currentParent = parentMenu.name;\n }\n });\n });\n\n return [currentParent];\n },\n },\n methods: {\n toMenuManage() {\n this.$router.push({ name: \"menu\" });\n this.$store.commit(\"setting/toggleSideBarCollapse\");\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <div>\n <template v-for=\"item in menuList\">\n <template v-if=\"!item.children || !item.children.length\">\n <t-menu-item\n :class=\"`level${item.level}-margin`\"\n :name=\"item.path\"\n :value=\"item.path\"\n :to=\"item.path\"\n @click=\"handleMenuItemClick\"\n >\n <template #icon>\n <template v-if=\"item.level == 1\">\n <t-icon v-if=\"item.icon\" :name=\"item.icon\" size=\"large\" />\n <t-icon v-else name=\"app\" size=\"large\" />\n </template>\n </template>\n {{ item.title }}\n </t-menu-item>\n </template>\n <t-submenu\n :class=\"`level${item.level}-margin`\"\n v-else\n :name=\"item.name\"\n :value=\"item.name\"\n :title=\"item.title\"\n >\n <template #icon>\n <template v-if=\"item.level == 1\">\n <t-icon v-if=\"item.icon\" :name=\"item.icon\" size=\"large\" />\n <t-icon v-else name=\"app\" size=\"large\" />\n </template>\n </template>\n <GLayoutSideMenuContent v-if=\"item.children\" :nav-data=\"item.children\" />\n </t-submenu>\n </template>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"GLayoutSideMenuContent\",\n props: {\n navData: Array,\n },\n data() {\n return {};\n },\n computed: {\n // 菜单列表\n menuList() {\n return this.getMenuList(this.navData);\n },\n },\n methods: {\n getMenuList(list) {\n if (!list) return [];\n return list;\n },\n handleMenuItemClick() {\n this.$store.commit(\"setting/toggleSideBarCollapse\");\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.level2-margin {\n margin-left: 10px !important;\n}\n\n.level3-margin {\n margin-left: 15px !important;\n}\n</style>\n","<template>\n <div :class=\"`${PREFIX}-common-header`\">\n <t-row justify=\"space-between\">\n <div class=\"left-operations\">\n <t-row>\n <slot name=\"left-operations\"></slot>\n </t-row>\n </div>\n <div class=\"right-operations\">\n <slot name=\"right-operations\"></slot>\n </div>\n </t-row>\n </div>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\n\nexport default {\n name: \"GCommonHeader\",\n props: {},\n data() {\n return {\n PREFIX,\n };\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <t-input\n v-model=\"value\"\n :type=\"type\"\n :placeholder=\"placeholder\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n :disabled=\"disabled\"\n clearable\n ></t-input>\n</template>\n\n<script>\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n placeholder: String,\n disabled: Boolean,\n inputType: String,\n },\n watch: {\n modelValue() {\n this.value = this.modelValue;\n },\n },\n data() {\n return {\n type: \"text\",\n value: this.modelValue,\n };\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n },\n handleBlur(value) {\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n },\n mounted() {\n if (this.inputType == \"re_password\") this.type = \"password\";\n else this.type = this.inputType;\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import axios, { AxiosInstance, AxiosRequestConfig, AxiosError, AxiosResponse } from \"axios\";\nimport { DEFAULT_CONFIG } from \"./config\";\nimport { ResultData } from \"./interface\";\n\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { LOCAL_CONFIG, LOCAL_SESSION_ID, NProgress } from \"../config\";\nimport { nanoid } from \"../utils\";\nimport VueRouter from \"vue-router\";\n\nfunction loadNanoId() {\n const localSessionId = sessionStorage.getItem(LOCAL_SESSION_ID);\n if ((localSessionId ?? \"\") != \"\") {\n return localSessionId;\n } else {\n const newSessionId = nanoid(32);\n sessionStorage.setItem(LOCAL_SESSION_ID, newSessionId);\n return newSessionId;\n }\n}\n\nclass RequestHttp {\n sessionId: () => string | null;\n service: AxiosInstance;\n router: VueRouter | null;\n\n public constructor(config: AxiosRequestConfig) {\n // 生成 sessionId\n this.sessionId = loadNanoId;\n\n // 实例化axios\n this.service = axios.create(config);\n\n // 初始化 router\n this.router = null;\n\n /**\n * @description 请求拦截器\n * 客户端发送请求 -> [请求拦截器] -> 服务器\n * token校验(JWT) : 接受服务器返回的token,存储到vuex/pinia/本地储存当中\n */\n this.service.interceptors.request.use(\n (config: AxiosRequestConfig) => {\n const userToken = JSON.parse(localStorage.getItem(LOCAL_CONFIG) as string)?.userToken || {\n token: \"\",\n tokenExpiredTime: \"\",\n };\n const lang = JSON.parse(localStorage.getItem(LOCAL_CONFIG) as string)?.userInfo?.language || \"zh-CN\";\n\n if (userToken) {\n const { token, tokenExpiredTime } = userToken;\n\n config.headers = {\n ...config.headers,\n token,\n lang,\n };\n }\n\n NProgress.start();\n\n return {\n ...config,\n };\n },\n (error: AxiosError) => {\n return Promise.reject(error);\n },\n );\n\n /**\n * @description 响应拦截器\n * 服务器换返回信息 -> [拦截统一处理] -> 客户端JS获取到信息\n */\n this.service.interceptors.response.use(\n (response: AxiosResponse) => {\n const { data } = response;\n const { state } = data;\n\n if (state == \"-409\") {\n NProgress.done();\n\n // 跳转到授权页面\n const { device, uuid } = data.data;\n if ((this.router ?? \"\") != \"\") {\n this.router?.push({\n name: \"license\",\n query: {\n device,\n uuid,\n },\n });\n }\n\n return data;\n } else {\n NProgress.done();\n return data;\n }\n },\n async (error: AxiosError) => {\n MessagePlugin.error(error.message);\n return Promise.reject(error);\n },\n );\n }\n\n // * 常用请求方法封装\n get<T>(url: string, params?: object, _object = {}): Promise<ResultData<T>> {\n return this.service.get(`${url}?sessionId=${this.sessionId()}`, { params, ..._object });\n }\n post<T>(url: string, params?: object, _object = {}): Promise<ResultData<T>> {\n return this.service.post(`${url}?sessionId=${this.sessionId()}`, params, _object);\n }\n put<T>(url: string, params?: object, _object = {}): Promise<ResultData<T>> {\n return this.service.put(`${url}?sessionId=${this.sessionId()}`, params, _object);\n }\n delete<T>(url: string, params?: any, _object = {}): Promise<ResultData<T>> {\n return this.service.delete(`${url}?sessionId=${this.sessionId()}`, { params, ..._object });\n }\n\n // 载入用户 router\n initRouter(router: VueRouter) {\n this.router = router;\n }\n}\n\nexport default new RequestHttp(DEFAULT_CONFIG);\n","export const DEFAULT_CONFIG = {\n // 默认地址请求地址,可在 .env 开头文件中修改\n // baseURL: import.meta.env.VITE_API_URL as string,\n // 设置超时时间(10s)\n timeout: 10000,\n // 跨域时候允许携带凭证\n withCredentials: true,\n};\n","import http from \"../\";\nimport { View } from \"../../types\";\n\nconst viewApiUrl = {\n // 视图 - 获取所有视图 GET\n getAllView: \"/restapi/s09/gview/boards/all\",\n // 视图 - 获取一个视图 GET\n getOneView: \"/restapi/s09/gview/views\",\n // 数据 - 获取数据 POST\n getViewData: \"/restapi/s09/gview/data\",\n // 触发 - 上传文件 POST\n uploadFile: \"/restapi/s09/gview/active/upload_file\",\n // 触发 - 触发文件上传事件 POST\n activeFile: \"/restapi/s09/gview/active/file\",\n // 触发 - 触发confirm事件 POST\n confirm: \"/restapi/s09/gview/active/confirm\",\n // 触发 - 触发批量操作事件 POST\n batch: \"/restapi/s09/gview/active/batch\",\n};\n\n// 视图 - 获取所有视图 GET\nexport const getAllView = (params) => http.get<View.viewInfo[]>(viewApiUrl.getAllView, params);\n// 视图 - 获取一个视图 GET\nexport const getOneView = (params) => http.get<View.viewInfo>(viewApiUrl.getOneView, params);\n// 数据 - 获取数据 POST\nexport const getViewData = (params: View.ReqViewDataParam) => http.post<View.viewData>(viewApiUrl.getViewData, params);\n// 触发 - 触发confirm事件 POST\nexport const confirm = (params: View.ReqConfirmParam) => http.post(viewApiUrl.confirm, params);\n// 触发 - 触发批量操作事件 POST\nexport const batchAction = (params) => http.post(viewApiUrl.batch, params);\n// 触发 - 上传文件 POST\nexport const activeFile = (params) => http.post(viewApiUrl.activeFile, params);\n","<template>\n <t-select\n v-model=\"value\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n :placeholder=\"target.name\"\n :size=\"size\"\n :options=\"options\"\n :multiple=\"multiple\"\n :min-collapsed-num=\"2\"\n :disabled=\"disabled\"\n clearable\n />\n</template>\n\n<script>\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { getViewData } from \"../../../api/modules/view\";\n\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n target: Object,\n targetViewName: String,\n size: {\n type: String,\n default: \"medium\",\n },\n multiple: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n value: this.modelValue,\n options: [],\n\n // 路径查询参数\n queryProps: {},\n };\n },\n watch: {\n modelValue: {\n handler(value) {\n this.value = value;\n },\n deep: true,\n },\n\n \"this.$route.query\": {\n handler() {\n const { query } = this.$route;\n\n if (query.props != null) {\n this.queryProps = JSON.parse(query.props);\n }\n },\n deep: true,\n immediate: true,\n },\n },\n computed: {\n listData() {\n return this.target.listData;\n },\n dataId() {\n return this.listData.dataId;\n },\n propsModel() {\n let tempModel = {};\n\n // 地址查询参数\n Object.assign(tempModel, this.queryProps);\n return tempModel;\n },\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n },\n handleBlur(value) {\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n async getSelectData() {\n const res = await getViewData({\n viewName: this.targetViewName,\n dataId: this.dataId,\n props: this.propsModel,\n });\n\n if (res.state === 200) {\n let list = res.data;\n if (list != null && list.length != 0) {\n let arr = [];\n list.forEach((item) => {\n if (item != null) {\n arr.push({\n key: item[this.listData.keyName],\n label: item[this.listData.titleName],\n value: item[this.listData.valueName],\n });\n }\n });\n this.options = arr;\n }\n } else {\n MessagePlugin.error(`获取数据失败:${res.message}`);\n }\n },\n },\n mounted() {\n this.getSelectData();\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <div>\n <t-date-picker\n v-if=\"target.itemType === 'date_selector' || target.itemType === 'date_time_selector'\"\n :enable-time-picker=\"target.itemType === 'date_time_selector'\"\n :placeholder=\"target.placeholder\"\n v-model=\"dateTimeValue\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n :format=\"target.format || 'YYYY-MM-DD HH:mm:ss'\"\n valueType=\"time-stamp\"\n :disabled=\"disabled\"\n clearable\n />\n <t-time-picker\n v-if=\"target.itemType === 'time_selector'\"\n :placeholder=\"target.placeholder\"\n v-model=\"dateTimeValue\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n :format=\"target.format || 'HH:mm:ss'\"\n clearable\n />\n </div>\n</template>\n\n<script>\nimport dayjs from \"dayjs\";\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n target: Object,\n },\n data() {\n return {\n value: \"\",\n };\n },\n computed: {\n dateTimeValue: {\n get() {\n if (this.modelValue == 0) {\n return \"\";\n } else {\n if (this.target.itemType == \"time_selector\") {\n return dayjs(this.modelValue).format(\"HH:mm:ss\");\n } else {\n return this.modelValue;\n }\n }\n },\n set(value) {\n this.value = value;\n if (this.target.itemType == \"time_selector\") {\n this.value = dayjs(value, \"HH:mm:ss\").valueOf();\n }\n },\n },\n },\n methods: {\n handleChange() {\n this.$emit(\"update:modelValue\", this.value);\n },\n handleBlur(value) {\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <GCommonHeader>\n <template #left-operations>\n <!-- 上传按钮 -->\n <template v-if=\"headerUploadBtns\">\n <GHeaderUpload\n v-for=\"btn in headerUploadBtns\"\n :key=\"btn.buttonId\"\n :target=\"btn\"\n :targetViewName=\"viewName\"\n />\n </template>\n <t-button\n v-for=\"btn in headerCommonBtns\"\n :key=\"btn.buttonId\"\n theme=\"primary\"\n @click=\"handleHeaderButtonClick(btn)\"\n >\n <!-- <template #icon>\n\t\t\t\t\t\t<t-icon :name=\"btn.icon\"></t-icon>\n\t\t\t\t\t</template> -->\n {{ btn.name }}\n </t-button>\n </template>\n\n <template #right-operations>\n <div v-for=\"(item, index) in headerFilters\" :key=\"index\">\n <div v-if=\"item.itemType === 'text_input'\">\n <GFormInput :modelValue.sync=\"filterForm[item.keyName]\" :placeholder=\"item.placeholder\" />\n </div>\n <div v-if=\"item.itemType === 'selector'\">\n <GFormSelect\n :modelValue.sync=\"filterForm[item.keyName]\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n ></GFormSelect>\n </div>\n <div\n v-if=\"\n item.itemType === 'date_selector' ||\n item.itemType === 'time_selector' ||\n item.itemType === 'date_time_selector'\n \"\n >\n <GFormSelectDateTime\n :modelValue.sync=\"filterForm[item.keyName]\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n />\n </div>\n </div>\n </template>\n </GCommonHeader>\n</template>\n\n<script>\nimport { PREFIX } from \"../../config\";\nimport GCommonHeader from \"../common/GCommonHeader/index.vue\";\nimport GFormInput from \"../GForm/components/GFormInput.vue\";\nimport GFormSelect from \"../GForm/components/GFormSelect.vue\";\nimport GFormSelectDateTime from \"../GForm/components/GFormSelectDateTime.vue\";\nimport GHeaderUpload from \"./components/GHeaderUpload.vue\";\n\nexport default {\n name: \"Gheader\",\n components: {\n GCommonHeader,\n GFormInput,\n GFormSelect,\n GFormSelectDateTime,\n GHeaderUpload,\n },\n props: {\n viewName: String,\n headerInfo: Object,\n },\n data() {\n return {\n PREFIX,\n timer: null,\n filterForm: {},\n };\n },\n computed: {\n // 头部操作按钮\n headerCommonBtns() {\n return this.headerInfo?.buttons.filter((button) => button.action != \"UPLOAD_FILE\");\n },\n // 头部上传按钮\n headerUploadBtns() {\n return this.headerInfo?.buttons.filter((button) => button.action == \"UPLOAD_FILE\");\n },\n headerSearchBar() {\n return this.headerInfo?.searchBar ?? {};\n },\n headerFilters() {\n return this.headerInfo?.searchBar?.filters ?? [];\n },\n },\n watch: {\n filterForm: {\n handler() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n this.handleFilterChange();\n }, 500);\n },\n deep: true,\n },\n },\n methods: {\n handleFilterChange() {\n for (const key in this.filterForm) {\n if ((this.filterForm[key] ?? \"\") === \"\") {\n delete this.filterForm[key];\n }\n }\n this.$emit(\"header-filter-change\", this.filterForm);\n },\n handleHeaderButtonClick(button) {\n this.$emit(\"header-button-action\", button);\n },\n },\n};\n</script>\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <t-upload\n :action=\"uploadApi\"\n @success=\"handleUploadSuccess\"\n @fail=\"handleUploadError\"\n :showUploadProgress=\"false\"\n style=\"padding: 0 8px 0 0\"\n >\n <t-button>\n <template>\n <t-icon name=\"upload\"></t-icon>\n </template>\n {{ target.name }}\n </t-button>\n </t-upload>\n</template>\n\n<script>\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { activeFile } from \"../../../api/modules/view\";\n\nexport default {\n props: {\n target: Object,\n targetViewName: String,\n },\n data() {\n return {\n uploadData: {},\n };\n },\n computed: {\n // 上传API从用户传入的config中获取\n uploadApi() {\n return this.$store.getters[\"setting/uploadApi\"];\n },\n },\n methods: {\n handleUploadSuccess(event) {\n const { response } = event;\n\n if (response.data?.length) {\n MessagePlugin.success(`上传成功`);\n this.handleActiveFile(response.data[0]);\n } else {\n console.log(response);\n MessagePlugin.error(`上传失败:${response.message}`);\n }\n },\n handleActiveFile(fileUrl) {\n let arr = [];\n arr.push(fileUrl);\n activeFile({\n boardName: this.targetViewName,\n buttonId: this.target.buttonId,\n props: {},\n fileUrls: arr,\n }).then((res) => {\n if (res.state == 200) {\n MessagePlugin.success(\"导入成功\");\n } else {\n MessagePlugin.error(\"导入失败\");\n }\n });\n },\n handleUploadError(error) {\n MessagePlugin.error(`上传失败:${error}`);\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <div :class=\"`${PREFIX}-common-table`\">\n <t-enhanced-table\n v-bind=\"commonTableProps\"\n :hover=\"true\"\n :bordered=\"true\"\n table-layout=\"auto\"\n maxHeight=\"calc(100vh - 281px)\"\n >\n <template v-for=\"(index, name) in $scopedSlots\" #[name]=\"data\">\n <slot :name=\"name\" v-bind=\"{ ...data }\"></slot>\n </template>\n </t-enhanced-table>\n </div>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\n\nexport default {\n name: \"GCommonTable\",\n props: {\n commonTableProps: {\n required: true,\n },\n },\n data() {\n return {\n PREFIX,\n };\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <t-tag>{{ modelValue }}</t-tag>\n</template>\n\n<script>\nexport default {\n props: {\n modelValue: { required: true },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-checkbox v-model=\"value\" @change=\"handleChange\" :disabled=\"disabled\" />\n</template>\n\n<script>\nimport { isVoid } from \"../../../utils\";\n\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n },\n data() {\n return {\n value: false,\n };\n },\n watch: {\n modelValue: {\n handler() {\n this.value = this.modelValue;\n\n if (!isVoid(this.modelValue)) {\n this.value = false;\n }\n },\n immediate: true,\n },\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-switch v-model=\"value\" @change=\"handleChange\" :disabled=\"disabled\" />\n</template>\n\n<script>\nimport { isVoid } from \"../../../utils\";\n\nexport default {\n props: {\n target: Object,\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n },\n data() {\n return {\n value: this.modelValue,\n };\n },\n watch: {\n modelValue() {\n this.value = this.modelValue;\n\n if (!isVoid(this.modelValue)) {\n this.value = false;\n }\n },\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-radio-group v-model=\"value\" @change=\"handleChange\" :disabled=\"disabled\">\n <t-radio v-for=\"item in selectList\" :key=\"item.key\" :value=\"item.value\">{{ item.label }}</t-radio>\n </t-radio-group>\n</template>\n\n<script>\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { getViewData } from \"../../../api/modules/view\";\n\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n target: Object,\n targetViewName: String,\n },\n data() {\n return {\n value: this.modelValue,\n selectList: [],\n\n // 路径查询参数\n queryProps: {},\n };\n },\n watch: {\n modelValue() {\n this.value = this.modelValue;\n },\n\n \"this.$route.query\": {\n handler() {\n const { query } = this.$route;\n\n if (query.props != null) {\n this.queryProps = JSON.parse(query.props);\n }\n },\n deep: true,\n immediate: true,\n },\n },\n computed: {\n listData() {\n return this.target.listData;\n },\n dataId() {\n return this.listData.dataId;\n },\n propsModel() {\n let tempModel = {};\n\n // 地址查询参数\n Object.assign(tempModel, this.queryProps);\n return tempModel;\n },\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n async getSelectData() {\n const res = await getViewData({\n viewName: this.targetViewName,\n dataId: this.dataId,\n props: this.propsModel,\n });\n\n if (res.state === 200) {\n let list = res.data;\n if (list != null && list.length != 0) {\n let arr = [];\n list.forEach((item) => {\n if (item != null) {\n arr.push({\n key: item[this.listData.keyName],\n label: item[this.listData.titleName],\n value: item[this.listData.valueName],\n });\n }\n });\n\n this.selectList = arr;\n }\n } else {\n MessagePlugin.error(`获取数据失败:${res.message}`);\n }\n },\n },\n mounted() {\n this.getSelectData();\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-tree-select\n v-model=\"value\"\n :data=\"treeOptions\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n :placeholder=\"target.placeholder\"\n :multiple=\"multiple\"\n :min-collapsed-num=\"3\"\n :treeProps=\"{ valueMode: 'all' }\"\n :disabled=\"disabled\"\n clearable\n ></t-tree-select>\n</template>\n\n<script>\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { getViewData } from \"../../../api/modules/view\";\nimport { initTreeSelectorData } from \"../../../utils\";\n\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n target: Object,\n targetViewName: String,\n multiple: {\n type: Boolean,\n default: true,\n },\n },\n data() {\n return {\n value: this.modelValue,\n treeOptions: [],\n\n // 路径查询参数\n queryProps: {},\n };\n },\n watch: {\n modelValue() {\n this.value = this.modelValue;\n },\n\n \"this.$route.query\": {\n handler() {\n const { query } = this.$route;\n\n if (query.props != null) {\n this.queryProps = JSON.parse(query.props);\n }\n },\n deep: true,\n immediate: true,\n },\n },\n computed: {\n treeData() {\n return this.target.treeData;\n },\n dataId() {\n return this.treeData.dataId;\n },\n\n propsModel() {\n let tempModel = {};\n\n // 地址查询参数\n Object.assign(tempModel, this.queryProps);\n return tempModel;\n },\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n },\n handleBlur(value) {\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n async getSelectData() {\n const res = await getViewData({\n viewName: this.targetViewName,\n dataId: this.dataId,\n props: this.propsModel,\n });\n\n if (res.state === 200) {\n let list = res.data;\n if (list != null && list.length != 0) {\n let arr = initTreeSelectorData({\n list,\n keyName: this.treeData.valueName,\n valueName: this.treeData.valueName,\n titleName: this.treeData.titleName,\n parentKey: null,\n parentKeyName: this.treeData.parentKeyName,\n });\n\n this.treeOptions = arr;\n }\n } else {\n MessagePlugin.error(`获取数据失败:${res.message}`);\n }\n },\n },\n mounted() {\n this.getSelectData();\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-cascader\n v-model=\"value\"\n :options=\"cascaderOptions\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n :multiple=\"multiple\"\n :min-collapsed-num=\"2\"\n :disabled=\"disabled\"\n clearable\n />\n</template>\n\n<script>\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { getViewData } from \"../../../api/modules/view\";\nimport { initTreeSelectorData } from \"../../../utils\";\n\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n target: Object,\n targetViewName: String,\n multiple: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n value: this.modelValue,\n cascaderOptions: [],\n\n // 路径查询参数\n queryProps: {},\n };\n },\n watch: {\n modelValue() {\n this.value = this.modelValue;\n },\n\n \"this.$route.query\": {\n handler() {\n const { query } = this.$route;\n\n if (query.props != null) {\n this.queryProps = JSON.parse(query.props);\n }\n },\n deep: true,\n immediate: true,\n },\n },\n computed: {\n treeData() {\n return this.target.treeData;\n },\n dataId() {\n return this.treeData.dataId;\n },\n\n propsModel() {\n let tempModel = {};\n\n // 地址查询参数\n Object.assign(tempModel, this.queryProps);\n return tempModel;\n },\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n },\n handleBlur(value) {\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n async getSelectData() {\n const res = await getViewData({\n viewName: this.targetViewName,\n dataId: this.dataId,\n props: this.propsModel,\n });\n\n if (res.state === 200) {\n let list = res.data;\n if (list != null && list.length != 0) {\n let arr = initTreeSelectorData({\n list,\n parentKey: null,\n keyName: this.treeData.keyName,\n valueName: this.treeData.valueName,\n titleName: this.treeData.titleName,\n parentKeyName: this.treeData.parentKeyName,\n });\n\n this.cascaderOptions = arr;\n }\n } else {\n MessagePlugin.error(`获取数据失败:${res.message}`);\n }\n },\n },\n mounted() {\n this.getSelectData();\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <div>\n <t-upload\n ref=\"uploadRef\"\n theme=\"file\"\n v-model=\"value\"\n :action=\"uploadApi\"\n :accept=\"target.accept\"\n :max=\"target.limit\"\n :size=\"target.maxSize\"\n :disabled=\"disabled\"\n :is-batch-upload=\"true\"\n @change=\"handleChange\"\n @fail=\"handleUploadError\"\n >\n </t-upload>\n </div>\n</template>\n\n<script>\nimport { MessagePlugin } from \"tdesign-vue\";\nexport default {\n props: {\n modelValue: { required: true },\n fileName: String,\n tips: String,\n target: Object,\n targetViewName: String,\n disabled: Boolean,\n },\n data() {\n return {\n value: [],\n };\n },\n watch: {\n modelValue(value) {\n if ((value ?? \"\") != \"\") {\n this.value = [{ name: this.fileName, url: value }];\n } else {\n this.value = [];\n }\n },\n },\n computed: {\n // 上传API从用户传入的config中获取\n uploadApi() {\n return this.$store.getters[\"setting/uploadApi\"];\n },\n },\n\n methods: {\n handleChange() {\n // this.$emit(\"update:modelValue\", this.value);\n if (this.value.length) {\n const { name, response } = this.value[0];\n if (response.data?.length) {\n this.uploadData = response.data;\n\n // this.value = response.data[0];\n this.$emit(\"update:modelValue\", response.data[0]);\n this.$emit(\"blur:modelValue\", response.data[0]);\n this.$emit(\"update:fileName\", name);\n MessagePlugin.success(`上传成功`);\n } else {\n console.log(response);\n MessagePlugin.error(`上传失败:${response.message}`);\n }\n }\n },\n handleUploadError(error) {\n MessagePlugin.error(`上传失败:${error}`);\n },\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\">\n.t-upload__single-input-preview {\n max-width: none;\n}\n</style>\n","<template>\n <GCommonTable\n v-if=\"!isReload\"\n :commonTableProps=\"{\n data: data,\n rowKey: rowKey,\n columns: tableColumns,\n pagination: tablePagination,\n selectedRowKeys: selectedRowKeys,\n onSelectChange: handleSelectChange,\n }\"\n >\n <!-- 纯文本单元格 -->\n <template #TEXT=\"{ col, row }\">{{ returnValue(col, row) }}</template>\n <!-- 枚举文本类型单元格 -->\n <template #ENUMS=\"{ col, row }\"> <span v-html=\"returnEnumsValue(col, row)\"></span></template>\n <!-- 日期格式类型单元格 -->\n <template #DATE=\"{ col, row }\"> {{ returnDateValue(col, row) }} </template>\n <!-- 二维码展示单元格 -->\n <template #QR_CODE=\"{ col, row }\">\n <t-popup>\n <t-button variant=\"text\" theme=\"primary\">预览</t-button>\n <template #content>\n <vue-qr :text=\"returnValue(col, row)\" :size=\"80\" :margin=\"0\" />\n <div style=\"text-align: center\">{{ row[\"code\"] }}</div>\n </template>\n </t-popup>\n </template>\n <!-- 表单项类型单元格 -->\n <template #FORM_ITEM=\"{ col, row }\">\n <GTableForm :viewName=\"viewName\" :col=\"col\" :row=\"row\" @blur=\"handleTableFormChange\" />\n </template>\n <!-- 图片预览单元格 -->\n <template #IMAGE=\"{ col, row }\">\n <t-image :src=\"returnValue(col, row)\" fit=\"cover\" shape=\"round\" :style=\"{ width: '80px', height: '80px' }\">\n <template #error>\n <t-icon v-if=\"col.name == '头像'\" name=\"user\" />\n <t-icon v-else name=\"file-image\" />\n </template>\n <template #loading>\n <t-icon v-if=\"col.name == '头像'\" name=\"user\" />\n <t-icon v-else name=\"file-image\" size=\"large\" />\n </template>\n </t-image>\n </template>\n <!-- 操作栏 -->\n <template #BUTTONS=\"{ col, row }\">\n <!-- <template v-if=\"handleFilterColumnBtns(col.buttons, row).length <= 3\"> -->\n <t-button\n theme=\"primary\"\n variant=\"text\"\n v-for=\"btns in handleFilterColumnBtns(col.buttons, row)\"\n :key=\"btns.buttonId\"\n @click=\"handleTableButtonClick(btns, row)\"\n style=\"width: '88px'\"\n >\n {{ btns.name }}\n </t-button>\n </template>\n </GCommonTable>\n</template>\n\n<script>\nimport { PREFIX } from \"../../config\";\nimport { evalContext, vFun, initTableColumns } from \"../../utils\";\n\nimport VueQr from \"vue-qr\";\nimport dayjs from \"dayjs\";\nimport Mustache from \"mustache\";\nimport GCommonTable from \"../common/GCommonTable/index.vue\";\nimport GTableForm from \"./components/GTableForm.vue\";\n\nexport default {\n name: \"GTable\",\n components: {\n GCommonTable,\n GTableForm,\n VueQr,\n },\n props: {\n viewName: String,\n boardInfo: Object,\n tableData: Array,\n paginationProps: Object,\n },\n data() {\n return {\n PREFIX,\n isReload: false,\n selectedRowKeys: [],\n tablePagination: {\n showJumper: true,\n },\n };\n },\n computed: {\n data() {\n return this.tableData;\n },\n rowKey() {\n return this.boardInfo.tableData.keyName;\n },\n tableColumns() {\n return initTableColumns(this.boardInfo.columns);\n },\n },\n methods: {\n // 处理表格选中数据\n handleSelectChange(value, { selectedRowData }) {\n this.selectedRowKeys = value;\n\n this.$emit(\"return-selected-key\", this.selectedRowKeys);\n },\n // 处理表格普通数据\n returnValue(column, row) {\n if (column.value != \"\") {\n return Mustache.render(column.value, { item: row });\n } else if (column.value == \"\") {\n return row[column.keyName];\n }\n },\n // 处理表格枚举数据类型\n returnEnumsValue(column, row) {\n const enums = column.enums;\n if (enums != null) {\n let targetArr = enums.filter((element) => {\n if (row[column.keyName] == null) {\n row[column.keyName] = \"\";\n }\n\n if (element.value == String(row[column.keyName])) {\n return element.text;\n }\n });\n if (targetArr.length) {\n return targetArr.shift().text;\n } else {\n return row[column.keyName];\n }\n }\n },\n // 处理表格日期数据类型\n returnDateValue(column, row) {\n // return dayjs(target).format(column.format);\n if (column.value != \"\") {\n return Mustache.render(column.value, { item: row });\n } else if (column.value == \"\") {\n return dayjs(row[column.keyName]).format(\"YYYY-MM-DD HH:mm:ss\");\n }\n },\n // 过滤处理表格操作按钮\n handleFilterColumnBtns(columnBtns, row) {\n window.v = vFun;\n\n return columnBtns.filter((element) => {\n if (element.showIf != \"1\") {\n let result, evalResult;\n try {\n result = Mustache.render(element.showIf, { item: row });\n evalResult = evalContext(result, { item: row });\n } catch (e) {\n console.warn(e);\n }\n return evalResult;\n } else {\n return element;\n }\n });\n },\n // 处理表格操作按钮动作\n handleTableButtonClick(button, row) {\n this.$emit(\"table-button-action\", button, row);\n },\n // 处理表格表单提交\n handleTableFormChange(item, model) {\n this.$emit(\"table-form-confirm\", item, model);\n },\n },\n watch: {\n tableData: {\n handler() {\n this.isReload = true;\n\n this.$nextTick(() => {\n this.isReload = false;\n });\n },\n deep: true,\n immediate: true,\n },\n paginationProps: {\n handler(value) {\n let tempPagination = {};\n Object.assign(tempPagination, value);\n\n this.tablePagination.current = tempPagination.page + 1;\n this.tablePagination.pageSize = tempPagination.count;\n this.tablePagination.total = tempPagination.totalCount;\n\n /* eslint-disable */\n let that = this;\n this.tablePagination.onChange = function (pageInfo) {\n that.$emit(\"return-pagination-props\", pageInfo);\n };\n },\n immediate: true,\n deep: true,\n },\n },\n mounted() {\n if (this.headerFilters) {\n this.headerFilters.forEach((filter) => {\n this.filterForm[filter.keyName] = \"\";\n });\n }\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <div class=\"table-form-items\">\n <template v-for=\"item in formItems\">\n <!-- 标签展示 -->\n <GFormLabel v-if=\"item.itemType === 'label'\" :modelValue=\"getProperty(formModel, col.colKey)\" />\n\n <!-- 文字输入 -->\n <GFormInput\n v-if=\"item.itemType == 'text_input'\"\n :inputType=\"item.inputType.toLowerCase()\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 多选框 -->\n <GFormCheckBox\n v-if=\"item.itemType === 'check_box'\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 开关 -->\n <GFormSwitch\n v-if=\"item.itemType === 'switch'\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 单选框 -->\n <GFormRadio\n v-if=\"item.itemType === 'radio'\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 选择器 -->\n <GFormSelect\n v-if=\"item.itemType === 'selector' || item.itemType === 'multi_selector'\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :multiple=\"item.itemType === 'multi_selector'\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 日期时间选择器 -->\n <GFormSelectDateTime\n v-if=\"\n item.itemType === 'date_selector' ||\n item.itemType === 'time_selector' ||\n item.itemType === 'date_time_selector'\n \"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 多级选择框 -->\n <GFormTreeCheckBox\n v-if=\"item.itemType === 'tree_check_box'\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 级联选择器 -->\n <GFormCascader\n v-if=\"item.itemType === 'multi_tree_selector' || item.itemType === 'tree_selector'\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :multiple=\"item.itemType === 'multi_tree_selector'\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 文件上传 -->\n <GFormUpload\n v-if=\"item.itemType === 'file'\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :tips=\"item.placeholder || '请选择上传文件'\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n </template>\n </div>\n</template>\n\n<script>\nimport GFormLabel from \"../../GForm/components/GFormLabel.vue\";\nimport GFormInput from \"../../GForm/components/GFormInput.vue\";\nimport GFormCheckBox from \"../../GForm/components/GFormCheckBox.vue\";\nimport GFormSwitch from \"../../GForm/components/GFormSwitch.vue\";\nimport GFormRadio from \"../../GForm/components/GFormRadio.vue\";\nimport GFormSelect from \"../../GForm/components/GFormSelect.vue\";\nimport GFormSelectDateTime from \"../../GForm/components/GFormSelectDateTime.vue\";\nimport GFormTreeCheckBox from \"../../GForm/components/GFormTreeCheckBox.vue\";\nimport GFormCascader from \"../../GForm/components/GFormCascader.vue\";\nimport GFormUpload from \"../../GForm/components/GFormUpload.vue\";\n\nimport { getProperty, setProperty } from \"../../../utils\";\n\nexport default {\n components: {\n GFormInput,\n GFormLabel,\n GFormCheckBox,\n GFormSwitch,\n GFormRadio,\n GFormSelect,\n GFormSelectDateTime,\n GFormTreeCheckBox,\n GFormCascader,\n GFormUpload,\n },\n props: {\n col: Object,\n row: Object,\n viewName: String,\n },\n data() {\n return {\n formModel: {\n ...this.row,\n },\n };\n },\n computed: {\n formItems() {\n return this.col?.formItems;\n },\n },\n methods: {\n getProperty,\n handleAfterUpdateValue(keyName, value) {\n setProperty(this.formModel, keyName, value);\n\n this.$forceUpdate();\n },\n handleAfterValueBlur(item, value) {\n this.$emit(\"blur\", item, this.formModel);\n },\n },\n watch: {\n row: {\n handler(newValue) {\n Object.assign(this.formModel, this.row);\n },\n immediate: true,\n deep: true,\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.table-form-items {\n width: 250px;\n}\n</style>\n","<template>\n <div :class=\"`${PREFIX}-common-form`\">\n <t-form :class=\"`${PREFIX}-form`\" v-bind=\"commonFormProps\">\n <div :class=\"`${PREFIX}-form__body`\">\n <slot name=\"body\"> </slot>\n </div>\n </t-form>\n\n <div :class=\"`${PREFIX}-form__footer`\">\n <slot name=\"footer\"> </slot>\n </div>\n </div>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\n\nexport default {\n name: \"GCommonForm\",\n props: {\n commonFormProps: {\n required: true,\n },\n },\n data() {\n return {\n PREFIX,\n };\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <div :id=\"blockId\" :ref=\"name\">\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n name: String,\n blockType: String,\n showIf: {\n required: true,\n },\n },\n data() {\n return {\n blockId: \"\",\n };\n },\n methods: {\n updateId() {\n if (this.blockType == \"block_start\" && !this.showIf) {\n this.blockId = `block_start_${this.name}`;\n } else if (this.blockType == \"block_start\" && this.showIf) {\n this.blockId = `block_${this.name}`;\n } else if (this.blockType == \"block_end\") {\n this.blockId = `block_end_${this.name}`;\n }\n },\n handleBlockShowFlag() {\n if (this.blockType == \"block_start\" && !this.showIf) {\n let start = this.$refs[`${this.name}`];\n\n for (let el = start; el; el = el.nextElementSibling) {\n el.__vue__.blockShowFlag = false;\n\n if (el.matches(`#block_end_${this.name}`)) {\n break;\n }\n }\n } else if (this.blockType == \"block_start\" && this.showIf) {\n let start = this.$refs[`${this.name}`];\n\n for (let el = start; el; el = el.nextElementSibling) {\n el.__vue__.blockShowFlag = true;\n\n if (el.matches(`#block_end_${this.name}`)) {\n break;\n }\n }\n }\n },\n },\n mounted() {\n this.updateId();\n this.handleBlockShowFlag();\n },\n watch: {\n showIf: {\n handler() {\n this.updateId();\n this.handleBlockShowFlag();\n },\n immediate: true,\n deep: true,\n },\n },\n};\n</script>\n","<template>\n <div :class=\"`${PREFIX}-form-item`\" :id=\"item.keyName ? item.keyName : item.name\">\n <t-divider\n v-if=\"item.itemType === 'line' && item.name && handleItemShowIf(item.showIf, item) && blockShowFlag\"\n align=\"left\"\n >\n {{ item.name }}\n </t-divider>\n <t-form-item\n v-else-if=\"handleItemShowIf(item.showIf, item) && blockShowFlag\"\n :requiredMark=\"item.required && !handleItemDisableIf(item.disableIf, item)\"\n :label=\"item.name\"\n :name=\"item.inputType != 'RE_PASSWORD' ? item.keyName : 'rePassword'\"\n >\n <!-- 标签展示 -->\n <GFormLabel v-if=\"item.itemType === 'label'\" :modelValue=\"getProperty(formModel, item.keyName)\" />\n <!-- 文字输入 -->\n <GFormInput\n v-if=\"item.itemType === 'text_input' && item.inputType != 'RE_PASSWORD'\"\n :inputType=\"item.inputType.toLowerCase()\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :placeholder=\"item.placeholder\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 确认密码输入 -->\n <GFormInput\n v-if=\"item.itemType === 'text_input' && item.inputType == 'RE_PASSWORD'\"\n :inputType=\"item.inputType.toLowerCase()\"\n :modelValue=\"getProperty(formModel, 'rePassword')\"\n :placeholder=\"item.placeholder\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue('rePassword', $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 多选框 -->\n <GFormCheckBox\n v-if=\"item.itemType === 'check_box'\"\n :modelValue=\"getProperty(formModel, item.keyName, false)\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n <!-- 开关 -->\n <GFormSwitch\n v-if=\"item.itemType === 'switch'\"\n :target=\"item\"\n :modelValue=\"getProperty(formModel, item.keyName, false)\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n <!-- 单选框 -->\n <GFormRadio\n v-if=\"item.itemType === 'radio'\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 选择器 -->\n <GFormSelect\n v-if=\"item.itemType === 'selector' || item.itemType === 'multi_selector'\"\n :key=\"item.listData.dataId\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :multiple=\"item.itemType === 'multi_selector'\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 日期时间选择器 -->\n <GFormSelectDateTime\n v-if=\"\n item.itemType === 'date_selector' ||\n item.itemType === 'time_selector' ||\n item.itemType === 'date_time_selector'\n \"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 多级选择框 -->\n <GFormTreeCheckBox\n v-if=\"item.itemType === 'tree_check_box'\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 级联选择器 -->\n <GFormCascader\n v-if=\"item.itemType === 'multi_tree_selector' || item.itemType === 'tree_selector'\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :multiple=\"item.itemType === 'multi_tree_selector'\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 文件上传 -->\n <GFormUpload\n v-if=\"item.itemType === 'file'\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :target=\"item\"\n :target-view-name=\"viewName\"\n :tips=\"item.placeholder || '请选择上传文件'\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n :fileName=\"\n getProperty(formModel, item.filenameKeyName) ||\n getProperty(formModel, item.keyName).split('/').slice(-1)[0]\n \"\n @update:fileName=\"handleAfterUpload(item.filenameKeyName, $event)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 富文本编辑器 -->\n <GFormEditor\n v-if=\"item.itemType === 'rich_text'\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n </t-form-item>\n </div>\n</template>\n\n<script>\nimport GFormLabel from \"./GFormLabel.vue\";\nimport GFormInput from \"./GFormInput.vue\";\nimport GFormCheckBox from \"./GFormCheckBox.vue\";\nimport GFormSwitch from \"./GFormSwitch.vue\";\nimport GFormRadio from \"./GFormRadio.vue\";\nimport GFormSelect from \"./GFormSelect.vue\";\nimport GFormSelectDateTime from \"./GFormSelectDateTime.vue\";\nimport GFormTreeCheckBox from \"./GFormTreeCheckBox.vue\";\nimport GFormCascader from \"./GFormCascader.vue\";\nimport GFormUpload from \"./GFormUpload.vue\";\nimport GFormEditor from \"./GFormEditor.vue\";\n\nimport { PREFIX } from \"../../../config\";\nimport { evalContext, getProperty, setProperty } from \"../../../utils\";\nimport Mustache from \"mustache\";\n\nexport default {\n components: {\n GFormLabel,\n GFormInput,\n GFormCheckBox,\n GFormSwitch,\n GFormRadio,\n GFormSelect,\n GFormSelectDateTime,\n GFormTreeCheckBox,\n GFormCascader,\n GFormUpload,\n GFormEditor,\n },\n props: {\n viewName: {\n required: true,\n },\n formModel: {\n required: true,\n },\n item: {\n type: Object,\n required: true,\n },\n formWhiteList: {\n type: Array,\n },\n },\n\n data() {\n return {\n PREFIX,\n disableFlag: false,\n blockShowFlag: true,\n };\n },\n methods: {\n getProperty,\n handleAfterUpdateValue(keyName, value) {\n this.$emit(\"after-update-value\", keyName, value);\n },\n handleAfterUpload(keyName, value) {\n this.$emit(\"after-upload\", keyName, value);\n },\n initEmptyFormItems(itemType) {\n switch (itemType) {\n // 开关和勾选框的初始值 false\n case \"check_box\":\n case \"switch\": {\n return false;\n }\n\n case \"multi_selector\":\n case \"tree_check_box\":\n case \"multi_tree_selector\": {\n return [];\n }\n\n default: {\n return null;\n }\n }\n },\n handleBeforeDestroyFormItem(item) {\n this.$emit(\"before-destroy\", item);\n },\n handleItemShowIf(showIf, item = {}) {\n if (typeof showIf != \"undefined\" && showIf != 1) {\n let result, evalResult;\n try {\n result = Mustache.render(showIf, { form: this.formModel });\n evalResult = evalContext(result, { form: this.formModel });\n // console.log(\"showIf\", showIf, \"mustacheResult\", result, \"evalResult\", evalResult);\n // console.log(showIf, result, evalResult);\n } catch (e) {\n console.warn(showIf, e);\n }\n\n return evalResult;\n } else {\n return true;\n }\n },\n handleItemDisableIf(disableIf, item = {}) {\n if (disableIf != 0) {\n let result, evalResult;\n try {\n result = Mustache.render(disableIf, { form: this.formModel });\n evalResult = evalContext(result, { form: this.formModel });\n // console.log(\"disableIf\", disableIf, \"mustacheResult\", result, \"evalResult\", evalResult);\n // console.log(disableIf, result, evalResult);\n } catch (e) {\n console.warn(disableIf, e);\n }\n\n // 设置为禁用后清空表单填写过的数据,以防提交非空数据\n if (evalResult !== \"\") {\n if (evalResult && (item?.keyName ?? \"\" != \"\")) {\n setProperty(this.formModel, item.keyName, this.initEmptyFormItems(item.itemType));\n }\n }\n\n this.disableFlag = evalResult;\n return evalResult;\n } else {\n return false;\n }\n },\n },\n};\n</script>\n","<template>\n <div class=\"g-form-editor\">\n <quillEditor v-model=\"value\" @change=\"handleEditorChange($event)\" />\n </div>\n</template>\n\n<script>\nimport { quillEditor } from \"vue-quill-editor\";\nimport \"quill/dist/quill.core.css\";\nimport \"quill/dist/quill.snow.css\";\n\nexport default {\n components: {\n quillEditor,\n },\n props: {\n modelValue: {\n required: true,\n },\n },\n data() {\n return {\n value: this.modelValue,\n };\n },\n watch: {\n modelValue() {\n this.value = this.modelValue;\n },\n },\n methods: {\n handleEditorChange(content) {\n this.$emit(\"update:modelValue\", content.html);\n },\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <GCommonForm\n :commonFormProps=\"{\n data: formModel,\n rules: formRules,\n labelAlign: 'right',\n labelWidth: '150px',\n ref: 'form',\n }\"\n ref=\"commonForm\"\n >\n <template #body>\n <template v-for=\"item in formItems\">\n <GFormBlock\n v-if=\"item.itemType == 'block_start' || item.itemType === 'block_end'\"\n :ref=\"item.itemType == 'block_start' ? `block_${item.name}_Ref` : 'block_end'\"\n :name=\"item.name\"\n :blockType=\"item.itemType\"\n :showIf=\"handleItemShowIf(item.showIf)\"\n />\n <GFormItem\n v-else\n :id=\"item.keyName ? item.keyName : item.name\"\n :viewName=\"viewName\"\n :formModel=\"formModel\"\n :item=\"item\"\n :formWhiteList=\"formWhiteList\"\n @after-update-value=\"handleAfterUpdateValue\"\n @after-upload=\"handleAfterUpload\"\n @before-destroy=\"handleBeforeDestroyFormItem\"\n />\n </template>\n </template>\n <template #footer>\n <t-button theme=\"default\" v-if=\"formCancelButton.name !== ''\" @click=\"handleButtonClick(formCancelButton)\">\n {{ formCancelButton.name }}\n </t-button>\n <t-button theme=\"primary\" v-if=\"formOkButton.name !== ''\" @click=\"handleButtonClick(formOkButton)\">\n {{ formOkButton.name }}\n </t-button>\n </template>\n </GCommonForm>\n</template>\n\n<script>\nimport GCommonForm from \"../common/GCommonForm/index.vue\";\nimport GFormBlock from \"./components/GFormBlock.vue\";\nimport GFormItem from \"./components/GFormItem.vue\";\n\nimport { PREFIX } from \"../../config\";\nimport { evalContext, vFun, getProperty, setProperty, deepClone, isVoid } from \"../../utils\";\nimport Mustache from \"mustache\";\nimport { MessagePlugin } from \"tdesign-vue\";\n\nwindow.v = vFun;\nexport default {\n name: \"GForm\",\n components: {\n GCommonForm,\n GFormBlock,\n GFormItem,\n },\n props: {\n viewName: String,\n boardInfo: Object,\n formData: Object,\n },\n data() {\n return {\n PREFIX,\n formModel: {},\n formRules: {},\n formWhiteList: [\"userInfoNameEn\", \"cardNum\", \"attend\", \"userInfoRoleKey\"],\n };\n },\n computed: {\n formItems() {\n return this.boardInfo.formItems;\n },\n formOkButton() {\n return this.boardInfo.okButton;\n },\n formCancelButton() {\n return this.boardInfo.cancelButton;\n },\n },\n methods: {\n getProperty,\n initEmptyFormItems(itemType) {\n switch (itemType) {\n // 开关和勾选框的初始值 false\n case \"check_box\":\n case \"switch\": {\n return false;\n }\n\n case \"multi_selector\":\n case \"tree_check_box\":\n case \"multi_tree_selector\": {\n return [];\n }\n\n default: {\n return null;\n }\n }\n },\n initFormRules() {\n let currentFormItems = [];\n this.$refs.commonForm.$children.forEach((item) => {\n item.$children.forEach((item) => {\n if (\n (item.$el.id ?? \"\") != \"\" &&\n !item.$el.classList.contains(\"block-item-hidden\") &&\n item.item &&\n !item.disableFlag\n ) {\n currentFormItems.push(item.item);\n }\n });\n });\n\n let tempRules = {};\n if (currentFormItems.length) {\n // 处理表单项的必填规则\n currentFormItems.forEach((item) => {\n let itemTempRules = [];\n if (item.required && (item.keyName ?? \"\") != \"\") {\n itemTempRules.push({\n validator: () => {\n if (isVoid(getProperty(this.formModel, item.keyName))) {\n return { result: true };\n } else {\n const itemName = item.name.replace(/\\s/g, \"\").replace(/[::;\\s]/g, \"\");\n return {\n result: false,\n message: `${itemName}为必填项!`,\n };\n }\n },\n trigger: \"blur\",\n });\n }\n\n if (item.keyName == \"rePassword\") {\n itemTempRules.push({\n validator: () => {\n return {\n result:\n getProperty(this.formModel, \"password\") ==\n getProperty(this.formModel, \"rePassword\"),\n message: `两次输入密码不一致!`,\n };\n },\n trigger: \"blur\",\n });\n }\n\n if (item.keyName == \"startTime\" || item.keyName == \"endTime\") {\n itemTempRules.push({\n validator: () => {\n return {\n result:\n getProperty(this.formModel, \"endTime\") -\n getProperty(this.formModel, \"startTime\") >\n 0,\n\n message: `结束时间不能早于开始时间!`,\n };\n },\n });\n }\n\n if (itemTempRules.length) {\n tempRules[item.keyName] = itemTempRules;\n }\n });\n }\n\n this.formRules = { ...tempRules };\n },\n\n handleAfterUpdateValue(keyName, value) {\n setProperty(this.formModel, keyName, value);\n this.$forceUpdate();\n this.$nextTick(() => {\n this.initFormRules();\n this.$refs.commonForm.$refs.form.validate({ fields: [keyName] });\n });\n },\n handleAfterUpload(keyName, value) {\n if ((keyName ?? \"\") != \"\") {\n setProperty(this.formModel, keyName, value);\n }\n this.$forceUpdate();\n },\n handleBeforeDestroyFormItem(item) {\n setProperty(this.formModel, item.keyName, this.initEmptyFormItems(item.itemType));\n },\n handleItemShowIf(showIf, item = {}) {\n if (typeof showIf != \"undefined\" && showIf != 1) {\n let result, evalResult;\n try {\n result = Mustache.render(showIf, { form: this.formModel });\n evalResult = evalContext(result, { form: this.formModel });\n // console.log(\"showIf\", showIf, \"mustacheResult\", result, \"evalResult\", evalResult);\n // console.log(showIf, result, evalResult);\n } catch (e) {\n console.warn(showIf, e);\n }\n\n return evalResult;\n } else {\n return true;\n }\n },\n handleItemDisableIf(disableIf, item = {}) {\n if (disableIf != 0) {\n let result, evalResult;\n try {\n result = Mustache.render(disableIf, { form: this.formModel });\n evalResult = evalContext(result, { form: this.formModel });\n // console.log(\"disableIf\", disableIf, \"mustacheResult\", result, \"evalResult\", evalResult);\n // console.log(disableIf, result, evalResult);\n } catch (e) {\n console.warn(disableIf, e);\n }\n\n // 设置为禁用后清空表单填写过的数据,以防提交非空数据\n if (evalResult !== \"\") {\n if (evalResult && (item?.keyName ?? \"\" != \"\")) {\n setProperty(this.formModel, item.keyName, this.initEmptyFormItems(item.itemType));\n }\n }\n\n return evalResult;\n } else {\n return false;\n }\n },\n handleButtonClick(button) {\n switch (button.action) {\n case \"CONFIRM\": {\n this.$refs.commonForm.$refs.form.validate().then((result) => {\n if (!Object.keys(result).length) {\n this.$emit(\"confirm-form\", this.formModel, button.buttonId);\n } else {\n const firstError = Object.values(result)[0]?.[0]?.message;\n MessagePlugin.warning(`${firstError}`);\n }\n });\n break;\n }\n case \"CONFIRM_AND_CLOSE\": {\n this.$refs.commonForm.$refs.form.validate().then((result) => {\n if (!Object.keys(result).length) {\n this.$emit(\"confirm-and-close\", this.formModel, button.buttonId);\n } else {\n const firstError = Object.values(result)[0]?.[0]?.message;\n MessagePlugin.warning(`${firstError}`);\n }\n });\n break;\n }\n case \"CLOSE_DIALOG\": {\n this.$emit(\"close-dialog\");\n break;\n }\n default: {\n console.log(button);\n break;\n }\n }\n },\n },\n watch: {\n formData: {\n handler() {\n if (Object.keys(this.formData).length) {\n this.formItems.forEach((formItem) => {\n if (formItem.keyName && !isVoid(getProperty(this.formData, formItem.keyName))) {\n if (formItem.itemType == \"check_box\" || formItem.itemType == \"switch\") {\n setProperty(this.formData, formItem.keyName, false);\n }\n }\n });\n\n this.formModel = deepClone(this.formData, {});\n // this.$forceUpdate();\n } else {\n let tempModel = {};\n this.formItems.forEach((formItem) => {\n // 设置表单项目的初始值\n if ((formItem.keyName ?? \"\") != \"\") {\n setProperty(tempModel, formItem.keyName, this.initEmptyFormItems(formItem.itemType));\n }\n });\n\n this.formModel = deepClone(tempModel, {});\n // this.$forceUpdate();\n }\n },\n deep: true,\n immediate: true,\n },\n },\n mounted() {\n this.initFormRules();\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <t-tabs :class=\"`${PREFIX}-tab`\" placement=\"left\" :value=\"currentTabTitle\" @change=\"handleTabChange\">\n <t-tab-panel v-for=\"tab in tabs\" :key=\"tab.title\" :value=\"tab.title\" :label=\"tab.title\">\n <t-card :bordered=\"false\">\n <template slot=\"content\">\n <GTemplate\n v-if=\"tab.board\"\n :viewName=\"viewName\"\n :board=\"tab.board\"\n @close-dialog=\"handleCloseDialog\"\n />\n </template>\n </t-card>\n </t-tab-panel>\n </t-tabs>\n</template>\n\n<script>\nimport { PREFIX } from \"../../config\";\n\nexport default {\n components: {\n GTemplate: () => import(\"../GTemplate/index.vue\").then((d) => d.default),\n },\n name: \"GTab\",\n props: {\n viewName: String,\n boardInfo: Object,\n },\n computed: {\n tabs() {\n return this.boardInfo.tabs;\n },\n },\n data() {\n return {\n PREFIX,\n currentTabTitle: this.boardInfo.tabs[0].title,\n };\n },\n methods: {\n handleTabChange(newTabTitle) {\n this.currentTabTitle = newTabTitle;\n },\n handleCloseDialog() {\n window.history.go(-1);\n },\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <transition name=\"fade\">\n <t-dialog :class=\"`${PREFIX}-common-dialog`\" v-bind=\"commonDialogProps\">\n <template v-for=\"(index, name) in $scopedSlots\" #[name]=\"data\">\n <slot :name=\"name\" v-bind=\"{ ...data }\"></slot>\n </template>\n </t-dialog>\n </transition>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\n\nexport default {\n name: \"GCommonDialog\",\n props: {\n commonDialogProps: {\n required: true,\n },\n },\n data() {\n return {\n PREFIX,\n };\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <GCommonDialog\n :commonDialogProps=\"{\n width: dialogWidth,\n header: dialogHeaderName,\n footer: false,\n visible: isVisible,\n onClose: handleDialogChange,\n }\"\n >\n <div slot=\"body\">\n <GTemplate\n v-if=\"viewBoard\"\n :viewName=\"dialogViewName\"\n :board=\"viewBoard\"\n :dialogProps=\"dialogProps\"\n @close-dialog=\"handleCloseDialog\"\n />\n </div>\n </GCommonDialog>\n</template>\n\n<script>\nimport GCommonDialog from \"../common/GCommonDialog/index.vue\";\nimport { PREFIX } from \"../../config\";\nimport { getOneView } from \"../../api/modules/view\";\nexport default {\n name: \"GDialog\",\n components: {\n GCommonDialog,\n GTemplate: () => import(\"../GTemplate/index.vue\").then((d) => d.default),\n },\n props: {\n dialogViewInfo: Object,\n dialogFormModel: Object,\n isVisible: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n PREFIX,\n viewInfo: {},\n viewBoard: {},\n viewProps: [],\n };\n },\n computed: {\n dialogWidth() {\n switch (this.viewBoard?.boardType) {\n case \"table\":\n return \"1200px\";\n\n case \"tab\":\n return \"1200px\";\n\n default:\n return \"600px\";\n }\n },\n dialogHeaderName() {\n return this.dialogViewInfo.name;\n },\n dialogViewName() {\n return this.dialogViewInfo.view;\n },\n dialogProps() {\n return this.$store.getters[\"props/getPropsByPropsKey\"](this.viewProps);\n },\n viewName() {\n return this.dialogViewInfo.view;\n },\n },\n methods: {\n handleDialogChange() {\n this.$emit(\"update:isVisible\", false);\n },\n handleCloseDialog() {\n this.$emit(\"close-dialog\");\n },\n\n async getViewInfo(viewName, props) {\n props.viewName = viewName;\n\n const res = await getOneView(props);\n\n if (res.state === 200) {\n this.viewInfo = res.data;\n this.viewBoard = res.data.boards?.[0];\n this.viewProps = res.data?.props;\n }\n },\n },\n watch: {\n dialogViewInfo() {\n this.getViewInfo(this.dialogViewName, {});\n },\n },\n mounted() {\n this.getViewInfo(this.dialogViewName, {});\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <div :class=\"`${PREFIX}-template`\">\n <!-- 头部操作 -->\n <GHeader\n v-if=\"headerInfo\"\n :viewName=\"viewName\"\n :viewProps=\"viewProps\"\n :headerInfo=\"headerInfo\"\n @header-button-action=\"handleAction\"\n @header-filter-change=\"handleHeaderFilterChange\"\n />\n <!-- 表格视图 -->\n <GTable\n v-if=\"boardType == 'table'\"\n :viewName=\"viewName\"\n :viewProps=\"viewProps\"\n :boardInfo=\"board\"\n :tableData=\"tableData\"\n :paginationProps=\"tablePaginationProps\"\n @table-button-action=\"handleAction\"\n @table-form-confirm=\"handleTableFormConfirm\"\n @return-pagination-props=\"handleSetPaginationProps\"\n @return-selected-key=\"handleReturnSelectedKey\"\n />\n <!-- 表单视图 -->\n <GForm\n v-if=\"boardType == 'form'\"\n :viewName=\"viewName\"\n :viewProps=\"viewProps\"\n :boardInfo=\"board\"\n :formData=\"formData\"\n @confirm-form=\"handleConfirmForm\"\n @close-dialog=\"handleCloseDialogEvent\"\n @confirm-and-close=\"handleConfirmAndClose\"\n />\n <!-- Tab视图 -->\n <GTab v-if=\"boardType == 'tab'\" :viewName=\"viewName\" :viewProps=\"viewProps\" :boardInfo=\"board\" />\n\n <!-- 对话框 -->\n <GDialog\n v-if=\"isDialogVisible\"\n :isVisible.sync=\"isDialogVisible\"\n :dialog-view-info=\"dialogViewInfo\"\n :dialog-form-model=\"dialogFormModel\"\n @close-dialog=\"handleCloseDialog\"\n />\n </div>\n</template>\n\n<script>\nimport GHeader from \"../GHeader/index.vue\";\nimport GTable from \"../GTable/index.vue\";\nimport GForm from \"../GForm/index.vue\";\nimport GTab from \"../GTab/index.vue\";\nimport GDialog from \"../GDialog/index.vue\";\n\nimport { MessagePlugin, DialogPlugin } from \"tdesign-vue\";\n\nimport { getViewData, batchAction, confirm } from \"../../api/modules/view\";\nimport { PREFIX, LOCAL_DATA_ID } from \"../../config\";\n\nimport Mustache from \"mustache\";\nimport he from \"he\";\n\n// 初始化表格分页数据\nconst initTablePaginationProps = {\n count: 10,\n page: 0,\n totalCount: 0,\n pageCount: 0,\n};\n\nexport default {\n name: \"GTemplate\",\n components: {\n GHeader,\n GTable,\n GForm,\n GTab,\n GDialog,\n },\n props: {\n // 当前模板信息\n board: Object,\n // 当前模板视图名称\n viewName: String,\n // 当前视图所需参数\n viewProps: Array || Object,\n\n // 传入查询参数\n dialogProps: Object,\n },\n data() {\n return {\n PREFIX,\n // 路径查询参数\n queryProps: {},\n\n // 头部搜索框数据\n headerFilterProps: {},\n\n // 表格数据\n tableData: [],\n // 表单数据\n formData: {},\n\n // 表格选中数据\n tableSelectedData: [],\n\n // 表格视图分页数据\n tablePaginationProps: {\n count: 10,\n page: 0,\n totalCount: 0,\n pageCount: 0,\n },\n\n // 对话框相关\n isDialogVisible: false,\n dialogFormModel: {},\n dialogViewInfo: {},\n };\n },\n computed: {\n // 模板种类\n boardType() {\n return this.board.boardType;\n },\n // 头部信息\n headerInfo() {\n return this.board.header;\n },\n // 数据Id\n dataId() {\n if (this.board.data || this.board.tableData) {\n if (this.boardType === \"table\") {\n return this.board.tableData.dataId;\n } else {\n return this.board.data.dataId;\n }\n } else {\n return null;\n }\n },\n\n // 合并获取数据参数模型\n propsModel() {\n let tempModel = {};\n // 头部搜索过滤参数\n if (this.headerInfo && this.headerFilterProps) {\n Object.assign(tempModel, this.headerFilterProps);\n }\n\n // 对话框表单查询参数\n if (this.dialogProps) {\n Object.assign(tempModel, this.dialogProps);\n }\n\n // // 表格分页参数\n if (this.boardType === \"table\") {\n Object.assign(tempModel, this.tablePaginationProps);\n }\n\n // 地址查询参数\n Object.assign(tempModel, this.queryProps);\n return tempModel;\n },\n },\n watch: {\n \"this.$route.query\": {\n handler(newValue) {\n const { query } = this.$route;\n\n if (query.props != null) {\n this.queryProps = JSON.parse(query.props);\n }\n },\n deep: true,\n immediate: true,\n },\n board: {\n handler() {\n // 对话框传入视图数据时获取表单数据\n this.getTemplateData();\n },\n deep: true,\n },\n },\n methods: {\n // 处理按钮动作\n handleAction(button, row = {}) {\n switch (button.action) {\n // 打开对话框动作\n case \"VIEW_BY_DIALOG\": {\n this.isDialogVisible = true;\n this.dialogViewInfo = button;\n this.dialogFormModel = { ...row };\n this.$store.dispatch(\"props/initSource\", row);\n break;\n }\n // 打开新的视图\n case \"VIEW\": {\n let tempProps = {};\n button.props.forEach((item) => {\n tempProps[item.keyName] = row[item.keyName];\n });\n\n this.$router.push({\n path: `/view`,\n query: {\n viewName: button.view,\n props: JSON.stringify(tempProps),\n },\n });\n break;\n }\n // 确认框\n case \"CONFIRM\": {\n let message; // 确认信息\n if (button.confirmMessage != \"\") {\n message = Mustache.render(button.confirmMessage, { item: row });\n } else {\n message = `是否确定${button.name}`;\n }\n\n let tempProps = {};\n if (button.props) {\n button.props.forEach((item) => {\n if (row[item.keyName] ?? \"\" != \"\") {\n tempProps[item.keyName] = row[item.keyName];\n }\n });\n } else {\n tempProps = { ...row };\n }\n\n const dialogInstance = DialogPlugin.confirm({\n theme: \"info\",\n header: button.name,\n body: message,\n onConfirm: () => {\n this.handleConfirmForm(tempProps, button.buttonId);\n dialogInstance.destroy();\n },\n onCancel: () => {\n MessagePlugin.info(`已取消${button.name}`);\n },\n });\n\n break;\n }\n\n // 批量选择\n case \"BATCH\": {\n const dialogInstance = DialogPlugin.confirm({\n theme: \"info\",\n header: button.name,\n body: `此操作将${button.name},是否继续`,\n onConfirm: () => {\n if (this.tableSelectedData.length == 0) {\n MessagePlugin.error(\"请选择操作对象!\");\n } else {\n this.handleBatchAction(button, this.tableSelectedData);\n }\n\n dialogInstance.destroy();\n },\n onCancel: () => {\n MessagePlugin.info(`已取消${button.name}`);\n },\n });\n break;\n }\n\n // 打开链接动作\n case \"LINK\": {\n let tempProps = {};\n button.props.forEach((item) => {\n tempProps[item.keyName] = row[item.keyName];\n });\n\n const link = this.$router.resolve({\n path: button.link,\n query: Object.keys(tempProps).length ? { props: JSON.stringify(tempProps) } : \"\",\n });\n window.open(link.href, \"_blank\");\n break;\n }\n\n case \"DOWNLOAD\": {\n if ((button.downloadUrl ?? \"\") != \"\") {\n const url = he.decode(Mustache.render(button.downloadUrl, { item: row }));\n\n if ((url ?? \"\") != \"\") {\n const fileName = url.split(\"/\").slice(-1)[0];\n\n const downloadEl = document.createElement(\"a\");\n downloadEl.style.display = \"none\";\n downloadEl.setAttribute(\"target\", \"_blank\");\n fileName && downloadEl.setAttribute(\"download\", fileName);\n downloadEl.setAttribute(\"href\", url);\n downloadEl.click();\n }\n } else {\n MessagePlugin.info(\"未设置下载链接\");\n }\n break;\n }\n\n default: {\n // console.log(\"未设置按钮动作:\", button);\n break;\n }\n }\n },\n\n // 处理头部搜索框改变事件\n handleHeaderFilterChange(filterProps) {\n this.headerFilterProps = filterProps;\n this.tablePaginationProps = {\n count: 10,\n page: 0,\n totalCount: 0,\n pageCount: 0,\n };\n\n this.getTemplateData();\n },\n\n // 处理表格多选操作\n handleReturnSelectedKey(value) {\n this.tableSelectedData = value;\n },\n\n // 处理表格分页操作\n handleSetPaginationProps(propsModel) {\n Object.assign(this.tablePaginationProps, {\n page: propsModel.current - 1,\n count: propsModel.pageSize,\n });\n\n this.getTemplateData();\n },\n\n // 处理表格批量提交\n async handleBatchAction(item, list) {\n let batchProps = {};\n\n const { query } = this.$route;\n if (query.props != null) {\n batchProps = { ...JSON.parse(query.props) };\n }\n\n let res = await batchAction({\n viewName: this.viewName,\n buttonId: item.buttonId,\n props: batchProps,\n keys: list,\n });\n\n if (res.state == 200) {\n MessagePlugin.success(`${item.name} 操作成功!`);\n } else {\n MessagePlugin.error(`操作出错:${res.message}`);\n }\n },\n\n handleTableFormConfirm(formItem, formModel) {\n if (\n formItem.itemType == \"selector\" ||\n formItem.itemType == \"time_selector\" ||\n formItem.itemType == \"date_time_selector\" ||\n formItem.itemType == \"tree_check_box\" ||\n formItem.itemType === \"multi_tree_selector\" ||\n formItem.itemType === \"tree_selector\"\n ) {\n const dialogInstance = DialogPlugin.confirm({\n theme: \"info\",\n body: `此操作将提交该修改,是否继续?`,\n onConfirm: () => {\n this.handleConfirmForm(formModel, formItem.buttonId);\n\n dialogInstance.destroy();\n },\n onCancel: () => {\n MessagePlugin.info(`已取消修改。`);\n },\n });\n } else {\n this.handleConfirmForm(formModel, formItem.buttonId);\n }\n },\n\n // 处理表单提交\n async handleConfirmForm(formModel, buttonId) {\n let confirmProps = {};\n confirmProps = { ...this.propsModel };\n Object.assign(confirmProps, formModel);\n\n const res = await confirm({\n buttonId: buttonId,\n props: confirmProps,\n viewName: this.viewName,\n });\n\n if (res.state === 200) {\n MessagePlugin.success(\"提交成功\");\n } else {\n MessagePlugin.error(`提交失败:${res.message}`);\n }\n },\n // 处理对话框关闭\n handleCloseDialog() {\n this.isDialogVisible = false;\n },\n // 处理对话框关闭事件\n handleCloseDialogEvent() {\n this.$emit(\"close-dialog\");\n },\n // 处理对话框提交并关闭\n handleConfirmAndClose(model, buttonId) {\n this.handleConfirmForm(model, buttonId);\n this.$emit(\"close-dialog\");\n },\n\n // 获取当前视图模板数据\n async getTemplateData() {\n let res;\n if (this.dataId !== null) {\n localStorage.setItem(LOCAL_DATA_ID, this.dataId);\n\n res = await getViewData({\n viewName: this.viewName,\n dataId: this.dataId,\n props: this.propsModel,\n });\n\n this.$store.dispatch(\"socket/sendRegisterMessage\", this.dataId);\n\n if (res.state === 200 && res.data) {\n if (this.boardType == \"table\") {\n this.tablePaginationProps = {\n count: res.data.count,\n page: res.data.page,\n pageCount: res.data.pageCount,\n totalCount: res.data.totalCount,\n };\n this.tableData = res.data.data;\n }\n\n if (this.boardType === \"form\") {\n this.formData = res.data;\n }\n } else {\n // todo 重复请求数据报错\n console.warn(res);\n // MessagePlugin.error(`数据获取出错 ${res.message}`);\n }\n }\n },\n },\n mounted() {\n this.getTemplateData();\n\n window.addEventListener(\"onUpdateMessage\", (event) => {\n const updatedDataId = event?.detail.args.dataId;\n // const currentDataId = localStorage.getItem(LOCAL_DATA_ID);\n if (this.dataId === updatedDataId) {\n // console.log(updatedDataId, \"数据更新了,重新获取数据\");\n this.getTemplateData();\n }\n });\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <div :class=\"`${PREFIX}-template-view`\">\n <t-loading :loading=\"isLoading\" :delay=\"isLoadingDelay\">\n <transition name=\"fade\" mode=\"out-in\">\n <GTemplate\n v-for=\"board in viewBoards\"\n :board=\"board\"\n :viewName=\"viewName\"\n :viewProps=\"viewProps\"\n :key=\"Date.now()\"\n />\n </transition>\n </t-loading>\n </div>\n</template>\n\n<script>\nimport GTemplate from \"../GTemplate/index.vue\";\nimport { getOneView } from \"../../api/modules/view\";\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { PREFIX } from \"../../config\";\n\nexport default {\n name: \"GTemplateView\",\n components: {\n GTemplate,\n },\n computed: {\n // view标题\n title() {\n return this.viewInfo?.title;\n },\n // view名称\n viewName() {\n return this.$route.query?.viewName;\n },\n // view版面信息\n viewBoards() {\n return this.viewInfo?.boards;\n },\n // view所需参数\n viewProps() {\n return this.viewInfo?.props;\n },\n // 路径查询参数\n queryProps() {\n const { query } = this.$route.query;\n if (query != null) {\n return JSON.parse(query.props);\n } else {\n return null;\n }\n },\n },\n data() {\n return {\n PREFIX,\n viewInfo: {},\n isLoading: false,\n isLoadingDelay: 500,\n };\n },\n methods: {\n async getViewInfo(viewName, props) {\n props.viewName = viewName;\n\n if (this.queryProps != null) {\n Object.assign(props, this.queryProps);\n }\n\n if ((viewName ?? \"\") != \"\") {\n this.isLoading = true;\n const res = await getOneView(props);\n if (res.state === 200 && res.data) {\n this.viewInfo = res.data;\n this.$emit(\"return-title\", this.title);\n this.appendNewTabMenuItem();\n this.isLoading = false;\n } else {\n this.isLoading = false;\n MessagePlugin.error(`${this.viewName} 目标视图数据为空`);\n }\n }\n },\n appendNewTabMenuItem() {\n const { fullPath, query } = this.$route;\n const path = decodeURIComponent(fullPath);\n\n this.$store.dispatch(\"setting/appendTabMenuItem\", {\n title: this.title,\n path,\n query,\n });\n },\n },\n watch: {\n // 当路由地址的视图名称参数改变时重新获取数据\n viewName() {\n this.getViewInfo(this.viewName, {});\n },\n\n \"this.$route.query\": {\n handler() {\n const { query } = this.$route;\n\n if (query.pros != null) {\n this.queryProps = JSON.parse(query.props);\n }\n },\n deep: true,\n immediate: true,\n },\n },\n mounted() {\n // 获取模板数据\n this.getViewInfo(this.viewName, {});\n },\n};\n</script>\n","<template>\n <GLayout :config=\"config\" :title=\"title\">\n <GTemplateView @return-title=\"handleReturnTitle\" v-if=\"isGlobalLoaded\" />\n </GLayout>\n</template>\n\n<script>\nimport GLayout from \"../GLayout/index.vue\";\nimport GTemplateView from \"../GTemplateView/index.vue\";\nimport { PREFIX } from \"../../config\";\n\nexport default {\n name: \"GView\",\n components: {\n GLayout,\n GTemplateView,\n },\n props: {\n config: Object,\n },\n data() {\n return {\n PREFIX,\n title: \"\",\n };\n },\n computed: {\n isGlobalLoaded() {\n return this.$store.state.setting.isGlobalLoaded;\n },\n },\n methods: {\n handleReturnTitle(title) {\n this.title = title;\n },\n handleReload() {\n this.$store.dispatch(\"setting/reloadGlobal\");\n },\n },\n mounted() {\n window.addEventListener(\"onSocketReload\", () => {\n this.handleReload();\n });\n },\n};\n</script>\n\n<style lang=\"scss\"></style>\n","import { INIT_WS_MODEL, WS_INTERVAL_TIMEOUT, WS_RESET_TIMEOUT, WS_SERVICE } from \"../config\";\nimport { MessagePlugin } from \"tdesign-vue\";\n\nexport interface SocketState {\n socket: WebSocket | null;\n isSocketLink?: boolean;\n isSocketFirst?: boolean;\n isSocketReset?: boolean;\n isUserLogin?: boolean;\n socketInterval?: null;\n socketTimeout?: null;\n}\n\nconst state = (): SocketState => ({\n socket: null,\n isSocketLink: false, // 正在连接\n isSocketFirst: false,\n isSocketReset: false, // 正在重连\n isUserLogin: false, // 用户是否登录\n socketInterval: null,\n socketTimeout: null,\n});\n\nconst getters = {};\n\nconst mutations = {};\n\nconst actions = {\n initSocket({ state, rootState, dispatch }) {\n state.isSocketLink = true;\n state.isSocketFirst = true;\n state.socket = new WebSocket(WS_SERVICE);\n\n state.socket.onopen = function (event) {\n // console.log(\"打开连接\", event);\n let model = INIT_WS_MODEL(\"heart\");\n state.socketInterval = setInterval(function () {\n state.socket.send(JSON.stringify(model));\n }, WS_INTERVAL_TIMEOUT);\n state.isSocketLink = false;\n };\n\n state.socket.onclose = function (event) {\n MessagePlugin.error(\"WebSocket 断开连接\");\n // console.log(\"断开链接\", event);\n\n state.socketInterval = null;\n state.isSocketReset = true;\n state.socket = null;\n\n MessagePlugin.error(\"WebSocket 重新连接...\");\n state.socketTimeout = setTimeout(function () {\n if (state.isSocketReset) {\n dispatch(\"initSocket\");\n\n if (!state.isSocketLink) {\n clearTimeout(state.socketTimeout);\n window.dispatchEvent(new CustomEvent(\"onSocketReload\"));\n }\n }\n }, WS_RESET_TIMEOUT);\n };\n state.socket.onerror = function (event) {\n // console.log(\"出现错误\", event);\n MessagePlugin.error(\"WebSocket 出现错误\");\n };\n state.socket.onmessage = function (event) {\n let data = JSON.parse(event.data);\n window.dispatchEvent(\n new CustomEvent(\"onUpdateMessage\", {\n detail: {\n ...data,\n },\n }),\n );\n if (state.isSocketFirst) {\n state.isSocketFirst = false;\n }\n };\n state.isUserLogin = !!rootState.user;\n state.isSocketLink = false;\n },\n sendRegisterMessage({ state }, dataId: string) {\n let model = INIT_WS_MODEL(\"register\", dataId);\n state.socket.send(JSON.stringify(model));\n state.isSocketReset = false;\n },\n sendUnregisterMessage({ state }, dataId: string) {\n let model = INIT_WS_MODEL(\"unregister\", dataId);\n state.socket.send(JSON.stringify(model));\n state.isSocketReset = false;\n },\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions,\n};\n","const state = {\n source: {},\n};\n\nconst getters = {\n getPropsByPropsKey: (state) => (propsKeys) => {\n const tempProps = {};\n if ((state.source ?? \"\") != \"\" && (propsKeys ?? \"\" != \"\")) {\n propsKeys.forEach((propsKey) => {\n tempProps[propsKey] = state.source[propsKey];\n });\n }\n\n return tempProps;\n },\n};\n\nconst mutations = {\n setSource(state, source) {\n if (Object.keys(source).length) {\n state.source = { ...source };\n }\n },\n};\n\nconst actions = {\n initSource({ commit }, source) {\n commit(\"setSource\", source);\n },\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions,\n};\n","import setting from \"./setting\";\nimport socket from \"./socket\";\nimport view from \"./view\";\nimport props from \"./props\";\n\nexport default { setting, socket, view, props };\n","import { TabMenuItem } from \"../types\";\nimport { generateMenuTree, getHomeUrl } from \"../utils\";\nimport {\n LOCAL_CONFIG,\n LOCAL_THEME_CONFIG,\n LOCAL_MENU_CONFIG,\n LOCAL_MENU,\n LOCAL_USER,\n LOCAL_TAB_MENU,\n LOCAL_INIT_TAB_MENU_LIST,\n TOKEN_EXPIRED_TIME,\n TOKEN_NAME,\n THEME_CONFIG,\n} from \"../config\";\nimport { MessagePlugin } from \"tdesign-vue\";\n\nexport interface UserConfig {\n userInfo: any;\n userMenu: any;\n userToken: {\n token: string;\n tokenExpiredTime: string;\n };\n\n // 首页地址\n homeUrl?: string;\n\n // 上传相关接口\n uploadApi: string;\n}\n\nexport type ThemeConfigType = typeof THEME_CONFIG;\n\nexport interface SettingState {\n isUserLogin: boolean;\n isGlobalLoaded: boolean;\n isSideBarCollapse: boolean;\n isSettingPanelShow: boolean;\n\n tabMenuList: TabMenuItem[];\n initTabMenuList: TabMenuItem[];\n\n themeConfig: ThemeConfigType;\n config: UserConfig;\n menuConfig: any;\n}\n\nconst state = () => ({\n // 登录标志\n isUserLogin: !!JSON.parse(sessionStorage.getItem(LOCAL_USER) as string) || false,\n // 加载标志\n isGlobalLoaded: true,\n\n // 基本配置\n isSideBarCollapse: false,\n isSettingPanelShow: false,\n\n // 主题配置\n themeConfig: JSON.parse(localStorage.getItem(LOCAL_THEME_CONFIG) as string) || {\n ...THEME_CONFIG,\n },\n\n // 菜单配置\n menuConfig: JSON.parse(localStorage.getItem(LOCAL_MENU_CONFIG) as string) || [],\n\n // 用户传入GView的信息与配置\n config: JSON.parse(localStorage.getItem(LOCAL_CONFIG) as string) || {\n userInfo: {\n realName: \"\",\n },\n userPermissions: [],\n userMenu: [],\n userToken: {\n token: \"\",\n tokenExpiredTime: \"\",\n },\n uploadApi: \"\",\n },\n\n // tab菜单相关\n initTabMenuList: JSON.parse(localStorage.getItem(LOCAL_INIT_TAB_MENU_LIST) as string) || [],\n tabMenuList: JSON.parse(sessionStorage.getItem(LOCAL_TAB_MENU) as string) || [],\n});\n\nconst getters = {\n userMenu: (state: SettingState) => state.menuConfig,\n homeUrl: (state: SettingState) => {\n // 获取用户首页,如果没有传入则使用第一个有地址的菜单项\n if (state.config?.homeUrl) {\n return state.config?.homeUrl;\n } else {\n return getHomeUrl(state.menuConfig);\n }\n },\n userRealName: (state: SettingState) => state.config.userInfo.realName,\n userEdificeKey: (state: SettingState) => state.config.userInfo.edificeKey,\n token: (state: SettingState) => state.config.userToken.token,\n tokenExpiredTime: (state: SettingState) => state.config.userToken.tokenExpiredTime,\n uploadApi: (state: SettingState) => state.config.uploadApi,\n\n displayMode: (state: SettingState) => {\n if (state.themeConfig.displayMode === \"auto\") {\n const media = window.matchMedia(\"(prefers-color-scheme:dark)\");\n if (media.matches) {\n return \"dark\";\n }\n return \"light\";\n }\n return state.themeConfig.displayMode;\n },\n};\n\nconst mutations = {\n /**\n * 设置用户登录状态\n */\n setUserLoginStatus(state: SettingState, status) {\n state.isUserLogin = status;\n },\n /**\n * 设置重新加载状态\n * @param state\n * @param status\n */\n setGlobalLoadingStatus(state: SettingState, status) {\n state.isGlobalLoaded = status;\n },\n /**\n * 设置侧边菜单展开状态\n * @param state\n * @param status\n */\n toggleSideBarCollapse(state: SettingState) {\n state.isSideBarCollapse = !state.isSideBarCollapse;\n },\n /**\n * 设置侧边设置面板显示状态\n * @param state\n */\n toggleSettingPanel(state: SettingState) {\n state.isSettingPanelShow = !state.isSettingPanelShow;\n },\n /**\n * 设置常用初始化 Tab 菜单内容\n */\n setInitTabMenuList(state: SettingState, initTabMenuList: []) {\n sessionStorage.setItem(LOCAL_INIT_TAB_MENU_LIST, JSON.stringify(initTabMenuList));\n state.initTabMenuList = initTabMenuList;\n },\n /**\n * 保存顶部tab菜单状态\n * @param state\n * @param tabMenuList\n */\n setTabMenuList(state: SettingState, tabMenuList: TabMenuItem[]) {\n sessionStorage.setItem(LOCAL_TAB_MENU, JSON.stringify(tabMenuList));\n state.tabMenuList = tabMenuList;\n },\n /**\n * 设置用户传入的配置\n * @param state\n * @param config\n */\n setSettingConfig(state: SettingState, config) {\n localStorage.setItem(LOCAL_CONFIG, JSON.stringify(config));\n Object.keys(config).forEach((configKey) => {\n state.config[configKey] = config[configKey];\n });\n },\n /**\n * 设置主题配置\n * @param state\n * @param config\n */\n setThemeSettingConfig(state: SettingState, config) {\n localStorage.setItem(LOCAL_THEME_CONFIG, JSON.stringify(config));\n Object.keys(config).forEach((configKey) => {\n state.themeConfig[configKey] = config[configKey];\n });\n },\n\n /**\n * 保存菜单方案\n * @param state\n * @param menuConfig\n */\n setMenuConfig(state: SettingState, menuConfig) {\n localStorage.setItem(LOCAL_MENU_CONFIG, JSON.stringify(menuConfig));\n state.menuConfig = menuConfig;\n },\n};\n\nconst actions = {\n /**\n * 全局重新加载\n */\n reloadGlobal({ commit }) {\n commit(\"setGlobalLoadingStatus\", false);\n\n setTimeout(function () {\n commit(\"setGlobalLoadingStatus\", true);\n });\n },\n\n /**\n * 初始化设置\n */\n initSettingConfig({ commit }, config: UserConfig) {\n const { userMenu } = config;\n let menuTree = generateMenuTree(userMenu, null, 1);\n config.userMenu = menuTree;\n commit(\"setSettingConfig\", config);\n commit(\"setMenuConfig\", menuTree);\n },\n\n /**\n * 加载后初始化完整逻辑\n */\n userLoadInit({ commit, dispatch }, config) {\n // localStorage.removeItem(LOCAL_CONFIG);\n\n // 初始化GView用户以及菜单信息\n dispatch(\"initSettingConfig\", config);\n\n // 初始化顶部菜单配置\n dispatch(\"initTabMenu\");\n\n // 修改用户登录状态\n commit(\"setUserLoginStatus\", true);\n },\n\n userLogout({ commit }) {\n localStorage.removeItem(LOCAL_CONFIG);\n localStorage.removeItem(LOCAL_MENU_CONFIG);\n\n sessionStorage.clear();\n\n // 修改用户登录状态\n commit(\"setUserLoginStatus\", false);\n MessagePlugin.success(\"退出登录成功\");\n },\n\n loadLocalTheme({ commit, dispatch, state }) {\n let { themeConfig } = state;\n dispatch(\"changeMode\", themeConfig);\n dispatch(\"changeBrandTheme\", themeConfig);\n commit(\"setThemeSettingConfig\", themeConfig);\n },\n changeTheme({ commit, dispatch }, themeConfig) {\n dispatch(\"changeMode\", themeConfig);\n dispatch(\"changeBrandTheme\", themeConfig);\n commit(\"setThemeSettingConfig\", themeConfig);\n },\n changeMode(_: { state: SettingState }, themeConfig) {\n let theme = themeConfig.displayMode;\n if (themeConfig.displayMode === \"auto\") {\n const media = window.matchMedia(\"(prefers-color-scheme:dark)\");\n if (media.matches) {\n theme = \"dark\";\n } else {\n theme = \"light\";\n }\n }\n const isDarkMode = theme === \"dark\";\n\n document.documentElement.setAttribute(\"theme-mode\", isDarkMode ? \"dark\" : \"\");\n },\n changeBrandTheme(_: { state: SettingState }, themeConfig) {\n const { brandTheme } = themeConfig;\n\n document.documentElement.setAttribute(\"theme-color\", brandTheme);\n },\n\n /**\n * 更新菜单方案配置\n */\n updateMenuConfig({ commit }) {},\n\n /**\n * 初始化 Tab 菜单内容\n */\n initTabMenu({ commit }) {\n const homeTabMenuItem = {\n itemIdx: 0,\n path: \"/home\",\n title: \"首页\",\n isHome: true,\n };\n\n commit(\"setInitTabMenuList\", [homeTabMenuItem]);\n commit(\"setTabMenuList\", [homeTabMenuItem]);\n },\n\n appendTabMenuItem({ commit, state }, newItem: TabMenuItem) {\n if (!state.tabMenuList.find((item) => !item.isHome && item.path === newItem.path)) {\n commit(\"setTabMenuList\", state.tabMenuList.concat({ ...newItem }));\n }\n },\n\n subtractCurrentTabMenuItem({ commit, state }, newItem: TabMenuItem) {\n const { itemIdx } = newItem;\n commit(\"setTabMenuList\", state.tabMenuList.slice(0, itemIdx).concat(state.tabMenuList.slice(itemIdx + 1)));\n },\n subtractTabMenuItemBehind({ commit, state }, newItem: TabMenuItem) {\n const { itemIdx } = newItem;\n commit(\"setTabMenuList\", state.tabMenuList.slice(0, itemIdx + 1));\n },\n subtractTabMenuItemAhead({ commit, state }, newItem: TabMenuItem) {\n const { itemIdx } = newItem;\n commit(\"setTabMenuList\", state.initTabMenuList.concat(state.tabMenuList.slice(itemIdx)));\n },\n subtractTabMenuItemOther({ commit, state }, newItem: TabMenuItem) {\n const { itemIdx } = newItem;\n const tempItem = state.tabMenuList[itemIdx];\n commit(\"setTabMenuList\", itemIdx === 0 ? state.initTabMenuList : state.initTabMenuList.concat(tempItem));\n },\n\n clearTabMenuItem({ commit, state }) {\n commit(\"setTabMenuList\", []);\n },\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions,\n};\n","const state = {};\n\nconst getters = {};\n\nconst mutations = {};\n\nconst actions = {};\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions,\n};\n","export default [\n {\n stem: \"app\",\n icon: \"App\",\n },\n\n {\n stem: \"attach\",\n icon: \"Attach\",\n },\n\n {\n stem: \"barcode\",\n icon: \"Barcode\",\n },\n {\n stem: \"books\",\n icon: \"Books\",\n },\n\n {\n stem: \"browse\",\n icon: \"Browse\",\n },\n {\n stem: \"bulletpoint\",\n icon: \"Bulletpoint\",\n },\n {\n stem: \"calendar\",\n icon: \"Calendar\",\n },\n {\n stem: \"call\",\n icon: \"Call\",\n },\n\n {\n stem: \"cart\",\n icon: \"Cart\",\n },\n {\n stem: \"chart-bar\",\n icon: \"ChartBar\",\n },\n {\n stem: \"chart-bubble\",\n icon: \"ChartBubble\",\n },\n {\n stem: \"chart-pie\",\n icon: \"ChartPie\",\n },\n {\n stem: \"chart\",\n icon: \"Chart\",\n },\n {\n stem: \"chat\",\n icon: \"Chat\",\n },\n\n {\n stem: \"cloud-download\",\n icon: \"CloudDownload\",\n },\n {\n stem: \"cloud-upload\",\n icon: \"CloudUpload\",\n },\n {\n stem: \"cloud\",\n icon: \"Cloud\",\n },\n {\n stem: \"code\",\n icon: \"Code\",\n },\n {\n stem: \"control-platform\",\n icon: \"ControlPlatform\",\n },\n {\n stem: \"creditcard\",\n icon: \"Creditcard\",\n },\n {\n stem: \"dashboard\",\n icon: \"Dashboard\",\n },\n {\n stem: \"delete\",\n icon: \"Delete\",\n },\n {\n stem: \"desktop\",\n icon: \"Desktop\",\n },\n {\n stem: \"discount-filled\",\n icon: \"DiscountFilled\",\n },\n {\n stem: \"discount\",\n icon: \"Discount\",\n },\n {\n stem: \"download\",\n icon: \"Download\",\n },\n {\n stem: \"edit-1\",\n icon: \"Edit1\",\n },\n {\n stem: \"edit\",\n icon: \"Edit\",\n },\n\n {\n stem: \"file-add\",\n icon: \"FileAdd\",\n },\n {\n stem: \"file-copy\",\n icon: \"FileCopy\",\n },\n {\n stem: \"file-excel\",\n icon: \"FileExcel\",\n },\n {\n stem: \"file-icon\",\n icon: \"FileIcon\",\n },\n {\n stem: \"file-image\",\n icon: \"FileImage\",\n },\n {\n stem: \"file-paste\",\n icon: \"FilePaste\",\n },\n {\n stem: \"file-pdf\",\n icon: \"FilePdf\",\n },\n {\n stem: \"file-powerpoint\",\n icon: \"FilePowerpoint\",\n },\n {\n stem: \"file-unknown\",\n icon: \"FileUnknown\",\n },\n {\n stem: \"file-word\",\n icon: \"FileWord\",\n },\n {\n stem: \"file\",\n icon: \"File\",\n },\n {\n stem: \"filter-clear\",\n icon: \"FilterClear\",\n },\n {\n stem: \"filter\",\n icon: \"Filter\",\n },\n {\n stem: \"flag\",\n icon: \"Flag\",\n },\n {\n stem: \"folder-add\",\n icon: \"FolderAdd\",\n },\n {\n stem: \"folder-open\",\n icon: \"FolderOpen\",\n },\n {\n stem: \"folder\",\n icon: \"Folder\",\n },\n {\n stem: \"fork\",\n icon: \"Fork\",\n },\n\n {\n stem: \"gift\",\n icon: \"Gift\",\n },\n {\n stem: \"heart-filled\",\n icon: \"HeartFilled\",\n },\n {\n stem: \"heart\",\n icon: \"Heart\",\n },\n {\n stem: \"help-circle-filled\",\n icon: \"HelpCircleFilled\",\n },\n {\n stem: \"help-circle\",\n icon: \"HelpCircle\",\n },\n {\n stem: \"history\",\n icon: \"History\",\n },\n {\n stem: \"home\",\n icon: \"Home\",\n },\n {\n stem: \"hourglass\",\n icon: \"Hourglass\",\n },\n {\n stem: \"image-error\",\n icon: \"ImageError\",\n },\n {\n stem: \"image\",\n icon: \"Image\",\n },\n {\n stem: \"info-circle-filled\",\n icon: \"InfoCircleFilled\",\n },\n {\n stem: \"info-circle\",\n icon: \"InfoCircle\",\n },\n {\n stem: \"internet\",\n icon: \"Internet\",\n },\n {\n stem: \"jump\",\n icon: \"Jump\",\n },\n {\n stem: \"laptop\",\n icon: \"Laptop\",\n },\n {\n stem: \"layers\",\n icon: \"Layers\",\n },\n {\n stem: \"link-unlink\",\n icon: \"LinkUnlink\",\n },\n {\n stem: \"link\",\n icon: \"Link\",\n },\n {\n stem: \"location\",\n icon: \"Location\",\n },\n {\n stem: \"lock-off\",\n icon: \"LockOff\",\n },\n {\n stem: \"lock-on\",\n icon: \"LockOn\",\n },\n {\n stem: \"login\",\n icon: \"Login\",\n },\n {\n stem: \"logo-android\",\n icon: \"LogoAndroid\",\n },\n {\n stem: \"logo-apple-filled\",\n icon: \"LogoAppleFilled\",\n },\n {\n stem: \"logo-apple\",\n icon: \"LogoApple\",\n },\n {\n stem: \"logo-chrome-filled\",\n icon: \"LogoChromeFilled\",\n },\n {\n stem: \"logo-chrome\",\n icon: \"LogoChrome\",\n },\n {\n stem: \"logo-codepen\",\n icon: \"LogoCodepen\",\n },\n {\n stem: \"logo-github-filled\",\n icon: \"LogoGithubFilled\",\n },\n {\n stem: \"logo-github\",\n icon: \"LogoGithub\",\n },\n {\n stem: \"logo-ie-filled\",\n icon: \"LogoIeFilled\",\n },\n {\n stem: \"logo-ie\",\n icon: \"LogoIe\",\n },\n {\n stem: \"logo-qq\",\n icon: \"LogoQq\",\n },\n {\n stem: \"logo-wechat\",\n icon: \"LogoWechat\",\n },\n {\n stem: \"logo-wecom\",\n icon: \"LogoWecom\",\n },\n {\n stem: \"logo-windows-filled\",\n icon: \"LogoWindowsFilled\",\n },\n {\n stem: \"logo-windows\",\n icon: \"LogoWindows\",\n },\n {\n stem: \"logout\",\n icon: \"Logout\",\n },\n {\n stem: \"mail\",\n icon: \"Mail\",\n },\n {\n stem: \"menu-fold\",\n icon: \"MenuFold\",\n },\n {\n stem: \"menu-unfold\",\n icon: \"MenuUnfold\",\n },\n\n {\n stem: \"mirror\",\n icon: \"Mirror\",\n },\n {\n stem: \"mobile-vibrate\",\n icon: \"MobileVibrate\",\n },\n {\n stem: \"mobile\",\n icon: \"Mobile\",\n },\n {\n stem: \"money-circle\",\n icon: \"MoneyCircle\",\n },\n {\n stem: \"notification-filled\",\n icon: \"NotificationFilled\",\n },\n {\n stem: \"notification\",\n icon: \"Notification\",\n },\n {\n stem: \"photo\",\n icon: \"Photo\",\n },\n {\n stem: \"pin-filled\",\n icon: \"PinFilled\",\n },\n {\n stem: \"pin\",\n icon: \"Pin\",\n },\n {\n stem: \"play-circle-filled\",\n icon: \"PlayCircleFilled\",\n },\n {\n stem: \"play-circle-stroke\",\n icon: \"PlayCircleStroke\",\n },\n {\n stem: \"play-circle\",\n icon: \"PlayCircle\",\n },\n {\n stem: \"play\",\n icon: \"Play\",\n },\n {\n stem: \"poweroff\",\n icon: \"Poweroff\",\n },\n {\n stem: \"precise-monitor\",\n icon: \"PreciseMonitor\",\n },\n {\n stem: \"previous\",\n icon: \"Previous\",\n },\n {\n stem: \"print\",\n icon: \"Print\",\n },\n {\n stem: \"qrcode\",\n icon: \"Qrcode\",\n },\n {\n stem: \"queue\",\n icon: \"Queue\",\n },\n {\n stem: \"rectangle\",\n icon: \"Rectangle\",\n },\n {\n stem: \"refresh\",\n icon: \"Refresh\",\n },\n {\n stem: \"relativity\",\n icon: \"Relativity\",\n },\n {\n stem: \"root-list\",\n icon: \"RootList\",\n },\n {\n stem: \"rotation\",\n icon: \"Rotation\",\n },\n {\n stem: \"scan\",\n icon: \"Scan\",\n },\n {\n stem: \"search\",\n icon: \"Search\",\n },\n {\n stem: \"secured\",\n icon: \"Secured\",\n },\n {\n stem: \"server\",\n icon: \"Server\",\n },\n {\n stem: \"service\",\n icon: \"Service\",\n },\n {\n stem: \"setting\",\n icon: \"Setting\",\n },\n {\n stem: \"share\",\n icon: \"Share\",\n },\n {\n stem: \"shop\",\n icon: \"Shop\",\n },\n {\n stem: \"slash\",\n icon: \"Slash\",\n },\n {\n stem: \"sound\",\n icon: \"Sound\",\n },\n {\n stem: \"star-filled\",\n icon: \"StarFilled\",\n },\n {\n stem: \"star\",\n icon: \"Star\",\n },\n {\n stem: \"thumb-down\",\n icon: \"ThumbDown\",\n },\n {\n stem: \"thumb-up\",\n icon: \"ThumbUp\",\n },\n {\n stem: \"time-filled\",\n icon: \"TimeFilled\",\n },\n {\n stem: \"time\",\n icon: \"Time\",\n },\n {\n stem: \"tips\",\n icon: \"Tips\",\n },\n {\n stem: \"tools\",\n icon: \"Tools\",\n },\n {\n stem: \"unfold-less\",\n icon: \"UnfoldLess\",\n },\n {\n stem: \"unfold-more\",\n icon: \"UnfoldMore\",\n },\n {\n stem: \"upload\",\n icon: \"Upload\",\n },\n {\n stem: \"usb\",\n icon: \"Usb\",\n },\n {\n stem: \"user-add\",\n icon: \"UserAdd\",\n },\n {\n stem: \"user-avatar\",\n icon: \"UserAvatar\",\n },\n {\n stem: \"user-circle\",\n icon: \"UserCircle\",\n },\n {\n stem: \"user-clear\",\n icon: \"UserClear\",\n },\n {\n stem: \"user-talk\",\n icon: \"UserTalk\",\n },\n {\n stem: \"user\",\n icon: \"User\",\n },\n {\n stem: \"usergroup-add\",\n icon: \"UsergroupAdd\",\n },\n {\n stem: \"usergroup-clear\",\n icon: \"UsergroupClear\",\n },\n {\n stem: \"usergroup\",\n icon: \"Usergroup\",\n },\n {\n stem: \"video\",\n icon: \"Video\",\n },\n {\n stem: \"view-column\",\n icon: \"ViewColumn\",\n },\n {\n stem: \"view-list\",\n icon: \"ViewList\",\n },\n {\n stem: \"view-module\",\n icon: \"ViewModule\",\n },\n {\n stem: \"wallet\",\n icon: \"Wallet\",\n },\n {\n stem: \"wifi\",\n icon: \"Wifi\",\n },\n {\n stem: \"zoom-in\",\n icon: \"ZoomIn\",\n },\n {\n stem: \"zoom-out\",\n icon: \"ZoomOut\",\n },\n];\n","<template>\n <GLayout :title=\"title\">\n <GCommonHeader>\n <template #left-operations>\n <t-button theme=\"primary\" @click=\"handleAddMenuGroup\">添加组</t-button>\n <t-button theme=\"default\" @click=\"resetMenu\">恢复默认</t-button>\n </template>\n <template #right-operations>\n <t-button theme=\"primary\" @click=\"saveMenuResult\">保存方案</t-button>\n </template>\n </GCommonHeader>\n\n <GCommonTable\n ref=\"commonTable\"\n id=\"menuTable\"\n :commonTableProps=\"{\n size: 'small',\n ref: 'menuTable',\n rowKey: 'name',\n data: menuData,\n columns: columns,\n dragSort: 'row-handler',\n beforeDragSort: handleBeforeDragSort,\n onAbnormalDragSort: onAbnormalDragSort,\n tree: {\n childrenKey: 'children',\n defaultExpandAll: true,\n treeNodeColumnIndex: 1,\n indent: '20',\n },\n }\"\n >\n <!-- 自定义折叠图标 -->\n <template #treeExpandAndFoldIcon=\"{ type }\">\n <t-icon v-if=\"type === 'expand'\" name=\"chevron-right\" />\n <t-icon v-else name=\"chevron-up\" />\n </template>\n\n <!-- 自定义拖拽 -->\n <template #drag>\n <t-icon name=\"move\" />\n </template>\n\n <template #title=\"{ row }\">\n <span class=\"menu-title\">\n <span class=\"title\" :class=\"row.isGroup ? 'title-bold' : 'title-child'\">\n <template v-if=\"row.level == 1 && row.isGroup\">\n <t-icon v-if=\"row.icon\" class=\"title-icon\" :name=\"row.icon\" size=\"large\" />\n <t-icon v-else class=\"title-icon\" name=\"app\" size=\"large\" />\n </template>\n {{ row.title }}\n </span>\n <span class=\"counts\" v-if=\"row.isGroup\">{{ row.children.length }}项</span>\n </span>\n </template>\n\n <template #operations=\"{ row }\">\n <div class=\"operations\">\n <t-button variant=\"text\" theme=\"primary\" @click=\"handleEditMenu(row)\"> 编辑修改 </t-button>\n <t-button variant=\"text\" theme=\"primary\" :disabled=\"row.isGroup\" @click=\"handleMoveItemTo(row)\">\n {{ row.isGroup ? \"-----\" : \"转移至\" }}\n </t-button>\n <t-button variant=\"text\" theme=\"primary\" @click=\"handleMoveSort(row, 'up')\"> 上移 </t-button>\n <t-button variant=\"text\" theme=\"primary\" @click=\"handleMoveSort(row, 'down')\"> 下移 </t-button>\n <t-button variant=\"text\" theme=\"primary\" :disabled=\"!row.isGroup\" @click=\"handleRemoveGroup(row)\">\n {{ row.isGroup ? \"撤销组\" : \"-----\" }}\n </t-button>\n </div>\n </template>\n </GCommonTable>\n\n <GCommonDialog\n :commonDialogProps=\"{\n visible: isAddOrEditDialogShow,\n onClose: handleCloseDialog,\n header: currentDialogTitle,\n footer: false,\n }\"\n >\n <GCommonForm\n ref=\"menuFormRef\"\n :commonFormProps=\"{\n ref: 'form',\n rules: menuFormRules,\n data: menuForm,\n labelAlign: 'right',\n labelWidth: '110px',\n }\"\n >\n <template\n #body\n v-if=\"\n currentDialogType == 'addGroup' ||\n currentDialogType == 'editGroup' ||\n currentDialogType == 'editItem'\n \"\n >\n <t-form-item name=\"title\" label=\"组名称\" :requiredMark=\"true\">\n <t-input style=\"width: 360px\" v-model=\"menuForm.title\" placeholder=\"请输入组名称\"></t-input>\n </t-form-item>\n\n <t-form-item name=\"name\" label=\"名称标识\" :requiredMark=\"true\">\n <t-input\n style=\"width: 360px\"\n v-model=\"menuForm.name\"\n placeholder=\"请输入名称标识,例如 SYSTEM\"\n ></t-input>\n </t-form-item>\n\n <t-form-item name=\"icon\" label=\"图标标识\" :requiredMark=\"true\" v-if=\"menuForm.level == 1\">\n <t-select\n v-model=\"menuForm.icon\"\n placeholder=\"请选择图标标识\"\n :style=\"{ width: '350px' }\"\n :popup-props=\"{ overlayStyle: { width: '350px' } }\"\n :clearable=\"true\"\n >\n <t-option v-for=\"item in icon\" :value=\"item.stem\" :key=\"item.stem\" class=\"overlay-options\">\n <span id=\"icon-option\">\n <t-icon :name=\"item.stem\" size=\"large\" />\n </span>\n </t-option>\n\n <div slot=\"valueDisplay\">\n <span v-if=\"menuForm.icon\">\n <t-icon :name=\"menuForm.icon\" :style=\"{ marginRight: '8px' }\" />{{ menuForm.icon }}\n </span>\n <span v-else style=\"color: #9f9f9f\">请选择图标标识</span>\n </div>\n </t-select>\n </t-form-item>\n\n <t-form-item name=\"parent\" label=\"父菜单\" :requiredMark=\"true\" v-if=\"!menuForm.isGroup\">\n <t-select :options=\"menuParentKeyOptions\" v-model=\"menuForm.parent\" />\n </t-form-item>\n\n <t-form-item\n label=\"分组\"\n v-if=\"!handleFilterMenuGroup(menuForm.children).length && menuForm.level == 1\"\n >\n <t-button variant=\"outline\" @click=\"handleAddMenuGroupChildrenItem\">添加分组</t-button>\n </t-form-item>\n\n <t-form-item\n v-for=\"(item, index) in handleFilterMenuGroup(menuForm.children)\"\n :key=\"`group` + index\"\n :label=\"index == 0 ? '分组' : ' '\"\n >\n <t-input-group style=\"width: 350px\">\n <t-input\n style=\"width: 120px\"\n placeholder=\"请输入分组名称 \"\n :value=\"item.title\"\n @change=\"\n handleUpdateFormValue(\n handleFilterMenuGroup(menuForm.children),\n `[${index}].title`,\n $event,\n )\n \"\n />\n <t-input\n style=\"width: 120px\"\n placeholder=\"请输入分组标识 \"\n :value=\"item.name\"\n @change=\"\n handleUpdateFormValue(\n handleFilterMenuGroup(menuForm.children),\n `[${index}].name`,\n $event,\n )\n \"\n />\n <t-button\n variant=\"outline\"\n theme=\"default\"\n @click.prevent=\"handleRemoveMenuGroupChildrenItem(item)\"\n >-\n </t-button>\n <t-button\n variant=\"outline\"\n theme=\"default\"\n v-if=\"index == handleFilterMenuGroup(menuForm.children).length - 1\"\n @click.prevent=\"handleAddMenuGroupChildrenItem\"\n >+\n </t-button>\n </t-input-group>\n </t-form-item>\n\n <template v-if=\"currentDialogType != 'addGroup'\">\n <t-form-item\n v-for=\"(item, index) in handleFilterMenuItem(menuForm.children)\"\n :key=\"`item` + index\"\n :label=\"index == 0 ? '子菜单项' : ' '\"\n >\n <t-input-group style=\"width: 350px\">\n <t-input\n placeholder=\"请输入子菜单名称 \"\n :value=\"item.title\"\n @change=\"\n handleUpdateFormValue(\n handleFilterMenuItem(menuForm.children),\n `[${index}].title`,\n $event,\n )\n \"\n />\n </t-input-group>\n </t-form-item>\n </template>\n </template>\n <template #body v-else-if=\"currentDialogType == 'moveItemTo'\">\n <t-form-item name=\"parent\" label=\"转移至\" :requiredMark=\"true\" v-if=\"!menuForm.isGroup\">\n <t-select :options=\"menuParentKeyOptions\" v-model=\"menuForm.parent\" />\n </t-form-item>\n </template>\n <template #footer>\n <t-button theme=\"default\" @click=\"handleCloseDialog\">取消</t-button>\n <t-button @click=\"handleSaveMenuGroupForm\">确定</t-button>\n </template>\n </GCommonForm>\n </GCommonDialog>\n </GLayout>\n</template>\n\n<script>\nimport GLayout from \"../../components/GLayout/index.vue\";\nimport GCommonHeader from \"../../components/common/GCommonHeader/index.vue\";\nimport GCommonDialog from \"../../components/common/GCommonDialog/index.vue\";\nimport GCommonForm from \"../../components/common/GCommonForm/index.vue\";\nimport GCommonTable from \"../../components/common/GCommonTable/index.vue\";\n\nimport { cloneDeep, set } from \"lodash-es\";\nimport { PREFIX } from \"../../config\";\nimport { flattenMenuData, generateMenuTree } from \"../../utils\";\n\nimport { DialogPlugin, MessagePlugin } from \"tdesign-vue\";\nimport icon from \"./icon\";\nimport http from \"../../api\";\n\nexport default {\n name: \"GMenuManage\",\n components: {\n GLayout,\n GCommonHeader,\n GCommonDialog,\n GCommonForm,\n GCommonTable,\n },\n\n data() {\n return {\n PREFIX,\n icon,\n\n title: \"菜单管理\",\n isAddOrEditDialogShow: false,\n currentDialogType: \"\",\n columns: [\n {\n // 列拖拽排序必要参数\n colKey: \"drag\",\n title: \"排序\",\n cell: \"drag\",\n width: 50,\n },\n {\n title: \"菜单名称\",\n colKey: \"title\",\n cell: \"title\",\n width: \"60%\",\n },\n {\n title: \"操作\",\n colKey: \"operations\",\n cell: \"operations\",\n },\n ],\n\n menuData: this.$store.getters[\"setting/userMenu\"],\n edificeKey: this.$store.getters[\"setting/userEdificeKey\"],\n menuForm: {\n edificeKey: \"\",\n name: \"\",\n title: \"\",\n icon: null,\n path: \"\",\n level: 1,\n isGroup: true,\n children: [],\n },\n\n menuFormRules: {\n title: [\n {\n required: true,\n message: \"菜单名称必填\",\n type: \"error\",\n trigger: \"blur\",\n },\n ],\n name: [\n {\n required: true,\n message: \"名称必填\",\n type: \"error\",\n trigger: \"blur\",\n },\n ],\n icon: [\n {\n required: true,\n message: \"图标标识必选\",\n type: \"error\",\n trigger: \"change\",\n },\n ],\n },\n };\n },\n computed: {\n menuTable() {\n return this.$refs.commonTable.$refs.menuTable;\n },\n menuTreeNodeData() {\n return this.menuTable.getTreeNode();\n },\n flatMenuData() {\n return flattenMenuData(this.menuTreeNodeData);\n },\n currentDialogTitle() {\n switch (this.currentDialogType) {\n case \"addGroup\": {\n return \"添加组\";\n }\n\n case \"editGroup\": {\n return \"编辑组\";\n }\n\n case \"editItem\": {\n return \"编辑修改菜单\";\n }\n\n case \"moveItemTo\": {\n return \"转移菜单至\";\n }\n\n default: {\n return \"\";\n }\n }\n },\n menuParentKeyOptions() {\n return this.flatMenuData\n .filter((item) => !item.url)\n .map((item) => ({\n label: item.title,\n value: item.name,\n }));\n },\n },\n\n methods: {\n appendNewTabMenuItem() {\n const { fullPath, query } = this.$route;\n const path = decodeURIComponent(fullPath);\n\n this.$store.dispatch(\"setting/appendTabMenuItem\", {\n title: this.title,\n path,\n query,\n });\n },\n\n // 筛选出子菜单中纯菜单项\n handleFilterMenuItem(children) {\n return children.filter((item) => !item.isGroup);\n },\n // 筛选出子菜单中的分组\n handleFilterMenuGroup(children) {\n return children.filter((item) => item.isGroup);\n },\n\n handleAddMenuGroup() {\n this.isAddOrEditDialogShow = true;\n this.currentDialogType = \"addGroup\";\n },\n handleUpdateFormValue(target, path, value) {\n set(target, path, value);\n this.$forceUpdate();\n },\n handleEditMenu(row) {\n this.menuForm = cloneDeep(row, {});\n this.isAddOrEditDialogShow = true;\n\n if (row.isGroup) {\n this.currentDialogType = \"editGroup\";\n } else {\n this.currentDialogType = \"editItem\";\n }\n },\n handleMoveItemTo(row) {\n this.menuForm = cloneDeep(row, {});\n this.isAddOrEditDialogShow = true;\n this.currentDialogType = \"moveItemTo\";\n },\n handleCloseDialog() {\n this.isAddOrEditDialogShow = false;\n this.resetMenuGroupForm();\n },\n resetMenuGroupForm() {\n this.menuForm = {\n edificeKey: this.edificeKey,\n name: \"\",\n title: \"\",\n icon: null,\n path: \"\",\n level: 1,\n isGroup: true,\n children: [],\n };\n },\n handleAddMenuGroupChildrenItem() {\n if (this.menuForm.level == 1) {\n this.menuForm.children.push({\n edificeKey: this.edificeKey,\n level: 2,\n icon: null,\n title: \"\",\n name: \"\",\n parent: this.menuForm.name,\n path: \"\",\n isGroup: true,\n children: [],\n });\n }\n this.$forceUpdate();\n },\n handleRemoveMenuGroupChildrenItem(item) {\n const index = this.menuForm.children.indexOf(item);\n if (index != -1) {\n this.menuForm.children.splice(index, 1);\n }\n this.$forceUpdate();\n },\n handleMoveItemAction(currentName, targetParentName) {\n // 获取原父菜单名称\n const { parent } = this.flatMenuData.find((item) => item.name == currentName);\n\n if (targetParentName !== parent) {\n this.menuForm.parent = targetParentName;\n this.menuTable.remove(currentName);\n this.menuTable.appendTo(targetParentName, this.menuForm);\n }\n },\n handleSaveMenuGroupForm() {\n this.$refs.menuFormRef.$refs.form.validate().then((result) => {\n if (!Object.keys(result).length) {\n if (this.currentDialogType == \"addGroup\") {\n this.menuForm.edificeKey = this.edificeKey;\n this.menuTable.appendTo(\"\", this.menuForm);\n\n MessagePlugin.success(\"保存新增组成功!\");\n } else if (this.currentDialogType == \"editGroup\" || this.currentDialogType == \"editItem\") {\n this.menuTable.setData(this.menuForm.name, this.menuForm);\n\n if (this.menuForm.isGroup) {\n this.menuForm.children.forEach((item) => {\n this.menuTable.setData(item.name, item);\n });\n\n MessagePlugin.success(\"编辑组成功!\");\n } else {\n this.handleMoveItemAction(this.menuForm.name, this.menuForm.parent);\n\n MessagePlugin.success(\"编辑菜单成功!\");\n }\n } else if (this.currentDialogType == \"moveItemTo\") {\n this.handleMoveItemAction(this.menuForm.name, this.menuForm.parent);\n MessagePlugin.success(\"转移组成功!\");\n }\n\n this.updateMenuTable();\n this.handleCloseDialog();\n } else {\n const firstError = Object.values(result)[0]?.[0]?.message;\n MessagePlugin.warning(`${firstError}`);\n }\n });\n },\n handleMoveSort(row, sort) {\n const { parent } = this.menuTable.getData(row.name);\n if (parent) {\n const { children } = parent.row;\n const currentIndex = children.findIndex((item) => item.name == row.name);\n\n this.handleSortAction(children, sort, currentIndex);\n this.updateMenuTable();\n } else {\n const tempData = cloneDeep(this.menuTreeNodeData);\n const currentIndex = tempData.findIndex((item) => item.name == row.name);\n\n this.handleSortAction(tempData, sort, currentIndex);\n this.updateMenuTable(tempData);\n }\n },\n handleSortAction(data, sort, currentIndex) {\n switch (sort) {\n case \"up\": {\n if (currentIndex != 0) {\n [data[currentIndex - 1], data[currentIndex]] = [data[currentIndex], data[currentIndex - 1]];\n } else {\n MessagePlugin.info(\"该菜单项已经在该组的第一个了!\");\n }\n break;\n }\n\n case \"down\": {\n if (currentIndex != data.length - 1) {\n [data[currentIndex + 1], data[currentIndex]] = [data[currentIndex], data[currentIndex + 1]];\n } else {\n MessagePlugin.info(\"该菜单项已经在该组的最后一个了!\");\n }\n break;\n }\n }\n },\n handleRemoveGroup(row) {\n try {\n const dialogInstance = DialogPlugin.confirm({\n theme: \"info\",\n header: \"撤销组\",\n body: `确定要撤销${row.title}吗?`,\n onConfirm: () => {\n let tempChildrenArr = [];\n if (row.level == 1) {\n row.children.forEach((children) => {\n console.log(children);\n\n children.level = 1;\n children.parent = null;\n tempChildrenArr.push(children);\n });\n\n this.menuTable.remove(row.name);\n\n if (tempChildrenArr.length) {\n tempChildrenArr.forEach((children) => {\n this.menuTable.appendTo(\"\", children);\n });\n }\n } else if (row.level == 2) {\n const { parent } = row;\n console.log(parent);\n\n row.children.forEach((children) => {\n children.level = 2;\n children.parent = parent;\n tempChildrenArr.push(children);\n });\n\n this.menuTable.remove(row.name);\n this.updateMenuTable();\n tempChildrenArr.forEach((children) => {\n this.menuTable.appendTo(parent, children);\n });\n }\n\n dialogInstance.destroy();\n MessagePlugin.success(\"撤销组成功\");\n },\n });\n } catch (e) {\n console.error(e);\n }\n\n this.updateMenuTable();\n },\n updateMenuTable(data = this.menuTreeNodeData) {\n this.menuTable.resetData(data);\n },\n resetMenu() {\n this.menuTable.resetData(this.$store.state.setting.config.userMenu);\n MessagePlugin.success(\"恢复默认菜单方案成功!\");\n },\n saveMenuResult() {\n const flattenMenu = flattenMenuData(this.menuTreeNodeData);\n\n try {\n http.put(\"/restapi/menus\", { menus: [...flattenMenu] }).then((res) => {\n if (res.state == 200) {\n this.$store.commit(\"setting/setMenuConfig\", this.menuTreeNodeData);\n this.menuData = this.$store.getters[\"setting/userMenu\"];\n\n MessagePlugin.success(\"保存菜单方案成功!\");\n }\n });\n } catch (e) {\n console.error(e);\n }\n },\n\n handleBeforeDragSort(context) {\n const { current, target, currentIndex, targetIndex } = context;\n const currentLevel = current.level;\n const currentParent = current.parent;\n const targetLevel = target.level;\n const targetParent = target.parent;\n\n // 拖拽方向:true 为下移,false 为上移\n const dragDirection = currentIndex < targetIndex;\n\n if (currentLevel == targetLevel) {\n // 同级同一个父菜单\n if (currentParent == targetParent) {\n return true;\n }\n // 同级不同父菜单\n else {\n MessagePlugin.info(\"不同父菜单的菜单项,请使用转移至功能转移菜单\");\n }\n } else {\n // MessagePlugin.error(\"不同层级的菜单项,不允许调整顺序!\")\n MessagePlugin.info(\"不同层级的菜单项,请使用转移至功能转移菜单\");\n }\n this.updateMenuTable();\n return false;\n },\n onAbnormalDragSort(context) {\n if (context.code === 1001) {\n MessagePlugin.error(\"不同层级的菜单项,不允许调整顺序\");\n }\n },\n },\n mounted() {\n this.appendNewTabMenuItem();\n },\n};\n</script>\n\n<style lang=\"scss\">\n#menuTable {\n .t-table__tree-col {\n justify-content: space-between;\n }\n\n .t-table__tree-op-icon {\n order: 999;\n }\n\n .icon {\n text-align: center;\n }\n\n .menu-title {\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n width: 96%;\n\n .title {\n display: flex;\n align-items: center;\n\n .title-icon {\n font-size: 23px !important;\n margin-right: 5px;\n }\n }\n\n .title-bold {\n font-weight: 600;\n }\n\n .title-child {\n color: var(--td-text-color-secondary);\n font-weight: 600;\n }\n\n .title-child::before {\n content: \"·\";\n margin: 0 5px;\n }\n\n .counts {\n color: var(--td-text-color-secondary);\n }\n }\n}\n\n.overlay-options {\n display: inline-block !important;\n font-size: 20px;\n}\n</style>\n","import \"./style/index.scss\";\nimport GView from \"./components\";\nimport stores from \"./store\";\n\nimport http from \"./api\";\nimport * as utils from \"./utils\";\nimport * as config from \"./config\";\n\nfunction install(Vue, userConfig?: any) {\n // 注册GView组件\n Vue.component(\"GView\", GView);\n\n // 注册Vuex\n Object.keys(stores).forEach((key) => {\n userConfig.store.registerModule(key, stores[key]);\n });\n\n // 载入router\n http.initRouter(userConfig.router);\n}\n\n/* istanbul ignore if */\nif (typeof window !== \"undefined\" && window.Vue) {\n install(window.Vue);\n}\nexport * from \"./components\";\nexport * from \"./views\";\nexport { http, utils, config };\nexport default {\n install,\n};\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","match","version","check","it","Math","global","globalThis","window","self","this","Function","fails","exec","error","descriptors","Object","defineProperty","get","functionBindNative","test","bind","hasOwnProperty","call","prototype","functionCall","NATIVE_BIND","apply","arguments","$propertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","f","V","descriptor","enumerable","createPropertyDescriptor","bitmap","value","configurable","writable","FunctionPrototype","uncurryThisWithBind","functionUncurryThis","fn","toString","uncurryThis","stringSlice","slice","classofRaw","$Object","split","indexedObject","classof","isNullOrUndefined","$TypeError","TypeError","requireObjectCoercible","toIndexedObject","IndexedObject","documentAll","all","documentAll_1","IS_HTMLDDA","undefined","$documentAll","isCallable","argument","isObject","aFunction","getBuiltIn","namespace","method","length","objectIsPrototypeOf","isPrototypeOf","engineUserAgent","process","Deno","versions","v8","userAgent","engineV8Version","symbolConstructorDetection","getOwnPropertySymbols","symbol","Symbol","String","sham","V8_VERSION","useSymbolAsUid","NATIVE_SYMBOL","iterator","isSymbol","USE_SYMBOL_AS_UID","$Symbol","$String","aCallable","tryToString","defineGlobalProperty","key","SHARED","sharedStore","module","exports","store","push","mode","copyright","license","source","toObject","hasOwnProperty_1","hasOwn","id","postfix","random","uid","WellKnownSymbolsStore","shared","symbolFor","createWellKnownSymbol","withoutSetter","wellKnownSymbol","name","description","TO_PRIMITIVE","toPrimitive","input","pref","func","result","exoticToPrim","val","valueOf","ordinaryToPrimitive","toPropertyKey","EXISTS","ie8DomDefine","DESCRIPTORS","a","$getOwnPropertyDescriptor","O","P","IE8_DOM_DEFINE","propertyIsEnumerableModule","v8PrototypeDefineBug","anObject","$defineProperty","ENUMERABLE","CONFIGURABLE","WRITABLE","V8_PROTOTYPE_DEFINE_BUG","Attributes","current","createNonEnumerableProperty","object","definePropertyModule","getDescriptor","functionName","PROPER","functionToString","inspectSource","set","has","WeakMap","weakMapBasicDetection","keys","hiddenKeys","OBJECT_ALREADY_INITIALIZED","NATIVE_WEAK_MAP","state","metadata","facade","STATE","sharedKey","internalState","enforce","getterFor","TYPE","CONFIGURABLE_FUNCTION_NAME","require$$0","enforceInternalState","InternalStateModule","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","options","replace","getter","setter","arity","constructor","join","defineBuiltIn","simple","unsafe","nonConfigurable","nonWritable","ceil","floor","mathTrunc","trunc","x","n","toIntegerOrInfinity","number","max","min","lengthOfArrayLike","obj","createMethod","IS_INCLUDES","$this","el","fromIndex","index","integer","toAbsoluteIndex","indexOf","includes","concat","getOwnPropertyNames","names","i","internalObjectKeys","ownKeys","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","copyConstructorProperties","target","exceptions","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","isForced_1","_export","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","isArray","Array","arraySetLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","SILENT_ON_NON_WRITABLE_LENGTH","$","proto","item","len","argCount","setArrayLength","NProgress","configure","easing","speed","showSpinner","trickle","trickleSpeed","minimum","PREFIX","LOCAL_CONFIG","LOCAL_THEME_CONFIG","LOCAL_MENU_CONFIG","LOCAL_USER","LOCAL_TAB_MENU","LOCAL_INIT_TAB_MENU_LIST","LOCAL_DATA_ID","LOCAL_SESSION_ID","WS_SERVICE","location","origin","protocol","INIT_WS_MODEL","subcmd","dataId","cmd","args","response","THEME_CONFIG","brandTheme","displayMode","COLOR_TOKEN","DEFAULT","CYAN","GREEN","ORANGE","RED","PINK","PURPLE","YELLOW","createContextEvaluator","eval_string","context","template","map","createContextFunctionTemplate","functor","evalContext","text","evaluator","vFun","_basePath","path","getProperty","defaultValue","reduce","o","k","setProperty","_","assign","deepClone","sourceObj","targetObj","cloneObj","generateMenuTree","parent","level","filter","children","url","alias","title","isGroup","flattenMenuData","tree","flatMenu","flat","menuTree","parentName","forEach","edificeKey","icon","sort","getHomeUrl","menus","menu","childrenPath","getUrlQuery","queryObj","queryItem","initTableColumns","tableColumns","tableColumnsResult","colKey","fixed","attrs","minWidth","column","idx","arr","tempColumnResult","keyName","cell","columnType","width","convertTableColumnWeight","weight","ellipsis","props","theme","showArrow","placement","maxWidth","buttonLength","buttons","columnAmount","initTreeSelectorData","config","list","valueName","titleName","parentKey","parentKeyName","selector","res","parentObj","label","getBrandColor","colorList","toUpperCase","toUnderline","isVoid","trim","nanoid","customAlphabet","script$z","computed","tabMenuList","$store","setting","homeUrl","getters","activeItemPath","methods","handleTabMenuClick","visible","ctx","trigger","handleChangeCurrentTab","$router","query","handleRemoveCurrentTab","nextTabMenuItem","dispatch","itemIdx","decodeURIComponent","$route","fullPath","handleTabRefresh","$nextTick","handleTabCloseAhead","handleTabOperationEffect","handleTabCloseBehind","handleTabCloseOther","currentPath","currentIdx","findIndex","nextItem","script","components","GLayoutHeaderTab","userRealName","toggleSideMenuCollapsed","commit","toggleSettingPanel","handleLogout","script$w","default","background","anInstance","Prototype","objectSetPrototypeOf","setPrototypeOf","CORRECT_SETTER","aPossiblePrototype","__proto__","inheritIfRequired","dummy","Wrapper","NewTarget","NewTargetPrototype","toStringTagSupport","TO_STRING_TAG","CORRECT_ARGUMENTS","TO_STRING_TAG_SUPPORT","tag","tryGet","callee","normalizeStringArgument","$default","domExceptionConstants","IndexSizeError","s","c","m","DOMStringSizeError","HierarchyRequestError","WrongDocumentError","InvalidCharacterError","NoDataAllowedError","NoModificationAllowedError","NotFoundError","NotSupportedError","InUseAttributeError","InvalidStateError","SyntaxError","InvalidModificationError","NamespaceError","InvalidAccessError","ValidationError","TypeMismatchError","SecurityError","NetworkError","AbortError","URLMismatchError","QuotaExceededError","TimeoutError","InvalidNodeTypeError","DataCloneError","$Error","Error","TEST","stack","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","errorStackClear","dropEntries","prepareStackTrace","DOM_EXCEPTION","NativeDOMException","$DOMException","DOMExceptionPrototype","argumentsLength","message","that","clearErrorStack","ERROR_HAS_STACK","DOM_EXCEPTION_HAS_STACK","BUGGY_DESCRIPTOR","FORCED_CONSTRUCTOR","DOMException","PolyfilledDOMException","PolyfilledDOMExceptionPrototype","DOMExceptionConstants","constant","constantName","COLOR_OPTIONS","MODE_OPTIONS","ColorContainer","themeData","themeConfig","isSettingPanelShow","watch","handler","deep","GLayoutHeader","GLayoutContent","GLayoutSetting","GLayoutSideMenu","GLayoutSideMenuContent","navData","menuList","getMenuList","handleMenuItemClick","menuCollapsed","isSideBarCollapse","menuActivePath","menuDefaultExpanded","currentParent","parentMenu","childrenMenu","toMenuManage","isUserLogin","mounted","modelValue","required","originValue","Number","Boolean","placeholder","disabled","inputType","handleChange","$emit","handleBlur","beforeDestroy","_typeof","_toPropertyKey","arg","hint","prim","_defineProperty","loadNanoId","localSessionId","sessionStorage","getItem","newSessionId","setItem","http","sessionId","service","axios","create","router","interceptors","request","use","userToken","JSON","parse","localStorage","token","tokenExpiredTime","lang","userInfo","language","headers","start","Promise","reject","done","device","uuid","async","MessagePlugin","params","_object","post","put","delete","initRouter","timeout","withCredentials","viewApiUrl","getOneView","getViewData","targetViewName","size","multiple","queryProps","immediate","listData","propsModel","tempModel","viewName","getSelectData","dateTimeValue","itemType","dayjs","format","script$m","GCommonHeader","GFormInput","GFormSelect","GFormSelectDateTime","GHeaderUpload","uploadData","uploadApi","handleUploadSuccess","event","success","handleActiveFile","console","log","fileUrl","boardName","buttonId","fileUrls","then","handleUploadError","headerInfo","timer","filterForm","headerCommonBtns","button","action","headerUploadBtns","headerSearchBar","searchBar","headerFilters","filters","clearTimeout","setTimeout","handleFilterChange","handleHeaderButtonClick","commonTableProps","selectList","treeOptions","treeData","cascaderOptions","fileName","tips","GCommonTable","GFormLabel","GFormCheckBox","GFormSwitch","GFormRadio","GFormTreeCheckBox","GFormCascader","GFormUpload","col","row","formModel","formItems","handleAfterUpdateValue","$forceUpdate","handleAfterValueBlur","newValue","VueQr","boardInfo","tableData","paginationProps","isReload","selectedRowKeys","tablePagination","showJumper","rowKey","columns","handleSelectChange","selectedRowData","returnValue","Mustache","render","returnEnumsValue","enums","targetArr","element","shift","returnDateValue","handleFilterColumnBtns","columnBtns","v","showIf","evalResult","e","warn","handleTableButtonClick","handleTableFormChange","model","tempPagination","page","pageSize","count","total","totalCount","onChange","pageInfo","commonFormProps","blockType","blockId","updateId","handleBlockShowFlag","$refs","__vue__","blockShowFlag","matches","nextElementSibling","GFormEditor","quillEditor","handleEditorChange","content","html","formWhiteList","disableFlag","handleAfterUpload","initEmptyFormItems","handleBeforeDestroyFormItem","handleItemShowIf","form","handleItemDisableIf","disableIf","GCommonForm","GFormBlock","GFormItem","formData","formRules","formOkButton","okButton","formCancelButton","cancelButton","initFormRules","currentFormItems","commonForm","$children","$el","classList","contains","tempRules","itemTempRules","validator","validate","fields","handleButtonClick","firstError","values","warning","formItem","GTemplate","resolve","index$1","d","tabs","currentTabTitle","handleTabChange","newTabTitle","handleCloseDialog","history","go","commonDialogProps","script$4","GCommonDialog","dialogViewInfo","dialogFormModel","isVisible","viewInfo","viewBoard","viewProps","dialogWidth","boardType","dialogHeaderName","dialogViewName","view","dialogProps","handleDialogChange","boards","getViewInfo","GHeader","GTable","GForm","GTab","GDialog","board","headerFilterProps","tableSelectedData","tablePaginationProps","pageCount","isDialogVisible","header","getTemplateData","handleAction","tempProps","stringify","confirmMessage","dialogInstance","DialogPlugin","confirm","body","onConfirm","handleConfirmForm","destroy","onCancel","info","handleBatchAction","link","open","href","downloadUrl","he","decode","downloadEl","display","setAttribute","click","handleHeaderFilterChange","filterProps","handleReturnSelectedKey","handleSetPaginationProps","batchProps","handleTableFormConfirm","confirmProps","handleCloseDialogEvent","handleConfirmAndClose","addEventListener","updatedDataId","detail","script$2","viewBoards","isLoading","isLoadingDelay","appendNewTabMenuItem","pros","GLayout","GTemplateView","isGlobalLoaded","handleReturnTitle","handleReload","actions","initSocket","rootState","isSocketLink","isSocketFirst","socket","WebSocket","onopen","socketInterval","setInterval","send","onclose","isSocketReset","socketTimeout","dispatchEvent","CustomEvent","onerror","onmessage","user","sendRegisterMessage","sendUnregisterMessage","stores","namespaced","menuConfig","realName","userPermissions","userMenu","initTabMenuList","userEdificeKey","matchMedia","setUserLoginStatus","status","setGlobalLoadingStatus","toggleSideBarCollapse","setInitTabMenuList","setTabMenuList","setSettingConfig","configKey","setThemeSettingConfig","setMenuConfig","reloadGlobal","initSettingConfig","userLoadInit","userLogout","removeItem","clear","loadLocalTheme","changeTheme","changeMode","isDarkMode","documentElement","changeBrandTheme","updateMenuConfig","initTabMenu","homeTabMenuItem","isHome","appendTabMenuItem","newItem","find","subtractCurrentTabMenuItem","subtractTabMenuItemBehind","subtractTabMenuItemAhead","subtractTabMenuItemOther","tempItem","clearTabMenuItem","getPropsByPropsKey","propsKeys","propsKey","mutations","setSource","initSource","stem","isAddOrEditDialogShow","currentDialogType","menuData","menuForm","menuFormRules","menuTable","commonTable","menuTreeNodeData","getTreeNode","flatMenuData","currentDialogTitle","menuParentKeyOptions","handleFilterMenuItem","handleFilterMenuGroup","handleAddMenuGroup","handleUpdateFormValue","handleEditMenu","cloneDeep","handleMoveItemTo","resetMenuGroupForm","handleAddMenuGroupChildrenItem","handleRemoveMenuGroupChildrenItem","splice","handleMoveItemAction","currentName","targetParentName","remove","appendTo","handleSaveMenuGroupForm","menuFormRef","setData","updateMenuTable","handleMoveSort","getData","currentIndex","handleSortAction","tempData","handleRemoveGroup","tempChildrenArr","resetData","resetMenu","saveMenuResult","flattenMenu","handleBeforeDragSort","targetIndex","currentLevel","targetLevel","targetParent","onAbnormalDragSort","code","install","Vue","userConfig","component","GView","registerModule"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../node_modules/core-js/internals/global.js","../node_modules/core-js/internals/engine-v8-version.js","../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/function-bind-native.js","../node_modules/core-js/internals/function-call.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/function-uncurry-this.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/is-null-or-undefined.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/document-all.js","../node_modules/core-js/internals/is-callable.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/object-is-prototype-of.js","../node_modules/core-js/internals/engine-user-agent.js","../node_modules/core-js/internals/symbol-constructor-detection.js","../node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/core-js/internals/is-symbol.js","../node_modules/core-js/internals/try-to-string.js","../node_modules/core-js/internals/a-callable.js","../node_modules/core-js/internals/ordinary-to-primitive.js","../node_modules/core-js/internals/define-global-property.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/has-own-property.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/get-method.js","../node_modules/core-js/internals/to-property-key.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/v8-prototype-define-bug.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/function-name.js","../node_modules/core-js/internals/inspect-source.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/weak-map-basic-detection.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/make-built-in.js","../node_modules/core-js/internals/define-built-in.js","../node_modules/core-js/internals/math-trunc.js","../node_modules/core-js/internals/to-integer-or-infinity.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/length-of-array-like.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/is-array.js","../node_modules/core-js/internals/array-set-length.js","../node_modules/core-js/internals/does-not-exceed-safe-integer.js","../node_modules/core-js/modules/es.array.push.js","../packages/config/nprogress.ts","../packages/config/constant.ts","../packages/config/socket.ts","../packages/config/setting.ts","../packages/config/color.ts","../packages/config/api.ts","../packages/utils/common.ts","../packages/utils/menu.ts","../packages/utils/url.ts","../packages/utils/table.ts","../packages/utils/form.ts","../packages/utils/color.ts","../packages/utils/validate.ts","../packages/utils/nanoid.ts","../packages/components/GLayout/components/GLayoutHeaderTab.vue","../packages/components/GLayout/components/GLayoutHeader.vue","../packages/components/GLayout/components/GLayoutContent.vue","../packages/components/common/color/index.vue","../node_modules/core-js/internals/an-instance.js","../node_modules/core-js/internals/a-possible-prototype.js","../node_modules/core-js/internals/object-set-prototype-of.js","../node_modules/core-js/internals/inherit-if-required.js","../node_modules/core-js/internals/to-string-tag-support.js","../node_modules/core-js/internals/classof.js","../node_modules/core-js/internals/to-string.js","../node_modules/core-js/internals/normalize-string-argument.js","../node_modules/core-js/internals/dom-exception-constants.js","../node_modules/core-js/internals/error-stack-clear.js","../node_modules/core-js/modules/web.dom-exception.stack.js","../packages/components/GLayout/components/GLayoutSetting.vue","../packages/components/GLayout/index.vue","../packages/components/GLayout/components/GLayoutSideMenu.vue","../packages/components/GLayout/components/GLayoutSideMenuContent.vue","../packages/components/common/GCommonHeader/index.vue","../packages/components/GForm/components/GFormInput.vue","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../packages/api/index.ts","../packages/api/config.ts","../packages/api/modules/view.ts","../packages/components/GForm/components/GFormSelect.vue","../packages/components/GForm/components/GFormSelectDateTime.vue","../packages/components/GHeader/index.vue","../packages/components/GHeader/components/GHeaderUpload.vue","../packages/components/common/GCommonTable/index.vue","../packages/components/GForm/components/GFormLabel.vue","../packages/components/GForm/components/GFormCheckBox.vue","../packages/components/GForm/components/GFormSwitch.vue","../packages/components/GForm/components/GFormRadio.vue","../packages/components/GForm/components/GFormTreeCheckBox.vue","../packages/components/GForm/components/GFormCascader.vue","../packages/components/GForm/components/GFormUpload.vue","../packages/components/GTable/index.vue","../packages/components/GTable/components/GTableForm.vue","../packages/components/common/GCommonForm/index.vue","../packages/components/GForm/components/GFormBlock.vue","../packages/components/GForm/components/GFormItem.vue","../packages/components/GForm/components/GFormEditor.vue","../packages/components/GForm/index.vue","../packages/components/GTab/index.vue","../packages/components/common/GCommonDialog/index.vue","../packages/components/GDialog/index.vue","../packages/components/GTemplate/index.vue","../packages/components/GTemplateView/index.vue","../packages/components/GView/index.vue","../packages/store/socket.ts","../packages/store/props.ts","../packages/store/index.ts","../packages/store/setting.ts","../packages/store/view.ts","../packages/views/GMenuManage/icon.ts","../packages/views/GMenuManage/index.vue","../packages/index.ts"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.26.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.26.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","var $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar SILENT_ON_NON_WRITABLE_LENGTH = !function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: INCORRECT_TO_LENGTH || SILENT_ON_NON_WRITABLE_LENGTH }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","import NProgress from \"nprogress\";\n\nNProgress.configure({\n easing: \"ease\", // 动画方式\n speed: 600, // 递增进度条的速度\n showSpinner: true, // 是否显示加载spinner\n trickle: false,\n trickleSpeed: 300, // 自动递增间隔\n minimum: 0.1, // 初始化时的最小百分比\n});\n\nexport { NProgress };\n","// 全局样式前缀\nexport const PREFIX = \"gview\";\n\n// 存储键名规范\nexport const LOCAL_CONFIG = \"config\";\nexport const LOCAL_THEME_CONFIG = \"themeConfig\";\nexport const LOCAL_MENU_CONFIG = \"menuConfig\";\nexport const LOCAL_USER = \"user\";\nexport const LOCAL_MENU = \"menu\";\nexport const LOCAL_TAB_MENU = \"tabMenu\";\nexport const LOCAL_INIT_TAB_MENU_LIST = \"initTabMenuList\";\nexport const TOKEN_NAME = \"token\";\nexport const TOKEN_EXPIRED_TIME = \"tokenExpiredTime\";\n\nexport const LOCAL_DATA_ID = \"dataId\";\nexport const LOCAL_SESSION_ID = \"sessionId\";\n","// WebSocket 相关接口配置\nexport const WS_SERVICE = window.location.origin.replace(window.location.protocol, \"ws:\") + \"/gview/websocket\";\n\n// WebSocket 消息模板\nexport const INIT_WS_MODEL = (subcmd: string, dataId: string = \"\") => {\n if (!dataId) {\n return {\n head: \"gonsin\",\n cmd: {\n cmd: \"gview_client\",\n subcmd,\n response: 0,\n },\n };\n } else {\n return {\n head: \"gonsin\",\n cmd: {\n cmd: \"gview_client\",\n subcmd,\n },\n args: {\n dataId,\n },\n };\n }\n};\n\n// 心跳间隔时长\n// -- 前端自websocket连接成功之后,应该每30秒发送一次心跳,如果到40秒还没发送心跳,websocket将自动断开\nexport const WS_INTERVAL_TIMEOUT = 30000;\n// 重连超时时长\nexport const WS_RESET_TIMEOUT = 3000;\n","export const THEME_CONFIG = {\n brandTheme: \"default\", // 主题色\n displayMode: \"light\", // 主题模式 light | dark | auto\n};\n","// /* eslint-disable indent */\nexport type ColorToken = Record<string, string>;\nexport type ColorSeries = Record<string, ColorToken>;\n\nexport const defaultLightColor = [\n \"#0052d9\",\n \"#0594fa\",\n \"#00a870\",\n \"#ebb105\",\n \"#ed7b2f\",\n \"#e34d59\",\n \"#ed49b4\",\n \"#834ec2\",\n];\nexport const defaultDarkColor = [\n \"#4582e6\",\n \"#29a4fb\",\n \"#03a56f\",\n \"#ca8d03\",\n \"#ed7b2f\",\n \"#ea7b84\",\n \"#f172c5\",\n \"#ab87d5\",\n];\n\nexport const COLOR_TOKEN: ColorSeries = {\n DEFAULT: {\n \"--td-brand-color\": \"#0052d9\",\n \"--td-brand-color-1\": \"#f2f3ff\",\n \"--td-brand-color-2\": \"#d9e1ff\",\n \"--td-brand-color-3\": \"#b5c7ff\",\n \"--td-brand-color-4\": \"#8eabff\",\n \"--td-brand-color-5\": \"#618dff\",\n \"--td-brand-color-6\": \"#366ef4\",\n \"--td-brand-color-7\": \"#0052d9\",\n \"--td-brand-color-8\": \"#003cab\",\n \"--td-brand-color-9\": \"#002a7c\",\n \"--td-brand-color-10\": \"#001a57\",\n },\n\n CYAN: {\n \"--td-brand-color\": \"#0594FA\",\n \"--td-brand-color-1\": \"#d7eefe\",\n \"--td-brand-color-2\": \"#aeddfd\",\n \"--td-brand-color-3\": \"#84cafd\",\n \"--td-brand-color-4\": \"#58b8fc\",\n \"--td-brand-color-5\": \"#29a4fb\",\n \"--td-brand-color-6\": \"#0594FA\",\n \"--td-brand-color-7\": \"#29a4fb\",\n \"--td-brand-color-8\": \"#0594FA\",\n \"--td-brand-color-9\": \"#0378df\",\n \"--td-brand-color-10\": \"#01409b\",\n },\n GREEN: {\n \"--td-brand-color\": \"#00A870\",\n \"--td-brand-color-1\": \"#8dffd9\",\n \"--td-brand-color-2\": \"#00f2a2\",\n \"--td-brand-color-3\": \"#00dc92\",\n \"--td-brand-color-4\": \"#00c583\",\n \"--td-brand-color-5\": \"#00A870\",\n \"--td-brand-color-6\": \"#009a5d\",\n \"--td-brand-color-7\": \"#00c583\",\n \"--td-brand-color-8\": \"#00A870\",\n \"--td-brand-color-9\": \"#009a5d\",\n \"--td-brand-color-10\": \"#004a14\",\n },\n ORANGE: {\n \"--td-brand-color\": \"#ED7B2F\",\n \"--td-brand-color-1\": \"#fce5d7\",\n \"--td-brand-color-2\": \"#f8cdaf\",\n \"--td-brand-color-3\": \"#f4b285\",\n \"--td-brand-color-4\": \"#f19659\",\n \"--td-brand-color-5\": \"#ED7B2F\",\n \"--td-brand-color-6\": \"#e75510\",\n \"--td-brand-color-7\": \"#f19659\",\n \"--td-brand-color-8\": \"#ED7B2F\",\n \"--td-brand-color-9\": \"#e75510\",\n \"--td-brand-color-10\": \"#7f0a02\",\n },\n RED: {\n \"--td-brand-color\": \"#E34D59\",\n \"--td-brand-color-1\": \"#fbe5e7\",\n \"--td-brand-color-2\": \"#f7ccd0\",\n \"--td-brand-color-3\": \"#f3b2b8\",\n \"--td-brand-color-4\": \"#ef989f\",\n \"--td-brand-color-5\": \"#ea7b84\",\n \"--td-brand-color-6\": \"#E34D59\",\n \"--td-brand-color-7\": \"#ea7b84\",\n \"--td-brand-color-8\": \"#E34D59\",\n \"--td-brand-color-9\": \"#e42c3a\",\n \"--td-brand-color-10\": \"#8d0309\",\n },\n PINK: {\n \"--td-brand-color\": \"#ED49B4\",\n \"--td-brand-color-1\": \"#fce5f4\",\n \"--td-brand-color-2\": \"#facae9\",\n \"--td-brand-color-3\": \"#f7aede\",\n \"--td-brand-color-4\": \"#f491d2\",\n \"--td-brand-color-5\": \"#f172c5\",\n \"--td-brand-color-6\": \"#ED49B4\",\n \"--td-brand-color-7\": \"#f172c5\",\n \"--td-brand-color-8\": \"#ED49B4\",\n \"--td-brand-color-9\": \"#e80f9d\",\n \"--td-brand-color-10\": \"#8f025e\",\n },\n PURPLE: {\n \"--td-brand-color\": \"#834EC2\",\n \"--td-brand-color-1\": \"#eee6f7\",\n \"--td-brand-color-2\": \"#ddceee\",\n \"--td-brand-color-3\": \"#ccb6e6\",\n \"--td-brand-color-4\": \"#bb9edc\",\n \"--td-brand-color-5\": \"#ab87d5\",\n \"--td-brand-color-6\": \"#9a6fce\",\n \"--td-brand-color-7\": \"#9a6fce\",\n \"--td-brand-color-8\": \"#834EC2\",\n \"--td-brand-color-9\": \"#783ac3\",\n \"--td-brand-color-10\": \"#4c1397\",\n },\n YELLOW: {\n \"--td-brand-color\": \"#EBB105\",\n \"--td-brand-color-1\": \"#fde9ab\",\n \"--td-brand-color-2\": \"#fbd152\",\n \"--td-brand-color-3\": \"#EBB105\",\n \"--td-brand-color-4\": \"#dda204\",\n \"--td-brand-color-5\": \"#ca8d03\",\n \"--td-brand-color-6\": \"#b67803\",\n \"--td-brand-color-7\": \"#fbd152\",\n \"--td-brand-color-8\": \"#EBB105\",\n \"--td-brand-color-9\": \"#dda204\",\n \"--td-brand-color-10\": \"#603100\",\n },\n};\n","// 相关接口配置\n// 上传接口\nexport const UPLOAD_API = \"/restapi/s09/gview/active/upload_file\";\n","function createContextFunctionTemplate(eval_string, context) {\n return `\nreturn function (context) {\n \"use strict\";\n ${Object.keys(context).length > 0 ? `let ${Object.keys(context).map((key) => ` ${key} = context['${key}']`)};` : ``}\n return ${eval_string};\n} \n`;\n}\n\nfunction createContextEvaluator(eval_string, context) {\n let template = createContextFunctionTemplate(eval_string, context);\n let functor = Function(template);\n return functor();\n}\n\nexport function evalContext(text, context = {}) {\n let evaluator = createContextEvaluator(text, context);\n return evaluator(context);\n}\n\n/**\n * @description: 处理showIf可能出现的值\n * @param {any} value\n * @return {any}\n */\nexport function vFun(value: any): any {\n if (value === undefined) {\n return \"\";\n }\n if (value === null) {\n return \"\";\n }\n if (value === \"\") {\n return \"\";\n }\n if (value === 0) {\n return 0;\n }\n if (value === \"0\") {\n return \"0\";\n }\n return value;\n}\n\n// 处理 path, path有三种形式:'a[0].b.c'、'a.0.b.c' 和 ['a','0','b','c'],需要统一处理成数组,便于后续使用\nfunction _basePath(path) {\n // 若是数组,则直接返回\n if (Array.isArray(path)) return path;\n // 若有 '[',']',则替换成将 '[' 替换成 '.',去掉 ']'\n return path.replace(/\\[/g, \".\").replace(/\\]/g, \"\").split(\".\");\n}\n\n/**\n * @description: 获取对象属性方法\n * @param {*} target\n * @param {*} propertyStr\n * @return {*}\n */\nexport function getProperty(object, path, defaultValue = \"\") {\n // 判断 object 是否是数组或者对象,否则直接返回默认值 defaultValue\n if (typeof object !== \"object\") return defaultValue;\n\n // 沿着路径寻找到对应的值,未找到则返回默认值 defaultValue\n let result = _basePath(path).reduce((o, k) => (o || {})[k], object);\n\n if ((result ?? \"\") != \"\" || result == 0) {\n return result;\n } else {\n return defaultValue;\n }\n}\n\nexport function setProperty(object, path, value) {\n // 判断 object 是否是数组或者对象,否则直接返回 object\n if (typeof object !== \"object\") return object;\n\n _basePath(path).reduce((o, k, i, _) => {\n if (i === _.length - 1) {\n // 若遍历结束直接赋值\n o[k] = value;\n return null;\n } else if (k in o) {\n // 若存在对应路径,则返回找到的对象,进行下一次遍历\n return o[k];\n } else {\n // 若不存在对应路径,则创建对应对象,若下一路径是数字,新对象赋值为空数组,否则赋值为空对象\n o[k] = /^[0-9]{1,}$/.test(_[i + 1]) ? [] : {};\n return o[k];\n }\n }, object);\n\n Object.assign(object, object);\n\n // 返回object\n return object;\n}\n\nexport function deepClone(sourceObj, targetObj) {\n let cloneObj = targetObj || {};\n if (!sourceObj || typeof sourceObj !== \"object\" || sourceObj.length === undefined) {\n return sourceObj;\n }\n if (sourceObj instanceof Array) {\n cloneObj = sourceObj.concat();\n } else {\n for (let i in sourceObj) {\n if (typeof sourceObj[i] === \"object\") {\n cloneObj[i] = deepClone(sourceObj[i], {});\n } else {\n cloneObj[i] = sourceObj[i];\n }\n }\n }\n return cloneObj;\n}\n","import { IMenuTree } from \"../types\";\n\n/**\n * 递归生成菜单树\n * @param data 原始菜单树数据\n * @param parent 标记父菜单\n * @param level 标记当前菜单层级\n * @returns\n */\nexport function generateMenuTree(data: IMenuTree[], parent: string | null, level: number): IMenuTree[] {\n return data\n .filter((item) => item.parent === parent)\n .map((item) => ({\n ...item,\n children: generateMenuTree(data, item.name, level + 1),\n\n path: item.url, // 菜单路径\n alias: item.title, // 菜单备注名称\n level, // 标记当前层级\n isGroup: !item.url, // 标记当前是否为分组\n }));\n}\n\n/**\n * 扁平化菜单树\n */\nexport const flattenMenuData = (tree: IMenuTree[]) => {\n const flatMenu: Array<IMenuTree> = [];\n function flat(menuTree: IMenuTree[], parentName: string | null) {\n menuTree.forEach((item) => {\n const { edificeKey, name, title, url, icon } = item;\n flatMenu.push({\n edificeKey,\n name,\n parent: parentName,\n title,\n url,\n icon,\n });\n\n if (item.children && item.children.length > 0) {\n flat(item.children, name);\n }\n });\n }\n\n flat(tree, null);\n\n flatMenu.forEach((item, index) => {\n item.sort = index;\n });\n return flatMenu;\n};\n\n/**\n * 获取首页菜单 第一个url不为空的菜单信息\n * @param menus\n * @param url\n * @returns\n */\nexport const getHomeUrl = (menus: IMenuTree[], url = \"\"): string => {\n for (const menu of menus) {\n if (menu.url) {\n url = menu.url;\n break;\n }\n const childrenPath = getHomeUrl(menu.children || [], url);\n if (childrenPath) {\n url = childrenPath;\n break;\n }\n }\n return url;\n};\n","/**\n * @description: 获取路径中的参数,例子路径 view?viewName=GropBean&MeetingName=TestMeeting\n * @param {*} url\n * @return {*}\n */\nexport function getUrlQuery(url) {\n let queryObj = {};\n\n if (url.indexOf(\"?\") !== -1) {\n let queryStr = url.split(\"?\")[1].split(\"&\");\n\n queryStr.forEach((queryItem) => {\n queryObj[queryItem.split(\"=\")[0]] = queryItem.split(\"=\")[1];\n });\n }\n\n return queryObj;\n}\n","import { TableColumns } from \"../types\";\nimport { PrimaryTableCol } from \"tdesign-vue\";\n\nexport function initTableColumns(tableColumns: TableColumns[]): Array<PrimaryTableCol> {\n let tableColumnsResult: Array<PrimaryTableCol> = [];\n\n // 多选框单元列配置\n tableColumnsResult.push({\n colKey: \"row-select\",\n type: \"multiple\",\n fixed: \"left\",\n attrs: {\n style: {\n minWidth: \"30px\",\n },\n },\n });\n\n tableColumns.forEach((column, idx, arr) => {\n let tempColumnResult: any = {\n colKey: column.keyName !== \"\" ? column.keyName : column.name,\n title: column.name,\n cell: column.columnType,\n width: `calc(${convertTableColumnWeight(column.weight ?? 1, arr.length)} * 100vw - 32px)`,\n ellipsis: { props: { theme: \"light\", showArrow: false, placement: \"bottom\" } },\n ...column,\n };\n\n if (idx == 0) {\n tempColumnResult.fixed = \"left\";\n tempColumnResult.attrs = {\n style: {\n maxWidth: `calc(${convertTableColumnWeight(1, arr.length)} * 100vw - 32px)`,\n },\n };\n }\n\n if (column.columnType == \"BUTTONS\") {\n const buttonLength = column.buttons?.length || 1;\n\n tempColumnResult.ellipsis = undefined;\n tempColumnResult.attrs = {\n style: {\n minWidth: buttonLength * 90 + \"px\",\n },\n };\n tempColumnResult.fixed = \"right\";\n }\n\n if (column.columnType == \"FORM_ITEM\") {\n tempColumnResult.ellipsis = undefined;\n }\n tableColumnsResult.push(tempColumnResult);\n });\n\n return tableColumnsResult;\n}\n\n/**\n * @description: 表格列宽度权重转换\n * @return {*}\n */\nfunction convertTableColumnWeight(weight: number, columnAmount: number) {\n // return (weight / columnAmount) * 100 + \"%\";\n return weight / columnAmount;\n}\n","/**\n * @description: 初始化处理树形选择列表数据\n * @param {*} config\n * @return {*}\n */\nexport function initTreeSelectorData(config) {\n const { list, keyName, valueName, titleName, parentKey, parentKeyName } = config;\n\n const selector = (parentKey, arr) => {\n const res: any = [];\n\n arr.forEach((item) => {\n if (item[parentKeyName] == parentKey) {\n const children = selector(item[keyName], list);\n\n const parentObj = {\n key: item[keyName],\n label: item[titleName],\n value: item[valueName],\n children: [],\n };\n\n if (children.length) {\n parentObj.children = children;\n }\n\n res.push(parentObj);\n }\n });\n\n return res;\n };\n\n return selector(parentKey, list);\n}\n","import { ColorSeries, ColorToken } from \"../config/color\";\nfunction toUnderline(name: string): string {\n return name.replace(/([A-Z])/g, \"_$1\").toUpperCase();\n}\n\nexport function getBrandColor(type: string, colorList: ColorSeries): ColorToken {\n const name = /^#[A-F\\d]{6}$/i.test(type) ? type : toUnderline(type);\n return colorList[name || \"DEFAULT\"];\n}\n","/**\n * @description: 判断表单内容是否为空\n * @param {*} value\n * @return {*}\n */\nexport function isVoid(value) {\n if (value === null) {\n return false;\n }\n\n value = (\"\" + value).trim();\n return value != \"\";\n}\n","import { customAlphabet } from \"nanoid\";\n\nexport function nanoid(length: number) {\n return customAlphabet(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\", 32)(length);\n}\n","<template>\n <t-tabs\n :class=\"`${PREFIX}-tabs`\"\n size=\"large\"\n :value=\"decodeURIComponent($route.fullPath)\"\n @change=\"handleChangeCurrentTab\"\n @remove=\"handleRemoveCurrentTab\"\n >\n <t-tab-panel v-for=\"(item, index) in tabMenuList\" :key=\"item.path\" :value=\"item.path\" :removable=\"!item.isHome\">\n <template #label>\n <t-dropdown\n trigger=\"context-menu\"\n :popup-props=\"{\n onVisibleChange: (visible, ctx) => handleTabMenuClick(visible, ctx, item.path),\n visible: activeItemPath != '' ? activeItemPath === item.path : false,\n }\"\n >{{ item.title }}\n <template #dropdown>\n <t-dropdown-menu>\n <t-dropdown-item v-if=\"item.isHome\" @click=\"() => handleChangeCurrentTab(item.path)\">\n <t-icon name=\"home\"></t-icon>前往首页\n </t-dropdown-item>\n <t-dropdown-item v-if=\"!item.isHome\" @click=\"() => handleTabRefresh(item, index)\">\n <t-icon name=\"refresh\"></t-icon>刷新\n </t-dropdown-item>\n <t-dropdown-item v-if=\"index > 1\" @click=\"() => handleTabCloseAhead(item.path, index)\">\n <t-icon name=\"arrow-left\"></t-icon>关闭左侧\n </t-dropdown-item>\n <t-dropdown-item\n v-if=\"index > 0 && index < tabMenuList.length - 1\"\n @click=\"() => handleTabCloseBehind(item.path, index)\"\n >\n <t-icon name=\"arrow-right \"></t-icon>关闭右侧\n </t-dropdown-item>\n <t-dropdown-item\n v-if=\"index > 0 && tabMenuList.length > 2\"\n @click=\"() => handleTabCloseOther(item.path, index)\"\n >\n <t-icon name=\"close-circle\"></t-icon>关闭其他\n </t-dropdown-item>\n </t-dropdown-menu>\n </template>\n </t-dropdown>\n </template>\n </t-tab-panel>\n </t-tabs>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\nimport { getUrlQuery } from \"../../../utils\";\n\nexport default {\n computed: {\n tabMenuList() {\n return this.$store.state.setting.tabMenuList;\n },\n homeUrl() {\n return this.$store.getters[\"setting/homeUrl\"];\n },\n },\n data() {\n return {\n PREFIX,\n activeItemPath: \"\",\n };\n },\n methods: {\n handleTabMenuClick(visible, ctx, path) {\n if (ctx.trigger === \"document\") this.activeItemPath = null;\n if (visible) this.activeItemPath = path;\n },\n handleChangeCurrentTab(path) {\n if (path === \"/home\") {\n this.$router.push(\n { path: this.homeUrl, query: getUrlQuery(this.homeUrl) },\n () => {},\n () => {},\n );\n } else {\n this.$router.push(\n { path, query: getUrlQuery(path) },\n () => {},\n () => {},\n );\n }\n },\n handleRemoveCurrentTab({ value: path, index }) {\n const { tabMenuList } = this.$store.state.setting;\n\n if (tabMenuList.length > 2) {\n const nextTabMenuItem = tabMenuList[index + 1] || tabMenuList[index - 1];\n\n this.$store.dispatch(\"setting/subtractCurrentTabMenuItem\", { path, itemIdx: index });\n const fullPath = decodeURIComponent(this.$route.fullPath);\n if (path === fullPath) {\n this.$router.push(\n {\n path: nextTabMenuItem.path,\n query: nextTabMenuItem.query,\n },\n () => {},\n () => {},\n );\n }\n }\n },\n handleTabRefresh(item, index) {\n this.$nextTick(() => {\n this.$router.push(\n {\n path: item.path,\n query: item.query,\n },\n () => {},\n () => {},\n );\n });\n\n this.$store.dispatch(\"setting/reloadGlobal\");\n this.activeItemPath = null;\n },\n handleTabCloseAhead(path, itemIdx) {\n this.$store.dispatch(\"setting/subtractTabMenuItemAhead\", { path, itemIdx });\n\n this.handleTabOperationEffect(\"ahead\", itemIdx);\n },\n handleTabCloseBehind(path, itemIdx) {\n this.$store.dispatch(\"setting/subtractTabMenuItemBehind\", { path, itemIdx });\n\n this.handleTabOperationEffect(\"behind\", itemIdx);\n },\n handleTabCloseOther(path, itemIdx) {\n if (this.tabMenuList.length > 2) {\n this.$store.dispatch(\"setting/subtractTabMenuItemOther\", { path, itemIdx });\n\n this.handleTabOperationEffect(\"other\", itemIdx);\n }\n },\n handleTabOperationEffect(type, itemIdx) {\n const currentPath = this.$route.fullPath;\n const { tabMenuList } = this.$store.state.setting;\n\n const currentIdx = tabMenuList.findIndex((item) => item.path === currentPath);\n\n const needRefreshRouter =\n (type === \"other\" && currentIdx !== itemIdx) ||\n (type === \"ahead\" && currentIdx < itemIdx) ||\n (type === \"behind\" && currentIdx === -1);\n\n if (needRefreshRouter) {\n const nextItemIdx = type === \"behind\" ? tabMenuList.length - 1 : 1;\n const nextItem = tabMenuList[nextItemIdx];\n\n this.$router.push({\n path: nextItem.path,\n query: nextItem.query,\n });\n }\n\n this.activeItemPath = null;\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-header :class=\"`${PREFIX}-header`\">\n <t-head-menu :theme=\"displayMode\">\n <template #logo>\n <div class=\"header-logo-container\">\n <div class=\"header-logo\"></div>\n </div>\n <div class=\"header-operate-left\">\n <t-button theme=\"default\" shape=\"square\" variant=\"text\" @click=\"toggleSideMenuCollapsed\">\n <t-icon class=\"collapsed-icon\" name=\"view-list\"></t-icon>\n </t-button>\n </div>\n </template>\n <!-- Tab菜单栏 -->\n <GLayoutHeaderTab />\n <template #operations>\n <div class=\"operation-container\">\n <t-dropdown trigger=\"click\">\n <t-button class=\"header-user-btn\" theme=\"default\" variant=\"text\">\n <t-icon class=\"header-user-avatar\" name=\"user-circle\" />\n <span v-if=\"userRealName\">{{ userRealName }}</span>\n <t-icon name=\"chevron-down\"></t-icon>\n </t-button>\n <template #dropdown>\n <t-dropdown-menu>\n <t-dropdown-item class=\"operations-dropdown-container-item\" @click=\"handleLogout\">\n <t-icon name=\"poweroff\" /> 退出登录\n </t-dropdown-item>\n </t-dropdown-menu>\n </template>\n </t-dropdown>\n\n <t-tooltip placement=\"bottom\" content=\"系统设置\">\n <t-button theme=\"default\" shape=\"square\" variant=\"text\" @click=\"toggleSettingPanel\"\n ><t-icon name=\"setting\" /></t-button\n ></t-tooltip>\n </div>\n </template>\n </t-head-menu>\n </t-header>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\nimport GLayoutHeaderTab from \"./GLayoutHeaderTab.vue\";\n\nexport default {\n components: {\n GLayoutHeaderTab,\n },\n data() {\n return {\n PREFIX,\n };\n },\n computed: {\n userRealName() {\n return this.$store.getters[\"setting/userRealName\"];\n },\n displayMode() {\n return this.$store.getters[\"setting/displayMode\"];\n },\n },\n methods: {\n toggleSideMenuCollapsed() {\n this.$store.commit(\"setting/toggleSideBarCollapse\");\n },\n toggleSettingPanel() {\n this.$store.commit(\"setting/toggleSettingPanel\");\n },\n handleLogout() {\n this.$store.dispatch(\"setting/userLogout\");\n this.$router.push({ path: \"/login\" });\n },\n },\n};\n</script>\n\n<style lang=\"scss\"></style>\n","<template>\n <t-layout :class=\"`${PREFIX}-layout`\">\n <t-content :class=\"`${PREFIX}-content-layout`\">\n <slot />\n </t-content>\n </t-layout>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\n\nexport default {\n data() {\n return {\n PREFIX,\n };\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <div :style=\"style\" class=\"color-container\" />\n</template>\n\n<script>\nimport { getBrandColor } from \"../../../utils\";\nimport { COLOR_TOKEN as colorList } from \"../../../config\";\n\nexport default {\n name: \"ColorContainer\",\n props: {\n value: {\n type: String,\n default: \"default\",\n },\n },\n computed: {\n style() {\n return {\n background: getBrandColor(this.value, colorList)[\"--td-brand-color\"],\n };\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.color-container {\n width: 48px;\n height: 48px;\n border-radius: 3px;\n display: inline-block;\n}\n</style>\n","var isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","module.exports = {\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar anInstance = require('../internals/an-instance');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar DOMExceptionConstants = require('../internals/dom-exception-constants');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n var that = new NativeDOMException(message, name);\n var error = Error(message);\n error.name = DOM_EXCEPTION;\n defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n inheritIfRequired(that, this, $DOMException);\n return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(global, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n if (!IS_PURE) {\n defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n }\n\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n }\n }\n}\n","<template>\n <t-drawer :class=\"`${PREFIX}-setting`\" :visible.sync=\"isSettingPanelShow\" :footer=\"false\">\n <template #header><t-icon name=\"setting\" />系统设置</template>\n <div class=\"setting-container\">\n <div class=\"setting-group-title\">主题色</div>\n <t-radio-group v-model=\"themeData.brandTheme\">\n <div v-for=\"(item, index) in COLOR_OPTIONS.slice(0, COLOR_OPTIONS.length - 1)\" :key=\"index\">\n <t-radio-button :key=\"index\" :value=\"item\" class=\"setting-layout-color-group\">\n <ColorContainer :value=\"item\" />\n </t-radio-button>\n </div>\n </t-radio-group>\n\n <div class=\"setting-group-title\">主题模式</div>\n <t-radio-group v-model=\"themeData.displayMode\" variant=\"default-filled\">\n <div v-for=\"(item, index) in MODE_OPTIONS\" :key=\"index\">\n <t-radio-button :key=\"index\" :value=\"item.type\">{{ item.text }}</t-radio-button>\n </div>\n </t-radio-group>\n\n <div class=\"setting-group-title\">其他设置</div>\n </div>\n </t-drawer>\n</template>\n\n<script>\nimport ColorContainer from \"../../common/color/index.vue\";\nimport { PREFIX, THEME_CONFIG } from \"../../../config\";\n\nconst COLOR_OPTIONS = [\"default\", \"cyan\", \"green\", \"yellow\", \"orange\", \"red\", \"pink\", \"purple\", \"dynamic\"];\nconst MODE_OPTIONS = [\n { type: \"light\", text: \"明亮\" },\n { type: \"dark\", text: \"暗黑\" },\n { type: \"auto\", text: \"跟随系统\" },\n];\n\nexport default {\n components: {\n ColorContainer,\n },\n data() {\n return {\n PREFIX,\n MODE_OPTIONS,\n COLOR_OPTIONS,\n };\n },\n computed: {\n themeData() {\n return this.$store.state.setting.themeConfig;\n },\n isSettingPanelShow: {\n get() {\n return this.$store.state.setting.isSettingPanelShow;\n },\n set() {\n this.$store.commit(\"setting/toggleSettingPanel\");\n },\n },\n },\n watch: {\n themeData: {\n handler(value) {\n this.$store.dispatch(\"setting/changeTheme\", value);\n },\n deep: true,\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-layout>\n <t-layout>\n <GLayoutHeader />\n <t-content>\n <GLayoutContent>\n <t-card :class=\"`${PREFIX}-card`\" :bordered=\"false\" :title=\"title\">\n <slot />\n </t-card>\n </GLayoutContent>\n </t-content>\n </t-layout>\n <GLayoutSideMenu />\n <GLayoutSetting />\n </t-layout>\n</template>\n\n<script>\nimport GLayoutHeader from \"./components/GLayoutHeader.vue\";\nimport GLayoutContent from \"./components/GLayoutContent.vue\";\nimport GLayoutSetting from \"./components/GLayoutSetting.vue\";\nimport GLayoutSideMenu from \"./components/GLayoutSideMenu.vue\";\nimport { PREFIX } from \"../../config\";\n\nexport default {\n name: \"GLayout\",\n components: {\n GLayoutHeader,\n GLayoutContent,\n GLayoutSetting,\n GLayoutSideMenu,\n },\n props: {\n title: String,\n config: Object,\n },\n data() {\n return {\n PREFIX,\n };\n },\n computed: {\n isUserLogin() {\n return this.$store.state.setting.isUserLogin;\n },\n homeUrl() {\n return this.$store.getters[\"setting/homeUrl\"];\n },\n },\n mounted() {\n // 初始化主题配置\n this.$store.dispatch(\"setting/loadLocalTheme\");\n\n if ((this.config ?? \"\") != \"\" && !this.isUserLogin) {\n this.$store.dispatch(\"setting/userLoadInit\", this.config);\n this.$router.push(this.homeUrl);\n }\n\n // 初始化WebSocket连接\n this.$store.dispatch(\"socket/initSocket\");\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <!-- 侧边抽屉菜单 -->\n <t-drawer\n :class=\"`${PREFIX}-drawer`\"\n size=\"232px\"\n placement=\"left\"\n :visible.sync=\"menuCollapsed\"\n :showOverlay=\"true\"\n :header=\"false\"\n :footer=\"false\"\n :showInAttachedElement=\"true\"\n >\n <t-menu width=\"210px\" :theme=\"displayMode\" :value=\"menuActivePath\" :default-expanded=\"menuDefaultExpanded\">\n <GLayoutSideMenuContent :nav-data=\"menu\" />\n\n <template #operations>\n <t-button\n variant=\"text\"\n theme=\"primary\"\n size=\"large\"\n block\n @click=\"toMenuManage\"\n style=\"justify-content: flex-start; padding: 0 0 0 10px\"\n >\n <template #icon><t-icon name=\"view-list\"></t-icon></template>菜单管理\n </t-button>\n </template>\n </t-menu>\n </t-drawer>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\nimport GLayoutSideMenuContent from \"./GLayoutSideMenuContent.vue\";\n\nexport default {\n components: {\n GLayoutSideMenuContent,\n },\n data() {\n return {\n PREFIX,\n };\n },\n computed: {\n menu() {\n return this.$store.getters[\"setting/userMenu\"];\n },\n displayMode() {\n return this.$store.getters[\"setting/displayMode\"];\n },\n // 侧边菜单折叠状态\n menuCollapsed: {\n get() {\n return this.$store.state.setting.isSideBarCollapse;\n },\n set() {\n this.$store.commit(\"setting/toggleSideBarCollapse\");\n },\n },\n // 当前菜单激活项\n menuActivePath() {\n const length = this.$route.fullPath.split(\"/\").length;\n return this.$route.fullPath.split(\"/\")[length - 1];\n },\n // 当前菜单默认折叠项\n menuDefaultExpanded() {\n let currentParent;\n this.menu.forEach((parentMenu) => {\n parentMenu.children.forEach((childrenMenu) => {\n if (childrenMenu.path == this.menuActivePath) {\n currentParent = parentMenu.name;\n }\n });\n });\n\n return [currentParent];\n },\n },\n methods: {\n toMenuManage() {\n this.$router.push({ name: \"menu\" });\n this.$store.commit(\"setting/toggleSideBarCollapse\");\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <div>\n <template v-for=\"item in menuList\">\n <template v-if=\"!item.children || !item.children.length\">\n <t-menu-item\n :class=\"`level${item.level}-margin`\"\n :name=\"item.path\"\n :value=\"item.path\"\n :to=\"item.path\"\n @click=\"handleMenuItemClick\"\n >\n <template #icon>\n <template v-if=\"item.level == 1\">\n <t-icon v-if=\"item.icon\" :name=\"item.icon\" size=\"large\" />\n <t-icon v-else name=\"app\" size=\"large\" />\n </template>\n </template>\n {{ item.title }}\n </t-menu-item>\n </template>\n <t-submenu\n :class=\"`level${item.level}-margin`\"\n v-else\n :name=\"item.name\"\n :value=\"item.name\"\n :title=\"item.title\"\n >\n <template #icon>\n <template v-if=\"item.level == 1\">\n <t-icon v-if=\"item.icon\" :name=\"item.icon\" size=\"large\" />\n <t-icon v-else name=\"app\" size=\"large\" />\n </template>\n </template>\n <GLayoutSideMenuContent v-if=\"item.children\" :nav-data=\"item.children\" />\n </t-submenu>\n </template>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"GLayoutSideMenuContent\",\n props: {\n navData: Array,\n },\n data() {\n return {};\n },\n computed: {\n // 菜单列表\n menuList() {\n return this.getMenuList(this.navData);\n },\n },\n methods: {\n getMenuList(list) {\n if (!list) return [];\n return list;\n },\n handleMenuItemClick() {\n this.$store.commit(\"setting/toggleSideBarCollapse\");\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.level2-margin {\n margin-left: 10px !important;\n}\n\n.level3-margin {\n margin-left: 15px !important;\n}\n</style>\n","<template>\n <div :class=\"`${PREFIX}-common-header`\">\n <t-row justify=\"space-between\">\n <div class=\"left-operations\">\n <t-row>\n <slot name=\"left-operations\"></slot>\n </t-row>\n </div>\n <div class=\"right-operations\">\n <slot name=\"right-operations\"></slot>\n </div>\n </t-row>\n </div>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\n\nexport default {\n name: \"GCommonHeader\",\n props: {},\n data() {\n return {\n PREFIX,\n };\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <t-input\n v-model=\"value\"\n :type=\"type\"\n :placeholder=\"placeholder\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n :disabled=\"disabled\"\n clearable\n ></t-input>\n</template>\n\n<script>\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n placeholder: String,\n disabled: Boolean,\n inputType: String,\n },\n watch: {\n modelValue() {\n this.value = this.modelValue;\n },\n },\n data() {\n return {\n type: \"text\",\n value: this.modelValue,\n };\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n },\n handleBlur(value) {\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n },\n mounted() {\n if (this.inputType == \"re_password\") this.type = \"password\";\n else this.type = this.inputType;\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import axios, { AxiosInstance, AxiosRequestConfig, AxiosError, AxiosResponse } from \"axios\";\nimport { DEFAULT_CONFIG } from \"./config\";\nimport { ResultData } from \"./interface\";\n\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { LOCAL_CONFIG, LOCAL_SESSION_ID, NProgress } from \"../config\";\nimport { nanoid } from \"../utils\";\nimport VueRouter from \"vue-router\";\n\nfunction loadNanoId() {\n const localSessionId = sessionStorage.getItem(LOCAL_SESSION_ID);\n if ((localSessionId ?? \"\") != \"\") {\n return localSessionId;\n } else {\n const newSessionId = nanoid(32);\n sessionStorage.setItem(LOCAL_SESSION_ID, newSessionId);\n return newSessionId;\n }\n}\n\nclass RequestHttp {\n sessionId: () => string | null;\n service: AxiosInstance;\n router: VueRouter | null;\n\n public constructor(config: AxiosRequestConfig) {\n // 生成 sessionId\n this.sessionId = loadNanoId;\n\n // 实例化axios\n this.service = axios.create(config);\n\n // 初始化 router\n this.router = null;\n\n /**\n * @description 请求拦截器\n * 客户端发送请求 -> [请求拦截器] -> 服务器\n * token校验(JWT) : 接受服务器返回的token,存储到vuex/pinia/本地储存当中\n */\n this.service.interceptors.request.use(\n (config: AxiosRequestConfig) => {\n const userToken = JSON.parse(localStorage.getItem(LOCAL_CONFIG) as string)?.userToken || {\n token: \"\",\n tokenExpiredTime: \"\",\n };\n const lang = JSON.parse(localStorage.getItem(LOCAL_CONFIG) as string)?.userInfo?.language || \"zh-CN\";\n\n if (userToken) {\n const { token, tokenExpiredTime } = userToken;\n\n config.headers = {\n ...config.headers,\n token,\n lang,\n };\n }\n\n NProgress.start();\n\n return {\n ...config,\n };\n },\n (error: AxiosError) => {\n return Promise.reject(error);\n },\n );\n\n /**\n * @description 响应拦截器\n * 服务器换返回信息 -> [拦截统一处理] -> 客户端JS获取到信息\n */\n this.service.interceptors.response.use(\n (response: AxiosResponse) => {\n const { data } = response;\n const { state } = data;\n\n if (state == \"-409\") {\n NProgress.done();\n\n // 跳转到授权页面\n const { device, uuid } = data.data;\n if ((this.router ?? \"\") != \"\") {\n this.router?.push({\n name: \"license\",\n query: {\n device,\n uuid,\n },\n });\n }\n\n return data;\n } else {\n NProgress.done();\n return data;\n }\n },\n async (error: AxiosError) => {\n MessagePlugin.error(error.message);\n return Promise.reject(error);\n },\n );\n }\n\n // * 常用请求方法封装\n get<T>(url: string, params?: object, _object = {}): Promise<ResultData<T>> {\n return this.service.get(`${url}?sessionId=${this.sessionId()}`, { params, ..._object });\n }\n post<T>(url: string, params?: object, _object = {}): Promise<ResultData<T>> {\n return this.service.post(`${url}?sessionId=${this.sessionId()}`, params, _object);\n }\n put<T>(url: string, params?: object, _object = {}): Promise<ResultData<T>> {\n return this.service.put(`${url}?sessionId=${this.sessionId()}`, params, _object);\n }\n delete<T>(url: string, params?: any, _object = {}): Promise<ResultData<T>> {\n return this.service.delete(`${url}?sessionId=${this.sessionId()}`, { params, ..._object });\n }\n\n // 载入用户 router\n initRouter(router: VueRouter) {\n this.router = router;\n }\n}\n\nexport default new RequestHttp(DEFAULT_CONFIG);\n","export const DEFAULT_CONFIG = {\n // 默认地址请求地址,可在 .env 开头文件中修改\n // baseURL: import.meta.env.VITE_API_URL as string,\n // 设置超时时间(10s)\n timeout: 10000,\n // 跨域时候允许携带凭证\n withCredentials: true,\n};\n","import http from \"../\";\nimport { View } from \"../../types\";\n\nconst viewApiUrl = {\n // 视图 - 获取所有视图 GET\n getAllView: \"/restapi/s09/gview/boards/all\",\n // 视图 - 获取一个视图 GET\n getOneView: \"/restapi/s09/gview/views\",\n // 数据 - 获取数据 POST\n getViewData: \"/restapi/s09/gview/data\",\n // 触发 - 上传文件 POST\n uploadFile: \"/restapi/s09/gview/active/upload_file\",\n // 触发 - 触发文件上传事件 POST\n activeFile: \"/restapi/s09/gview/active/file\",\n // 触发 - 触发confirm事件 POST\n confirm: \"/restapi/s09/gview/active/confirm\",\n // 触发 - 触发批量操作事件 POST\n batch: \"/restapi/s09/gview/active/batch\",\n};\n\n// 视图 - 获取所有视图 GET\nexport const getAllView = (params) => http.get<View.viewInfo[]>(viewApiUrl.getAllView, params);\n// 视图 - 获取一个视图 GET\nexport const getOneView = (params) => http.get<View.viewInfo>(viewApiUrl.getOneView, params);\n// 数据 - 获取数据 POST\nexport const getViewData = (params: View.ReqViewDataParam) => http.post<View.viewData>(viewApiUrl.getViewData, params);\n// 触发 - 触发confirm事件 POST\nexport const confirm = (params: View.ReqConfirmParam) => http.post(viewApiUrl.confirm, params);\n// 触发 - 触发批量操作事件 POST\nexport const batchAction = (params) => http.post(viewApiUrl.batch, params);\n// 触发 - 上传文件 POST\nexport const activeFile = (params) => http.post(viewApiUrl.activeFile, params);\n","<template>\n <t-select\n v-model=\"value\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n :placeholder=\"target.name\"\n :size=\"size\"\n :options=\"options\"\n :multiple=\"multiple\"\n :min-collapsed-num=\"2\"\n :disabled=\"disabled\"\n clearable\n />\n</template>\n\n<script>\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { getViewData } from \"../../../api/modules/view\";\n\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n target: Object,\n targetViewName: String,\n size: {\n type: String,\n default: \"medium\",\n },\n multiple: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n value: this.modelValue,\n options: [],\n\n // 路径查询参数\n queryProps: {},\n };\n },\n watch: {\n modelValue: {\n handler(value) {\n this.value = value;\n },\n deep: true,\n },\n\n \"this.$route.query\": {\n handler() {\n const { query } = this.$route;\n\n if (query) {\n const { viewName, ...rest } = query;\n this.queryProps = rest;\n }\n },\n deep: true,\n immediate: true,\n },\n },\n computed: {\n listData() {\n return this.target.listData;\n },\n dataId() {\n return this.listData.dataId;\n },\n propsModel() {\n let tempModel = {};\n\n // 地址查询参数\n Object.assign(tempModel, this.queryProps);\n return tempModel;\n },\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n },\n handleBlur(value) {\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n async getSelectData() {\n const res = await getViewData({\n viewName: this.targetViewName,\n dataId: this.dataId,\n props: this.propsModel,\n });\n\n if (res.state === 200) {\n let list = res.data;\n if (list != null && list.length != 0) {\n let arr = [];\n list.forEach((item) => {\n if (item != null) {\n arr.push({\n key: item[this.listData.keyName],\n label: item[this.listData.titleName],\n value: item[this.listData.valueName],\n });\n }\n });\n this.options = arr;\n }\n } else {\n MessagePlugin.error(`获取数据失败:${res.message}`);\n }\n },\n },\n mounted() {\n this.getSelectData();\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <div>\n <t-date-picker\n v-if=\"target.itemType === 'date_selector' || target.itemType === 'date_time_selector'\"\n :enable-time-picker=\"target.itemType === 'date_time_selector'\"\n :placeholder=\"target.placeholder\"\n v-model=\"dateTimeValue\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n :format=\"target.format || 'YYYY-MM-DD HH:mm:ss'\"\n valueType=\"time-stamp\"\n :disabled=\"disabled\"\n clearable\n />\n <t-time-picker\n v-if=\"target.itemType === 'time_selector'\"\n :placeholder=\"target.placeholder\"\n v-model=\"dateTimeValue\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n :format=\"target.format || 'HH:mm:ss'\"\n clearable\n />\n </div>\n</template>\n\n<script>\nimport dayjs from \"dayjs\";\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n target: Object,\n },\n data() {\n return {\n value: \"\",\n };\n },\n computed: {\n dateTimeValue: {\n get() {\n if (this.modelValue == 0) {\n return \"\";\n } else {\n if (this.target.itemType == \"time_selector\") {\n return dayjs(this.modelValue).format(\"HH:mm:ss\");\n } else {\n return this.modelValue;\n }\n }\n },\n set(value) {\n this.value = value;\n if (this.target.itemType == \"time_selector\") {\n this.value = dayjs(value, \"HH:mm:ss\").valueOf();\n }\n },\n },\n },\n methods: {\n handleChange() {\n this.$emit(\"update:modelValue\", this.value);\n },\n handleBlur(value) {\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <GCommonHeader>\n <template #left-operations>\n <!-- 上传按钮 -->\n <template v-if=\"headerUploadBtns\">\n <GHeaderUpload\n v-for=\"btn in headerUploadBtns\"\n :key=\"btn.buttonId\"\n :target=\"btn\"\n :targetViewName=\"viewName\"\n />\n </template>\n <t-button\n v-for=\"btn in headerCommonBtns\"\n :key=\"btn.buttonId\"\n theme=\"primary\"\n @click=\"handleHeaderButtonClick(btn)\"\n >\n <!-- <template #icon>\n\t\t\t\t\t\t<t-icon :name=\"btn.icon\"></t-icon>\n\t\t\t\t\t</template> -->\n {{ btn.name }}\n </t-button>\n </template>\n\n <template #right-operations>\n <div v-for=\"(item, index) in headerFilters\" :key=\"index\">\n <div v-if=\"item.itemType === 'text_input'\">\n <GFormInput :modelValue.sync=\"filterForm[item.keyName]\" :placeholder=\"item.placeholder\" />\n </div>\n <div v-if=\"item.itemType === 'selector'\">\n <GFormSelect\n :modelValue.sync=\"filterForm[item.keyName]\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n ></GFormSelect>\n </div>\n <div\n v-if=\"\n item.itemType === 'date_selector' ||\n item.itemType === 'time_selector' ||\n item.itemType === 'date_time_selector'\n \"\n >\n <GFormSelectDateTime\n :modelValue.sync=\"filterForm[item.keyName]\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n />\n </div>\n </div>\n </template>\n </GCommonHeader>\n</template>\n\n<script>\nimport { PREFIX } from \"../../config\";\nimport GCommonHeader from \"../common/GCommonHeader/index.vue\";\nimport GFormInput from \"../GForm/components/GFormInput.vue\";\nimport GFormSelect from \"../GForm/components/GFormSelect.vue\";\nimport GFormSelectDateTime from \"../GForm/components/GFormSelectDateTime.vue\";\nimport GHeaderUpload from \"./components/GHeaderUpload.vue\";\n\nexport default {\n name: \"Gheader\",\n components: {\n GCommonHeader,\n GFormInput,\n GFormSelect,\n GFormSelectDateTime,\n GHeaderUpload,\n },\n props: {\n viewName: String,\n headerInfo: Object,\n },\n data() {\n return {\n PREFIX,\n timer: null,\n filterForm: {},\n };\n },\n computed: {\n // 头部操作按钮\n headerCommonBtns() {\n return this.headerInfo?.buttons.filter((button) => button.action != \"UPLOAD_FILE\");\n },\n // 头部上传按钮\n headerUploadBtns() {\n return this.headerInfo?.buttons.filter((button) => button.action == \"UPLOAD_FILE\");\n },\n headerSearchBar() {\n return this.headerInfo?.searchBar ?? {};\n },\n headerFilters() {\n return this.headerInfo?.searchBar?.filters ?? [];\n },\n },\n watch: {\n filterForm: {\n handler() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n this.handleFilterChange();\n }, 500);\n },\n deep: true,\n },\n },\n methods: {\n handleFilterChange() {\n for (const key in this.filterForm) {\n if ((this.filterForm[key] ?? \"\") === \"\") {\n delete this.filterForm[key];\n }\n }\n this.$emit(\"header-filter-change\", this.filterForm);\n },\n handleHeaderButtonClick(button) {\n this.$emit(\"header-button-action\", button);\n },\n },\n};\n</script>\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <t-upload\n :action=\"uploadApi\"\n @success=\"handleUploadSuccess\"\n @fail=\"handleUploadError\"\n :showUploadProgress=\"false\"\n style=\"padding: 0 8px 0 0\"\n >\n <t-button>\n <template>\n <t-icon name=\"upload\"></t-icon>\n </template>\n {{ target.name }}\n </t-button>\n </t-upload>\n</template>\n\n<script>\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { activeFile } from \"../../../api/modules/view\";\n\nexport default {\n props: {\n target: Object,\n targetViewName: String,\n },\n data() {\n return {\n uploadData: {},\n };\n },\n computed: {\n // 上传API从用户传入的config中获取\n uploadApi() {\n return this.$store.getters[\"setting/uploadApi\"];\n },\n },\n methods: {\n handleUploadSuccess(event) {\n const { response } = event;\n\n if (response.data?.length) {\n MessagePlugin.success(`上传成功`);\n this.handleActiveFile(response.data[0]);\n } else {\n console.log(response);\n MessagePlugin.error(`上传失败:${response.message}`);\n }\n },\n handleActiveFile(fileUrl) {\n let arr = [];\n arr.push(fileUrl);\n activeFile({\n boardName: this.targetViewName,\n buttonId: this.target.buttonId,\n props: {},\n fileUrls: arr,\n }).then((res) => {\n if (res.state == 200) {\n MessagePlugin.success(\"导入成功\");\n } else {\n MessagePlugin.error(\"导入失败\");\n }\n });\n },\n handleUploadError(error) {\n MessagePlugin.error(`上传失败:${error}`);\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <div :class=\"`${PREFIX}-common-table`\">\n <t-enhanced-table\n v-bind=\"commonTableProps\"\n :hover=\"true\"\n :bordered=\"true\"\n table-layout=\"auto\"\n maxHeight=\"calc(100vh - 281px)\"\n >\n <template v-for=\"(index, name) in $scopedSlots\" #[name]=\"data\">\n <slot :name=\"name\" v-bind=\"{ ...data }\"></slot>\n </template>\n </t-enhanced-table>\n </div>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\n\nexport default {\n name: \"GCommonTable\",\n props: {\n commonTableProps: {\n required: true,\n },\n },\n data() {\n return {\n PREFIX,\n };\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <t-tag>{{ modelValue }}</t-tag>\n</template>\n\n<script>\nexport default {\n props: {\n modelValue: { required: true },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-checkbox v-model=\"value\" @change=\"handleChange\" :disabled=\"disabled\" />\n</template>\n\n<script>\nimport { isVoid } from \"../../../utils\";\n\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n },\n data() {\n return {\n value: false,\n };\n },\n watch: {\n modelValue: {\n handler() {\n this.value = this.modelValue;\n\n if (!isVoid(this.modelValue)) {\n this.value = false;\n }\n },\n immediate: true,\n },\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-switch v-model=\"value\" @change=\"handleChange\" :disabled=\"disabled\" />\n</template>\n\n<script>\nimport { isVoid } from \"../../../utils\";\n\nexport default {\n props: {\n target: Object,\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n },\n data() {\n return {\n value: this.modelValue,\n };\n },\n watch: {\n modelValue() {\n this.value = this.modelValue;\n\n if (!isVoid(this.modelValue)) {\n this.value = false;\n }\n },\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-radio-group v-model=\"value\" @change=\"handleChange\" :disabled=\"disabled\">\n <t-radio v-for=\"item in selectList\" :key=\"item.key\" :value=\"item.value\">{{ item.label }}</t-radio>\n </t-radio-group>\n</template>\n\n<script>\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { getViewData } from \"../../../api/modules/view\";\n\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n target: Object,\n targetViewName: String,\n },\n data() {\n return {\n value: this.modelValue,\n selectList: [],\n\n // 路径查询参数\n queryProps: {},\n };\n },\n watch: {\n modelValue() {\n this.value = this.modelValue;\n },\n\n \"this.$route.query\": {\n handler() {\n const { query } = this.$route;\n\n if (query) {\n const { viewName, ...rest } = query;\n this.queryProps = rest;\n }\n },\n deep: true,\n immediate: true,\n },\n },\n computed: {\n listData() {\n return this.target.listData;\n },\n dataId() {\n return this.listData.dataId;\n },\n propsModel() {\n let tempModel = {};\n\n // 地址查询参数\n Object.assign(tempModel, this.queryProps);\n return tempModel;\n },\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n async getSelectData() {\n const res = await getViewData({\n viewName: this.targetViewName,\n dataId: this.dataId,\n props: this.propsModel,\n });\n\n if (res.state === 200) {\n let list = res.data;\n if (list != null && list.length != 0) {\n let arr = [];\n list.forEach((item) => {\n if (item != null) {\n arr.push({\n key: item[this.listData.keyName],\n label: item[this.listData.titleName],\n value: item[this.listData.valueName],\n });\n }\n });\n\n this.selectList = arr;\n }\n } else {\n MessagePlugin.error(`获取数据失败:${res.message}`);\n }\n },\n },\n mounted() {\n this.getSelectData();\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-tree-select\n v-model=\"value\"\n :data=\"treeOptions\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n :placeholder=\"target.placeholder\"\n :multiple=\"multiple\"\n :min-collapsed-num=\"3\"\n :treeProps=\"{ valueMode: 'all' }\"\n :disabled=\"disabled\"\n clearable\n ></t-tree-select>\n</template>\n\n<script>\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { getViewData } from \"../../../api/modules/view\";\nimport { initTreeSelectorData } from \"../../../utils\";\n\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n target: Object,\n targetViewName: String,\n multiple: {\n type: Boolean,\n default: true,\n },\n },\n data() {\n return {\n value: this.modelValue,\n treeOptions: [],\n\n // 路径查询参数\n queryProps: {},\n };\n },\n watch: {\n modelValue() {\n this.value = this.modelValue;\n },\n\n \"this.$route.query\": {\n handler() {\n const { query } = this.$route;\n\n if (query) {\n const { viewName, ...rest } = query;\n this.queryProps = rest;\n }\n },\n deep: true,\n immediate: true,\n },\n },\n computed: {\n treeData() {\n return this.target.treeData;\n },\n dataId() {\n return this.treeData.dataId;\n },\n\n propsModel() {\n let tempModel = {};\n\n // 地址查询参数\n Object.assign(tempModel, this.queryProps);\n return tempModel;\n },\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n },\n handleBlur(value) {\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n async getSelectData() {\n const res = await getViewData({\n viewName: this.targetViewName,\n dataId: this.dataId,\n props: this.propsModel,\n });\n\n if (res.state === 200) {\n let list = res.data;\n if (list != null && list.length != 0) {\n let arr = initTreeSelectorData({\n list,\n keyName: this.treeData.valueName,\n valueName: this.treeData.valueName,\n titleName: this.treeData.titleName,\n parentKey: null,\n parentKeyName: this.treeData.parentKeyName,\n });\n\n this.treeOptions = arr;\n }\n } else {\n MessagePlugin.error(`获取数据失败:${res.message}`);\n }\n },\n },\n mounted() {\n this.getSelectData();\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <t-cascader\n v-model=\"value\"\n :options=\"cascaderOptions\"\n @change=\"handleChange\"\n @blur=\"handleBlur\"\n :multiple=\"multiple\"\n :min-collapsed-num=\"2\"\n :disabled=\"disabled\"\n clearable\n />\n</template>\n\n<script>\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { getViewData } from \"../../../api/modules/view\";\nimport { initTreeSelectorData } from \"../../../utils\";\n\nexport default {\n props: {\n modelValue: { required: true },\n originValue: [String, Number, Boolean, Array, Object],\n disabled: Boolean,\n target: Object,\n targetViewName: String,\n multiple: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n value: this.modelValue,\n cascaderOptions: [],\n\n // 路径查询参数\n queryProps: {},\n };\n },\n watch: {\n modelValue() {\n this.value = this.modelValue;\n },\n\n \"this.$route.query\": {\n handler() {\n const { query } = this.$route;\n\n if (query) {\n const { viewName, ...rest } = query;\n this.queryProps = rest;\n }\n },\n deep: true,\n immediate: true,\n },\n },\n computed: {\n treeData() {\n return this.target.treeData;\n },\n dataId() {\n return this.treeData.dataId;\n },\n\n propsModel() {\n let tempModel = {};\n\n // 地址查询参数\n Object.assign(tempModel, this.queryProps);\n return tempModel;\n },\n },\n methods: {\n handleChange(value) {\n this.$emit(\"update:modelValue\", value);\n },\n handleBlur(value) {\n if (this.originValue != value) {\n this.$emit(\"blur:modelValue\", value);\n }\n },\n async getSelectData() {\n const res = await getViewData({\n viewName: this.targetViewName,\n dataId: this.dataId,\n props: this.propsModel,\n });\n\n if (res.state === 200) {\n let list = res.data;\n if (list != null && list.length != 0) {\n let arr = initTreeSelectorData({\n list,\n parentKey: null,\n keyName: this.treeData.keyName,\n valueName: this.treeData.valueName,\n titleName: this.treeData.titleName,\n parentKeyName: this.treeData.parentKeyName,\n });\n\n this.cascaderOptions = arr;\n }\n } else {\n MessagePlugin.error(`获取数据失败:${res.message}`);\n }\n },\n },\n mounted() {\n this.getSelectData();\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <div>\n <t-upload\n ref=\"uploadRef\"\n theme=\"file\"\n v-model=\"value\"\n :action=\"uploadApi\"\n :accept=\"target.accept\"\n :max=\"target.limit\"\n :size=\"target.maxSize\"\n :disabled=\"disabled\"\n :is-batch-upload=\"true\"\n @change=\"handleChange\"\n @fail=\"handleUploadError\"\n >\n </t-upload>\n </div>\n</template>\n\n<script>\nimport { MessagePlugin } from \"tdesign-vue\";\nexport default {\n props: {\n modelValue: { required: true },\n fileName: String,\n tips: String,\n target: Object,\n targetViewName: String,\n disabled: Boolean,\n },\n data() {\n return {\n value: [],\n };\n },\n watch: {\n modelValue(value) {\n if ((value ?? \"\") != \"\") {\n this.value = [{ name: this.fileName, url: value }];\n } else {\n this.value = [];\n }\n },\n },\n computed: {\n // 上传API从用户传入的config中获取\n uploadApi() {\n return this.$store.getters[\"setting/uploadApi\"];\n },\n },\n\n methods: {\n handleChange() {\n // this.$emit(\"update:modelValue\", this.value);\n if (this.value.length) {\n const { name, response } = this.value[0];\n if (response.data?.length) {\n this.uploadData = response.data;\n\n // this.value = response.data[0];\n this.$emit(\"update:modelValue\", response.data[0]);\n this.$emit(\"blur:modelValue\", response.data[0]);\n this.$emit(\"update:fileName\", name);\n MessagePlugin.success(`上传成功`);\n } else {\n console.log(response);\n MessagePlugin.error(`上传失败:${response.message}`);\n }\n }\n },\n handleUploadError(error) {\n MessagePlugin.error(`上传失败:${error}`);\n },\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\">\n.t-upload__single-input-preview {\n max-width: none;\n}\n</style>\n","<template>\n <GCommonTable\n v-if=\"!isReload\"\n :commonTableProps=\"{\n data: data,\n rowKey: rowKey,\n columns: tableColumns,\n pagination: tablePagination,\n selectedRowKeys: selectedRowKeys,\n onSelectChange: handleSelectChange,\n }\"\n >\n <!-- 纯文本单元格 -->\n <template #TEXT=\"{ col, row }\">{{ returnValue(col, row) }}</template>\n <!-- 枚举文本类型单元格 -->\n <template #ENUMS=\"{ col, row }\"> <span v-html=\"returnEnumsValue(col, row)\"></span></template>\n <!-- 日期格式类型单元格 -->\n <template #DATE=\"{ col, row }\"> {{ returnDateValue(col, row) }} </template>\n <!-- 二维码展示单元格 -->\n <template #QR_CODE=\"{ col, row }\">\n <t-popup>\n <t-button variant=\"text\" theme=\"primary\">预览</t-button>\n <template #content>\n <vue-qr :text=\"returnValue(col, row)\" :size=\"80\" :margin=\"0\" />\n <div style=\"text-align: center\">{{ row[\"code\"] }}</div>\n </template>\n </t-popup>\n </template>\n <!-- 表单项类型单元格 -->\n <template #FORM_ITEM=\"{ col, row }\">\n <GTableForm :viewName=\"viewName\" :col=\"col\" :row=\"row\" @blur=\"handleTableFormChange\" />\n </template>\n <!-- 图片预览单元格 -->\n <template #IMAGE=\"{ col, row }\">\n <t-image :src=\"returnValue(col, row)\" fit=\"cover\" shape=\"round\" :style=\"{ width: '80px', height: '80px' }\">\n <template #error>\n <t-icon v-if=\"col.name == '头像'\" name=\"user\" />\n <t-icon v-else name=\"file-image\" />\n </template>\n <template #loading>\n <t-icon v-if=\"col.name == '头像'\" name=\"user\" />\n <t-icon v-else name=\"file-image\" size=\"large\" />\n </template>\n </t-image>\n </template>\n <!-- 操作栏 -->\n <template #BUTTONS=\"{ col, row }\">\n <!-- <template v-if=\"handleFilterColumnBtns(col.buttons, row).length <= 3\"> -->\n <t-button\n theme=\"primary\"\n variant=\"text\"\n v-for=\"btns in handleFilterColumnBtns(col.buttons, row)\"\n :key=\"btns.buttonId\"\n @click=\"handleTableButtonClick(btns, row)\"\n style=\"width: '88px'\"\n >\n {{ btns.name }}\n </t-button>\n </template>\n </GCommonTable>\n</template>\n\n<script>\nimport { PREFIX } from \"../../config\";\nimport { evalContext, vFun, initTableColumns } from \"../../utils\";\n\nimport VueQr from \"vue-qr\";\nimport dayjs from \"dayjs\";\nimport Mustache from \"mustache\";\nimport GCommonTable from \"../common/GCommonTable/index.vue\";\nimport GTableForm from \"./components/GTableForm.vue\";\n\nexport default {\n name: \"GTable\",\n components: {\n GCommonTable,\n GTableForm,\n VueQr,\n },\n props: {\n viewName: String,\n boardInfo: Object,\n tableData: Array,\n paginationProps: Object,\n },\n data() {\n return {\n PREFIX,\n isReload: false,\n selectedRowKeys: [],\n tablePagination: {\n showJumper: true,\n },\n };\n },\n computed: {\n data() {\n return this.tableData;\n },\n rowKey() {\n return this.boardInfo.tableData.keyName;\n },\n tableColumns() {\n return initTableColumns(this.boardInfo.columns);\n },\n },\n methods: {\n // 处理表格选中数据\n handleSelectChange(value, { selectedRowData }) {\n this.selectedRowKeys = value;\n\n this.$emit(\"return-selected-key\", this.selectedRowKeys);\n },\n // 处理表格普通数据\n returnValue(column, row) {\n if (column.value != \"\") {\n return Mustache.render(column.value, { item: row });\n } else if (column.value == \"\") {\n return row[column.keyName];\n }\n },\n // 处理表格枚举数据类型\n returnEnumsValue(column, row) {\n const enums = column.enums;\n if (enums != null) {\n let targetArr = enums.filter((element) => {\n if (row[column.keyName] == null) {\n row[column.keyName] = \"\";\n }\n\n if (element.value == String(row[column.keyName])) {\n return element.text;\n }\n });\n if (targetArr.length) {\n return targetArr.shift().text;\n } else {\n return row[column.keyName];\n }\n }\n },\n // 处理表格日期数据类型\n returnDateValue(column, row) {\n // return dayjs(target).format(column.format);\n if (column.value != \"\") {\n return Mustache.render(column.value, { item: row });\n } else if (column.value == \"\") {\n return dayjs(row[column.keyName]).format(\"YYYY-MM-DD HH:mm:ss\");\n }\n },\n // 过滤处理表格操作按钮\n handleFilterColumnBtns(columnBtns, row) {\n window.v = vFun;\n\n return columnBtns.filter((element) => {\n if (element.showIf != \"1\") {\n let result, evalResult;\n try {\n result = Mustache.render(element.showIf, { item: row });\n evalResult = evalContext(result, { item: row });\n } catch (e) {\n console.warn(e);\n }\n return evalResult;\n } else {\n return element;\n }\n });\n },\n // 处理表格操作按钮动作\n handleTableButtonClick(button, row) {\n this.$emit(\"table-button-action\", button, row);\n },\n // 处理表格表单提交\n handleTableFormChange(item, model) {\n this.$emit(\"table-form-confirm\", item, model);\n },\n },\n watch: {\n tableData: {\n handler() {\n this.isReload = true;\n\n this.$nextTick(() => {\n this.isReload = false;\n });\n },\n deep: true,\n immediate: true,\n },\n paginationProps: {\n handler(value) {\n let tempPagination = {};\n Object.assign(tempPagination, value);\n\n this.tablePagination.current = tempPagination.page + 1;\n this.tablePagination.pageSize = tempPagination.count;\n this.tablePagination.total = tempPagination.totalCount;\n\n /* eslint-disable */\n let that = this;\n this.tablePagination.onChange = function (pageInfo) {\n that.$emit(\"return-pagination-props\", pageInfo);\n };\n },\n immediate: true,\n deep: true,\n },\n },\n mounted() {\n if (this.headerFilters) {\n this.headerFilters.forEach((filter) => {\n this.filterForm[filter.keyName] = \"\";\n });\n }\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <div class=\"table-form-items\">\n <template v-for=\"item in formItems\">\n <!-- 标签展示 -->\n <GFormLabel v-if=\"item.itemType === 'label'\" :modelValue=\"getProperty(formModel, col.colKey)\" />\n\n <!-- 文字输入 -->\n <GFormInput\n v-if=\"item.itemType == 'text_input'\"\n :inputType=\"item.inputType.toLowerCase()\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 多选框 -->\n <GFormCheckBox\n v-if=\"item.itemType === 'check_box'\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 开关 -->\n <GFormSwitch\n v-if=\"item.itemType === 'switch'\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 单选框 -->\n <GFormRadio\n v-if=\"item.itemType === 'radio'\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 选择器 -->\n <GFormSelect\n v-if=\"item.itemType === 'selector' || item.itemType === 'multi_selector'\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :multiple=\"item.itemType === 'multi_selector'\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 日期时间选择器 -->\n <GFormSelectDateTime\n v-if=\"\n item.itemType === 'date_selector' ||\n item.itemType === 'time_selector' ||\n item.itemType === 'date_time_selector'\n \"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 多级选择框 -->\n <GFormTreeCheckBox\n v-if=\"item.itemType === 'tree_check_box'\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 级联选择器 -->\n <GFormCascader\n v-if=\"item.itemType === 'multi_tree_selector' || item.itemType === 'tree_selector'\"\n :originValue=\"getProperty(row, col.colKey)\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :multiple=\"item.itemType === 'multi_tree_selector'\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n\n <!-- 文件上传 -->\n <GFormUpload\n v-if=\"item.itemType === 'file'\"\n :modelValue=\"getProperty(formModel, col.colKey)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :tips=\"item.placeholder || '请选择上传文件'\"\n @update:modelValue=\"handleAfterUpdateValue(col.colKey, $event)\"\n @blur:modelValue=\"handleAfterValueBlur(item, $event)\"\n />\n </template>\n </div>\n</template>\n\n<script>\nimport GFormLabel from \"../../GForm/components/GFormLabel.vue\";\nimport GFormInput from \"../../GForm/components/GFormInput.vue\";\nimport GFormCheckBox from \"../../GForm/components/GFormCheckBox.vue\";\nimport GFormSwitch from \"../../GForm/components/GFormSwitch.vue\";\nimport GFormRadio from \"../../GForm/components/GFormRadio.vue\";\nimport GFormSelect from \"../../GForm/components/GFormSelect.vue\";\nimport GFormSelectDateTime from \"../../GForm/components/GFormSelectDateTime.vue\";\nimport GFormTreeCheckBox from \"../../GForm/components/GFormTreeCheckBox.vue\";\nimport GFormCascader from \"../../GForm/components/GFormCascader.vue\";\nimport GFormUpload from \"../../GForm/components/GFormUpload.vue\";\n\nimport { getProperty, setProperty } from \"../../../utils\";\n\nexport default {\n components: {\n GFormInput,\n GFormLabel,\n GFormCheckBox,\n GFormSwitch,\n GFormRadio,\n GFormSelect,\n GFormSelectDateTime,\n GFormTreeCheckBox,\n GFormCascader,\n GFormUpload,\n },\n props: {\n col: Object,\n row: Object,\n viewName: String,\n },\n data() {\n return {\n formModel: {\n ...this.row,\n },\n };\n },\n computed: {\n formItems() {\n return this.col?.formItems;\n },\n },\n methods: {\n getProperty,\n handleAfterUpdateValue(keyName, value) {\n setProperty(this.formModel, keyName, value);\n\n this.$forceUpdate();\n },\n handleAfterValueBlur(item, value) {\n this.$emit(\"blur\", item, this.formModel);\n },\n },\n watch: {\n row: {\n handler(newValue) {\n Object.assign(this.formModel, this.row);\n },\n immediate: true,\n deep: true,\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.table-form-items {\n width: 250px;\n}\n</style>\n","<template>\n <div :class=\"`${PREFIX}-common-form`\">\n <t-form :class=\"`${PREFIX}-form`\" v-bind=\"commonFormProps\">\n <div :class=\"`${PREFIX}-form__body`\">\n <slot name=\"body\"> </slot>\n </div>\n </t-form>\n\n <div :class=\"`${PREFIX}-form__footer`\">\n <slot name=\"footer\"> </slot>\n </div>\n </div>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\n\nexport default {\n name: \"GCommonForm\",\n props: {\n commonFormProps: {\n required: true,\n },\n },\n data() {\n return {\n PREFIX,\n };\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <div :id=\"blockId\" :ref=\"name\">\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n name: String,\n blockType: String,\n showIf: {\n required: true,\n },\n },\n data() {\n return {\n blockId: \"\",\n };\n },\n methods: {\n updateId() {\n if (this.blockType == \"block_start\" && !this.showIf) {\n this.blockId = `block_start_${this.name}`;\n } else if (this.blockType == \"block_start\" && this.showIf) {\n this.blockId = `block_${this.name}`;\n } else if (this.blockType == \"block_end\") {\n this.blockId = `block_end_${this.name}`;\n }\n },\n handleBlockShowFlag() {\n if (this.blockType == \"block_start\" && !this.showIf) {\n let start = this.$refs[`${this.name}`];\n\n for (let el = start; el; el = el.nextElementSibling) {\n el.__vue__.blockShowFlag = false;\n\n if (el.matches(`#block_end_${this.name}`)) {\n break;\n }\n }\n } else if (this.blockType == \"block_start\" && this.showIf) {\n let start = this.$refs[`${this.name}`];\n\n for (let el = start; el; el = el.nextElementSibling) {\n el.__vue__.blockShowFlag = true;\n\n if (el.matches(`#block_end_${this.name}`)) {\n break;\n }\n }\n }\n },\n },\n mounted() {\n this.updateId();\n this.handleBlockShowFlag();\n },\n watch: {\n showIf: {\n handler() {\n this.updateId();\n this.handleBlockShowFlag();\n },\n immediate: true,\n deep: true,\n },\n },\n};\n</script>\n","<template>\n <div :class=\"`${PREFIX}-form-item`\" :id=\"item.keyName ? item.keyName : item.name\">\n <t-divider\n v-if=\"item.itemType === 'line' && item.name && handleItemShowIf(item.showIf, item) && blockShowFlag\"\n align=\"left\"\n >\n {{ item.name }}\n </t-divider>\n <t-form-item\n v-else-if=\"handleItemShowIf(item.showIf, item) && blockShowFlag\"\n :requiredMark=\"item.required && !handleItemDisableIf(item.disableIf, item)\"\n :label=\"item.name\"\n :name=\"item.inputType != 'RE_PASSWORD' ? item.keyName : 'rePassword'\"\n >\n <!-- 标签展示 -->\n <GFormLabel v-if=\"item.itemType === 'label'\" :modelValue=\"getProperty(formModel, item.keyName)\" />\n <!-- 文字输入 -->\n <GFormInput\n v-if=\"item.itemType === 'text_input' && item.inputType != 'RE_PASSWORD'\"\n :inputType=\"item.inputType.toLowerCase()\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :placeholder=\"item.placeholder\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 确认密码输入 -->\n <GFormInput\n v-if=\"item.itemType === 'text_input' && item.inputType == 'RE_PASSWORD'\"\n :inputType=\"item.inputType.toLowerCase()\"\n :modelValue=\"getProperty(formModel, 'rePassword')\"\n :placeholder=\"item.placeholder\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue('rePassword', $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 多选框 -->\n <GFormCheckBox\n v-if=\"item.itemType === 'check_box'\"\n :modelValue=\"getProperty(formModel, item.keyName, false)\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n <!-- 开关 -->\n <GFormSwitch\n v-if=\"item.itemType === 'switch'\"\n :target=\"item\"\n :modelValue=\"getProperty(formModel, item.keyName, false)\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n <!-- 单选框 -->\n <GFormRadio\n v-if=\"item.itemType === 'radio'\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 选择器 -->\n <GFormSelect\n v-if=\"item.itemType === 'selector' || item.itemType === 'multi_selector'\"\n :key=\"item.listData.dataId\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :multiple=\"item.itemType === 'multi_selector'\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 日期时间选择器 -->\n <GFormSelectDateTime\n v-if=\"\n item.itemType === 'date_selector' ||\n item.itemType === 'time_selector' ||\n item.itemType === 'date_time_selector'\n \"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 多级选择框 -->\n <GFormTreeCheckBox\n v-if=\"item.itemType === 'tree_check_box'\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 级联选择器 -->\n <GFormCascader\n v-if=\"item.itemType === 'multi_tree_selector' || item.itemType === 'tree_selector'\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :target=\"item\"\n :targetViewName=\"viewName\"\n :multiple=\"item.itemType === 'multi_tree_selector'\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 文件上传 -->\n <GFormUpload\n v-if=\"item.itemType === 'file'\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :target=\"item\"\n :target-view-name=\"viewName\"\n :tips=\"item.placeholder || '请选择上传文件'\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n :fileName=\"\n getProperty(formModel, item.filenameKeyName) ||\n getProperty(formModel, item.keyName).split('/').slice(-1)[0]\n \"\n @update:fileName=\"handleAfterUpload(item.filenameKeyName, $event)\"\n @update:modelValue=\"handleAfterUpdateValue(item.keyName, $event)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n\n <!-- 富文本编辑器 -->\n <GFormEditor\n v-if=\"item.itemType === 'rich_text'\"\n :modelValue=\"getProperty(formModel, item.keyName)\"\n :disabled=\"handleItemDisableIf(item.disableIf)\"\n @before-destroy=\"handleBeforeDestroyFormItem(item)\"\n />\n </t-form-item>\n </div>\n</template>\n\n<script>\nimport GFormLabel from \"./GFormLabel.vue\";\nimport GFormInput from \"./GFormInput.vue\";\nimport GFormCheckBox from \"./GFormCheckBox.vue\";\nimport GFormSwitch from \"./GFormSwitch.vue\";\nimport GFormRadio from \"./GFormRadio.vue\";\nimport GFormSelect from \"./GFormSelect.vue\";\nimport GFormSelectDateTime from \"./GFormSelectDateTime.vue\";\nimport GFormTreeCheckBox from \"./GFormTreeCheckBox.vue\";\nimport GFormCascader from \"./GFormCascader.vue\";\nimport GFormUpload from \"./GFormUpload.vue\";\nimport GFormEditor from \"./GFormEditor.vue\";\n\nimport { PREFIX } from \"../../../config\";\nimport { evalContext, getProperty, setProperty } from \"../../../utils\";\nimport Mustache from \"mustache\";\n\nexport default {\n components: {\n GFormLabel,\n GFormInput,\n GFormCheckBox,\n GFormSwitch,\n GFormRadio,\n GFormSelect,\n GFormSelectDateTime,\n GFormTreeCheckBox,\n GFormCascader,\n GFormUpload,\n GFormEditor,\n },\n props: {\n viewName: {\n required: true,\n },\n formModel: {\n required: true,\n },\n item: {\n type: Object,\n required: true,\n },\n formWhiteList: {\n type: Array,\n },\n },\n\n data() {\n return {\n PREFIX,\n disableFlag: false,\n blockShowFlag: true,\n };\n },\n methods: {\n getProperty,\n handleAfterUpdateValue(keyName, value) {\n this.$emit(\"after-update-value\", keyName, value);\n },\n handleAfterUpload(keyName, value) {\n this.$emit(\"after-upload\", keyName, value);\n },\n initEmptyFormItems(itemType) {\n switch (itemType) {\n // 开关和勾选框的初始值 false\n case \"check_box\":\n case \"switch\": {\n return false;\n }\n\n case \"multi_selector\":\n case \"tree_check_box\":\n case \"multi_tree_selector\": {\n return [];\n }\n\n default: {\n return null;\n }\n }\n },\n handleBeforeDestroyFormItem(item) {\n this.$emit(\"before-destroy\", item);\n },\n handleItemShowIf(showIf, item = {}) {\n if (typeof showIf != \"undefined\" && showIf != 1) {\n let result, evalResult;\n try {\n result = Mustache.render(showIf, { form: this.formModel });\n evalResult = evalContext(result, { form: this.formModel });\n // console.log(\"showIf\", showIf, \"mustacheResult\", result, \"evalResult\", evalResult);\n // console.log(showIf, result, evalResult);\n } catch (e) {\n console.warn(showIf, e);\n }\n\n return evalResult;\n } else {\n return true;\n }\n },\n handleItemDisableIf(disableIf, item = {}) {\n if (disableIf != 0) {\n let result, evalResult;\n try {\n result = Mustache.render(disableIf, { form: this.formModel });\n evalResult = evalContext(result, { form: this.formModel });\n // console.log(\"disableIf\", disableIf, \"mustacheResult\", result, \"evalResult\", evalResult);\n // console.log(disableIf, result, evalResult);\n } catch (e) {\n console.warn(disableIf, e);\n }\n\n // 设置为禁用后清空表单填写过的数据,以防提交非空数据\n if (evalResult !== \"\") {\n if (evalResult && (item?.keyName ?? \"\" != \"\")) {\n setProperty(this.formModel, item.keyName, this.initEmptyFormItems(item.itemType));\n }\n }\n\n this.disableFlag = evalResult;\n return evalResult;\n } else {\n return false;\n }\n },\n },\n};\n</script>\n","<template>\n <div class=\"g-form-editor\">\n <quillEditor v-model=\"value\" @change=\"handleEditorChange($event)\" />\n </div>\n</template>\n\n<script>\nimport { quillEditor } from \"vue-quill-editor\";\nimport \"quill/dist/quill.core.css\";\nimport \"quill/dist/quill.snow.css\";\n\nexport default {\n components: {\n quillEditor,\n },\n props: {\n modelValue: {\n required: true,\n },\n },\n data() {\n return {\n value: this.modelValue,\n };\n },\n watch: {\n modelValue() {\n this.value = this.modelValue;\n },\n },\n methods: {\n handleEditorChange(content) {\n this.$emit(\"update:modelValue\", content.html);\n },\n },\n beforeDestroy() {\n this.$emit(\"before-destroy\");\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <GCommonForm\n :commonFormProps=\"{\n data: formModel,\n rules: formRules,\n labelAlign: 'right',\n labelWidth: '150px',\n ref: 'form',\n }\"\n ref=\"commonForm\"\n >\n <template #body>\n <template v-for=\"item in formItems\">\n <GFormBlock\n v-if=\"item.itemType == 'block_start' || item.itemType === 'block_end'\"\n :ref=\"item.itemType == 'block_start' ? `block_${item.name}_Ref` : 'block_end'\"\n :name=\"item.name\"\n :blockType=\"item.itemType\"\n :showIf=\"handleItemShowIf(item.showIf)\"\n />\n <GFormItem\n v-else\n :id=\"item.keyName ? item.keyName : item.name\"\n :viewName=\"viewName\"\n :formModel=\"formModel\"\n :item=\"item\"\n :formWhiteList=\"formWhiteList\"\n @after-update-value=\"handleAfterUpdateValue\"\n @after-upload=\"handleAfterUpload\"\n @before-destroy=\"handleBeforeDestroyFormItem\"\n />\n </template>\n </template>\n <template #footer>\n <t-button theme=\"default\" v-if=\"formCancelButton.name !== ''\" @click=\"handleButtonClick(formCancelButton)\">\n {{ formCancelButton.name }}\n </t-button>\n <t-button theme=\"primary\" v-if=\"formOkButton.name !== ''\" @click=\"handleButtonClick(formOkButton)\">\n {{ formOkButton.name }}\n </t-button>\n </template>\n </GCommonForm>\n</template>\n\n<script>\nimport GCommonForm from \"../common/GCommonForm/index.vue\";\nimport GFormBlock from \"./components/GFormBlock.vue\";\nimport GFormItem from \"./components/GFormItem.vue\";\n\nimport { PREFIX } from \"../../config\";\nimport { evalContext, vFun, getProperty, setProperty, deepClone, isVoid } from \"../../utils\";\nimport Mustache from \"mustache\";\nimport { MessagePlugin } from \"tdesign-vue\";\n\nwindow.v = vFun;\nexport default {\n name: \"GForm\",\n components: {\n GCommonForm,\n GFormBlock,\n GFormItem,\n },\n props: {\n viewName: String,\n boardInfo: Object,\n formData: Object,\n },\n data() {\n return {\n PREFIX,\n formModel: {},\n formRules: {},\n formWhiteList: [\"userInfoNameEn\", \"cardNum\", \"attend\", \"userInfoRoleKey\"],\n };\n },\n computed: {\n formItems() {\n return this.boardInfo.formItems;\n },\n formOkButton() {\n return this.boardInfo.okButton;\n },\n formCancelButton() {\n return this.boardInfo.cancelButton;\n },\n },\n methods: {\n getProperty,\n initEmptyFormItems(itemType) {\n switch (itemType) {\n // 开关和勾选框的初始值 false\n case \"check_box\":\n case \"switch\": {\n return false;\n }\n\n case \"multi_selector\":\n case \"tree_check_box\":\n case \"multi_tree_selector\": {\n return [];\n }\n\n default: {\n return null;\n }\n }\n },\n initFormRules() {\n let currentFormItems = [];\n this.$refs.commonForm.$children.forEach((item) => {\n item.$children.forEach((item) => {\n if (\n (item.$el.id ?? \"\") != \"\" &&\n !item.$el.classList.contains(\"block-item-hidden\") &&\n item.item &&\n !item.disableFlag\n ) {\n currentFormItems.push(item.item);\n }\n });\n });\n\n let tempRules = {};\n if (currentFormItems.length) {\n // 处理表单项的必填规则\n currentFormItems.forEach((item) => {\n let itemTempRules = [];\n if (item.required && (item.keyName ?? \"\") != \"\") {\n itemTempRules.push({\n validator: () => {\n if (isVoid(getProperty(this.formModel, item.keyName))) {\n return { result: true };\n } else {\n const itemName = item.name.replace(/\\s/g, \"\").replace(/[::;\\s]/g, \"\");\n return {\n result: false,\n message: `${itemName}为必填项!`,\n };\n }\n },\n trigger: \"blur\",\n });\n }\n\n if (item.keyName == \"rePassword\") {\n itemTempRules.push({\n validator: () => {\n return {\n result:\n getProperty(this.formModel, \"password\") ==\n getProperty(this.formModel, \"rePassword\"),\n message: `两次输入密码不一致!`,\n };\n },\n trigger: \"blur\",\n });\n }\n\n if (item.keyName == \"startTime\" || item.keyName == \"endTime\") {\n itemTempRules.push({\n validator: () => {\n return {\n result:\n getProperty(this.formModel, \"endTime\") -\n getProperty(this.formModel, \"startTime\") >\n 0,\n\n message: `结束时间不能早于开始时间!`,\n };\n },\n });\n }\n\n if (itemTempRules.length) {\n tempRules[item.keyName] = itemTempRules;\n }\n });\n }\n\n this.formRules = { ...tempRules };\n },\n\n handleAfterUpdateValue(keyName, value) {\n setProperty(this.formModel, keyName, value);\n this.$forceUpdate();\n this.$nextTick(() => {\n this.initFormRules();\n this.$refs.commonForm.$refs.form.validate({ fields: [keyName] });\n });\n },\n handleAfterUpload(keyName, value) {\n if ((keyName ?? \"\") != \"\") {\n setProperty(this.formModel, keyName, value);\n }\n this.$forceUpdate();\n },\n handleBeforeDestroyFormItem(item) {\n setProperty(this.formModel, item.keyName, this.initEmptyFormItems(item.itemType));\n },\n handleItemShowIf(showIf, item = {}) {\n if (typeof showIf != \"undefined\" && showIf != 1) {\n let result, evalResult;\n try {\n result = Mustache.render(showIf, { form: this.formModel });\n evalResult = evalContext(result, { form: this.formModel });\n // console.log(\"showIf\", showIf, \"mustacheResult\", result, \"evalResult\", evalResult);\n // console.log(showIf, result, evalResult);\n } catch (e) {\n console.warn(showIf, e);\n }\n\n return evalResult;\n } else {\n return true;\n }\n },\n handleItemDisableIf(disableIf, item = {}) {\n if (disableIf != 0) {\n let result, evalResult;\n try {\n result = Mustache.render(disableIf, { form: this.formModel });\n evalResult = evalContext(result, { form: this.formModel });\n // console.log(\"disableIf\", disableIf, \"mustacheResult\", result, \"evalResult\", evalResult);\n // console.log(disableIf, result, evalResult);\n } catch (e) {\n console.warn(disableIf, e);\n }\n\n // 设置为禁用后清空表单填写过的数据,以防提交非空数据\n if (evalResult !== \"\") {\n if (evalResult && (item?.keyName ?? \"\" != \"\")) {\n setProperty(this.formModel, item.keyName, this.initEmptyFormItems(item.itemType));\n }\n }\n\n return evalResult;\n } else {\n return false;\n }\n },\n handleButtonClick(button) {\n switch (button.action) {\n case \"CONFIRM\": {\n this.$refs.commonForm.$refs.form.validate().then((result) => {\n if (!Object.keys(result).length) {\n this.$emit(\"confirm-form\", this.formModel, button.buttonId);\n } else {\n const firstError = Object.values(result)[0]?.[0]?.message;\n MessagePlugin.warning(`${firstError}`);\n }\n });\n break;\n }\n case \"CONFIRM_AND_CLOSE\": {\n this.$refs.commonForm.$refs.form.validate().then((result) => {\n if (!Object.keys(result).length) {\n this.$emit(\"confirm-and-close\", this.formModel, button.buttonId);\n } else {\n const firstError = Object.values(result)[0]?.[0]?.message;\n MessagePlugin.warning(`${firstError}`);\n }\n });\n break;\n }\n case \"CLOSE_DIALOG\": {\n this.$emit(\"close-dialog\");\n break;\n }\n default: {\n console.log(button);\n break;\n }\n }\n },\n },\n watch: {\n formData: {\n handler() {\n if (Object.keys(this.formData).length) {\n this.formItems.forEach((formItem) => {\n if (formItem.keyName && !isVoid(getProperty(this.formData, formItem.keyName))) {\n if (formItem.itemType == \"check_box\" || formItem.itemType == \"switch\") {\n setProperty(this.formData, formItem.keyName, false);\n }\n }\n });\n\n this.formModel = deepClone(this.formData, {});\n // this.$forceUpdate();\n } else {\n let tempModel = {};\n this.formItems.forEach((formItem) => {\n // 设置表单项目的初始值\n if ((formItem.keyName ?? \"\") != \"\") {\n setProperty(tempModel, formItem.keyName, this.initEmptyFormItems(formItem.itemType));\n }\n });\n\n this.formModel = deepClone(tempModel, {});\n // this.$forceUpdate();\n }\n },\n deep: true,\n immediate: true,\n },\n },\n mounted() {\n this.initFormRules();\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <t-tabs :class=\"`${PREFIX}-tab`\" placement=\"left\" :value=\"currentTabTitle\" @change=\"handleTabChange\">\n <t-tab-panel v-for=\"tab in tabs\" :key=\"tab.title\" :value=\"tab.title\" :label=\"tab.title\">\n <t-card :bordered=\"false\">\n <template slot=\"content\">\n <GTemplate\n v-if=\"tab.board\"\n :viewName=\"viewName\"\n :board=\"tab.board\"\n @close-dialog=\"handleCloseDialog\"\n />\n </template>\n </t-card>\n </t-tab-panel>\n </t-tabs>\n</template>\n\n<script>\nimport { PREFIX } from \"../../config\";\n\nexport default {\n components: {\n GTemplate: () => import(\"../GTemplate/index.vue\").then((d) => d.default),\n },\n name: \"GTab\",\n props: {\n viewName: String,\n boardInfo: Object,\n },\n computed: {\n tabs() {\n return this.boardInfo.tabs;\n },\n },\n data() {\n return {\n PREFIX,\n currentTabTitle: this.boardInfo.tabs[0].title,\n };\n },\n methods: {\n handleTabChange(newTabTitle) {\n this.currentTabTitle = newTabTitle;\n },\n handleCloseDialog() {\n window.history.go(-1);\n },\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <transition name=\"fade\">\n <t-dialog :class=\"`${PREFIX}-common-dialog`\" v-bind=\"commonDialogProps\">\n <template v-for=\"(index, name) in $scopedSlots\" #[name]=\"data\">\n <slot :name=\"name\" v-bind=\"{ ...data }\"></slot>\n </template>\n </t-dialog>\n </transition>\n</template>\n\n<script>\nimport { PREFIX } from \"../../../config\";\n\nexport default {\n name: \"GCommonDialog\",\n props: {\n commonDialogProps: {\n required: true,\n },\n },\n data() {\n return {\n PREFIX,\n };\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <GCommonDialog\n :commonDialogProps=\"{\n width: dialogWidth,\n header: dialogHeaderName,\n footer: false,\n visible: isVisible,\n onClose: handleDialogChange,\n }\"\n >\n <div slot=\"body\">\n <GTemplate\n v-if=\"viewBoard\"\n :viewName=\"dialogViewName\"\n :board=\"viewBoard\"\n :dialogProps=\"dialogProps\"\n @close-dialog=\"handleCloseDialog\"\n />\n </div>\n </GCommonDialog>\n</template>\n\n<script>\nimport GCommonDialog from \"../common/GCommonDialog/index.vue\";\nimport { PREFIX } from \"../../config\";\nimport { getOneView } from \"../../api/modules/view\";\nexport default {\n name: \"GDialog\",\n components: {\n GCommonDialog,\n GTemplate: () => import(\"../GTemplate/index.vue\").then((d) => d.default),\n },\n props: {\n dialogViewInfo: Object,\n dialogFormModel: Object,\n isVisible: {\n type: Boolean,\n default: false,\n },\n },\n data() {\n return {\n PREFIX,\n viewInfo: {},\n viewBoard: {},\n viewProps: [],\n };\n },\n computed: {\n dialogWidth() {\n switch (this.viewBoard?.boardType) {\n case \"table\":\n return \"1200px\";\n\n case \"tab\":\n return \"1200px\";\n\n default:\n return \"600px\";\n }\n },\n dialogHeaderName() {\n return this.dialogViewInfo.name;\n },\n dialogViewName() {\n return this.dialogViewInfo.view;\n },\n dialogProps() {\n return this.$store.getters[\"props/getPropsByPropsKey\"](this.viewProps);\n },\n viewName() {\n return this.dialogViewInfo.view;\n },\n },\n methods: {\n handleDialogChange() {\n this.$emit(\"update:isVisible\", false);\n },\n handleCloseDialog() {\n this.$emit(\"close-dialog\");\n },\n\n async getViewInfo(viewName, props) {\n props.viewName = viewName;\n\n const res = await getOneView(props);\n\n if (res.state === 200) {\n this.viewInfo = res.data;\n this.viewBoard = res.data.boards?.[0];\n this.viewProps = res.data?.props;\n }\n },\n },\n watch: {\n dialogViewInfo() {\n this.getViewInfo(this.dialogViewName, {});\n },\n },\n mounted() {\n this.getViewInfo(this.dialogViewName, {});\n },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"./style.scss\";\n</style>\n","<template>\n <div :class=\"`${PREFIX}-template`\">\n <!-- 头部操作 -->\n <GHeader\n v-if=\"headerInfo\"\n :viewName=\"viewName\"\n :viewProps=\"viewProps\"\n :headerInfo=\"headerInfo\"\n @header-button-action=\"handleAction\"\n @header-filter-change=\"handleHeaderFilterChange\"\n />\n <!-- 表格视图 -->\n <GTable\n v-if=\"boardType == 'table'\"\n :viewName=\"viewName\"\n :viewProps=\"viewProps\"\n :boardInfo=\"board\"\n :tableData=\"tableData\"\n :paginationProps=\"tablePaginationProps\"\n @table-button-action=\"handleAction\"\n @table-form-confirm=\"handleTableFormConfirm\"\n @return-pagination-props=\"handleSetPaginationProps\"\n @return-selected-key=\"handleReturnSelectedKey\"\n />\n <!-- 表单视图 -->\n <GForm\n v-if=\"boardType == 'form'\"\n :viewName=\"viewName\"\n :viewProps=\"viewProps\"\n :boardInfo=\"board\"\n :formData=\"formData\"\n @confirm-form=\"handleConfirmForm\"\n @close-dialog=\"handleCloseDialogEvent\"\n @confirm-and-close=\"handleConfirmAndClose\"\n />\n <!-- Tab视图 -->\n <GTab v-if=\"boardType == 'tab'\" :viewName=\"viewName\" :viewProps=\"viewProps\" :boardInfo=\"board\" />\n\n <!-- 对话框 -->\n <GDialog\n v-if=\"isDialogVisible\"\n :isVisible.sync=\"isDialogVisible\"\n :dialog-view-info=\"dialogViewInfo\"\n :dialog-form-model=\"dialogFormModel\"\n @close-dialog=\"handleCloseDialog\"\n />\n </div>\n</template>\n\n<script>\nimport GHeader from \"../GHeader/index.vue\";\nimport GTable from \"../GTable/index.vue\";\nimport GForm from \"../GForm/index.vue\";\nimport GTab from \"../GTab/index.vue\";\nimport GDialog from \"../GDialog/index.vue\";\n\nimport { MessagePlugin, DialogPlugin } from \"tdesign-vue\";\n\nimport { getViewData, batchAction, confirm } from \"../../api/modules/view\";\nimport { PREFIX, LOCAL_DATA_ID } from \"../../config\";\n\nimport Mustache from \"mustache\";\nimport he from \"he\";\n\n// 初始化表格分页数据\nconst initTablePaginationProps = {\n count: 10,\n page: 0,\n totalCount: 0,\n pageCount: 0,\n};\n\nexport default {\n name: \"GTemplate\",\n components: {\n GHeader,\n GTable,\n GForm,\n GTab,\n GDialog,\n },\n props: {\n // 当前模板信息\n board: Object,\n // 当前模板视图名称\n viewName: String,\n // 当前视图所需参数\n viewProps: Array || Object,\n\n // 传入查询参数\n dialogProps: Object,\n },\n data() {\n return {\n PREFIX,\n // 路径查询参数\n queryProps: {},\n\n // 头部搜索框数据\n headerFilterProps: {},\n\n // 表格数据\n tableData: [],\n // 表单数据\n formData: {},\n\n // 表格选中数据\n tableSelectedData: [],\n\n // 表格视图分页数据\n tablePaginationProps: {\n count: 10,\n page: 0,\n totalCount: 0,\n pageCount: 0,\n },\n\n // 对话框相关\n isDialogVisible: false,\n dialogFormModel: {},\n dialogViewInfo: {},\n };\n },\n computed: {\n // 模板种类\n boardType() {\n return this.board.boardType;\n },\n // 头部信息\n headerInfo() {\n return this.board.header;\n },\n // 数据Id\n dataId() {\n if (this.board.data || this.board.tableData) {\n if (this.boardType === \"table\") {\n return this.board.tableData.dataId;\n } else {\n return this.board.data.dataId;\n }\n } else {\n return null;\n }\n },\n\n // 合并获取数据参数模型\n propsModel() {\n let tempModel = {};\n // 头部搜索过滤参数\n if (this.headerInfo && this.headerFilterProps) {\n Object.assign(tempModel, this.headerFilterProps);\n }\n\n // 对话框表单查询参数\n if (this.dialogProps) {\n Object.assign(tempModel, this.dialogProps);\n }\n\n // // 表格分页参数\n if (this.boardType === \"table\") {\n Object.assign(tempModel, this.tablePaginationProps);\n }\n\n // 地址查询参数\n Object.assign(tempModel, this.queryProps);\n return tempModel;\n },\n },\n watch: {\n \"this.$route.query\": {\n handler(newValue) {\n const { query } = this.$route;\n\n if (query) {\n const { viewName, ...rest } = query;\n this.queryProps = rest;\n }\n },\n deep: true,\n immediate: true,\n },\n board: {\n handler() {\n // 对话框传入视图数据时获取表单数据\n this.getTemplateData();\n },\n deep: true,\n },\n },\n methods: {\n // 处理按钮动作\n handleAction(button, row = {}) {\n switch (button.action) {\n // 打开对话框动作\n case \"VIEW_BY_DIALOG\": {\n this.isDialogVisible = true;\n this.dialogViewInfo = button;\n this.dialogFormModel = { ...row };\n this.$store.dispatch(\"props/initSource\", row);\n break;\n }\n // 打开新的视图\n case \"VIEW\": {\n let tempProps = {};\n button.props.forEach((item) => {\n tempProps[item.keyName] = row[item.keyName];\n });\n\n this.$router.push({\n path: `/view`,\n query: {\n viewName: button.view,\n ...tempProps,\n },\n });\n break;\n }\n // 确认框\n case \"CONFIRM\": {\n let message; // 确认信息\n if (button.confirmMessage != \"\") {\n message = Mustache.render(button.confirmMessage, { item: row });\n } else {\n message = `是否确定${button.name}`;\n }\n\n let tempProps = {};\n if (button.props) {\n button.props.forEach((item) => {\n if (row[item.keyName] ?? \"\" != \"\") {\n tempProps[item.keyName] = row[item.keyName];\n }\n });\n } else {\n tempProps = { ...row };\n }\n\n const dialogInstance = DialogPlugin.confirm({\n theme: \"info\",\n header: button.name,\n body: message,\n onConfirm: () => {\n this.handleConfirmForm(tempProps, button.buttonId);\n dialogInstance.destroy();\n },\n onCancel: () => {\n MessagePlugin.info(`已取消${button.name}`);\n },\n });\n\n break;\n }\n\n // 批量选择\n case \"BATCH\": {\n const dialogInstance = DialogPlugin.confirm({\n theme: \"info\",\n header: button.name,\n body: `此操作将${button.name},是否继续`,\n onConfirm: () => {\n if (this.tableSelectedData.length == 0) {\n MessagePlugin.error(\"请选择操作对象!\");\n } else {\n this.handleBatchAction(button, this.tableSelectedData);\n }\n\n dialogInstance.destroy();\n },\n onCancel: () => {\n MessagePlugin.info(`已取消${button.name}`);\n },\n });\n break;\n }\n\n // 打开链接动作\n case \"LINK\": {\n let tempProps = {};\n button.props.forEach((item) => {\n tempProps[item.keyName] = row[item.keyName];\n });\n\n const link = this.$router.resolve({\n path: button.link,\n query: { ...tempProps },\n });\n window.open(link.href, \"_blank\");\n break;\n }\n\n case \"DOWNLOAD\": {\n if ((button.downloadUrl ?? \"\") != \"\") {\n const url = he.decode(Mustache.render(button.downloadUrl, { item: row }));\n\n if ((url ?? \"\") != \"\") {\n const fileName = url.split(\"/\").slice(-1)[0];\n\n const downloadEl = document.createElement(\"a\");\n downloadEl.style.display = \"none\";\n downloadEl.setAttribute(\"target\", \"_blank\");\n fileName && downloadEl.setAttribute(\"download\", fileName);\n downloadEl.setAttribute(\"href\", url);\n downloadEl.click();\n }\n } else {\n MessagePlugin.info(\"未设置下载链接\");\n }\n break;\n }\n\n default: {\n // console.log(\"未设置按钮动作:\", button);\n break;\n }\n }\n },\n\n // 处理头部搜索框改变事件\n handleHeaderFilterChange(filterProps) {\n this.headerFilterProps = filterProps;\n this.tablePaginationProps = {\n count: 10,\n page: 0,\n totalCount: 0,\n pageCount: 0,\n };\n\n this.getTemplateData();\n },\n\n // 处理表格多选操作\n handleReturnSelectedKey(value) {\n this.tableSelectedData = value;\n },\n\n // 处理表格分页操作\n handleSetPaginationProps(propsModel) {\n Object.assign(this.tablePaginationProps, {\n page: propsModel.current - 1,\n count: propsModel.pageSize,\n });\n\n this.getTemplateData();\n },\n\n // 处理表格批量提交\n async handleBatchAction(item, list) {\n let batchProps = {};\n\n const { query } = this.$route;\n if (query != null) {\n const { viewName, ...rest } = query;\n batchProps = { ...rest };\n }\n\n let res = await batchAction({\n viewName: this.viewName,\n buttonId: item.buttonId,\n props: batchProps,\n keys: list,\n });\n\n if (res.state == 200) {\n MessagePlugin.success(`${item.name} 操作成功!`);\n } else {\n MessagePlugin.error(`操作出错:${res.message}`);\n }\n },\n\n handleTableFormConfirm(formItem, formModel) {\n if (\n formItem.itemType == \"selector\" ||\n formItem.itemType == \"time_selector\" ||\n formItem.itemType == \"date_time_selector\" ||\n formItem.itemType == \"tree_check_box\" ||\n formItem.itemType === \"multi_tree_selector\" ||\n formItem.itemType === \"tree_selector\"\n ) {\n const dialogInstance = DialogPlugin.confirm({\n theme: \"info\",\n body: `此操作将提交该修改,是否继续?`,\n onConfirm: () => {\n this.handleConfirmForm(formModel, formItem.buttonId);\n\n dialogInstance.destroy();\n },\n onCancel: () => {\n MessagePlugin.info(`已取消修改。`);\n },\n });\n } else {\n this.handleConfirmForm(formModel, formItem.buttonId);\n }\n },\n\n // 处理表单提交\n async handleConfirmForm(formModel, buttonId) {\n let confirmProps = {};\n confirmProps = { ...this.propsModel };\n Object.assign(confirmProps, formModel);\n\n const res = await confirm({\n buttonId: buttonId,\n props: confirmProps,\n viewName: this.viewName,\n });\n\n if (res.state === 200) {\n MessagePlugin.success(\"提交成功\");\n } else {\n MessagePlugin.error(`提交失败:${res.message}`);\n }\n },\n // 处理对话框关闭\n handleCloseDialog() {\n this.isDialogVisible = false;\n },\n // 处理对话框关闭事件\n handleCloseDialogEvent() {\n this.$emit(\"close-dialog\");\n },\n // 处理对话框提交并关闭\n handleConfirmAndClose(model, buttonId) {\n this.handleConfirmForm(model, buttonId);\n this.$emit(\"close-dialog\");\n },\n\n // 获取当前视图模板数据\n async getTemplateData() {\n let res;\n if (this.dataId !== null) {\n localStorage.setItem(LOCAL_DATA_ID, this.dataId);\n\n res = await getViewData({\n viewName: this.viewName,\n dataId: this.dataId,\n props: this.propsModel,\n });\n\n this.$store.dispatch(\"socket/sendRegisterMessage\", this.dataId);\n\n if (res.state === 200 && res.data) {\n if (this.boardType == \"table\") {\n this.tablePaginationProps = {\n count: res.data.count,\n page: res.data.page,\n pageCount: res.data.pageCount,\n totalCount: res.data.totalCount,\n };\n this.tableData = res.data.data;\n }\n\n if (this.boardType === \"form\") {\n this.formData = res.data;\n }\n } else {\n // todo 重复请求数据报错\n console.warn(res);\n // MessagePlugin.error(`数据获取出错 ${res.message}`);\n }\n }\n },\n },\n mounted() {\n this.getTemplateData();\n\n window.addEventListener(\"onUpdateMessage\", (event) => {\n const updatedDataId = event?.detail.args.dataId;\n // const currentDataId = localStorage.getItem(LOCAL_DATA_ID);\n if (this.dataId === updatedDataId) {\n // console.log(updatedDataId, \"数据更新了,重新获取数据\");\n this.getTemplateData();\n }\n });\n },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","<template>\n <div :class=\"`${PREFIX}-template-view`\">\n <t-loading :loading=\"isLoading\" :delay=\"isLoadingDelay\">\n <transition name=\"fade\" mode=\"out-in\">\n <GTemplate\n v-for=\"board in viewBoards\"\n :board=\"board\"\n :viewName=\"viewName\"\n :viewProps=\"viewProps\"\n :key=\"Date.now()\"\n />\n </transition>\n </t-loading>\n </div>\n</template>\n\n<script>\nimport GTemplate from \"../GTemplate/index.vue\";\nimport { getOneView } from \"../../api/modules/view\";\nimport { MessagePlugin } from \"tdesign-vue\";\nimport { PREFIX } from \"../../config\";\n\nexport default {\n name: \"GTemplateView\",\n components: {\n GTemplate,\n },\n computed: {\n // view标题\n title() {\n return this.viewInfo?.title;\n },\n // view名称\n viewName() {\n return this.$route.query?.viewName;\n },\n // view版面信息\n viewBoards() {\n return this.viewInfo?.boards;\n },\n // view所需参数\n viewProps() {\n return this.viewInfo?.props;\n },\n // 路径查询参数\n queryProps() {\n const { query } = this.$route;\n\n if (query) {\n const { viewName, ...rest } = query;\n return rest;\n }\n return {};\n },\n },\n data() {\n return {\n PREFIX,\n viewInfo: {},\n isLoading: false,\n isLoadingDelay: 500,\n };\n },\n methods: {\n async getViewInfo(viewName, props) {\n props.viewName = viewName;\n\n if (this.queryProps != null) {\n Object.assign(props, this.queryProps);\n }\n\n if ((viewName ?? \"\") != \"\") {\n this.isLoading = true;\n const res = await getOneView(props);\n if (res.state === 200 && res.data) {\n this.viewInfo = res.data;\n this.$emit(\"return-title\", this.title);\n this.appendNewTabMenuItem();\n this.isLoading = false;\n } else {\n this.isLoading = false;\n MessagePlugin.error(`${this.viewName} 目标视图数据为空`);\n }\n }\n },\n appendNewTabMenuItem() {\n const { fullPath, query } = this.$route;\n const path = decodeURIComponent(fullPath);\n\n this.$store.dispatch(\"setting/appendTabMenuItem\", {\n title: this.title,\n path,\n query,\n });\n },\n },\n watch: {\n // 当路由地址的视图名称参数改变时重新获取数据\n viewName() {\n this.getViewInfo(this.viewName, {});\n },\n\n // \"this.$route.query\": {\n // handler() {\n // const { query } = this.$route;\n\n // if (query) {\n // const { viewName, ...rest } = query;\n // this.queryProps = rest;\n // }\n // },\n // deep: true,\n // immediate: true,\n // },\n },\n mounted() {\n // 获取模板数据\n this.getViewInfo(this.viewName, {});\n },\n};\n</script>\n","<template>\n <GLayout :config=\"config\" :title=\"title\">\n <GTemplateView @return-title=\"handleReturnTitle\" v-if=\"isGlobalLoaded\" />\n </GLayout>\n</template>\n\n<script>\nimport GLayout from \"../GLayout/index.vue\";\nimport GTemplateView from \"../GTemplateView/index.vue\";\nimport { PREFIX } from \"../../config\";\n\nexport default {\n name: \"GView\",\n components: {\n GLayout,\n GTemplateView,\n },\n props: {\n config: Object,\n },\n data() {\n return {\n PREFIX,\n title: \"\",\n };\n },\n computed: {\n isGlobalLoaded() {\n return this.$store.state.setting.isGlobalLoaded;\n },\n },\n methods: {\n handleReturnTitle(title) {\n this.title = title;\n },\n handleReload() {\n this.$store.dispatch(\"setting/reloadGlobal\");\n },\n },\n mounted() {\n window.addEventListener(\"onSocketReload\", () => {\n this.handleReload();\n });\n },\n};\n</script>\n\n<style lang=\"scss\"></style>\n","import { INIT_WS_MODEL, WS_INTERVAL_TIMEOUT, WS_RESET_TIMEOUT, WS_SERVICE } from \"../config\";\nimport { MessagePlugin } from \"tdesign-vue\";\n\nexport interface SocketState {\n socket: WebSocket | null;\n isSocketLink?: boolean;\n isSocketFirst?: boolean;\n isSocketReset?: boolean;\n isUserLogin?: boolean;\n socketInterval?: null;\n socketTimeout?: null;\n}\n\nconst state = (): SocketState => ({\n socket: null,\n isSocketLink: false, // 正在连接\n isSocketFirst: false,\n isSocketReset: false, // 正在重连\n isUserLogin: false, // 用户是否登录\n socketInterval: null,\n socketTimeout: null,\n});\n\nconst getters = {};\n\nconst mutations = {};\n\nconst actions = {\n initSocket({ state, rootState, dispatch }) {\n state.isSocketLink = true;\n state.isSocketFirst = true;\n state.socket = new WebSocket(WS_SERVICE);\n\n state.socket.onopen = function (event) {\n // console.log(\"打开连接\", event);\n let model = INIT_WS_MODEL(\"heart\");\n state.socketInterval = setInterval(function () {\n state.socket.send(JSON.stringify(model));\n }, WS_INTERVAL_TIMEOUT);\n state.isSocketLink = false;\n };\n\n state.socket.onclose = function (event) {\n MessagePlugin.error(\"WebSocket 断开连接\");\n // console.log(\"断开链接\", event);\n\n state.socketInterval = null;\n state.isSocketReset = true;\n state.socket = null;\n\n MessagePlugin.error(\"WebSocket 重新连接...\");\n state.socketTimeout = setTimeout(function () {\n if (state.isSocketReset) {\n dispatch(\"initSocket\");\n\n if (!state.isSocketLink) {\n clearTimeout(state.socketTimeout);\n window.dispatchEvent(new CustomEvent(\"onSocketReload\"));\n }\n }\n }, WS_RESET_TIMEOUT);\n };\n state.socket.onerror = function (event) {\n // console.log(\"出现错误\", event);\n MessagePlugin.error(\"WebSocket 出现错误\");\n };\n state.socket.onmessage = function (event) {\n let data = JSON.parse(event.data);\n window.dispatchEvent(\n new CustomEvent(\"onUpdateMessage\", {\n detail: {\n ...data,\n },\n }),\n );\n if (state.isSocketFirst) {\n state.isSocketFirst = false;\n }\n };\n state.isUserLogin = !!rootState.user;\n state.isSocketLink = false;\n },\n sendRegisterMessage({ state }, dataId: string) {\n let model = INIT_WS_MODEL(\"register\", dataId);\n state.socket.send(JSON.stringify(model));\n state.isSocketReset = false;\n },\n sendUnregisterMessage({ state }, dataId: string) {\n let model = INIT_WS_MODEL(\"unregister\", dataId);\n state.socket.send(JSON.stringify(model));\n state.isSocketReset = false;\n },\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions,\n};\n","const state = {\n source: {},\n};\n\nconst getters = {\n getPropsByPropsKey: (state) => (propsKeys) => {\n const tempProps = {};\n if ((state.source ?? \"\") != \"\" && (propsKeys ?? \"\" != \"\")) {\n propsKeys.forEach((propsKey) => {\n tempProps[propsKey] = state.source[propsKey];\n });\n }\n\n return tempProps;\n },\n};\n\nconst mutations = {\n setSource(state, source) {\n if (Object.keys(source).length) {\n state.source = { ...source };\n }\n },\n};\n\nconst actions = {\n initSource({ commit }, source) {\n commit(\"setSource\", source);\n },\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions,\n};\n","import setting from \"./setting\";\nimport socket from \"./socket\";\nimport view from \"./view\";\nimport props from \"./props\";\n\nexport default { setting, socket, view, props };\n","import { TabMenuItem } from \"../types\";\nimport { generateMenuTree, getHomeUrl } from \"../utils\";\nimport {\n LOCAL_CONFIG,\n LOCAL_THEME_CONFIG,\n LOCAL_MENU_CONFIG,\n LOCAL_MENU,\n LOCAL_USER,\n LOCAL_TAB_MENU,\n LOCAL_INIT_TAB_MENU_LIST,\n TOKEN_EXPIRED_TIME,\n TOKEN_NAME,\n THEME_CONFIG,\n} from \"../config\";\nimport { MessagePlugin } from \"tdesign-vue\";\n\nexport interface UserConfig {\n userInfo: any;\n userMenu: any;\n userToken: {\n token: string;\n tokenExpiredTime: string;\n };\n\n // 首页地址\n homeUrl?: string;\n\n // 上传相关接口\n uploadApi: string;\n}\n\nexport type ThemeConfigType = typeof THEME_CONFIG;\n\nexport interface SettingState {\n isUserLogin: boolean;\n isGlobalLoaded: boolean;\n isSideBarCollapse: boolean;\n isSettingPanelShow: boolean;\n\n tabMenuList: TabMenuItem[];\n initTabMenuList: TabMenuItem[];\n\n themeConfig: ThemeConfigType;\n config: UserConfig;\n menuConfig: any;\n}\n\nconst state = () => ({\n // 登录标志\n isUserLogin: !!JSON.parse(sessionStorage.getItem(LOCAL_USER) as string) || false,\n // 加载标志\n isGlobalLoaded: true,\n\n // 基本配置\n isSideBarCollapse: false,\n isSettingPanelShow: false,\n\n // 主题配置\n themeConfig: JSON.parse(localStorage.getItem(LOCAL_THEME_CONFIG) as string) || {\n ...THEME_CONFIG,\n },\n\n // 菜单配置\n menuConfig: JSON.parse(localStorage.getItem(LOCAL_MENU_CONFIG) as string) || [],\n\n // 用户传入GView的信息与配置\n config: JSON.parse(localStorage.getItem(LOCAL_CONFIG) as string) || {\n userInfo: {\n realName: \"\",\n },\n userPermissions: [],\n userMenu: [],\n userToken: {\n token: \"\",\n tokenExpiredTime: \"\",\n },\n uploadApi: \"\",\n },\n\n // tab菜单相关\n initTabMenuList: JSON.parse(localStorage.getItem(LOCAL_INIT_TAB_MENU_LIST) as string) || [],\n tabMenuList: JSON.parse(sessionStorage.getItem(LOCAL_TAB_MENU) as string) || [],\n});\n\nconst getters = {\n userMenu: (state: SettingState) => state.menuConfig,\n homeUrl: (state: SettingState) => {\n // 获取用户首页,如果没有传入则使用第一个有地址的菜单项\n if (state.config?.homeUrl) {\n return state.config?.homeUrl;\n } else {\n return getHomeUrl(state.menuConfig);\n }\n },\n userRealName: (state: SettingState) => state.config.userInfo.realName,\n userEdificeKey: (state: SettingState) => state.config.userInfo.edificeKey,\n token: (state: SettingState) => state.config.userToken.token,\n tokenExpiredTime: (state: SettingState) => state.config.userToken.tokenExpiredTime,\n uploadApi: (state: SettingState) => state.config.uploadApi,\n\n displayMode: (state: SettingState) => {\n if (state.themeConfig.displayMode === \"auto\") {\n const media = window.matchMedia(\"(prefers-color-scheme:dark)\");\n if (media.matches) {\n return \"dark\";\n }\n return \"light\";\n }\n return state.themeConfig.displayMode;\n },\n};\n\nconst mutations = {\n /**\n * 设置用户登录状态\n */\n setUserLoginStatus(state: SettingState, status) {\n state.isUserLogin = status;\n },\n /**\n * 设置重新加载状态\n * @param state\n * @param status\n */\n setGlobalLoadingStatus(state: SettingState, status) {\n state.isGlobalLoaded = status;\n },\n /**\n * 设置侧边菜单展开状态\n * @param state\n * @param status\n */\n toggleSideBarCollapse(state: SettingState) {\n state.isSideBarCollapse = !state.isSideBarCollapse;\n },\n /**\n * 设置侧边设置面板显示状态\n * @param state\n */\n toggleSettingPanel(state: SettingState) {\n state.isSettingPanelShow = !state.isSettingPanelShow;\n },\n /**\n * 设置常用初始化 Tab 菜单内容\n */\n setInitTabMenuList(state: SettingState, initTabMenuList: []) {\n sessionStorage.setItem(LOCAL_INIT_TAB_MENU_LIST, JSON.stringify(initTabMenuList));\n state.initTabMenuList = initTabMenuList;\n },\n /**\n * 保存顶部tab菜单状态\n * @param state\n * @param tabMenuList\n */\n setTabMenuList(state: SettingState, tabMenuList: TabMenuItem[]) {\n sessionStorage.setItem(LOCAL_TAB_MENU, JSON.stringify(tabMenuList));\n state.tabMenuList = tabMenuList;\n },\n /**\n * 设置用户传入的配置\n * @param state\n * @param config\n */\n setSettingConfig(state: SettingState, config) {\n localStorage.setItem(LOCAL_CONFIG, JSON.stringify(config));\n Object.keys(config).forEach((configKey) => {\n state.config[configKey] = config[configKey];\n });\n },\n /**\n * 设置主题配置\n * @param state\n * @param config\n */\n setThemeSettingConfig(state: SettingState, config) {\n localStorage.setItem(LOCAL_THEME_CONFIG, JSON.stringify(config));\n Object.keys(config).forEach((configKey) => {\n state.themeConfig[configKey] = config[configKey];\n });\n },\n\n /**\n * 保存菜单方案\n * @param state\n * @param menuConfig\n */\n setMenuConfig(state: SettingState, menuConfig) {\n localStorage.setItem(LOCAL_MENU_CONFIG, JSON.stringify(menuConfig));\n state.menuConfig = menuConfig;\n },\n};\n\nconst actions = {\n /**\n * 全局重新加载\n */\n reloadGlobal({ commit }) {\n commit(\"setGlobalLoadingStatus\", false);\n\n setTimeout(function () {\n commit(\"setGlobalLoadingStatus\", true);\n });\n },\n\n /**\n * 初始化设置\n */\n initSettingConfig({ commit }, config: UserConfig) {\n const { userMenu } = config;\n let menuTree = generateMenuTree(userMenu, null, 1);\n config.userMenu = menuTree;\n commit(\"setSettingConfig\", config);\n commit(\"setMenuConfig\", menuTree);\n },\n\n /**\n * 加载后初始化完整逻辑\n */\n userLoadInit({ commit, dispatch }, config) {\n // localStorage.removeItem(LOCAL_CONFIG);\n\n // 初始化GView用户以及菜单信息\n dispatch(\"initSettingConfig\", config);\n\n // 初始化顶部菜单配置\n dispatch(\"initTabMenu\");\n\n // 修改用户登录状态\n commit(\"setUserLoginStatus\", true);\n },\n\n userLogout({ commit }) {\n localStorage.removeItem(LOCAL_CONFIG);\n localStorage.removeItem(LOCAL_MENU_CONFIG);\n\n sessionStorage.clear();\n\n // 修改用户登录状态\n commit(\"setUserLoginStatus\", false);\n MessagePlugin.success(\"退出登录成功\");\n },\n\n loadLocalTheme({ commit, dispatch, state }) {\n let { themeConfig } = state;\n dispatch(\"changeMode\", themeConfig);\n dispatch(\"changeBrandTheme\", themeConfig);\n commit(\"setThemeSettingConfig\", themeConfig);\n },\n changeTheme({ commit, dispatch }, themeConfig) {\n dispatch(\"changeMode\", themeConfig);\n dispatch(\"changeBrandTheme\", themeConfig);\n commit(\"setThemeSettingConfig\", themeConfig);\n },\n changeMode(_: { state: SettingState }, themeConfig) {\n let theme = themeConfig.displayMode;\n if (themeConfig.displayMode === \"auto\") {\n const media = window.matchMedia(\"(prefers-color-scheme:dark)\");\n if (media.matches) {\n theme = \"dark\";\n } else {\n theme = \"light\";\n }\n }\n const isDarkMode = theme === \"dark\";\n\n document.documentElement.setAttribute(\"theme-mode\", isDarkMode ? \"dark\" : \"\");\n },\n changeBrandTheme(_: { state: SettingState }, themeConfig) {\n const { brandTheme } = themeConfig;\n\n document.documentElement.setAttribute(\"theme-color\", brandTheme);\n },\n\n /**\n * 更新菜单方案配置\n */\n updateMenuConfig({ commit }) {},\n\n /**\n * 初始化 Tab 菜单内容\n */\n initTabMenu({ commit }) {\n const homeTabMenuItem = {\n itemIdx: 0,\n path: \"/home\",\n title: \"首页\",\n isHome: true,\n };\n\n commit(\"setInitTabMenuList\", [homeTabMenuItem]);\n commit(\"setTabMenuList\", [homeTabMenuItem]);\n },\n\n appendTabMenuItem({ commit, state }, newItem: TabMenuItem) {\n if (!state.tabMenuList.find((item) => !item.isHome && item.path === newItem.path)) {\n commit(\"setTabMenuList\", state.tabMenuList.concat({ ...newItem }));\n }\n },\n\n subtractCurrentTabMenuItem({ commit, state }, newItem: TabMenuItem) {\n const { itemIdx } = newItem;\n commit(\"setTabMenuList\", state.tabMenuList.slice(0, itemIdx).concat(state.tabMenuList.slice(itemIdx + 1)));\n },\n subtractTabMenuItemBehind({ commit, state }, newItem: TabMenuItem) {\n const { itemIdx } = newItem;\n commit(\"setTabMenuList\", state.tabMenuList.slice(0, itemIdx + 1));\n },\n subtractTabMenuItemAhead({ commit, state }, newItem: TabMenuItem) {\n const { itemIdx } = newItem;\n commit(\"setTabMenuList\", state.initTabMenuList.concat(state.tabMenuList.slice(itemIdx)));\n },\n subtractTabMenuItemOther({ commit, state }, newItem: TabMenuItem) {\n const { itemIdx } = newItem;\n const tempItem = state.tabMenuList[itemIdx];\n commit(\"setTabMenuList\", itemIdx === 0 ? state.initTabMenuList : state.initTabMenuList.concat(tempItem));\n },\n\n clearTabMenuItem({ commit, state }) {\n commit(\"setTabMenuList\", []);\n },\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions,\n};\n","const state = {};\n\nconst getters = {};\n\nconst mutations = {};\n\nconst actions = {};\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions,\n};\n","export default [\n {\n stem: \"app\",\n icon: \"App\",\n },\n\n {\n stem: \"attach\",\n icon: \"Attach\",\n },\n\n {\n stem: \"barcode\",\n icon: \"Barcode\",\n },\n {\n stem: \"books\",\n icon: \"Books\",\n },\n\n {\n stem: \"browse\",\n icon: \"Browse\",\n },\n {\n stem: \"bulletpoint\",\n icon: \"Bulletpoint\",\n },\n {\n stem: \"calendar\",\n icon: \"Calendar\",\n },\n {\n stem: \"call\",\n icon: \"Call\",\n },\n\n {\n stem: \"cart\",\n icon: \"Cart\",\n },\n {\n stem: \"chart-bar\",\n icon: \"ChartBar\",\n },\n {\n stem: \"chart-bubble\",\n icon: \"ChartBubble\",\n },\n {\n stem: \"chart-pie\",\n icon: \"ChartPie\",\n },\n {\n stem: \"chart\",\n icon: \"Chart\",\n },\n {\n stem: \"chat\",\n icon: \"Chat\",\n },\n\n {\n stem: \"cloud-download\",\n icon: \"CloudDownload\",\n },\n {\n stem: \"cloud-upload\",\n icon: \"CloudUpload\",\n },\n {\n stem: \"cloud\",\n icon: \"Cloud\",\n },\n {\n stem: \"code\",\n icon: \"Code\",\n },\n {\n stem: \"control-platform\",\n icon: \"ControlPlatform\",\n },\n {\n stem: \"creditcard\",\n icon: \"Creditcard\",\n },\n {\n stem: \"dashboard\",\n icon: \"Dashboard\",\n },\n {\n stem: \"delete\",\n icon: \"Delete\",\n },\n {\n stem: \"desktop\",\n icon: \"Desktop\",\n },\n {\n stem: \"discount-filled\",\n icon: \"DiscountFilled\",\n },\n {\n stem: \"discount\",\n icon: \"Discount\",\n },\n {\n stem: \"download\",\n icon: \"Download\",\n },\n {\n stem: \"edit-1\",\n icon: \"Edit1\",\n },\n {\n stem: \"edit\",\n icon: \"Edit\",\n },\n\n {\n stem: \"file-add\",\n icon: \"FileAdd\",\n },\n {\n stem: \"file-copy\",\n icon: \"FileCopy\",\n },\n {\n stem: \"file-excel\",\n icon: \"FileExcel\",\n },\n {\n stem: \"file-icon\",\n icon: \"FileIcon\",\n },\n {\n stem: \"file-image\",\n icon: \"FileImage\",\n },\n {\n stem: \"file-paste\",\n icon: \"FilePaste\",\n },\n {\n stem: \"file-pdf\",\n icon: \"FilePdf\",\n },\n {\n stem: \"file-powerpoint\",\n icon: \"FilePowerpoint\",\n },\n {\n stem: \"file-unknown\",\n icon: \"FileUnknown\",\n },\n {\n stem: \"file-word\",\n icon: \"FileWord\",\n },\n {\n stem: \"file\",\n icon: \"File\",\n },\n {\n stem: \"filter-clear\",\n icon: \"FilterClear\",\n },\n {\n stem: \"filter\",\n icon: \"Filter\",\n },\n {\n stem: \"flag\",\n icon: \"Flag\",\n },\n {\n stem: \"folder-add\",\n icon: \"FolderAdd\",\n },\n {\n stem: \"folder-open\",\n icon: \"FolderOpen\",\n },\n {\n stem: \"folder\",\n icon: \"Folder\",\n },\n {\n stem: \"fork\",\n icon: \"Fork\",\n },\n\n {\n stem: \"gift\",\n icon: \"Gift\",\n },\n {\n stem: \"heart-filled\",\n icon: \"HeartFilled\",\n },\n {\n stem: \"heart\",\n icon: \"Heart\",\n },\n {\n stem: \"help-circle-filled\",\n icon: \"HelpCircleFilled\",\n },\n {\n stem: \"help-circle\",\n icon: \"HelpCircle\",\n },\n {\n stem: \"history\",\n icon: \"History\",\n },\n {\n stem: \"home\",\n icon: \"Home\",\n },\n {\n stem: \"hourglass\",\n icon: \"Hourglass\",\n },\n {\n stem: \"image-error\",\n icon: \"ImageError\",\n },\n {\n stem: \"image\",\n icon: \"Image\",\n },\n {\n stem: \"info-circle-filled\",\n icon: \"InfoCircleFilled\",\n },\n {\n stem: \"info-circle\",\n icon: \"InfoCircle\",\n },\n {\n stem: \"internet\",\n icon: \"Internet\",\n },\n {\n stem: \"jump\",\n icon: \"Jump\",\n },\n {\n stem: \"laptop\",\n icon: \"Laptop\",\n },\n {\n stem: \"layers\",\n icon: \"Layers\",\n },\n {\n stem: \"link-unlink\",\n icon: \"LinkUnlink\",\n },\n {\n stem: \"link\",\n icon: \"Link\",\n },\n {\n stem: \"location\",\n icon: \"Location\",\n },\n {\n stem: \"lock-off\",\n icon: \"LockOff\",\n },\n {\n stem: \"lock-on\",\n icon: \"LockOn\",\n },\n {\n stem: \"login\",\n icon: \"Login\",\n },\n {\n stem: \"logo-android\",\n icon: \"LogoAndroid\",\n },\n {\n stem: \"logo-apple-filled\",\n icon: \"LogoAppleFilled\",\n },\n {\n stem: \"logo-apple\",\n icon: \"LogoApple\",\n },\n {\n stem: \"logo-chrome-filled\",\n icon: \"LogoChromeFilled\",\n },\n {\n stem: \"logo-chrome\",\n icon: \"LogoChrome\",\n },\n {\n stem: \"logo-codepen\",\n icon: \"LogoCodepen\",\n },\n {\n stem: \"logo-github-filled\",\n icon: \"LogoGithubFilled\",\n },\n {\n stem: \"logo-github\",\n icon: \"LogoGithub\",\n },\n {\n stem: \"logo-ie-filled\",\n icon: \"LogoIeFilled\",\n },\n {\n stem: \"logo-ie\",\n icon: \"LogoIe\",\n },\n {\n stem: \"logo-qq\",\n icon: \"LogoQq\",\n },\n {\n stem: \"logo-wechat\",\n icon: \"LogoWechat\",\n },\n {\n stem: \"logo-wecom\",\n icon: \"LogoWecom\",\n },\n {\n stem: \"logo-windows-filled\",\n icon: \"LogoWindowsFilled\",\n },\n {\n stem: \"logo-windows\",\n icon: \"LogoWindows\",\n },\n {\n stem: \"logout\",\n icon: \"Logout\",\n },\n {\n stem: \"mail\",\n icon: \"Mail\",\n },\n {\n stem: \"menu-fold\",\n icon: \"MenuFold\",\n },\n {\n stem: \"menu-unfold\",\n icon: \"MenuUnfold\",\n },\n\n {\n stem: \"mirror\",\n icon: \"Mirror\",\n },\n {\n stem: \"mobile-vibrate\",\n icon: \"MobileVibrate\",\n },\n {\n stem: \"mobile\",\n icon: \"Mobile\",\n },\n {\n stem: \"money-circle\",\n icon: \"MoneyCircle\",\n },\n {\n stem: \"notification-filled\",\n icon: \"NotificationFilled\",\n },\n {\n stem: \"notification\",\n icon: \"Notification\",\n },\n {\n stem: \"photo\",\n icon: \"Photo\",\n },\n {\n stem: \"pin-filled\",\n icon: \"PinFilled\",\n },\n {\n stem: \"pin\",\n icon: \"Pin\",\n },\n {\n stem: \"play-circle-filled\",\n icon: \"PlayCircleFilled\",\n },\n {\n stem: \"play-circle-stroke\",\n icon: \"PlayCircleStroke\",\n },\n {\n stem: \"play-circle\",\n icon: \"PlayCircle\",\n },\n {\n stem: \"play\",\n icon: \"Play\",\n },\n {\n stem: \"poweroff\",\n icon: \"Poweroff\",\n },\n {\n stem: \"precise-monitor\",\n icon: \"PreciseMonitor\",\n },\n {\n stem: \"previous\",\n icon: \"Previous\",\n },\n {\n stem: \"print\",\n icon: \"Print\",\n },\n {\n stem: \"qrcode\",\n icon: \"Qrcode\",\n },\n {\n stem: \"queue\",\n icon: \"Queue\",\n },\n {\n stem: \"rectangle\",\n icon: \"Rectangle\",\n },\n {\n stem: \"refresh\",\n icon: \"Refresh\",\n },\n {\n stem: \"relativity\",\n icon: \"Relativity\",\n },\n {\n stem: \"root-list\",\n icon: \"RootList\",\n },\n {\n stem: \"rotation\",\n icon: \"Rotation\",\n },\n {\n stem: \"scan\",\n icon: \"Scan\",\n },\n {\n stem: \"search\",\n icon: \"Search\",\n },\n {\n stem: \"secured\",\n icon: \"Secured\",\n },\n {\n stem: \"server\",\n icon: \"Server\",\n },\n {\n stem: \"service\",\n icon: \"Service\",\n },\n {\n stem: \"setting\",\n icon: \"Setting\",\n },\n {\n stem: \"share\",\n icon: \"Share\",\n },\n {\n stem: \"shop\",\n icon: \"Shop\",\n },\n {\n stem: \"slash\",\n icon: \"Slash\",\n },\n {\n stem: \"sound\",\n icon: \"Sound\",\n },\n {\n stem: \"star-filled\",\n icon: \"StarFilled\",\n },\n {\n stem: \"star\",\n icon: \"Star\",\n },\n {\n stem: \"thumb-down\",\n icon: \"ThumbDown\",\n },\n {\n stem: \"thumb-up\",\n icon: \"ThumbUp\",\n },\n {\n stem: \"time-filled\",\n icon: \"TimeFilled\",\n },\n {\n stem: \"time\",\n icon: \"Time\",\n },\n {\n stem: \"tips\",\n icon: \"Tips\",\n },\n {\n stem: \"tools\",\n icon: \"Tools\",\n },\n {\n stem: \"unfold-less\",\n icon: \"UnfoldLess\",\n },\n {\n stem: \"unfold-more\",\n icon: \"UnfoldMore\",\n },\n {\n stem: \"upload\",\n icon: \"Upload\",\n },\n {\n stem: \"usb\",\n icon: \"Usb\",\n },\n {\n stem: \"user-add\",\n icon: \"UserAdd\",\n },\n {\n stem: \"user-avatar\",\n icon: \"UserAvatar\",\n },\n {\n stem: \"user-circle\",\n icon: \"UserCircle\",\n },\n {\n stem: \"user-clear\",\n icon: \"UserClear\",\n },\n {\n stem: \"user-talk\",\n icon: \"UserTalk\",\n },\n {\n stem: \"user\",\n icon: \"User\",\n },\n {\n stem: \"usergroup-add\",\n icon: \"UsergroupAdd\",\n },\n {\n stem: \"usergroup-clear\",\n icon: \"UsergroupClear\",\n },\n {\n stem: \"usergroup\",\n icon: \"Usergroup\",\n },\n {\n stem: \"video\",\n icon: \"Video\",\n },\n {\n stem: \"view-column\",\n icon: \"ViewColumn\",\n },\n {\n stem: \"view-list\",\n icon: \"ViewList\",\n },\n {\n stem: \"view-module\",\n icon: \"ViewModule\",\n },\n {\n stem: \"wallet\",\n icon: \"Wallet\",\n },\n {\n stem: \"wifi\",\n icon: \"Wifi\",\n },\n {\n stem: \"zoom-in\",\n icon: \"ZoomIn\",\n },\n {\n stem: \"zoom-out\",\n icon: \"ZoomOut\",\n },\n];\n","<template>\n <GLayout :title=\"title\">\n <GCommonHeader>\n <template #left-operations>\n <t-button theme=\"primary\" @click=\"handleAddMenuGroup\">添加组</t-button>\n <t-button theme=\"default\" @click=\"resetMenu\">恢复默认</t-button>\n </template>\n <template #right-operations>\n <t-button theme=\"primary\" @click=\"saveMenuResult\">保存方案</t-button>\n </template>\n </GCommonHeader>\n\n <GCommonTable\n ref=\"commonTable\"\n id=\"menuTable\"\n :commonTableProps=\"{\n size: 'small',\n ref: 'menuTable',\n rowKey: 'name',\n data: menuData,\n columns: columns,\n dragSort: 'row-handler',\n beforeDragSort: handleBeforeDragSort,\n onAbnormalDragSort: onAbnormalDragSort,\n tree: {\n childrenKey: 'children',\n defaultExpandAll: true,\n treeNodeColumnIndex: 1,\n indent: '20',\n },\n }\"\n >\n <!-- 自定义折叠图标 -->\n <template #treeExpandAndFoldIcon=\"{ type }\">\n <t-icon v-if=\"type === 'expand'\" name=\"chevron-right\" />\n <t-icon v-else name=\"chevron-up\" />\n </template>\n\n <!-- 自定义拖拽 -->\n <template #drag>\n <t-icon name=\"move\" />\n </template>\n\n <template #title=\"{ row }\">\n <span class=\"menu-title\">\n <span class=\"title\" :class=\"row.isGroup ? 'title-bold' : 'title-child'\">\n <template v-if=\"row.level == 1 && row.isGroup\">\n <t-icon v-if=\"row.icon\" class=\"title-icon\" :name=\"row.icon\" size=\"large\" />\n <t-icon v-else class=\"title-icon\" name=\"app\" size=\"large\" />\n </template>\n {{ row.title }}\n </span>\n <span class=\"counts\" v-if=\"row.isGroup\">{{ row.children.length }}项</span>\n </span>\n </template>\n\n <template #operations=\"{ row }\">\n <div class=\"operations\">\n <t-button variant=\"text\" theme=\"primary\" @click=\"handleEditMenu(row)\"> 编辑修改 </t-button>\n <t-button variant=\"text\" theme=\"primary\" :disabled=\"row.isGroup\" @click=\"handleMoveItemTo(row)\">\n {{ row.isGroup ? \"-----\" : \"转移至\" }}\n </t-button>\n <t-button variant=\"text\" theme=\"primary\" @click=\"handleMoveSort(row, 'up')\"> 上移 </t-button>\n <t-button variant=\"text\" theme=\"primary\" @click=\"handleMoveSort(row, 'down')\"> 下移 </t-button>\n <t-button variant=\"text\" theme=\"primary\" :disabled=\"!row.isGroup\" @click=\"handleRemoveGroup(row)\">\n {{ row.isGroup ? \"撤销组\" : \"-----\" }}\n </t-button>\n </div>\n </template>\n </GCommonTable>\n\n <GCommonDialog\n :commonDialogProps=\"{\n visible: isAddOrEditDialogShow,\n onClose: handleCloseDialog,\n header: currentDialogTitle,\n footer: false,\n }\"\n >\n <GCommonForm\n ref=\"menuFormRef\"\n :commonFormProps=\"{\n ref: 'form',\n rules: menuFormRules,\n data: menuForm,\n labelAlign: 'right',\n labelWidth: '110px',\n }\"\n >\n <template\n #body\n v-if=\"\n currentDialogType == 'addGroup' ||\n currentDialogType == 'editGroup' ||\n currentDialogType == 'editItem'\n \"\n >\n <t-form-item name=\"title\" label=\"组名称\" :requiredMark=\"true\">\n <t-input style=\"width: 360px\" v-model=\"menuForm.title\" placeholder=\"请输入组名称\"></t-input>\n </t-form-item>\n\n <t-form-item name=\"name\" label=\"名称标识\" :requiredMark=\"true\">\n <t-input\n style=\"width: 360px\"\n v-model=\"menuForm.name\"\n placeholder=\"请输入名称标识,例如 SYSTEM\"\n ></t-input>\n </t-form-item>\n\n <t-form-item name=\"icon\" label=\"图标标识\" :requiredMark=\"true\" v-if=\"menuForm.level == 1\">\n <t-select\n v-model=\"menuForm.icon\"\n placeholder=\"请选择图标标识\"\n :style=\"{ width: '350px' }\"\n :popup-props=\"{ overlayStyle: { width: '350px' } }\"\n :clearable=\"true\"\n >\n <t-option v-for=\"item in icon\" :value=\"item.stem\" :key=\"item.stem\" class=\"overlay-options\">\n <span id=\"icon-option\">\n <t-icon :name=\"item.stem\" size=\"large\" />\n </span>\n </t-option>\n\n <div slot=\"valueDisplay\">\n <span v-if=\"menuForm.icon\">\n <t-icon :name=\"menuForm.icon\" :style=\"{ marginRight: '8px' }\" />{{ menuForm.icon }}\n </span>\n <span v-else style=\"color: #9f9f9f\">请选择图标标识</span>\n </div>\n </t-select>\n </t-form-item>\n\n <t-form-item name=\"parent\" label=\"父菜单\" :requiredMark=\"true\" v-if=\"!menuForm.isGroup\">\n <t-select :options=\"menuParentKeyOptions\" v-model=\"menuForm.parent\" />\n </t-form-item>\n\n <t-form-item\n label=\"分组\"\n v-if=\"!handleFilterMenuGroup(menuForm.children).length && menuForm.level == 1\"\n >\n <t-button variant=\"outline\" @click=\"handleAddMenuGroupChildrenItem\">添加分组</t-button>\n </t-form-item>\n\n <t-form-item\n v-for=\"(item, index) in handleFilterMenuGroup(menuForm.children)\"\n :key=\"`group` + index\"\n :label=\"index == 0 ? '分组' : ' '\"\n >\n <t-input-group style=\"width: 350px\">\n <t-input\n style=\"width: 120px\"\n placeholder=\"请输入分组名称 \"\n :value=\"item.title\"\n @change=\"\n handleUpdateFormValue(\n handleFilterMenuGroup(menuForm.children),\n `[${index}].title`,\n $event,\n )\n \"\n />\n <t-input\n style=\"width: 120px\"\n placeholder=\"请输入分组标识 \"\n :value=\"item.name\"\n @change=\"\n handleUpdateFormValue(\n handleFilterMenuGroup(menuForm.children),\n `[${index}].name`,\n $event,\n )\n \"\n />\n <t-button\n variant=\"outline\"\n theme=\"default\"\n @click.prevent=\"handleRemoveMenuGroupChildrenItem(item)\"\n >-\n </t-button>\n <t-button\n variant=\"outline\"\n theme=\"default\"\n v-if=\"index == handleFilterMenuGroup(menuForm.children).length - 1\"\n @click.prevent=\"handleAddMenuGroupChildrenItem\"\n >+\n </t-button>\n </t-input-group>\n </t-form-item>\n\n <template v-if=\"currentDialogType != 'addGroup'\">\n <t-form-item\n v-for=\"(item, index) in handleFilterMenuItem(menuForm.children)\"\n :key=\"`item` + index\"\n :label=\"index == 0 ? '子菜单项' : ' '\"\n >\n <t-input-group style=\"width: 350px\">\n <t-input\n placeholder=\"请输入子菜单名称 \"\n :value=\"item.title\"\n @change=\"\n handleUpdateFormValue(\n handleFilterMenuItem(menuForm.children),\n `[${index}].title`,\n $event,\n )\n \"\n />\n </t-input-group>\n </t-form-item>\n </template>\n </template>\n <template #body v-else-if=\"currentDialogType == 'moveItemTo'\">\n <t-form-item name=\"parent\" label=\"转移至\" :requiredMark=\"true\" v-if=\"!menuForm.isGroup\">\n <t-select :options=\"menuParentKeyOptions\" v-model=\"menuForm.parent\" />\n </t-form-item>\n </template>\n <template #footer>\n <t-button theme=\"default\" @click=\"handleCloseDialog\">取消</t-button>\n <t-button @click=\"handleSaveMenuGroupForm\">确定</t-button>\n </template>\n </GCommonForm>\n </GCommonDialog>\n </GLayout>\n</template>\n\n<script>\nimport GLayout from \"../../components/GLayout/index.vue\";\nimport GCommonHeader from \"../../components/common/GCommonHeader/index.vue\";\nimport GCommonDialog from \"../../components/common/GCommonDialog/index.vue\";\nimport GCommonForm from \"../../components/common/GCommonForm/index.vue\";\nimport GCommonTable from \"../../components/common/GCommonTable/index.vue\";\n\nimport { cloneDeep, set } from \"lodash-es\";\nimport { PREFIX } from \"../../config\";\nimport { flattenMenuData, generateMenuTree } from \"../../utils\";\n\nimport { DialogPlugin, MessagePlugin } from \"tdesign-vue\";\nimport icon from \"./icon\";\nimport http from \"../../api\";\n\nexport default {\n name: \"GMenuManage\",\n components: {\n GLayout,\n GCommonHeader,\n GCommonDialog,\n GCommonForm,\n GCommonTable,\n },\n\n data() {\n return {\n PREFIX,\n icon,\n\n title: \"菜单管理\",\n isAddOrEditDialogShow: false,\n currentDialogType: \"\",\n columns: [\n {\n // 列拖拽排序必要参数\n colKey: \"drag\",\n title: \"排序\",\n cell: \"drag\",\n width: 50,\n },\n {\n title: \"菜单名称\",\n colKey: \"title\",\n cell: \"title\",\n width: \"60%\",\n },\n {\n title: \"操作\",\n colKey: \"operations\",\n cell: \"operations\",\n },\n ],\n\n menuData: this.$store.getters[\"setting/userMenu\"],\n edificeKey: this.$store.getters[\"setting/userEdificeKey\"],\n menuForm: {\n edificeKey: \"\",\n name: \"\",\n title: \"\",\n icon: null,\n path: \"\",\n level: 1,\n isGroup: true,\n children: [],\n },\n\n menuFormRules: {\n title: [\n {\n required: true,\n message: \"菜单名称必填\",\n type: \"error\",\n trigger: \"blur\",\n },\n ],\n name: [\n {\n required: true,\n message: \"名称必填\",\n type: \"error\",\n trigger: \"blur\",\n },\n ],\n icon: [\n {\n required: true,\n message: \"图标标识必选\",\n type: \"error\",\n trigger: \"change\",\n },\n ],\n },\n };\n },\n computed: {\n menuTable() {\n return this.$refs.commonTable.$refs.menuTable;\n },\n menuTreeNodeData() {\n return this.menuTable.getTreeNode();\n },\n flatMenuData() {\n return flattenMenuData(this.menuTreeNodeData);\n },\n currentDialogTitle() {\n switch (this.currentDialogType) {\n case \"addGroup\": {\n return \"添加组\";\n }\n\n case \"editGroup\": {\n return \"编辑组\";\n }\n\n case \"editItem\": {\n return \"编辑修改菜单\";\n }\n\n case \"moveItemTo\": {\n return \"转移菜单至\";\n }\n\n default: {\n return \"\";\n }\n }\n },\n menuParentKeyOptions() {\n return this.flatMenuData\n .filter((item) => !item.url)\n .map((item) => ({\n label: item.title,\n value: item.name,\n }));\n },\n },\n\n methods: {\n appendNewTabMenuItem() {\n const { fullPath, query } = this.$route;\n const path = decodeURIComponent(fullPath);\n\n this.$store.dispatch(\"setting/appendTabMenuItem\", {\n title: this.title,\n path,\n query,\n });\n },\n\n // 筛选出子菜单中纯菜单项\n handleFilterMenuItem(children) {\n return children.filter((item) => !item.isGroup);\n },\n // 筛选出子菜单中的分组\n handleFilterMenuGroup(children) {\n return children.filter((item) => item.isGroup);\n },\n\n handleAddMenuGroup() {\n this.isAddOrEditDialogShow = true;\n this.currentDialogType = \"addGroup\";\n },\n handleUpdateFormValue(target, path, value) {\n set(target, path, value);\n this.$forceUpdate();\n },\n handleEditMenu(row) {\n this.menuForm = cloneDeep(row, {});\n this.isAddOrEditDialogShow = true;\n\n if (row.isGroup) {\n this.currentDialogType = \"editGroup\";\n } else {\n this.currentDialogType = \"editItem\";\n }\n },\n handleMoveItemTo(row) {\n this.menuForm = cloneDeep(row, {});\n this.isAddOrEditDialogShow = true;\n this.currentDialogType = \"moveItemTo\";\n },\n handleCloseDialog() {\n this.isAddOrEditDialogShow = false;\n this.resetMenuGroupForm();\n },\n resetMenuGroupForm() {\n this.menuForm = {\n edificeKey: this.edificeKey,\n name: \"\",\n title: \"\",\n icon: null,\n path: \"\",\n level: 1,\n isGroup: true,\n children: [],\n };\n },\n handleAddMenuGroupChildrenItem() {\n if (this.menuForm.level == 1) {\n this.menuForm.children.push({\n edificeKey: this.edificeKey,\n level: 2,\n icon: null,\n title: \"\",\n name: \"\",\n parent: this.menuForm.name,\n path: \"\",\n isGroup: true,\n children: [],\n });\n }\n this.$forceUpdate();\n },\n handleRemoveMenuGroupChildrenItem(item) {\n const index = this.menuForm.children.indexOf(item);\n if (index != -1) {\n this.menuForm.children.splice(index, 1);\n }\n this.$forceUpdate();\n },\n handleMoveItemAction(currentName, targetParentName) {\n // 获取原父菜单名称\n const { parent } = this.flatMenuData.find((item) => item.name == currentName);\n\n if (targetParentName !== parent) {\n this.menuForm.parent = targetParentName;\n this.menuTable.remove(currentName);\n this.menuTable.appendTo(targetParentName, this.menuForm);\n }\n },\n handleSaveMenuGroupForm() {\n this.$refs.menuFormRef.$refs.form.validate().then((result) => {\n if (!Object.keys(result).length) {\n if (this.currentDialogType == \"addGroup\") {\n this.menuForm.edificeKey = this.edificeKey;\n this.menuTable.appendTo(\"\", this.menuForm);\n\n MessagePlugin.success(\"保存新增组成功!\");\n } else if (this.currentDialogType == \"editGroup\" || this.currentDialogType == \"editItem\") {\n this.menuTable.setData(this.menuForm.name, this.menuForm);\n\n if (this.menuForm.isGroup) {\n this.menuForm.children.forEach((item) => {\n this.menuTable.setData(item.name, item);\n });\n\n MessagePlugin.success(\"编辑组成功!\");\n } else {\n this.handleMoveItemAction(this.menuForm.name, this.menuForm.parent);\n\n MessagePlugin.success(\"编辑菜单成功!\");\n }\n } else if (this.currentDialogType == \"moveItemTo\") {\n this.handleMoveItemAction(this.menuForm.name, this.menuForm.parent);\n MessagePlugin.success(\"转移组成功!\");\n }\n\n this.updateMenuTable();\n this.handleCloseDialog();\n } else {\n const firstError = Object.values(result)[0]?.[0]?.message;\n MessagePlugin.warning(`${firstError}`);\n }\n });\n },\n handleMoveSort(row, sort) {\n const { parent } = this.menuTable.getData(row.name);\n if (parent) {\n const { children } = parent.row;\n const currentIndex = children.findIndex((item) => item.name == row.name);\n\n this.handleSortAction(children, sort, currentIndex);\n this.updateMenuTable();\n } else {\n const tempData = cloneDeep(this.menuTreeNodeData);\n const currentIndex = tempData.findIndex((item) => item.name == row.name);\n\n this.handleSortAction(tempData, sort, currentIndex);\n this.updateMenuTable(tempData);\n }\n },\n handleSortAction(data, sort, currentIndex) {\n switch (sort) {\n case \"up\": {\n if (currentIndex != 0) {\n [data[currentIndex - 1], data[currentIndex]] = [data[currentIndex], data[currentIndex - 1]];\n } else {\n MessagePlugin.info(\"该菜单项已经在该组的第一个了!\");\n }\n break;\n }\n\n case \"down\": {\n if (currentIndex != data.length - 1) {\n [data[currentIndex + 1], data[currentIndex]] = [data[currentIndex], data[currentIndex + 1]];\n } else {\n MessagePlugin.info(\"该菜单项已经在该组的最后一个了!\");\n }\n break;\n }\n }\n },\n handleRemoveGroup(row) {\n try {\n const dialogInstance = DialogPlugin.confirm({\n theme: \"info\",\n header: \"撤销组\",\n body: `确定要撤销${row.title}吗?`,\n onConfirm: () => {\n let tempChildrenArr = [];\n if (row.level == 1) {\n row.children.forEach((children) => {\n console.log(children);\n\n children.level = 1;\n children.parent = null;\n tempChildrenArr.push(children);\n });\n\n this.menuTable.remove(row.name);\n\n if (tempChildrenArr.length) {\n tempChildrenArr.forEach((children) => {\n this.menuTable.appendTo(\"\", children);\n });\n }\n } else if (row.level == 2) {\n const { parent } = row;\n console.log(parent);\n\n row.children.forEach((children) => {\n children.level = 2;\n children.parent = parent;\n tempChildrenArr.push(children);\n });\n\n this.menuTable.remove(row.name);\n this.updateMenuTable();\n tempChildrenArr.forEach((children) => {\n this.menuTable.appendTo(parent, children);\n });\n }\n\n dialogInstance.destroy();\n MessagePlugin.success(\"撤销组成功\");\n },\n });\n } catch (e) {\n console.error(e);\n }\n\n this.updateMenuTable();\n },\n updateMenuTable(data = this.menuTreeNodeData) {\n this.menuTable.resetData(data);\n },\n resetMenu() {\n this.menuTable.resetData(this.$store.state.setting.config.userMenu);\n MessagePlugin.success(\"恢复默认菜单方案成功!\");\n },\n saveMenuResult() {\n const flattenMenu = flattenMenuData(this.menuTreeNodeData);\n\n try {\n http.put(\"/restapi/menus\", { menus: [...flattenMenu] }).then((res) => {\n if (res.state == 200) {\n this.$store.commit(\"setting/setMenuConfig\", this.menuTreeNodeData);\n this.menuData = this.$store.getters[\"setting/userMenu\"];\n\n MessagePlugin.success(\"保存菜单方案成功!\");\n }\n });\n } catch (e) {\n console.error(e);\n }\n },\n\n handleBeforeDragSort(context) {\n const { current, target, currentIndex, targetIndex } = context;\n const currentLevel = current.level;\n const currentParent = current.parent;\n const targetLevel = target.level;\n const targetParent = target.parent;\n\n // 拖拽方向:true 为下移,false 为上移\n const dragDirection = currentIndex < targetIndex;\n\n if (currentLevel == targetLevel) {\n // 同级同一个父菜单\n if (currentParent == targetParent) {\n return true;\n }\n // 同级不同父菜单\n else {\n MessagePlugin.info(\"不同父菜单的菜单项,请使用转移至功能转移菜单\");\n }\n } else {\n // MessagePlugin.error(\"不同层级的菜单项,不允许调整顺序!\")\n MessagePlugin.info(\"不同层级的菜单项,请使用转移至功能转移菜单\");\n }\n this.updateMenuTable();\n return false;\n },\n onAbnormalDragSort(context) {\n if (context.code === 1001) {\n MessagePlugin.error(\"不同层级的菜单项,不允许调整顺序\");\n }\n },\n },\n mounted() {\n this.appendNewTabMenuItem();\n },\n};\n</script>\n\n<style lang=\"scss\">\n#menuTable {\n .t-table__tree-col {\n justify-content: space-between;\n }\n\n .t-table__tree-op-icon {\n order: 999;\n }\n\n .icon {\n text-align: center;\n }\n\n .menu-title {\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n width: 96%;\n\n .title {\n display: flex;\n align-items: center;\n\n .title-icon {\n font-size: 23px !important;\n margin-right: 5px;\n }\n }\n\n .title-bold {\n font-weight: 600;\n }\n\n .title-child {\n color: var(--td-text-color-secondary);\n font-weight: 600;\n }\n\n .title-child::before {\n content: \"·\";\n margin: 0 5px;\n }\n\n .counts {\n color: var(--td-text-color-secondary);\n }\n }\n}\n\n.overlay-options {\n display: inline-block !important;\n font-size: 20px;\n}\n</style>\n","import \"./style/index.scss\";\nimport GView from \"./components\";\nimport stores from \"./store\";\n\nimport http from \"./api\";\nimport * as utils from \"./utils\";\nimport * as config from \"./config\";\n\nfunction install(Vue, userConfig?: any) {\n // 注册GView组件\n Vue.component(\"GView\", GView);\n\n // 注册Vuex\n Object.keys(stores).forEach((key) => {\n userConfig.store.registerModule(key, stores[key]);\n });\n\n // 载入router\n http.initRouter(userConfig.router);\n}\n\n/* istanbul ignore if */\nif (typeof window !== \"undefined\" && window.Vue) {\n install(window.Vue);\n}\nexport * from \"./components\";\nexport * from \"./views\";\nexport { http, utils, config };\nexport default {\n install,\n};\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","match","version","check","it","Math","global","globalThis","window","self","this","Function","fails","exec","error","descriptors","Object","defineProperty","get","functionBindNative","test","bind","hasOwnProperty","call","prototype","functionCall","NATIVE_BIND","apply","arguments","$propertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","f","V","descriptor","enumerable","createPropertyDescriptor","bitmap","value","configurable","writable","FunctionPrototype","uncurryThisWithBind","functionUncurryThis","fn","toString","uncurryThis","stringSlice","slice","classofRaw","$Object","split","indexedObject","classof","isNullOrUndefined","$TypeError","TypeError","requireObjectCoercible","toIndexedObject","IndexedObject","documentAll","all","documentAll_1","IS_HTMLDDA","undefined","$documentAll","isCallable","argument","isObject","aFunction","getBuiltIn","namespace","method","length","objectIsPrototypeOf","isPrototypeOf","engineUserAgent","process","Deno","versions","v8","userAgent","engineV8Version","symbolConstructorDetection","getOwnPropertySymbols","symbol","Symbol","String","sham","V8_VERSION","useSymbolAsUid","NATIVE_SYMBOL","iterator","isSymbol","USE_SYMBOL_AS_UID","$Symbol","$String","aCallable","tryToString","defineGlobalProperty","key","SHARED","sharedStore","module","exports","store","push","mode","copyright","license","source","toObject","hasOwnProperty_1","hasOwn","id","postfix","random","uid","WellKnownSymbolsStore","shared","symbolFor","createWellKnownSymbol","withoutSetter","wellKnownSymbol","name","description","TO_PRIMITIVE","toPrimitive","input","pref","func","result","exoticToPrim","val","valueOf","ordinaryToPrimitive","toPropertyKey","EXISTS","ie8DomDefine","DESCRIPTORS","a","$getOwnPropertyDescriptor","O","P","IE8_DOM_DEFINE","propertyIsEnumerableModule","v8PrototypeDefineBug","anObject","$defineProperty","ENUMERABLE","CONFIGURABLE","WRITABLE","V8_PROTOTYPE_DEFINE_BUG","Attributes","current","createNonEnumerableProperty","object","definePropertyModule","getDescriptor","functionName","PROPER","functionToString","inspectSource","set","has","WeakMap","weakMapBasicDetection","keys","hiddenKeys","OBJECT_ALREADY_INITIALIZED","NATIVE_WEAK_MAP","state","metadata","facade","STATE","sharedKey","internalState","enforce","getterFor","TYPE","CONFIGURABLE_FUNCTION_NAME","require$$0","enforceInternalState","InternalStateModule","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","options","replace","getter","setter","arity","constructor","join","defineBuiltIn","simple","unsafe","nonConfigurable","nonWritable","ceil","floor","mathTrunc","trunc","x","n","toIntegerOrInfinity","number","max","min","lengthOfArrayLike","obj","createMethod","IS_INCLUDES","$this","el","fromIndex","index","integer","toAbsoluteIndex","indexOf","includes","concat","getOwnPropertyNames","names","i","internalObjectKeys","ownKeys","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","copyConstructorProperties","target","exceptions","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","isForced_1","_export","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","isArray","Array","arraySetLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","SILENT_ON_NON_WRITABLE_LENGTH","$","proto","item","len","argCount","setArrayLength","NProgress","configure","easing","speed","showSpinner","trickle","trickleSpeed","minimum","PREFIX","LOCAL_CONFIG","LOCAL_THEME_CONFIG","LOCAL_MENU_CONFIG","LOCAL_USER","LOCAL_TAB_MENU","LOCAL_INIT_TAB_MENU_LIST","LOCAL_DATA_ID","LOCAL_SESSION_ID","WS_SERVICE","location","origin","protocol","INIT_WS_MODEL","subcmd","dataId","cmd","args","response","THEME_CONFIG","brandTheme","displayMode","COLOR_TOKEN","DEFAULT","CYAN","GREEN","ORANGE","RED","PINK","PURPLE","YELLOW","createContextEvaluator","eval_string","context","template","map","createContextFunctionTemplate","functor","evalContext","text","evaluator","vFun","_basePath","path","getProperty","defaultValue","reduce","o","k","setProperty","_","assign","deepClone","sourceObj","targetObj","cloneObj","generateMenuTree","parent","level","filter","children","url","alias","title","isGroup","flattenMenuData","tree","flatMenu","flat","menuTree","parentName","forEach","edificeKey","icon","sort","getHomeUrl","menus","menu","childrenPath","getUrlQuery","queryObj","queryItem","initTableColumns","tableColumns","tableColumnsResult","colKey","fixed","attrs","minWidth","column","idx","arr","tempColumnResult","keyName","cell","columnType","width","convertTableColumnWeight","weight","ellipsis","props","theme","showArrow","placement","maxWidth","buttonLength","buttons","columnAmount","initTreeSelectorData","config","list","valueName","titleName","parentKey","parentKeyName","selector","res","parentObj","label","getBrandColor","colorList","toUpperCase","toUnderline","isVoid","trim","nanoid","customAlphabet","script$z","computed","tabMenuList","$store","setting","homeUrl","getters","activeItemPath","methods","handleTabMenuClick","visible","ctx","trigger","handleChangeCurrentTab","$router","query","handleRemoveCurrentTab","nextTabMenuItem","dispatch","itemIdx","decodeURIComponent","$route","fullPath","handleTabRefresh","$nextTick","handleTabCloseAhead","handleTabOperationEffect","handleTabCloseBehind","handleTabCloseOther","currentPath","currentIdx","findIndex","nextItem","script","components","GLayoutHeaderTab","userRealName","toggleSideMenuCollapsed","commit","toggleSettingPanel","handleLogout","script$w","default","background","anInstance","Prototype","objectSetPrototypeOf","setPrototypeOf","CORRECT_SETTER","aPossiblePrototype","__proto__","inheritIfRequired","dummy","Wrapper","NewTarget","NewTargetPrototype","toStringTagSupport","TO_STRING_TAG","CORRECT_ARGUMENTS","TO_STRING_TAG_SUPPORT","tag","tryGet","callee","normalizeStringArgument","$default","domExceptionConstants","IndexSizeError","s","c","m","DOMStringSizeError","HierarchyRequestError","WrongDocumentError","InvalidCharacterError","NoDataAllowedError","NoModificationAllowedError","NotFoundError","NotSupportedError","InUseAttributeError","InvalidStateError","SyntaxError","InvalidModificationError","NamespaceError","InvalidAccessError","ValidationError","TypeMismatchError","SecurityError","NetworkError","AbortError","URLMismatchError","QuotaExceededError","TimeoutError","InvalidNodeTypeError","DataCloneError","$Error","Error","TEST","stack","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","errorStackClear","dropEntries","prepareStackTrace","DOM_EXCEPTION","NativeDOMException","$DOMException","DOMExceptionPrototype","argumentsLength","message","that","clearErrorStack","ERROR_HAS_STACK","DOM_EXCEPTION_HAS_STACK","BUGGY_DESCRIPTOR","FORCED_CONSTRUCTOR","DOMException","PolyfilledDOMException","PolyfilledDOMExceptionPrototype","DOMExceptionConstants","constant","constantName","COLOR_OPTIONS","MODE_OPTIONS","ColorContainer","themeData","themeConfig","isSettingPanelShow","watch","handler","deep","GLayoutHeader","GLayoutContent","GLayoutSetting","GLayoutSideMenu","GLayoutSideMenuContent","navData","menuList","getMenuList","handleMenuItemClick","menuCollapsed","isSideBarCollapse","menuActivePath","menuDefaultExpanded","currentParent","parentMenu","childrenMenu","toMenuManage","isUserLogin","mounted","modelValue","required","originValue","Number","Boolean","placeholder","disabled","inputType","handleChange","$emit","handleBlur","beforeDestroy","_typeof","_toPropertyKey","arg","hint","prim","_defineProperty","loadNanoId","localSessionId","sessionStorage","getItem","newSessionId","setItem","http","sessionId","service","axios","create","router","interceptors","request","use","userToken","JSON","parse","localStorage","token","tokenExpiredTime","lang","userInfo","language","headers","start","Promise","reject","done","device","uuid","async","MessagePlugin","params","_object","post","put","delete","initRouter","timeout","withCredentials","viewApiUrl","getOneView","getViewData","targetViewName","size","multiple","queryProps","viewName","rest","immediate","listData","propsModel","tempModel","getSelectData","dateTimeValue","itemType","dayjs","format","script$m","GCommonHeader","GFormInput","GFormSelect","GFormSelectDateTime","GHeaderUpload","uploadData","uploadApi","handleUploadSuccess","event","success","handleActiveFile","console","log","fileUrl","boardName","buttonId","fileUrls","then","handleUploadError","headerInfo","timer","filterForm","headerCommonBtns","button","action","headerUploadBtns","headerSearchBar","searchBar","headerFilters","filters","clearTimeout","setTimeout","handleFilterChange","handleHeaderButtonClick","commonTableProps","selectList","treeOptions","treeData","cascaderOptions","fileName","tips","GCommonTable","GFormLabel","GFormCheckBox","GFormSwitch","GFormRadio","GFormTreeCheckBox","GFormCascader","GFormUpload","col","row","formModel","formItems","handleAfterUpdateValue","$forceUpdate","handleAfterValueBlur","newValue","VueQr","boardInfo","tableData","paginationProps","isReload","selectedRowKeys","tablePagination","showJumper","rowKey","columns","handleSelectChange","selectedRowData","returnValue","Mustache","render","returnEnumsValue","enums","targetArr","element","shift","returnDateValue","handleFilterColumnBtns","columnBtns","v","showIf","evalResult","e","warn","handleTableButtonClick","handleTableFormChange","model","tempPagination","page","pageSize","count","total","totalCount","onChange","pageInfo","commonFormProps","blockType","blockId","updateId","handleBlockShowFlag","$refs","__vue__","blockShowFlag","matches","nextElementSibling","GFormEditor","quillEditor","handleEditorChange","content","html","formWhiteList","disableFlag","handleAfterUpload","initEmptyFormItems","handleBeforeDestroyFormItem","handleItemShowIf","form","handleItemDisableIf","disableIf","GCommonForm","GFormBlock","GFormItem","formData","formRules","formOkButton","okButton","formCancelButton","cancelButton","initFormRules","currentFormItems","commonForm","$children","$el","classList","contains","tempRules","itemTempRules","validator","validate","fields","handleButtonClick","firstError","values","warning","formItem","GTemplate","resolve","index$1","d","tabs","currentTabTitle","handleTabChange","newTabTitle","handleCloseDialog","history","go","commonDialogProps","script$4","GCommonDialog","dialogViewInfo","dialogFormModel","isVisible","viewInfo","viewBoard","viewProps","dialogWidth","boardType","dialogHeaderName","dialogViewName","view","dialogProps","handleDialogChange","boards","getViewInfo","GHeader","GTable","GForm","GTab","GDialog","board","headerFilterProps","tableSelectedData","tablePaginationProps","pageCount","isDialogVisible","header","getTemplateData","handleAction","tempProps","confirmMessage","dialogInstance","DialogPlugin","confirm","body","onConfirm","handleConfirmForm","destroy","onCancel","info","handleBatchAction","link","open","href","downloadUrl","he","decode","downloadEl","display","setAttribute","click","handleHeaderFilterChange","filterProps","handleReturnSelectedKey","handleSetPaginationProps","batchProps","handleTableFormConfirm","confirmProps","handleCloseDialogEvent","handleConfirmAndClose","addEventListener","updatedDataId","detail","script$2","viewBoards","isLoading","isLoadingDelay","appendNewTabMenuItem","GLayout","GTemplateView","isGlobalLoaded","handleReturnTitle","handleReload","actions","initSocket","rootState","isSocketLink","isSocketFirst","socket","WebSocket","onopen","socketInterval","setInterval","send","stringify","onclose","isSocketReset","socketTimeout","dispatchEvent","CustomEvent","onerror","onmessage","user","sendRegisterMessage","sendUnregisterMessage","stores","namespaced","menuConfig","realName","userPermissions","userMenu","initTabMenuList","userEdificeKey","matchMedia","setUserLoginStatus","status","setGlobalLoadingStatus","toggleSideBarCollapse","setInitTabMenuList","setTabMenuList","setSettingConfig","configKey","setThemeSettingConfig","setMenuConfig","reloadGlobal","initSettingConfig","userLoadInit","userLogout","removeItem","clear","loadLocalTheme","changeTheme","changeMode","isDarkMode","documentElement","changeBrandTheme","updateMenuConfig","initTabMenu","homeTabMenuItem","isHome","appendTabMenuItem","newItem","find","subtractCurrentTabMenuItem","subtractTabMenuItemBehind","subtractTabMenuItemAhead","subtractTabMenuItemOther","tempItem","clearTabMenuItem","getPropsByPropsKey","propsKeys","propsKey","mutations","setSource","initSource","stem","isAddOrEditDialogShow","currentDialogType","menuData","menuForm","menuFormRules","menuTable","commonTable","menuTreeNodeData","getTreeNode","flatMenuData","currentDialogTitle","menuParentKeyOptions","handleFilterMenuItem","handleFilterMenuGroup","handleAddMenuGroup","handleUpdateFormValue","handleEditMenu","cloneDeep","handleMoveItemTo","resetMenuGroupForm","handleAddMenuGroupChildrenItem","handleRemoveMenuGroupChildrenItem","splice","handleMoveItemAction","currentName","targetParentName","remove","appendTo","handleSaveMenuGroupForm","menuFormRef","setData","updateMenuTable","handleMoveSort","getData","currentIndex","handleSortAction","tempData","handleRemoveGroup","tempChildrenArr","resetData","resetMenu","saveMenuResult","flattenMenu","handleBeforeDragSort","targetIndex","currentLevel","targetLevel","targetParent","onAbnormalDragSort","code","install","Vue","userConfig","component","GView","registerModule"],"mappings":"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"}