diff --git a/kinit-admin/src/views/vadmin/system/settings/basic.vue b/kinit-admin/src/views/vadmin/system/settings/basic.vue index 9551623..ff9bab9 100644 --- a/kinit-admin/src/views/vadmin/system/settings/basic.vue +++ b/kinit-admin/src/views/vadmin/system/settings/basic.vue @@ -49,12 +49,13 @@ const { setValues, setValue } = methods // 上传成功的钩子函数 const handleICOUploadSuccess: UploadProps['onSuccess'] = (response) => { - setValue('web_ico', response.data) + setValue('web_ico', response.data.remote_path) + setValue('web_ico_local_path', response.data.local_path) } // 上传成功的钩子函数 const handleLogoUploadSuccess: UploadProps['onSuccess'] = (response) => { - setValue('web_logo', response.data) + setValue('web_logo', response.data.remote_path) } let formData = ref({} as Recordable) diff --git a/kinit-admin/src/views/vadmin/system/settings/components/basic.data.ts b/kinit-admin/src/views/vadmin/system/settings/components/basic.data.ts index 85b32b5..ece0bf4 100644 --- a/kinit-admin/src/views/vadmin/system/settings/components/basic.data.ts +++ b/kinit-admin/src/views/vadmin/system/settings/components/basic.data.ts @@ -44,6 +44,16 @@ export const schema = reactive([ span: 24 } }, + { + field: 'web_ico_local_path', + label: 'ICO 图标服务器文件地址', + colProps: { + span: 24 + }, + ifshow: () => { + return false + } + }, { field: 'web_icp_number', label: '备案号', diff --git a/kinit-api/application/settings.py b/kinit-api/application/settings.py index 9fb8c76..d033b85 100644 --- a/kinit-api/application/settings.py +++ b/kinit-api/application/settings.py @@ -11,13 +11,13 @@ from fastapi.security import OAuth2PasswordBearer """ 系统版本 """ -VERSION = "1.4.0" +VERSION = "1.4.2" """安全警告: 不要在生产中打开调试运行!""" -DEBUG = False +DEBUG = True """是否开启演示功能:取消所有POST,DELETE,PUT操作权限""" -DEMO = True +DEMO = False """演示功能白名单""" DEMO_WHITE_LIST_PATH = [ "/auth/login/", @@ -71,7 +71,8 @@ STATIC_ROOT:静态文件目录绝对路径 """ STATIC_ENABLE = True STATIC_URL = "/media" -STATIC_ROOT = os.path.join(BASE_DIR, "static") +STATIC_DIR = "static" +STATIC_ROOT = os.path.join(BASE_DIR, STATIC_DIR) """ diff --git a/kinit-api/apps/vadmin/system/crud.py b/kinit-api/apps/vadmin/system/crud.py index c99ce31..b2ae6b4 100644 --- a/kinit-api/apps/vadmin/system/crud.py +++ b/kinit-api/apps/vadmin/system/crud.py @@ -9,9 +9,12 @@ # sqlalchemy 查询操作:https://segmentfault.com/a/1190000016767008 # sqlalchemy 关联查询:https://www.jianshu.com/p/dfad7c08c57a # sqlalchemy 关联查询详细:https://blog.csdn.net/u012324798/article/details/103940527 +import os from typing import List, Union from sqlalchemy import select, update from sqlalchemy.ext.asyncio import AsyncSession + +from application.settings import STATIC_ROOT from utils.file_manage import FileManage from . import models, schemas from core.crud import DalBase @@ -75,14 +78,21 @@ class SettingsDal(DalBase): """ for key, value in datas.items(): if key == "web_ico": + continue + elif key == "web_ico_local_path": if not value: continue ico = await self.get_data(config_key="web_ico", tab_id=1) - if ico.config_value == value: + web_ico = datas.get("web_ico") + if ico.config_value == web_ico: continue # 将上传的ico路径替换到static/system/favicon.ico文件 - FileManage.copy(value, "static/system/favicon.ico") - await self.db.execute(update(self.model).where(self.model.config_key == key).values(config_value=value)) + FileManage.copy(value, os.path.join(STATIC_ROOT, "system/favicon.ico")) + sql = update(self.model).where(self.model.config_key == "web_ico").values(config_value=web_ico) + await self.db.execute(sql) + else: + sql = update(self.model).where(self.model.config_key == key).values(config_value=value) + await self.db.execute(sql) class SettingsTabDal(DalBase): diff --git a/kinit-api/scripts/initialize/data/init.xlsx b/kinit-api/scripts/initialize/data/init.xlsx index 52e364e..7957033 100644 Binary files a/kinit-api/scripts/initialize/data/init.xlsx and b/kinit-api/scripts/initialize/data/init.xlsx differ diff --git a/kinit-api/static/system/2022-11-02/16673939384db5ae4d.png b/kinit-api/static/system/2022-11-02/16673939384db5ae4d.png deleted file mode 100644 index 046d976..0000000 Binary files a/kinit-api/static/system/2022-11-02/16673939384db5ae4d.png and /dev/null differ diff --git a/kinit-api/static/system/2022-11-02/16673944755a6d1fd9.png b/kinit-api/static/system/2022-11-02/16673944755a6d1fd9.png deleted file mode 100644 index 6016a4b..0000000 Binary files a/kinit-api/static/system/2022-11-02/16673944755a6d1fd9.png and /dev/null differ diff --git a/kinit-api/static/system/2022-11-02/16673953638ce27244.ico b/kinit-api/static/system/2022-11-02/16673953638ce27244.ico deleted file mode 100644 index 12409db..0000000 Binary files a/kinit-api/static/system/2022-11-02/16673953638ce27244.ico and /dev/null differ diff --git a/kinit-api/static/system/2022-11-02/166739678054687e77.ico b/kinit-api/static/system/2022-11-02/166739678054687e77.ico deleted file mode 100644 index a143a16..0000000 Binary files a/kinit-api/static/system/2022-11-02/166739678054687e77.ico and /dev/null differ diff --git a/kinit-api/static/system/2022-11-02/1667396953ebdb4f89.ico b/kinit-api/static/system/2022-11-02/1667396953ebdb4f89.ico deleted file mode 100644 index a143a16..0000000 Binary files a/kinit-api/static/system/2022-11-02/1667396953ebdb4f89.ico and /dev/null differ diff --git a/kinit-api/static/system/2022-11-02/16673970558d1f4057.ico b/kinit-api/static/system/2022-11-02/16673970558d1f4057.ico deleted file mode 100644 index 12409db..0000000 Binary files a/kinit-api/static/system/2022-11-02/16673970558d1f4057.ico and /dev/null differ diff --git a/kinit-api/static/system/2022-11-02/166739710569780c7e.ico b/kinit-api/static/system/2022-11-02/166739710569780c7e.ico deleted file mode 100644 index a143a16..0000000 Binary files a/kinit-api/static/system/2022-11-02/166739710569780c7e.ico and /dev/null differ diff --git a/kinit-api/static/system/2022-11-02/1667397114d2fbf188.ico b/kinit-api/static/system/2022-11-02/1667397114d2fbf188.ico deleted file mode 100644 index fc86652..0000000 Binary files a/kinit-api/static/system/2022-11-02/1667397114d2fbf188.ico and /dev/null differ diff --git a/kinit-api/static/system/2022-11-02/1667397122e3381ceb.ico b/kinit-api/static/system/2022-11-02/1667397122e3381ceb.ico deleted file mode 100644 index a143a16..0000000 Binary files a/kinit-api/static/system/2022-11-02/1667397122e3381ceb.ico and /dev/null differ diff --git a/kinit-api/static/system/2022-11-02/166739717200a51d29.ico b/kinit-api/static/system/2022-11-02/166739717200a51d29.ico deleted file mode 100644 index 12409db..0000000 Binary files a/kinit-api/static/system/2022-11-02/166739717200a51d29.ico and /dev/null differ diff --git a/kinit-api/static/system/2022-11-02/logo1.png b/kinit-api/static/system/2022-11-02/logo1.png deleted file mode 100644 index 046d976..0000000 Binary files a/kinit-api/static/system/2022-11-02/logo1.png and /dev/null differ diff --git a/kinit-api/static/system/2022-11-03/16674587911e7a18eb.png b/kinit-api/static/system/2022-11-03/16674587911e7a18eb.png deleted file mode 100644 index 046d976..0000000 Binary files a/kinit-api/static/system/2022-11-03/16674587911e7a18eb.png and /dev/null differ diff --git a/kinit-api/static/system/2022-11-03/166745879717640d3f.png b/kinit-api/static/system/2022-11-03/166745879717640d3f.png deleted file mode 100644 index 6016a4b..0000000 Binary files a/kinit-api/static/system/2022-11-03/166745879717640d3f.png and /dev/null differ diff --git a/kinit-api/static/system/logo.png b/kinit-api/static/system/logo.png index e69de29..6016a4b 100644 Binary files a/kinit-api/static/system/logo.png and b/kinit-api/static/system/logo.png differ diff --git a/kinit-api/utils/file_manage.py b/kinit-api/utils/file_manage.py index e61fa06..f0d99af 100644 --- a/kinit-api/utils/file_manage.py +++ b/kinit-api/utils/file_manage.py @@ -8,7 +8,7 @@ import datetime import os import shutil -from application.settings import TEMP_DIR, STATIC_ROOT, BASE_DIR +from application.settings import TEMP_DIR, STATIC_ROOT, BASE_DIR, STATIC_DIR, STATIC_URL from fastapi import UploadFile import sys from core.exception import CustomException @@ -33,7 +33,7 @@ class FileManage: self.path = f"{path}/{full_date}/{filename}{os.path.splitext(file.filename)[-1]}" self.file = file - async def save_image_local(self, accept: list = None): + async def save_image_local(self, accept: list = None) -> dict: """ 保存图片文件到本地 """ @@ -43,22 +43,25 @@ class FileManage: raise CustomException(f"上传图片必须是 {'/'.join(accept)} 格式!", status.HTTP_ERROR) return await self.save_local() - async def save_local(self): + async def save_local(self) -> dict: """ 保存文件到本地 """ path = self.path if sys.platform == "win32": path = self.path.replace("/", "\\") - filename = os.path.join(STATIC_ROOT, path) - if not os.path.exists(os.path.dirname(filename)): - os.mkdir(os.path.dirname(filename)) - with open(filename, "wb") as f: + save_path = os.path.join(STATIC_ROOT, path) + if not os.path.exists(os.path.dirname(save_path)): + os.mkdir(os.path.dirname(save_path)) + with open(save_path, "wb") as f: f.write(await self.file.read()) - return f"/static/{self.path}" + return { + "local_path": f"{STATIC_DIR}/{self.path}", + "remote_path": f"{STATIC_URL}/{self.path}" + } @staticmethod - async def save_tmp_file(file: UploadFile): + async def save_tmp_file(file: UploadFile) -> str: """ 保存临时文件 """ @@ -72,13 +75,13 @@ class FileManage: return filename @staticmethod - def copy(src: str, dst: str): + def copy(src: str, dst: str) -> None: """ 复制文件 根目录为项目根目录,传过来的文件路径均为相对路径 @param src: 原始文件 - @param dst: 目标路径 + @param dst: 目标路径。绝对路径 """ if src[0] == "/": src = src.lstrip("/") @@ -86,7 +89,6 @@ class FileManage: src = src.replace("/", "\\") dst = dst.replace("/", "\\") src = os.path.join(BASE_DIR, src) - dst = os.path.join(BASE_DIR, dst) if not os.path.exists(os.path.dirname(dst)): os.mkdir(os.path.dirname(dst)) shutil.copyfile(src, dst)