magic-boot/db/magic-boot.sql
2024-05-17 22:25:22 +08:00

676 lines
315 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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分组1vue组件',
`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` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('0', NULL, '根节点', NULL, NULL, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('28e3f82164de4bbf98a342c2a94da076', 'd17f4964dc664a4bafbd7af6a7e0596d', 'dict-list', '<template>\n <div class=\"mb-list\">\n <div class=\"mb-search\">\n <mb-search :where=\"tableOptions.where\" @search=\"reloadTable\"/>\n </div>\n <div class=\"mb-toolbar\">\n <n-space>\n <n-button :size=\"$global.uiSize.value\" v-permission=\"\'dict:save\'\" type=\"primary\" @click=\"handleCreate\">\n <mb-icon icon=\"AddOutline\" />\n 添加字典\n </n-button>\n </n-space>\n </div>\n <div class=\"mb-table\">\n <mb-table ref=\"table\" v-bind=\"tableOptions\"/>\n </div>\n\n <mb-modal :size=\"$global.uiSize.value\" ref=\"dictDialog\" :title=\"dialogTitle\" width=\"600px\" @confirm=\"save($event)\">\n <n-form :size=\"$global.uiSize.value\" ref=\"dataForm\" :rules=\"rules\" :model=\"temp\" label-placement=\"left\" label-width=\"80px\">\n <n-grid :cols=\"24\">\n <n-gi :span=\"12\">\n <n-form-item label=\"字典类型\" path=\"dictType\">\n <mb-select v-model=\"temp.dictType\" type=\"dict_type\"/>\n </n-form-item>\n </n-gi>\n <n-gi :span=\"12\">\n <n-form-item label=\"类型\" path=\"type\">\n <n-input v-model:value=\"temp.type\"/>\n </n-form-item>\n </n-gi>\n </n-grid>\n <n-grid :cols=\"24\">\n <n-gi :span=\"12\">\n <n-form-item label=\"描述\" path=\"descRibe\">\n <n-input v-model:value=\"temp.descRibe\"/>\n </n-form-item>\n </n-gi>\n <n-gi :span=\"12\">\n <n-form-item label=\"备注\" path=\"remarks\">\n <n-input v-model:value=\"temp.remarks\"/>\n </n-form-item>\n </n-gi>\n </n-grid>\n </n-form>\n </mb-modal>\n\n <mb-modal ref=\"dictItemsDialog\" title=\"字典项\" width=\"1400px\" :show-footer=\"false\">\n <dict-items v-model:dict-id=\"dictId\"/>\n </mb-modal>\n\n </div>\n</template>\n\n<script setup>\n\nimport {ref, reactive, nextTick} from \'vue\'\nimport {useDictStore} from \"@/store/modules/dictStore\";\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</script>\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 <style> tags present */', 1, NULL, 0, '1', '2024-03-07 10:57:10', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('29d82244-d928-11ee-9675-c2b02ed3977b', '0', 'system', NULL, NULL, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('63227c407c5d40f98df2486390a6f841', 'fc19e04fa384462d9948c18092f30287', 'menu-list', '<template>\n <div class=\"mb-list\">\n <div class=\"mb-search\">\n <n-space>\n <n-input v-model:value=\"searchValue\" :size=\"$global.uiSize.value\" @keyup.enter=\"searchMenu\" placeholder=\"菜单名称、链接、权限标识、关联组件\"\n style=\"width: 270px\"></n-input>\n <n-button type=\"primary\" :size=\"$global.uiSize.value\" @click=\"searchMenu\">\n <mb-icon icon=\"Search\" />\n 搜索\n </n-button>\n <n-button :size=\"$global.uiSize.value\" @click=\"() => { searchValue = \'\'; searchMenu() }\">\n <mb-icon icon=\"TrashOutline\" />\n 清空\n </n-button>\n </n-space>\n </div>\n <div class=\"mb-toolbar\">\n <n-space>\n <n-button :size=\"$global.uiSize.value\" type=\"primary\" @click=\"addSubMenu(\'0\')\" v-permission=\"\'menu:save\'\">\n <mb-icon icon=\"AddOutline\" />\n 添加菜单\n </n-button>\n <n-button :size=\"$global.uiSize.value\" type=\"primary\" @click=\"() => table.toggleExpand()\">\n <mb-icon icon=\"ArrowDownOutline\" />\n 展开/折叠\n </n-button>\n </n-space>\n </div>\n <div class=\"mb-table\">\n <mb-table ref=\"table\" v-bind=\"tableOptions\"/>\n </div>\n <mb-modal ref=\"menuFormDialog\" width=\"650px\" :title=\"dialogTitle\" @confirm=\"menuFormRef.save($event)\">\n <menu-form ref=\"menuFormRef\" :menu-tree=\"menuTree\" :menu-data=\"menuData\" @reload-table=\"reloadTable\"/>\n </mb-modal>\n </div>\n</template>\n\n<script setup>\n\nimport {ref, reactive, onMounted, nextTick, watch, h} from \'vue\'\nimport MbIcon from \'@/components/magic/basic/mb-icon.vue\';\nimport { isEmpty } from \'lodash-es\'\n\n\nlet menuTree = ref([])\nconst menuData = ref([])\nlet searchValue = ref(\'\')\nconst table = ref()\nconst tableOptions = reactive({\n id: \'menu-list\',\n virtualScroll: true,\n loading: false,\n showNo: false,\n page: false,\n cols: [\n {\n field: \'name\',\n label: \'\',\n type: \'html\'\n },\n {\n field: \'url\',\n label: \'\',\n type: \'html\'\n },\n {\n field: \'permission\',\n label: \'\',\n width: 150,\n type: \'html\'\n },\n {\n field: \'componentName\',\n label: \'\',\n width: 150,\n type: \'html\'\n },\n {\n field: \'icon\',\n label: \'\',\n render(row) {\n if (row.icon) {\n return h(MbIcon, { icon: row.icon })\n }\n }\n },\n {\n field: \'sort\',\n label: \'\',\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 180,\n buttons: [\n {\n label: \'\',\n link: true,\n click: (row) => {\n $common.get(\'/system/menu/sort/up\', {\n id: row.id,\n pid: row.pid,\n sort: row.sort\n }).then(() => {\n reloadTable()\n })\n }\n },\n {\n label: \'\',\n link: true,\n click: (row) => {\n $common.get(\'/system/menu/sort/down\', {\n id: row.id,\n pid: row.pid,\n sort: row.sort\n }).then(() => {\n reloadTable()\n })\n }\n }\n ]\n },\n {\n field: \'isShow\',\n label: \'\',\n type: \'switch\',\n width: 100,\n change: (row) => {\n $common.get(\'/system/menu/change\', {\n id: row.id,\n isShow: row.isShow\n })\n }\n },\n {\n field: \'keepAlive\',\n label: \'\',\n type: \'switch\',\n width: 100,\n if: (row) => {\n if (row.isShow == 0) {\n return false\n }\n if (!isEmpty(row.children) && row.children.some(it => it.isShow == 1)) {\n return false\n }\n return row.url ? true : false\n },\n change: (row) => {\n $common.get(\'/system/menu/change\', {\n id: row.id,\n keepAlive: row.keepAlive\n })\n }\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 280,\n fixed: \'right\',\n align: \'left\',\n buttons: [\n {\n label: \'\',\n link: true,\n permission: \'menu:save\',\n click: (row) => {\n addSubMenu(row.id)\n }\n },\n {\n label: \'\',\n link: true,\n permission: \'menu:save\',\n click: (row) => {\n handleUpdate(row)\n }\n },\n {\n label: \'\',\n link: true,\n permission: \'menu:delete\',\n click: (row) => {\n $common.handleDelete({\n url: \'/system/menu/delete\',\n id: row.id,\n done: () => reloadTable()\n })\n }\n }\n ]\n }\n ]\n})\nconst dialogTitle = ref(\'\')\nconst menuFormDialog = ref()\nconst menuFormRef = ref()\n\nfunction reloadTable() {\n tableOptions.loading = true\n $common.get(\'/system/menu/tree\').then(res => {\n menuData.value = res.data.list\n tableOptions.data = menuData.value\n tableOptions.loading = false\n })\n}\n\nfunction searchMenu() {\n table.value.expand()\n if (searchValue.value) {\n tableOptions.data = $treeTable.recursionSearch([\'name\', \'url\', \'permission\', \'componentName\'], $common.copyNew(menuData.value), searchValue.value)\n } else {\n tableOptions.data = menuData.value\n }\n}\n\nfunction addSubMenu(id) {\n dialogTitle.value = \'\'\n menuFormDialog.value.show()\n nextTick(() => {\n menuFormRef.value.addSubMenu(id)\n })\n}\n\nfunction handleUpdate(row) {\n dialogTitle.value = \'\'\n menuFormDialog.value.show()\n nextTick(() => {\n menuFormRef.value.getInfo(row);\n })\n}\n\nonMounted(() => reloadTable())\n\nwatch(menuData, () => {\n menuTree.value = [{\n label: \'\',\n key: \'0\',\n children: $treeTable.genTree(menuData.value)\n }]\n})\n\n</script>\n', '/* Analyzed bindings: {\n \"ref\": \"setup-const\",\n \"reactive\": \"setup-const\",\n \"onMounted\": \"setup-const\",\n \"nextTick\": \"setup-const\",\n \"watch\": \"setup-const\",\n \"h\": \"setup-const\",\n \"MbIcon\": \"setup-const\",\n \"isEmpty\": \"setup-maybe-ref\",\n \"menuTree\": \"setup-let\",\n \"menuData\": \"setup-ref\",\n \"searchValue\": \"setup-let\",\n \"table\": \"setup-ref\",\n \"tableOptions\": \"setup-reactive-const\",\n \"dialogTitle\": \"setup-ref\",\n \"menuFormDialog\": \"setup-ref\",\n \"menuFormRef\": \"setup-ref\",\n \"reloadTable\": \"setup-const\",\n \"searchMenu\": \"setup-const\",\n \"addSubMenu\": \"setup-const\",\n \"handleUpdate\": \"setup-const\"\n} */\nconst _unref = ___magic__import__(\'vue\', \'unref\');\r\nconst _resolveComponent = ___magic__import__(\'vue\', \'resolveComponent\');\r\nconst _isRef = ___magic__import__(\'vue\', \'isRef\');\r\nconst _withKeys = ___magic__import__(\'vue\', \'withKeys\');\r\nconst _createVNode = ___magic__import__(\'vue\', \'createVNode\');\r\nconst _createTextVNode = ___magic__import__(\'vue\', \'createTextVNode\');\r\nconst _withCtx = ___magic__import__(\'vue\', \'withCtx\');\r\nconst _createElementVNode = ___magic__import__(\'vue\', \'createElementVNode\');\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 _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 onMounted = ___magic__import__(\'vue\', \'onMounted\');\r\nconst nextTick = ___magic__import__(\'vue\', \'nextTick\');\r\nconst watch = ___magic__import__(\'vue\', \'watch\');\r\nconst h = ___magic__import__(\'vue\', \'h\');\nconst MbIcon = ___magic__import__(\'@/components/magic/basic/mb-icon.vue\', \'*\');\nconst isEmpty = ___magic__import__(\'lodash-es\', \'isEmpty\');\n\n\n\nconst __sfc__ = {\n __name: \'mb-sfc-compiler\',\n setup(__props) {\n\n\nlet menuTree = ref([])\nconst menuData = ref([])\nlet searchValue = ref(\'\')\nconst table = ref()\nconst tableOptions = reactive({\n id: \'menu-list\',\n virtualScroll: true,\n loading: false,\n showNo: false,\n page: false,\n cols: [\n {\n field: \'name\',\n label: \'\',\n type: \'html\'\n },\n {\n field: \'url\',\n label: \'\',\n type: \'html\'\n },\n {\n field: \'permission\',\n label: \'\',\n width: 150,\n type: \'html\'\n },\n {\n field: \'componentName\',\n label: \'\',\n width: 150,\n type: \'html\'\n },\n {\n field: \'icon\',\n label: \'\',\n render(row) {\n if (row.icon) {\n return h(MbIcon, { icon: row.icon })\n }\n }\n },\n {\n field: \'sort\',\n label: \'\',\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 180,\n buttons: [\n {\n label: \'\',\n link: true,\n click: (row) => {\n $common.get(\'/system/menu/sort/up\', {\n id: row.id,\n pid: row.pid,\n sort: row.sort\n }).then(() => {\n reloadTable()\n })\n }\n },\n {\n label: \'\',\n link: true,\n click: (row) => {\n $common.get(\'/system/menu/sort/down\', {\n id: row.id,\n pid: row.pid,\n sort: row.sort\n }).then(() => {\n reloadTable()\n })\n }\n }\n ]\n },\n {\n field: \'isShow\',\n label: \'\',\n type: \'switch\',\n width: 100,\n change: (row) => {\n $common.get(\'/system/menu/change\', {\n id: row.id,\n isShow: row.isShow\n })\n }\n },\n {\n field: \'keepAlive\',\n label: \'\',\n type: \'switch\',\n width: 100,\n if: (row) => {\n if (row.isShow == 0) {\n return false\n }\n if (!isEmpty(row.children) && row.children.some(it => it.isShow == 1)) {\n return false\n }\n return row.url ? true : false\n },\n change: (row) => {\n $common.get(\'/system/menu/change\', {\n id: row.id,\n keepAlive: row.keepAlive\n })\n }\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 280,\n fixed: \'right\',\n align: \'left\',\n buttons: [\n {\n label: \'\',\n link: true,\n permission: \'menu:save\',\n click: (row) => {\n addSubMenu(row.id)\n }\n },\n {\n label: \'\',\n link: true,\n permission: \'menu:save\',\n click: (row) => {\n handleUpdate(row)\n }\n },\n {\n label: \'\',\n link: true,\n permission: \'menu:delete\',\n click: (row) => {\n $common.handleDelete({\n url: \'/system/menu/delete\',\n id: row.id,\n done: () => reloadTable()\n })\n }\n }\n ]\n }\n ]\n})\nconst dialogTitle = ref(\'\')\nconst menuFormDialog = ref()\nconst menuFormRef = ref()\n\nfunction reloadTable() {\n tableOptions.loading = true\n $common.get(\'/system/menu/tree\').then(res => {\n menuData.value = res.data.list\n tableOptions.data = menuData.value\n tableOptions.loading = false\n })\n}\n\nfunction searchMenu() {\n table.value.expand()\n if (searchValue.value) {\n tableOptions.data = $treeTable.recursionSearch([\'name\', \'url\', \'permission\', \'componentName\'], $common.copyNew(menuData.value), searchValue.value)\n } else {\n tableOptions.data = menuData.value\n }\n}\n\nfunction addSubMenu(id) {\n dialogTitle.value = \'\'\n menuFormDialog.value.show()\n nextTick(() => {\n menuFormRef.value.addSubMenu(id)\n })\n}\n\nfunction handleUpdate(row) {\n dialogTitle.value = \'\'\n menuFormDialog.value.show()\n nextTick(() => {\n menuFormRef.value.getInfo(row);\n })\n}\n\nonMounted(() => reloadTable())\n\nwatch(menuData, () => {\n menuTree.value = [{\n label: \'\',\n key: \'0\',\n children: $treeTable.genTree(menuData.value)\n }]\n})\n\n\nreturn (_ctx, _cache) => {\n const _component_n_input = _resolveComponent(\"n-input\")\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_menu_form = _resolveComponent(\"menu-form\")\n const _component_mb_modal = _resolveComponent(\"mb-modal\")\n const _directive_permission = _resolveDirective(\"permission\")\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_n_space, null, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: _unref(searchValue),\n \"onUpdate:value\": _cache[0] || (_cache[0] = $event => (_isRef(searchValue) ? (searchValue).value = $event : searchValue = $event)),\n size: _ctx.$global.uiSize.value,\n onKeyup: _withKeys(searchMenu, [\"enter\"]),\n placeholder: \"菜单名称、链接、权限标识、关联组件\",\n style: {\"width\":\"270px\"}\n }, null, 8 /* PROPS */, [\"value\", \"size\"]),\n _createVNode(_component_n_button, {\n type: \"primary\",\n size: _ctx.$global.uiSize.value,\n onClick: searchMenu\n }, {\n default: _withCtx(() => [\n _createVNode(MbIcon, { icon: \"Search\" }),\n _createTextVNode(\" 搜索 \")\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\"]),\n _createVNode(_component_n_button, {\n size: _ctx.$global.uiSize.value,\n onClick: _cache[1] || (_cache[1] = () => { _isRef(searchValue) ? searchValue.value = \'\' : searchValue = \'\'; searchMenu() })\n }, {\n default: _withCtx(() => [\n _createVNode(MbIcon, { icon: \"TrashOutline\" }),\n _createTextVNode(\" 清空 \")\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\"])\n ]),\n _: 1 /* STABLE */\n })\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: _cache[2] || (_cache[2] = $event => (addSubMenu(\'0\')))\n }, {\n default: _withCtx(() => [\n _createVNode(MbIcon, { icon: \"AddOutline\" }),\n _createTextVNode(\" 添加菜单 \")\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\"])), [\n [_directive_permission, \'menu:save\']\n ]),\n _createVNode(_component_n_button, {\n size: _ctx.$global.uiSize.value,\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = () => table.value.toggleExpand())\n }, {\n default: _withCtx(() => [\n _createVNode(MbIcon, { icon: \"ArrowDownOutline\" }),\n _createTextVNode(\" 展开/折叠 \")\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\"])\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 ref_key: \"menuFormDialog\",\n ref: menuFormDialog,\n width: \"650px\",\n title: dialogTitle.value,\n onConfirm: _cache[4] || (_cache[4] = $event => (menuFormRef.value.save($event)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_menu_form, {\n ref_key: \"menuFormRef\",\n ref: menuFormRef,\n \"menu-tree\": _unref(menuTree),\n \"menu-data\": menuData.value,\n onReloadTable: reloadTable\n }, null, 8 /* PROPS */, [\"menu-tree\", \"menu-data\"])\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"title\"])\n ]))\n}\n}\n\n}\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '/* No <style> tags present */', 1, NULL, 0, '1', '2024-03-07 13:39:14', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('88c17402-d92a-11ee-9675-c2b02ed3977b', '29d82244-d928-11ee-9675-c2b02ed3977b', 'monitor', NULL, NULL, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('8c426b7d397b4ffeb4c9f89b4c318fbb', '9c302653077d47dc9374ba48b9fda579', 'role-list', '<style scoped>\n:deep(.n-form-item .n-form-item-blank) {\n display: table;\n}\n</style>\n\n<template>\n <div class=\"mb-list\">\n <div class=\"mb-search\">\n <mb-search :where=\"tableOptions.where\" @search=\"reloadTable\"/>\n </div>\n <div class=\"mb-toolbar\">\n <n-button :size=\"$global.uiSize.value\" v-permission=\"\'role:save\'\" type=\"primary\" @click=\"handleCreate\">\n <mb-icon icon=\"AddOutline\" />\n 添加角色\n </n-button>\n </div>\n <div class=\"mb-table\">\n <mb-table ref=\"table\" v-bind=\"tableOptions\"/>\n </div>\n <mb-modal :size=\"$global.uiSize.value\" ref=\"roleFormDialog\" :title=\"dialogTitle\" width=\"900px\" @confirm=\"save($event)\">\n <n-form :size=\"$global.uiSize.value\" ref=\"dataForm\" :rules=\"rules\" label-placement=\"left\" :model=\"temp\" label-width=\"80px\">\n <n-grid :cols=\"24\" :x-gap=\"24\">\n <n-gi :span=\"12\">\n <n-form-item label=\"角色名称\" path=\"name\">\n <n-input v-model:value=\"temp.name\"/>\n </n-form-item>\n </n-gi>\n <n-gi :span=\"12\">\n <n-form-item label=\"角色编码\" path=\"code\">\n <n-input v-model:value=\"temp.code\"/>\n </n-form-item>\n </n-gi>\n </n-grid>\n <n-grid :cols=\"24\">\n <n-gi :span=\"24\">\n <n-form-item label=\"角色描述\" path=\"descRibe\">\n <n-input\n type=\"textarea\"\n :rows=\"4\"\n placeholder=\"请输入描述\"\n v-model:value=\"temp.descRibe\">\n </n-input>\n </n-form-item>\n </n-gi>\n </n-grid>\n <n-grid :cols=\"24\">\n <n-gi :span=\"12\">\n <n-form-item label=\"菜单权限\" path=\"menus\">\n <mb-tree\n ref=\"tree\"\n v-model=\"temp.menus\"\n style=\"height: 270px; overflow: auto\"\n url=\"/system/menu/tree\"\n checkable\n search\n />\n </n-form-item>\n </n-gi>\n <n-gi :span=\"12\">\n <n-form-item label=\"数据权限\" path=\"permission\">\n <mb-select v-model=\"temp.permission\" :options=\"permissionData\" style=\"margin-bottom: 5px\"/>\n <mb-tree\n v-if=\"temp.permission == 1\"\n style=\"height: 270px; overflow: auto;\"\n ref=\"office\"\n checkable\n url=\"/system/office/tree\"\n v-model=\"temp.offices\"\n />\n </n-form-item>\n </n-gi>\n </n-grid>\n </n-form>\n </mb-modal>\n\n <mb-modal ref=\"assignPermissionsDialog\" title=\"分配权限\" width=\"550px\"\n @confirm=\"assignPermissions.save($event)\">\n <role-assign-permissions ref=\"assignPermissions\" :key=\"temp.id\" :id=\"temp.id\"\n @close=\"() => { assignPermissionsDialog.hide(); temp.id = \'\' }\"/>\n </mb-modal>\n\n </div>\n</template>\n\n<script setup>\n\nimport {ref, reactive, watch, nextTick} from \'vue\'\nimport {push} from \'@/scripts/router\'\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</script>\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}', 1, NULL, 0, '1', '2024-03-07 13:56:55', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('9809888c-d92a-11ee-9675-c2b02ed3977b', '88c17402-d92a-11ee-9675-c2b02ed3977b', 'login-log', '<template>\n <div class=\"mb-list\">\n <div class=\"mb-search\">\n <mb-search :where=\"tableOptions.where\" @search=\"reloadTable\"/>\n </div>\n <div class=\"mb-table\">\n <mb-table ref=\"table\" v-bind=\"tableOptions\"/>\n </div>\n </div>\n</template>\n\n<script setup>\nimport {ref, reactive, h} from \'vue\'\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</script>\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 <style> tags present */', 1, NULL, 0, NULL, NULL, NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('9c302653077d47dc9374ba48b9fda579', '29d82244-d928-11ee-9675-c2b02ed3977b', 'role', NULL, NULL, NULL, 0, NULL, 0, '1', '2024-03-07 13:56:50', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('a3bdf806e89b4a5a9d9436b012d57ce9', '88c17402-d92a-11ee-9675-c2b02ed3977b', 'oper-log', '<template>\n <div class=\"mb-list\">\n <div class=\"mb-search\">\n <mb-search :where=\"tableOptions.where\" @search=\"reloadTable\">\n <template #buttons>\n <n-button type=\"primary\" @click=\"table.exportExcel({fileName: \'\'})\">\n <mb-icon icon=\"DownloadOutline\" />\n 导出\n </n-button>\n </template>\n </mb-search>\n </div>\n <div class=\"mb-table\">\n <mb-table ref=\"table\" v-bind=\"tableOptions\"/>\n </div>\n </div>\n</template>\n\n<script setup>\nimport {ref, reactive} from \'vue\'\n\nconst table = ref()\nconst tableOptions = reactive({\n id: \'oper-log\',\n url: \'/system/log/oper/list\',\n where: {\n userIp: {\n label: \'IP\'\n },\n username: {\n label: \'\'\n },\n apiName: {\n label: \'\'\n },\n apiPath: {\n label: \'\'\n },\n costTime: {\n component: \'input\',\n props: {\n pair: true,\n separator: \'-\'\n },\n label: \'\'\n },\n createDate: {\n component: \'date\',\n label: \'\',\n props: {\n type: \'datetimerange\'\n }\n }\n },\n cols: [\n {\n field: \'apiName\',\n label: \'\'\n },\n {\n field: \'apiPath\',\n label: \'\'\n },\n {\n field: \'apiMethod\',\n label: \'\',\n width: \'100px\'\n },\n {\n field: \'userIp\',\n label: \'ip\',\n width: \'150px\'\n },\n {\n field: \'costTime\',\n label: \'\',\n width: \'100px\'\n },\n {\n field: \'userAgent\',\n label: \'\',\n props: {\n \"show-overflow-tooltip\": true\n }\n },\n {\n field: \'username\',\n label: \'\',\n width: \'150px\'\n },\n {\n field: \'createDate\',\n label: \'\',\n width: \'180px\'\n }\n ]\n})\n\nfunction reloadTable() {\n table.value.reload()\n}\n</script>\n', '/* Analyzed bindings: {\n \"ref\": \"setup-const\",\n \"reactive\": \"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 _createTextVNode = ___magic__import__(\'vue\', \'createTextVNode\');\r\nconst _withCtx = ___magic__import__(\'vue\', \'withCtx\');\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\');\n\n\nconst __sfc__ = {\n __name: \'mb-sfc-compiler\',\n setup(__props) {\n\nconst table = ref()\nconst tableOptions = reactive({\n id: \'oper-log\',\n url: \'/system/log/oper/list\',\n where: {\n userIp: {\n label: \'IP\'\n },\n username: {\n label: \'\'\n },\n apiName: {\n label: \'\'\n },\n apiPath: {\n label: \'\'\n },\n costTime: {\n component: \'input\',\n props: {\n pair: true,\n separator: \'-\'\n },\n label: \'\'\n },\n createDate: {\n component: \'date\',\n label: \'\',\n props: {\n type: \'datetimerange\'\n }\n }\n },\n cols: [\n {\n field: \'apiName\',\n label: \'\'\n },\n {\n field: \'apiPath\',\n label: \'\'\n },\n {\n field: \'apiMethod\',\n label: \'\',\n width: \'100px\'\n },\n {\n field: \'userIp\',\n label: \'ip\',\n width: \'150px\'\n },\n {\n field: \'costTime\',\n label: \'\',\n width: \'100px\'\n },\n {\n field: \'userAgent\',\n label: \'\',\n props: {\n \"show-overflow-tooltip\": true\n }\n },\n {\n field: \'username\',\n label: \'\',\n width: \'150px\'\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_icon = _resolveComponent(\"mb-icon\")\n const _component_n_button = _resolveComponent(\"n-button\")\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 }, {\n buttons: _withCtx(() => [\n _createVNode(_component_n_button, {\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = $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_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 <style> tags present */', 1, NULL, 0, '1', '2024-03-07 13:52:32', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('b94688b24b724a50945b55899d6199bc', 'c2e46f717eba4fa69f96358dc1587b77', 'configure-list', '<template>\n <div class=\"mb-list\">\n <div class=\"mb-search\">\n <mb-search :where=\"tableOptions.where\" @search=\"reloadTable\"/>\n </div>\n <div class=\"mb-toolbar\">\n <n-space>\n <n-button :size=\"$global.uiSize.value\" v-permission=\"\'configure:save\'\" type=\"primary\" @click=\"handleCreate\">\n <mb-icon icon=\"AddOutline\" />\n 添加配置\n </n-button>\n </n-space>\n </div>\n <div class=\"mb-table\">\n <mb-table ref=\"table\" v-bind=\"tableOptions\"/>\n </div>\n <mb-modal ref=\"roleFormDialog\" :title=\"dialogTitle\" width=\"900px\" @confirm=\"save($event)\">\n <n-form :size=\"$global.uiSize.value\" ref=\"dataForm\" :rules=\"rules\" :model=\"temp\" label-placement=\"left\" label-width=\"100px\">\n <n-grid :cols=\"24\">\n <n-gi :span=\"12\">\n <n-form-item label=\"键值\" path=\"configureKey\">\n <mb-input :size=\"$global.uiSize.value\" v-model=\"temp.configureKey\"/>\n </n-form-item>\n </n-gi>\n <n-gi :span=\"12\">\n <n-form-item label=\"数据值\" path=\"configureValue\">\n <n-input :size=\"$global.uiSize.value\" v-model:value=\"temp.configureValue\"/>\n </n-form-item>\n </n-gi>\n </n-grid>\n <n-grid :cols=\"24\">\n <n-gi :span=\"12\">\n <n-form-item label=\"名称\" path=\"configureName\">\n <mb-input :size=\"$global.uiSize.value\" v-model:value=\"temp.configureName\"/>\n </n-form-item>\n </n-gi>\n <n-gi :span=\"12\">\n <n-form-item label=\"配置类型\" path=\"configureType\">\n <mb-select :size=\"$global.uiSize.value\" v-model=\"temp.configureType\" type=\"dict_type\"/>\n </n-form-item>\n </n-gi>\n </n-grid>\n <n-grid :cols=\"24\">\n <n-gi :span=\"24\">\n <n-form-item label=\"条件筛选\" path=\"configureCondition\">\n <n-input\n :size=\"$global.uiSize.value\"\n type=\"textarea\"\n :rows=\"4\"\n placeholder=\"请输入条件筛选\"\n v-model:value=\"temp.configureCondition\">\n </n-input>\n </n-form-item>\n </n-gi>\n </n-grid>\n <n-grid :cols=\"24\">\n <n-gi :span=\"24\">\n <n-form-item label=\"配置说明\" path=\"configureDescRibe\">\n <n-input\n :size=\"$global.uiSize.value\"\n type=\"textarea\"\n :rows=\"4\"\n placeholder=\"请输入配置说明\"\n v-model:value=\"temp.configureDescRibe\">\n </n-input>\n </n-form-item>\n </n-gi>\n </n-grid>\n <n-grid :cols=\"24\">\n <n-gi :span=\"24\">\n <n-form-item label=\"备注\" path=\"remarks\">\n <n-input\n :size=\"$global.uiSize.value\"\n type=\"textarea\"\n :rows=\"4\"\n placeholder=\"请输入备注\"\n v-model:value=\"temp.remarks\">\n </n-input>\n </n-form-item>\n </n-gi>\n </n-grid>\n </n-form>\n </mb-modal>\n </div>\n</template>\n\n<script setup>\n\nimport {ref, reactive, nextTick} from \'vue\'\nimport {useDictStore} from \"@/store/modules/dictStore\";\n\nconst dictStore = useDictStore()\n\nconst dialogTitle = ref(\'\')\nconst roleFormDialog = ref()\nconst tableOptions = reactive({\n id: \'configure-list\',\n url: \'/system/configure/list\',\n page: true,\n where: {\n configureCondition: {\n label: \'\'\n },\n configureKey: {\n label: \'\'\n },\n configureValue: {\n label: \'\'\n }\n },\n cols: [\n {\n field: \'configureKey\',\n label: \'\',\n width: 200\n },\n {\n field: \'configureValue\',\n label: \'\'\n },\n {\n field: \'configureName\',\n label: \'\'\n },\n {\n field: \'configureType\',\n label: \'\',\n dictType: \'dict_type\'\n },\n {\n field: \'configureCondition\',\n label: \'\'\n },\n {\n field: \'configureDescRibe\',\n label: \'\',\n width: 200\n },\n {\n field: \'remarks\',\n label: \'\',\n width: 200\n },\n {\n field: \'createDate\',\n label: \'\',\n width: 200\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 220,\n fixed: \'right\',\n buttons: [\n {\n permission: \'configure:save\',\n label: \'\',\n link: true,\n click: (row) => {\n handleUpdate(row)\n }\n },\n {\n permission: \'configure:delete\',\n label: \'\',\n link: true,\n click: (row) => {\n $common.handleDelete({\n url: \'/system/configure/delete\',\n id: row.id,\n done: () => {\n reloadTable()\n dictStore.getDictData()\n }\n })\n }\n }\n ]\n }\n ]\n})\nconst temp = ref(getTemp())\nconst dialogFormVisible = ref(false)\nconst dialogStatus = ref(\'\')\nconst textMap = reactive({\n update: \'\',\n create: \'\'\n})\nconst rules = reactive({\n configureName: {required: true, message: \'\', trigger: \'change\'},\n configureKey: {required: true, message: \'\', trigger: \'change\'},\n configureValue: {required: true, message: \'\', trigger: \'change\'},\n configureType: {required: true, message: \'\', trigger: \'change\'}\n})\nconst table = ref()\nconst dataForm = ref()\n\nfunction getTemp() {\n return {\n id: \'\',\n configureCondition: \'\',\n configureName: \'\',\n configureKey: \'\',\n configureValue: \'\',\n configureType: \'\',\n configureDescRibe: \'\',\n remarks: \'\'\n }\n}\n\nfunction reloadTable() {\n table.value.reload()\n}\n\nfunction handleCreate() {\n temp.value = getTemp()\n dialogTitle.value = \'\'\n roleFormDialog.value.show()\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n}\n\nfunction save() {\n dataForm.value.validate((errors) => {\n if (!errors) {\n $common.post(\'/system/configure/save\', temp.value).then((response) => {\n roleFormDialog.value.hide()\n $message.success((dialogStatus.value === \'create\' ? \'\' : \'\') + \'\')\n reloadTable()\n })\n }\n })\n}\n\nfunction handleUpdate(row) {\n $common.objAssign(temp.value, row)\n dialogTitle.value = \'\'\n roleFormDialog.value.show()\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n}\n\n</script>\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 \"dialogTitle\": \"setup-ref\",\n \"roleFormDialog\": \"setup-ref\",\n \"tableOptions\": \"setup-reactive-const\",\n \"temp\": \"setup-ref\",\n \"dialogFormVisible\": \"setup-ref\",\n \"dialogStatus\": \"setup-ref\",\n \"textMap\": \"setup-reactive-const\",\n \"rules\": \"setup-reactive-const\",\n \"table\": \"setup-ref\",\n \"dataForm\": \"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 dialogTitle = ref(\'\')\nconst roleFormDialog = ref()\nconst tableOptions = reactive({\n id: \'configure-list\',\n url: \'/system/configure/list\',\n page: true,\n where: {\n configureCondition: {\n label: \'\'\n },\n configureKey: {\n label: \'\'\n },\n configureValue: {\n label: \'\'\n }\n },\n cols: [\n {\n field: \'configureKey\',\n label: \'\',\n width: 200\n },\n {\n field: \'configureValue\',\n label: \'\'\n },\n {\n field: \'configureName\',\n label: \'\'\n },\n {\n field: \'configureType\',\n label: \'\',\n dictType: \'dict_type\'\n },\n {\n field: \'configureCondition\',\n label: \'\'\n },\n {\n field: \'configureDescRibe\',\n label: \'\',\n width: 200\n },\n {\n field: \'remarks\',\n label: \'\',\n width: 200\n },\n {\n field: \'createDate\',\n label: \'\',\n width: 200\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 220,\n fixed: \'right\',\n buttons: [\n {\n permission: \'configure:save\',\n label: \'\',\n link: true,\n click: (row) => {\n handleUpdate(row)\n }\n },\n {\n permission: \'configure:delete\',\n label: \'\',\n link: true,\n click: (row) => {\n $common.handleDelete({\n url: \'/system/configure/delete\',\n id: row.id,\n done: () => {\n reloadTable()\n dictStore.getDictData()\n }\n })\n }\n }\n ]\n }\n ]\n})\nconst temp = ref(getTemp())\nconst dialogFormVisible = ref(false)\nconst dialogStatus = ref(\'\')\nconst textMap = reactive({\n update: \'\',\n create: \'\'\n})\nconst rules = reactive({\n configureName: {required: true, message: \'\', trigger: \'change\'},\n configureKey: {required: true, message: \'\', trigger: \'change\'},\n configureValue: {required: true, message: \'\', trigger: \'change\'},\n configureType: {required: true, message: \'\', trigger: \'change\'}\n})\nconst table = ref()\nconst dataForm = ref()\n\nfunction getTemp() {\n return {\n id: \'\',\n configureCondition: \'\',\n configureName: \'\',\n configureKey: \'\',\n configureValue: \'\',\n configureType: \'\',\n configureDescRibe: \'\',\n remarks: \'\'\n }\n}\n\nfunction reloadTable() {\n table.value.reload()\n}\n\nfunction handleCreate() {\n temp.value = getTemp()\n dialogTitle.value = \'\'\n roleFormDialog.value.show()\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n}\n\nfunction save() {\n dataForm.value.validate((errors) => {\n if (!errors) {\n $common.post(\'/system/configure/save\', temp.value).then((response) => {\n roleFormDialog.value.hide()\n $message.success((dialogStatus.value === \'create\' ? \'\' : \'\') + \'\')\n reloadTable()\n })\n }\n })\n}\n\nfunction handleUpdate(row) {\n $common.objAssign(temp.value, row)\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_n_space = _resolveComponent(\"n-space\")\n const _component_mb_table = _resolveComponent(\"mb-table\")\n const _component_mb_input = _resolveComponent(\"mb-input\")\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_mb_select = _resolveComponent(\"mb-select\")\n const _component_n_form = _resolveComponent(\"n-form\")\n const _component_mb_modal = _resolveComponent(\"mb-modal\")\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, \'configure: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 ref_key: \"roleFormDialog\",\n ref: roleFormDialog,\n title: dialogTitle.value,\n width: \"900px\",\n onConfirm: _cache[7] || (_cache[7] = $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\": \"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: \"configureKey\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_input, {\n size: _ctx.$global.uiSize.value,\n modelValue: temp.value.configureKey,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => ((temp.value.configureKey) = $event))\n }, null, 8 /* PROPS */, [\"size\", \"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: \"configureValue\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n size: _ctx.$global.uiSize.value,\n value: temp.value.configureValue,\n \"onUpdate:value\": _cache[1] || (_cache[1] = $event => ((temp.value.configureValue) = $event))\n }, null, 8 /* PROPS */, [\"size\", \"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: \"configureName\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_input, {\n size: _ctx.$global.uiSize.value,\n value: temp.value.configureName,\n \"onUpdate:value\": _cache[2] || (_cache[2] = $event => ((temp.value.configureName) = $event))\n }, null, 8 /* PROPS */, [\"size\", \"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: \"configureType\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_select, {\n size: _ctx.$global.uiSize.value,\n modelValue: temp.value.configureType,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => ((temp.value.configureType) = $event)),\n type: \"dict_type\"\n }, null, 8 /* PROPS */, [\"size\", \"modelValue\"])\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: \"configureCondition\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n size: _ctx.$global.uiSize.value,\n type: \"textarea\",\n rows: 4,\n placeholder: \"请输入条件筛选\",\n value: temp.value.configureCondition,\n \"onUpdate:value\": _cache[4] || (_cache[4] = $event => ((temp.value.configureCondition) = $event))\n }, null, 8 /* PROPS */, [\"size\", \"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: \"configureDescRibe\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n size: _ctx.$global.uiSize.value,\n type: \"textarea\",\n rows: 4,\n placeholder: \"请输入配置说明\",\n value: temp.value.configureDescRibe,\n \"onUpdate:value\": _cache[5] || (_cache[5] = $event => ((temp.value.configureDescRibe) = $event))\n }, null, 8 /* PROPS */, [\"size\", \"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: \"remarks\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n size: _ctx.$global.uiSize.value,\n type: \"textarea\",\n rows: 4,\n placeholder: \"请输入备注\",\n value: temp.value.remarks,\n \"onUpdate:value\": _cache[6] || (_cache[6] = $event => ((temp.value.remarks) = $event))\n }, null, 8 /* PROPS */, [\"size\", \"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 */, [\"title\"])\n ]))\n}\n}\n\n}\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '/* No <style> tags present */', 1, NULL, 0, '1', '2024-03-07 10:52:47', '1', '2024-03-09 11:52:57');
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('bc38eb5038ce44aab4bd586fb32d79bb', 'fc061efbc39948d59aafc3905591c935', 'user-list', '<style scoped>\n.left {\n width: calc(20% - 20px);\n margin-right: 20px;\n float: left;\n}\n\n.right {\n width: 80%;\n height: 100%;\n float: right;\n}\n\n.app-container {\n width: 100%;\n height: 100%;\n}\n</style>\n\n<template>\n <div class=\"app-container\">\n <div class=\"left\">\n <mb-tree\n url=\"/system/office/tree\"\n v-model=\"tableOptions.where.officeId\"\n :expand=\"false\"\n search\n search-width=\"100%\"\n checkable\n :checked=\"false\"\n @check-change=\"checkChange\"\n />\n </div>\n <div class=\"right\">\n <div class=\"mb-list\">\n <div class=\"mb-search\">\n <mb-search :where=\"tableOptions.where\" @search=\"reloadTable\">\n <template #buttons>\n <n-button type=\"primary\" @click=\"table.exportExcel({ fileName: \'\' })\">\n <mb-icon icon=\"DownloadOutline\" />\n 导出\n </n-button>\n </template>\n </mb-search>\n </div>\n\n <div class=\"mb-toolbar\">\n <n-button :size=\"$global.uiSize.value\" v-permission=\"\'user:save\'\" type=\"primary\" @click=\"handleCreate\">\n <mb-icon icon=\"AddOutline\" />\n 添加用户\n </n-button>\n <!-- <mb-button v-permission=\"\'user:delete\'\" plain :request-url=\"\'/system/user/delete\'\" :btn-type=\"\'delete\'\" :request-data=\"{ id: ids }\" :after-handler=\"reloadTable\" />-->\n <!-- <mb-upload-file ref=\"importUserRef\" action=\"/system/user/import/preview\" label=\"导入用户\" :show-tip=\"false\" :show-file-list=\"false\" :show-remove-tip=\"false\" :on-success=\"importUserSuccess\" />-->\n </div>\n\n <div class=\"mb-table\">\n <mb-table ref=\"table\" v-bind=\"tableOptions\" v-model:checked-row-keys=\"ids\">\n <template #roles=\"{row,col}\">\n <n-tag :size=\"$global.uiSize.value\" style=\"margin-right:4px;\" v-if=\"row.roles\" :bordered=\"false\"\n v-for=\"(it,idx) in row.roles.split(\',\')\" type=\"info\">\n {{ it }}\n </n-tag>\n </template>\n </mb-table>\n </div>\n\n <mb-modal ref=\"previewUsersDialog\" title=\"预览数据\" @confirm=\"importUsers\">\n <mb-table v-bind=\"importUserTableOptions\"/>\n </mb-modal>\n\n <mb-modal ref=\"userFormDialog\" :title=\"dialogTitle\" @confirm=\"userFormRef.save($event)\" width=\"670px\">\n <user-form ref=\"userFormRef\" :key=\"\'userForm\'\" @reload-table=\"reloadTable\"/>\n </mb-modal>\n </div>\n </div>\n <div class=\"clear\"></div>\n </div>\n</template>\n\n<script setup>\n\nimport {ref, reactive, nextTick} from \'vue\'\nimport {useRoute} from \'vue-router\'\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</script>\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(\" <mb-button v-permission=\\\"\'user:delete\'\\\" plain :request-url=\\\"\'/system/user/delete\'\\\" :btn-type=\\\"\'delete\'\\\" :request-data=\\\"{ id: ids }\\\" :after-handler=\\\"reloadTable\\\" />\"),\n _createCommentVNode(\" <mb-upload-file ref=\\\"importUserRef\\\" action=\\\"/system/user/import/preview\\\" label=\\\"导入用户\\\" :show-tip=\\\"false\\\" :show-file-list=\\\"false\\\" :show-remove-tip=\\\"false\\\" :on-success=\\\"importUserSuccess\\\" />\")\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}', 1, NULL, 0, '1', '2024-03-07 14:03:06', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('c0ad38bca2164af08f1c2b2bc90245df', 'fc19e04fa384462d9948c18092f30287', 'menu-form', '<template>\n <div>\n <n-form :size=\"$global.uiSize.value\" ref=\"dataForm\" :rules=\"rules\" :model=\"temp\" label-placement=\"left\" label-width=\"100px\">\n <n-grid :cols=\"24\">\n <n-gi :span=\"12\">\n <n-form-item label=\"菜单类型\" path=\"type\">\n <n-radio-group v-model:value=\"menuType\">\n <n-radio-button key=\"menu\" value=\"menu\" label=\"菜单\"/>\n <n-radio-button key=\"button\" value=\"button\" label=\"按钮\"/>\n </n-radio-group>\n </n-form-item>\n </n-gi>\n <n-gi :span=\"12\">\n <n-form-item label=\"上级菜单\" path=\"pid\">\n <n-tree-select\n v-model:value=\"temp.pid\"\n :options=\"menuTree\"\n />\n </n-form-item>\n </n-gi>\n </n-grid>\n <n-form-item label=\"菜单名称\" path=\"name\">\n <n-input v-model:value=\"temp.name\"/>\n </n-form-item>\n <n-form-item label=\"菜单链接\" path=\"url\" v-if=\"menuType == \'menu\'\">\n <n-input v-model:value=\"temp.url\"/>\n </n-form-item>\n <n-form-item label=\"打开方式\" path=\"openMode\"\n v-if=\"menuType == \'menu\'\">\n <n-radio-group v-model:value=\"openModeRef\">\n <n-radio-button key=\"0\" value=\"0\" label=\"页签\"/>\n <n-radio-button key=\"1\" value=\"1\" label=\"新标签页\"/>\n <n-radio-button key=\"2\" value=\"2\" label=\"iframe\"/>\n </n-radio-group>\n </n-form-item>\n <n-form-item label=\"关联组件\" path=\"componentId\"\n v-if=\"menuType == \'menu\' && !(temp.url.startsWith(\'http\') || (temp.url.startsWith(\'/\') && temp.url.indexOf(\'.htm\') != -1))\">\n <n-tree-select\n v-model:value=\"temp.componentId\"\n :options=\"componentTree\"\n key-field=\"id\"\n label-field=\"name\"\n check-strategy=\"child\"\n default-expand-all\n />\n </n-form-item>\n <n-form-item label=\"权限标识\" path=\"permission\" v-if=\"menuType == \'button\'\">\n <n-input v-model:value=\"temp.permission\"/>\n </n-form-item>\n\n <div class=\"flex flex-wrap\">\n <div style=\"width: 50%\">\n <n-form-item label=\"菜单显示\" path=\"isShow\" v-if=\"menuType == \'menu\'\">\n <n-radio-group v-model:value=\"temp.isShow\">\n <n-radio-button :key=\"1\" :value=\"1\" label=\"显示\"/>\n <n-radio-button :key=\"0\" :value=\"0\" label=\"不显示\"/>\n </n-radio-group>\n </n-form-item>\n </div>\n <div style=\"width: 50%\">\n <n-form-item label=\"路由缓存\" path=\"keepAlive\" v-if=\"menuType == \'menu\'\">\n <n-radio-group v-model:value=\"temp.keepAlive\">\n <n-radio-button :key=\"1\" :value=\"1\" label=\"缓存\"/>\n <n-radio-button :key=\"0\" :value=\"0\" label=\"不缓存\"/>\n </n-radio-group>\n </n-form-item>\n </div>\n <div style=\"width: 50%\">\n <n-form-item label=\"排序\" path=\"sort\">\n <n-input-number v-model:value=\"temp.sort\" button-placement=\"both\"/>\n </n-form-item>\n </div>\n <div style=\"width: 50%\">\n <n-form-item label=\"图标\" path=\"icon\">\n <a @click=\"openIcons\">\n <n-input v-model:value=\"temp.icon\">\n <template #suffix>\n <mb-icon :icon=\"temp.icon\" />\n </template>\n </n-input>\n </a>\n </n-form-item>\n </div>\n </div>\n </n-form>\n <mb-modal ref=\"iconDialog\" width=\"650px\" title=\"选择图标\">\n <menu-icons :select-icon=\"selectIcon\" />\n </mb-modal>\n </div>\n</template>\n\n<script setup>\nimport {ref, reactive, watch, nextTick} from \'vue\'\n\nconst props = defineProps({\n menuTree: {\n type: Array,\n default: () => []\n },\n menuData: {\n type: Array,\n default: () => []\n }\n})\n\nconst emit = defineEmits([\'reload-table\'])\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\ndefineExpose({addSubMenu, getInfo, save})\n\n</script>\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 <style> tags present */', 1, NULL, 0, '1', '2024-03-07 13:40:18', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('c20b952d5b2747a3bc393bdaa7e86ef1', 'd17f4964dc664a4bafbd7af6a7e0596d', 'dict-items', '<template>\n <div class=\"mb-list\" style=\"height: 600px\">\n <div class=\"mb-search\">\n <mb-search :where=\"tableOptions.where\" @search=\"reloadTable\" not-reset=\"dictId\"/>\n </div>\n <div class=\"mb-toolbar\">\n <n-space>\n <n-button :size=\"$global.uiSize.value\" v-permission=\"\'dict:items:save\'\" type=\"primary\" @click=\"handleCreate\">\n <mb-icon icon=\"AddOutline\" />\n 添加字典项\n </n-button>\n </n-space>\n </div>\n <div class=\"mb-table\">\n <mb-table ref=\"table\" v-bind=\"tableOptions\"/>\n </div>\n\n <mb-modal :size=\"$global.uiSize.value\" ref=\"formDialog\" :title=\"dialogTitle\" width=\"520px\" @confirm=\"save($event)\">\n <n-form ref=\"dataForm\" :size=\"$global.uiSize.value\" :rules=\"rules\" :model=\"temp\" label-placement=\"left\" label-width=\"80px\">\n <n-grid :cols=\"24\">\n <n-gi :span=\"12\">\n <n-form-item label=\"标签名\" path=\"label\">\n <n-input v-model:value=\"temp.label\"/>\n </n-form-item>\n </n-gi>\n <n-gi :span=\"12\">\n <n-form-item label=\"值\" path=\"value\">\n <n-input v-model:value=\"temp.value\"/>\n </n-form-item>\n </n-gi>\n </n-grid>\n <n-grid :cols=\"24\">\n <n-gi :span=\"12\">\n <n-form-item label=\"排序\" path=\"sort\">\n <n-input-number v-model:value=\"temp.sort\" button-placement=\"both\"/>\n </n-form-item>\n </n-gi>\n <n-gi :span=\"12\">\n <n-form-item label=\"备注\" path=\"remarks\">\n <n-input v-model:value=\"temp.remarks\"/>\n </n-form-item>\n </n-gi>\n </n-grid>\n </n-form>\n </mb-modal>\n\n </div>\n</template>\n\n<script setup>\n\nimport {ref, reactive, nextTick} from \'vue\'\nimport {useDictStore} from \"@/store/modules/dictStore\";\n\nconst dictStore = useDictStore()\n\nconst props = defineProps({\n dictId: {\n type: String,\n default: \'\'\n }\n})\n\nconst tableOptions = reactive({\n id: \'dict-items\',\n url: \'/system/dict/items/list\',\n page: true,\n where: {\n label: {\n label: \'\'\n },\n value: {\n label: \'\'\n },\n dictId: props.dictId\n },\n cols: [\n {\n field: \'label\',\n label: \'\'\n },\n {\n field: \'value\',\n label: \'\'\n },\n {\n field: \'sort\',\n label: \'\'\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 150,\n buttons: [\n {\n label: \'\',\n link: true,\n click: (row) => {\n $common.get(\'/system/dict/items/sort/up\', {\n id: row.id,\n sort: row.sort,\n dictId: props.dictId\n }).then(() => {\n reloadTable()\n })\n }\n },\n {\n label: \'\',\n link: true,\n click: (row) => {\n $common.get(\'/system/dict/items/sort/down\', {\n id: row.id,\n sort: row.sort,\n dictId: props.dictId\n }).then(() => {\n reloadTable()\n })\n }\n }\n ]\n },\n {\n field: \'remarks\',\n label: \'\'\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 160,\n fixed: \'right\',\n buttons: [\n {\n permission: \'dict:items:save\',\n label: \'\',\n link: true,\n click: (row) => {\n handleUpdate(row)\n }\n },\n {\n permission: \'dict:items:delete\',\n label: \'\',\n link: true,\n click: (row) => {\n $common.handleDelete({\n url: \'/system/dict/items/delete\',\n id: row.id,\n done: () => {\n reloadTable()\n $common.getDictData()\n }\n })\n }\n }\n ]\n }\n ]\n})\nconst dialogTitle = ref(\'\')\nconst rules = reactive({\n value: {required: true, message: \'\', trigger: \'change\'},\n label: {required: true, message: \'\', trigger: \'change\'},\n sort: {type: \'number\', required: true, message: \'\', trigger: \'change\'}\n})\nconst temp = ref(getTemp())\nconst table = ref()\nconst formDialog = ref()\nconst dataForm = ref()\n\nfunction reloadTable() {\n table.value.reload()\n}\n\nfunction getTemp() {\n return {\n id: \'\',\n value: \'\',\n label: \'\',\n dictId: props.dictId,\n sort: 0,\n remarks: \'\'\n }\n}\n\nfunction getSort() {\n $common.get(\'/system/dict/items/sort\', {dictId: props.dictId}).then(res => {\n temp.value.sort = res.data\n })\n}\n\nfunction handleCreate() {\n temp.value = getTemp()\n getSort()\n dialogTitle.value = \'\'\n formDialog.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/items/save\', temp.value).then(() => {\n d.hideLoading()\n formDialog.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 formDialog.value.show()\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n}\n\n</script>\n', '/* Analyzed bindings: {\n \"dictId\": \"props\",\n \"ref\": \"setup-const\",\n \"reactive\": \"setup-const\",\n \"nextTick\": \"setup-const\",\n \"useDictStore\": \"setup-maybe-ref\",\n \"dictStore\": \"setup-maybe-ref\",\n \"props\": \"setup-reactive-const\",\n \"tableOptions\": \"setup-reactive-const\",\n \"dialogTitle\": \"setup-ref\",\n \"rules\": \"setup-reactive-const\",\n \"temp\": \"setup-ref\",\n \"table\": \"setup-ref\",\n \"formDialog\": \"setup-ref\",\n \"dataForm\": \"setup-ref\",\n \"reloadTable\": \"setup-const\",\n \"getTemp\": \"setup-const\",\n \"getSort\": \"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 = {\n class: \"mb-list\",\n style: {\"height\":\"600px\"}\n}\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 props: {\n dictId: {\n type: String,\n default: \'\'\n }\n},\n setup(__props) {\n\n\nconst dictStore = useDictStore()\n\nconst props = __props\n\nconst tableOptions = reactive({\n id: \'dict-items\',\n url: \'/system/dict/items/list\',\n page: true,\n where: {\n label: {\n label: \'\'\n },\n value: {\n label: \'\'\n },\n dictId: props.dictId\n },\n cols: [\n {\n field: \'label\',\n label: \'\'\n },\n {\n field: \'value\',\n label: \'\'\n },\n {\n field: \'sort\',\n label: \'\'\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 150,\n buttons: [\n {\n label: \'\',\n link: true,\n click: (row) => {\n $common.get(\'/system/dict/items/sort/up\', {\n id: row.id,\n sort: row.sort,\n dictId: props.dictId\n }).then(() => {\n reloadTable()\n })\n }\n },\n {\n label: \'\',\n link: true,\n click: (row) => {\n $common.get(\'/system/dict/items/sort/down\', {\n id: row.id,\n sort: row.sort,\n dictId: props.dictId\n }).then(() => {\n reloadTable()\n })\n }\n }\n ]\n },\n {\n field: \'remarks\',\n label: \'\'\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 160,\n fixed: \'right\',\n buttons: [\n {\n permission: \'dict:items:save\',\n label: \'\',\n link: true,\n click: (row) => {\n handleUpdate(row)\n }\n },\n {\n permission: \'dict:items:delete\',\n label: \'\',\n link: true,\n click: (row) => {\n $common.handleDelete({\n url: \'/system/dict/items/delete\',\n id: row.id,\n done: () => {\n reloadTable()\n $common.getDictData()\n }\n })\n }\n }\n ]\n }\n ]\n})\nconst dialogTitle = ref(\'\')\nconst rules = reactive({\n value: {required: true, message: \'\', trigger: \'change\'},\n label: {required: true, message: \'\', trigger: \'change\'},\n sort: {type: \'number\', required: true, message: \'\', trigger: \'change\'}\n})\nconst temp = ref(getTemp())\nconst table = ref()\nconst formDialog = ref()\nconst dataForm = ref()\n\nfunction reloadTable() {\n table.value.reload()\n}\n\nfunction getTemp() {\n return {\n id: \'\',\n value: \'\',\n label: \'\',\n dictId: props.dictId,\n sort: 0,\n remarks: \'\'\n }\n}\n\nfunction getSort() {\n $common.get(\'/system/dict/items/sort\', {dictId: props.dictId}).then(res => {\n temp.value.sort = res.data\n })\n}\n\nfunction handleCreate() {\n temp.value = getTemp()\n getSort()\n dialogTitle.value = \'\'\n formDialog.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/items/save\', temp.value).then(() => {\n d.hideLoading()\n formDialog.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 formDialog.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_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_n_input_number = _resolveComponent(\"n-input-number\")\n const _component_n_form = _resolveComponent(\"n-form\")\n const _component_mb_modal = _resolveComponent(\"mb-modal\")\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 \"not-reset\": \"dictId\"\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:items: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: \"formDialog\",\n ref: formDialog,\n title: dialogTitle.value,\n width: \"520px\",\n onConfirm: _cache[4] || (_cache[4] = $event => (save($event)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form, {\n ref_key: \"dataForm\",\n ref: dataForm,\n size: _ctx.$global.uiSize.value,\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: \"label\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.label,\n \"onUpdate:value\": _cache[0] || (_cache[0] = $event => ((temp.value.label) = $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: \"value\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.value,\n \"onUpdate:value\": _cache[1] || (_cache[1] = $event => ((temp.value.value) = $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: \"sort\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input_number, {\n value: temp.value.sort,\n \"onUpdate:value\": _cache[2] || (_cache[2] = $event => ((temp.value.sort) = $event)),\n \"button-placement\": \"both\"\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 ]))\n}\n}\n\n}\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '/* No <style> tags present */', 1, NULL, 0, '1', '2024-03-07 10:57:18', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('c2e46f717eba4fa69f96358dc1587b77', '29d82244-d928-11ee-9675-c2b02ed3977b', 'configure', NULL, NULL, NULL, 0, NULL, 0, '1', '2024-03-07 10:52:41', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('c64a8b964c6e40dfbe4c3908fdea9553', '88c17402-d92a-11ee-9675-c2b02ed3977b', 'druid', '<template>\n <iframe :src=\"$global.baseApi + \'druid/index.html\'\" width=\"100%\" height=\"100%\" frameborder=\"0\"></iframe>\n</template>\n', 'const __sfc__ = {}\nconst _openBlock = ___magic__import__(\'vue\', \'openBlock\');\r\nconst _createElementBlock = ___magic__import__(\'vue\', \'createElementBlock\');\n\nconst _hoisted_1 = [\"src\"]\nfunction render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"iframe\", {\n src: _ctx.$global.baseApi + \'druid/index.html\',\n width: \"100%\",\n height: \"100%\",\n frameborder: \"0\"\n }, null, 8 /* PROPS */, _hoisted_1))\n}\n__sfc__.render = render\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '/* No <style> tags present */', 1, NULL, 0, '1', '2024-03-07 13:52:03', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('c99bf0b5780e4f1996211c70e56f49f7', 'fc061efbc39948d59aafc3905591c935', 'user-form', '<template>\n <n-form :size=\"$global.uiSize.value\" ref=\"dataForm\" :rules=\"rules\" :model=\"temp\" label-placement=\"left\" label-width=\"90px\">\n <n-grid :cols=\"24\" :x-gap=\"24\">\n <n-form-item-gi :span=\"12\" label=\"登录名称\" path=\"username\">\n <n-input v-model:value=\"temp.username\" autocomplete=\"new-password\"/>\n </n-form-item-gi>\n <n-form-item-gi :span=\"12\" label=\"密码\" path=\"password\">\n <n-input v-model:value=\"temp.password\" type=\"password\" autocomplete=\"new-password\"/>\n </n-form-item-gi>\n </n-grid>\n <n-grid :cols=\"24\" :x-gap=\"24\">\n <n-form-item-gi :span=\"12\" label=\"姓名/昵称\" path=\"name\">\n <n-input v-model:value=\"temp.name\" autocomplete=\"new-password\"/>\n </n-form-item-gi>\n <n-form-item-gi :span=\"12\" label=\"手机号\" path=\"phone\">\n <n-input v-model:value=\"temp.phone\"/>\n </n-form-item-gi>\n </n-grid>\n <n-grid :cols=\"24\" :x-gap=\"24\">\n <n-form-item-gi :span=\"12\" label=\"组织机构\" path=\"officeId\">\n <mb-tree-select url=\"/system/user/offices\" v-model=\"temp.officeId\" :key=\"temp.officeId\"\n placeholder=\"请选择组织机构\"/>\n </n-form-item-gi>\n <n-form-item-gi :span=\"12\" label=\"选择角色\" path=\"roles\">\n <mb-select v-model=\"temp.roles\" url=\"/system/role/all\" placeholder=\"请选择角色\" multiple />\n </n-form-item-gi>\n </n-grid>\n <n-form-item label=\"登录状态\" path=\"isLogin\" v-if=\"temp.id != \'1\'\">\n <n-radio-group v-model:value=\"temp.isLogin\">\n <n-radio-button label=\"有效\" :value=\"0\" :key=\"0\"/>\n <n-radio-button label=\"锁定\" :value=\"1\" :key=\"1\"/>\n </n-radio-group>\n </n-form-item>\n </n-form>\n</template>\n\n<script setup>\n\nimport {ref, reactive, nextTick} from \'vue\'\n\nconst emit = defineEmits([\'reload-table\'])\n\nconst rules = reactive({\n name: {required: true, message: \'/\', trigger: \'change\'},\n username: {required: true, message: \'\', trigger: \'change\'},\n roles: {required: true, message: \'\', trigger: \'blur\'},\n officeId: {required: true, message: \'\', trigger: \'blur\'}\n})\nconst temp = ref(getTemp())\nconst dataForm = ref()\n\nfunction getTemp() {\n return {\n id: \'\',\n name: \'\',\n username: \'\',\n password: \'\',\n phone: \'\',\n isLogin: 0,\n roles: null,\n officeId: null\n }\n}\n\nfunction resetTemp() {\n rules.password = [{required: true, message: \'\', trigger: \'change\'}]\n temp.value = getTemp()\n nextTick(() => {\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n })\n}\n\nfunction save(d) {\n dataForm.value.validate((errors) => {\n if (!errors) {\n d.loading()\n $common.post(\'/system/user/save\', temp.value).then(() => {\n d.hideLoading()\n $message.success(d.title + \'\')\n emit(\'reload-table\')\n }).catch(() => d.hideLoading())\n }\n })\n}\n\nfunction getInfo(row) {\n delete rules.password\n for (let t in temp.value) {\n if (t !== \'roles\') {\n temp.value[t] = row[t]\n }\n }\n $common.get(\'/system/user/roles\', {userId: temp.value.id}).then((res) => {\n temp.value.roles = res.data.join(\',\')\n })\n}\n\ndefineExpose({save, getInfo, resetTemp})\n\n</script>\n', '/* Analyzed bindings: {\n \"ref\": \"setup-const\",\n \"reactive\": \"setup-const\",\n \"nextTick\": \"setup-const\",\n \"emit\": \"setup-const\",\n \"rules\": \"setup-reactive-const\",\n \"temp\": \"setup-ref\",\n \"dataForm\": \"setup-ref\",\n \"getTemp\": \"setup-const\",\n \"resetTemp\": \"setup-const\",\n \"save\": \"setup-const\",\n \"getInfo\": \"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\');\n\nconst ref = ___magic__import__(\'vue\', \'ref\');\r\nconst reactive = ___magic__import__(\'vue\', \'reactive\');\r\nconst nextTick = ___magic__import__(\'vue\', \'nextTick\');\n\n\nconst __sfc__ = {\n __name: \'mb-sfc-compiler\',\n emits: [\'reload-table\'],\n setup(__props, { expose: __expose, emit: __emit }) {\n\n\nconst emit = __emit\n\nconst rules = reactive({\n name: {required: true, message: \'/\', trigger: \'change\'},\n username: {required: true, message: \'\', trigger: \'change\'},\n roles: {required: true, message: \'\', trigger: \'blur\'},\n officeId: {required: true, message: \'\', trigger: \'blur\'}\n})\nconst temp = ref(getTemp())\nconst dataForm = ref()\n\nfunction getTemp() {\n return {\n id: \'\',\n name: \'\',\n username: \'\',\n password: \'\',\n phone: \'\',\n isLogin: 0,\n roles: null,\n officeId: null\n }\n}\n\nfunction resetTemp() {\n rules.password = [{required: true, message: \'\', trigger: \'change\'}]\n temp.value = getTemp()\n nextTick(() => {\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n })\n}\n\nfunction save(d) {\n dataForm.value.validate((errors) => {\n if (!errors) {\n d.loading()\n $common.post(\'/system/user/save\', temp.value).then(() => {\n d.hideLoading()\n $message.success(d.title + \'\')\n emit(\'reload-table\')\n }).catch(() => d.hideLoading())\n }\n })\n}\n\nfunction getInfo(row) {\n delete rules.password\n for (let t in temp.value) {\n if (t !== \'roles\') {\n temp.value[t] = row[t]\n }\n }\n $common.get(\'/system/user/roles\', {userId: temp.value.id}).then((res) => {\n temp.value.roles = res.data.join(\',\')\n })\n}\n\n__expose({save, getInfo, resetTemp})\n\n\nreturn (_ctx, _cache) => {\n const _component_n_input = _resolveComponent(\"n-input\")\n const _component_n_form_item_gi = _resolveComponent(\"n-form-item-gi\")\n const _component_n_grid = _resolveComponent(\"n-grid\")\n const _component_mb_tree_select = _resolveComponent(\"mb-tree-select\")\n const _component_mb_select = _resolveComponent(\"mb-select\")\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_form = _resolveComponent(\"n-form\")\n\n return (_openBlock(), _createBlock(_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\": \"90px\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_grid, {\n cols: 24,\n \"x-gap\": 24\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item_gi, {\n span: 12,\n label: \"登录名称\",\n path: \"username\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.username,\n \"onUpdate:value\": _cache[0] || (_cache[0] = $event => ((temp.value.username) = $event)),\n autocomplete: \"new-password\"\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_form_item_gi, {\n span: 12,\n label: \"密码\",\n path: \"password\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.password,\n \"onUpdate:value\": _cache[1] || (_cache[1] = $event => ((temp.value.password) = $event)),\n type: \"password\",\n autocomplete: \"new-password\"\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_grid, {\n cols: 24,\n \"x-gap\": 24\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item_gi, {\n span: 12,\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 autocomplete: \"new-password\"\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_form_item_gi, {\n span: 12,\n label: \"手机号\",\n path: \"phone\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n value: temp.value.phone,\n \"onUpdate:value\": _cache[3] || (_cache[3] = $event => ((temp.value.phone) = $event))\n }, null, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_grid, {\n cols: 24,\n \"x-gap\": 24\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_form_item_gi, {\n span: 12,\n label: \"组织机构\",\n path: \"officeId\"\n }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_component_mb_tree_select, {\n url: \"/system/user/offices\",\n modelValue: temp.value.officeId,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => ((temp.value.officeId) = $event)),\n key: temp.value.officeId,\n placeholder: \"请选择组织机构\"\n }, null, 8 /* PROPS */, [\"modelValue\"]))\n ]),\n _: 1 /* STABLE */\n }),\n _createVNode(_component_n_form_item_gi, {\n span: 12,\n label: \"选择角色\",\n path: \"roles\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_select, {\n modelValue: temp.value.roles,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => ((temp.value.roles) = $event)),\n url: \"/system/role/all\",\n placeholder: \"请选择角色\",\n multiple: \"\"\n }, null, 8 /* PROPS */, [\"modelValue\"])\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }),\n (temp.value.id != \'1\')\n ? (_openBlock(), _createBlock(_component_n_form_item, {\n key: 0,\n label: \"登录状态\",\n path: \"isLogin\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_radio_group, {\n value: temp.value.isLogin,\n \"onUpdate:value\": _cache[6] || (_cache[6] = $event => ((temp.value.isLogin) = $event))\n }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_component_n_radio_button, {\n label: \"有效\",\n value: 0,\n key: 0\n })),\n (_openBlock(), _createBlock(_component_n_radio_button, {\n label: \"锁定\",\n value: 1,\n key: 1\n }))\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"value\"])\n ]),\n _: 1 /* STABLE */\n }))\n : _createCommentVNode(\"v-if\", true)\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\", \"rules\", \"model\"]))\n}\n}\n\n}\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '/* No <style> tags present */', 1, NULL, 0, '1', '2024-03-07 14:03:32', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('d17f4964dc664a4bafbd7af6a7e0596d', '29d82244-d928-11ee-9675-c2b02ed3977b', 'dict', NULL, NULL, NULL, 0, NULL, 0, '1', '2024-03-07 10:57:01', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('d31791c8a14f4e648f3d01d5171c817c', 'fc061efbc39948d59aafc3905591c935', 'user-center', '<template>\n <div class=\"user-center\">\n <div style=\"widthL:35%\">\n <mb-upload-image v-model=\"temp.headPortrait\"/>\n </div>\n <div style=\"width: 65%\">\n <n-form ref=\"dataForm\" :rules=\"rules\" :model=\"temp\" label-placement=\"left\" label-width=\"80px\">\n <n-form-item label=\"姓名/昵称\" path=\"name\">\n <n-input v-model:value=\"temp.name\" disabled/>\n </n-form-item>\n <n-form-item label=\"手机号码\" path=\"phone\">\n <n-input v-model:value=\"temp.phone\" maxlength=\"11\" autocomplete=\"new-password\"/>\n </n-form-item>\n <n-form-item label=\"当前密码\" path=\"password\">\n <n-input v-model:value=\"temp.password\" type=\"password\" autocomplete=\"new-password\"/>\n </n-form-item>\n <n-form-item label=\"新设密码\" path=\"newPassword\">\n <n-input v-model:value=\"temp.newPassword\" type=\"password\" autocomplete=\"new-password\"/>\n </n-form-item>\n <n-form-item label=\"确认密码\" path=\"confirmPassword\">\n <n-input v-model:value=\"temp.confirmPassword\" type=\"password\" autocomplete=\"new-password\"/>\n </n-form-item>\n <n-button type=\"primary\" size=\"large\" block round @click=\"save\">\n <m-icon style=\"margin-right: 4px\" icon=\"SaveSharp\" />\n 保存信息\n </n-button>\n </n-form>\n </div>\n </div>\n</template>\n\n<script setup>\nimport {ref, reactive, nextTick} from \'vue\'\nimport {useUserStore} from \"@/store/modules/userStore\";\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</script>\n\n<style scoped>\n.user-center {\n width: 1000px;\n margin: 60px auto;\n display: flex;\n}\n</style>\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}', 1, NULL, 0, '1', '2024-03-07 14:04:51', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('e50d9d844de247fc825c8f4d4509da79', '9c302653077d47dc9374ba48b9fda579', 'role-assign-permissions', '<template>\n <mb-tree\n ref=\"tree\"\n v-model=\"menus\"\n style=\"height: 320px\"\n url=\"/system/menu/tree\"\n search\n checkable\n search-width=\"230px\"\n />\n</template>\n\n<script setup>\nimport {ref} from \'vue\'\n\nconst emit = defineEmits([\'close\'])\nconst props = defineProps({\n id: {\n type: String,\n default: \'\'\n }\n})\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\ndefineExpose({save})\n\n</script>\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 <style> tags present */', 1, NULL, 0, '1', '2024-03-07 13:57:14', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('e9cf6dae-d929-11ee-9675-c2b02ed3977b', '29d82244-d928-11ee-9675-c2b02ed3977b', 'office', NULL, NULL, NULL, 0, NULL, 0, NULL, NULL, '1', '2024-03-04 13:58:44');
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('ef58200e5ca649f8a3c6f1d3ad66f250', 'fc19e04fa384462d9948c18092f30287', 'menu-icons', '<template>\n <div class=\"icons-container\">\n <n-tabs type=\"line\" animated>\n <n-tab-pane v-for=\"tab in tabs\" :name=\"tab.name\" :tab=\"tab.tab\">\n <div class=\"grid\">\n <div v-for=\"icon of tab.icons\" :key=\"icon\" @click=\"selectIcon(icon)\">\n <n-tooltip placement=\"top\" trigger=\"hover\">\n <template #trigger>\n <mb-icon :icon=\"icon\" size=\"2em\" />\n </template>\n <div class=\"icon-item\">\n <span>{{ icon }}</span>\n </div>\n </n-tooltip>\n </div>\n </div>\n </n-tab-pane>\n </n-tabs>\n </div>\n</template>\n\n<script setup>\nimport svgIcons from \'@/scripts/svg-icons\'\nimport xicons from \'@/scripts/xicons\'\nimport { ref } from \'vue\'\nconst props = defineProps({\n selectIcon: Function\n})\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</script>\n\n<style scoped>\n.icons-container {\n margin: 10px 20px 0;\n overflow: hidden;\n}\n\n.icons-container .grid {\n position: relative;\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));\n}\n\n.icons-container .icon-item {\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\n.icons-container span {\n display: block;\n font-size: 16px;\n margin-top: 10px;\n}\n\n.icons-container .disabled {\n pointer-events: none;\n}\n</style>\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}', 1, NULL, 0, '1', '2024-03-07 13:41:23', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('fc061efbc39948d59aafc3905591c935', '29d82244-d928-11ee-9675-c2b02ed3977b', 'user', NULL, NULL, NULL, 0, NULL, 0, '1', '2024-03-07 14:03:01', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('fc19e04fa384462d9948c18092f30287', '29d82244-d928-11ee-9675-c2b02ed3977b', 'menu', NULL, NULL, NULL, 0, NULL, 0, '1', '2024-03-07 13:39:07', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('fd89dd1d66ae429689bdd978162b4caf', '88c17402-d92a-11ee-9675-c2b02ed3977b', 'online-user', '<template>\n <div style=\"height: 100%\">\n <mb-list ref=\"magicList\" v-bind=\"listOptions\"/>\n <mb-modal ref=\"magicDialog\" title=\"提示\" width=\"600px\" @confirm=\"disable\">\n <n-grid :cols=\"24\">\n <n-gi :span=\"24\">\n 确定要踢“{{ currRow.username }}”下线并临时封禁吗?\n </n-gi>\n <n-gi :span=\"24\">\n <n-radio-group v-model:value=\"time\">\n <n-space>\n <n-radio v-for=\"option in options\" :key=\"option.value\" :value=\"option.value\">\n {{ option.label }}\n </n-radio>\n </n-space>\n </n-radio-group>\n </n-gi>\n </n-grid>\n </mb-modal>\n </div>\n</template>\n\n<script setup>\nimport {reactive, ref} from \"vue\";\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</script>\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 <style> tags present */', 1, NULL, 0, '1', '2024-03-07 13:52:19', NULL, NULL);
INSERT INTO `sys_dynamic_component` (`id`, `pid`, `name`, `source_code`, `compile_js`, `compile_css`, `type`, `remark`, `is_del`, `create_by`, `create_date`, `update_by`, `update_date`) VALUES ('fe533026-d929-11ee-9675-c2b02ed3977b', 'e9cf6dae-d929-11ee-9675-c2b02ed3977b', 'office-list', '<template>\n <div class=\"mb-list\">\n <div class=\"mb-search\">\n <n-space>\n <n-input :size=\"$global.uiSize.value\" v-model:value=\"searchValue\" @keyup.enter=\"searchOffice\" placeholder=\"菜单名称、链接、权限标识\"\n style=\"width: 200px\"></n-input>\n <n-button :size=\"$global.uiSize.value\" type=\"primary\" @click=\"searchOffice\">\n <mb-icon icon=\"Search\" />\n 搜索\n </n-button>\n <n-button :size=\"$global.uiSize.value\" @click=\"() => { searchValue = \'\'; searchOffice() }\">\n <mb-icon icon=\"TrashOutline\" />\n 清空\n </n-button>\n </n-space>\n </div>\n <div class=\"mb-toolbar\">\n <n-space>\n <n-button :size=\"$global.uiSize.value\" type=\"primary\" @click=\"addSubOffice(\'0\')\" v-permission=\"\'office:save\'\">\n <mb-icon icon=\"AddOutline\" />\n 添加机构\n </n-button>\n <n-button :size=\"$global.uiSize.value\" type=\"primary\" @click=\"() => table.toggleExpand()\">\n <mb-icon icon=\"ArrowDownOutline\" />\n 展开/折叠\n </n-button>\n </n-space>\n </div>\n <div class=\"mb-table\">\n <mb-table ref=\"table\" v-bind=\"tableOptions\"/>\n </div>\n <mb-modal :size=\"$global.uiSize.value\" ref=\"officeFormDialog\" width=\"700px\" :title=\"dialogTitle\" @confirm=\"save($event)\">\n <n-form :size=\"$global.uiSize.value\" ref=\"dataForm\" :rules=\"rules\" :model=\"temp\" label-placement=\"left\" label-width=\"80px\">\n <n-grid :cols=\"24\" :x-gap=\"24\">\n <n-gi :span=\"12\">\n <n-form-item label=\"机构类型\" path=\"type\">\n <mb-select v-model=\"temp.type\" type=\"office_type\" width=\"100%\" :key=\"temp.type\"/>\n </n-form-item>\n </n-gi>\n <n-gi :span=\"12\">\n <n-form-item label=\"上级机构\" path=\"pid\">\n <n-tree-select\n v-model:value=\"temp.pid\"\n :options=\"officeTree\"\n />\n </n-form-item>\n </n-gi>\n </n-grid>\n <n-grid :cols=\"24\" :x-gap=\"24\">\n <n-gi :span=\"12\">\n <n-form-item label=\"机构名称\" path=\"name\">\n <n-input v-model:value=\"temp.name\"/>\n </n-form-item>\n </n-gi>\n <n-gi :span=\"12\">\n <n-form-item label=\"机构编码\" path=\"code\">\n <n-input v-model:value=\"temp.code\"/>\n </n-form-item>\n </n-gi>\n </n-grid>\n <n-grid :gutter=\"24\" :x-gap=\"24\">\n <n-gi :span=\"12\">\n <n-form-item label=\"排序\" prop=\"sort\">\n <n-input-number v-model:value=\"temp.sort\" button-placement=\"both\"/>\n </n-form-item>\n </n-gi>\n </n-grid>\n </n-form>\n </mb-modal>\n </div>\n</template>\n\n<script setup>\n\nimport {ref, reactive, onMounted, watch, nextTick} from \'vue\'\nimport {push} from \'@/scripts/router\'\n\nconst officeData = ref([])\nconst officeTree = ref([])\nconst searchValue = ref(\'\')\nconst table = ref()\nconst tableOptions = reactive({\n id: \'office-list\',\n loading: false,\n showNo: false,\n page: false,\n cols: [\n {\n field: \'name\',\n label: \'\',\n align: \'left\',\n type: \'html\',\n width: 280\n },\n {\n field: \'code\',\n label: \'\',\n width: 120,\n align: \'center\',\n type: \'html\'\n },\n {\n field: \'type\',\n dictType: \'office_type\',\n label: \'\',\n width: 300,\n align: \'center\'\n },\n {\n field: \'sort\',\n label: \'\',\n width: 60,\n align: \"center\"\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 160,\n buttons: [\n {\n label: \'\',\n link: true,\n click: (row) => {\n $common.get(\'/system/office/sort/up\', {\n id: row.id,\n pid: row.pid,\n sort: row.sort\n }).then(() => {\n reloadTable()\n })\n }\n },\n {\n label: \'\',\n link: true,\n click: (row) => {\n $common.get(\'/system/office/sort/down\', {\n id: row.id,\n pid: row.pid,\n sort: row.sort\n }).then(() => {\n reloadTable()\n })\n }\n }\n ]\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 360,\n fixed: \'right\',\n align: \'center\',\n buttons: [\n {\n label: \'\',\n link: true,\n permission: \'office:save\',\n click: (row) => {\n addSubOffice(row.id)\n }\n },\n {\n label: \'\',\n link: true,\n permission: \'office:save\',\n click: (row) => {\n handleUpdate(row)\n }\n },\n {\n label: \'\',\n link: true,\n permission: \'office:delete\',\n click: (row) => {\n $common.handleDelete({\n url: \'/system/office/delete\',\n id: row.id,\n done: () => reloadTable()\n })\n }\n },\n {\n permission: \'office:user:list\',\n label: \'\',\n link: true,\n click: (row) => {\n push({\n path: \'/system/user/user-list\',\n query: {officeId: row.id}\n })\n }\n }\n ]\n }\n ]\n})\n\nconst dialogTitle = ref(\'\')\nconst temp = ref(getTemp())\nconst rules = reactive({\n type: {required: true, message: \'\', trigger: \'change\'},\n pid: {required: true, message: \'\', trigger: \'change\'},\n name: {required: true, message: \'\', trigger: \'change\'},\n code: {required: true, message: \'\', trigger: \'change\'}\n})\nconst officeFormDialog = ref()\nconst dataForm = ref()\n\nonMounted(() => reloadTable())\n\nwatch(officeData, () => {\n officeTree.value = [{\n label: \'\',\n key: \'0\',\n children: $treeTable.genTree(officeData.value)\n }]\n})\n\nfunction searchOffice() {\n if (searchValue.value) {\n tableOptions.data = $treeTable.recursionSearch([\'name\', \'code\'], $common.copyNew(officeData.value), searchValue.value)\n } else {\n tableOptions.data = officeData.value\n }\n}\n\nfunction getTemp() {\n return {\n id: \'\',\n name: \'\',\n sort: 0,\n pid: \'\',\n type: \'\',\n code: \'\'\n }\n}\n\nfunction resetTemp() {\n temp.value = getTemp()\n}\n\nfunction getSort() {\n $common.get(\'/system/office/sort\', {pid: temp.value.pid}).then(res => {\n temp.value.sort = res.data\n })\n}\n\nfunction addSubOffice(id) {\n resetTemp()\n temp.value.pid = id\n temp.value.id = $common.uuid()\n getSort()\n dialogTitle.value = \'\'\n officeFormDialog.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 if (temp.value.pid == temp.value.id) {\n $message.warning(\'\')\n return\n }\n if ($treeTable.isChildren($treeTable.queryChildren(officeData.value, temp.value.id), temp.value.pid)) {\n $message.warning(\'\')\n return\n }\n $common.post(\'/system/office/save\', temp.value).then(() => {\n d.hideLoading()\n $message.success(dialogTitle.value + \'\')\n reloadTable()\n officeFormDialog.value.hide()\n }).catch(() => d.hideLoading())\n }\n })\n}\n\nfunction reloadTable() {\n tableOptions.loading = true\n $common.get(\'/system/office/tree\').then(res => {\n officeData.value = res.data.list\n tableOptions.data = officeData.value\n tableOptions.loading = false\n })\n}\n\nfunction handleUpdate(row) {\n for (let t in temp.value) {\n temp.value[t] = row[t]\n }\n $treeTable.clearFont(temp.value, [\'name\', \'code\'])\n dialogTitle.value = \'\'\n officeFormDialog.value.show()\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n}\n\n</script>\n', '/* Analyzed bindings: {\n \"ref\": \"setup-const\",\n \"reactive\": \"setup-const\",\n \"onMounted\": \"setup-const\",\n \"watch\": \"setup-const\",\n \"nextTick\": \"setup-const\",\n \"push\": \"setup-maybe-ref\",\n \"officeData\": \"setup-ref\",\n \"officeTree\": \"setup-ref\",\n \"searchValue\": \"setup-ref\",\n \"table\": \"setup-ref\",\n \"tableOptions\": \"setup-reactive-const\",\n \"dialogTitle\": \"setup-ref\",\n \"temp\": \"setup-ref\",\n \"rules\": \"setup-reactive-const\",\n \"officeFormDialog\": \"setup-ref\",\n \"dataForm\": \"setup-ref\",\n \"searchOffice\": \"setup-const\",\n \"getTemp\": \"setup-const\",\n \"resetTemp\": \"setup-const\",\n \"getSort\": \"setup-const\",\n \"addSubOffice\": \"setup-const\",\n \"save\": \"setup-const\",\n \"reloadTable\": \"setup-const\",\n \"handleUpdate\": \"setup-const\"\n} */\nconst _resolveComponent = ___magic__import__(\'vue\', \'resolveComponent\');\r\nconst _withKeys = ___magic__import__(\'vue\', \'withKeys\');\r\nconst _createVNode = ___magic__import__(\'vue\', \'createVNode\');\r\nconst _createTextVNode = ___magic__import__(\'vue\', \'createTextVNode\');\r\nconst _withCtx = ___magic__import__(\'vue\', \'withCtx\');\r\nconst _createElementVNode = ___magic__import__(\'vue\', \'createElementVNode\');\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 _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 onMounted = ___magic__import__(\'vue\', \'onMounted\');\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 officeData = ref([])\nconst officeTree = ref([])\nconst searchValue = ref(\'\')\nconst table = ref()\nconst tableOptions = reactive({\n id: \'office-list\',\n loading: false,\n showNo: false,\n page: false,\n cols: [\n {\n field: \'name\',\n label: \'\',\n align: \'left\',\n type: \'html\',\n width: 280\n },\n {\n field: \'code\',\n label: \'\',\n width: 120,\n align: \'center\',\n type: \'html\'\n },\n {\n field: \'type\',\n dictType: \'office_type\',\n label: \'\',\n width: 300,\n align: \'center\'\n },\n {\n field: \'sort\',\n label: \'\',\n width: 60,\n align: \"center\"\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 160,\n buttons: [\n {\n label: \'\',\n link: true,\n click: (row) => {\n $common.get(\'/system/office/sort/up\', {\n id: row.id,\n pid: row.pid,\n sort: row.sort\n }).then(() => {\n reloadTable()\n })\n }\n },\n {\n label: \'\',\n link: true,\n click: (row) => {\n $common.get(\'/system/office/sort/down\', {\n id: row.id,\n pid: row.pid,\n sort: row.sort\n }).then(() => {\n reloadTable()\n })\n }\n }\n ]\n },\n {\n label: \'\',\n type: \'buttons\',\n width: 360,\n fixed: \'right\',\n align: \'center\',\n buttons: [\n {\n label: \'\',\n link: true,\n permission: \'office:save\',\n click: (row) => {\n addSubOffice(row.id)\n }\n },\n {\n label: \'\',\n link: true,\n permission: \'office:save\',\n click: (row) => {\n handleUpdate(row)\n }\n },\n {\n label: \'\',\n link: true,\n permission: \'office:delete\',\n click: (row) => {\n $common.handleDelete({\n url: \'/system/office/delete\',\n id: row.id,\n done: () => reloadTable()\n })\n }\n },\n {\n permission: \'office:user:list\',\n label: \'\',\n link: true,\n click: (row) => {\n push({\n path: \'/system/user/user-list\',\n query: {officeId: row.id}\n })\n }\n }\n ]\n }\n ]\n})\n\nconst dialogTitle = ref(\'\')\nconst temp = ref(getTemp())\nconst rules = reactive({\n type: {required: true, message: \'\', trigger: \'change\'},\n pid: {required: true, message: \'\', trigger: \'change\'},\n name: {required: true, message: \'\', trigger: \'change\'},\n code: {required: true, message: \'\', trigger: \'change\'}\n})\nconst officeFormDialog = ref()\nconst dataForm = ref()\n\nonMounted(() => reloadTable())\n\nwatch(officeData, () => {\n officeTree.value = [{\n label: \'\',\n key: \'0\',\n children: $treeTable.genTree(officeData.value)\n }]\n})\n\nfunction searchOffice() {\n if (searchValue.value) {\n tableOptions.data = $treeTable.recursionSearch([\'name\', \'code\'], $common.copyNew(officeData.value), searchValue.value)\n } else {\n tableOptions.data = officeData.value\n }\n}\n\nfunction getTemp() {\n return {\n id: \'\',\n name: \'\',\n sort: 0,\n pid: \'\',\n type: \'\',\n code: \'\'\n }\n}\n\nfunction resetTemp() {\n temp.value = getTemp()\n}\n\nfunction getSort() {\n $common.get(\'/system/office/sort\', {pid: temp.value.pid}).then(res => {\n temp.value.sort = res.data\n })\n}\n\nfunction addSubOffice(id) {\n resetTemp()\n temp.value.pid = id\n temp.value.id = $common.uuid()\n getSort()\n dialogTitle.value = \'\'\n officeFormDialog.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 if (temp.value.pid == temp.value.id) {\n $message.warning(\'\')\n return\n }\n if ($treeTable.isChildren($treeTable.queryChildren(officeData.value, temp.value.id), temp.value.pid)) {\n $message.warning(\'\')\n return\n }\n $common.post(\'/system/office/save\', temp.value).then(() => {\n d.hideLoading()\n $message.success(dialogTitle.value + \'\')\n reloadTable()\n officeFormDialog.value.hide()\n }).catch(() => d.hideLoading())\n }\n })\n}\n\nfunction reloadTable() {\n tableOptions.loading = true\n $common.get(\'/system/office/tree\').then(res => {\n officeData.value = res.data.list\n tableOptions.data = officeData.value\n tableOptions.loading = false\n })\n}\n\nfunction handleUpdate(row) {\n for (let t in temp.value) {\n temp.value[t] = row[t]\n }\n $treeTable.clearFont(temp.value, [\'name\', \'code\'])\n dialogTitle.value = \'\'\n officeFormDialog.value.show()\n nextTick(() => {\n dataForm.value.restoreValidation()\n })\n}\n\n\nreturn (_ctx, _cache) => {\n const _component_n_input = _resolveComponent(\"n-input\")\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_tree_select = _resolveComponent(\"n-tree-select\")\n const _component_n_grid = _resolveComponent(\"n-grid\")\n const _component_n_input_number = _resolveComponent(\"n-input-number\")\n const _component_n_form = _resolveComponent(\"n-form\")\n const _component_mb_modal = _resolveComponent(\"mb-modal\")\n const _directive_permission = _resolveDirective(\"permission\")\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_n_space, null, {\n default: _withCtx(() => [\n _createVNode(_component_n_input, {\n size: _ctx.$global.uiSize.value,\n value: searchValue.value,\n \"onUpdate:value\": _cache[0] || (_cache[0] = $event => ((searchValue).value = $event)),\n onKeyup: _withKeys(searchOffice, [\"enter\"]),\n placeholder: \"菜单名称、链接、权限标识\",\n style: {\"width\":\"200px\"}\n }, null, 8 /* PROPS */, [\"size\", \"value\"]),\n _createVNode(_component_n_button, {\n size: _ctx.$global.uiSize.value,\n type: \"primary\",\n onClick: searchOffice\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_icon, { icon: \"Search\" }),\n _createTextVNode(\" 搜索 \")\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\"]),\n _createVNode(_component_n_button, {\n size: _ctx.$global.uiSize.value,\n onClick: _cache[1] || (_cache[1] = () => { searchValue.value = \'\'; searchOffice() })\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_icon, { icon: \"TrashOutline\" }),\n _createTextVNode(\" 清空 \")\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\"])\n ]),\n _: 1 /* STABLE */\n })\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: _cache[2] || (_cache[2] = $event => (addSubOffice(\'0\')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_icon, { icon: \"AddOutline\" }),\n _createTextVNode(\" 添加机构 \")\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\"])), [\n [_directive_permission, \'office:save\']\n ]),\n _createVNode(_component_n_button, {\n size: _ctx.$global.uiSize.value,\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = () => table.value.toggleExpand())\n }, {\n default: _withCtx(() => [\n _createVNode(_component_mb_icon, { icon: \"ArrowDownOutline\" }),\n _createTextVNode(\" 展开/折叠 \")\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"size\"])\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: \"officeFormDialog\",\n ref: officeFormDialog,\n width: \"700px\",\n title: dialogTitle.value,\n onConfirm: _cache[9] || (_cache[9] = $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, {\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: \"type\"\n }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_component_mb_select, {\n modelValue: temp.value.type,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => ((temp.value.type) = $event)),\n type: \"office_type\",\n width: \"100%\",\n key: temp.value.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: \"pid\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_tree_select, {\n value: temp.value.pid,\n \"onUpdate:value\": _cache[5] || (_cache[5] = $event => ((temp.value.pid) = $event)),\n options: officeTree.value\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_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[6] || (_cache[6] = $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[7] || (_cache[7] = $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, {\n gutter: 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 prop: \"sort\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_n_input_number, {\n value: temp.value.sort,\n \"onUpdate:value\": _cache[8] || (_cache[8] = $event => ((temp.value.sort) = $event)),\n \"button-placement\": \"both\"\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 ]))\n}\n}\n\n}\n__sfc__.__file = \"mb-sfc-compiler.vue\"\nreturn __sfc__', '/* No <style> tags present */', 1, NULL, 0, NULL, NULL, NULL, NULL);
-- ----------------------------
-- Table structure for sys_dynamic_component_history
-- ----------------------------
DROP TABLE IF EXISTS `sys_dynamic_component_history`;
CREATE TABLE `sys_dynamic_component_history` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`component_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '动态组件id',
`source_code` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '源码',
`create_by` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
`create_date` datetime NULL DEFAULT current_timestamp COMMENT '创建时间',
`is_del` int NULL DEFAULT 0 COMMENT '是否删除0未删除 1已删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '动态组件历史表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of sys_dynamic_component_history
-- ----------------------------
-- ----------------------------
-- Table structure for sys_file
-- ----------------------------
DROP TABLE IF EXISTS `sys_file`;
CREATE TABLE `sys_file` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '文件相对路径',
`sort` int NULL DEFAULT NULL COMMENT '排序',
`external_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '外部id其他表数据id',
`external_type` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '外部文件类型,比如:是营业执照啊 还是 头像啊',
`is_del` int NULL DEFAULT 0 COMMENT '删除标识',
`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_file
-- ----------------------------
-- ----------------------------
-- Table structure for sys_gen_info
-- ----------------------------
DROP TABLE IF EXISTS `sys_gen_info`;
CREATE TABLE `sys_gen_info` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`datasource` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '数据源',
`table_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '表名',
`table_comment` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '表注释',
`columns` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '字段信息json',
`info` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '生成信息json',
`create_date` datetime NULL DEFAULT current_timestamp COMMENT '创建时间',
`update_date` datetime NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '生成表信息' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_gen_info
-- ----------------------------
INSERT INTO `sys_gen_info` VALUES (5, '', 't_data_test', '测试生成', '[{\"columnName\":\"name\",\"columnComment\":\"名字\",\"columnType\":\"varchar(255)\",\"component\":\"component: \'input\'\",\"where\":\"like\",\"save\":true,\"query\":true,\"list\":true,\"required\":true},{\"columnName\":\"sex\",\"columnComment\":\"性别\",\"columnType\":\"varchar(255)\",\"component\":\"component: \'select\'\",\"where\":\"=\",\"save\":true,\"query\":true,\"list\":true,\"required\":false,\"dictType\":\"sex\"},{\"columnName\":\"headPortrait\",\"columnComment\":\"头像\",\"columnType\":\"varchar(255)\",\"component\":\"component: \'upload-image\'\",\"where\":\"in\",\"save\":true,\"query\":true,\"list\":true,\"required\":true},{\"columnName\":\"remarks\",\"columnComment\":\"备注\",\"columnType\":\"text\",\"component\":\"component: \'input\',\\n props: {\\n type: \'textarea\'\\n }\\n \",\"where\":\"<=\",\"save\":true,\"query\":true,\"list\":true,\"required\":false}]', '{\"moduleName\":\"数据管理\",\"modulePath\":\"/data\",\"businessName\":\"测试生成\",\"businessPath\":\"/test\",\"template\":\"singleTable\",\"pid\":\"d7f8d052d4864bd285c575c3cf2dce69\"}', '2022-03-28 21:56:09', '2022-05-27 13:36:55');
-- ----------------------------
-- Table structure for sys_login_log
-- ----------------------------
DROP TABLE IF EXISTS `sys_login_log`;
CREATE TABLE `sys_login_log` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录账号',
`fail_password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '失败密码',
`type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录类型(成功、失败)',
`browser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '浏览器',
`os` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作系统',
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '地理位置',
`ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'ip地址',
`token` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'token',
`create_date` datetime NULL DEFAULT current_timestamp COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 579 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_login_log
-- ----------------------------
-- ----------------------------
-- Table structure for sys_menu
-- ----------------------------
DROP TABLE IF EXISTS `sys_menu`;
CREATE TABLE `sys_menu` (
`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',
`icon` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '图标',
`desc_ribe` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '描述',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单名称',
`url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单链接',
`permission` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限',
`sort` int NULL DEFAULT NULL COMMENT '排序',
`component_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组件名称',
`open_mode` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0' COMMENT '打开方式0iframe 1新标签页',
`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 '更新时间',
`keep_alive` int NULL DEFAULT 1 COMMENT '是否缓存1缓存0不缓存',
`is_show` int NULL DEFAULT NULL COMMENT '是否显示1显示0不显示',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '菜单表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_menu
-- ----------------------------
INSERT INTO `sys_menu` VALUES ('0', '', '', NULL, '功能菜单', '', '', 1, NULL, '0', 0, NULL, NULL, NULL, NULL, NULL, 1);
INSERT INTO `sys_menu` VALUES ('067343d790fd4d73b3e2ea5bb3d043f1', '99c6e9aeb6694c349f5db66e2516f069', '', '', '删除', '', 'code:gen:delete', 30, '', '0', 0, '1', '2022-03-27 22:25:27', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('06b8a427e4cd4c1ba11752070f565f20', 'b1851d1b13594e71840103c11a37a669', 'People', '', '用户管理', '/system/user/user-list', '', 50, 'bc38eb5038ce44aab4bd586fb32d79bb', '0', 0, NULL, NULL, '1', '2024-03-07 14:05:43', 1, 1);
INSERT INTO `sys_menu` VALUES ('06d8c9243e5e43bcbd1c24d10d02fbad', 'b198ae9fec6f4de8a44b7f6e097a44b3', NULL, NULL, '查看', NULL, 'data:test:view', 10, NULL, '0', 0, NULL, NULL, NULL, NULL, 1, 0);
INSERT INTO `sys_menu` VALUES ('1009eed4f46141e3aca939490d68786a', '8009eed4f46141e3aca939490d68786a', NULL, NULL, '按钮', '', '', 30, '', '0', 0, '1', '2019-11-15 10:23:07', '1', '2023-05-31 15:28:31', 0, 0);
INSERT INTO `sys_menu` VALUES ('11ac1fc1d2864f079a48d29f82dbb820', '99c6e9aeb6694c349f5db66e2516f069', '', '', '执行生成', '', 'code:gen:execute', 40, '', '0', 0, '1', '2022-05-10 16:22:38', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('1ff68fd34f35430db30540c40a2ef9db', 'af431ab748e64914a0398f00d7aa0def', '', '', '列表', '', 'component:history:list', 10, '', '0', 0, '1', '2024-03-10 23:07:35', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('24176912aa9e4b2d832f96292be3430e', '81b6845a20da4028a01a42f3eb0b4f4b', '', '', '删除', '', 'dict:items:delete', 20, NULL, '0', 0, '1', '2020-12-10 10:38:43', '1', '2021-04-30 21:37:39', 0, 0);
INSERT INTO `sys_menu` VALUES ('25162c30ae0d4297ade09539bcf81d86', '81b6845a20da4028a01a42f3eb0b4f4b', NULL, NULL, '查看', NULL, 'dict:items:view', 30, NULL, '0', 0, '1', '2022-02-05 22:07:33', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('2664b76cb2904227bce5b0f7d1dd6e7b', '641253af-8ea1-4b5d-8bc3-a7165ef60ff2', '', '', '下拉框', '/examples/select-example', '', 60, NULL, '0', 0, '1', '2021-08-29 17:35:17', '1', '2022-01-21 21:57:29', 0, 1);
INSERT INTO `sys_menu` VALUES ('28c3342a6f0645fa968939a8fc66d537', 'f23e1fefbc534100915d430b5f956355', '', '', '删除', '', 'component:delete', 20, '', '0', 0, '1', '2024-03-10 23:02:30', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('2b8742fc1d2e4c92937517b95b09c50b', '81b6845a20da4028a01a42f3eb0b4f4b', '', '', '下移', '', 'dict:items:sort:down', 50, '', '0', 0, '1', '2022-05-10 16:21:40', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('35e56d173b5f4e6790883572d3104137', '99c6e9aeb6694c349f5db66e2516f069', '', '', '生成', '', 'code:gen', 20, '', '0', 0, '1', '2022-03-18 08:07:03', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('36329aad6f8e444dae4338b2124da7ba', '28216291e6a84b14aefbad91ed2b0f34', NULL, NULL, '保存', NULL, 'data:test:save', 20, NULL, '0', 0, NULL, NULL, NULL, NULL, 1, 0);
INSERT INTO `sys_menu` VALUES ('39be13ef6f0745568c80bf35202ddb2b', 'b1851d1b13594e71840103c11a37a669', 'Menu', '', '菜单管理', '/system/menu/menu-list', '', 10, '63227c407c5d40f98df2486390a6f841', '0', 0, NULL, NULL, '1', '2024-03-07 13:49:52', 1, 1);
INSERT INTO `sys_menu` VALUES ('3a0e3107402449698d86ee3cbc5272c0', '4a57f57fc7324c94b6390f1a2dd1f49a', 'database', '', '数据库监控', '/system/monitor/druid', '', 30, 'c64a8b964c6e40dfbe4c3908fdea9553', '0', 0, '1', '2022-03-05 23:21:35', '1', '2024-03-07 14:06:15', 0, 1);
INSERT INTO `sys_menu` VALUES ('3ae3a47e3bf54bb682adb10b497e6183', 'b198ae9fec6f4de8a44b7f6e097a44b3', NULL, NULL, '保存', NULL, 'data:test:save', 20, NULL, '0', 0, NULL, NULL, NULL, NULL, 1, 0);
INSERT INTO `sys_menu` VALUES ('3cac94be259c48d4ae778a13ee8fab82', '116182d1349a464fa89e24ddb349fea9', NULL, NULL, '删除', NULL, 'data:test:delete', 30, NULL, '0', 0, NULL, NULL, NULL, NULL, 1, 0);
INSERT INTO `sys_menu` VALUES ('3da5882528b640478b6d64bcbc4d1795', '99c6e9aeb6694c349f5db66e2516f069', '', '', '保存', '', 'code:gen:save', 10, '', '0', 0, '1', '2022-03-18 08:03:08', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('3e14f782d4e14998bce4f9d35c032a95', '06b8a427e4cd4c1ba11752070f565f20', '', '', '禁止登录', '', 'user:change:login:status', 40, '', '0', 0, '1', '2022-05-09 21:43:06', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('414e5d31-fe05-4e69-9983-217c10b9740a', '39be13ef6f0745568c80bf35202ddb2b', '', '', '查看', '', 'menu:view', 30, NULL, '0', 0, '1', '2021-03-25 20:40:12', '1', '2022-02-05 22:02:57', 0, 0);
INSERT INTO `sys_menu` VALUES ('43aeca5c3ac54ddeb038d2feecd32dd3', 'f23e1fefbc534100915d430b5f956355', '', '', '保存tree', '', 'component:save:tree', 30, '', '0', 0, '1', '2024-03-10 23:04:56', '1', '2024-03-10 23:05:51', 0, 0);
INSERT INTO `sys_menu` VALUES ('4526eb9c-4b7a-4945-bfa9-cddc01f36c22', '6f3594d0-5445-41e1-a13c-890a57485036', '', '', '保存', '', 'office:save', 10, NULL, '0', 0, '1', '2021-04-22 20:43:09', '1', '2022-02-05 22:04:03', 0, 0);
INSERT INTO `sys_menu` VALUES ('4807e74954c1443c811c701bacb878df', '116182d1349a464fa89e24ddb349fea9', NULL, NULL, '查看', NULL, 'data:test:view', 10, NULL, '0', 0, NULL, NULL, NULL, NULL, 1, 0);
INSERT INTO `sys_menu` VALUES ('4a57f57fc7324c94b6390f1a2dd1f49a', '0', 'Camera', '', '系统监控', '/system/monitor', '', 40, '', '0', 0, '1', '2022-03-05 17:24:21', '1', '2023-06-25 20:33:18', 0, 1);
INSERT INTO `sys_menu` VALUES ('4a9047e1c44a4e69907ca8bfe077e38a', '81b6845a20da4028a01a42f3eb0b4f4b', '', '', '上移', '', 'dict:items:sort:up', 40, '', '0', 0, '1', '2022-05-10 16:21:21', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('4d52144f827742c2aac57dd3b361d868', 'af431ab748e64914a0398f00d7aa0def', '', '', '详情', '', 'component:history:detail', 20, '', '0', 0, '1', '2024-03-10 23:08:21', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('4e0f340982ea477f9b66beca5f5d7218', '39be13ef6f0745568c80bf35202ddb2b', '', '', '上移', '', 'menu:sort:up', 40, '', '0', 0, '1', '2022-05-09 21:41:01', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('4fc65edbe0544c369b58fdfed1523537', '4a57f57fc7324c94b6390f1a2dd1f49a', 'oper-log', '', '操作日志', '/system/monitor/oper', '', 10, 'a3bdf806e89b4a5a9d9436b012d57ce9', '0', 0, '1', '2022-03-05 17:24:45', '1', '2024-03-07 14:06:04', 1, 1);
INSERT INTO `sys_menu` VALUES ('52702cf956f847e8a2d045f66eb6bfee', 'fdbdcf8b8d674ae38154bc1e57498a91', '', '', '踢人', '', 'online:logout', 10, '', '0', 0, '1', '2022-03-16 08:16:35', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('546c874267514672844cd3a019e468f7', 'c5f407478c4e4c9cbcdbee6389d2c909', '', '', '删除', '', 'dict:delete', 20, NULL, '0', 0, '1', '2020-11-11 14:11:38', '1', '2021-04-30 21:37:22', 0, 0);
INSERT INTO `sys_menu` VALUES ('5d9c050c87ad450e886290c4e93fa16f', 'f23e1fefbc534100915d430b5f956355', '', '', '获取组件最新源码', '', 'component:get:last:code', 60, '', '0', 0, '1', '2024-03-10 23:02:57', '1', '2024-03-10 23:09:32', 0, 0);
INSERT INTO `sys_menu` VALUES ('641253af-8ea1-4b5d-8bc3-a7165ef60ff2', '0', 'ClipboardCode24Filled', '', '一些例子', '/examples', '', 20, '', '0', 0, '1', '2021-03-28 22:59:56', '1', '2023-06-25 20:31:26', 0, 1);
INSERT INTO `sys_menu` VALUES ('641592c74d5d43dfbecedc1a388edc8c', 'f23e1fefbc534100915d430b5f956355', '', '', '选择组件获取源码', '', 'component:get:code', 50, '', '0', 0, '1', '2024-03-10 23:09:16', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('6762231e-4f30-4a6b-a94e-b185e99ed608', '6f3594d0-5445-41e1-a13c-890a57485036', '', '', '删除', '', 'office:delete', 20, NULL, '0', 0, '1', '2021-04-22 20:42:56', '1', '2022-02-05 22:04:07', 0, 0);
INSERT INTO `sys_menu` VALUES ('684723f4226948aba1661292961c8f71', '8e9455740091486c914495cfb0c7faa5', '', '', '删除', '', 'role:delete', 20, NULL, '0', 0, '1', '2020-11-11 13:59:45', '1', '2021-04-30 21:36:56', 0, 0);
INSERT INTO `sys_menu` VALUES ('6f3594d0-5445-41e1-a13c-890a57485036', 'b1851d1b13594e71840103c11a37a669', 'Organization12Filled', '', '组织机构', '/system/office/office-list', '', 20, 'fe533026-d929-11ee-9675-c2b02ed3977b', '0', 0, '1', '2021-04-22 20:40:14', '1', '2024-03-07 09:10:19', 1, 1);
INSERT INTO `sys_menu` VALUES ('710c0a9195934e73b11123b62283fdc5', 'c5f407478c4e4c9cbcdbee6389d2c909', NULL, NULL, '查看', NULL, 'dict:view', 30, NULL, '0', 0, '1', '2022-02-05 22:05:51', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('713626516eaa4ba98c9daf55009b481e', '641253af-8ea1-4b5d-8bc3-a7165ef60ff2', '', '', '测试表单', '/examples/test-mb-form', '', 80, '', '0', 0, '1', '2022-03-15 07:51:25', '1', '2022-03-15 07:51:34', 0, 1);
INSERT INTO `sys_menu` VALUES ('7324ad98fb51462795750bcfc1b11be2', '06b8a427e4cd4c1ba11752070f565f20', NULL, NULL, '查看', NULL, 'user:view', 30, NULL, '0', 0, '1', '2022-02-05 22:05:18', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('77469b38dedf4b398c0cea424be89c3f', '5e53c7ada9a0456dbc949c5c5d6abc41', '', '', 'zx', '/system/monitor/oper-log', '', 10, '', '0', 0, '1', '2023-07-14 13:48:23', NULL, NULL, 0, 1);
INSERT INTO `sys_menu` VALUES ('7ad229f12c8f4b57bbb9349e2ffd8932', 'b1851d1b13594e71840103c11a37a669', 'ContentSettings24Filled', '', '配置中心', '/system/configure/configure-list', '', 110, 'b94688b24b724a50945b55899d6199bc', '0', 0, '1', '2022-05-21 18:32:26', '1', '2024-03-07 10:54:11', 1, 1);
INSERT INTO `sys_menu` VALUES ('7c9ddcf803074f6c8b763517d37732a7', '6f3594d0-5445-41e1-a13c-890a57485036', '', '', '上移', '', 'office:sort:up', 50, '', '0', 0, '1', '2022-05-09 21:42:04', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('7e9203fdb630434abf7542ff111bc369', '06b8a427e4cd4c1ba11752070f565f20', '', '', '导入预览', '', 'user:import:preview', 60, '', '0', 0, '1', '2022-05-09 21:43:28', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('7f20cb25f62e48c5ac5e986e3277956f', '06b8a427e4cd4c1ba11752070f565f20', '', '', '导入', '', 'user:import', 50, '', '0', 0, '1', '2022-05-09 21:43:18', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('81b6845a20da4028a01a42f3eb0b4f4b', 'c5f407478c4e4c9cbcdbee6389d2c909', '', '', '字典项', '', '', 40, NULL, '0', 0, '1', '2020-12-10 09:35:02', '1', '2021-04-30 21:37:28', 0, 0);
INSERT INTO `sys_menu` VALUES ('833b204d5f2c402190bfca677421cfeb', '39be13ef6f0745568c80bf35202ddb2b', '', '', '删除', '', 'menu:delete', 20, NULL, '0', 0, '1', '2020-11-11 11:06:05', '1', '2021-04-30 21:36:36', 0, 0);
INSERT INTO `sys_menu` VALUES ('8bf0ebc0098c4003b353d36bec3fff19', 'bf5c1e44546341de9acee52d148d5a76', NULL, NULL, '保存', NULL, 'data:test:save', 20, NULL, '0', 0, NULL, NULL, NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('8e9455740091486c914495cfb0c7faa5', 'b1851d1b13594e71840103c11a37a669', 'Accessibility', '', '角色管理', '/system/role/role-list', '', 40, '8c426b7d397b4ffeb4c9f89b4c318fbb', '0', 0, NULL, NULL, '1', '2024-03-07 14:05:38', 1, 1);
INSERT INTO `sys_menu` VALUES ('90c5d6263fa04b5db2a1b0a626409523', '28216291e6a84b14aefbad91ed2b0f34', NULL, NULL, '查看', NULL, 'data:test:view', 10, NULL, '0', 0, NULL, NULL, NULL, NULL, 1, 0);
INSERT INTO `sys_menu` VALUES ('91a9226d1c6c4634b70dc4e9866e89cb', '39be13ef6f0745568c80bf35202ddb2b', '', '', '下移', '', 'menu:sort:down', 50, '', '0', 0, '1', '2022-05-09 21:41:12', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('91bdb7d742a64a8c8a8fdc6d3bb61581', '641253af-8ea1-4b5d-8bc3-a7165ef60ff2', '', '', '可编辑表格', '/examples/editor-table', '', 40, NULL, '0', 0, '1', '2021-06-13 12:53:11', '1', '2021-06-13 12:53:11', 0, 1);
INSERT INTO `sys_menu` VALUES ('9385945c7f5f476ab38885976907db2a', '641253af-8ea1-4b5d-8bc3-a7165ef60ff2', '', '', '测试外链', 'http://baidu.com', '', 90, '', '1', 0, '1', '2022-06-28 10:53:20', '1', '2023-04-27 18:52:30', 0, 1);
INSERT INTO `sys_menu` VALUES ('94071254597d4da286bb8112ad93f4ff', '8e9455740091486c914495cfb0c7faa5', '', '', '保存', '', 'role:save', 10, NULL, '0', 0, '1', '2020-11-11 13:59:27', '1', '2021-04-30 21:36:51', 0, 0);
INSERT INTO `sys_menu` VALUES ('98a47d57680f4759816028a035ccc7d3', '39be13ef6f0745568c80bf35202ddb2b', '', '', '是否显示/缓存', '', 'menu:change', 60, '', '0', 0, '1', '2022-05-09 21:41:37', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('99c6e9aeb6694c349f5db66e2516f069', 'd7f8d052d4864bd285c575c3cf2dce69', 'examples', '', '代码生成', '/lowcode/code-gen-list', '', 30, '', '0', 0, '1', '2022-03-18 08:01:25', '1', '2022-04-04 00:48:32', 1, 1);
INSERT INTO `sys_menu` VALUES ('9fe1eaae168e4b719dc880f039ccd7b7', 'fdbdcf8b8d674ae38154bc1e57498a91', '', '', '查看', '', 'online:view', 20, '', '0', 0, '1', '2022-05-10 16:16:11', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('a1564eaf9fb249a788d15bb4bce609a8', '641253af-8ea1-4b5d-8bc3-a7165ef60ff2', '', '', '穿梭表格', '/examples/shuttle-table', '', 100, '', '0', 0, '1', '2023-12-05 13:51:50', NULL, NULL, 0, 1);
INSERT INTO `sys_menu` VALUES ('a224c0274f8e4ae6931e7deab75cd90b', '7ad229f12c8f4b57bbb9349e2ffd8932', '', '', '删除', '', 'configure:delete', 30, '', '0', 0, '1', '2022-05-21 18:34:48', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('a52bc9968c324813bd93a5642f5011ea', 'bccc28641f4647d3beeaef0381fdf079', NULL, NULL, '查看', NULL, 'system:role:view', 10, NULL, '0', 0, NULL, NULL, NULL, NULL, 0, NULL);
INSERT INTO `sys_menu` VALUES ('a5f2cb418ac348bca3d51b98958c4a80', '8e9455740091486c914495cfb0c7faa5', NULL, NULL, '查看', NULL, 'role:view', 30, NULL, '0', 0, '1', '2022-02-05 22:04:56', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('a7a7ba2e31504b27a02465ecf6e014c6', 'b198ae9fec6f4de8a44b7f6e097a44b3', NULL, NULL, '删除', NULL, 'data:test:delete', 30, NULL, '0', 0, NULL, NULL, NULL, NULL, 1, 0);
INSERT INTO `sys_menu` VALUES ('a9b57951790b423a91e8232aca514305', '7ad229f12c8f4b57bbb9349e2ffd8932', '', '', '保存', '', 'configure:save', 20, '', '0', 0, '1', '2022-05-21 18:34:38', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('af431ab748e64914a0398f00d7aa0def', 'f23e1fefbc534100915d430b5f956355', '', '', '历史记录', '/component/history', '', 70, '', '0', 0, '1', '2024-03-10 23:03:54', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('b1851d1b13594e71840103c11a37a669', '0', 'SettingsSharp', '', '系统设置', '/system', '', 10, '', '0', 0, NULL, NULL, '1', '2023-06-25 20:09:53', 0, 1);
INSERT INTO `sys_menu` VALUES ('b353de07f3624b4fa1c6f8b1b1e80cad', 'c5f407478c4e4c9cbcdbee6389d2c909', '', '', '保存', '', 'dict:save', 10, NULL, '0', 0, '1', '2020-11-11 14:11:28', '1', '2021-04-30 21:37:14', 0, 0);
INSERT INTO `sys_menu` VALUES ('b4e9009b24d14233a59029ec57681e2c', '641253af-8ea1-4b5d-8bc3-a7165ef60ff2', '', '', '下拉表格', '/examples/select-table', '', 110, '', '0', 0, '1', '2024-02-22 13:29:05', NULL, NULL, 0, 1);
INSERT INTO `sys_menu` VALUES ('b5a77ce22eef40cba2eb1ca2794d9d8a', '6f3594d0-5445-41e1-a13c-890a57485036', NULL, NULL, '用户列表', NULL, 'office:user:list', 40, NULL, '0', 0, '1', '2022-02-04 17:44:08', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('bccc28641f4647d3beeaef0381fdf079', NULL, NULL, NULL, '角色管理', '/system/role', NULL, 10, 'system-role-list', '0', 0, NULL, NULL, NULL, NULL, 1, 1);
INSERT INTO `sys_menu` VALUES ('bee5c6cb1b484133a4b8e72fe5c5eed0', '06b8a427e4cd4c1ba11752070f565f20', '', '', '保存', '', 'user:save', 10, NULL, '0', 0, '1', '2020-11-11 13:27:06', '1', '2021-04-30 21:37:01', 0, 0);
INSERT INTO `sys_menu` VALUES ('bf41ddc3ea314b158e21e4efc1ed5a25', '8e9455740091486c914495cfb0c7faa5', NULL, NULL, '权限', NULL, 'role:permission', 40, NULL, '0', 0, '1', '2022-01-11 20:31:02', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('bf5c1e44546341de9acee52d148d5a76', 'd7f8d052d4864bd285c575c3cf2dce69', NULL, NULL, '测试生成', '/data/test', NULL, 40, 'data-test-list', '0', 0, NULL, NULL, NULL, NULL, 1, 1);
INSERT INTO `sys_menu` VALUES ('c38e9fe9521a4294bda2ab6ed8273719', '116182d1349a464fa89e24ddb349fea9', NULL, NULL, '保存', NULL, 'data:test:save', 20, NULL, '0', 0, NULL, NULL, NULL, NULL, 1, 0);
INSERT INTO `sys_menu` VALUES ('c4352b75954a47de84cd896c6e2093b9', '99c6e9aeb6694c349f5db66e2516f069', '', '', '查看', '', 'code:gen:view', 50, '', '0', 0, '1', '2022-05-10 16:23:08', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('c50388914fab408c8b74f83d0d43e557', '641253af-8ea1-4b5d-8bc3-a7165ef60ff2', NULL, NULL, '测试列表', '/examples/test-mb-list', NULL, 70, NULL, '0', 0, '1', '2022-03-06 15:13:30', NULL, NULL, 0, 1);
INSERT INTO `sys_menu` VALUES ('c5f407478c4e4c9cbcdbee6389d2c909', 'b1851d1b13594e71840103c11a37a669', 'BookLetter24Filled', '', '数据字典', '/system/dict/dict-list', '', 60, '28e3f82164de4bbf98a342c2a94da076', '0', 0, '1', '2019-11-15 10:22:28', '1', '2024-03-07 10:59:23', 1, 1);
INSERT INTO `sys_menu` VALUES ('c6e7b5866ce64bfdabeb5dd6342ca55f', '06b8a427e4cd4c1ba11752070f565f20', '', '', '删除', '', 'user:delete', 20, NULL, '0', 0, '1', '2020-11-11 13:27:22', '1', '2021-04-30 21:37:05', 0, 0);
INSERT INTO `sys_menu` VALUES ('c7445e2ac6144a15a76d723607fbfb9d', 'd7f8d052d4864bd285c575c3cf2dce69', 'interface', '', '接口管理', '/lowcode/magic-editor', '', 20, '', '1', 0, '1', '2022-03-04 21:05:29', '1', '2023-04-27 18:51:42', 1, 1);
INSERT INTO `sys_menu` VALUES ('c94be7eebe76404b9cf3b4ae0a563e31', 'f23e1fefbc534100915d430b5f956355', '', '', '保存源码', '', 'component:save:code', 40, '', '0', 0, '1', '2024-03-10 23:06:38', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('d346dfed451b44cbb4474f0b586c32f8', '28216291e6a84b14aefbad91ed2b0f34', NULL, NULL, '删除', NULL, 'data:test:delete', 30, NULL, '0', 0, NULL, NULL, NULL, NULL, 1, 0);
INSERT INTO `sys_menu` VALUES ('d790c401c3024332be8aee049af09030', '6f3594d0-5445-41e1-a13c-890a57485036', '', '', '下移', '', 'office:sort:down', 60, '', '0', 0, '1', '2022-05-09 21:42:21', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('d7e5280a2a8f4fb3b9e2f4a3e3093a38', '39be13ef6f0745568c80bf35202ddb2b', '', '', '保存', '', 'menu:save', 10, NULL, '0', 0, '1', '2020-11-11 13:58:32', '1', '2021-04-30 21:36:28', 0, 0);
INSERT INTO `sys_menu` VALUES ('d7f8d052d4864bd285c575c3cf2dce69', '0', 'ClipboardCode24Filled', '', '低代码', '/lowcode', '', 30, '', '0', 0, '1', '2022-03-04 21:03:42', '1', '2023-06-25 20:31:30', 1, 1);
INSERT INTO `sys_menu` VALUES ('d9c32f7ed4c841cbb37eaff2624385bb', '6f3594d0-5445-41e1-a13c-890a57485036', NULL, NULL, '查看', NULL, 'office:view', 30, NULL, '0', 0, '1', '2022-02-05 22:04:25', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('dc332875-831e-4937-86ff-0c7420915ce9', '641253af-8ea1-4b5d-8bc3-a7165ef60ff2', '', '', '三级联动', '/examples/three-linkage', '', 10, NULL, '0', 0, '1', '2021-03-28 23:04:14', '1', '2021-04-30 21:38:23', 0, 1);
INSERT INTO `sys_menu` VALUES ('e46a01397a01459bb478a5f31a6220ee', '81b6845a20da4028a01a42f3eb0b4f4b', '', '', '保存', '', 'dict:items:save', 10, NULL, '0', 0, '1', '2020-12-10 10:38:27', '1', '2021-04-30 21:37:35', 0, 0);
INSERT INTO `sys_menu` VALUES ('e950b960890d4fb3916cd1c561dba035', 'bccc28641f4647d3beeaef0381fdf079', NULL, NULL, '保存', NULL, 'system:role:save', 20, NULL, '0', 0, NULL, NULL, NULL, NULL, 0, NULL);
INSERT INTO `sys_menu` VALUES ('eee27ca353fb440aa5ac0bd7b38cad1d', '4a57f57fc7324c94b6390f1a2dd1f49a', 'login-log', '', '登录日志', '/system/monitor/login-log', '', 20, '9809888c-d92a-11ee-9675-c2b02ed3977b', '0', 0, '1', '2022-03-05 17:25:05', '1', '2024-03-07 14:06:09', 1, 1);
INSERT INTO `sys_menu` VALUES ('ef2eeb351c9d421991514c7a205083d1', '7ad229f12c8f4b57bbb9349e2ffd8932', '', '', '查看', '', 'configure:view', 10, '', '0', 0, '1', '2022-05-21 18:34:29', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('f09410d5-5043-4164-9f68-8d135de71b29', '641253af-8ea1-4b5d-8bc3-a7165ef60ff2', '', '', '上传文件', '/examples/upload-file', '', 20, NULL, '0', 0, '1', '2021-04-23 22:52:04', '1', '2021-05-23 10:34:47', 0, 1);
INSERT INTO `sys_menu` VALUES ('f23e1fefbc534100915d430b5f956355', 'd7f8d052d4864bd285c575c3cf2dce69', 'component', '', '动态组件', '/lowcode/sfc-component', '', 120, '', '1', 0, '1', '2024-02-26 09:23:56', '1', '2024-03-11 09:28:58', 0, 1);
INSERT INTO `sys_menu` VALUES ('f4ea43974661442aa0a42fbad4b24818', 'f23e1fefbc534100915d430b5f956355', '', '', '组件列表', '', 'component:tree', 10, '', '0', 0, '1', '2024-03-10 23:17:13', NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('f7436d87359445c093d6499d6a01b592', 'bf5c1e44546341de9acee52d148d5a76', NULL, NULL, '删除', NULL, 'data:test:delete', 30, NULL, '0', 0, NULL, NULL, NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('f79ec17944f5485b9cf7c12ad2553a2b', 'bccc28641f4647d3beeaef0381fdf079', NULL, NULL, '删除', NULL, 'system:role:delete', 30, NULL, '0', 0, NULL, NULL, NULL, NULL, 0, NULL);
INSERT INTO `sys_menu` VALUES ('fa201e3353ba4591923a0f1798acc855', 'bf5c1e44546341de9acee52d148d5a76', NULL, NULL, '查看', NULL, 'data:test:view', 10, NULL, '0', 0, NULL, NULL, NULL, NULL, 0, 0);
INSERT INTO `sys_menu` VALUES ('fdbdcf8b8d674ae38154bc1e57498a91', '4a57f57fc7324c94b6390f1a2dd1f49a', 'user', '', '在线用户', '/system/monitor/online-user', '', 40, 'fd89dd1d66ae429689bdd978162b4caf', '0', 0, '1', '2022-03-15 23:19:04', '1', '2024-03-07 14:06:23', 0, 1);
INSERT INTO `sys_menu` VALUES ('ff7d37f87ab749f9836af74dbcdf033d', '8e9455740091486c914495cfb0c7faa5', NULL, NULL, '用户列表', NULL, 'role:user:list', 50, NULL, '0', 0, '1', '2022-02-04 17:33:20', NULL, NULL, 0, 0);
-- ----------------------------
-- Table structure for sys_office
-- ----------------------------
DROP TABLE IF EXISTS `sys_office`;
CREATE TABLE `sys_office` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名称',
`type` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型',
`code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织机构编码',
`pid` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父id',
`sort` int NULL DEFAULT NULL COMMENT '排序',
`is_del` int NULL DEFAULT 0 COMMENT '删除标识',
`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_office
-- ----------------------------
INSERT INTO `sys_office` VALUES ('31b365008f994e93850186126fce87cb', '东北分公司', '2', 'db', '4c37a80226134bce8bc91c8fc04a7d2f', 20, 0, '1', '2022-01-09 22:12:11', '1', '2022-03-05 17:17:29');
INSERT INTO `sys_office` VALUES ('4c37a80226134bce8bc91c8fc04a7d2f', '马小东总公司', '2', 'mxd', '0', 10, 0, '1', '2022-01-09 21:59:34', '1', '2022-02-05 11:26:01');
INSERT INTO `sys_office` VALUES ('81b5493cdb31477f9ceea85b2cd08f15', '内蒙分公司', '2', 'nm', '4c37a80226134bce8bc91c8fc04a7d2f', 10, 0, '1', '2022-01-09 21:59:47', '1', '2022-03-05 17:17:34');
INSERT INTO `sys_office` VALUES ('a8b62a271c2a4492bd5c0653cac8f33d', '扎兰屯办事处', '2', 'zlt', '81b5493cdb31477f9ceea85b2cd08f15', 10, 0, '1', '2022-01-16 13:15:46', '1', '2022-03-05 17:17:26');
-- ----------------------------
-- Table structure for sys_oper_log
-- ----------------------------
DROP TABLE IF EXISTS `sys_oper_log`;
CREATE TABLE `sys_oper_log` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
`api_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '接口名',
`api_path` varchar(4096) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路径',
`api_method` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '方法',
`cost_time` int NULL DEFAULT NULL COMMENT '耗时',
`create_by` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '操作人',
`create_date` datetime NULL DEFAULT NULL COMMENT '操作时间',
`user_agent` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户代理',
`user_ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户IP',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 98269 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '操作日志' ROW_FORMAT = COMPACT;
-- ----------------------------
-- Records of sys_oper_log
-- ----------------------------
-- ----------------------------
-- Table structure for sys_permission_code
-- ----------------------------
DROP TABLE IF EXISTS `sys_permission_code`;
CREATE TABLE `sys_permission_code` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限代码',
`pid` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父id',
`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 = '权限code表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_permission_code
-- ----------------------------
-- ----------------------------
-- Table structure for sys_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`type` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色名称',
`code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色编码',
`permission` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '0全部1自定义2本级级子级3本级',
`sort` int NULL DEFAULT NULL COMMENT '排序',
`desc_ribe` varchar(1000) 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 '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_role
-- ----------------------------
INSERT INTO `sys_role` VALUES ('1', '1', '管理员', 'admin', '0', NULL, '管理员', 0, NULL, NULL, '1', '2024-03-10 23:17:53');
INSERT INTO `sys_role` VALUES ('1d183eaec667423fa9adb20e24356a86', NULL, '全部', 'qb', '0', NULL, NULL, 0, '1', '2022-01-16 13:56:10', NULL, NULL);
INSERT INTO `sys_role` VALUES ('3a408f5157c841ea8884ade4fa56d0f4', NULL, '自定义', 'zdy', '1', NULL, NULL, 0, '1', '2022-01-16 13:55:22', '1', '2023-12-28 20:54:53');
INSERT INTO `sys_role` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', NULL, '测试2', 'test2', '1', NULL, NULL, 0, '1', '2022-02-04 16:39:26', '1', '2022-02-04 16:45:11');
INSERT INTO `sys_role` VALUES ('e3448fc792ca463a95a34baf6f089dcd', NULL, '本级及子级', 'bjjzj', '2', NULL, NULL, 0, '1', '2022-01-16 13:55:45', NULL, NULL);
INSERT INTO `sys_role` VALUES ('e619e4b665de42acbca1665fec150634', NULL, '本级', 'bj', '3', NULL, NULL, 0, '1', '2022-01-16 13:55:59', NULL, NULL);
-- ----------------------------
-- Table structure for sys_role_menu
-- ----------------------------
DROP TABLE IF EXISTS `sys_role_menu`;
CREATE TABLE `sys_role_menu` (
`role_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色id',
`menu_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单id'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '角色和菜单关联表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_role_menu
-- ----------------------------
INSERT INTO `sys_role_menu` VALUES ('e3448fc792ca463a95a34baf6f089dcd', 'b1851d1b13594e71840103c11a37a669');
INSERT INTO `sys_role_menu` VALUES ('e619e4b665de42acbca1665fec150634', 'b1851d1b13594e71840103c11a37a669');
INSERT INTO `sys_role_menu` VALUES ('1d183eaec667423fa9adb20e24356a86', 'b1851d1b13594e71840103c11a37a669');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', 'b1851d1b13594e71840103c11a37a669');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', '39be13ef6f0745568c80bf35202ddb2b');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', '414e5d31-fe05-4e69-9983-217c10b9740a');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', 'd7e5280a2a8f4fb3b9e2f4a3e3093a38');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', '833b204d5f2c402190bfca677421cfeb');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', '6f3594d0-5445-41e1-a13c-890a57485036');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', '4526eb9c-4b7a-4945-bfa9-cddc01f36c22');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', '6762231e-4f30-4a6b-a94e-b185e99ed608');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', '8e9455740091486c914495cfb0c7faa5');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', '94071254597d4da286bb8112ad93f4ff');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', '684723f4226948aba1661292961c8f71');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', 'bf41ddc3ea314b158e21e4efc1ed5a25');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', '06b8a427e4cd4c1ba11752070f565f20');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', 'bee5c6cb1b484133a4b8e72fe5c5eed0');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', 'c6e7b5866ce64bfdabeb5dd6342ca55f');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', 'c5f407478c4e4c9cbcdbee6389d2c909');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', 'b353de07f3624b4fa1c6f8b1b1e80cad');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', '546c874267514672844cd3a019e468f7');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', '81b6845a20da4028a01a42f3eb0b4f4b');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', 'e46a01397a01459bb478a5f31a6220ee');
INSERT INTO `sys_role_menu` VALUES ('d71c32ace3bb4d959a652ee99ecd1b26', '24176912aa9e4b2d832f96292be3430e');
INSERT INTO `sys_role_menu` VALUES ('3a408f5157c841ea8884ade4fa56d0f4', 'b1851d1b13594e71840103c11a37a669');
INSERT INTO `sys_role_menu` VALUES ('3a408f5157c841ea8884ade4fa56d0f4', '39be13ef6f0745568c80bf35202ddb2b');
INSERT INTO `sys_role_menu` VALUES ('3a408f5157c841ea8884ade4fa56d0f4', '414e5d31-fe05-4e69-9983-217c10b9740a');
INSERT INTO `sys_role_menu` VALUES ('1', NULL);
INSERT INTO `sys_role_menu` VALUES ('1', '1009eed4f46141e3aca939490d68786a');
INSERT INTO `sys_role_menu` VALUES ('1', '39be13ef6f0745568c80bf35202ddb2b');
INSERT INTO `sys_role_menu` VALUES ('1', 'b1851d1b13594e71840103c11a37a669');
INSERT INTO `sys_role_menu` VALUES ('1', '414e5d31-fe05-4e69-9983-217c10b9740a');
INSERT INTO `sys_role_menu` VALUES ('1', '6f3594d0-5445-41e1-a13c-890a57485036');
INSERT INTO `sys_role_menu` VALUES ('1', 'd9c32f7ed4c841cbb37eaff2624385bb');
INSERT INTO `sys_role_menu` VALUES ('1', '8e9455740091486c914495cfb0c7faa5');
INSERT INTO `sys_role_menu` VALUES ('1', 'a5f2cb418ac348bca3d51b98958c4a80');
INSERT INTO `sys_role_menu` VALUES ('1', '06b8a427e4cd4c1ba11752070f565f20');
INSERT INTO `sys_role_menu` VALUES ('1', '7324ad98fb51462795750bcfc1b11be2');
INSERT INTO `sys_role_menu` VALUES ('1', 'c5f407478c4e4c9cbcdbee6389d2c909');
INSERT INTO `sys_role_menu` VALUES ('1', '710c0a9195934e73b11123b62283fdc5');
INSERT INTO `sys_role_menu` VALUES ('1', '81b6845a20da4028a01a42f3eb0b4f4b');
INSERT INTO `sys_role_menu` VALUES ('1', '25162c30ae0d4297ade09539bcf81d86');
INSERT INTO `sys_role_menu` VALUES ('1', '7ad229f12c8f4b57bbb9349e2ffd8932');
INSERT INTO `sys_role_menu` VALUES ('1', 'ef2eeb351c9d421991514c7a205083d1');
INSERT INTO `sys_role_menu` VALUES ('1', '641253af-8ea1-4b5d-8bc3-a7165ef60ff2');
INSERT INTO `sys_role_menu` VALUES ('1', 'dc332875-831e-4937-86ff-0c7420915ce9');
INSERT INTO `sys_role_menu` VALUES ('1', 'f09410d5-5043-4164-9f68-8d135de71b29');
INSERT INTO `sys_role_menu` VALUES ('1', '91bdb7d742a64a8c8a8fdc6d3bb61581');
INSERT INTO `sys_role_menu` VALUES ('1', '2664b76cb2904227bce5b0f7d1dd6e7b');
INSERT INTO `sys_role_menu` VALUES ('1', 'c50388914fab408c8b74f83d0d43e557');
INSERT INTO `sys_role_menu` VALUES ('1', '713626516eaa4ba98c9daf55009b481e');
INSERT INTO `sys_role_menu` VALUES ('1', '9385945c7f5f476ab38885976907db2a');
INSERT INTO `sys_role_menu` VALUES ('1', 'a1564eaf9fb249a788d15bb4bce609a8');
INSERT INTO `sys_role_menu` VALUES ('1', 'b4e9009b24d14233a59029ec57681e2c');
INSERT INTO `sys_role_menu` VALUES ('1', 'd7f8d052d4864bd285c575c3cf2dce69');
INSERT INTO `sys_role_menu` VALUES ('1', 'f23e1fefbc534100915d430b5f956355');
INSERT INTO `sys_role_menu` VALUES ('1', 'fdbdcf8b8d674ae38154bc1e57498a91');
INSERT INTO `sys_role_menu` VALUES ('1', '4a57f57fc7324c94b6390f1a2dd1f49a');
INSERT INTO `sys_role_menu` VALUES ('1', '9fe1eaae168e4b719dc880f039ccd7b7');
INSERT INTO `sys_role_menu` VALUES ('1', '4fc65edbe0544c369b58fdfed1523537');
INSERT INTO `sys_role_menu` VALUES ('1', 'eee27ca353fb440aa5ac0bd7b38cad1d');
INSERT INTO `sys_role_menu` VALUES ('1', '3a0e3107402449698d86ee3cbc5272c0');
INSERT INTO `sys_role_menu` VALUES ('1', 'af431ab748e64914a0398f00d7aa0def');
INSERT INTO `sys_role_menu` VALUES ('1', '4d52144f827742c2aac57dd3b361d868');
INSERT INTO `sys_role_menu` VALUES ('1', '1ff68fd34f35430db30540c40a2ef9db');
INSERT INTO `sys_role_menu` VALUES ('1', '5d9c050c87ad450e886290c4e93fa16f');
INSERT INTO `sys_role_menu` VALUES ('1', '641592c74d5d43dfbecedc1a388edc8c');
INSERT INTO `sys_role_menu` VALUES ('1', 'f4ea43974661442aa0a42fbad4b24818');
-- ----------------------------
-- Table structure for sys_role_office
-- ----------------------------
DROP TABLE IF EXISTS `sys_role_office`;
CREATE TABLE `sys_role_office` (
`office_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织机构id',
`role_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色id'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户组织机构关联表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_role_office
-- ----------------------------
INSERT INTO `sys_role_office` VALUES ('81b5493cdb31477f9ceea85b2cd08f15', 'd71c32ace3bb4d959a652ee99ecd1b26');
INSERT INTO `sys_role_office` VALUES ('81b5493cdb31477f9ceea85b2cd08f15', '3a408f5157c841ea8884ade4fa56d0f4');
-- ----------------------------
-- Table structure for sys_test_data
-- ----------------------------
DROP TABLE IF EXISTS `sys_test_data`;
CREATE TABLE `sys_test_data` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 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 ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_test_data
-- ----------------------------
INSERT INTO `sys_test_data` VALUES ('0572b97b3e45448bb1fcf9059e6c5ac9', '东北分公司', 0, '7217ee3f9d6e49f1a7e327183013226b', '2022-01-16 17:40:33', NULL, NULL);
INSERT INTO `sys_test_data` VALUES ('059d96a88d594995a895a6cb8151a72f', '扎兰屯', 0, '1b47d4758336487890147fc5cd64ebb9', '2022-01-16 17:48:33', NULL, NULL);
INSERT INTO `sys_test_data` VALUES ('f49eac2294114d588dee8ea548dc85c7', '内蒙分公司', 0, '7e7f4b1017fc4564ad31a05033eb29d1', '2022-01-16 17:40:15', NULL, NULL);
-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '登录名',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名/昵称',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '密码',
`status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '状态',
`phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号',
`head_portrait` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像',
`is_login` int NULL DEFAULT 0 COMMENT '禁止登录0未禁用1已禁用',
`sort` int NULL DEFAULT NULL COMMENT '排序',
`office_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织机构id',
`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`, `username`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES ('1', 'admin', '管理员', '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', '1', '13888888888', 'userfiles/2023-04-01/1d8cd6ccc18746419b97bbd74702d38c/图片的副本2.png,userfiles/2023-04-15/5e4e53ef95884413b09509b8558393d8/iShot_2023-04-15_09.36.22.png,userfiles/2023-04-01/1d8cd6ccc18746419b97bbd74702d38c/图片的副本2.png,userfiles/2023-04-15/5e4e53ef95884413b09509b8558393d8/iShot_2023-04-15_09.36.22.png,userfiles/2023-04-01/1d8cd6ccc18746419b97bbd74702d38c/图片的副本2.png,userfiles/2023-04-15/5e4e53ef95884413b09509b8558393d8/iShot_2023-04-15_09.36.22.png,userfiles/2023-04-01/1d8cd6ccc18746419b97bbd74702d38c/图片的副本2.png,userfiles/2023-04-15/5e4e53ef95884413b09509b8558393d8/iShot_2023-04-15_09.36.22.png,userfiles/2023-04-01/1d8cd6ccc18746419b97bbd74702d38c/图片的副本2.png,userfiles/2023-04-15/5e4e53ef95884413b09509b8558393d8/iShot_2023-04-15_09.36.22.png', 0, NULL, '31b365008f994e93850186126fce87cb', 0, NULL, '2020-05-15 22:25:20', '1', '2024-03-10 23:13:41');
INSERT INTO `sys_user` VALUES ('1b47d4758336487890147fc5cd64ebb9', 'zlt', NULL, '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b', NULL, NULL, NULL, 0, NULL, 'a8b62a271c2a4492bd5c0653cac8f33d', 0, '1', '2022-01-16 17:48:20', NULL, NULL);
INSERT INTO `sys_user` VALUES ('6fa07e9364534ffeb56f9e38bda9de33', 'system', '管理员', '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', NULL, NULL, NULL, 0, NULL, '4c37a80226134bce8bc91c8fc04a7d2f', 0, '1', '2024-03-10 22:45:40', NULL, NULL);
INSERT INTO `sys_user` VALUES ('7217ee3f9d6e49f1a7e327183013226b', 'db', NULL, '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b', NULL, NULL, NULL, 0, NULL, '31b365008f994e93850186126fce87cb', 0, '1', '2022-01-16 17:24:56', NULL, NULL);
INSERT INTO `sys_user` VALUES ('7e7f4b1017fc4564ad31a05033eb29d1', 'nm', NULL, '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b', NULL, NULL, NULL, 0, NULL, '81b5493cdb31477f9ceea85b2cd08f15', 0, '1', '2022-01-16 17:24:29', '1', '2022-01-16 17:24:38');
INSERT INTO `sys_user` VALUES ('895757b441fe45b1afb0ed1cb535f35c', 'mxd', 'mxd', '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', NULL, NULL, NULL, 0, NULL, '4c37a80226134bce8bc91c8fc04a7d2f', 0, '1', '2022-01-16 17:23:16', '1', '2023-04-19 17:01:24');
INSERT INTO `sys_user` VALUES ('cbafb7813bd9458eae26e4dc3d05bf5e', 'mxd2', NULL, '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b', NULL, NULL, NULL, 0, NULL, '4c37a80226134bce8bc91c8fc04a7d2f', 0, '1', '2022-01-16 17:23:50', '1', '2022-01-16 17:24:42');
-- ----------------------------
-- Table structure for sys_user_code
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_code`;
CREATE TABLE `sys_user_code` (
`user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户id',
`code_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '权限代码id',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户权限code关联表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_user_code
-- ----------------------------
-- ----------------------------
-- Table structure for sys_user_role
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
`user_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户id',
`role_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '角色id'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户与角色关联表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of sys_user_role
-- ----------------------------
INSERT INTO `sys_user_role` VALUES ('7e7f4b1017fc4564ad31a05033eb29d1', 'e3448fc792ca463a95a34baf6f089dcd');
INSERT INTO `sys_user_role` VALUES ('cbafb7813bd9458eae26e4dc3d05bf5e', '1d183eaec667423fa9adb20e24356a86');
INSERT INTO `sys_user_role` VALUES ('7217ee3f9d6e49f1a7e327183013226b', 'e619e4b665de42acbca1665fec150634');
INSERT INTO `sys_user_role` VALUES ('1b47d4758336487890147fc5cd64ebb9', 'e619e4b665de42acbca1665fec150634');
INSERT INTO `sys_user_role` VALUES ('895757b441fe45b1afb0ed1cb535f35c', '3a408f5157c841ea8884ade4fa56d0f4');
INSERT INTO `sys_user_role` VALUES ('6fa07e9364534ffeb56f9e38bda9de33', '1');
INSERT INTO `sys_user_role` VALUES ('1', '1');
-- ----------------------------
-- Table structure for t_data_test
-- ----------------------------
DROP TABLE IF EXISTS `t_data_test`;
CREATE TABLE `t_data_test` (
`id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '名字',
`sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '性别',
`head_portrait` varchar(255) 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 t_data_test
-- ----------------------------
INSERT INTO `t_data_test` VALUES ('ecacf5c78bd043b1aaf06a839f7195b1', '马小东', '1', 'userfiles/2022-05-05/c6aeb598deef48c385b0da831b7c2b85/QQ图片20220505165410.jpg', 0, '1', '2022-03-30 22:43:45', '1', '2022-05-05 16:54:21', '没有');
SET FOREIGN_KEY_CHECKS = 1;