diff --git a/README.md b/README.md
index c0d9640..e3935dc 100644
--- a/README.md
+++ b/README.md
@@ -49,13 +49,14 @@ Kinit 是一套全部开源的快速开发平台,毫无保留给个人及企
-
+
+
## 在线体验
PC端演示地址:https://kinit.ktianc.top
diff --git a/kinit-admin/.gitignore b/kinit-admin/.gitignore
index c18fb3c..0ef2890 100644
--- a/kinit-admin/.gitignore
+++ b/kinit-admin/.gitignore
@@ -5,3 +5,5 @@ dist-ssr
*-lock.*
pnpm-debug
stats.html
+dist-pro
+.vscode
diff --git a/kinit-admin/.vscode/extensions.json b/kinit-admin/.vscode/extensions.json
deleted file mode 100644
index 62a1b22..0000000
--- a/kinit-admin/.vscode/extensions.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "recommendations": ["vue.volar", "lokalise.i18n-ally"]
-}
diff --git a/kinit-admin/.vscode/settings.json b/kinit-admin/.vscode/settings.json
deleted file mode 100644
index 9f03929..0000000
--- a/kinit-admin/.vscode/settings.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "typescript.tsdk": "node_modules/typescript/lib",
- "prettier.enable": false,
- "editor.codeActionsOnSave": {
- "source.fixAll.eslint": true
- },
- "[vue]": {
- "editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
- },
- "i18n-ally.localesPaths": ["src/locales"],
- "i18n-ally.keystyle": "nested",
- "i18n-ally.sortKeys": true,
- "i18n-ally.namespace": false,
- "i18n-ally.enabledParsers": ["ts"],
- "i18n-ally.sourceLanguage": "zh-CN",
- "i18n-ally.displayLanguage": "zh-CN",
- "i18n-ally.enabledFrameworks": ["vue", "react"],
- "god.tsconfig": "./tsconfig.json"
-}
diff --git a/kinit-admin/src/components/Footer/src/Footer.vue b/kinit-admin/src/components/Footer/src/Footer.vue
index c725e4b..f4569ad 100644
--- a/kinit-admin/src/components/Footer/src/Footer.vue
+++ b/kinit-admin/src/components/Footer/src/Footer.vue
@@ -9,7 +9,7 @@ const prefixCls = getPrefixCls('footer')
const appStore = useAppStore()
-const title = computed(() => appStore.getTitle)
+const footerContent = computed(() => appStore.getFooterContent)
@@ -17,6 +17,6 @@ const title = computed(() => appStore.getTitle)
:class="prefixCls"
class="shrink-0 text-center text-[var(--el-text-color-placeholder)] bg-[var(--app-content-bg-color)] h-[var(--app-footer-height)] leading-[var(--app-footer-height)] dark:bg-[var(--el-bg-color)]"
>
- Copyright ©2021-present {{ title }}
+ {{ footerContent }}
diff --git a/kinit-admin/src/views/Login/Login.vue b/kinit-admin/src/views/Login/Login.vue
index e00058a..52e5d43 100644
--- a/kinit-admin/src/views/Login/Login.vue
+++ b/kinit-admin/src/views/Login/Login.vue
@@ -9,6 +9,7 @@ import { useDesign } from '@/hooks/web/useDesign'
import { ref } from 'vue'
import { ElScrollbar } from 'element-plus'
import { computed } from 'vue'
+import { ElButton } from 'element-plus'
const { getPrefixCls } = useDesign()
@@ -28,6 +29,11 @@ const toTelephoneLogin = () => {
const toPasswordLogin = () => {
isPasswordLogin.value = true
}
+
+const icpNumber = computed(() => appStore.getIcpNumber)
+const toICO = () => {
+ window.open('https://beian.miit.gov.cn/#/Integrated/index')
+}
@@ -88,6 +94,9 @@ const toPasswordLogin = () => {
/>
+
+ {{ icpNumber }}
+
diff --git a/kinit-admin/src/views/Vadmin/System/Settings/components/Basic.vue b/kinit-admin/src/views/Vadmin/System/Settings/components/Basic.vue
index a00d848..183c6ec 100644
--- a/kinit-admin/src/views/Vadmin/System/Settings/components/Basic.vue
+++ b/kinit-admin/src/views/Vadmin/System/Settings/components/Basic.vue
@@ -149,7 +149,7 @@ const formSchema = reactive([
show-file-list={false}
before-upload={beforeImageUpload}
on-success={handleUploadSuccess}
- accept="image/jpeg,image/gif,image/png"
+ accept="image/x-icon"
name="file"
headers={{ Authorization: token }}
>
@@ -259,10 +259,10 @@ const save = async () => {
try {
const res = await putSystemSettingsApi(formData)
if (res) {
- appStore.setTitle(res.data.web_title || import.meta.env.VITE_APP_TITLE)
- appStore.setLogoImage(res.data.web_logo || '/static/system/logo.png')
- appStore.setFooterContent(res.data.web_copyright || 'Copyright ©2022-present K')
- appStore.setIcpNumber(res.data.web_icp_number || '')
+ appStore.setTitle(formData.web_title || import.meta.env.VITE_APP_TITLE)
+ appStore.setLogoImage(formData.web_logo || '/media/system/logo.png')
+ appStore.setFooterContent(formData.web_copyright || 'Copyright ©2022-present K')
+ appStore.setIcpNumber(formData.web_icp_number || '')
return ElMessage.success('更新成功')
}
} finally {
diff --git a/kinit-api/application/settings.py b/kinit-api/application/settings.py
index 4453f0e..d395fbe 100644
--- a/kinit-api/application/settings.py
+++ b/kinit-api/application/settings.py
@@ -11,13 +11,13 @@ from fastapi.security import OAuth2PasswordBearer
"""
系统版本
"""
-VERSION = "3.7.0"
+VERSION = "3.7.1"
"""安全警告: 不要在生产中打开调试运行!"""
DEBUG = False
"""是否开启演示功能:取消所有POST,DELETE,PUT操作权限"""
-DEMO = False
+DEMO = True
"""演示功能白名单"""
DEMO_WHITE_LIST_PATH = [
"/auth/login",
diff --git a/kinit-api/utils/file/file_manage.py b/kinit-api/utils/file/file_manage.py
index 83043de..6b49096 100644
--- a/kinit-api/utils/file/file_manage.py
+++ b/kinit-api/utils/file/file_manage.py
@@ -63,19 +63,21 @@ class FileManage(FileBase):
async def async_save_local(self) -> dict:
"""
保存文件到本地
- :return:
+ :return: 示例:
+ {
+ 'local_path': 'D:\\project\\kinit_dev\\kinit-api\\static\\system\\20240301\\1709303205HuYB3mrC.png',
+ 'remote_path': '/media/system/20240301/1709303205HuYB3mrC.png'
+ }
"""
- path = self.path
+ path = AsyncPath(self.path)
if sys.platform == "win32":
- path = self.path.replace("/", "\\")
- save_path = AsyncPath(STATIC_ROOT) / path
- if not await save_path.parent.exists():
- await save_path.parent.mkdir(parents=True, exist_ok=True)
- await save_path.write_bytes(await self.file.read())
- remote_path = path.replace(STATIC_ROOT, '').replace("\\", '/')
+ path = AsyncPath(self.path.replace("/", "\\"))
+ if not await path.parent.exists():
+ await path.parent.mkdir(parents=True, exist_ok=True)
+ await path.write_bytes(await self.file.read())
return {
- "local_path": path,
- "remote_path": f"{STATIC_URL}/{remote_path}"
+ "local_path": str(path),
+ "remote_path": STATIC_URL + str(path).replace(STATIC_ROOT, '').replace("\\", '/')
}
@classmethod