Преглед изворни кода

Merge branch '4.7.0' of https://gitee.com/mingSoft/MCMS.git into 4.7.0

a123456 пре 6 година
родитељ
комит
1dca637151

+ 1 - 1
README.md

@@ -1,2 +1,2 @@
 # 温馨提示,请使用master分支
-当前版本:4.7.0 开发版本极其不稳定,如有使用概不解答,请耐心等待稳定版本的发布,<br/>
+当前版本:4.7.0 开发版本极其不稳定,如有使用概不解答,请耐心等待稳定版本的发布,<br/> 

+ 80 - 19
pom.xml

@@ -6,9 +6,9 @@
 
 	<groupId>net.mingsoft</groupId>
 	<artifactId>mcms</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
-	<name>mcms1</name>
-	<packaging>war</packaging>
+	<version>4.7.0-SNAPSHOT</version>
+	<name>ms-mcms</name>
+	<packaging>jar</packaging>
 	<properties>
 		<java.version>1.8</java.version>
 	</properties>
@@ -51,12 +51,6 @@
 		</dependency>
 		<dependency>
 			<groupId>net.mingsoft</groupId>
-			<artifactId>ms-basic</artifactId>
-			<version>1.0.8.1-SNAPSHOT</version>
-			<type>war</type>
-		</dependency>
-		<dependency>
-			<groupId>net.mingsoft</groupId>
 			<artifactId>ms-mdiy</artifactId>
 			<version>1.0.7-SNAPSHOT</version>
 			<classifier>classes</classifier>
@@ -64,27 +58,94 @@
 		</dependency>
 		<dependency>
 			<groupId>net.mingsoft</groupId>
-			<artifactId>ms-mdiy</artifactId>
-			<version>1.0.7-SNAPSHOT</version>
-			<type>war</type>
-		</dependency>
-		<dependency>
-			<groupId>net.mingsoft</groupId>
 			<artifactId>ms-mpeople</artifactId>
 			<version>1.0.7-SNAPSHOT</version>
 			<classifier>classes</classifier>
 			<scope>provided</scope>
 		</dependency>
+
+		<!-- swagger2接口文档依赖 -->
 		<dependency>
-			<groupId>net.mingsoft</groupId>
-			<artifactId>ms-mpeople</artifactId>
-			<version>1.0.7-SNAPSHOT</version>
-			<type>war</type>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger2</artifactId>
+			<version>2.9.2</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-core</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-beans</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-context</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-context-support</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-aop</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-tx</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-orm</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-jdbc</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-web</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-webmvc</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-oxm</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger-ui</artifactId>
+			<version>2.9.2</version>
 		</dependency>
 	</dependencies>
 	<build>
 		<finalName>ms-mcms</finalName>
 		<plugins>
+		    <!-- docker部署 
+		     
+			<plugin>
+				<groupId>com.spotify</groupId>
+				<artifactId>docker-maven-plugin</artifactId>
+				<version>1.2.0</version>
+				<configuration>
+					<dockerHost>http://localhost</dockerHost>
+					<imageName>ms-mcms</imageName>
+					<baseImage>java</baseImage>
+					<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
+					<resources>
+						<resource>
+							<targetPath>/</targetPath>
+							<directory>${project.build.directory}</directory>
+							<include>${project.build.finalName}.jar</include>
+						</resource>
+					</resources>
+				</configuration>
+			</plugin>
+			-->
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-compiler-plugin</artifactId>

+ 5 - 0
src/main/resources/Dockerfile

@@ -0,0 +1,5 @@
+FROM java
+VOLUME /tmp
+ADD docker-springboot-0.0.1-SNAPSHOT.jar app.jar
+RUN bash -c 'touch /app.jar' ENV JAVA_OPTS=""
+ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

+ 7 - 0
src/main/resources/application-pro.yml

@@ -0,0 +1,7 @@
+spring:
+  datasource:
+    url: jdbc:mysql://localhost:3306/db-mcms-open?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false
+    username: root
+    password: root
+    filters: wall,mergeStat
+    type: com.alibaba.druid.pool.DruidDataSource

+ 7 - 0
src/main/resources/application-test.yml

@@ -0,0 +1,7 @@
+spring:
+  datasource:
+    url: jdbc:mysql://localhost:3307/mcms-4.7.0?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false
+    username: root
+    password: root
+    filters: wall,mergeStat
+    type: com.alibaba.druid.pool.DruidDataSource

+ 1 - 1
src/main/resources/application.yml

@@ -22,7 +22,7 @@ ms:
       
 spring:
   profiles:
-    active: dev
+    active: test
   mvc:
     pathmatch: 
      use-suffix-pattern: true

+ 4 - 0
src/main/webapp/WEB-INF/manager/include/head-file.ftl

@@ -24,6 +24,10 @@
     <script type="text/javascript" charset="utf-8" src="http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/ueditor.config.js"></script>
     <script type="text/javascript" charset="utf-8" src="http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/ueditor.all.js"></script>
     <script type="text/javascript" charset="utf-8" src="http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/lang/zh-cn/zh-cn.js"></script>
+
+    <!-- 拖拽 -->
+    <script src="//cdn.jsdelivr.net/npm/sortablejs@1.7.0/Sortable.min.js"></script>
+    <script src="//cdnjs.cloudflare.com/ajax/libs/Vue.Draggable/2.17.0/vuedraggable.min.js"></script>
     
     <!-- <link rel="stylesheet" href="${base}/static/ms-admin/4.7.0/css/login.css"> -->
     <!-- <link rel="stylesheet" href="${base}/static/mweixin/css/custom-menu.css"> -->

+ 34 - 28
src/main/webapp/WEB-INF/manager/mweixin/article/index.ftl

@@ -1,16 +1,6 @@
 <!-- 新建图文 -->
-<!--#include virtual="../../include/head-file.ftl" -->
-<script src="//cdn.jsdelivr.net/npm/sortablejs@1.7.0/Sortable.min.js"></script>
-<script src="//cdnjs.cloudflare.com/ajax/libs/Vue.Draggable/2.17.0/vuedraggable.min.js"></script>
 <link rel="stylesheet" href="../../../../static/mweixin/css/article.css">
-<!--jquery-->
-<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
-<script type="text/javascript" charset="utf-8" src="http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/ueditor.parse.js"></script>
-<script type="text/javascript" charset="utf-8" src="http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/ueditor.config.js"></script>
-<script type="text/javascript" charset="utf-8" src="http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/ueditor.all.js"></script>
-<script type="text/javascript" charset="utf-8" src="http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/lang/zh-cn/zh-cn.js"></script>
-<!-- v-if="menuVue.menuActive == '新建图文'" -->
-<div id='article' class="ms-article ms-container">
+<div id='article' class="ms-article ms-container" v-show="menuVue.menuActive == '新建图文'">
     <el-container>
         <el-aside width="280px">
             <div class="ms-main-article">
@@ -30,23 +20,33 @@
         </el-aside>
         <el-main>
             <div class="ms-main-header">
-                <el-upload class="ms-pic-uploader" :show-file-list="false">
+                <el-upload class="ms-pic-upload" :show-file-list="false">
                     <img v-if="false" :src="false" class="avatar">
-                    <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                    <i v-else class="el-icon-picture"></i>
+                    <span>添加封面</span>
                 </el-upload>
-                <el-form>
-                    <el-form-item label="标题" prop="name">
-                        <el-input size='mini' placeholder="请输入图文标题">
+                <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="region">
-                        <el-input size='mini' placeholder="请输入图文作者">
+                    <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="region">
-                        <el-input size='mini' type='textarea' placeholder="选填,如果不写会默认抓取正文前54个字">
+                    <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>
@@ -77,13 +77,15 @@
                 basicTitle: '没有奇迹,国足0-3不敌伊朗止步八强!',
                 basicThumbnailsl: 'https://img03.sogoucdn.com/app/a/100520091/20190125113148'
             }],
-            titleWordNumber: '', //图文标题剩余字数
-            authorWordNumber: '', //图文作者剩余字数
+            titleWordNumber: 64, //图文标题剩余字数
+            authorWordNumber: 8, //图文作者剩余字数
+            descWordNumber:54,//摘要
             editor: null, //富文本实例
-        },
-        watch: {
-            subArticleList: function (n, o) {
-                console.log('n', n);
+            articleForm:{
+                basicTitle:'',//标题
+                articleAuthor:'',//作者
+                basicDescription:'', //摘要
+                articleContent:'', //正文
             }
         },
         methods: {
@@ -93,6 +95,10 @@
                     basicTitle: '新增文章标题',
                     basicThumbnailsl: 'https://img03.sogoucdn.com/app/a/100520091/20190125113148'
                 })
+            },
+            // 计算剩余字数
+            resetWordNum:function(type){
+               
             }
         },
         mounted: function () {
@@ -122,8 +128,8 @@
                     zIndex: 10000,
                     elementPathEnabled: false,
                     wordCount: false,
-                    initialFrameWidth: 600,
-                    initialFrameHeight: 240,
+                    initialFrameWidth: '100%',
+                    initialFrameHeight: 500,
                 });
                 this.editor.ready(function () {
                     var a = $("#ueditor_0").contents()[0].activeElement;

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

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

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

@@ -33,11 +33,11 @@
                      <el-tab-pane label="图片" name="picture">
                         <span slot="label">
                            <i class="el-icon-picture"></i>图片</span>
-                        <div @click="open('store')">
+                        <div onclick="materialBankFormVue.open()">
                            <i class="el-icon-picture-outline"></i>
                            <span>从素材库选择</span>
                         </div>
-                        <div @click="open('new')">
+                        <div onclick="newPicFormVue.open()">
                            <i class="el-icon-plus"></i>
                            <span>新建图片</span>
                         </div>
@@ -78,13 +78,7 @@
          activeName: 'picture'
       },
       methods: {
-         open: function(type) {
-            if(type == 'store') {
-               // 素材库
-            } else {
-               // 新建图片
-            }
-         }
+         
       }
 
    })

+ 92 - 0
src/main/webapp/WEB-INF/manager/mweixin/menu/material-bank-form.ftl

@@ -0,0 +1,92 @@
+<!-- 素材库 -->
+<link rel="stylesheet" href="../../../../static/mweixin/css/material-bank-form.css">
+<div id="material-bank-form" class="material-bank-form">
+    <el-dialog title="选择图片" :visible.sync="isShow" custom-class='ms-weixin-dialog'>
+        <el-tabs tab-position="left">
+            <el-tab-pane :label="group.label + '('+group.total+')'" v-for='(group,index) of materialGroup' :key='index'>
+                <el-upload :file-list='fileList' action="" list-type="picture-card" :on-preview="handlePictureCardPreview"
+                    :on-remove="handleRemove">
+                    <i class="el-icon-plus"></i>
+                </el-upload>
+                <el-dialog :visible.sync="dialogVisible" :modal='false' :title='flieName' custom-class='ms-weixin-dialog'>
+                    <!-- 这是图片放大 -->
+                    <img width="100%" :src="dialogImageUrl" alt="">
+                </el-dialog>
+                <el-row type='flex' justify='end'>
+                    <el-col :span='11'>
+                            <el-pagination 
+                            @size-change="handleSizeChange" 
+                            background
+                            :pager-count="1"
+                            @current-change="handleCurrentChange" 
+                            :current-page.sync="currentPage" 
+                            :page-size="10" 
+                            layout="prev, pager, next, jumper" 
+                            :total="50">
+                        </el-pagination>
+                    </el-col>
+                </el-row>
+            </el-tab-pane>
+        </el-tabs>
+        <div slot="footer" class="dialog-footer">
+            <el-button type="primary" @click="isShow = false" size='mini'>确 定</el-button>
+            <el-button @click="isShow = false" size='mini'>取 消</el-button>
+        </div>
+    </el-dialog>
+</div>
+<script>
+    var materialBankFormVue = new Vue({
+        el: '#material-bank-form',
+        data: {
+            isShow: false,
+            materialGroup: [{
+                    label: '未分组',
+                    total:36,
+                },
+                {
+                    label: '云创',
+                    total:12,
+                },
+                {
+                    label: 'PM管理',
+                    total:16,
+                },
+            ],
+            fileList: [], //文件列表
+            dialogImageUrl: '',//点击放大,触发弹窗里面的图片地址
+            dialogVisible: false,
+            flieName:"",//放大图片的文件名
+            currentPage:'',//当前页数
+        },
+        watch:{
+            fileList:{
+                handler:function(n,o){
+                    console.log('文件列表',n);
+            },
+                deep:true
+            }
+        },
+        methods: {
+            // 表单打开
+            open: function () {
+                this.isShow = true;
+            },
+            handlePictureCardPreview:function(file){
+                // 点击预览大图触发的钩子函数
+                console.log('file',file);
+                this.dialogVisible = true;
+                this.dialogImageUrl = file.url
+                this.flieName = file.name
+            },
+            handleRemove:function(){
+
+            },
+            handleSizeChange:function(){
+
+            },
+            handleCurrentChange:function(){
+
+            }
+        }
+    })
+</script>

+ 74 - 0
src/main/webapp/WEB-INF/manager/mweixin/menu/new-pic-form.ftl

@@ -0,0 +1,74 @@
+<!-- 新建图片表单 -->
+<link rel="stylesheet" href="../../../../static/mweixin/css/new-pic-form.css">
+<div id='new-pic-form' v-show='isShow' class="new-pic-form">
+    <el-dialog title="选择图片" :visible.sync="isShow" custom-class='ms-weixin-dialog'>
+        <el-form :model="newPicForm">
+            <el-form-item label="上传图片" label-width="100px">
+                    <el-upload
+                    class="new-pic-upload"
+                    :on-preview="handlePreview"
+                    :on-remove="handleRemove"
+                    :file-list="picList"
+                    list-type="picture">
+                    <el-button size="small" type="primary">本地上传</el-button>
+                    <div slot="tip" class="el-upload__tip">
+                        <dl>
+                            <dt>注意:1.图片上传仅支持bmp、png、jpeg、jpg、gif格式</dt>
+                            <dd>2.同步至微信公众平台的图片最大2M,存在铭飞本地,最大支持5M的图片</dd>
+                        </dl>
+                        
+                    </div>
+                  </el-upload>
+            </el-form-item>
+            <el-form-item label="选择分组" label-width="100px">
+                <el-button icon='el-icon-plus' size='mini'>添加分组</el-button>
+                <el-select v-model="selectedOption" placeholder="请选择分组" size='mini'>
+                    <el-option v-for="item in picGroup" :key="item.value" :label="item.label" :value="item.value">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+            <el-button @click="isShow = false" size='mini'>取 消</el-button>
+            <el-button type="primary" @click="isShow = false" size='mini'>确 定</el-button>
+        </div>
+    </el-dialog>
+</div>
+<script>
+var newPicFormVue = new Vue({
+    el: '#new-pic-form',
+    data: {
+        isShow: false,
+        newPicForm: {
+
+        },
+        picGroup: [{
+                value: 'default',
+                label: '默认分组'
+            }, {
+                value: 'yun',
+                label: '云创'
+            },
+            {
+                value: 'pm',
+                label: 'PM管理系统'
+            }],
+        selectedOption:'',//被选中的选项
+        picList:[],//图片列表
+    },
+    methods: {
+        // 表单打开
+        open: function () {
+            this.isShow = true;
+        },
+        // 图片刚加载完
+        handlePreview:function(){
+
+        },
+        // 图片删除
+        handleRemove:function(){
+
+        },
+    },
+})
+</script>

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

@@ -12,6 +12,9 @@
       <!--#include virtual="keyword/index.ftl" -->
       <!--#include virtual="keyword/form.ftl" -->
       <!--#include virtual="menu/index.ftl" -->
+      <!--#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>

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

@@ -96,4 +96,21 @@ textarea::-webkit-input-placeholder {
 
 .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 @borderColor;
+        .el-dialog__title{
+            .ms-font(@defalutSize,@defalutColor,bold);
+        }
+    }
+    .el-dialog__footer{
+        border-top: 1px solid @borderColor;
+        padding: 15px !important;
+    }
 }

+ 96 - 32
src/main/webapp/static/mweixin/article.less

@@ -1,77 +1,141 @@
 // 新建图文
 @import "../ms-admin/4.7.0/less/app.less";
-.ms-article{
+.ms-article {
     .ms-flex();
     width: 100%;
     background: transparent !important;
-    .el-container{
+    .el-container {
         // 侧边
-        .el-aside{
-            padding:14px;
-            background: #fff;
+        .el-aside {
+            padding: 14px;
+            background: #fff; 
+            height: 475px;
             // 主文章
-            .ms-main-article{
+            .ms-main-article {
                 position: relative;
-                img{
-                    .ms-width-height(100%,146px);
+                img {
+                    .ms-width-height(100%, 146px);
                 }
-                .ms-main-article-mask{
+                .ms-main-article-mask {
                     background: #000;
                     opacity: .2;
-                    .ms-width-height(100%,146px);
+                    .ms-width-height(100%, 146px);
                     position: absolute;
                     top: 0;
                     left: 0;
                 }
-                span{
+                span {
                     position: absolute;
                     bottom: 0;
                     padding: 15px;
                     color: #fff;
                     .ms-ellipsis-clamp(2);
                 }
-            }
-            // 子文章
-            .ms-article-item{
-                .ms-width-height(100%,70px);
+            } // 子文章
+            .ms-article-item {
+                .ms-width-height(100%, 70px);
                 .ms-flex();
-                padding:10px 0;
+                padding: 10px 0;
                 border-bottom: 1px solid @borderColor;
-                p{
+                p {
                     margin: 0 10px 0 0;
                     .ms-flex();
                     align-items: center;
-                    span{
+                    span {
                         width: 100%;
                         display: inline-block;
                         .ms-ellipsis-clamp(1);
                     }
                 }
-                img{
+                img {
                     .ms-width-height(50px);
                 }
-                &:hover{
+                &:hover {
                     cursor: pointer;
                 }
-            }
-            // 尾部
-            .ms-article-footer{
+            } // 尾部
+            .ms-article-footer {
                 background: #fff;
-                padding-top:20px;
-                .el-button{
+                padding-top: 20px;
+                .el-button {
                     width: 100%;
                     background: rgb(242, 242, 246);
-                    i,span{
-                    .ms-font(@auxiliarySize,@auxiliaryColor);
+                    i,
+                    span {
+                        .ms-font(@auxiliarySize, @auxiliaryColor);
                     }
                 }
             }
-        }
-        // 内容区域
-        .el-main{
-            flex:1;
-            background: #fff;
+        } // 内容区域
+        .el-main {
+            flex: 1;
             margin-left: 14px;
+            padding: 0 !important;
+            .ms-main-header {
+                background: #fff;
+                .ms-flex();
+                height: 180px;
+                padding: 20px;
+                padding-bottom: 24px;
+                box-sizing: border-box;
+                border-bottom: 1px solid @borderColor; // 图片上传
+                .ms-pic-upload {
+                    .ms-width-height(140px);
+                    border-radius: 4px;
+                    border: 1px dashed @borderColor;
+                    .ms-flex(center);
+                    flex-direction: column;
+                    margin-right: 20px;
+                    .el-upload {
+                        .ms-flex();
+                        flex-direction: column;
+                        align-items: center;
+                        span {
+                            .ms-font(@auxiliarySize, @auxiliaryColor);
+                            margin-top: 4px;
+                        }
+                        i {
+                            .ms-font(18px, @auxiliaryColor);
+                        }
+                    }
+                } // 表单
+                .el-form {
+                    flex: 1;
+                    margin: 0 !important;
+                    .ms-flex();
+                    flex-direction: column;
+                    .el-form-item {
+                        margin-bottom: 0 !important;
+                    }
+                    .el-input__suffix {
+                        top: -3px !important;
+                    }
+                }
+            }
+            .ms-main-body {
+                height: calc(~'100% - 180px');
+                background: #fff;
+                .edui-editor {
+                    height: 100%;
+                    .edui-editor-toolbarboxouter {
+                        background-color: none !important;
+                        background-image: none !important;
+                    } // 编辑器样式
+                    .edui-editor {
+                        border: none !important;
+                        .edui-editor-toolbarbox {
+                            box-shadow: none !important;
+                            .edui-editor-toolbarboxouter {
+                                background-color: transparent !important;
+                                background-image: none !important;
+                                border: none !important;
+                                border-radius: 0 !important;
+                                box-shadow: none !important;
+                            }
+                        }
+                    }
+                }
+            }
         }
     }
 }

+ 16 - 1
src/main/webapp/static/mweixin/css/app.css

@@ -22,7 +22,7 @@
 html,
 body {
   min-height: 100vh;
-  width: 100%;
+  width: 100vw;
   background-color: #eee;
   margin: 0;
   display: flex;
@@ -100,3 +100,18 @@ textarea::-webkit-input-placeholder {
 .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;
+}

+ 81 - 3
src/main/webapp/static/mweixin/css/article.css

@@ -22,7 +22,7 @@
 html,
 body {
   min-height: 100vh;
-  width: 100%;
+  width: 100vw;
   background-color: #eee;
   margin: 0;
   display: flex;
@@ -73,7 +73,7 @@ textarea::-webkit-input-placeholder {
 }
 .ms-container {
   margin: 12px;
-  height: 100%;
+  height: calc(100% - 24px);
   padding: 14px 14px 0 14px;
   background: #fff;
 }
@@ -97,6 +97,9 @@ textarea::-webkit-input-placeholder {
 .el-button + .el-button {
   margin-left: 0;
 }
+.ms-weixin-content {
+  width: calc(100% - 140px);
+}
 .ms-article {
   display: flex;
   justify-content: space-between;
@@ -106,6 +109,7 @@ textarea::-webkit-input-placeholder {
 .ms-article .el-container .el-aside {
   padding: 14px;
   background: #fff;
+  height: 475px;
 }
 .ms-article .el-container .el-aside .ms-main-article {
   position: relative;
@@ -180,6 +184,80 @@ textarea::-webkit-input-placeholder {
 }
 .ms-article .el-container .el-main {
   flex: 1;
-  background: #fff;
   margin-left: 14px;
+  padding: 0 !important;
+}
+.ms-article .el-container .el-main .ms-main-header {
+  background: #fff;
+  display: flex;
+  justify-content: space-between;
+  height: 180px;
+  padding: 20px;
+  padding-bottom: 24px;
+  box-sizing: border-box;
+  border-bottom: 1px solid #ddd;
+}
+.ms-article .el-container .el-main .ms-main-header .ms-pic-upload {
+  width: 140px;
+  height: 140px;
+  border-radius: 4px;
+  border: 1px dashed #ddd;
+  display: flex;
+  justify-content: center;
+  flex-direction: column;
+  margin-right: 20px;
+}
+.ms-article .el-container .el-main .ms-main-header .ms-pic-upload .el-upload {
+  display: flex;
+  justify-content: space-between;
+  flex-direction: column;
+  align-items: center;
+}
+.ms-article .el-container .el-main .ms-main-header .ms-pic-upload .el-upload span {
+  font-weight: initial;
+  font-size: 12px;
+  color: #999;
+  margin-top: 4px;
+}
+.ms-article .el-container .el-main .ms-main-header .ms-pic-upload .el-upload i {
+  font-weight: initial;
+  font-size: 18px;
+  color: #999;
+}
+.ms-article .el-container .el-main .ms-main-header .el-form {
+  flex: 1;
+  margin: 0 !important;
+  display: flex;
+  justify-content: space-between;
+  flex-direction: column;
+}
+.ms-article .el-container .el-main .ms-main-header .el-form .el-form-item {
+  margin-bottom: 0 !important;
+}
+.ms-article .el-container .el-main .ms-main-header .el-form .el-input__suffix {
+  top: -3px !important;
+}
+.ms-article .el-container .el-main .ms-main-body {
+  height: calc(100% - 180px);
+  background: #fff;
+}
+.ms-article .el-container .el-main .ms-main-body .edui-editor {
+  height: 100%;
+}
+.ms-article .el-container .el-main .ms-main-body .edui-editor .edui-editor-toolbarboxouter {
+  background-color: none !important;
+  background-image: none !important;
+}
+.ms-article .el-container .el-main .ms-main-body .edui-editor .edui-editor {
+  border: none !important;
+}
+.ms-article .el-container .el-main .ms-main-body .edui-editor .edui-editor .edui-editor-toolbarbox {
+  box-shadow: none !important;
+}
+.ms-article .el-container .el-main .ms-main-body .edui-editor .edui-editor .edui-editor-toolbarbox .edui-editor-toolbarboxouter {
+  background-color: transparent !important;
+  background-image: none !important;
+  border: none !important;
+  border-radius: 0 !important;
+  box-shadow: none !important;
 }

+ 160 - 0
src/main/webapp/static/mweixin/css/material-bank-form.css

@@ -0,0 +1,160 @@
+/*
+*这里的值严格按照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: #999;
+  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 14px 0 14px;
+  background: #fff;
+}
+.ms-header {
+  padding: 10px;
+  margin: 0;
+  border-bottom: 1px solid #ddd;
+  background: #fff;
+  height: 50px;
+}
+.ms-pagination {
+  padding: 20px 0;
+  text-align: right;
+}
+.ms-fr {
+  float: right;
+}
+.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;
+}
+.material-bank-form > .el-dialog__wrapper > .el-dialog {
+  width: 895px !important;
+  height: 587px !important;
+}
+.material-bank-form > .el-dialog__wrapper > .el-dialog > .el-dialog__body {
+  width: 100% !important;
+  height: 469px !important;
+  padding: 0 !important;
+}
+.material-bank-form > .el-dialog__wrapper > .el-dialog > .el-dialog__body > .el-tabs {
+  height: 100%;
+}
+.material-bank-form > .el-dialog__wrapper > .el-dialog > .el-dialog__body > .el-tabs .el-tabs__header {
+  width: 150px !important;
+  box-sizing: border-box;
+  margin: 0 !important;
+}
+.material-bank-form > .el-dialog__wrapper > .el-dialog > .el-dialog__body > .el-tabs .el-tabs__header .el-tabs__nav-scroll {
+  padding: 20px 10px;
+}
+.material-bank-form > .el-dialog__wrapper > .el-dialog > .el-dialog__body > .el-tabs .el-tabs__header .el-tabs__nav-wrap::after {
+  width: 1px !important;
+}
+.material-bank-form > .el-dialog__wrapper > .el-dialog > .el-dialog__body > .el-tabs .el-tabs__content {
+  height: 100%;
+  box-sizing: border-box;
+  padding: 20px 20px 10px 20px;
+}
+.material-bank-form > .el-dialog__wrapper > .el-dialog > .el-dialog__body > .el-tabs .el-tabs__content .el-tab-pane {
+  height: 100%;
+  display: flex;
+  justify-content: space-between;
+  flex-direction: column;
+}
+.material-bank-form > .el-dialog__wrapper > .el-dialog > .el-dialog__body > .el-tabs .el-tabs__content .el-tab-pane > div:first-child {
+  flex: 1;
+}
+.material-bank-form > .el-dialog__wrapper > .el-dialog > .el-dialog__body > .el-tabs .is-active {
+  background-color: #e9eaf0;
+  font-weight: initial;
+  font-size: 14px;
+  color: #333;
+}

+ 131 - 0
src/main/webapp/static/mweixin/css/new-pic-form.css

@@ -0,0 +1,131 @@
+/*
+*这里的值严格按照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: #999;
+  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 14px 0 14px;
+  background: #fff;
+}
+.ms-header {
+  padding: 10px;
+  margin: 0;
+  border-bottom: 1px solid #ddd;
+  background: #fff;
+  height: 50px;
+}
+.ms-pagination {
+  padding: 20px 0;
+  text-align: right;
+}
+.ms-fr {
+  float: right;
+}
+.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;
+}
+.new-pic-form dl {
+  margin: 0;
+}
+.new-pic-form dd,
+.new-pic-form dt {
+  line-height: 1;
+  font-weight: initial;
+  font-size: 12px;
+  color: #999;
+}
+.new-pic-form dt {
+  display: inline-block;
+  margin-bottom: 8px;
+}

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

@@ -0,0 +1,48 @@
+@import "../ms-admin/4.7.0/less/app.less";
+// 素材库表单
+.material-bank-form{
+    >.el-dialog__wrapper{
+        >.el-dialog{
+            .ms-width-height(895px,587px) !important;
+            >.el-dialog__body{
+                .ms-width-height(100%,469px) !important;
+                padding:0 !important; 
+                >.el-tabs{
+                    height: 100%;
+                    // 侧边导航
+                    .el-tabs__header{
+                        width: 150px !important;
+                        box-sizing: border-box;
+                        margin: 0 !important;
+                        .el-tabs__nav-scroll{
+                            padding:20px 10px;
+                        }
+                        .el-tabs__nav-wrap::after{
+                            width: 1px !important;
+                        }
+                        
+                    }
+                    // 导航内容
+                    .el-tabs__content{
+                        height: 100%;
+                        box-sizing: border-box;
+                        padding:20px 20px 10px 20px; 
+                        .el-tab-pane{
+                            height: 100%;
+                            .ms-flex();
+                            flex-direction: column;
+                            >div:first-child{
+                                flex: 1;
+                            }
+                        }
+                    }
+                    // tab选中的样式
+                    .is-active{
+                       background-color:rgb(233, 234, 240);
+                       .ms-font(@defalutSize,@defalutColor);
+                    }
+                }
+            }
+        }
+    }
+}

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

@@ -0,0 +1,15 @@
+@import "../ms-admin/4.7.0/less/app.less";
+// 新建图片
+.new-pic-form{
+    dl{
+        margin: 0;
+    }
+    dd,dt{
+        line-height: 1;
+        .ms-font(@auxiliarySize,@auxiliaryColor);
+    }
+    dt{
+        display: inline-block;
+        margin-bottom: 8px;
+    }
+}