diff --git a/.github/workflows/custom_deploy.yml b/.github/workflows/custom_deploy.yml
index 6fed8c4..319113d 100644
--- a/.github/workflows/custom_deploy.yml
+++ b/.github/workflows/custom_deploy.yml
@@ -28,7 +28,7 @@ jobs:
working-directory: web/
- name: Run npm build
- run: export NODE_ENV=prod && npm run build
+ run: echo "BUILD_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")" >> $GITHUB_ENV && export NODE_ENV=prod && npm run build
working-directory: web/
- name: Check build static
diff --git a/.release_log b/.release_log
index 913a828..0e9d18e 100644
--- a/.release_log
+++ b/.release_log
@@ -21,3 +21,4 @@
21. 支持sqlite部署,支持不同版本mysql
22. [2025.01.01] 增加托管消息,现在可以将站点作为消息的接收,登录站点查看消息
23. [2025.04.28] 支持tidb数据库,支持数据库ssl连接
+23. [2025.08.10] UI组件使用shadcn-vue,基于tailwindcss
diff --git a/README.md b/README.md
index 1daac92..8a6b809 100644
--- a/README.md
+++ b/README.md
@@ -23,7 +23,9 @@ Message Nest 是一个灵活而强大的消息推送整合平台,旨在简化
关于日志,考虑到目前多数服务以收集控制台输出为主,暂时不支持写出日志文件。
## 功能更新日志
-
+- **2025.08.10**
+ - **重大升级,重构web页面,样式更加美观友好**
+ - UI组件使用shadcn-vue,基于tailwindcss,现在支持大中小屏自适应
- **2025.04.28**
- 支持tidb作为存储,支持数据库ssl配置
- docker运行指定环境变量SSL=true
@@ -66,7 +68,7 @@ Message Nest 是一个灵活而强大的消息推送整合平台,旨在简化
## 效果图 📺
-
+
## 使用方法 🚀
@@ -621,56 +623,6 @@ curl_close($ch);
-## 页面操作指引 🎞️
-
-关于消息的添加,发送的整个步骤,是以顶部菜单栏从右向左进行操作。
-
-
- 1. 新增发信渠道(添加消息的具体渠道)
-
-
-
-参考各个渠道tab的说明进行设置保存
-
-注意现在的自定义webhook形式,只支持`POST`请求,采用的是替换配置的消息体中的占位符`TEXT`,进行发送消息
-
-
-
-
- 2. 新增发信任务
-
-
-
-1. 点击渠道输入框会弹出所有渠道选项
-2. 选择一个渠道会出现渠道的明细信息,并选择一种消息类型,进行暂存成为实例,点击确定才会进行最终的保存
-3. 添加任务的页面实际上,会分别添加任务,以及任务关联的渠道实例
-4. 关于任务与实例的说明:
-
-> 一个任务可以关联创建多个实例
->
-> 选择不同的渠道,填写的实例信息也不一样
->
-> 一个任务可以绑定一个实例,也可以绑定多个实例,多个实例意味着一个消息可以推送给多个消息渠道
-
-5. 关于实例的消息类型说明:
-
-> 消息的类型大体上可以分为text、html、markdown三种类型。每种渠道消息现在支持的类型有不同的限制。
->
-> 在实际发送的时候,会优先选择发送api中传过来对应类型的消息,如果api中没有对应的类型,会直接取api中text消息。
->
-> api中text消息在发送的时候必须要传
-
-
-
-
- 3. 消息发送
-
-
-
-参考各种语言的接口进行调用
-
-
-
## 贡献 🤝
欢迎通过提交问题和提出改进建议。
diff --git a/models/auth.go b/models/auth.go
index d609366..5d83a71 100644
--- a/models/auth.go
+++ b/models/auth.go
@@ -27,7 +27,7 @@ func CheckAuth(username, password string) (bool, error) {
}
// EditUser 编辑用户信息
-func EditUser(username string, data interface{}) error {
+func EditUser(username string, data map[string]interface{}) error {
if err := db.Model(&Auth{}).Where("username = ? ", username).Updates(data).Error; err != nil {
return err
}
diff --git a/models/send_tasks.go b/models/send_tasks.go
index ea3f216..458eabd 100644
--- a/models/send_tasks.go
+++ b/models/send_tasks.go
@@ -169,7 +169,7 @@ func DeleteMsgTask(id string) error {
return nil
}
-func EditSendTask(id string, data interface{}) error {
+func EditSendTask(id string, data map[string]interface{}) error {
if err := db.Model(&SendTasks{}).Where("id = ? ", id).Updates(data).Error; err != nil {
return err
}
diff --git a/routers/api/v1/send_task.go b/routers/api/v1/send_task.go
index cbfedf8..b7aa8ec 100644
--- a/routers/api/v1/send_task.go
+++ b/routers/api/v1/send_task.go
@@ -1,6 +1,7 @@
package v1
import (
+ "fmt"
"message-nest/pkg/e"
"net/http"
@@ -124,11 +125,13 @@ func EditMsgSendTask(c *gin.Context) {
ID: req.ID,
}
- var data = map[string]string{}
- data["name"] = req.TaskName
+ var data = map[string]interface{}{
+ "name": req.TaskName,
+ }
+
err := MsgSendTaskService.Edit(data)
if err != nil {
- appG.CResponse(http.StatusBadRequest, "编辑发信任务失败!", nil)
+ appG.CResponse(http.StatusBadRequest, fmt.Sprintf("编辑发信任务失败!%s", err), nil)
return
}
diff --git a/screenshots/1-add-message-ways.png b/screenshots/1-add-message-ways.png
deleted file mode 100644
index 711d5e4..0000000
Binary files a/screenshots/1-add-message-ways.png and /dev/null differ
diff --git a/screenshots/2-add-message-task.png b/screenshots/2-add-message-task.png
deleted file mode 100644
index e088297..0000000
Binary files a/screenshots/2-add-message-task.png and /dev/null differ
diff --git a/screenshots/3-send-message.png b/screenshots/3-send-message.png
deleted file mode 100644
index 906dd33..0000000
Binary files a/screenshots/3-send-message.png and /dev/null differ
diff --git a/service/send_task_service/send_task.go b/service/send_task_service/send_task.go
index 702f9a6..3d5c89c 100644
--- a/service/send_task_service/send_task.go
+++ b/service/send_task_service/send_task.go
@@ -27,7 +27,7 @@ func (st *SendTaskService) Delete() error {
return models.DeleteMsgTask(st.ID)
}
-func (st *SendTaskService) Edit(data map[string]string) error {
+func (st *SendTaskService) Edit(data map[string]interface{}) error {
return models.EditSendTask(st.ID, data)
}
diff --git a/service/settings_service/settings.go b/service/settings_service/settings.go
index 984ab2c..c66071c 100644
--- a/service/settings_service/settings.go
+++ b/service/settings_service/settings.go
@@ -22,8 +22,9 @@ func (us *UserSettings) EditUserPasswd() error {
if !ok {
return errors.New("旧密码校验失败!")
}
- var user = make(map[string]string)
- user["password"] = us.NewPassword
+ var user = map[string]interface{}{
+ "password": us.NewPassword,
+ }
return models.EditUser(us.UserName, user)
}
diff --git a/web/.eslintrc.cjs b/web/.eslintrc.cjs
deleted file mode 100644
index b64731a..0000000
--- a/web/.eslintrc.cjs
+++ /dev/null
@@ -1,14 +0,0 @@
-/* eslint-env node */
-require('@rushstack/eslint-patch/modern-module-resolution')
-
-module.exports = {
- root: true,
- 'extends': [
- 'plugin:vue/vue3-essential',
- 'eslint:recommended',
- '@vue/eslint-config-prettier/skip-formatting'
- ],
- parserOptions: {
- ecmaVersion: 'latest'
- }
-}
diff --git a/web/.prettierrc.json b/web/.prettierrc.json
deleted file mode 100644
index 66e2335..0000000
--- a/web/.prettierrc.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "$schema": "https://json.schemastore.org/prettierrc",
- "semi": false,
- "tabWidth": 2,
- "singleQuote": true,
- "printWidth": 100,
- "trailingComma": "none"
-}
\ No newline at end of file
diff --git a/web/components.json b/web/components.json
new file mode 100644
index 0000000..c724b97
--- /dev/null
+++ b/web/components.json
@@ -0,0 +1,20 @@
+{
+ "$schema": "https://shadcn-vue.com/schema.json",
+ "style": "new-york",
+ "typescript": true,
+ "tailwind": {
+ "config": "",
+ "css": "src/index.css",
+ "baseColor": "neutral",
+ "cssVariables": true,
+ "prefix": ""
+ },
+ "aliases": {
+ "components": "@/components",
+ "composables": "@/composables",
+ "utils": "@/lib/utils",
+ "ui": "@/components/ui",
+ "lib": "@/lib"
+ },
+ "iconLibrary": "lucide"
+}
\ No newline at end of file
diff --git a/web/dist/.gitkeep b/web/dist/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/web/index.html b/web/index.html
index 63450d3..5c45a41 100644
--- a/web/index.html
+++ b/web/index.html
@@ -1,29 +1,13 @@
-
+
-
-
-
-
-
- Message Nest
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+