Forráskód Böngészése

Signed-off-by: a123456 <1209165801@qq.com>

a123456 6 éve
szülő
commit
352235a1cf
35 módosított fájl, 1242 hozzáadás és 608 törlés
  1. 107 103
      src/main/webapp/WEB-INF/manager/login.ftl
  2. 0 143
      src/main/webapp/WEB-INF/manager/mweixin/article/index.ftl
  3. 46 35
      src/main/webapp/WEB-INF/manager/mweixin/keyword/form.ftl
  4. 32 13
      src/main/webapp/WEB-INF/manager/mweixin/keyword/index.ftl
  5. 1 4
      src/main/webapp/WEB-INF/manager/mweixin/menu.ftl
  6. 57 48
      src/main/webapp/WEB-INF/manager/mweixin/menu/index.ftl
  7. 38 22
      src/main/webapp/WEB-INF/manager/mweixin/message/index.ftl
  8. 155 0
      src/main/webapp/WEB-INF/manager/mweixin/metarial/form.ftl
  9. 3 3
      src/main/webapp/WEB-INF/manager/mweixin/metarial/index.ftl
  10. 36 16
      src/main/webapp/WEB-INF/manager/mweixin/picture/index.ftl
  11. 1 1
      src/main/webapp/WEB-INF/manager/mweixin/weixin.ftl
  12. 0 3
      src/main/webapp/static/ms-admin/4.7.0/css/login.css
  13. 17 4
      src/main/webapp/static/ms-admin/4.7.0/less/app.less
  14. 221 0
      src/main/webapp/static/ms-admin/4.7.0/less/css/login.css
  15. 2 2
      src/main/webapp/static/ms-admin/4.7.0/less/login.less
  16. 9 4
      src/main/webapp/static/mweixin/article.less
  17. 22 7
      src/main/webapp/static/mweixin/css/article.css
  18. 32 6
      src/main/webapp/static/mweixin/css/custom-menu.css
  19. 27 7
      src/main/webapp/static/mweixin/css/keyword-list.css
  20. 29 6
      src/main/webapp/static/mweixin/css/keyword-reply.css
  21. 13 5
      src/main/webapp/static/mweixin/css/material-bank-form.css
  22. 38 4
      src/main/webapp/static/mweixin/css/material-list.css
  23. 32 5
      src/main/webapp/static/mweixin/css/menu.css
  24. 30 8
      src/main/webapp/static/mweixin/css/message-reply.css
  25. 14 6
      src/main/webapp/static/mweixin/css/new-pic-form.css
  26. 84 12
      src/main/webapp/static/mweixin/css/picture-list.css
  27. 71 68
      src/main/webapp/static/mweixin/custom-menu.less
  28. 1 5
      src/main/webapp/static/mweixin/keyword-list.less
  29. 9 9
      src/main/webapp/static/mweixin/keyword-reply.less
  30. 1 1
      src/main/webapp/static/mweixin/material-bank-form.less
  31. 3 2
      src/main/webapp/static/mweixin/material-list.less
  32. 4 0
      src/main/webapp/static/mweixin/menu.less
  33. 38 31
      src/main/webapp/static/mweixin/message-reply.less
  34. 1 1
      src/main/webapp/static/mweixin/new-pic-form.less
  35. 68 24
      src/main/webapp/static/mweixin/picture-list.less

+ 107 - 103
src/main/webapp/WEB-INF/manager/login.ftl

@@ -1,128 +1,132 @@
 <!DOCTYPE html>
 <html lang="">
 
-<head>
-    <title></title>
-    <!-- <#include "/include/head-file.ftl"/> -->
-    <!-- <link rel="stylesheet" href="${base}/static/ms-admin/4.7.0/css/login.css"> -->
-    
-    <!--#include virtual="include/head-file.ftl" --> 
-    <link rel="stylesheet" href="../../../static/ms-admin/4.7.0/css/login.css">
-</head>
+   <head>
+      <title></title>
+      <!-- <#include "/include/head-file.ftl"/> -->
+      <!-- <link rel="stylesheet" href="${base}/static/ms-admin/4.7.0/css/login.css"> -->
 
-<body>
-    <div id="login" class="login">
-        <el-container class="ms-admin-login-container">
+      <!--#include virtual="include/head-file.ftl" -->
+      <link rel="stylesheet" href="../../../static/ms-admin/4.7.0/css/login.css">
+   </head>
+
+   <body>
+      <div id="login" class="login">
+         <el-container class="ms-admin-login-container">
             <el-main class="ms-admin-login-main">
-                <div class="ms-admin-login-warp">
-                    <img :src="ms.base+'/static/ms-admin/4.7.0/images/login-slogn.png'">
-                    <el-form :model="loginForm" status-icon :rules="loginFormRule" ref="loginForm" label-width="100px" class="ms-admin-login-form">
-                        <h1><span>账户登录 / </span>User login</h1>
-                        <el-form-item prop="name" class="ms-admin-form-item">
-                            <el-input type="text" placeholder='用户名' v-model="loginForm.managerName" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item prop="pass" class="ms-admin-form-item">
-                            <el-input type="password" placeholder='密码' v-model="loginForm.managerPassword" autocomplete="off"></el-input>
-                        </el-form-item>
-                        <el-form-item prop="code" class="ms-admin-form-item ms-admin-form-item-code">
-                            <el-input type="text" placeholder='验证码' v-model="loginForm.rand_code" autocomplete="off"></el-input>
-                            <img :src="verifCode" class="code-img" @click="code" />
-                            <p><span>看不清?</span><span @click="code">换一张</span></p>
-                        </el-form-item>
-                        <el-form-item class="ms-admin-form-item ms-admin-form-item-checkout">
-                            <el-checkbox v-model="rememberPass">记住密码</el-checkbox>
-                        </el-form-item>
-                        <el-form-item class="ms-admin-form-item">
-                            <el-button type="primary" @click="checkLogin" class="ms-admin-login-btn">登录</el-button>
-                        </el-form-item>
-                    </el-form>
-                </div>
+               <div class="ms-admin-login-warp">
+                  <img :src="ms.base+'/static/ms-admin/4.7.0/images/login-slogn.png'">
+                  <el-form :model="loginForm" status-icon :rules="loginFormRule" ref="loginForm" label-width="100px" class="ms-admin-login-form">
+                     <h1>
+                        <span>账户登录 / </span>User login</h1>
+                     <el-form-item prop="name" class="ms-admin-form-item">
+                        <el-input type="text" placeholder='用户名' v-model="loginForm.managerName" autocomplete="off"></el-input>
+                     </el-form-item>
+                     <el-form-item prop="pass" class="ms-admin-form-item">
+                        <el-input type="password" placeholder='密码' v-model="loginForm.managerPassword" autocomplete="off"></el-input>
+                     </el-form-item>
+                     <el-form-item prop="code" class="ms-admin-form-item ms-admin-form-item-code">
+                        <el-input type="text" placeholder='验证码' v-model="loginForm.rand_code" autocomplete="off"></el-input>
+                        <img :src="verifCode" class="code-img" @click="code" />
+                        <p>
+                           <span>看不清?</span>
+                           <span @click="code">换一张</span>
+                        </p>
+                     </el-form-item>
+                     <el-form-item class="ms-admin-form-item ms-admin-form-item-checkout">
+                        <el-checkbox v-model="rememberPass">记住密码</el-checkbox>
+                     </el-form-item>
+                     <el-form-item class="ms-admin-form-item">
+                        <el-button type="primary" @click="checkLogin" class="ms-admin-login-btn">登录</el-button>
+                     </el-form-item>
+                  </el-form>
+               </div>
             </el-main>
-        </el-container>
-    </div>
-</body>
+         </el-container>
+      </div>
+   </body>
 
 </html>
 <script>
-var loginVue = new Vue({
-    el: '#login',
-    data: {
-        loginForm: {
+   var loginVue = new Vue({
+      el: '#login',
+      data: {
+         loginForm: {
             managerName: '',
             managerPassword: "",
             rand_code: '',
-        },
-        verifCode: ms.manager + "/code?t=" + new Date().getTime(),
-        rememberPass: '',
-        loginFormRule: {
+         },
+         verifCode: ms.manager + "/code?t=" + new Date().getTime(),
+         rememberPass: '',
+         loginFormRule: {
             managerName: [{
-                    required: true,
-                    message: '请输入用户名',
-                    trigger: 'blur'
-                },
-                {
-                    min: 3,
-                    max: 6,
-                    message: '长度在 3 到 5 个字符',
-                    trigger: 'blur'
-                }
+                  required: true,
+                  message: '请输入用户名',
+                  trigger: 'blur'
+               },
+               {
+                  min: 3,
+                  max: 6,
+                  message: '长度在 3 到 5 个字符',
+                  trigger: 'blur'
+               }
             ],
             managerPassword: [{
-                    required: true,
-                    message: '请输入密码',
-                    trigger: 'blur'
-                },
-                {
-                    min: 6,
-                    max: 20,
-                    message: '长度在 6 到 20 个字符',
-                    trigger: 'blur'
-                }
+                  required: true,
+                  message: '请输入密码',
+                  trigger: 'blur'
+               },
+               {
+                  min: 6,
+                  max: 20,
+                  message: '长度在 6 到 20 个字符',
+                  trigger: 'blur'
+               }
             ],
             rand_code: [{
-                    required: true,
-                    message: '请填写验证码',
-                    trigger: 'blur'
-                },
-                {
-                    min: 1,
-                    max: 4,
-                    message: '长度在1 到 4 个字符',
-                    trigger: 'blur'
-                }
+                  required: true,
+                  message: '请填写验证码',
+                  trigger: 'blur'
+               },
+               {
+                  min: 1,
+                  max: 4,
+                  message: '长度在1 到 4 个字符',
+                  trigger: 'blur'
+               }
             ],
-        }
-    },
-    methods: {
-        // 登录
-        checkLogin: function() {
+         }
+      },
+      methods: {
+         // 登录
+         checkLogin: function() {
             var that = this;
             ms.http.post(ms.manager + "/checkLogin.do", that.loginForm).then(function(data) {
-                if (data.result) {
-                    that.$notify({
-                        title: '成功',
-                        message: '登录成功',
-                        type: 'success'
-                    });
-                    location.href = ms.manager+"/index.do";
-                } else {
-                    that.$notify({
-                        title: '失败',
-                        message: data.resultMsg,
-                        type: 'warning'
-                    });
-                }
+               if(data.result) {
+                  that.$notify({
+                     title: '成功',
+                     message: '登录成功',
+                     type: 'success'
+                  });
+                  location.href = ms.manager + "/index.do";
+               } else {
+                  that.$notify({
+                     title: '失败',
+                     message: data.resultMsg,
+                     type: 'warning'
+                  });
+               }
             }, (err) => {
-                that.$message.error(data.resultMsg);
+               that.$message.error(data.resultMsg);
             })
-        },
-        code: function() {
+         },
+         code: function() {
             this.verifCode = ms.manager + "/code?t=" + new Date().getTime();
-        },
+         },
 
-    },
-    mounted:function(){
-        this.verifCode = ms.manager + "/code?t=" + new Date().getTime()
-    }
-})
+      },
+      mounted: function() {
+         this.verifCode = ms.manager + "/code?t=" + new Date().getTime()
+      }
+   })
 </script>

+ 0 - 143
src/main/webapp/WEB-INF/manager/mweixin/article/index.ftl

@@ -1,143 +0,0 @@
-<!-- 新建图文 -->
-<link rel="stylesheet" href="../../../../static/mweixin/css/article.css">
-<div id='article' class="ms-article ms-container" v-show="menuVue.menuActive == '新建图文'">
-    <el-container>
-        <el-aside width="280px">
-            <div class="ms-main-article">
-                <img :src='mainArticle.basicPic'>
-                <div class="ms-main-article-mask"></div>
-                <span v-text='mainArticle.basicTitle'></span>
-            </div>
-            <draggable v-model="subArticleList" :options="{draggable:'.ms-article-item'}">
-                <div v-for="(element,index) in subArticleList" :key="index" class="ms-article-item">
-                    <p><span v-text='element.basicTitle'></span></p>
-                    <img :src='element.basicThumbnailsl'>
-                </div>
-            </draggable>
-            <div class="ms-article-footer">
-                <el-button size='medium' icon='el-icon-plus' @click='addArticle'>添加图文</el-button>
-            </div>
-        </el-aside>
-        <el-main>
-            <div class="ms-main-header">
-                <el-upload class="ms-pic-upload" :show-file-list="false">
-                    <img v-if="false" :src="false" class="avatar">
-                    <i v-else class="el-icon-picture"></i>
-                    <span>添加封面</span>
-                </el-upload>
-                <el-form label-width='40px'>
-                    <el-form-item label="标题" prop="">
-                        <el-input size='small' placeholder="请输入图文标题" v-model='articleForm.basicTitle' @input="resetWordNum('title')">
-                            <span slot='suffix' v-text="titleWordNumber+'/64'"></span>
-                        </el-input>
-                    </el-form-item>
-                    <el-form-item label="作者" prop="">
-                        <el-input size='small' placeholder="请输入图文作者" v-model='articleForm.articleAuthor' @input="resetWordNum('author')">
-                            <span slot='suffix' v-text="authorWordNumber+'/8'"></span>
-                        </el-input>
-                    </el-form-item>
-                    <el-form-item label="摘要" prop="">
-                        <el-input 
-                            size='small'
-                            type='textarea' 
-                            placeholder="选填,如果不写会默认抓取正文前54个字"
-                            :autosize="{ minRows: 2, maxRows: 2}"
-                            resize='none'
-                            v-model='articleForm.basicDescription'
-                            @input="resetWordNum('desc')"
-                        >
-                        <span slot='suffix' v-text="descWordNumber+'/54'"></span>
-                        </el-input>
-                    </el-form-item>
-                </el-form>
-            </div>
-            <div class="ms-main-body">
-                <!-- 百度编辑器 -->
-                <script id="ueditorArticle" type="text/plain" name="articleContent"></script>
-            </div>
-        </el-main>
-    </el-container>
-</div>
-<script>
-    var articleVue = new Vue({
-        el: '#article',
-        data: {
-            mainArticle: {
-                basicPic: 'https://img03.sogoucdn.com/app/a/100520091/20190125112329', //主图
-                basicTitle: '国足0-3不敌伊朗被淘汰,赛后还有一个消息', //标题
-            },
-            // 文章列表
-            subArticleList: [{
-                basicTitle: '硬核!年会当着老板面唱,“干活的干不过写PPT的……',
-                basicThumbnailsl: 'https://img01.sogoucdn.com/app/a/100520091/20190125112509'
-            }, {
-                basicTitle: '知否知否,党组织犯错,处理有多严?',
-                basicThumbnailsl: 'https://img01.sogoucdn.com/app/a/100520091/20190125112509'
-            }, {
-                basicTitle: '没有奇迹,国足0-3不敌伊朗止步八强!',
-                basicThumbnailsl: 'https://img03.sogoucdn.com/app/a/100520091/20190125113148'
-            }],
-            titleWordNumber: 64, //图文标题剩余字数
-            authorWordNumber: 8, //图文作者剩余字数
-            descWordNumber:54,//摘要
-            editor: null, //富文本实例
-            articleForm:{
-                basicTitle:'',//标题
-                articleAuthor:'',//作者
-                basicDescription:'', //摘要
-                articleContent:'', //正文
-            }
-        },
-        methods: {
-            // 添加文章
-            addArticle: function () {
-                this.subArticleList.push({
-                    basicTitle: '新增文章标题',
-                    basicThumbnailsl: 'https://img03.sogoucdn.com/app/a/100520091/20190125113148'
-                })
-            },
-            // 计算剩余字数
-            resetWordNum:function(type){
-               
-            }
-        },
-        mounted: function () {
-            let that = this;
-            //富文本加载
-            var URL = window.UEDITOR_HOME_URL || "http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/";
-            if (this.editor == null) {
-                this.editor = UE.getEditor('ueditorArticle', {
-                    toolbars: [
-                        ['fullscreen', 'undo', 'redo', '|', 'bold', 'italic', 'underline',
-                            'strikethrough',
-                            'removeformat', 'blockquote',
-                            '|', 'forecolor', 'backcolor', 'insertorderedlist',
-                            'insertunorderedlist', '|', 'attachment', 'simpleupload', 'link'
-                        ]
-                    ],
-                    imageScaleEnabled: true,
-                    // 服务器统一请求接口路径
-                    serverUrl: URL +
-                        "jsp/msController.jsp?jsonConfig=%7BvideoUrlPrefix:'http://mpm.mingsoft.net/',fileUrlPrefix:'http://mpm.mingsoft.net/',imageUrlPrefix:'http://mpm.mingsoft.net/',imagePathFormat:'/upload/pm/editor/%7Btime%7D',filePathFormat:'/upload/pm/editor/%7Btime%7D',videoPathFormat:'/upload/pm/editor/%7Btime%7D'%7D",
-                    autoHeightEnabled: true,
-                    autoFloatEnabled: true,
-                    scaleEnabled: false,
-                    compressSide: 0,
-                    maxImageSideLength: 2000,
-                    maximumWords: 80000,
-                    zIndex: 10000,
-                    elementPathEnabled: false,
-                    wordCount: false,
-                    initialFrameWidth: '100%',
-                    initialFrameHeight: 500,
-                });
-                this.editor.ready(function () {
-                    var a = $("#ueditor_0").contents()[0].activeElement;
-                    $(a).addClass("ms-webkit-scrollbar").before(
-                        "<style>.ms-webkit-scrollbar::-webkit-scrollbar,::-webkit-scrollbar{width:10px;/*滚动条宽度*/height:1.5%;/*滚动条高度*/}/*定义滚动条轨道内阴影+圆角*/.ms-webkit-scrollbar::-webkit-scrollbar-track,::-webkit-scrollbar-track{border-radius:10px;/*滚动条的背景区域的圆角*/background-color:#eeeeee;/*滚动条的背景颜色*/}.ms-task-content::-webkit-scrollbar-track{border-radius:10px;background-color:#FFFFFF;}/*定义滑块内阴影+圆角*/.ms-webkit-scrollbar::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb{border-radius:10px;/*滚动条的圆角*/background-color:#dddddd;/*滚动条的背景颜色*/}</style>"
-                    );
-                });
-            }
-        }
-    })
-</script>

+ 46 - 35
src/main/webapp/WEB-INF/manager/mweixin/keyword/form.ftl

@@ -1,42 +1,53 @@
 <!-- 关键词回复 -->
 <link rel="stylesheet" href="../../../../static/mweixin/css/keyword-reply.css">
 
-<div id="keyword-reply" class="keyword-reply ms-container ms-weixin-content" v-if="menuVue.menuActive == '关键词表单'">
-   <el-form :model="keywordReplyForm" status-icon :rules="keywordReplyFormRules" ref="keywordReplyForm" label-width="100px">
-      <el-form-item label="关键词" prop="keyword" class="ms-keyword-input">
-         <el-row type='flex' justify='space-between' align='center'>
-            <el-col :span='12'>
-               <el-input placeholder="请输入内容" v-model="keywordReplyForm.keyword" class="input-with-select" size='mini' maxlength='30' @input='resetWord'>
-                  <el-select v-model="keywordReplyForm.select" slot="prepend" placeholder="请选择">
-                     <el-option label="模糊匹配" value="1"></el-option>
-                     <el-option label="全匹配" value="2"></el-option>
-                  </el-select>
-                  <span slot='suffix' v-text="wordNumber+'/30'"></span>
-               </el-input>
-            </el-col>
-            <el-col>
-               <i class="el-icon-plus" @click='addKeyWord'></i>
-            </el-col>
+<div id="keyword-reply" class="keyword-reply ms-weixin-content" v-if="menuVue.menuActive == '关键词表单'">
+   <el-container>
+      <el-header class="ms-header" height="50px">
+         <el-row>
+            <el-button class="ms-fr" size="small" icon="el-icon-arrow-left" @click="menuVue.menuActive = '关键词回复'">返回</el-button>
+            <el-button class="ms-fr" size="small" icon="el-icon-refresh">重置</el-button>
+            <el-button class="ms-fr" type="success" size="small" icon="el-icon-tickets" @click="menuVue.menuActive = '关键词回复'">保存</el-button>
          </el-row>
-      </el-form-item>
-      <el-form-item class="ms-keyword-reply-content" label="回复内容">
-         <el-tabs v-model="activeName" @tab-click="" class="keyword-reply-tabs">
-            <el-tab-pane label="文字" name="text">
-               <el-input type="textarea" v-model="keywordReplyForm.reply" :autosize="{ minRows: 4, maxRows: 4}" resize='none'>
-               </el-input>
-               <i class="el-icon-delete" @click="keywordReplyForm.reply = ''"></i>
-               <div class="footer">
-                  <i class="el-icon-star-off"></i>
-                  <a>插入超链接</a>
-               </div>
-            </el-tab-pane>
-            <el-tab-pane label="图片" name="picture">
-            </el-tab-pane>
-            <el-tab-pane label="图文" name="article">
-            </el-tab-pane>
-         </el-tabs>
-      </el-form-item>
-   </el-form>
+      </el-header>
+      <el-main class="ms-container" width="100%">
+         <el-form :model="keywordReplyForm" status-icon :rules="keywordReplyFormRules" ref="keywordReplyForm" label-width="100px">
+            <el-form-item label="关键词" prop="keyword" class="ms-keyword-input">
+               <el-row type='flex' justify='space-between' align='center'>
+                  <el-col :span='12'>
+                     <el-input placeholder="请输入内容" v-model="keywordReplyForm.keyword" class="input-with-select" size='mini' maxlength='30' @input='resetWord'>
+                        <el-select v-model="keywordReplyForm.select" slot="prepend" placeholder="请选择">
+                           <el-option label="模糊匹配" value="1"></el-option>
+                           <el-option label="全匹配" value="2"></el-option>
+                        </el-select>
+                        <span slot='suffix' v-text="wordNumber+'/30'"></span>
+                     </el-input>
+                  </el-col>
+                  <el-col>
+                     <i class="el-icon-plus" @click='addKeyWord'></i>
+                  </el-col>
+               </el-row>
+            </el-form-item>
+            <el-form-item class="ms-keyword-reply-content" label="回复内容">
+               <el-tabs v-model="activeName" @tab-click="" class="keyword-reply-tabs">
+                  <el-tab-pane label="文字" name="text">
+                     <el-input type="textarea" v-model="keywordReplyForm.reply" :autosize="{ minRows: 4, maxRows: 4}" resize='none'>
+                     </el-input>
+                     <i class="el-icon-delete" @click="keywordReplyForm.reply = ''"></i>
+                     <div class="footer">
+                        <i class="el-icon-star-off"></i>
+                        <a>插入超链接</a>
+                     </div>
+                  </el-tab-pane>
+                  <el-tab-pane label="图片" name="picture">
+                  </el-tab-pane>
+                  <el-tab-pane label="图文" name="article">
+                  </el-tab-pane>
+               </el-tabs>
+            </el-form-item>
+         </el-form>
+      </el-main>
+   </el-container>
 </div>
 
 <script>

+ 32 - 13
src/main/webapp/WEB-INF/manager/mweixin/keyword/index.ftl

@@ -1,19 +1,38 @@
 <!-- 关键字列表 -->
 <link rel="stylesheet" href="../../../../static/mweixin/css/keyword-list.css">
 
-<div id="keyword-list" class="keyword-list ms-container ms-weixin-content" v-if="menuVue.menuActive == '关键词回复'">
-   <el-table :data="tableData" border style="width: 100%">
-      <el-table-column prop="date" label="规则名" width="180" align='center'>
-      </el-table-column>
-      <el-table-column prop="name" label="关键词" width="180" align='center'>
-      </el-table-column>
-      <el-table-column prop="address" label="消息回复类型" align='center'>
-      </el-table-column>
-      <el-table-column prop="address" label="发送对象" align='center'>
-      </el-table-column>
-      <el-table-column prop="address" label="回复方式" align='center'>
-      </el-table-column>
-   </el-table>
+<div id="keyword-list" class="keyword-list ms-weixin-content" v-if="menuVue.menuActive == '关键词回复'">
+   <el-container>
+      <!--右侧头部-->
+      <el-header class="ms-header" height="50px">
+         <el-row>
+            <el-button type="primary" size="small" icon="el-icon-plus" @click="menuVue.menuActive = '关键词表单'">添加</el-button>
+            <el-button class="ms-fr" size="small" icon="el-icon-refresh">重置</el-button>
+         </el-row>
+      </el-header>
+      <el-container>
+         <!--内容头部-->
+         <el-header class="ms-tr ms-header">
+            <el-input size="medium" placeholder="请输入内容" suffix-icon="el-icon-search">
+            </el-input>
+         </el-header>
+         <!--素材列表-->
+         <el-main class="ms-admin-picture-list ms-container">
+            <el-table :data="tableData" border style="width: 100%">
+               <el-table-column prop="date" label="规则名" width="180" align='center'>
+               </el-table-column>
+               <el-table-column prop="name" label="关键词" width="180" align='center'>
+               </el-table-column>
+               <el-table-column prop="address" label="消息回复类型" align='center'>
+               </el-table-column>
+               <el-table-column prop="address" label="发送对象" align='center'>
+               </el-table-column>
+               <el-table-column prop="address" label="回复方式" align='center'>
+               </el-table-column>
+            </el-table>
+         </el-main>
+      </el-container>
+   </el-container>
 </div>
 
 <script>

+ 1 - 4
src/main/webapp/WEB-INF/manager/mweixin/menu.ftl

@@ -52,10 +52,7 @@
             }, {
                title: '关键词回复'
             }]
-         },{
-             title:'新建图文'
-         }
-        ], //左侧导航列表
+         }], //左侧导航列表
          menuActive: '图文', //选中
       }
    })

+ 57 - 48
src/main/webapp/WEB-INF/manager/mweixin/menu/index.ftl

@@ -2,55 +2,64 @@
 <link rel="stylesheet" href="../../../../static/mweixin/css/custom-menu.css">
 <div id="custom-menu" class="ms-custom-menu ms-weixin-content" v-if="menuVue.menuActive == '自定义菜单'">
    <el-container class="ms-custom-container">
-      <el-aside>
-         <el-container>
-            <el-header>公众号</el-header>
-            <el-main></el-main>
-            <el-footer>
-               <el-button icon="el-icon-date"></el-button>
-               <div class="ms-create-menu">
-                  <div class="ms-create-sub-menu">
-                     <el-button type="primary" @click='addSubMenuShow = !addSubMenuShow'>新建菜单</el-button>
-                     <el-button icon="el-icon-plus" v-show='addSubMenuShow'></el-button>
+      <el-header class="ms-header" height="50px">
+         <el-row>
+            <el-button type="danger" size="small" icon="el-icon-delet">删除</el-button>
+            <el-button class="ms-fr" size="small" icon="el-icon-refresh">重置</el-button>
+            <el-button type="success" class="ms-fr" size="small" icon="el-icon-tickets">保存</el-button>
+         </el-row>
+      </el-header>
+      <el-container class="ms-container">
+         <el-aside>
+            <el-container>
+               <el-header>公众号</el-header>
+               <el-main></el-main>
+               <el-footer>
+                  <el-button icon="el-icon-date"></el-button>
+                  <div class="ms-create-menu">
+                     <div class="ms-create-sub-menu">
+                        <el-button type="primary" @click='addSubMenuShow = !addSubMenuShow'>新建菜单</el-button>
+                        <el-button icon="el-icon-plus" v-show='addSubMenuShow'></el-button>
+                     </div>
+                     <el-button icon="el-icon-plus"></el-button>
                   </div>
-                  <el-button icon="el-icon-plus"></el-button>
+               </el-footer>
+            </el-container>
+         </el-aside>
+         <el-main>
+            <el-card class="custom-menu-card" shadow="never">
+               <div slot="header" class="clearfix">
+                  <span>新建菜单</span>
                </div>
-            </el-footer>
-         </el-container>
-      </el-aside>
-      <el-main>
-         <el-card class="custom-menu-card" shadow="never">
-            <div slot="header" class="clearfix">
-               <span>新建菜单</span>
-            </div>
-            <el-form ref="customMenuForm" :rule='customMenuFormRules' :model="customMenuForm" label-width="80px">
-               <el-form-item label="菜单名称" prop='name' class="ms-custom-menu-name">
-                  <el-input v-model="customMenuForm.name" size='mini'></el-input>
-                  <span>菜单名称字数不多于5个汉字或10个字母</span>
-               </el-form-item>
-               <el-form-item label="菜单内容" class="ms-custom-menu-content">
-                  <el-tabs v-model="activeName" @tab-click="">
-                     <el-tab-pane label="图片" name="picture">
-                        <span slot="label">
-                           <i class="el-icon-picture"></i>图片</span>
-                        <div onclick="materialBankFormVue.open()">
-                           <i class="el-icon-picture-outline"></i>
-                           <span>从素材库选择</span>
-                        </div>
-                        <div onclick="newPicFormVue.open()">
-                           <i class="el-icon-plus"></i>
-                           <span>新建图片</span>
-                        </div>
-                     </el-tab-pane>
-                     <el-tab-pane label="图文管理" name="article">
-                        <span slot="label">
-                           <i class="el-icon-picture"></i>图文管理</span>
-                     </el-tab-pane>
-                  </el-tabs>
-               </el-form-item>
-            </el-form>
-         </el-card>
-      </el-main>
+               <el-form ref="customMenuForm" :rule='customMenuFormRules' :model="customMenuForm" label-width="80px">
+                  <el-form-item label="菜单名称" prop='name' class="ms-custom-menu-name">
+                     <el-input v-model="customMenuForm.name" size='mini'></el-input>
+                     <span>菜单名称字数不多于5个汉字或10个字母</span>
+                  </el-form-item>
+                  <el-form-item label="菜单内容" class="ms-custom-menu-content">
+                     <el-tabs v-model="activeName" @tab-click="">
+                        <el-tab-pane label="图片" name="picture">
+                           <span slot="label">
+                              <i class="el-icon-picture"></i>图片</span>
+                           <div onclick="materialBankFormVue.open()">
+                              <i class="el-icon-picture-outline"></i>
+                              <span>从素材库选择</span>
+                           </div>
+                           <div onclick="newPicFormVue.open()">
+                              <i class="el-icon-plus"></i>
+                              <span>新建图片</span>
+                           </div>
+                        </el-tab-pane>
+                        <el-tab-pane label="图文管理" name="article">
+                           <span slot="label">
+                              <i class="el-icon-picture"></i>图文管理</span>
+                        </el-tab-pane>
+                     </el-tabs>
+                  </el-form-item>
+               </el-form>
+            </el-card>
+         </el-main>
+      </el-container>
    </el-container>
 </div>
 <script>
@@ -78,7 +87,7 @@
          activeName: 'picture'
       },
       methods: {
-         
+
       }
 
    })

+ 38 - 22
src/main/webapp/WEB-INF/manager/mweixin/message/index.ftl

@@ -1,27 +1,43 @@
 <!-- 消息回复 && 关注回复 -->
 <link rel="stylesheet" href="../../../../static/mweixin/css/message-reply.css">
-<div id="message-reply" class="ms-message-reply ms-container ms-weixin-content" v-if="menuVue.menuActive == '消息回复'||menuVue.menuActive == '关注时回复'">
-   <div>回复内容</div>
-   <el-tabs v-model="activeName" @tab-click="" class="message-reply-tabs">
-      <el-tab-pane label="文字" name="text">
-         <el-form ref="messageReplyForm" :rules='messageReplyFormRules' :model="messageReplyForm">
-            <el-form-item class="ms-message-reply-content">
-               <el-input type="textarea" v-model="messageReplyForm.reply" :autosize="{ minRows: 4, maxRows: 4}" resize='none'>
-               </el-input>
-               <i class="el-icon-delete" @click="messageReplyForm.reply = ''"></i>
-               <div class="footer">
-                  <i class="el-icon-star-off"></i>
-                  <a>插入超链接</a>
-               </div>
-            </el-form-item>
-         </el-form>
-         </el-form>
-      </el-tab-pane>
-      <el-tab-pane label="图片" name="picture">
-      </el-tab-pane>
-      <el-tab-pane label="图文" name="article">
-      </el-tab-pane>
-   </el-tabs>
+<div id="message-reply" class="ms-message-reply ms-weixin-content" v-if="menuVue.menuActive == '消息回复'||menuVue.menuActive == '关注时回复'">
+   <el-container class="ms-admin-message-reply">
+      <el-header class="ms-header" height="50px">
+         <el-row>
+            <el-button class="ms-fr" size="small" icon="el-icon-refresh">重置</el-button>
+            <el-button type="success" class="ms-fr" size="small" icon="el-icon-tickets">保存</el-button>
+         </el-row>
+      </el-header>
+      <el-container>
+         <el-header class="ms-tr ms-header">
+            <el-input size="medium" placeholder="请输入内容" suffix-icon="el-icon-search">
+            </el-input>
+         </el-header>
+         <em-main class="ms-container">
+            <div>回复内容</div>
+            <el-tabs v-model="activeName" @tab-click="" class="message-reply-tabs">
+               <el-tab-pane label="文字" name="text">
+                  <el-form ref="messageReplyForm" :rules='messageReplyFormRules' :model="messageReplyForm">
+                     <el-form-item class="ms-message-reply-content">
+                        <el-input type="textarea" v-model="messageReplyForm.reply" :autosize="{ minRows: 4, maxRows: 4}" resize='none'>
+                        </el-input>
+                        <i class="el-icon-delete" @click="messageReplyForm.reply = ''"></i>
+                        <div class="footer">
+                           <i class="el-icon-star-off"></i>
+                           <a>插入超链接</a>
+                        </div>
+                     </el-form-item>
+                  </el-form>
+                  </el-form>
+               </el-tab-pane>
+               <el-tab-pane label="图片" name="picture">
+               </el-tab-pane>
+               <el-tab-pane label="图文" name="article">
+               </el-tab-pane>
+            </el-tabs>
+         </em-main>
+      </el-container>
+   </el-container>
 </div>
 <script>
    var messageReplyVue = new Vue({

+ 155 - 0
src/main/webapp/WEB-INF/manager/mweixin/metarial/form.ftl

@@ -0,0 +1,155 @@
+<!-- 新建图文 -->
+<link rel="stylesheet" href="../../../../static/mweixin/css/article.css">
+<div id='article' class="ms-article" v-show="menuVue.menuActive == '新建图文'">
+   <el-container class="ms-admin-picture">
+      <!--右侧头部-->
+      <el-header class="ms-header" height="50px">
+         <el-row>
+            <el-button class="ms-fr" size="small" icon="el-icon-arrow-left" @click="menuVue.menuActive = '关键词回复'">返回</el-button>
+            <el-button class="ms-fr" size="small" icon="el-icon-refresh">更新</el-button>
+            <el-button class="ms-fr" type="success" size="small" icon="el-icon-tickets" @click="menuVue.menuActive = '关键词回复'">保存</el-button>
+         </el-row>
+      </el-header>
+      <el-container class=" ms-container">
+         <el-aside width="280px">
+            <div class="ms-main-article">
+               <img :src='mainArticle.basicPic'>
+               <div class="ms-main-article-mask"></div>
+               <span v-text='mainArticle.basicTitle'></span>
+            </div>
+            <draggable v-model="subArticleList" :options="{draggable:'.ms-article-item'}">
+               <div v-for="(element,index) in subArticleList" :key="index" class="ms-article-item">
+                  <p>
+                     <span v-text='element.basicTitle'></span>
+                  </p>
+                  <img :src='element.basicThumbnailsl'>
+               </div>
+            </draggable>
+            <div class="ms-article-footer">
+               <el-button size='medium' icon='el-icon-plus' @click='addArticle'>添加图文</el-button>
+            </div>
+         </el-aside>
+         <el-main>
+            <div class="ms-main-header">
+               <el-upload class="ms-pic-upload" :show-file-list="false">
+                  <img v-if="false" :src="false" class="avatar">
+                  <i v-else class="el-icon-picture"></i>
+                  <span>添加封面</span>
+               </el-upload>
+               <el-form label-width='40px'>
+                  <el-form-item label="标题" prop="">
+                     <el-input size='small' placeholder="请输入图文标题" v-model='articleForm.basicTitle' @input="resetWordNum('title')">
+                        <span slot='suffix' v-text="titleWordNumber+'/64'"></span>
+                     </el-input>
+                  </el-form-item>
+                  <el-form-item label="作者" prop="">
+                     <el-input size='small' placeholder="请输入图文作者" v-model='articleForm.articleAuthor' @input="resetWordNum('author')">
+                        <span slot='suffix' v-text="authorWordNumber+'/8'"></span>
+                     </el-input>
+                  </el-form-item>
+                  <el-form-item label="摘要" prop="">
+                     <el-input size='small' type='textarea' placeholder="选填,如果不写会默认抓取正文前54个字" :autosize="{ minRows: 2, maxRows: 2}" resize='none' v-model='articleForm.basicDescription' @input="resetWordNum('desc')">
+                        <span slot='suffix' v-text="descWordNumber+'/54'"></span>
+                     </el-input>
+                  </el-form-item>
+               </el-form>
+            </div>
+            <div class="ms-main-body">
+               <!-- 百度编辑器 -->
+               <script id="ueditorArticle" type="text/plain" name="articleContent"></script>
+            </div>
+         </el-main>
+      </el-container>
+   </el-container>
+</div>
+<script>
+   var articleVue = new Vue({
+      el: '#article',
+      data: {
+         mainArticle: {
+            basicPic: 'https://img03.sogoucdn.com/app/a/100520091/20190125112329', //主图
+            basicTitle: '国足0-3不敌伊朗被淘汰,赛后还有一个消息', //标题
+         },
+         // 文章列表
+         subArticleList: [{
+            basicTitle: '硬核!年会当着老板面唱,“干活的干不过写PPT的……',
+            basicThumbnailsl: 'https://img01.sogoucdn.com/app/a/100520091/20190125112509'
+         }, {
+            basicTitle: '知否知否,党组织犯错,处理有多严?',
+            basicThumbnailsl: 'https://img01.sogoucdn.com/app/a/100520091/20190125112509'
+         }, {
+            basicTitle: '没有奇迹,国足0-3不敌伊朗止步八强!',
+            basicThumbnailsl: 'https://img03.sogoucdn.com/app/a/100520091/20190125113148'
+         }],
+         titleWordNumber: 64, //图文标题剩余字数
+         authorWordNumber: 8, //图文作者剩余字数
+         descWordNumber: 54, //摘要
+         editor: null, //富文本实例
+         articleForm: {
+            basicTitle: '', //标题
+            articleAuthor: '', //作者
+            basicDescription: '', //摘要
+            articleContent: '', //正文
+         }
+      },
+      methods: {
+         // 添加文章
+         addArticle: function() {
+            if(this.subArticleList.length > 6) {
+               this.$notify({
+                  title: '添加失败',
+                  message: '最大图文数量为7',
+                  type: 'warning'
+               });
+               return;
+            }
+            this.subArticleList.push({
+               basicTitle: '新增文章标题',
+               basicThumbnailsl: 'https://img03.sogoucdn.com/app/a/100520091/20190125113148'
+            })
+         },
+         // 计算剩余字数
+         resetWordNum: function(type) {
+
+         }
+      },
+      mounted: function() {
+         let that = this;
+         //富文本加载
+         var URL = window.UEDITOR_HOME_URL || "http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/";
+         if(this.editor == null) {
+            this.editor = UE.getEditor('ueditorArticle', {
+               toolbars: [
+                  ['fullscreen', 'undo', 'redo', '|', 'bold', 'italic', 'underline',
+                     'strikethrough',
+                     'removeformat', 'blockquote',
+                     '|', 'forecolor', 'backcolor', 'insertorderedlist',
+                     'insertunorderedlist', '|', 'attachment', 'simpleupload', 'link'
+                  ]
+               ],
+               imageScaleEnabled: true,
+               // 服务器统一请求接口路径
+               serverUrl: URL +
+                  "jsp/msController.jsp?jsonConfig=%7BvideoUrlPrefix:'http://mpm.mingsoft.net/',fileUrlPrefix:'http://mpm.mingsoft.net/',imageUrlPrefix:'http://mpm.mingsoft.net/',imagePathFormat:'/upload/pm/editor/%7Btime%7D',filePathFormat:'/upload/pm/editor/%7Btime%7D',videoPathFormat:'/upload/pm/editor/%7Btime%7D'%7D",
+               autoHeightEnabled: true,
+               autoFloatEnabled: true,
+               scaleEnabled: false,
+               compressSide: 0,
+               maxImageSideLength: 2000,
+               maximumWords: 80000,
+               zIndex: 10000,
+               elementPathEnabled: false,
+               wordCount: false,
+               initialFrameWidth: '100%',
+               initialFrameHeight: 500,
+            });
+            this.editor.ready(function() {
+               var a = $("#ueditor_0").contents()[0].activeElement;
+               $(a).addClass("ms-webkit-scrollbar").before(
+                  "<style>.ms-webkit-scrollbar::-webkit-scrollbar,::-webkit-scrollbar{width:10px;/*滚动条宽度*/height:1.5%;/*滚动条高度*/}/*定义滚动条轨道内阴影+圆角*/.ms-webkit-scrollbar::-webkit-scrollbar-track,::-webkit-scrollbar-track{border-radius:10px;/*滚动条的背景区域的圆角*/background-color:#eeeeee;/*滚动条的背景颜色*/}.ms-task-content::-webkit-scrollbar-track{border-radius:10px;background-color:#FFFFFF;}/*定义滑块内阴影+圆角*/.ms-webkit-scrollbar::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb{border-radius:10px;/*滚动条的圆角*/background-color:#dddddd;/*滚动条的背景颜色*/}</style>"
+               );
+            });
+         }
+      }
+   })
+</script>

+ 3 - 3
src/main/webapp/WEB-INF/manager/mweixin/metarial/index.ftl

@@ -3,9 +3,9 @@
 <div id="material-list-vue" v-if="menuVue.menuActive == '图文'" class="ms-weixin-content">
    <el-container>
       <!--右侧头部-->
-      <el-header class="ms-header" height="52px">
+      <el-header class="ms-header" height="50px">
          <el-row>
-            <el-button type="primary" size="small" icon="el-icon-plus">添加</el-button>
+            <el-button type="primary" size="small" icon="el-icon-plus" @click="menuVue.menuActive = '新建图文'">添加</el-button>
             <el-button class="ms-fr" size="small" icon="el-icon-refresh">刷新</el-button>
             <el-button class="ms-fr" size="small">同步微信素材</el-button>
          </el-row>
@@ -36,7 +36,7 @@
                   <p v-text="material.det"></p>
                </div>
                <div class="footer">
-                  <i class="el-icon-edit"></i>
+                  <i class="el-icon-edit" @click="menuVue.menuActive = '新建图文'"></i>
                   <em></em>
                   <i class="el-icon-delete"></i>
                </div>

+ 36 - 16
src/main/webapp/WEB-INF/manager/mweixin/picture/index.ftl

@@ -1,9 +1,9 @@
 <!--图文素材页-->
 <link rel="stylesheet" href="../../../static/mweixin/css/picture-list.css">
 <div id="picture-list-vue" v-if="menuVue.menuActive == '图片'" class="ms-weixin-content">
-   <el-container>
+   <el-container class="ms-admin-picture">
       <!--右侧头部-->
-      <el-header class="ms-header" height="52px">
+      <el-header class="ms-header" height="50px">
          <el-row>
             <el-button type="primary" size="small" icon="el-icon-plus">添加</el-button>
             <el-button class="ms-fr" size="small" icon="el-icon-refresh">刷新</el-button>
@@ -25,22 +25,42 @@
          </el-header>
          <!--素材列表-->
          <el-main class="ms-admin-picture-list">
-            <div class="ms-admin-picture-item" v-for="picture in pictureList">
-               <div class="body">
-                  <img :src="picture.img" />
+            <el-container>
+               <el-aside class="ms-admin-picture-item">
+                  <div v-for="picture in pictureList">
+                     <div class="body">
+                        <img :src="picture.img" />
+                        <div>
+                           <input type="checkbox" />
+                           <span v-text="picture.title"></span>
+                        </div>
+                     </div>
+                     <div class="footer">
+                        <i class="el-icon-edit"></i>
+                        <em></em>
+                        <i class="el-icon-download"></i>
+                        <em></em>
+                        <i class="el-icon-delete"></i>
+                     </div>
+                  </div>
+               </el-aside>
+               <el-main class="ms-admin-picture-show">
+                  <span>全部图片(6)</span>
+                  <div>
+                     <span>小米(1)</span>
+                     <i class="el-icon-edit"></i>
+                     <i class="el-icon-delete"></i>
+                  </div>
                   <div>
-                     <input type="checkbox" />
-                     <span v-text="picture.title"></span>
+                     <span>小米(1)</span>
+                     <i class="el-icon-edit"></i>
+                     <i class="el-icon-delete"></i>
                   </div>
-               </div>
-               <div class="footer">
-                  <i class="el-icon-edit"></i>
-                  <em></em>
-                  <i class="el-icon-delete"></i>
-                  <em></em>
-                  <i class="el-icon-delete"></i>
-               </div>
-            </div>
+                  <p>
+                     <i class="el-icon-plus"></i>新建分组</p>
+               </el-main>
+            </el-container>
+
          </el-main>
       </el-container>
    </el-container>

+ 1 - 1
src/main/webapp/WEB-INF/manager/mweixin/weixin.ftl

@@ -9,6 +9,7 @@
    <body>
       <!--#include virtual="menu.ftl" -->
       <!--#include virtual="metarial/index.ftl" -->
+      <!--#include virtual="metarial/form.ftl" -->
       <!--#include virtual="picture/index.ftl" -->
       <!--#include virtual="keyword/index.ftl" -->
       <!--#include virtual="keyword/form.ftl" -->
@@ -16,6 +17,5 @@
       <!--#include virtual="menu/new-pic-form.ftl" -->
       <!--#include virtual="menu/material-bank-form.ftl" -->
       <!--#include virtual="message/index.ftl" -->
-      <!--#include virtual="article/index.ftl" -->
    </body>
 </html>

+ 0 - 3
src/main/webapp/static/ms-admin/4.7.0/css/login.css

@@ -94,9 +94,6 @@ textarea::-webkit-input-placeholder {
 .ms-tr {
   text-align: right;
 }
-.el-button + .el-button {
-  margin-left: 0;
-}
 .ms-weixin-content {
   width: calc(100% - 140px);
 }

+ 17 - 4
src/main/webapp/static/ms-admin/4.7.0/less/app.less

@@ -65,7 +65,7 @@ textarea::-webkit-input-placeholder {
 .ms-container {
     margin: 12px;
     height: ~'calc(100% - 24px)';
-    padding: 14px 14px 0 14px;
+    padding: 14px;
     background: #fff;
 }
 
@@ -74,7 +74,10 @@ textarea::-webkit-input-placeholder {
     margin: 0;
     border-bottom: 1px solid #ddd;
     background: #fff;
-    height: 50px
+    height: 50px;
+    button{
+        height: 30px;
+    }
 }
 
 .ms-pagination {
@@ -91,7 +94,7 @@ textarea::-webkit-input-placeholder {
 }
 
 .el-button+.el-button {
-    margin-left: 0
+//  margin-left: 0
 }
 
 .ms-weixin-content{
@@ -113,4 +116,14 @@ textarea::-webkit-input-placeholder {
         border-top: 1px solid @borderColor;
         padding: 15px !important;
     }
-}
+}
+
+//选中样式
+.ms-hover{
+    cursor: pointer;
+    &:hover{
+        color: @themeColor;
+        background: #fff;
+        border-color: @themeColor;
+    }
+}

+ 221 - 0
src/main/webapp/static/ms-admin/4.7.0/less/css/login.css

@@ -0,0 +1,221 @@
+/*
+*这里的值严格按照UI设计图标注值来进行设置
+*/
+/*
+*颜色
+*/
+/*
+*页面的边距
+*/
+/*
+*字体
+*/
+/*
+*头像
+*/
+/*
+ * 按钮
+ */
+/*
+*对常见的多行样式进行了方法封装,方便调用,加快开发效率
+*/
+html,
+body {
+  min-height: 100vh;
+  width: 100vw;
+  background-color: #eee;
+  margin: 0;
+  display: flex;
+  font-weight: initial !important;
+  font-size: 14px !important;
+  color: #333 !important;
+}
+html *,
+body * {
+  text-decoration: none !important;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
+  box-sizing: border-box;
+}
+.ms-ellipsis {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  display: block;
+}
+.ms-align-center {
+  display: flex;
+  align-items: center;
+}
+input::-webkit-input-placeholder,
+textarea::-webkit-input-placeholder {
+  font-weight: initial;
+  font-size: 12px;
+  color: #aaa;
+  resize: none;
+}
+*::-webkit-scrollbar {
+  width: 8px;
+  height: 8px;
+}
+/*定义滚动条轨道 内阴影+圆角*/
+*::-webkit-scrollbar-track {
+  border-radius: 10px;
+  /*滚动条的背景区域的圆角*/
+  background-color: #eee;
+  /*滚动条的背景颜色*/
+}
+/*定义滑块 内阴影+圆角*/
+*::-webkit-scrollbar-thumb {
+  border-radius: 10px;
+  /*滚动条的圆角*/
+  background-color: #ddd;
+  /*滚动条的背景颜色*/
+}
+.ms-container {
+  margin: 12px;
+  height: calc(100% - 24px);
+  padding: 14px;
+  background: #fff;
+}
+.ms-header {
+  padding: 10px;
+  margin: 0;
+  border-bottom: 1px solid #ddd;
+  background: #fff;
+  height: 50px;
+}
+.ms-header button {
+  height: 30px;
+}
+.ms-pagination {
+  padding: 20px 0;
+  text-align: right;
+}
+.ms-fr {
+  float: right;
+}
+.ms-tr {
+  text-align: right;
+}
+.ms-weixin-content {
+  width: calc(100% - 140px);
+}
+.ms-weixin-dialog .el-dialog__header {
+  height: 55px;
+  box-sizing: border-box;
+  padding: 10px 10px 25px 10px;
+  border-bottom: 1px solid #ddd;
+}
+.ms-weixin-dialog .el-dialog__header .el-dialog__title {
+  font-weight: bold;
+  font-size: 14px;
+  color: #333;
+}
+.ms-weixin-dialog .el-dialog__footer {
+  border-top: 1px solid #ddd;
+  padding: 15px !important;
+}
+.ms-hover {
+  cursor: pointer;
+}
+.ms-hover:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}
+.login {
+  width: 100vw;
+  height: 100vh;
+}
+.login .ms-admin-login-container {
+  height: 100%;
+  background: url('../images/login-bg.jpg') center no-repeat;
+  background-size: cover;
+}
+.login .ms-admin-login-container .ms-admin-login-main {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 680px;
+  height: 320px;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp > img {
+  flex: 1;
+  display: inline-block;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form {
+  flex: 1;
+  height: 320px;
+  background: #fff;
+  padding: 39px  54px;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form h1 {
+  line-height: 1;
+  font-weight: initial;
+  font-size: 12px;
+  color: #999999;
+  margin: 0 0 30px 0;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form h1 span {
+  font-weight: initial;
+  font-size: 16px;
+  color: #0099ff;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item {
+  margin-bottom: 12px;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item > div {
+  margin-left: 0 !important;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item .el-form-item__content,
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item .el-input,
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item input {
+  height: 34px !important;
+  line-height: 34px !important;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item-code .el-form-item__content {
+  display: flex;
+  justify-content: space-between;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item-code .el-form-item__content .el-input__inner,
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item-code .el-form-item__content .el-input {
+  width: 110px;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item-code .el-form-item__content > img {
+  width: 66px;
+  height: 34px;
+  margin: 0 6px;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item-code .el-form-item__content p {
+  display: flex;
+  justify-content: space-between;
+  line-height: 1;
+  flex-direction: column;
+  margin: 0;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item-code .el-form-item__content p span:nth-of-type(1) {
+  font-weight: initial;
+  font-size: 10px;
+  color: #999999;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item-code .el-form-item__content p span:nth-of-type(2) {
+  font-weight: initial;
+  font-size: 10px;
+  color: #0099ff;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item-checkout .el-form-item__content,
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item-checkout .el-input,
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-form-item-checkout input {
+  height: auto !important;
+  line-height: 1px !important;
+}
+.login .ms-admin-login-container .ms-admin-login-main .ms-admin-login-warp .ms-admin-login-form .ms-admin-login-btn {
+  width: 100%;
+  height: 34px;
+  line-height: 5px;
+}

+ 2 - 2
src/main/webapp/static/ms-admin/4.7.0/less/login.less

@@ -2,10 +2,10 @@
 // 登录
 .login{
     .ms-width-height(100vw,100vh);
-    .ms-admin-login-container{
+    .ms-admin-login-container{ 
         height: 100%;
         background: url('../images/login-bg.jpg') center no-repeat;
-        background-size:cover;
+        background-size:cover; 
         .ms-admin-login-main{
             .ms-flex(center);
             align-items: center;

+ 9 - 4
src/main/webapp/static/mweixin/article.less

@@ -6,11 +6,15 @@
     background: transparent !important;
     padding: 0 !important;
     .el-container {
+        .ms-container {
+            padding: 0;
+            background: transparent;
+            align-items: flex-start;
+        }
         // 侧边
         .el-aside {
             padding: 14px;
-            background: #fff; 
-            height: 475px;
+            background: #fff;
             // 主文章
             .ms-main-article {
                 position: relative;
@@ -45,7 +49,7 @@
                     span {
                         width: 100%;
                         display: inline-block;
-                        .ms-ellipsis-clamp(1);
+                        .ms-ellipsis-clamp(2);
                     }
                 }
                 img {
@@ -116,7 +120,8 @@
             .ms-main-body {
                 height: calc(~'100% - 180px');
                 background: #fff;
-                .edui-default{
+                .edui-default {
+                    border: none;
                     .edui-editor {
                         .edui-editor-toolbarboxouter {
                             background-color: none !important;

+ 22 - 7
src/main/webapp/static/mweixin/css/article.css

@@ -74,7 +74,7 @@ textarea::-webkit-input-placeholder {
 .ms-container {
   margin: 12px;
   height: calc(100% - 24px);
-  padding: 14px 14px 0 14px;
+  padding: 14px;
   background: #fff;
 }
 .ms-header {
@@ -84,6 +84,9 @@ textarea::-webkit-input-placeholder {
   background: #fff;
   height: 50px;
 }
+.ms-header button {
+  height: 30px;
+}
 .ms-pagination {
   padding: 20px 0;
   text-align: right;
@@ -94,9 +97,6 @@ textarea::-webkit-input-placeholder {
 .ms-tr {
   text-align: right;
 }
-.el-button + .el-button {
-  margin-left: 0;
-}
 .ms-weixin-content {
   width: calc(100% - 140px);
 }
@@ -115,6 +115,14 @@ textarea::-webkit-input-placeholder {
   border-top: 1px solid #ddd;
   padding: 15px !important;
 }
+.ms-hover {
+  cursor: pointer;
+}
+.ms-hover:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}
 .ms-article {
   display: flex;
   justify-content: space-between;
@@ -122,10 +130,14 @@ textarea::-webkit-input-placeholder {
   background: transparent !important;
   padding: 0 !important;
 }
+.ms-article .el-container .ms-container {
+  padding: 0;
+  background: transparent;
+  align-items: flex-start;
+}
 .ms-article .el-container .el-aside {
   padding: 14px;
   background: #fff;
-  height: 475px;
 }
 .ms-article .el-container .el-aside .ms-main-article {
   position: relative;
@@ -136,7 +148,7 @@ textarea::-webkit-input-placeholder {
 }
 .ms-article .el-container .el-aside .ms-main-article .ms-main-article-mask {
   background: #000;
-  opacity: .2;
+  opacity: 0.2;
   width: 100%;
   height: 146px;
   position: absolute;
@@ -174,7 +186,7 @@ textarea::-webkit-input-placeholder {
   overflow: hidden;
   text-overflow: ellipsis;
   display: -webkit-box;
-  -webkit-line-clamp: 1;
+  -webkit-line-clamp: 2;
   -webkit-box-orient: vertical;
 }
 .ms-article .el-container .el-aside .ms-article-item img {
@@ -257,6 +269,9 @@ textarea::-webkit-input-placeholder {
   height: calc(100% - 180px);
   background: #fff;
 }
+.ms-article .el-container .el-main .ms-main-body .edui-default {
+  border: none;
+}
 .ms-article .el-container .el-main .ms-main-body .edui-default .edui-editor .edui-editor-toolbarboxouter {
   background-color: none !important;
   background-image: none !important;

+ 32 - 6
src/main/webapp/static/mweixin/css/custom-menu.css

@@ -50,7 +50,7 @@ input::-webkit-input-placeholder,
 textarea::-webkit-input-placeholder {
   font-weight: initial;
   font-size: 12px;
-  color: #999;
+  color: #aaa;
   resize: none;
 }
 *::-webkit-scrollbar {
@@ -84,6 +84,9 @@ textarea::-webkit-input-placeholder {
   background: #fff;
   height: 50px;
 }
+.ms-header button {
+  height: 30px;
+}
 .ms-pagination {
   padding: 20px 0;
   text-align: right;
@@ -94,20 +97,43 @@ textarea::-webkit-input-placeholder {
 .ms-tr {
   text-align: right;
 }
-.el-button + .el-button {
-  margin-left: 0;
-}
 .ms-weixin-content {
   width: calc(100% - 140px);
 }
+.ms-weixin-dialog .el-dialog__header {
+  height: 55px;
+  box-sizing: border-box;
+  padding: 10px 10px 25px 10px;
+  border-bottom: 1px solid #ddd;
+}
+.ms-weixin-dialog .el-dialog__header .el-dialog__title {
+  font-weight: bold;
+  font-size: 14px;
+  color: #333;
+}
+.ms-weixin-dialog .el-dialog__footer {
+  border-top: 1px solid #ddd;
+  padding: 15px !important;
+}
+.ms-hover {
+  cursor: pointer;
+}
+.ms-hover:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}
 .ms-custom-menu {
   color: #f2f2f6;
 }
 .ms-custom-menu .ms-custom-container {
-  margin: 10px;
   display: flex;
   justify-content: space-between;
 }
+.ms-custom-menu .ms-custom-container > .ms-container {
+  padding: 0;
+  background: transparent;
+}
 .ms-custom-menu .ms-custom-container .el-aside {
   background: #fff;
   width: 280px !important;
@@ -204,7 +230,7 @@ textarea::-webkit-input-placeholder {
   margin-left: 10px;
   font-weight: initial;
   font-size: 12px;
-  color: #999;
+  color: #aaa;
 }
 .ms-custom-menu .ms-custom-container .el-main .custom-menu-card .ms-custom-menu-content .el-tabs {
   border: 1px solid #ddd;

+ 27 - 7
src/main/webapp/static/mweixin/css/keyword-list.css

@@ -50,7 +50,7 @@ input::-webkit-input-placeholder,
 textarea::-webkit-input-placeholder {
   font-weight: initial;
   font-size: 12px;
-  color: #999;
+  color: #aaa;
   resize: none;
 }
 *::-webkit-scrollbar {
@@ -74,7 +74,7 @@ textarea::-webkit-input-placeholder {
 .ms-container {
   margin: 12px;
   height: calc(100% - 24px);
-  padding: 14px 14px 0 14px;
+  padding: 14px;
   background: #fff;
 }
 .ms-header {
@@ -84,6 +84,9 @@ textarea::-webkit-input-placeholder {
   background: #fff;
   height: 50px;
 }
+.ms-header button {
+  height: 30px;
+}
 .ms-pagination {
   padding: 20px 0;
   text-align: right;
@@ -94,12 +97,29 @@ textarea::-webkit-input-placeholder {
 .ms-tr {
   text-align: right;
 }
-.el-button + .el-button {
-  margin-left: 0;
-}
 .ms-weixin-content {
   width: calc(100% - 140px);
 }
-.keyword-list {
-  padding: 14px;
+.ms-weixin-dialog .el-dialog__header {
+  height: 55px;
+  box-sizing: border-box;
+  padding: 10px 10px 25px 10px;
+  border-bottom: 1px solid #ddd;
+}
+.ms-weixin-dialog .el-dialog__header .el-dialog__title {
+  font-weight: bold;
+  font-size: 14px;
+  color: #333;
+}
+.ms-weixin-dialog .el-dialog__footer {
+  border-top: 1px solid #ddd;
+  padding: 15px !important;
+}
+.ms-hover {
+  cursor: pointer;
+}
+.ms-hover:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
 }

+ 29 - 6
src/main/webapp/static/mweixin/css/keyword-reply.css

@@ -50,7 +50,7 @@ input::-webkit-input-placeholder,
 textarea::-webkit-input-placeholder {
   font-weight: initial;
   font-size: 12px;
-  color: #999;
+  color: #aaa;
   resize: none;
 }
 *::-webkit-scrollbar {
@@ -74,7 +74,7 @@ textarea::-webkit-input-placeholder {
 .ms-container {
   margin: 12px;
   height: calc(100% - 24px);
-  padding: 14px 14px 0 14px;
+  padding: 14px;
   background: #fff;
 }
 .ms-header {
@@ -84,6 +84,9 @@ textarea::-webkit-input-placeholder {
   background: #fff;
   height: 50px;
 }
+.ms-header button {
+  height: 30px;
+}
 .ms-pagination {
   padding: 20px 0;
   text-align: right;
@@ -94,12 +97,32 @@ textarea::-webkit-input-placeholder {
 .ms-tr {
   text-align: right;
 }
-.el-button + .el-button {
-  margin-left: 0;
-}
 .ms-weixin-content {
   width: calc(100% - 140px);
 }
+.ms-weixin-dialog .el-dialog__header {
+  height: 55px;
+  box-sizing: border-box;
+  padding: 10px 10px 25px 10px;
+  border-bottom: 1px solid #ddd;
+}
+.ms-weixin-dialog .el-dialog__header .el-dialog__title {
+  font-weight: bold;
+  font-size: 14px;
+  color: #333;
+}
+.ms-weixin-dialog .el-dialog__footer {
+  border-top: 1px solid #ddd;
+  padding: 15px !important;
+}
+.ms-hover {
+  cursor: pointer;
+}
+.ms-hover:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}
 .keyword-reply {
   padding-bottom: 20px;
 }
@@ -148,7 +171,7 @@ textarea::-webkit-input-placeholder {
   bottom: 66px;
   font-weight: initial;
   font-size: 12px;
-  color: #999;
+  color: #aaa;
 }
 .keyword-reply .ms-keyword-reply-content .el-form-item__content .el-icon-delete:hover {
   cursor: pointer;

+ 13 - 5
src/main/webapp/static/mweixin/css/material-bank-form.css

@@ -50,7 +50,7 @@ input::-webkit-input-placeholder,
 textarea::-webkit-input-placeholder {
   font-weight: initial;
   font-size: 12px;
-  color: #999;
+  color: #aaa;
   resize: none;
 }
 *::-webkit-scrollbar {
@@ -74,7 +74,7 @@ textarea::-webkit-input-placeholder {
 .ms-container {
   margin: 12px;
   height: calc(100% - 24px);
-  padding: 14px 14px 0 14px;
+  padding: 14px;
   background: #fff;
 }
 .ms-header {
@@ -84,6 +84,9 @@ textarea::-webkit-input-placeholder {
   background: #fff;
   height: 50px;
 }
+.ms-header button {
+  height: 30px;
+}
 .ms-pagination {
   padding: 20px 0;
   text-align: right;
@@ -94,9 +97,6 @@ textarea::-webkit-input-placeholder {
 .ms-tr {
   text-align: right;
 }
-.el-button + .el-button {
-  margin-left: 0;
-}
 .ms-weixin-content {
   width: calc(100% - 140px);
 }
@@ -115,6 +115,14 @@ textarea::-webkit-input-placeholder {
   border-top: 1px solid #ddd;
   padding: 15px !important;
 }
+.ms-hover {
+  cursor: pointer;
+}
+.ms-hover:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}
 .material-bank-form > .el-dialog__wrapper > .el-dialog {
   width: 895px !important;
   height: 587px !important;

+ 38 - 4
src/main/webapp/static/mweixin/css/material-list.css

@@ -84,6 +84,9 @@ textarea::-webkit-input-placeholder {
   background: #fff;
   height: 50px;
 }
+.ms-header button {
+  height: 30px;
+}
 .ms-pagination {
   padding: 20px 0;
   text-align: right;
@@ -94,12 +97,32 @@ textarea::-webkit-input-placeholder {
 .ms-tr {
   text-align: right;
 }
-.el-button + .el-button {
-  margin-left: 0;
-}
 .ms-weixin-content {
   width: calc(100% - 140px);
 }
+.ms-weixin-dialog .el-dialog__header {
+  height: 55px;
+  box-sizing: border-box;
+  padding: 10px 10px 25px 10px;
+  border-bottom: 1px solid #ddd;
+}
+.ms-weixin-dialog .el-dialog__header .el-dialog__title {
+  font-weight: bold;
+  font-size: 14px;
+  color: #333;
+}
+.ms-weixin-dialog .el-dialog__footer {
+  border-top: 1px solid #ddd;
+  padding: 15px !important;
+}
+.ms-hover {
+  cursor: pointer;
+}
+.ms-hover:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}
 .ms-admin-material-list {
   background: #fff;
   margin: 12px;
@@ -133,11 +156,17 @@ textarea::-webkit-input-placeholder {
   text-overflow: ellipsis;
   white-space: nowrap;
   display: block;
+  cursor: pointer;
+}
+.ms-admin-material-list .ms-admin-material-item .body span:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
 }
 .ms-admin-material-list .ms-admin-material-item .body img {
   width: 170px;
   height: 110px;
-  margin: 0.5em auto;
+  margin: 0 auto;
   object-fit: cover;
 }
 .ms-admin-material-list .ms-admin-material-item .body p {
@@ -158,6 +187,11 @@ textarea::-webkit-input-placeholder {
   margin: auto;
   cursor: pointer;
 }
+.ms-admin-material-list .ms-admin-material-item .footer i:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}
 .ms-admin-material-list .ms-admin-material-item .footer em {
   width: 1px;
   height: 1em;

+ 32 - 5
src/main/webapp/static/mweixin/css/menu.css

@@ -50,7 +50,7 @@ input::-webkit-input-placeholder,
 textarea::-webkit-input-placeholder {
   font-weight: initial;
   font-size: 12px;
-  color: #999;
+  color: #aaa;
   resize: none;
 }
 *::-webkit-scrollbar {
@@ -74,7 +74,7 @@ textarea::-webkit-input-placeholder {
 .ms-container {
   margin: 12px;
   height: calc(100% - 24px);
-  padding: 14px 14px 0 14px;
+  padding: 14px;
   background: #fff;
 }
 .ms-header {
@@ -84,6 +84,9 @@ textarea::-webkit-input-placeholder {
   background: #fff;
   height: 50px;
 }
+.ms-header button {
+  height: 30px;
+}
 .ms-pagination {
   padding: 20px 0;
   text-align: right;
@@ -94,12 +97,32 @@ textarea::-webkit-input-placeholder {
 .ms-tr {
   text-align: right;
 }
-.el-button + .el-button {
-  margin-left: 0;
-}
 .ms-weixin-content {
   width: calc(100% - 140px);
 }
+.ms-weixin-dialog .el-dialog__header {
+  height: 55px;
+  box-sizing: border-box;
+  padding: 10px 10px 25px 10px;
+  border-bottom: 1px solid #ddd;
+}
+.ms-weixin-dialog .el-dialog__header .el-dialog__title {
+  font-weight: bold;
+  font-size: 14px;
+  color: #333;
+}
+.ms-weixin-dialog .el-dialog__footer {
+  border-top: 1px solid #ddd;
+  padding: 15px !important;
+}
+.ms-hover {
+  cursor: pointer;
+}
+.ms-hover:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}
 .ms-admin-menu {
   min-height: 100vh;
   min-width: 140px;
@@ -133,6 +156,10 @@ textarea::-webkit-input-placeholder {
   min-height: calc(100vh - 50px);
   background: #fff;
 }
+.ms-admin-menu .el-main .ms-admin-menu-menu .el-menu-item {
+  min-width: 140px;
+  width: 140px;
+}
 .ms-admin-menu .el-main .ms-admin-material-item {
   min-width: 100% !important;
 }

+ 30 - 8
src/main/webapp/static/mweixin/css/message-reply.css

@@ -74,7 +74,7 @@ textarea::-webkit-input-placeholder {
 .ms-container {
   margin: 12px;
   height: calc(100% - 24px);
-  padding: 14px 14px 0 14px;
+  padding: 14px;
   background: #fff;
 }
 .ms-header {
@@ -84,6 +84,9 @@ textarea::-webkit-input-placeholder {
   background: #fff;
   height: 50px;
 }
+.ms-header button {
+  height: 30px;
+}
 .ms-pagination {
   padding: 20px 0;
   text-align: right;
@@ -94,9 +97,6 @@ textarea::-webkit-input-placeholder {
 .ms-tr {
   text-align: right;
 }
-.el-button + .el-button {
-  margin-left: 0;
-}
 .ms-weixin-content {
   width: calc(100% - 140px);
 }
@@ -115,11 +115,24 @@ textarea::-webkit-input-placeholder {
   border-top: 1px solid #ddd;
   padding: 15px !important;
 }
+.ms-hover {
+  cursor: pointer;
+}
+.ms-hover:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}
+.ms-admin-message-reply .ms-container {
+  display: flex;
+}
+.ms-admin-message-reply .ms-container .message-reply-tabs {
+  padding-left: 12px;
+}
 .ms-message-reply {
   display: flex;
   justify-content: flex-start;
-  padding: 20px;
-  height: 267px;
+  height: auto;
 }
 .ms-message-reply > div:first-child {
   margin-right: 10px;
@@ -157,14 +170,17 @@ textarea::-webkit-input-placeholder {
 }
 .ms-message-reply .message-reply-tabs .el-tabs__content .el-tab-pane > .el-form .ms-message-reply-content .el-form-item__content .el-icon-delete {
   position: absolute;
-  right: 5px;
+  right: 7px;
   bottom: 66px;
   font-weight: initial;
   font-size: 12px;
   color: #aaa;
+  cursor: pointer;
 }
 .ms-message-reply .message-reply-tabs .el-tabs__content .el-tab-pane > .el-form .ms-message-reply-content .el-form-item__content .el-icon-delete:hover {
-  cursor: pointer;
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
 }
 .ms-message-reply .message-reply-tabs .el-tabs__content .el-tab-pane > .el-form .ms-message-reply-content .el-form-item__content textarea {
   height: 127px !important;
@@ -181,6 +197,12 @@ textarea::-webkit-input-placeholder {
 .ms-message-reply .message-reply-tabs .el-tabs__content .el-tab-pane > .el-form .ms-message-reply-content .el-form-item__content .footer i {
   margin-right: 12px;
   font-size: 16px;
+  cursor: pointer;
+}
+.ms-message-reply .message-reply-tabs .el-tabs__content .el-tab-pane > .el-form .ms-message-reply-content .el-form-item__content .footer i:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
 }
 .ms-message-reply .message-reply-tabs .el-tabs__content .el-tab-pane > .el-form .ms-message-reply-content .el-form-item__content .footer a {
   font-weight: initial;

+ 14 - 6
src/main/webapp/static/mweixin/css/new-pic-form.css

@@ -50,7 +50,7 @@ input::-webkit-input-placeholder,
 textarea::-webkit-input-placeholder {
   font-weight: initial;
   font-size: 12px;
-  color: #999;
+  color: #aaa;
   resize: none;
 }
 *::-webkit-scrollbar {
@@ -74,7 +74,7 @@ textarea::-webkit-input-placeholder {
 .ms-container {
   margin: 12px;
   height: calc(100% - 24px);
-  padding: 14px 14px 0 14px;
+  padding: 14px;
   background: #fff;
 }
 .ms-header {
@@ -84,6 +84,9 @@ textarea::-webkit-input-placeholder {
   background: #fff;
   height: 50px;
 }
+.ms-header button {
+  height: 30px;
+}
 .ms-pagination {
   padding: 20px 0;
   text-align: right;
@@ -94,9 +97,6 @@ textarea::-webkit-input-placeholder {
 .ms-tr {
   text-align: right;
 }
-.el-button + .el-button {
-  margin-left: 0;
-}
 .ms-weixin-content {
   width: calc(100% - 140px);
 }
@@ -115,6 +115,14 @@ textarea::-webkit-input-placeholder {
   border-top: 1px solid #ddd;
   padding: 15px !important;
 }
+.ms-hover {
+  cursor: pointer;
+}
+.ms-hover:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}
 .new-pic-form dl {
   margin: 0;
 }
@@ -123,7 +131,7 @@ textarea::-webkit-input-placeholder {
   line-height: 1;
   font-weight: initial;
   font-size: 12px;
-  color: #999;
+  color: #aaa;
 }
 .new-pic-form dt {
   display: inline-block;

+ 84 - 12
src/main/webapp/static/mweixin/css/picture-list.css

@@ -84,6 +84,9 @@ textarea::-webkit-input-placeholder {
   background: #fff;
   height: 50px;
 }
+.ms-header button {
+  height: 30px;
+}
 .ms-pagination {
   padding: 20px 0;
   text-align: right;
@@ -94,9 +97,6 @@ textarea::-webkit-input-placeholder {
 .ms-tr {
   text-align: right;
 }
-.el-button + .el-button {
-  margin-left: 0;
-}
 .ms-weixin-content {
   width: calc(100% - 140px);
 }
@@ -115,14 +115,30 @@ textarea::-webkit-input-placeholder {
   border-top: 1px solid #ddd;
   padding: 15px !important;
 }
+.ms-hover {
+  cursor: pointer;
+}
+.ms-hover:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}
+.ms-admin-picture {
+  height: 100%;
+}
 .ms-admin-picture-list {
   background: #fff;
   margin: 12px;
   padding: 14px;
   display: flex;
-  flex-wrap: wrap;
 }
 .ms-admin-picture-list .ms-admin-picture-item {
+  display: flex;
+  flex-wrap: wrap;
+  align-items: flex-start;
+  width: calc(100% - 220px) !important;
+}
+.ms-admin-picture-list .ms-admin-picture-item > div {
   margin: 0 24px 0 0;
   padding: 10px 10px 0 10px;
   width: 230px;
@@ -131,38 +147,94 @@ textarea::-webkit-input-placeholder {
   border: 1px solid #e6e6e6;
   border-radius: 4px;
 }
-.ms-admin-picture-list .ms-admin-picture-item .body {
+.ms-admin-picture-list .ms-admin-picture-item > div .body {
   display: flex;
   flex-direction: column;
   line-height: 2em;
 }
-.ms-admin-picture-list .ms-admin-picture-item .body div {
+.ms-admin-picture-list .ms-admin-picture-item > div .body div {
   margin-top: 0.5em;
   display: flex;
   align-items: center;
 }
-.ms-admin-picture-list .ms-admin-picture-item .body div span {
+.ms-admin-picture-list .ms-admin-picture-item > div .body div span {
   overflow: hidden;
   text-overflow: ellipsis;
   white-space: nowrap;
   display: block;
+  cursor: pointer;
+}
+.ms-admin-picture-list .ms-admin-picture-item > div .body div span:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
 }
-.ms-admin-picture-list .ms-admin-picture-item .body img {
+.ms-admin-picture-list .ms-admin-picture-item > div .body img {
   width: 100%;
-  height: 110px;
+  height: 130px;
   object-fit: cover;
 }
-.ms-admin-picture-list .ms-admin-picture-item .footer {
+.ms-admin-picture-list .ms-admin-picture-item > div .footer {
   display: flex;
   padding: 14px 0;
 }
-.ms-admin-picture-list .ms-admin-picture-item .footer i {
+.ms-admin-picture-list .ms-admin-picture-item > div .footer i {
   color: #999;
   margin: auto;
   cursor: pointer;
 }
-.ms-admin-picture-list .ms-admin-picture-item .footer em {
+.ms-admin-picture-list .ms-admin-picture-item > div .footer i:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}
+.ms-admin-picture-list .ms-admin-picture-item > div .footer em {
   width: 1px;
   height: 1em;
   background: #e6e6e6;
 }
+.ms-admin-picture-list .ms-admin-picture-show {
+  min-width: 220px;
+  height: 100%;
+  margin: -14px 0;
+  padding: 14px;
+  border-left: 1px solid #e6e6e6;
+}
+.ms-admin-picture-list .ms-admin-picture-show > span {
+  padding: 10px;
+  display: flex;
+  background: #f2f2f6;
+  font-weight: bold;
+}
+.ms-admin-picture-list .ms-admin-picture-show > div {
+  display: flex;
+  align-items: center;
+  padding: 10px;
+  font-size: 14px;
+}
+.ms-admin-picture-list .ms-admin-picture-show > div span {
+  margin-right: auto;
+}
+.ms-admin-picture-list .ms-admin-picture-show > div i {
+  margin-left: 10px;
+  cursor: pointer;
+}
+.ms-admin-picture-list .ms-admin-picture-show > div i:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}
+.ms-admin-picture-list .ms-admin-picture-show > p {
+  margin: 0;
+  padding: 10px;
+  border: 1px solid #e6e6e6;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  cursor: pointer;
+}
+.ms-admin-picture-list .ms-admin-picture-show > p:hover {
+  color: #0099ff;
+  background: #fff;
+  border-color: #0099ff;
+}

+ 71 - 68
src/main/webapp/static/mweixin/custom-menu.less

@@ -1,143 +1,146 @@
 @import "../ms-admin/4.7.0/less/app.less";
 // 自定义菜单
-.ms-custom-menu{
+.ms-custom-menu {
     color: rgb(242, 242, 246);
-    .ms-custom-container{
-        margin: 10px;
+    .ms-custom-container {
         .ms-flex();
+        &>.ms-container{
+            padding: 0;
+            background: transparent;
+        }
         // 侧边
-        .el-aside{
+        .el-aside {
             background: #fff;
-            .ms-width-height(280px,470px) !important;
+            .ms-width-height(280px, 470px) !important;
             // 微信界面
-            .el-container{
+            .el-container {
                 // 头部
-                .el-header{
+                .el-header {
                     .ms-line-height(40px) !important;
-                    .ms-font(16px,#fff);
+                    .ms-font(16px, #fff);
                     text-align: center;
                     background: #323232;
                 }
-                .el-main{
+                .el-main {
                     padding: 0;
-                    .ms-width-height(280px,379px) !important;
+                    .ms-width-height(280px, 379px) !important;
                 }
-                .el-footer{
+                .el-footer {
                     white-space: nowrap;
                     padding: 0;
                     font-size: 0;
                     background-color: #FAFAFA;
-                    .ms-width-height(280px,50px) !important;
+                    .ms-width-height(280px, 50px) !important;
                     .ms-flex(flex-start);
                     border-top: 1px solid @borderColor !important;
-                    >.el-button{
-                        .ms-width-height(40px,50px) !important;
-                        padding:0 !important;
+                    >.el-button {
+                        .ms-width-height(40px, 50px) !important;
+                        padding: 0 !important;
                         border: none !important;
                         border-right: 1px solid @borderColor !important;
                     }
-                    .el-button{
+                    .el-button {
                         border-radius: 0 !important;
-                        height:50px !important;
+                        height: 50px !important;
                         background: transparent !important;
                     }
-                    .ms-create-menu{
+                    .ms-create-menu {
                         flex: 1;
                         font-size: 0;
                         .ms-flex(space-between);
-                      .el-button{
-                          flex: 1;
-                          border: none !important;
-                          background: transparent !important;
-                          span{
-                              color:#333;
-                          }
-                      }
-                      .ms-create-sub-menu{
+                        .el-button {
+                            flex: 1;
+                            border: none !important;
+                            background: transparent !important;
+                            span {
+                                color: #333;
+                            }
+                        }
+                        .ms-create-sub-menu {
                             flex: 1;
-                          position: relative;
-                          >.el-button:first-child{
-                              width:100%;
-                          }
-                          >.el-button:last-child{
-                              position: absolute;
-                              top: -60px;
-                              left: 0;
-                              border: 1px solid @borderColor !important;
-                              width: 100%;
-                          }
-                      }
+                            position: relative;
+                            >.el-button:first-child {
+                                width: 100%;
+                            }
+                            >.el-button:last-child {
+                                position: absolute;
+                                top: -60px;
+                                left: 0;
+                                border: 1px solid @borderColor !important;
+                                width: 100%;
+                            }
+                        }
                         // 添加菜单
-                      .el-button--default{
-                          border-left: 1px solid @borderColor !important;
-                          padding:0 !important;
-                          flex: 1;
-                      }
+                        .el-button--default {
+                            border-left: 1px solid @borderColor !important;
+                            padding: 0 !important;
+                            flex: 1;
+                        }
                     }
                 }
             }
         }
         // 内容
-        .el-main{
+        .el-main {
             padding: 0;
             padding-left: 20px;
             flex: 1;
             height: 470px;
             // 内容区域卡片
-            .custom-menu-card{
+            .custom-menu-card {
                 height: 100%;
                 // 内容菜单表单
-                .ms-custom-menu-name{
-                    .el-form-item__content{
-                        .el-input{
-                            .ms-width-height(153px,30px) !important;
+                .ms-custom-menu-name {
+                    .el-form-item__content {
+                        .el-input {
+                            .ms-width-height(153px, 30px) !important;
                         }
                         .ms-flex(flex-start);
-                        span{
+                        span {
                             margin-left: 10px;
-                            .ms-font(@auxiliarySize,@auxiliaryColor);
+                            .ms-font(@auxiliarySize, @auxiliaryColor);
                         }
                     }
                 }
                 // 菜单内容
-                .ms-custom-menu-content{
-                    .el-tabs{
+                .ms-custom-menu-content {
+                    .el-tabs {
                         border: 1px solid @borderColor;
-                        .el-tabs__header{
+                        .el-tabs__header {
                             background: #f2f2f6;
-                            border-radius:4px 4px 0 0 !important;
+                            border-radius: 4px 4px 0 0 !important;
                             margin: 0 !important;
-                            .el-tabs__nav-scroll{
+                            .el-tabs__nav-scroll {
                                 padding: 0 20px;
-                                i{
+                                i {
                                     margin-right: 8px;
                                 }
                             }
                         }
-                        .el-tab-pane{
+                        .el-tab-pane {
                             padding: 20px;
-                            .ms-width-height(100%,220px);
+                            .ms-width-height(100%, 220px);
                             .ms-flex();
                             // 素材库
-                            >div{
+                            >div {
                                 flex: 1;
                                 border: 1px dashed @borderColor;
                                 .ms-flex(center);
                                 align-items: center;
                                 flex-direction: column;
-                                i{
-                                    .ms-font(20px,@themeColor,bolder);
+                                i {
+                                    .ms-font(20px, @themeColor, bolder);
                                 }
-                                span{
-                                    margin-top:8px;
+                                span {
+                                    margin-top: 8px;
                                     line-height: 1;
                                 }
-                                &:hover{
+                                &:hover {
                                     cursor: pointer;
                                 }
                             }
-                            >div:last-child{
-                                margin-left:20px;
+                            >div:last-child {
+                                margin-left: 20px;
                             }
                         }
                     }

+ 1 - 5
src/main/webapp/static/mweixin/keyword-list.less

@@ -1,5 +1 @@
-@import "../ms-admin/4.7.0/less/app.less";
-// 关键字列表
-.keyword-list{
-    padding:14px;
-}
+@import "../ms-admin/4.7.0/less/app.less";

+ 9 - 9
src/main/webapp/static/mweixin/keyword-reply.less

@@ -1,25 +1,25 @@
 @import "../ms-admin/4.7.0/less/app.less";
 // 关键字回复
 .keyword-reply {
-    padding-bottom:20px;
+    padding-bottom: 20px;
     .el-select .el-input {
-        width: 90px; 
+        width: 90px;
         >input {
             padding: 0 10px !important;
         }
     }
     // 关键词 
-    .ms-keyword-input{
+    .ms-keyword-input {
         margin-bottom: 15px !important;
         // 尾词 
-        .el-input__suffix{
+        .el-input__suffix {
             line-height: 28px;
         }
         // 添加
-        .el-icon-plus{
-            margin-left:20px;
-            .ms-font(@defalutSize,@themeColor,bold);
-            &:hover{
+        .el-icon-plus {
+            margin-left: 20px;
+            .ms-font(@defalutSize, @themeColor, bold);
+            &:hover {
                 cursor: pointer;
             }
         }
@@ -54,7 +54,7 @@
             textarea {
                 height: 127px !important;
                 border: none !important;
-                border-bottom: 1px solid @borderColor  !important;
+                border-bottom: 1px solid @borderColor !important;
             }
             .footer {
                 height: 58px;

+ 1 - 1
src/main/webapp/static/mweixin/material-bank-form.less

@@ -7,7 +7,7 @@
             >.el-dialog__body{
                 .ms-width-height(100%,469px) !important;
                 padding:0 !important; 
-                >.el-tabs{
+                >.el-tabs{ 
                     height: 100%;
                     // 侧边导航
                     .el-tabs__header{

+ 3 - 2
src/main/webapp/static/mweixin/material-list.less

@@ -25,10 +25,11 @@
             line-height: 2em;
             span {
                 .ms-ellipsis;
+                .ms-hover;
             }
             img {
                 .ms-width-height(170px, 110px);
-                margin: 0.5em auto;
+                margin: 0 auto;
                 object-fit: cover;
             }
             p {
@@ -43,7 +44,7 @@
             i {
                 color: @contentColor;
                 margin: auto;
-                cursor: pointer;
+                .ms-hover;
             }
             em {
                 .ms-width-height(1px, 1em);

+ 4 - 0
src/main/webapp/static/mweixin/menu.less

@@ -27,6 +27,10 @@
         .ms-admin-menu-menu {
             min-height: ~'calc(100vh - 50px)';
             background: #fff;
+            .el-menu-item{
+                min-width: 140px;
+                width: 140px;
+            }
         }
         .ms-admin-material-item {
             min-width: 100% !important;

+ 38 - 31
src/main/webapp/static/mweixin/message-reply.less

@@ -1,72 +1,79 @@
 @import "../ms-admin/4.7.0/less/app.less";
+.ms-admin-message-reply {
+    .ms-container {
+        display: flex;
+        .message-reply-tabs {
+            padding-left: 12px;
+        }
+    }
+}
+
 // 消息回复 && 关注回复
-.ms-message-reply{
+.ms-message-reply {
     .ms-flex(flex-start);
-    padding:20px;
-    height: 267px; 
-    >div:first-child{
-        margin-right:10px;
-        line-height: 40px; 
+    height: auto;
+    >div:first-child {
+        margin-right: 10px;
+        line-height: 40px;
     }
     // 导航切换 
-    .message-reply-tabs{
+    .message-reply-tabs {
         flex: 1;
-        border-radius:4px 4px 0 0 !important;
+        border-radius: 4px 4px 0 0 !important;
         border: none !important;
-        .el-tabs__header{
+        .el-tabs__header {
             // background: #f2f2f6;
             margin: 0 !important;
-            .el-tabs__nav-scroll{
+            .el-tabs__nav-scroll {
                 padding: 0 20px;
-                border:1px solid @borderColor;
+                border: 1px solid @borderColor;
             }
         }
-        .el-tabs__content{
-            border:1px solid @borderColor;
-            .el-tab-pane{
+        .el-tabs__content {
+            border: 1px solid @borderColor;
+            .el-tab-pane {
                 padding: 0 !important;
                 width: 100%;
                 .ms-flex();
-                >.el-form{
+                >.el-form {
                     width: 100%;
-                    .ms-message-reply-content{
+                    .ms-message-reply-content {
                         margin: 0;
-                        .el-form-item__content{
+                        .el-form-item__content {
                             position: relative;
-                            .el-icon-delete{
+                            .el-icon-delete {
                                 position: absolute;
-                                right: 5px;
+                                right: 7px;
                                 bottom: 66px;
-                                .ms-font(@auxiliarySize,@auxiliaryColor);
-                                &:hover{
-                                    cursor: pointer;
-                                }
+                                .ms-font(@auxiliarySize, @auxiliaryColor);
+                                .ms-hover;
                             }
-                            textarea{
+                            textarea {
                                 height: 127px !important;
                                 border: none !important;
                                 border-bottom: 1px solid @borderColor !important;
                             }
-                            .footer{
+                            .footer {
                                 height: 58px;
                                 padding: 0 14px;
                                 .ms-flex(flex-start);
                                 align-items: center;
-                                i{
+                                i {
                                     margin-right: 12px;
                                     font-size: 16px;
+                                    .ms-hover;
                                 }
-                                a{
-                                    .ms-font(@defalutSize,@themeColor);
+                                a {
+                                    .ms-font(@defalutSize, @themeColor);
                                 }
-                                i,a{
-                                    &:hover{
+                                i,
+                                a {
+                                    &:hover {
                                         cursor: pointer;
                                     }
                                 }
                             }
                         }
-                        
                     }
                 }
             }

+ 1 - 1
src/main/webapp/static/mweixin/new-pic-form.less

@@ -11,5 +11,5 @@
     dt{
         display: inline-block;
         margin-bottom: 8px;
-    }
+    } 
 }

+ 68 - 24
src/main/webapp/static/mweixin/picture-list.less

@@ -1,46 +1,90 @@
 @import "../ms-admin/4.7.0/less/app.less";
+.ms-admin-picture {
+    height: 100%;
+}
+
+//图片列表
 .ms-admin-picture-list {
     background: #fff;
     .ms-margin-padding(12px, 14px);
     display: flex;
-    flex-wrap: wrap;
     //单个素材
     .ms-admin-picture-item {
-        .ms-margin-padding(0 24px 0 0, 10px 10px 0 10px);
-        width: 230px;
         display: flex;
-        flex-direction: column;
-        border: 1px solid #e6e6e6;
-        border-radius: 4px;
-        .body {
+        flex-wrap: wrap;
+        align-items: flex-start;
+        width: ~'calc(100% - 220px)' !important;
+        &>div {
+            .ms-margin-padding(0 24px 0 0, 10px 10px 0 10px);
+            width: 230px;
             display: flex;
             flex-direction: column;
-            line-height: 2em;
-            div {
-                margin-top: 0.5em;
+            border: 1px solid #e6e6e6;
+            border-radius: 4px;
+            .body {
                 display: flex;
-                align-items: center;
-                span {
-                    .ms-ellipsis;
+                flex-direction: column;
+                line-height: 2em;
+                div {
+                    margin-top: 0.5em;
+                    display: flex;
+                    align-items: center;
+                    span {
+                        .ms-ellipsis;
+                        .ms-hover;
+                    }
+                }
+                img {
+                    .ms-width-height(100%, 130px);
+                    object-fit: cover;
                 }
             }
-            img {
-                .ms-width-height(100%, 110px);
-                object-fit: cover;
+            .footer {
+                display: flex;
+                padding: 14px 0;
+                i {
+                    color: @contentColor;
+                    margin: auto;
+                    .ms-hover;
+                }
+                em {
+                    .ms-width-height(1px, 1em);
+                    background: #e6e6e6;
+                }
             }
         }
-        .footer {
+    }
+    .ms-admin-picture-show {
+        min-width: 220px;
+        height: 100%;
+        .ms-margin-padding(-14px 0, 14px);
+        border-left: 1px solid #e6e6e6;
+        &>span {
+            padding: 10px;
             display: flex;
-            padding: 14px 0;
+            background: #f2f2f6;
+            font-weight: bold;
+        }
+        &>div {
+            .ms-align-center;
+            padding: 10px;
+            font-size: 14px;
+            span {
+                margin-right: auto;
+            }
             i {
-                color: @contentColor;
-                margin: auto;
+                .ms-hover;
+                margin-left: 10px;
                 cursor: pointer;
             }
-            em {
-                .ms-width-height(1px, 1em);
-                background: #e6e6e6;
-            }
+        }
+        &>p {
+            margin: 0;
+            padding: 10px;
+            border: 1px solid #e6e6e6;
+            .ms-flex(center);
+            align-items: center;
+            .ms-hover;
         }
     }
 }