From 5aeff8f6ba54fb07ca127505d1314fe57b32853a Mon Sep 17 00:00:00 2001
From: admin <344137771@qq.com>
Date: Mon, 05 Jan 2026 10:44:48 +0800
Subject: [PATCH] 1

---
 src/assets/logo.png                       |    0 
 .husky/.gitignore                         |    1 
 src/locales/lang/en-US.js                 |    2 
 public/index.html                         |    4 
 src/views/list/BasicList.vue              |    4 
 src/mock/services/article.js              |    4 
 .env.preview                              |    2 
 src/locales/lang/zh-CN.js                 |    2 
 src/views/logmanage/stationmessage.vue    |   91 ++++++++++++++++++++++++++++++
 src/layouts/UserLayout.vue                |    2 
 .env                                      |    2 
 src/views/list/search/Article.vue         |    2 
 public/logo.png                           |    0 
 src/api/logmanage.js                      |    9 +++
 .env.development                          |    2 
 src/mock/services/manage.js               |    4 
 src/config/defaultSettings.js             |    2 
 src/views/dashboard/Workplace.vue         |    2 
 src/views/account/center/page/Article.vue |    2 
 19 files changed, 118 insertions(+), 19 deletions(-)

diff --git a/.env b/.env
index c6317f6..9d885fc 100644
--- a/.env
+++ b/.env
@@ -3,4 +3,4 @@
 #VUE_APP_API_BASE_URL=https://api.zcpzi.com/
 #VUE_APP_API_BASE_URL=https://api.stockcardsnow.com/
 
-VUE_APP_API_BASE_URL=http://localhost:8091/
\ No newline at end of file
+VUE_APP_API_BASE_URL=https://api.qitiana.cfd/
\ No newline at end of file
diff --git a/.env.development b/.env.development
index 2b9c4f2..9b405c5 100644
--- a/.env.development
+++ b/.env.development
@@ -2,4 +2,4 @@
 VUE_APP_PREVIEW=true
 #VUE_APP_API_BASE_URL=https://api.stockcardsnow.com/
 
-VUE_APP_API_BASE_URL=http://localhost:8091/
\ No newline at end of file
+VUE_APP_API_BASE_URL=https://api.qitiana.cfd/
\ No newline at end of file
diff --git a/.env.preview b/.env.preview
index b6534df..7f5a0c2 100644
--- a/.env.preview
+++ b/.env.preview
@@ -1,3 +1,3 @@
 NODE_ENV=production
 VUE_APP_PREVIEW=true
-VUE_APP_API_BASE_URL=http:localhost:8091
\ No newline at end of file
+VUE_APP_API_BASE_URL=https://api.qitiana.cfd/
\ No newline at end of file
diff --git a/.husky/.gitignore b/.husky/.gitignore
new file mode 100644
index 0000000..31354ec
--- /dev/null
+++ b/.husky/.gitignore
@@ -0,0 +1 @@
+_
diff --git a/public/index.html b/public/index.html
index 4dd7701..0ddb057 100644
--- a/public/index.html
+++ b/public/index.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <link rel="icon" href="<%= BASE_URL %>logo.png">
-    <title>Stock Admin</title>
+    <title>东吴证卷-Admin</title>
     <style>.first-loading-wrp{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:420px;height:100%}.first-loading-wrp>h1{font-size:128px}.first-loading-wrp .loading-wrp{padding:98px;display:flex;justify-content:center;align-items:center}.dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:32px;width:32px;height:32px;box-sizing:border-box}.dot i{width:14px;height:14px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.dot i:nth-child(1){top:0;left:0}.dot i:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.dot i:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.dot i:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antSpinMove{to{opacity:1}}</style>
     <!-- require cdn assets css -->
     <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
@@ -22,7 +22,7 @@
         <div class="loading-wrp">
           <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
         </div>
-        <div style="display: flex; justify-content: center; align-items: center;">Stock Admin</div>
+        <div style="display: flex; justify-content: center; align-items: center;">东吴证卷-Admin</div>
       </div>
     </div>
     <!-- require cdn assets js -->
diff --git a/public/logo.png b/public/logo.png
index 97df4a8..aa0b1d0 100644
--- a/public/logo.png
+++ b/public/logo.png
Binary files differ
diff --git a/src/api/logmanage.js b/src/api/logmanage.js
index 999565c..2ddce55 100644
--- a/src/api/logmanage.js
+++ b/src/api/logmanage.js
@@ -5,6 +5,7 @@
     logtaskList: '/admin/log/taskList.do',  // 定时任务列表
     logsmsList: '/admin/log/smsList.do', // 短信日志列表
     logmessageList: '/admin/log/messageList.do',
+    logsendMessage: '/admin/log/sendMessage.do', // 发送站内消息
 }
 
 /**
@@ -51,3 +52,11 @@
         data: qs.stringify(parameter),
     })
 }
+
+export function logsendMessage(parameter) {
+    return request({
+        url: userApi.logsendMessage,
+        method: 'post',
+        data: qs.stringify(parameter),
+    })
+}
diff --git a/src/assets/logo.png b/src/assets/logo.png
index 97df4a8..aa0b1d0 100644
--- a/src/assets/logo.png
+++ b/src/assets/logo.png
Binary files differ
diff --git a/src/config/defaultSettings.js b/src/config/defaultSettings.js
index a992e02..e408050 100644
--- a/src/config/defaultSettings.js
+++ b/src/config/defaultSettings.js
@@ -23,7 +23,7 @@
   menu: {
     locale: true
   },
-  title: 'Stock-Admin',
+  title: '东吴证卷-Admin',
   pwa: false,
   iconfontUrl: '',
   production: process.env.NODE_ENV === 'production' && process.env.VUE_APP_PREVIEW !== 'true'
diff --git a/src/layouts/UserLayout.vue b/src/layouts/UserLayout.vue
index 26b95d2..994129b 100644
--- a/src/layouts/UserLayout.vue
+++ b/src/layouts/UserLayout.vue
@@ -8,7 +8,7 @@
           <div class="header">
             <a href="/">
               <img src="~@/assets/logo.png" class="logo" alt="logo">
-              <span class="title">Stock-Admin</span>
+              <span class="title">东吴证卷-Admin</span>
             </a>
           </div>
            
diff --git a/src/locales/lang/en-US.js b/src/locales/lang/en-US.js
index c2ee4c1..4cb8b11 100644
--- a/src/locales/lang/en-US.js
+++ b/src/locales/lang/en-US.js
@@ -21,7 +21,7 @@
 
   'layouts.usermenu.dialog.title': '信息',
   'layouts.usermenu.dialog.content': '您确定要注销吗?',
-  'layouts.userLayout.title': 'Stock Admin 是西湖区最具影响力的 Web 设计规范',
+  'layouts.userLayout.title': '东吴证卷-Admin 是西湖区最具影响力的 Web 设计规范',
   ...components,
   ...global,
   ...menu,
diff --git a/src/locales/lang/zh-CN.js b/src/locales/lang/zh-CN.js
index c2ee4c1..4cb8b11 100644
--- a/src/locales/lang/zh-CN.js
+++ b/src/locales/lang/zh-CN.js
@@ -21,7 +21,7 @@
 
   'layouts.usermenu.dialog.title': '信息',
   'layouts.usermenu.dialog.content': '您确定要注销吗?',
-  'layouts.userLayout.title': 'Stock Admin 是西湖区最具影响力的 Web 设计规范',
+  'layouts.userLayout.title': '东吴证卷-Admin 是西湖区最具影响力的 Web 设计规范',
   ...components,
   ...global,
   ...menu,
diff --git a/src/mock/services/article.js b/src/mock/services/article.js
index ddf9925..e35f6ff 100644
--- a/src/mock/services/article.js
+++ b/src/mock/services/article.js
@@ -4,8 +4,8 @@
 const titles = [
   'Alipay',
   'Angular',
-  'Stock Admin',
-  'Stock Admin',
+  '东吴证卷-Admin',
+  '东吴证卷-Admin',
   'Bootstrap',
   'React',
   'Vue',
diff --git a/src/mock/services/manage.js b/src/mock/services/manage.js
index 733527c..1ea6f47 100644
--- a/src/mock/services/manage.js
+++ b/src/mock/services/manage.js
@@ -57,7 +57,7 @@
     {
       id: 3,
       cover: 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
-      title: 'Stock Admin',
+      title: '东吴证卷-Admin',
       description: '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆',
       status: 1,
       updatedAt: '2018-07-26 00:00:00'
@@ -65,7 +65,7 @@
     {
       id: 4,
       cover: 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
-      title: 'Stock Admin',
+      title: '东吴证卷-Admin',
       description: '那时候我只会想自己想要什么,从不想自己拥有什么',
       status: 1,
       updatedAt: '2018-07-26 00:00:00'
diff --git a/src/views/account/center/page/Article.vue b/src/views/account/center/page/Article.vue
index 5849943..4410ebf 100644
--- a/src/views/account/center/page/Article.vue
+++ b/src/views/account/center/page/Article.vue
@@ -16,7 +16,7 @@
         <a slot="title" href="https://vue.ant.design/">{{ item.title }}</a>
         <template slot="description">
           <span>
-            <a-tag>Stock Admin</a-tag>
+            <a-tag>东吴证卷-Admin</a-tag>
             <a-tag>设计语言</a-tag>
             <a-tag>蚂蚁金服</a-tag>
           </span>
diff --git a/src/views/dashboard/Workplace.vue b/src/views/dashboard/Workplace.vue
index dfc43a3..8c8b4ef 100644
--- a/src/views/dashboard/Workplace.vue
+++ b/src/views/dashboard/Workplace.vue
@@ -288,7 +288,7 @@
   },
   methods: {
     getlizhi() {
-      axios.get('https://saying.api.azwcl.com/saying/get').then(res => {
+      axios.get('https://api.qitiana.cfd/saying/get').then(res => {
         this.lizhidetail = res.data.data
       })
     },
diff --git a/src/views/list/BasicList.vue b/src/views/list/BasicList.vue
index 391650f..f27fea9 100644
--- a/src/views/list/BasicList.vue
+++ b/src/views/list/BasicList.vue
@@ -96,7 +96,7 @@
   }
 })
 data.push({
-  title: 'Stock Admin',
+  title: '东吴证卷-Admin',
   avatar: 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
   description: '生命就像一盒巧克力,结果往往出人意料',
   owner: '林东东',
@@ -106,7 +106,7 @@
   }
 })
 data.push({
-  title: 'Stock Admin',
+  title: '东吴证卷-Admin',
   avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
   description: '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆',
   owner: '周星星',
diff --git a/src/views/list/search/Article.vue b/src/views/list/search/Article.vue
index 1a3171b..65dd65a 100644
--- a/src/views/list/search/Article.vue
+++ b/src/views/list/search/Article.vue
@@ -77,7 +77,7 @@
             <a slot="title" href="https://vue.ant.design/">{{ item.title }}</a>
             <template slot="description">
               <span>
-                <a-tag>Stock Admin</a-tag>
+                <a-tag>东吴证卷-Admin</a-tag>
                 <a-tag>设计语言</a-tag>
                 <a-tag>蚂蚁金服</a-tag>
               </span>
diff --git a/src/views/logmanage/stationmessage.vue b/src/views/logmanage/stationmessage.vue
index ac549f6..c4c96f2 100644
--- a/src/views/logmanage/stationmessage.vue
+++ b/src/views/logmanage/stationmessage.vue
@@ -1,6 +1,9 @@
 <template>
     <page-header-wrapper>
         <a-card :bordered="false">
+            <div style="margin-bottom: 16px;">
+                <a-button type="primary" @click="showSendDialog">发送站内消息</a-button>
+            </div>
             <a-table bordered :loading="loading" :pagination="pagination" :columns="columns" :data-source="datalist"
                 rowKey="id">
                 <span slot="status" slot-scope="text,record">
@@ -11,15 +14,63 @@
                 </span>
             </a-table>
         </a-card>
+        
+        <!-- 发送消息对话框 -->
+        <a-modal
+            title="发送站内消息"
+            :visible="sendDialogVisible"
+            @ok="handleSendMessage"
+            @cancel="handleCancelSend"
+            :confirmLoading="sending"
+        >
+            <a-form :form="sendForm">
+                <a-form-item label="接收用户" :label-col="{ span: 6 }" :wrapper-col="{ span: 16 }">
+                    <a-radio-group v-decorator="['sendType', { initialValue: 'all' }]" @change="handleSendTypeChange">
+                        <a-radio value="all">所有用户</a-radio>
+                        <a-radio value="single">指定用户</a-radio>
+                    </a-radio-group>
+                </a-form-item>
+                <a-form-item 
+                    v-if="sendType === 'single'"
+                    label="用户ID" 
+                    :label-col="{ span: 6 }" 
+                    :wrapper-col="{ span: 16 }"
+                >
+                    <a-input-number 
+                        v-decorator="['userId', { rules: [{ required: sendType === 'single', message: '请输入用户ID' }] }]"
+                        :min="1"
+                        placeholder="请输入用户ID"
+                        style="width: 100%"
+                    />
+                </a-form-item>
+                <a-form-item label="消息类型" :label-col="{ span: 6 }" :wrapper-col="{ span: 16 }">
+                    <a-input 
+                        v-decorator="['typeName', { initialValue: '站内消息' }]"
+                        placeholder="消息类型,如:站内消息、系统通知等"
+                    />
+                </a-form-item>
+                <a-form-item label="消息内容" :label-col="{ span: 6 }" :wrapper-col="{ span: 16 }">
+                    <a-textarea 
+                        v-decorator="['content', { rules: [{ required: true, message: '请输入消息内容' }] }]"
+                        :rows="4"
+                        placeholder="请输入消息内容"
+                    />
+                </a-form-item>
+            </a-form>
+        </a-modal>
     </page-header-wrapper>
 </template>
 <script>
-import { logmessageList } from '@/api/logmanage'
+import { logmessageList, logsendMessage } from '@/api/logmanage'
 import moment from 'moment'
 export default {
     name: 'smslog',
     data() {
         return {
+            sendDialogVisible: false,
+            sending: false,
+            sendType: 'all',
+            sendForm: this.$form.createForm(this),
             columns: [
                 {
                     title: '用户名称',
@@ -95,6 +146,44 @@
             this.queryParam.pageSize = pageSize
             this.getlist()
         },
+        showSendDialog() {
+            this.sendDialogVisible = true
+            this.sendForm.resetFields()
+            this.sendType = 'all'
+        },
+        handleSendTypeChange(e) {
+            this.sendType = e.target.value
+        },
+        handleCancelSend() {
+            this.sendDialogVisible = false
+            this.sendForm.resetFields()
+        },
+        handleSendMessage() {
+            this.sendForm.validateFields((err, values) => {
+                if (!err) {
+                    this.sending = true
+                    const params = {
+                        userId: this.sendType === 'all' ? 0 : values.userId,
+                        content: values.content,
+                        typeName: values.typeName || '站内消息'
+                    }
+                    logsendMessage(params).then(res => {
+                        this.sending = false
+                        if (res.status === 0) {
+                            this.$message.success('发送成功')
+                            this.sendDialogVisible = false
+                            this.sendForm.resetFields()
+                            this.getlist()
+                        } else {
+                            this.$message.error(res.msg || '发送失败')
+                        }
+                    }).catch(err => {
+                        this.sending = false
+                        this.$message.error('发送失败:' + (err.message || '未知错误'))
+                    })
+                }
+            })
+        },
     }
 }
 </script>

--
Gitblit v1.9.3