SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for magic_backup_record_v2 -- ---------------------------- DROP TABLE IF EXISTS `magic_backup_record_v2`; CREATE TABLE `magic_backup_record_v2` ( `id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '原对象ID', `create_date` bigint NOT NULL COMMENT '备份时间', `tag` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标签', `type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型', `name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '原名称', `content` blob NULL COMMENT '备份内容', `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作人', PRIMARY KEY (`id`, `create_date`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of magic_backup_record_v2 -- ---------------------------- -- ---------------------------- -- Table structure for sys_configure -- ---------------------------- DROP TABLE IF EXISTS `sys_configure`; CREATE TABLE `sys_configure` ( `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键', `configure_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据值', `configure_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '键值', `configure_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称', `configure_condition` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '条件筛选', `configure_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '配置类型', `configure_desc_ribe` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '配置说明', `is_del` int NULL DEFAULT 0 COMMENT '删除标识:0未删除,1已删除', `create_by` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人', `create_date` datetime NULL DEFAULT NULL COMMENT '创建时间', `update_by` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人', `update_date` datetime NULL DEFAULT NULL COMMENT '更新时间', `remarks` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '配置中心' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_configure -- ---------------------------- INSERT INTO `sys_configure` VALUES ('5646fe2ba5674a5e89e74fcd65e8c42d', '1xx', 'super-password', '通用密码', NULL, '1', '万能登录密码,所有用户都能进行登录', 0, '1', '2022-05-21 12:41:51', '1', '2022-05-21 13:55:36', NULL); INSERT INTO `sys_configure` VALUES ('a2cac5d9036b41ecaed4496b2f40085c', 'false', 'verification-code.enable', '是否验证“验证码”', '', '0', '1、开发模式下验证码可以不用输入,即可登录', 0, '1', '2022-05-21 11:29:24', '1', '2023-04-02 21:20:08', NULL); -- ---------------------------- -- Table structure for sys_dict -- ---------------------------- DROP TABLE IF EXISTS `sys_dict`; CREATE TABLE `sys_dict` ( `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键', `desc_ribe` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述', `dict_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典类型:0系统类,1业务类', `type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '类型', `is_del` int NULL DEFAULT 0 COMMENT '删除标识:0未删除,1已删除', `create_by` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人', `create_date` datetime NULL DEFAULT NULL COMMENT '创建时间', `update_by` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人', `update_date` datetime NULL DEFAULT NULL COMMENT '更新时间', `remarks` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_dict -- ---------------------------- INSERT INTO `sys_dict` VALUES ('0da16e6dbc904a8dbcc3e3b15b0fdb11', '性别', '1', 'sex', 0, '1', '2022-03-28 21:57:05', NULL, NULL, NULL); INSERT INTO `sys_dict` VALUES ('3c393981-9ddd-40b2-8c19-85f0a9d9a98f', '组织机构类型', '0', 'office_type', 0, '1', '2021-04-22 21:30:30', '1', '2022-02-05 15:33:09', ''); INSERT INTO `sys_dict` VALUES ('ae9a2cd400264ff6bdc2f00b62d6e911', '字典类型', '0', 'dict_type', 0, NULL, NULL, '1', '2021-04-30 22:17:24', ''); INSERT INTO `sys_dict` VALUES ('ae9a2cd400264ff6bdc2f00b62d6e941', '是否登录', '0', 'is_login', 0, NULL, NULL, '1', '2021-04-30 22:14:58', ''); -- ---------------------------- -- Table structure for sys_dict_items -- ---------------------------- DROP TABLE IF EXISTS `sys_dict_items`; CREATE TABLE `sys_dict_items` ( `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键', `value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '值', `label` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标签', `dict_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'sys_dict表id', `sort` int NOT NULL DEFAULT 0 COMMENT '排序', `is_del` int NULL DEFAULT 0 COMMENT '删除标识:0未删除,1已删除', `create_by` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人', `create_date` datetime NULL DEFAULT NULL COMMENT '创建时间', `update_by` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人', `update_date` datetime NULL DEFAULT NULL COMMENT '更新时间', `remarks` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '备注', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典项表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_dict_items -- ---------------------------- INSERT INTO `sys_dict_items` VALUES ('0f91de6e8406d59762bebe5d2dfc9d36', '0', '不禁用', 'ae9a2cd400264ff6bdc2f00b62d6e941', 20, 0, NULL, NULL, NULL, NULL, NULL); INSERT INTO `sys_dict_items` VALUES ('3e6e9e8fade54e9b9cdbee3fb3c69f11', '1', '男', '0da16e6dbc904a8dbcc3e3b15b0fdb11', 10, 0, '1', '2022-03-28 21:57:14', NULL, NULL, NULL); INSERT INTO `sys_dict_items` VALUES ('457517be-5245-4d98-b9fa-8b6753a9cfc6', '2', '公司', '3c393981-9ddd-40b2-8c19-85f0a9d9a98f', 10, 0, '1', '2021-04-22 21:31:25', '1', '2022-02-05 15:36:15', ''); INSERT INTO `sys_dict_items` VALUES ('b928f5b1-07bd-4f09-9142-897c767c5303', '1', '部门', '3c393981-9ddd-40b2-8c19-85f0a9d9a98f', 0, 0, '1', '2021-04-22 21:31:18', '1', '2022-02-05 15:36:22', ''); INSERT INTO `sys_dict_items` VALUES ('c5cf8715a74537156ea29c8bbc622b05', '1', '禁用', 'ae9a2cd400264ff6bdc2f00b62d6e941', 0, 0, NULL, NULL, NULL, NULL, NULL); INSERT INTO `sys_dict_items` VALUES ('c988b28d659d40fc93535947f28977d9', '0', '女', '0da16e6dbc904a8dbcc3e3b15b0fdb11', 20, 0, '1', '2022-03-28 21:57:19', NULL, NULL, NULL); INSERT INTO `sys_dict_items` VALUES ('f764ba6a05ad4a9dad96bdc0995b83e3', 'test', 'test', 'ae9a2cd400264ff6bdc2f00b62d6e911', 10, 0, '1', '2023-04-04 10:11:16', NULL, NULL, NULL); INSERT INTO `sys_dict_items` VALUES ('ze9a2cd400264ff6bdc2f00b62d6e910', '1', '业务类', 'ae9a2cd400264ff6bdc2f00b62d6e911', 0, 0, NULL, NULL, NULL, NULL, NULL); INSERT INTO `sys_dict_items` VALUES ('ze9a2cd400264ff6bdc2f00b62d6e911', '0', '系统类', 'ae9a2cd400264ff6bdc2f00b62d6e911', 0, 0, NULL, NULL, NULL, NULL, NULL); -- ---------------------------- -- Table structure for sys_dynamic_component -- ---------------------------- DROP TABLE IF EXISTS `sys_dynamic_component`; CREATE TABLE `sys_dynamic_component` ( `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键', `pid` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父级ID', `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称', `source_code` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '源码', `compile_js` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '编译js', `compile_css` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '编译css', `type` int NULL DEFAULT NULL COMMENT '0:分组,1:vue组件', `remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, `is_del` int NULL DEFAULT 0 COMMENT '删除标识:0未删除,1已删除', `create_by` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人', `create_date` datetime NULL DEFAULT NULL COMMENT '创建时间', `update_by` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '修改人', `update_date` datetime NULL DEFAULT NULL COMMENT '修改时间', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '动态组件表' ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of sys_dynamic_component -- ---------------------------- INSERT INTO `sys_dynamic_component` VALUES ('0', NULL, '根节点', NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL); INSERT INTO `sys_dynamic_component` VALUES ('28e3f82164de4bbf98a342c2a94da076', 'd17f4964dc664a4bafbd7af6a7e0596d', 'dict-list', '\n\n\n', '/* Analyzed bindings: {\n \"ref\": \"setup-const\",\n \"reactive\": \"setup-const\",\n \"nextTick\": \"setup-const\",\n \"useDictStore\": \"setup-maybe-ref\",\n \"dictStore\": \"setup-maybe-ref\",\n \"tableOptions\": \"setup-reactive-const\",\n \"dictId\": \"setup-ref\",\n \"temp\": \"setup-ref\",\n \"dialogTitle\": \"setup-ref\",\n \"rules\": \"setup-reactive-const\",\n \"table\": \"setup-ref\",\n \"dictDialog\": \"setup-ref\",\n \"dataForm\": \"setup-ref\",\n \"dictItemsDialog\": \"setup-ref\",\n \"getTemp\": \"setup-const\",\n \"reloadTable\": \"setup-const\",\n \"handleCreate\": \"setup-const\",\n \"save\": \"setup-const\",\n \"handleUpdate\": \"setup-const\"\n} */\nconst _resolveComponent = ___magic__import__(\'vue\', \'resolveComponent\');\r\nconst _createVNode = ___magic__import__(\'vue\', \'createVNode\');\r\nconst _createElementVNode = ___magic__import__(\'vue\', \'createElementVNode\');\r\nconst _createTextVNode = ___magic__import__(\'vue\', \'createTextVNode\');\r\nconst _resolveDirective = ___magic__import__(\'vue\', \'resolveDirective\');\r\nconst _withCtx = ___magic__import__(\'vue\', \'withCtx\');\r\nconst _openBlock = ___magic__import__(\'vue\', \'openBlock\');\r\nconst _createBlock = ___magic__import__(\'vue\', \'createBlock\');\r\nconst _withDirectives = ___magic__import__(\'vue\', \'withDirectives\');\r\nconst _mergeProps = ___magic__import__(\'vue\', \'mergeProps\');\r\nconst _createElementBlock = ___magic__import__(\'vue\', \'createElementBlock\');\n\nconst _hoisted_1 = { class: \"mb-list\" }\nconst _hoisted_2 = { class: \"mb-search\" }\nconst _hoisted_3 = { class: \"mb-toolbar\" }\nconst _hoisted_4 = { class: \"mb-table\" }\n\nconst ref = ___magic__import__(\'vue\', \'ref\');\r\nconst reactive = ___magic__import__(\'vue\', \'reactive\');\r\nconst nextTick = ___magic__import__(\'vue\', \'nextTick\');\nconst useDictStore = ___magic__import__(\'@/store/modules/dictStore\', \'useDictStore\');\n\n\nconst __sfc__ = {\n __name: \'mb-sfc-compiler\',\n setup(__props) {\n\n\nconst dictStore = useDictStore()\n\nconst tableOptions = reactive({\n id: \'dict-list\',\n url: \'/system/dict/list\',\n page: true,\n where: {\n type: {\n label: \'类型\'\n },\n dictType: {\n component: \'select\',\n label: \'字典类型\',\n props: {\n \'all-option\': true,\n type: \'dict_type\'\n }\n }\n },\n cols: [\n {\n field: \'type\',\n label: \'类型\'\n },\n {\n field: \'descRibe\',\n label: \'描述\'\n },\n {\n field: \'dictType\',\n label: \'字典类型\',\n width: 200,\n dictType: \'dict_type\'\n },\n {\n field: \'createDate\',\n label: \'创建时间\'\n },\n {\n field: \'remarks\',\n label: \'备注\',\n width: 200\n },\n {\n label: \'操作\',\n type: \'buttons\',\n width: 220,\n fixed: \'right\',\n buttons: [\n {\n permission: \'dict:save\',\n label: \'修改\',\n link: true,\n click: (row) => {\n handleUpdate(row)\n }\n },\n {\n permission: \'dict:delete\',\n label: \'删除\',\n link: true,\n click: (row) => {\n $common.handleDelete({\n url: \'/system/dict/delete\',\n id: row.id,\n done: () => {\n reloadTable()\n dictStore.getDictData()\n }\n })\n }\n },\n {\n permission: \'dict:items:view\',\n label: \'字典项\',\n link: true,\n click: (row) => {\n dictItemsDialog.value.show()\n dictId.value = row.id\n }\n }\n ]\n }\n ]\n})\n\nconst dictId = ref(\'\')\nconst temp = ref(getTemp())\nconst dialogTitle = ref(\'\')\nconst rules = reactive({\n dictType: {required: true, message: \'请选择字典类型\', trigger: \'change\'},\n type: {required: true, message: \'请输入类型\', trigger: \'change\'},\n descRibe: {required: true, message: \'请输入描述\', trigger: \'change\'}\n})\nconst table = ref()\nconst dictDialog = ref()\nconst dataForm = ref()\nconst dictItemsDialog = ref()\n\nfunction getTemp() {\n return {\n id: \'\',\n dictType: \'\',\n type: \'\',\n descRibe: \'\',\n remarks: \'\'\n }\n}\n\nfunction reloadTable() {\n table.value.reload()\n}\n\nfunction handleCreate() {\n temp.value = getTemp()\n dialogTitle.value = \'添加\'\n dictDialog.value.show()\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n}\n\nfunction save(d) {\n dataForm.value.validate((errors) => {\n if (!errors) {\n d.loading()\n $common.post(\'/system/dict/save\', temp.value).then((response) => {\n d.hideLoading()\n temp.value.id = response.data\n dictDialog.value.hide()\n $message.success(dialogTitle.value + \'成功\')\n reloadTable()\n dictStore.getDictData()\n }).catch(() => d.hideLoading())\n }\n })\n}\n\nfunction handleUpdate(row) {\n $common.objAssign(temp.value, row)\n dialogTitle.value = \'修改\'\n dictDialog.value.show()\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n}\n\n\nreturn (_ctx, _cache) => {\n const _component_mb_search = _resolveComponent(\"mb-search\")\n const _component_mb_icon = _resolveComponent(\"mb-icon\")\n const _component_n_button = _resolveComponent(\"n-button\")\n const _component_n_space = _resolveComponent(\"n-space\")\n const _component_mb_table = _resolveComponent(\"mb-table\")\n const _component_mb_select = _resolveComponent(\"mb-select\")\n const _component_n_form_item = _resolveComponent(\"n-form-item\")\n const _component_n_gi = _resolveComponent(\"n-gi\")\n const _component_n_input = _resolveComponent(\"n-input\")\n const _component_n_grid = _resolveComponent(\"n-grid\")\n const _component_n_form = _resolveComponent(\"n-form\")\n const _component_mb_modal = _resolveComponent(\"mb-modal\")\n const _component_dict_items = _resolveComponent(\"dict-items\")\n const _directive_permission = _resolveDirective(\"permission\")\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_mb_search, {\n where: tableOptions.where,\n onSearch: reloadTable\n }, null, 8 /* PROPS */, [\"where\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_n_space, null, {\n default: _withCtx(() => [\n _withDirectives((_openBlock(), _createBlock(_component_n_button, {\n size: _ctx.$global.uiSize.value,\n type: \"primary\",\n onClick: handleCreate\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_icon, { icon: \"AddOutline\" }),\n _createTextVNode(\" 添加字典 \")\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\"])), [\n [_directive_permission, \'dict:save\']\n ])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_mb_table, _mergeProps({\n ref_key: \"table\",\n ref: table\n }, tableOptions), null, 16 /* FULL_PROPS */)\n ]),\n _createVNode(_component_mb_modal, {\n size: _ctx.$global.uiSize.value,\n ref_key: \"dictDialog\",\n ref: dictDialog,\n title: dialogTitle.value,\n width: \"600px\",\n onConfirm: _cache[4] || (_cache[4] = $event => (save($event)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form, {\n size: _ctx.$global.uiSize.value,\n ref_key: \"dataForm\",\n ref: dataForm,\n rules: rules,\n model: temp.value,\n \"label-placement\": \"left\",\n \"label-width\": \"80px\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_grid, { cols: 24 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_gi, { span: 12 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item, {\n label: \"字典类型\",\n path: \"dictType\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_select, {\n modelValue: temp.value.dictType,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => ((temp.value.dictType) = $event)),\n type: \"dict_type\"\n }, null, 8 /* PROPS */, [\"modelValue\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_gi, { span: 12 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item, {\n label: \"类型\",\n path: \"type\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.type,\n \"onUpdate:value\": _cache[1] || (_cache[1] = $event => ((temp.value.type) = $event))\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_grid, { cols: 24 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_gi, { span: 12 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item, {\n label: \"描述\",\n path: \"descRibe\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.descRibe,\n \"onUpdate:value\": _cache[2] || (_cache[2] = $event => ((temp.value.descRibe) = $event))\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_gi, { span: 12 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item, {\n label: \"备注\",\n path: \"remarks\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.remarks,\n \"onUpdate:value\": _cache[3] || (_cache[3] = $event => ((temp.value.remarks) = $event))\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\", \"rules\", \"model\"])\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\", \"title\"]),\n _createVNode(_component_mb_modal, {\n ref_key: \"dictItemsDialog\",\n ref: dictItemsDialog,\n title: \"字典项\",\n width: \"1400px\",\n \"show-footer\": false\n }, {\n default: _withCtx(() => [\n _createVNode(_component_dict_items, {\n \"dict-id\": dictId.value,\n \"onUpdate:dictId\": _cache[5] || (_cache[5] = $event => ((dictId).value = $event))\n }, null, 8 /* PROPS */, [\"dict-id\"])\n ]),\n _: 1 /* STABLE */\n }, 512 /* NEED_PATCH */)\n ]))\n}\n}\n\n}\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '/* No \n\n\n\n\n', '/* Analyzed bindings: {\n \"ref\": \"setup-const\",\n \"reactive\": \"setup-const\",\n \"watch\": \"setup-const\",\n \"nextTick\": \"setup-const\",\n \"push\": \"setup-maybe-ref\",\n \"permissionData\": \"setup-reactive-const\",\n \"assignPermissions\": \"setup-ref\",\n \"assignPermissionsDialog\": \"setup-ref\",\n \"table\": \"setup-ref\",\n \"roleFormDialog\": \"setup-ref\",\n \"dataForm\": \"setup-ref\",\n \"tableOptions\": \"setup-reactive-const\",\n \"dialogTitle\": \"setup-ref\",\n \"temp\": \"setup-ref\",\n \"rules\": \"setup-reactive-const\",\n \"reloadTable\": \"setup-const\",\n \"getTemp\": \"setup-const\",\n \"resetTemp\": \"setup-const\",\n \"handleCreate\": \"setup-const\",\n \"save\": \"setup-const\",\n \"handleUpdate\": \"setup-const\"\n} */\nconst _resolveComponent = ___magic__import__(\'vue\', \'resolveComponent\');\r\nconst _createVNode = ___magic__import__(\'vue\', \'createVNode\');\r\nconst _createElementVNode = ___magic__import__(\'vue\', \'createElementVNode\');\r\nconst _createTextVNode = ___magic__import__(\'vue\', \'createTextVNode\');\r\nconst _resolveDirective = ___magic__import__(\'vue\', \'resolveDirective\');\r\nconst _withCtx = ___magic__import__(\'vue\', \'withCtx\');\r\nconst _openBlock = ___magic__import__(\'vue\', \'openBlock\');\r\nconst _createBlock = ___magic__import__(\'vue\', \'createBlock\');\r\nconst _withDirectives = ___magic__import__(\'vue\', \'withDirectives\');\r\nconst _mergeProps = ___magic__import__(\'vue\', \'mergeProps\');\r\nconst _createCommentVNode = ___magic__import__(\'vue\', \'createCommentVNode\');\r\nconst _createElementBlock = ___magic__import__(\'vue\', \'createElementBlock\');\r\nconst _pushScopeId = ___magic__import__(\'vue\', \'pushScopeId\');\r\nconst _popScopeId = ___magic__import__(\'vue\', \'popScopeId\');\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bWItc2Zj\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"mb-list\" }\nconst _hoisted_2 = { class: \"mb-search\" }\nconst _hoisted_3 = { class: \"mb-toolbar\" }\nconst _hoisted_4 = { class: \"mb-table\" }\n\nconst ref = ___magic__import__(\'vue\', \'ref\');\r\nconst reactive = ___magic__import__(\'vue\', \'reactive\');\r\nconst watch = ___magic__import__(\'vue\', \'watch\');\r\nconst nextTick = ___magic__import__(\'vue\', \'nextTick\');\nconst push = ___magic__import__(\'@/scripts/router\', \'push\');\n\n\nconst __sfc__ = {\n __name: \'mb-sfc-compiler\',\n setup(__props) {\n\n\nconst permissionData = reactive([{\n label: \'全部\',\n value: \'0\'\n}, {\n label: \'自定义\',\n value: \'1\'\n}, {\n label: \'本级及子级\',\n value: \'2\'\n}, {\n label: \'本级\',\n value: \'3\'\n}])\nconst assignPermissions = ref()\nconst assignPermissionsDialog = ref()\nconst table = ref()\nconst roleFormDialog = ref()\nconst dataForm = ref()\nconst tableOptions = reactive({\n id: \'role-list\',\n url: \'/system/role/list\',\n where: {\n name: {\n label: \'角色名称\'\n }\n },\n cols: [\n {\n field: \'name\',\n label: \'角色名称\'\n },\n {\n field: \'code\',\n label: \'角色编码\'\n },\n {\n field: \'descRibe\',\n label: \'角色描述\'\n },\n {\n field: \'permission\',\n label: \'数据权限\',\n render: (row) => {\n return permissionData[row.permission].label\n }\n },\n {\n label: \'操作\',\n type: \'buttons\',\n width: 300,\n fixed: \'right\',\n buttons: [\n {\n permission: \'role:save\',\n label: \'修改\',\n link: true,\n click: (row) => {\n handleUpdate(row)\n }\n },\n {\n permission: \'role:delete\',\n label: \'删除\',\n link: true,\n click: (row) => {\n $common.handleDelete({\n url: \'/system/role/delete\',\n id: row.id,\n done: () => reloadTable()\n })\n }\n },\n {\n permission: \'role:permission\',\n label: \'权限\',\n link: true,\n click: (row) => {\n temp.value.id = row.id\n assignPermissionsDialog.value.show()\n }\n },\n {\n permission: \'role:user:list\',\n label: \'用户列表\',\n link: true,\n click: (row) => {\n push({\n path: \'/system/user/user-list\',\n query: {roleId: row.id}\n })\n }\n }\n ]\n }\n ]\n})\nconst dialogTitle = ref(\'\')\nconst temp = ref(getTemp())\nconst rules = reactive({\n name: {required: true, message: \'请输入角色名称\', trigger: \'change\'},\n code: {required: true, message: \'请输入角色编码\', trigger: \'change\'}\n})\n\nwatch(() => temp.value.permission, () => {\n if (temp.value.permission != 1) {\n temp.value.offices = \'\'\n }\n})\n\nfunction reloadTable() {\n table.value.reload()\n}\n\nfunction getTemp() {\n return {\n id: \'\',\n name: \'\',\n menus: \'\',\n offices: \'\',\n permission: \'0\',\n code: \'\',\n descRibe: \'\'\n }\n}\n\nfunction resetTemp() {\n temp.value = getTemp()\n}\n\nfunction handleCreate() {\n resetTemp()\n dialogTitle.value = \'添加\'\n roleFormDialog.value.show()\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n}\n\nfunction save(d) {\n dataForm.value.validate((errors) => {\n if (!errors) {\n d.loading()\n $common.post(\'/system/role/save\', temp.value).then(() => {\n d.hideLoading()\n reloadTable()\n roleFormDialog.value.hide()\n $message.success(dialogTitle.value + \'成功\')\n }).catch(() => d.hideLoading())\n }\n })\n}\n\nfunction handleUpdate(row) {\n for (let t in temp.value) {\n temp.value[t] = row[t]\n }\n $common.get(\'/system/menu/by/role\', {roleId: row.id}).then(res => {\n temp.value.menus = res.data.join(\',\')\n })\n $common.get(\'/system/office/by/role\', {roleId: row.id}).then(res => {\n temp.value.offices = res.data.join(\',\')\n })\n dialogTitle.value = \'修改\'\n roleFormDialog.value.show()\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n}\n\n\nreturn (_ctx, _cache) => {\n const _component_mb_search = _resolveComponent(\"mb-search\")\n const _component_mb_icon = _resolveComponent(\"mb-icon\")\n const _component_n_button = _resolveComponent(\"n-button\")\n const _component_mb_table = _resolveComponent(\"mb-table\")\n const _component_n_input = _resolveComponent(\"n-input\")\n const _component_n_form_item = _resolveComponent(\"n-form-item\")\n const _component_n_gi = _resolveComponent(\"n-gi\")\n const _component_n_grid = _resolveComponent(\"n-grid\")\n const _component_mb_tree = _resolveComponent(\"mb-tree\")\n const _component_mb_select = _resolveComponent(\"mb-select\")\n const _component_n_form = _resolveComponent(\"n-form\")\n const _component_mb_modal = _resolveComponent(\"mb-modal\")\n const _component_role_assign_permissions = _resolveComponent(\"role-assign-permissions\")\n const _directive_permission = _resolveDirective(\"permission\")\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_mb_search, {\n where: tableOptions.where,\n onSearch: reloadTable\n }, null, 8 /* PROPS */, [\"where\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _withDirectives((_openBlock(), _createBlock(_component_n_button, {\n size: _ctx.$global.uiSize.value,\n type: \"primary\",\n onClick: handleCreate\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_icon, { icon: \"AddOutline\" }),\n _createTextVNode(\" 添加角色 \")\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\"])), [\n [_directive_permission, \'role:save\']\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_mb_table, _mergeProps({\n ref_key: \"table\",\n ref: table\n }, tableOptions), null, 16 /* FULL_PROPS */)\n ]),\n _createVNode(_component_mb_modal, {\n size: _ctx.$global.uiSize.value,\n ref_key: \"roleFormDialog\",\n ref: roleFormDialog,\n title: dialogTitle.value,\n width: \"900px\",\n onConfirm: _cache[6] || (_cache[6] = $event => (save($event)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form, {\n size: _ctx.$global.uiSize.value,\n ref_key: \"dataForm\",\n ref: dataForm,\n rules: rules,\n \"label-placement\": \"left\",\n model: temp.value,\n \"label-width\": \"80px\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_grid, {\n cols: 24,\n \"x-gap\": 24\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_gi, { span: 12 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item, {\n label: \"角色名称\",\n path: \"name\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.name,\n \"onUpdate:value\": _cache[0] || (_cache[0] = $event => ((temp.value.name) = $event))\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_gi, { span: 12 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item, {\n label: \"角色编码\",\n path: \"code\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.code,\n \"onUpdate:value\": _cache[1] || (_cache[1] = $event => ((temp.value.code) = $event))\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_grid, { cols: 24 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_gi, { span: 24 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item, {\n label: \"角色描述\",\n path: \"descRibe\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n type: \"textarea\",\n rows: 4,\n placeholder: \"请输入描述\",\n value: temp.value.descRibe,\n \"onUpdate:value\": _cache[2] || (_cache[2] = $event => ((temp.value.descRibe) = $event))\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_grid, { cols: 24 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_gi, { span: 12 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item, {\n label: \"菜单权限\",\n path: \"menus\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_tree, {\n ref: \"tree\",\n modelValue: temp.value.menus,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => ((temp.value.menus) = $event)),\n style: {\"height\":\"270px\",\"overflow\":\"auto\"},\n url: \"/system/menu/tree\",\n checkable: \"\",\n search: \"\"\n }, null, 8 /* PROPS */, [\"modelValue\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_gi, { span: 12 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item, {\n label: \"数据权限\",\n path: \"permission\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_select, {\n modelValue: temp.value.permission,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => ((temp.value.permission) = $event)),\n options: permissionData,\n style: {\"margin-bottom\":\"5px\"}\n }, null, 8 /* PROPS */, [\"modelValue\", \"options\"]),\n (temp.value.permission == 1)\n ? (_openBlock(), _createBlock(_component_mb_tree, {\n key: 0,\n style: {\"height\":\"270px\",\"overflow\":\"auto\"},\n ref: \"office\",\n checkable: \"\",\n url: \"/system/office/tree\",\n modelValue: temp.value.offices,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => ((temp.value.offices) = $event))\n }, null, 8 /* PROPS */, [\"modelValue\"]))\n : _createCommentVNode(\"v-if\", true)\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\", \"rules\", \"model\"])\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\", \"title\"]),\n _createVNode(_component_mb_modal, {\n ref_key: \"assignPermissionsDialog\",\n ref: assignPermissionsDialog,\n title: \"分配权限\",\n width: \"550px\",\n onConfirm: _cache[8] || (_cache[8] = $event => (assignPermissions.value.save($event)))\n }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_component_role_assign_permissions, {\n ref_key: \"assignPermissions\",\n ref: assignPermissions,\n key: temp.value.id,\n id: temp.value.id,\n onClose: _cache[7] || (_cache[7] = () => { assignPermissionsDialog.value.hide(); temp.value.id = \'\' })\n }, null, 8 /* PROPS */, [\"id\"]))\n ]),\n _: 1 /* STABLE */\n }, 512 /* NEED_PATCH */)\n ]))\n}\n}\n\n}\n__sfc__.__scopeId = \"data-v-bWItc2Zj\"\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '[data-v-bWItc2Zj] .n-form-item .n-form-item-blank {\n display: table;\n}', NULL, NULL, 0, '1', '2024-03-07 13:56:55', NULL, NULL); INSERT INTO `sys_dynamic_component` VALUES ('9809888c-d92a-11ee-9675-c2b02ed3977b', '88c17402-d92a-11ee-9675-c2b02ed3977b', 'login-log', '\n\n\n', '/* Analyzed bindings: {\n \"ref\": \"setup-const\",\n \"reactive\": \"setup-const\",\n \"h\": \"setup-const\",\n \"table\": \"setup-ref\",\n \"tableOptions\": \"setup-reactive-const\",\n \"reloadTable\": \"setup-const\"\n} */\nconst _resolveComponent = ___magic__import__(\'vue\', \'resolveComponent\');\r\nconst _createVNode = ___magic__import__(\'vue\', \'createVNode\');\r\nconst _createElementVNode = ___magic__import__(\'vue\', \'createElementVNode\');\r\nconst _mergeProps = ___magic__import__(\'vue\', \'mergeProps\');\r\nconst _openBlock = ___magic__import__(\'vue\', \'openBlock\');\r\nconst _createElementBlock = ___magic__import__(\'vue\', \'createElementBlock\');\n\nconst _hoisted_1 = { class: \"mb-list\" }\nconst _hoisted_2 = { class: \"mb-search\" }\nconst _hoisted_3 = { class: \"mb-table\" }\n\nconst ref = ___magic__import__(\'vue\', \'ref\');\r\nconst reactive = ___magic__import__(\'vue\', \'reactive\');\r\nconst h = ___magic__import__(\'vue\', \'h\');\n\n\nconst __sfc__ = {\n __name: \'mb-sfc-compiler\',\n setup(__props) {\n\nconst table = ref()\nconst tableOptions = reactive({\n id: \'login-log\',\n url: \'/system/log/login/list\',\n where: {\n createDate: {\n component: \'date\',\n label: \'创建时间\',\n props: {\n type: \'datetimerange\'\n }\n }\n },\n cols: [\n {\n field: \'username\',\n label: \'登录名\'\n },\n {\n field: \'failPassword\',\n label: \'失败密码\'\n },\n {\n field: \'type\',\n label: \'登录状态\',\n width: \'100px\',\n render: (row) => {\n return row.type == \'成功\' ? h(\'b\', {style: {color: \'#409EFF\'}}, {default: () => \'成功\'}) : h(\'b\', {style: {color: \'red\'}}, {default: () => \'失败\'})\n }\n },\n {\n field: \'address\',\n label: \'登录地址\'\n },\n {\n field: \'ip\',\n label: \'ip\',\n width: \'150px\'\n },\n {\n field: \'browser\',\n label: \'浏览器\'\n },\n {\n field: \'os\',\n label: \'系统\',\n props: {\n \"show-overflow-tooltip\": true\n }\n },\n {\n field: \'createDate\',\n label: \'操作时间\',\n width: \'180px\'\n }\n ]\n})\n\nfunction reloadTable() {\n table.value.reload()\n}\n\nreturn (_ctx, _cache) => {\n const _component_mb_search = _resolveComponent(\"mb-search\")\n const _component_mb_table = _resolveComponent(\"mb-table\")\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_mb_search, {\n where: tableOptions.where,\n onSearch: reloadTable\n }, null, 8 /* PROPS */, [\"where\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_mb_table, _mergeProps({\n ref_key: \"table\",\n ref: table\n }, tableOptions), null, 16 /* FULL_PROPS */)\n ])\n ]))\n}\n}\n\n}\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '/* No \n\n\n\n\n', '/* Analyzed bindings: {\n \"ref\": \"setup-const\",\n \"reactive\": \"setup-const\",\n \"nextTick\": \"setup-const\",\n \"useRoute\": \"setup-maybe-ref\",\n \"route\": \"setup-maybe-ref\",\n \"importUserRef\": \"setup-ref\",\n \"previewUsersDialog\": \"setup-ref\",\n \"importUserTableOptions\": \"setup-reactive-const\",\n \"sourceDatas\": \"setup-ref\",\n \"importUserSuccess\": \"setup-const\",\n \"importUsers\": \"setup-const\",\n \"tableOptions\": \"setup-reactive-const\",\n \"dialogTitle\": \"setup-ref\",\n \"ids\": \"setup-ref\",\n \"userFormDialog\": \"setup-ref\",\n \"table\": \"setup-ref\",\n \"userFormRef\": \"setup-ref\",\n \"setWhere\": \"setup-const\",\n \"checkChange\": \"setup-const\",\n \"reloadTable\": \"setup-const\",\n \"handleCreate\": \"setup-const\",\n \"handleUpdate\": \"setup-const\"\n} */\nconst _resolveComponent = ___magic__import__(\'vue\', \'resolveComponent\');\r\nconst _createVNode = ___magic__import__(\'vue\', \'createVNode\');\r\nconst _createElementVNode = ___magic__import__(\'vue\', \'createElementVNode\');\r\nconst _createTextVNode = ___magic__import__(\'vue\', \'createTextVNode\');\r\nconst _withCtx = ___magic__import__(\'vue\', \'withCtx\');\r\nconst _resolveDirective = ___magic__import__(\'vue\', \'resolveDirective\');\r\nconst _openBlock = ___magic__import__(\'vue\', \'openBlock\');\r\nconst _createBlock = ___magic__import__(\'vue\', \'createBlock\');\r\nconst _withDirectives = ___magic__import__(\'vue\', \'withDirectives\');\r\nconst _createCommentVNode = ___magic__import__(\'vue\', \'createCommentVNode\');\r\nconst _renderList = ___magic__import__(\'vue\', \'renderList\');\r\nconst _Fragment = ___magic__import__(\'vue\', \'Fragment\');\r\nconst _createElementBlock = ___magic__import__(\'vue\', \'createElementBlock\');\r\nconst _toDisplayString = ___magic__import__(\'vue\', \'toDisplayString\');\r\nconst _mergeProps = ___magic__import__(\'vue\', \'mergeProps\');\r\nconst _normalizeProps = ___magic__import__(\'vue\', \'normalizeProps\');\r\nconst _guardReactiveProps = ___magic__import__(\'vue\', \'guardReactiveProps\');\r\nconst _pushScopeId = ___magic__import__(\'vue\', \'pushScopeId\');\r\nconst _popScopeId = ___magic__import__(\'vue\', \'popScopeId\');\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bWItc2Zj\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"app-container\" }\nconst _hoisted_2 = { class: \"left\" }\nconst _hoisted_3 = { class: \"right\" }\nconst _hoisted_4 = { class: \"mb-list\" }\nconst _hoisted_5 = { class: \"mb-search\" }\nconst _hoisted_6 = { class: \"mb-toolbar\" }\nconst _hoisted_7 = { class: \"mb-table\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"clear\" }, null, -1 /* HOISTED */))\n\nconst ref = ___magic__import__(\'vue\', \'ref\');\r\nconst reactive = ___magic__import__(\'vue\', \'reactive\');\r\nconst nextTick = ___magic__import__(\'vue\', \'nextTick\');\nconst useRoute = ___magic__import__(\'vue-router\', \'useRoute\');\n\n\nconst __sfc__ = {\n __name: \'mb-sfc-compiler\',\n setup(__props) {\n\n\nconst route = useRoute()\n\nconst importUserRef = ref()\nconst previewUsersDialog = ref()\nconst importUserTableOptions = reactive({})\nconst sourceDatas = ref()\nfunction importUserSuccess(res, file, fileList) {\n const {datas} = res.data\n sourceDatas.value = res.data.sourceDatas\n importUserRef.value.handlerRemove(file)\n if (datas && datas.length) {\n let cols = []\n for (let key in datas[0]) {\n cols.push({\n field: key,\n label: key\n })\n }\n previewUsersDialog.value.show(() => {\n importUserTableOptions.data = datas\n importUserTableOptions.cols = cols\n })\n }\n}\n\nfunction importUsers() {\n $common.postJson(\'/system/user/import\', {\n datas: sourceDatas.value\n }).then(res => {\n if (res.data) {\n $message.success(\'导入成功\')\n previewUsersDialog.value.hide()\n table.value.reload()\n }\n })\n}\n\nconst tableOptions = reactive({\n id: \'user-list\',\n url: \'/system/user/list\',\n page: true,\n selection: true,\n where: {\n username: {\n label: \'登录名称\',\n props: {\n width: \'80px\'\n }\n },\n name: {\n label: \'姓名/昵称\'\n },\n roleId: {\n component: \'select\',\n label: \'角色\',\n props: {\n url: \'/system/role/all\',\n multiple: true,\n width: \'200px\'\n }\n },\n officeId: \'\'\n },\n cols: [\n {\n field: \'username\',\n label: \'登录名称\',\n realSort: true\n },\n {\n field: \'name\',\n label: \'姓名/昵称\'\n },\n {\n field: \'officeName\',\n label: \'所属机构\'\n },\n {\n field: \'roles\',\n label: \'角色\',\n type: \'dynamic\'\n },\n {\n field: \'phone\',\n label: \'手机号\'\n },\n {\n field: \'isLogin\',\n label: \'禁止登录\',\n type: \'switch\',\n exportRender: (row) => {\n return row.isLogin == 1 ? \'已禁用\' : \'未禁用\'\n },\n width: 100,\n if: (row) => {\n return row.id != \'1\'\n },\n change: (row) => {\n $common.get(\'/system/user/change/login/status\', {\n id: row.id,\n isLogin: row.isLogin\n })\n }\n },\n {\n field: \'createDate\',\n label: \'创建时间\',\n width: 180\n },\n {\n label: \'操作\',\n type: \'buttons\',\n width: 140,\n fixed: \'right\',\n buttons: [\n {\n permission: \'user:save\',\n label: \'修改\',\n type: \'primary\',\n link: true,\n click: (row) => {\n handleUpdate(row)\n }\n },\n {\n permission: \'user:delete\',\n label: \'删除\',\n type: \'primary\',\n link: true,\n if: (row) => {\n return row.id != \'1\'\n },\n click: (row) => {\n $common.handleDelete({\n url: \'/system/user/delete\',\n id: row.id,\n done: () => reloadTable()\n })\n }\n }\n ]\n }\n ]\n})\nconst dialogTitle = ref(\'\')\nconst ids = ref([])\nconst userFormDialog = ref()\nconst table = ref()\nconst userFormRef = ref()\n\nfunction setWhere() {\n if (route.query.roleId) {\n tableOptions.where.roleId.value = route.query.roleId\n }\n if (route.query.officeId) {\n tableOptions.where.officeId = route.query.officeId\n }\n}\n\nsetWhere()\n\nfunction checkChange(values) {\n tableOptions.where.officeId = values\n nextTick(() => reloadTable())\n}\n\nfunction reloadTable() {\n userFormDialog.value.hide()\n table.value.reload()\n}\n\nfunction handleCreate() {\n dialogTitle.value = \'添加\'\n userFormDialog.value.show()\n nextTick(() => {\n userFormRef.value.resetTemp()\n })\n}\n\nfunction handleUpdate(row) {\n dialogTitle.value = \'修改\'\n userFormDialog.value.show()\n nextTick(() => {\n userFormRef.value.getInfo(row)\n })\n}\n\n\nreturn (_ctx, _cache) => {\n const _component_mb_tree = _resolveComponent(\"mb-tree\")\n const _component_mb_icon = _resolveComponent(\"mb-icon\")\n const _component_n_button = _resolveComponent(\"n-button\")\n const _component_mb_search = _resolveComponent(\"mb-search\")\n const _component_n_tag = _resolveComponent(\"n-tag\")\n const _component_mb_table = _resolveComponent(\"mb-table\")\n const _component_mb_modal = _resolveComponent(\"mb-modal\")\n const _component_user_form = _resolveComponent(\"user-form\")\n const _directive_permission = _resolveDirective(\"permission\")\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_mb_tree, {\n url: \"/system/office/tree\",\n modelValue: tableOptions.where.officeId,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => ((tableOptions.where.officeId) = $event)),\n expand: false,\n search: \"\",\n \"search-width\": \"100%\",\n checkable: \"\",\n checked: false,\n onCheckChange: checkChange\n }, null, 8 /* PROPS */, [\"modelValue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_mb_search, {\n where: tableOptions.where,\n onSearch: reloadTable\n }, {\n buttons: _withCtx(() => [\n _createVNode(_component_n_button, {\n type: \"primary\",\n onClick: _cache[1] || (_cache[1] = $event => (table.value.exportExcel({ fileName: \'用户数据\' })))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_icon, { icon: \"DownloadOutline\" }),\n _createTextVNode(\" 导出 \")\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"where\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _withDirectives((_openBlock(), _createBlock(_component_n_button, {\n size: _ctx.$global.uiSize.value,\n type: \"primary\",\n onClick: handleCreate\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_icon, { icon: \"AddOutline\" }),\n _createTextVNode(\" 添加用户 \")\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\"])), [\n [_directive_permission, \'user:save\']\n ]),\n _createCommentVNode(\" \"),\n _createCommentVNode(\" \")\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_mb_table, _mergeProps({\n ref_key: \"table\",\n ref: table\n }, tableOptions, {\n \"checked-row-keys\": ids.value,\n \"onUpdate:checkedRowKeys\": _cache[2] || (_cache[2] = $event => ((ids).value = $event))\n }), {\n roles: _withCtx(({row,col}) => [\n (row.roles)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(row.roles.split(\',\'), (it, idx) => {\n return (_openBlock(), _createBlock(_component_n_tag, {\n size: _ctx.$global.uiSize.value,\n style: {\"margin-right\":\"4px\"},\n bordered: false,\n type: \"info\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(it), 1 /* TEXT */)\n ]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"size\"]))\n }), 256 /* UNKEYED_FRAGMENT */))\n : _createCommentVNode(\"v-if\", true)\n ]),\n _: 1 /* STABLE */\n }, 16 /* FULL_PROPS */, [\"checked-row-keys\"])\n ]),\n _createVNode(_component_mb_modal, {\n ref_key: \"previewUsersDialog\",\n ref: previewUsersDialog,\n title: \"预览数据\",\n onConfirm: importUsers\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_table, _normalizeProps(_guardReactiveProps(importUserTableOptions)), null, 16 /* FULL_PROPS */)\n ]),\n _: 1 /* STABLE */\n }, 512 /* NEED_PATCH */),\n _createVNode(_component_mb_modal, {\n ref_key: \"userFormDialog\",\n ref: userFormDialog,\n title: dialogTitle.value,\n onConfirm: _cache[3] || (_cache[3] = $event => (userFormRef.value.save($event))),\n width: \"670px\"\n }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_component_user_form, {\n ref_key: \"userFormRef\",\n ref: userFormRef,\n key: \'userForm\',\n onReloadTable: reloadTable\n }))\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"title\"])\n ])\n ]),\n _hoisted_8\n ]))\n}\n}\n\n}\n__sfc__.__scopeId = \"data-v-bWItc2Zj\"\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '.left[data-v-bWItc2Zj] {\n width: calc(20% - 20px);\n margin-right: 20px;\n float: left;\n}\n.right[data-v-bWItc2Zj] {\n width: 80%;\n height: 100%;\n float: right;\n}\n.app-container[data-v-bWItc2Zj] {\n width: 100%;\n height: 100%;\n}', NULL, NULL, 0, '1', '2024-03-07 14:03:06', NULL, NULL); INSERT INTO `sys_dynamic_component` VALUES ('c0ad38bca2164af08f1c2b2bc90245df', 'fc19e04fa384462d9948c18092f30287', 'menu-form', '\n\n\n', '/* Analyzed bindings: {\n \"menuTree\": \"props\",\n \"menuData\": \"props\",\n \"ref\": \"setup-const\",\n \"reactive\": \"setup-const\",\n \"watch\": \"setup-const\",\n \"nextTick\": \"setup-const\",\n \"props\": \"setup-reactive-const\",\n \"emit\": \"setup-const\",\n \"componentTree\": \"setup-ref\",\n \"dataForm\": \"setup-ref\",\n \"menuType\": \"setup-ref\",\n \"iconDialog\": \"setup-ref\",\n \"openModeRef\": \"setup-ref\",\n \"getTemp\": \"setup-const\",\n \"temp\": \"setup-ref\",\n \"validateUrl\": \"setup-let\",\n \"validatePermission\": \"setup-let\",\n \"rules\": \"setup-reactive-const\",\n \"save\": \"setup-const\",\n \"addSubMenu\": \"setup-const\",\n \"getInfo\": \"setup-const\",\n \"resetTemp\": \"setup-const\",\n \"selectIcon\": \"setup-const\",\n \"openIcons\": \"setup-const\",\n \"getSort\": \"setup-const\"\n} */\nconst _resolveComponent = ___magic__import__(\'vue\', \'resolveComponent\');\r\nconst _createVNode = ___magic__import__(\'vue\', \'createVNode\');\r\nconst _withCtx = ___magic__import__(\'vue\', \'withCtx\');\r\nconst _openBlock = ___magic__import__(\'vue\', \'openBlock\');\r\nconst _createBlock = ___magic__import__(\'vue\', \'createBlock\');\r\nconst _createCommentVNode = ___magic__import__(\'vue\', \'createCommentVNode\');\r\nconst _createElementVNode = ___magic__import__(\'vue\', \'createElementVNode\');\r\nconst _createElementBlock = ___magic__import__(\'vue\', \'createElementBlock\');\n\nconst _hoisted_1 = { class: \"flex flex-wrap\" }\nconst _hoisted_2 = { style: {\"width\":\"50%\"} }\nconst _hoisted_3 = { style: {\"width\":\"50%\"} }\nconst _hoisted_4 = { style: {\"width\":\"50%\"} }\nconst _hoisted_5 = { style: {\"width\":\"50%\"} }\n\nconst ref = ___magic__import__(\'vue\', \'ref\');\r\nconst reactive = ___magic__import__(\'vue\', \'reactive\');\r\nconst watch = ___magic__import__(\'vue\', \'watch\');\r\nconst nextTick = ___magic__import__(\'vue\', \'nextTick\');\n\n\nconst __sfc__ = {\n __name: \'mb-sfc-compiler\',\n props: {\n menuTree: {\n type: Array,\n default: () => []\n },\n menuData: {\n type: Array,\n default: () => []\n }\n},\n emits: [\'reload-table\'],\n setup(__props, { expose: __expose, emit: __emit }) {\n\nconst props = __props\n\nconst emit = __emit\nconst componentTree = ref()\nconst dataForm = ref()\nconst menuType = ref(\'menu\')\nconst iconDialog = ref()\nconst openModeRef = ref(\'0\')\nconst getTemp = () => {\n return {\n id: \'\',\n name: \'\',\n url: \'\',\n permission: \'\',\n sort: 0,\n descRibe: \'\',\n isShow: 1,\n pid: 0,\n icon: \'\',\n keepAlive: 0,\n componentId: \'\',\n openMode: \'0\'\n }\n}\n\n$common.get(\'/system/component/tree\').then(res => {\n $treeTable.deleteEmptyChildren(res.data.list)\n componentTree.value = res.data.list\n})\n\nconst temp = ref(getTemp())\n\nlet validateUrl = (rule, value, callback) => {\n if (menuType.value == \'menu\') {\n if (!value) {\n callback(new Error(\'请输入菜单链接\'))\n } else {\n if(value.startsWith(\'http\') || value.startsWith(\'/\')){\n callback()\n }else{\n callback(new Error(\'菜单链接只能以\"http\"或\"/\"开头\'))\n }\n }\n } else {\n if(value.startsWith(\'http\') || value.startsWith(\'/\')){\n callback()\n }else{\n callback(new Error(\'菜单链接只能以\"http\"或\"/\"开头\'))\n }\n }\n}\n\nlet validatePermission = (rule, value, callback) => {\n if (menuType.value == \'button\') {\n if (!value) {\n callback(new Error(\'请输入权限标识\'))\n } else {\n callback()\n }\n } else {\n callback()\n }\n}\n\nconst rules = reactive({\n pid: {required: true, message: \'请选择上级菜单\', trigger: \'change\'},\n name: {required: true, message: \'请输入菜单名称\', trigger: \'change\'},\n url: {required: true, trigger: \'change\', validator: validateUrl},\n permission: {required: true, trigger: \'change\', validator: validatePermission}\n})\n\nwatch(menuType, (type) => {\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n if (type == \'menu\') {\n temp.value.isShow = 1\n } else {\n temp.value.isShow = 0\n }\n})\n\nwatch(openModeRef, (value) => {\n temp.value.openMode = value\n})\n\nfunction save(d) {\n dataForm.value.validate((errors) => {\n if (!errors) {\n d.loading()\n if (temp.value.pid == temp.value.id) {\n $message.warning(\'上级菜单不能选当前菜单\')\n d.hideLoading()\n return\n }\n if ($treeTable.isChildren($treeTable.queryChildren(props.menuData, temp.value.id), temp.value.pid)) {\n $message.warning(\'上级菜单不能选当前菜单子级\')\n d.hideLoading()\n return\n }\n if (menuType.value == \'menu\') {\n temp.value.permission = \'\'\n } else {\n temp.value.isShow = 0\n temp.value.keepAlive = 0\n temp.value.icon = \'\'\n temp.value.url = \'\'\n }\n $common.post(\'/system/menu/save\', temp.value).then(() => {\n d.hideLoading()\n $message.success(d.title + \'成功\')\n d.hide()\n emit(\'reload-table\')\n }).catch(() => d.hideLoading())\n }\n })\n}\n\nfunction addSubMenu(id) {\n resetTemp()\n menuType.value = \'menu\'\n temp.value.pid = id\n temp.value.id = $common.uuid()\n getSort()\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n}\n\nfunction getInfo(row) {\n for (let t in temp.value) {\n temp.value[t] = row[t]\n }\n openModeRef.value = temp.value.openMode || \'0\'\n menuType.value = temp.value.url ? \'menu\' : \'button\'\n $treeTable.clearFont(temp.value, [\'name\', \'url\', \'permission\'])\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n}\n\nfunction resetTemp() {\n temp.value = getTemp()\n}\n\nfunction selectIcon(symbol) {\n temp.value.icon = symbol\n iconDialog.value.hide()\n}\n\nfunction openIcons() {\n iconDialog.value.show()\n}\n\nfunction getSort() {\n $common.get(\'/system/menu/sort\', {pid: temp.value.pid}).then(res => {\n temp.value.sort = res.data\n })\n}\n\n__expose({addSubMenu, getInfo, save})\n\n\nreturn (_ctx, _cache) => {\n const _component_n_radio_button = _resolveComponent(\"n-radio-button\")\n const _component_n_radio_group = _resolveComponent(\"n-radio-group\")\n const _component_n_form_item = _resolveComponent(\"n-form-item\")\n const _component_n_gi = _resolveComponent(\"n-gi\")\n const _component_n_tree_select = _resolveComponent(\"n-tree-select\")\n const _component_n_grid = _resolveComponent(\"n-grid\")\n const _component_n_input = _resolveComponent(\"n-input\")\n const _component_n_input_number = _resolveComponent(\"n-input-number\")\n const _component_mb_icon = _resolveComponent(\"mb-icon\")\n const _component_n_form = _resolveComponent(\"n-form\")\n const _component_menu_icons = _resolveComponent(\"menu-icons\")\n const _component_mb_modal = _resolveComponent(\"mb-modal\")\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createVNode(_component_n_form, {\n size: _ctx.$global.uiSize.value,\n ref_key: \"dataForm\",\n ref: dataForm,\n rules: rules,\n model: temp.value,\n \"label-placement\": \"left\",\n \"label-width\": \"100px\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_grid, { cols: 24 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_gi, { span: 12 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item, {\n label: \"菜单类型\",\n path: \"type\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_radio_group, {\n value: menuType.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = $event => ((menuType).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_radio_button, {\n key: \"menu\",\n value: \"menu\",\n label: \"菜单\"\n }),\n _createVNode(_component_n_radio_button, {\n key: \"button\",\n value: \"button\",\n label: \"按钮\"\n })\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_gi, { span: 12 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item, {\n label: \"上级菜单\",\n path: \"pid\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_tree_select, {\n value: temp.value.pid,\n \"onUpdate:value\": _cache[1] || (_cache[1] = $event => ((temp.value.pid) = $event)),\n options: __props.menuTree\n }, null, 8 /* PROPS */, [\"value\", \"options\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_form_item, {\n label: \"菜单名称\",\n path: \"name\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.name,\n \"onUpdate:value\": _cache[2] || (_cache[2] = $event => ((temp.value.name) = $event))\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }),\n (menuType.value == \'menu\')\n ? (_openBlock(), _createBlock(_component_n_form_item, {\n key: 0,\n label: \"菜单链接\",\n path: \"url\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.url,\n \"onUpdate:value\": _cache[3] || (_cache[3] = $event => ((temp.value.url) = $event))\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }))\n : _createCommentVNode(\"v-if\", true),\n (menuType.value == \'menu\')\n ? (_openBlock(), _createBlock(_component_n_form_item, {\n key: 1,\n label: \"打开方式\",\n path: \"openMode\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_radio_group, {\n value: openModeRef.value,\n \"onUpdate:value\": _cache[4] || (_cache[4] = $event => ((openModeRef).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_radio_button, {\n key: \"0\",\n value: \"0\",\n label: \"页签\"\n }),\n _createVNode(_component_n_radio_button, {\n key: \"1\",\n value: \"1\",\n label: \"新标签页\"\n }),\n _createVNode(_component_n_radio_button, {\n key: \"2\",\n value: \"2\",\n label: \"iframe\"\n })\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }))\n : _createCommentVNode(\"v-if\", true),\n (menuType.value == \'menu\' && !(temp.value.url.startsWith(\'http\') || (temp.value.url.startsWith(\'/\') && temp.value.url.indexOf(\'.htm\') != -1)))\n ? (_openBlock(), _createBlock(_component_n_form_item, {\n key: 2,\n label: \"关联组件\",\n path: \"componentId\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_tree_select, {\n value: temp.value.componentId,\n \"onUpdate:value\": _cache[5] || (_cache[5] = $event => ((temp.value.componentId) = $event)),\n options: componentTree.value,\n \"key-field\": \"id\",\n \"label-field\": \"name\",\n \"check-strategy\": \"child\",\n \"default-expand-all\": \"\"\n }, null, 8 /* PROPS */, [\"value\", \"options\"])\n ]),\n _: 1 /* STABLE */\n }))\n : _createCommentVNode(\"v-if\", true),\n (menuType.value == \'button\')\n ? (_openBlock(), _createBlock(_component_n_form_item, {\n key: 3,\n label: \"权限标识\",\n path: \"permission\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.permission,\n \"onUpdate:value\": _cache[6] || (_cache[6] = $event => ((temp.value.permission) = $event))\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }))\n : _createCommentVNode(\"v-if\", true),\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (menuType.value == \'menu\')\n ? (_openBlock(), _createBlock(_component_n_form_item, {\n key: 0,\n label: \"菜单显示\",\n path: \"isShow\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_radio_group, {\n value: temp.value.isShow,\n \"onUpdate:value\": _cache[7] || (_cache[7] = $event => ((temp.value.isShow) = $event))\n }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_component_n_radio_button, {\n key: 1,\n value: 1,\n label: \"显示\"\n })),\n (_openBlock(), _createBlock(_component_n_radio_button, {\n key: 0,\n value: 0,\n label: \"不显示\"\n }))\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }))\n : _createCommentVNode(\"v-if\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n (menuType.value == \'menu\')\n ? (_openBlock(), _createBlock(_component_n_form_item, {\n key: 0,\n label: \"路由缓存\",\n path: \"keepAlive\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_radio_group, {\n value: temp.value.keepAlive,\n \"onUpdate:value\": _cache[8] || (_cache[8] = $event => ((temp.value.keepAlive) = $event))\n }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_component_n_radio_button, {\n key: 1,\n value: 1,\n label: \"缓存\"\n })),\n (_openBlock(), _createBlock(_component_n_radio_button, {\n key: 0,\n value: 0,\n label: \"不缓存\"\n }))\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }))\n : _createCommentVNode(\"v-if\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_n_form_item, {\n label: \"排序\",\n path: \"sort\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input_number, {\n value: temp.value.sort,\n \"onUpdate:value\": _cache[9] || (_cache[9] = $event => ((temp.value.sort) = $event)),\n \"button-placement\": \"both\"\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_n_form_item, {\n label: \"图标\",\n path: \"icon\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"a\", { onClick: openIcons }, [\n _createVNode(_component_n_input, {\n value: temp.value.icon,\n \"onUpdate:value\": _cache[10] || (_cache[10] = $event => ((temp.value.icon) = $event))\n }, {\n suffix: _withCtx(() => [\n _createVNode(_component_mb_icon, {\n icon: temp.value.icon\n }, null, 8 /* PROPS */, [\"icon\"])\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"value\"])\n ])\n ]),\n _: 1 /* STABLE */\n })\n ])\n ])\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\", \"rules\", \"model\"]),\n _createVNode(_component_mb_modal, {\n ref_key: \"iconDialog\",\n ref: iconDialog,\n width: \"650px\",\n title: \"选择图标\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_menu_icons, { \"select-icon\": selectIcon })\n ]),\n _: 1 /* STABLE */\n }, 512 /* NEED_PATCH */)\n ]))\n}\n}\n\n}\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '/* No \n', '/* Analyzed bindings: {\n \"ref\": \"setup-const\",\n \"reactive\": \"setup-const\",\n \"nextTick\": \"setup-const\",\n \"useUserStore\": \"setup-maybe-ref\",\n \"userStore\": \"setup-maybe-ref\",\n \"temp\": \"setup-ref\",\n \"validatePass2\": \"setup-let\",\n \"rules\": \"setup-reactive-const\",\n \"dataForm\": \"setup-ref\",\n \"getTemp\": \"setup-const\",\n \"resetTemp\": \"setup-const\",\n \"save\": \"setup-const\"\n} */\nconst _resolveComponent = ___magic__import__(\'vue\', \'resolveComponent\');\r\nconst _createVNode = ___magic__import__(\'vue\', \'createVNode\');\r\nconst _createElementVNode = ___magic__import__(\'vue\', \'createElementVNode\');\r\nconst _withCtx = ___magic__import__(\'vue\', \'withCtx\');\r\nconst _createTextVNode = ___magic__import__(\'vue\', \'createTextVNode\');\r\nconst _openBlock = ___magic__import__(\'vue\', \'openBlock\');\r\nconst _createElementBlock = ___magic__import__(\'vue\', \'createElementBlock\');\r\nconst _pushScopeId = ___magic__import__(\'vue\', \'pushScopeId\');\r\nconst _popScopeId = ___magic__import__(\'vue\', \'popScopeId\');\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bWItc2Zj\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"user-center\" }\nconst _hoisted_2 = { style: {\"widthL\":\"35%\"} }\nconst _hoisted_3 = { style: {\"width\":\"65%\"} }\n\nconst ref = ___magic__import__(\'vue\', \'ref\');\r\nconst reactive = ___magic__import__(\'vue\', \'reactive\');\r\nconst nextTick = ___magic__import__(\'vue\', \'nextTick\');\nconst useUserStore = ___magic__import__(\'@/store/modules/userStore\', \'useUserStore\');\n\n\nconst __sfc__ = {\n __name: \'mb-sfc-compiler\',\n setup(__props) {\n\nconst userStore = useUserStore()\n\nconst temp = ref(getTemp())\n\nlet validatePass2 = (rule, value, callback) => {\n if (temp.value.newPassword) {\n if (value === \'\') {\n callback(new Error(\'请再次输入密码\'));\n } else if (value !== temp.value.newPassword) {\n callback(new Error(\'两次输入密码不一致!\'));\n } else {\n callback();\n }\n } else {\n callback();\n }\n}\nconst rules = reactive({\n password: [{required: true, message: \'请输入原密码\', trigger: \'change\'}, {min: 6, message: \'密码不少于6位\'}],\n phone: [{min: 11, message: \'请输入11位手机号\', trigger: \'change\'}],\n newPassword: [{min: 6, message: \'密码不少于6位\'}],\n confirmPassword: [{min: 6, message: \'密码不少于6位\'}, {validator: validatePass2}],\n})\nconst dataForm = ref()\n\nfunction getTemp() {\n return {\n id: \'\',\n name: \'\',\n password: \'\',\n phone: \'\',\n headPortrait: \'\',\n newPassword: \'\',\n confirmPassword: \'\'\n }\n}\n\nfunction resetTemp() {\n temp.value = getTemp()\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n}\n\nfunction save() {\n dataForm.value.validate((errors) => {\n if (!errors) {\n $common.post(\'/system/user/center/update\', temp.value).then(() => {\n $message.success(\'修改成功\')\n })\n }\n })\n}\n\n$common.objAssign(temp.value, userStore.getInfo, [\'password\'])\n\nreturn (_ctx, _cache) => {\n const _component_mb_upload_image = _resolveComponent(\"mb-upload-image\")\n const _component_n_input = _resolveComponent(\"n-input\")\n const _component_n_form_item = _resolveComponent(\"n-form-item\")\n const _component_m_icon = _resolveComponent(\"m-icon\")\n const _component_n_button = _resolveComponent(\"n-button\")\n const _component_n_form = _resolveComponent(\"n-form\")\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_mb_upload_image, {\n modelValue: temp.value.headPortrait,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => ((temp.value.headPortrait) = $event))\n }, null, 8 /* PROPS */, [\"modelValue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_n_form, {\n ref_key: \"dataForm\",\n ref: dataForm,\n rules: rules,\n model: temp.value,\n \"label-placement\": \"left\",\n \"label-width\": \"80px\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item, {\n label: \"姓名/昵称\",\n path: \"name\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.name,\n \"onUpdate:value\": _cache[1] || (_cache[1] = $event => ((temp.value.name) = $event)),\n disabled: \"\"\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_form_item, {\n label: \"手机号码\",\n path: \"phone\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.phone,\n \"onUpdate:value\": _cache[2] || (_cache[2] = $event => ((temp.value.phone) = $event)),\n maxlength: \"11\",\n autocomplete: \"new-password\"\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_form_item, {\n label: \"当前密码\",\n path: \"password\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.password,\n \"onUpdate:value\": _cache[3] || (_cache[3] = $event => ((temp.value.password) = $event)),\n type: \"password\",\n autocomplete: \"new-password\"\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_form_item, {\n label: \"新设密码\",\n path: \"newPassword\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.newPassword,\n \"onUpdate:value\": _cache[4] || (_cache[4] = $event => ((temp.value.newPassword) = $event)),\n type: \"password\",\n autocomplete: \"new-password\"\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_form_item, {\n label: \"确认密码\",\n path: \"confirmPassword\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.confirmPassword,\n \"onUpdate:value\": _cache[5] || (_cache[5] = $event => ((temp.value.confirmPassword) = $event)),\n type: \"password\",\n autocomplete: \"new-password\"\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_button, {\n type: \"primary\",\n size: \"large\",\n block: \"\",\n round: \"\",\n onClick: save\n }, {\n default: _withCtx(() => [\n _createVNode(_component_m_icon, {\n style: {\"margin-right\":\"4px\"},\n icon: \"SaveSharp\"\n }),\n _createTextVNode(\" 保存信息 \")\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"rules\", \"model\"])\n ])\n ]))\n}\n}\n\n}\n__sfc__.__scopeId = \"data-v-bWItc2Zj\"\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '.user-center[data-v-bWItc2Zj] {\n width: 1000px;\n margin: 60px auto;\n display: flex;\n}', NULL, NULL, 0, '1', '2024-03-07 14:04:51', NULL, NULL); INSERT INTO `sys_dynamic_component` VALUES ('e50d9d844de247fc825c8f4d4509da79', '9c302653077d47dc9374ba48b9fda579', 'role-assign-permissions', '\n\n\n', '/* Analyzed bindings: {\n \"id\": \"props\",\n \"ref\": \"setup-const\",\n \"emit\": \"setup-const\",\n \"props\": \"setup-reactive-const\",\n \"menus\": \"setup-ref\",\n \"save\": \"setup-const\"\n} */\nconst _resolveComponent = ___magic__import__(\'vue\', \'resolveComponent\');\r\nconst _openBlock = ___magic__import__(\'vue\', \'openBlock\');\r\nconst _createBlock = ___magic__import__(\'vue\', \'createBlock\');\n\nconst ref = ___magic__import__(\'vue\', \'ref\');\n\n\nconst __sfc__ = {\n __name: \'mb-sfc-compiler\',\n props: {\n id: {\n type: String,\n default: \'\'\n }\n},\n emits: [\'close\'],\n setup(__props, { expose: __expose, emit: __emit }) {\n\nconst emit = __emit\nconst props = __props\n\nconst menus = ref(\'\')\n\n$common.get(\'/system/menu/by/role\', {roleId: props.id}).then(res => {\n menus.value = res.data.join(\',\')\n})\n\nfunction save(d) {\n d.loading()\n $common.post(\'/system/role/save\', {\n id: props.id,\n menus: menus.value\n }).then((response) => {\n d.hideLoading()\n $message.success(\'分配成功\')\n emit(\'close\')\n }).catch(() => d.hideLoading())\n}\n\n__expose({save})\n\n\nreturn (_ctx, _cache) => {\n const _component_mb_tree = _resolveComponent(\"mb-tree\")\n\n return (_openBlock(), _createBlock(_component_mb_tree, {\n ref: \"tree\",\n modelValue: menus.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => ((menus).value = $event)),\n style: {\"height\":\"320px\"},\n url: \"/system/menu/tree\",\n search: \"\",\n checkable: \"\",\n \"search-width\": \"230px\"\n }, null, 8 /* PROPS */, [\"modelValue\"]))\n}\n}\n\n}\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '/* No \n', '/* Analyzed bindings: {\n \"selectIcon\": \"props\",\n \"svgIcons\": \"setup-maybe-ref\",\n \"xicons\": \"setup-maybe-ref\",\n \"ref\": \"setup-const\",\n \"props\": \"setup-reactive-const\",\n \"tabs\": \"setup-ref\"\n} */\nconst _renderList = ___magic__import__(\'vue\', \'renderList\');\r\nconst _Fragment = ___magic__import__(\'vue\', \'Fragment\');\r\nconst _openBlock = ___magic__import__(\'vue\', \'openBlock\');\r\nconst _createElementBlock = ___magic__import__(\'vue\', \'createElementBlock\');\r\nconst _resolveComponent = ___magic__import__(\'vue\', \'resolveComponent\');\r\nconst _createVNode = ___magic__import__(\'vue\', \'createVNode\');\r\nconst _toDisplayString = ___magic__import__(\'vue\', \'toDisplayString\');\r\nconst _createElementVNode = ___magic__import__(\'vue\', \'createElementVNode\');\r\nconst _withCtx = ___magic__import__(\'vue\', \'withCtx\');\r\nconst _createBlock = ___magic__import__(\'vue\', \'createBlock\');\r\nconst _pushScopeId = ___magic__import__(\'vue\', \'pushScopeId\');\r\nconst _popScopeId = ___magic__import__(\'vue\', \'popScopeId\');\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-bWItc2Zj\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"icons-container\" }\nconst _hoisted_2 = { class: \"grid\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { class: \"icon-item\" }\n\nconst svgIcons = ___magic__import__(\'@/scripts/svg-icons\', \'*\');\nconst xicons = ___magic__import__(\'@/scripts/xicons\', \'*\');\nconst ref = ___magic__import__(\'vue\', \'ref\');\n\nconst __sfc__ = {\n __name: \'mb-sfc-compiler\',\n props: {\n selectIcon: Function\n},\n setup(__props) {\n\nconst props = __props\nconst tabs = ref([{\n name: \'dynamic\',\n tab: \'自定义\',\n icons: svgIcons\n}, {\n name: \'xicons\',\n tab: \'xicons\',\n icons: Object.keys(xicons)\n}])\n\nreturn (_ctx, _cache) => {\n const _component_mb_icon = _resolveComponent(\"mb-icon\")\n const _component_n_tooltip = _resolveComponent(\"n-tooltip\")\n const _component_n_tab_pane = _resolveComponent(\"n-tab-pane\")\n const _component_n_tabs = _resolveComponent(\"n-tabs\")\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_n_tabs, {\n type: \"line\",\n animated: \"\"\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(tabs.value, (tab) => {\n return (_openBlock(), _createBlock(_component_n_tab_pane, {\n name: tab.name,\n tab: tab.tab\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(tab.icons, (icon) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: icon,\n onClick: $event => (__props.selectIcon(icon))\n }, [\n _createVNode(_component_n_tooltip, {\n placement: \"top\",\n trigger: \"hover\"\n }, {\n trigger: _withCtx(() => [\n _createVNode(_component_mb_icon, {\n icon: icon,\n size: \"2em\"\n }, null, 8 /* PROPS */, [\"icon\"])\n ]),\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", null, _toDisplayString(icon), 1 /* TEXT */)\n ])\n ]),\n _: 2 /* DYNAMIC */\n }, 1024 /* DYNAMIC_SLOTS */)\n ], 8 /* PROPS */, _hoisted_3))\n }), 128 /* KEYED_FRAGMENT */))\n ])\n ]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"name\", \"tab\"]))\n }), 256 /* UNKEYED_FRAGMENT */))\n ]),\n _: 1 /* STABLE */\n })\n ]))\n}\n}\n\n}\n__sfc__.__scopeId = \"data-v-bWItc2Zj\"\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '.icons-container[data-v-bWItc2Zj] {\n margin: 10px 20px 0;\n overflow: hidden;\n}\n.icons-container .grid[data-v-bWItc2Zj] {\n position: relative;\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));\n}\n.icons-container .icon-item[data-v-bWItc2Zj] {\n margin: 20px;\n height: 85px;\n text-align: center;\n width: 100px;\n float: left;\n font-size: 30px;\n color: #24292e;\n cursor: pointer;\n}\n.icons-container span[data-v-bWItc2Zj] {\n display: block;\n font-size: 16px;\n margin-top: 10px;\n}\n.icons-container .disabled[data-v-bWItc2Zj] {\n pointer-events: none;\n}', NULL, NULL, 0, '1', '2024-03-07 13:41:23', NULL, NULL); INSERT INTO `sys_dynamic_component` VALUES ('fc061efbc39948d59aafc3905591c935', '29d82244-d928-11ee-9675-c2b02ed3977b', 'user', NULL, NULL, NULL, NULL, NULL, 0, '1', '2024-03-07 14:03:01', NULL, NULL); INSERT INTO `sys_dynamic_component` VALUES ('fc19e04fa384462d9948c18092f30287', '29d82244-d928-11ee-9675-c2b02ed3977b', 'menu', NULL, NULL, NULL, NULL, NULL, 0, '1', '2024-03-07 13:39:07', NULL, NULL); INSERT INTO `sys_dynamic_component` VALUES ('fd89dd1d66ae429689bdd978162b4caf', '88c17402-d92a-11ee-9675-c2b02ed3977b', 'online-user', '\n\n\n', '/* Analyzed bindings: {\n \"reactive\": \"setup-const\",\n \"ref\": \"setup-const\",\n \"magicList\": \"setup-ref\",\n \"magicDialog\": \"setup-ref\",\n \"currRow\": \"setup-ref\",\n \"time\": \"setup-ref\",\n \"options\": \"setup-reactive-const\",\n \"listOptions\": \"setup-reactive-const\",\n \"disable\": \"setup-const\"\n} */\nconst _resolveComponent = ___magic__import__(\'vue\', \'resolveComponent\');\r\nconst _mergeProps = ___magic__import__(\'vue\', \'mergeProps\');\r\nconst _createVNode = ___magic__import__(\'vue\', \'createVNode\');\r\nconst _toDisplayString = ___magic__import__(\'vue\', \'toDisplayString\');\r\nconst _createTextVNode = ___magic__import__(\'vue\', \'createTextVNode\');\r\nconst _withCtx = ___magic__import__(\'vue\', \'withCtx\');\r\nconst _renderList = ___magic__import__(\'vue\', \'renderList\');\r\nconst _Fragment = ___magic__import__(\'vue\', \'Fragment\');\r\nconst _openBlock = ___magic__import__(\'vue\', \'openBlock\');\r\nconst _createElementBlock = ___magic__import__(\'vue\', \'createElementBlock\');\r\nconst _createBlock = ___magic__import__(\'vue\', \'createBlock\');\n\nconst _hoisted_1 = { style: {\"height\":\"100%\"} }\n\nconst reactive = ___magic__import__(\'vue\', \'reactive\');\r\nconst ref = ___magic__import__(\'vue\', \'ref\');\n\n\nconst __sfc__ = {\n __name: \'mb-sfc-compiler\',\n setup(__props) {\n\nconst magicList = ref()\nconst magicDialog = ref()\nconst currRow = ref()\nconst time = ref(0)\nconst options = reactive([{\n label: \'不封禁\',\n value: 0\n}, {\n label: \'1分钟\',\n value: 60\n}, {\n label: \'10分钟\',\n value: 10 * 60\n}, {\n label: \'1小时\',\n value: 1 * 60 * 60\n}, {\n label: \'5小时\',\n value: 5 * 60 * 60\n}, {\n label: \'永久\',\n value: -1\n}])\nconst listOptions = reactive({\n table: {\n url: \'/system/online/list\',\n where: {\n username: {\n label: \'登录名称\',\n },\n ip: {\n label: \'IP\',\n }\n },\n cols: [\n {\n field: \'username\',\n label: \'登录名称\'\n }, {\n field: \'officeName\',\n label: \'所属机构\'\n }, {\n field: \'address\',\n label: \'登录地址\'\n }, {\n field: \'ip\',\n label: \'IP\'\n }, {\n field: \'browser\',\n label: \'浏览器\'\n }, {\n field: \'os\',\n label: \'操作系统\',\n props: {\n \"show-overflow-tooltip\": true\n }\n }, {\n field: \'createDate\',\n label: \'登录时间\'\n }, {\n label: \'操作\',\n type: \'buttons\',\n width: 140,\n fixed: \'right\',\n buttons: [\n {\n permission: \'online:logout\',\n label: \'踢人\',\n type: \'primary\',\n link: true,\n icon: \'ElIconBicycle\',\n click: (row) => {\n console.log(row)\n currRow.value = row\n magicDialog.value.show()\n // $dialog.warning({\n // title: \'提示\',\n // content: `确定要踢“${row.username}”下线吗?`,\n // positiveText: \'确定\',\n // negativeText: \'取消\',\n // onPositiveClick: () => {\n // $common.get(\'/system/online/logout\',{ token: row.token }).then(() => {\n // magicList.value.reload()\n // })\n // }\n // })\n }\n }\n ]\n }\n ]\n }\n})\n\nfunction disable() {\n $common.get(\'/system/online/logout\', {id: currRow.value.id, time: time.value}).then(() => {\n magicDialog.value.hide()\n magicList.value.reload()\n })\n}\n\nreturn (_ctx, _cache) => {\n const _component_mb_list = _resolveComponent(\"mb-list\")\n const _component_n_gi = _resolveComponent(\"n-gi\")\n const _component_n_radio = _resolveComponent(\"n-radio\")\n const _component_n_space = _resolveComponent(\"n-space\")\n const _component_n_radio_group = _resolveComponent(\"n-radio-group\")\n const _component_n_grid = _resolveComponent(\"n-grid\")\n const _component_mb_modal = _resolveComponent(\"mb-modal\")\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_mb_list, _mergeProps({\n ref_key: \"magicList\",\n ref: magicList\n }, listOptions), null, 16 /* FULL_PROPS */),\n _createVNode(_component_mb_modal, {\n ref_key: \"magicDialog\",\n ref: magicDialog,\n title: \"提示\",\n width: \"600px\",\n onConfirm: disable\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_grid, { cols: 24 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_gi, { span: 24 }, {\n default: _withCtx(() => [\n _createTextVNode(\" 确定要踢“\" + _toDisplayString(currRow.value.username) + \"”下线并临时封禁吗? \", 1 /* TEXT */)\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_gi, { span: 24 }, {\n default: _withCtx(() => [\n _createVNode(_component_n_radio_group, {\n value: time.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = $event => ((time).value = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_space, null, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(options, (option) => {\n return (_openBlock(), _createBlock(_component_n_radio, {\n key: option.value,\n value: option.value\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(option.label), 1 /* TEXT */)\n ]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"value\"]))\n }), 128 /* KEYED_FRAGMENT */))\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }, 512 /* NEED_PATCH */)\n ]))\n}\n}\n\n}\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '/* No