createtable

This commit is contained in:
2025-11-22 20:52:29 +08:00
parent 9dd21b13cf
commit d2b21bd6e2
13 changed files with 10651 additions and 13287 deletions

View File

@@ -1,275 +0,0 @@
import {
useMediaQuery
} from "./chunk-AAVY4YN3.js";
import {
computed,
ref,
shallowRef,
watch
} from "./chunk-JD3CXNQ6.js";
// node_modules/vitepress/dist/client/theme-default/index.js
import "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/styles/fonts.css";
// node_modules/vitepress/dist/client/theme-default/without-fonts.js
import "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/styles/vars.css";
import "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/styles/base.css";
import "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/styles/icons.css";
import "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/styles/utils.css";
import "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/styles/components/custom-block.css";
import "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code.css";
import "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code-group.css";
import "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/styles/components/vp-doc.css";
import "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/styles/components/vp-sponsor.css";
import VPBadge from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue";
import Layout from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/Layout.vue";
import { default as default2 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue";
import { default as default3 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPButton.vue";
import { default as default4 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPDocAsideSponsors.vue";
import { default as default5 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPFeatures.vue";
import { default as default6 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPHomeContent.vue";
import { default as default7 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPHomeFeatures.vue";
import { default as default8 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPHomeHero.vue";
import { default as default9 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPHomeSponsors.vue";
import { default as default10 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPImage.vue";
import { default as default11 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPLink.vue";
import { default as default12 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPNavBarSearch.vue";
import { default as default13 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPSocialLink.vue";
import { default as default14 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPSocialLinks.vue";
import { default as default15 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPSponsors.vue";
import { default as default16 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPTeamMembers.vue";
import { default as default17 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPTeamPage.vue";
import { default as default18 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageSection.vue";
import { default as default19 } from "C:/repos/flower-rain/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageTitle.vue";
// node_modules/vitepress/dist/client/theme-default/composables/local-nav.js
import { onContentUpdated } from "vitepress";
// node_modules/vitepress/dist/client/theme-default/composables/outline.js
import { getScrollOffset } from "vitepress";
// node_modules/vitepress/dist/client/theme-default/support/utils.js
import { withBase } from "vitepress";
// node_modules/vitepress/dist/client/theme-default/composables/data.js
import { useData as useData$ } from "vitepress";
var useData = useData$;
// node_modules/vitepress/dist/client/theme-default/support/utils.js
function ensureStartingSlash(path) {
return path.startsWith("/") ? path : `/${path}`;
}
// node_modules/vitepress/dist/client/theme-default/support/sidebar.js
function getSidebar(_sidebar, path) {
if (Array.isArray(_sidebar))
return addBase(_sidebar);
if (_sidebar == null)
return [];
path = ensureStartingSlash(path);
const dir = Object.keys(_sidebar).sort((a, b) => {
return b.split("/").length - a.split("/").length;
}).find((dir2) => {
return path.startsWith(ensureStartingSlash(dir2));
});
const sidebar = dir ? _sidebar[dir] : [];
return Array.isArray(sidebar) ? addBase(sidebar) : addBase(sidebar.items, sidebar.base);
}
function getSidebarGroups(sidebar) {
const groups = [];
let lastGroupIndex = 0;
for (const index in sidebar) {
const item = sidebar[index];
if (item.items) {
lastGroupIndex = groups.push(item);
continue;
}
if (!groups[lastGroupIndex]) {
groups.push({ items: [] });
}
groups[lastGroupIndex].items.push(item);
}
return groups;
}
function addBase(items, _base) {
return [...items].map((_item) => {
const item = { ..._item };
const base = item.base || _base;
if (base && item.link)
item.link = base + item.link;
if (item.items)
item.items = addBase(item.items, base);
return item;
});
}
// node_modules/vitepress/dist/client/theme-default/composables/sidebar.js
function useSidebar() {
const { frontmatter, page, theme: theme2 } = useData();
const is960 = useMediaQuery("(min-width: 960px)");
const isOpen = ref(false);
const _sidebar = computed(() => {
const sidebarConfig = theme2.value.sidebar;
const relativePath = page.value.relativePath;
return sidebarConfig ? getSidebar(sidebarConfig, relativePath) : [];
});
const sidebar = ref(_sidebar.value);
watch(_sidebar, (next, prev) => {
if (JSON.stringify(next) !== JSON.stringify(prev))
sidebar.value = _sidebar.value;
});
const hasSidebar = computed(() => {
return frontmatter.value.sidebar !== false && sidebar.value.length > 0 && frontmatter.value.layout !== "home";
});
const leftAside = computed(() => {
if (hasAside)
return frontmatter.value.aside == null ? theme2.value.aside === "left" : frontmatter.value.aside === "left";
return false;
});
const hasAside = computed(() => {
if (frontmatter.value.layout === "home")
return false;
if (frontmatter.value.aside != null)
return !!frontmatter.value.aside;
return theme2.value.aside !== false;
});
const isSidebarEnabled = computed(() => hasSidebar.value && is960.value);
const sidebarGroups = computed(() => {
return hasSidebar.value ? getSidebarGroups(sidebar.value) : [];
});
function open() {
isOpen.value = true;
}
function close() {
isOpen.value = false;
}
function toggle() {
isOpen.value ? close() : open();
}
return {
isOpen,
sidebar,
sidebarGroups,
hasSidebar,
hasAside,
leftAside,
isSidebarEnabled,
open,
close,
toggle
};
}
// node_modules/vitepress/dist/client/theme-default/composables/outline.js
var ignoreRE = /\b(?:VPBadge|header-anchor|footnote-ref|ignore-header)\b/;
var resolvedHeaders = [];
function getHeaders(range) {
const headers = [
...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")
].filter((el) => el.id && el.hasChildNodes()).map((el) => {
const level = Number(el.tagName[1]);
return {
element: el,
title: serializeHeader(el),
link: "#" + el.id,
level
};
});
return resolveHeaders(headers, range);
}
function serializeHeader(h) {
let ret = "";
for (const node of h.childNodes) {
if (node.nodeType === 1) {
if (ignoreRE.test(node.className))
continue;
ret += node.textContent;
} else if (node.nodeType === 3) {
ret += node.textContent;
}
}
return ret.trim();
}
function resolveHeaders(headers, range) {
if (range === false) {
return [];
}
const levelsRange = (typeof range === "object" && !Array.isArray(range) ? range.level : range) || 2;
const [high, low] = typeof levelsRange === "number" ? [levelsRange, levelsRange] : levelsRange === "deep" ? [2, 6] : levelsRange;
return buildTree(headers, high, low);
}
function buildTree(data, min, max) {
resolvedHeaders.length = 0;
const result = [];
const stack = [];
data.forEach((item) => {
const node = { ...item, children: [] };
let parent = stack[stack.length - 1];
while (parent && parent.level >= node.level) {
stack.pop();
parent = stack[stack.length - 1];
}
if (node.element.classList.contains("ignore-header") || parent && "shouldIgnore" in parent) {
stack.push({ level: node.level, shouldIgnore: true });
return;
}
if (node.level > max || node.level < min)
return;
resolvedHeaders.push({ element: node.element, link: node.link });
if (parent)
parent.children.push(node);
else
result.push(node);
stack.push(node);
});
return result;
}
// node_modules/vitepress/dist/client/theme-default/composables/local-nav.js
function useLocalNav() {
const { theme: theme2, frontmatter } = useData();
const headers = shallowRef([]);
const hasLocalNav = computed(() => {
return headers.value.length > 0;
});
onContentUpdated(() => {
headers.value = getHeaders(frontmatter.value.outline ?? theme2.value.outline);
});
return {
headers,
hasLocalNav
};
}
// node_modules/vitepress/dist/client/theme-default/without-fonts.js
var theme = {
Layout,
enhanceApp: ({ app }) => {
app.component("Badge", VPBadge);
}
};
var without_fonts_default = theme;
export {
default2 as VPBadge,
default3 as VPButton,
default4 as VPDocAsideSponsors,
default5 as VPFeatures,
default6 as VPHomeContent,
default7 as VPHomeFeatures,
default8 as VPHomeHero,
default9 as VPHomeSponsors,
default10 as VPImage,
default11 as VPLink,
default12 as VPNavBarSearch,
default13 as VPSocialLink,
default14 as VPSocialLinks,
default15 as VPSponsors,
default16 as VPTeamMembers,
default17 as VPTeamPage,
default18 as VPTeamPageSection,
default19 as VPTeamPageTitle,
without_fonts_default as default,
useLocalNav,
useSidebar
};
//# sourceMappingURL=@theme_index.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,40 +1,31 @@
{
"hash": "dffef0b3",
"configHash": "180cc241",
"lockfileHash": "e3b0c442",
"browserHash": "c62f7438",
"hash": "8bc55d47",
"configHash": "b81bb1f1",
"lockfileHash": "2742585f",
"browserHash": "65f4ed22",
"optimized": {
"vue": {
"src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
"fileHash": "9cd63005",
"fileHash": "349f3f49",
"needsInterop": false
},
"vitepress > @vue/devtools-api": {
"src": "../../../../node_modules/@vue/devtools-api/dist/index.js",
"file": "vitepress___@vue_devtools-api.js",
"fileHash": "13ad4323",
"fileHash": "0f3f40ef",
"needsInterop": false
},
"vitepress > @vueuse/core": {
"src": "../../../../node_modules/vitepress/node_modules/@vueuse/core/index.mjs",
"src": "../../../../node_modules/vitepress/node_modules/@vueuse/core/dist/index.js",
"file": "vitepress___@vueuse_core.js",
"fileHash": "98c473c4",
"needsInterop": false
},
"@theme/index": {
"src": "../../../../node_modules/vitepress/dist/client/theme-default/index.js",
"file": "@theme_index.js",
"fileHash": "a5558c6e",
"fileHash": "4cda59eb",
"needsInterop": false
}
},
"chunks": {
"chunk-AAVY4YN3": {
"file": "chunk-AAVY4YN3.js"
},
"chunk-JD3CXNQ6": {
"file": "chunk-JD3CXNQ6.js"
"chunk-32NP4N34": {
"file": "chunk-32NP4N34.js"
}
}
}

View File

@@ -49,10 +49,10 @@ var isBuiltInDirective = makeMap(
);
var cacheStringFunction = (fn) => {
const cache = /* @__PURE__ */ Object.create(null);
return (str) => {
return ((str) => {
const hit = cache[str];
return hit || (cache[str] = fn(str));
};
});
};
var camelizeRE = /-\w/g;
var camelize = cacheStringFunction(
@@ -11446,9 +11446,9 @@ function defineCustomElement(options, extraOptions, _createApp) {
VueCustomElement.def = Comp;
return VueCustomElement;
}
var defineSSRCustomElement = (options, extraOptions) => {
var defineSSRCustomElement = ((options, extraOptions) => {
return defineCustomElement(options, extraOptions, createSSRApp);
};
});
var BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class {
};
var VueElement = class _VueElement extends BaseClass {
@@ -12296,13 +12296,13 @@ var modifierGuards = {
var withModifiers = (fn, modifiers) => {
const cache = fn._withMods || (fn._withMods = {});
const cacheKey = modifiers.join(".");
return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {
return cache[cacheKey] || (cache[cacheKey] = ((event, ...args) => {
for (let i = 0; i < modifiers.length; i++) {
const guard = modifierGuards[modifiers[i]];
if (guard && guard(event, modifiers)) return;
}
return fn(event, ...args);
});
}));
};
var keyNames = {
esc: "escape",
@@ -12316,7 +12316,7 @@ var keyNames = {
var withKeys = (fn, modifiers) => {
const cache = fn._withKeys || (fn._withKeys = {});
const cacheKey = modifiers.join(".");
return cache[cacheKey] || (cache[cacheKey] = (event) => {
return cache[cacheKey] || (cache[cacheKey] = ((event) => {
if (!("key" in event)) {
return;
}
@@ -12326,7 +12326,7 @@ var withKeys = (fn, modifiers) => {
)) {
return fn(event);
}
});
}));
};
var rendererOptions = extend({ patchProp }, nodeOps);
var renderer;
@@ -12339,13 +12339,13 @@ function ensureHydrationRenderer() {
enabledHydration = true;
return renderer;
}
var render = (...args) => {
var render = ((...args) => {
ensureRenderer().render(...args);
};
var hydrate = (...args) => {
});
var hydrate = ((...args) => {
ensureHydrationRenderer().hydrate(...args);
};
var createApp = (...args) => {
});
var createApp = ((...args) => {
const app = ensureRenderer().createApp(...args);
if (true) {
injectNativeTagCheck(app);
@@ -12370,8 +12370,8 @@ var createApp = (...args) => {
return proxy;
};
return app;
};
var createSSRApp = (...args) => {
});
var createSSRApp = ((...args) => {
const app = ensureHydrationRenderer().createApp(...args);
if (true) {
injectNativeTagCheck(app);
@@ -12385,7 +12385,7 @@ var createSSRApp = (...args) => {
}
};
return app;
};
});
function resolveRootNamespace(container) {
if (container instanceof SVGElement) {
return "svg";
@@ -12643,41 +12643,4 @@ export {
initDirectivesForSSR,
compile2 as compile
};
/*! Bundled license information:
@vue/shared/dist/shared.esm-bundler.js:
(**
* @vue/shared v3.5.21
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**)
@vue/reactivity/dist/reactivity.esm-bundler.js:
(**
* @vue/reactivity v3.5.21
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**)
@vue/runtime-core/dist/runtime-core.esm-bundler.js:
(**
* @vue/runtime-core v3.5.21
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**)
@vue/runtime-dom/dist/runtime-dom.esm-bundler.js:
(**
* @vue/runtime-dom v3.5.21
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**)
vue/dist/vue.runtime.esm-bundler.js:
(**
* vue v3.5.21
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**)
*/
//# sourceMappingURL=chunk-JD3CXNQ6.js.map
//# sourceMappingURL=chunk-32NP4N34.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -168,7 +168,7 @@ import {
withMemo,
withModifiers,
withScopeId
} from "./chunk-JD3CXNQ6.js";
} from "./chunk-32NP4N34.js";
export {
BaseTransition,
BaseTransitionPropsValidators,
@@ -340,4 +340,3 @@ export {
withModifiers,
withScopeId
};
//# sourceMappingURL=vue.js.map

View File

@@ -1,3 +1,143 @@
龚涵博
contant:龚涵博111
contant:# 数据库表结构文档
## 1. 用户表 (users)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| user_id | 用户ID | INT | 主键 |
| username | 用户名 | VARCHAR | |
| age | 年龄 | INT | |
| education | 学历 | VARCHAR | |
| work_experience | 工作经验 | VARCHAR | |
| phone | 手机号 | VARCHAR | |
| email | 邮箱 | VARCHAR | |
| avatar | 头像 | VARCHAR | |
| created_at | 创建时间 | TIMESTAMP | |
| updated_at | 更新时间 | TIMESTAMP | |
## 2. 公司表 (companies)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| company_id | 公司ID | INT | 主键 |
| company_name | 公司名称 | VARCHAR | |
| industry | 行业 | VARCHAR | |
| scale | 公司规模 | VARCHAR | |
| nature | 企业性质 | VARCHAR | |
| location | 所在地 | VARCHAR | |
| description | 公司描述 | TEXT | |
| contact_info | 联系信息 | VARCHAR | |
| logo_url | 公司logo | VARCHAR | |
| created_at | 创建时间 | TIMESTAMP | |
| updated_at | 更新时间 | TIMESTAMP | |
## 3. 职位表 (jobs)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| job_id | 职位ID | INT | 主键 |
| company_id | 公司ID | INT | 外键 |
| job_title | 职位名称 | VARCHAR | |
| job_industry | 职位行业 | VARCHAR | |
| work_experience | 工作经验要求 | VARCHAR | |
| salary_range | 薪资范围 | VARCHAR | |
| education_requirement | 学历要求 | VARCHAR | |
| work_location | 工作地点 | VARCHAR | |
| job_description | 职位描述 | TEXT | |
| employment_type | 全职/兼职 | VARCHAR | |
| is_active | 是否有效 | BOOLEAN | |
| created_at | 创建时间 | TIMESTAMP | |
| updated_at | 更新时间 | TIMESTAMP | |
## 4. 人才简历表 (resumes)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| resume_id | 简历ID | INT | 主键 |
| user_id | 用户ID | INT | 外键 |
| expected_industry | 期望行业 | VARCHAR | |
| expected_salary | 期望薪资 | VARCHAR | |
| education_experience | 教育经历 | TEXT | |
| work_experience | 工作经历 | TEXT | |
| skills | 技能 | TEXT | |
| is_public | 是否公开 | BOOLEAN | |
| last_updated | 最后更新时间 | TIMESTAMP | |
| created_at | 创建时间 | TIMESTAMP | |
## 5. 招聘活动表 (recruitment_events)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| event_id | 活动ID | INT | 主键 |
| event_title | 活动标题 | VARCHAR | |
| event_time | 活动时间 | TIMESTAMP | |
| location | 活动地点 | VARCHAR | |
| description | 活动描述 | TEXT | |
| organizer | 主办方 | VARCHAR | |
| event_type | 活动类型 | VARCHAR | |
| status | 状态 | VARCHAR | |
| created_at | 创建时间 | TIMESTAMP | |
| updated_at | 更新时间 | TIMESTAMP | |
## 6. 资讯政策表 (news_policies)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| news_id | 资讯ID | INT | 主键 |
| title | 标题 | VARCHAR | |
| content | 内容 | TEXT | |
| type | 类型 | VARCHAR | |
| publish_time | 发布时间 | TIMESTAMP | |
| source | 来源 | VARCHAR | |
| is_top | 是否置顶 | BOOLEAN | |
| created_at | 创建时间 | TIMESTAMP | |
## 7. 热门搜索表 (hot_searches)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| search_id | 搜索ID | INT | 主键 |
| keyword | 搜索关键词 | VARCHAR | |
| search_type | 搜索类型 | VARCHAR | |
| search_count | 搜索次数 | INT | |
| display_order | 显示顺序 | INT | |
| is_active | 是否有效 | BOOLEAN | |
| created_at | 创建时间 | TIMESTAMP | |
## 关联关系表
### 8. 人才期望行业表 (resume_industries)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| id | ID | INT | 主键 |
| resume_id | 简历ID | INT | 外键 |
| industry_id | 行业ID | INT | |
### 9. 活动参与表 (event_participants)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| id | ID | INT | 主键 |
| event_id | 活动ID | INT | 外键 |
| company_id | 公司ID | INT | 外键 |
| participant_type | 参与类型 | VARCHAR | |
### 10. 行业分类表 (industries)
| 字段名 | 说明 | 类型 | 约束 |
|--------|------|------|------|
| industry_id | 行业ID | INT | 主键 |
| industry_name | 行业名称 | VARCHAR | |
| parent_id | 父级ID | INT | |
| level | 层级 | INT | |
| created_at | 创建时间 | TIMESTAMP | |
## 表关系说明
- 用户表 ↔ 人才简历表:一对多(一个用户可以有多个简历版本)
- 公司表 ↔ 职位表:一对多(一个公司发布多个职位)
- 人才简历表 ↔ 人才期望行业表:一对多(一个简历对应多个期望行业)
- 招聘活动表 ↔ 活动参与表:一对多(一个活动多个参与公司)