caichengyu 4 maanden geleden
bovenliggende
commit
c55cc9e907

+ 1 - 1
.env.pre

@@ -8,7 +8,7 @@ NODE_ENV = 'pre'
 # 预发布
 VUE_APP_BASE_API = 'https://devapi.gdzzkj.net/'
 VUE_APP_BASE_API_QP = 'https://attach.xyyxt.net'
-VUE_APP_IMG_API = 'https://file.xyyxt.net'
+VUE_APP_IMG_API = 'https://file.gdzckj.net'
 
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 3 - 3
.env.production

@@ -4,10 +4,10 @@ VUE_APP_TITLE = 加载中...
 # 生产环境配置
 NODE_ENV = 'production'
 
-# 中正云教育管理后台/生产环境'https://cloud.xyyxt.net/''https://admin.gdzckj.net'
-VUE_APP_BASE_API = 'https://cloud.xyyxt.net/'
+# 中正云教育管理后台/生产环境'https://cloud.xyyxt.net/''https://admin.gdzckj.net'    'https://file.xyyxt.net'
+VUE_APP_BASE_API = 'https://admin.gdzckj.net/'
 VUE_APP_BASE_API_QP = 'https://attach.xyyxt.net'
-VUE_APP_IMG_API = 'https://file.xyyxt.net'
+VUE_APP_IMG_API = 'https://file.gdzckj.net'
 
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

BIN
public/favicon.ico


BIN
src/assets/images/favicon.ico


BIN
src/assets/images/logo@2xSYT.png


BIN
src/assets/images/logo@2xSYT_old.png


+ 1 - 1
src/components/Editor/index.vue

@@ -81,7 +81,7 @@ export default {
             ["blockquote", "code-block"], // 引用  代码块
             [{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表
             [{ indent: "-1" }, { indent: "+1" }], // 缩进
-            [{ size: ["small", false, "large", "huge"] }], // 字体大小
+            [{ size: ['12', '16', '18', '20', '24', '28', '32', '36'] }], // 字体大小
             [{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
             [{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
             [{ align: [] }], // 对齐方式

+ 7 - 7
src/layout/components/Navbar.vue

@@ -51,18 +51,18 @@
             </div>
           </div>
           <div class="dialogSty">
-            <h2>v6.0.0</h2>
-            <p>1.第阶段完整版</p>
+            <h2>v7.0.0</h2>
+            <p>1.第阶段完整版</p>
           </div>
           <span slot="footer" class="dialog-footer">
             <el-button @click="dialogVisible = false">关 闭</el-button>
           </span>
         </el-dialog>
-        <screenfull id="screenfull" class="right-menu-item hover-effect" />
+        <!-- <screenfull id="screenfull" class="right-menu-item hover-effect" /> -->
 
-        <el-tooltip content="布局大小" effect="dark" placement="bottom">
+        <!-- <el-tooltip content="布局大小" effect="dark" placement="bottom">
           <size-select id="size-select" class="right-menu-item hover-effect" />
-        </el-tooltip>
+        </el-tooltip> -->
       </template>
       <el-dropdown
         class="avatar-container right-menu-item hover-effect"
@@ -76,9 +76,9 @@
           <router-link to="/user/profile">
             <el-dropdown-item>个人中心</el-dropdown-item>
           </router-link>
-          <el-dropdown-item @click.native="setting = true">
+          <!-- <el-dropdown-item @click.native="setting = true">
             <span>布局设置</span>
-          </el-dropdown-item>
+          </el-dropdown-item> -->
           <el-dropdown-item divided @click.native="logout">
             <span>退出登录</span>
           </el-dropdown-item>

+ 1 - 1
src/layout/components/Sidebar/Logo.vue

@@ -127,7 +127,7 @@ export default {
     width: 100%;
 
     & .sidebar-logo {
-      width: 37.4px;
+      width: 27.4px;
       height: 27px;
       vertical-align: middle;
       margin-right: 12px;

+ 39 - 0
src/newApi/notification.js

@@ -95,4 +95,43 @@ export default {
             data
         })
     },
+    //政策新闻列表
+    consultationlist(data) {
+        return request({
+            url: '/consultation/list',
+            method: 'get',
+            params: data
+        })
+    },
+    //政策新闻-新增
+    consultationsave(data) {
+        return request({
+            url: '/consultation/save',
+            method: 'post',
+            data
+        })
+    },
+    //政策新闻-详情
+    consultationdetails(data) {
+        return request({
+            url: `/consultation/details/` + data,
+            method: 'get',
+        })
+    },
+    //政策新闻-修改
+    consultationupdate(data) {
+        return request({
+            url: '/consultation/update',
+            method: 'post',
+            data
+        })
+    },
+    //政策新闻-删除/停用/启用
+    consultationdel(data) {
+        return request({
+            url: '/consultation/batch/del',
+            method: 'post',
+            data
+        })
+    },
 }

+ 21 - 1
src/newApi/ossUpload.js

@@ -10,7 +10,18 @@ export default {
             noToken: true,
         })
     },
-    //policy获取
+    //回调
+    uploadFileNoToken(url, data) {
+        return request({
+            url: url,
+            method: 'post',
+            data,
+            headers: {
+                isToken: false
+              },
+        })
+    },
+    //阿里云policy获取
     getPolicy(data) {
         return request({
             url: '/aliyun/oss/policy',
@@ -33,4 +44,13 @@ export default {
             method: 'get',
         })
     },
+    //腾讯云ocs上传文件
+    cosUpload(data) {
+        return request({
+            url: '/tengxun/cos/upload',
+            method: 'post',
+            // noToken: true,
+            data
+        })
+    },
 }

+ 1 - 1
src/router/index.js

@@ -158,7 +158,7 @@ export const constantRoutes = [
 ]
 
 export default new Router({
-  // base:'/system/',
+  base:'/system/',
   mode: 'history', // 去掉url中的#
   scrollBehavior: () => ({ y: 0 }),
   routes: constantRoutes

+ 1 - 1
src/settings.js

@@ -2,7 +2,7 @@ module.exports = {
   /**
    * 侧边栏主题 深色主题theme-dark,浅色主题theme-light
    */
-  sideTheme: 'theme-dark',
+  sideTheme: 'theme-light',
 
   /**
    * 是否系统布局配置

+ 1 - 1
src/store/modules/tagsView.js

@@ -2,7 +2,7 @@ import { MessageBox } from 'element-ui';
 const state = {
   visitedViews: [],
   cachedViews: [],
-  alertPage: ["CommodityManageMentAdd", "CommodityManageMentEdit", "FestivalAdd", "FestivalEdit", "ChapterAdd", "ChapterEdit", "ModuleManagementAdd", "ModuleManagementEdit", "BasicInfoEdit", "BasicInfoAdd", "ChapterContent", "EditCourse", "OrderDetail", "OrderPrice", "AddOrder", "EditPaper", "AddPaper", "TopicAddPaper", "ChapterVolumeManagementEdit", "ChapterVolumeManagementAdd", "VolumeManagementAdd", "VolumeManagementEdit", "HandoutListEdit", "HandoutListAdd", "StudentXQ", "AddClass", "ManageClass", "NotificationInfo", "NotificationListAdd", "NotificationEdit", "BulkImportPlan", "MatchInfoData", "BatchRecord", "OrderChargeInfo", "RefundDocument", "BillingBillCharges", "AddMockExam", "EditMockExam","RecordQusetion","CommoditySetTeacher"],
+  alertPage: ["CommodityManageMentAdd", "CommodityManageMentEdit", "FestivalAdd", "FestivalEdit", "ChapterAdd", "ChapterEdit", "ModuleManagementAdd", "ModuleManagementEdit", "BasicInfoEdit", "BasicInfoAdd", "ChapterContent", "EditCourse", "OrderDetail", "OrderPrice", "AddOrder", "EditPaper", "AddPaper", "TopicAddPaper", "ChapterVolumeManagementEdit", "ChapterVolumeManagementAdd", "VolumeManagementAdd", "VolumeManagementEdit", "HandoutListEdit", "HandoutListAdd", "StudentXQ", "AddClass", "ManageClass", "NotificationInfo", "NotificationListAdd", "NotificationEdit","ArticleListAdd", "ArticleEdit", "BulkImportPlan", "MatchInfoData", "BatchRecord", "OrderChargeInfo", "RefundDocument", "BillingBillCharges", "AddMockExam", "EditMockExam","RecordQusetion","CommoditySetTeacher"],
 }
 
 const mutations = {

+ 4 - 4
src/utils/request.js

@@ -8,11 +8,11 @@ import { paramMate } from "@/utils/common";
 
 axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
 // 创建axios实例
-export const baseURL = process.env.VUE_APP_BASE_API
-// export const baseURL = 'https://cloud.xyyxt.net/'
+// export const baseURL = process.env.VUE_APP_BASE_API
+export const baseURL = 'https://admin.gdzckj.net/'
 // export const baseURL = 'http://192.168.1.123:5030'
-export const BASE_IMG_URL = process.env.VUE_APP_IMG_API
-// export const BASE_IMG_URL = 'https://file.xyyxt.net'
+// export const BASE_IMG_URL = process.env.VUE_APP_IMG_API
+export const BASE_IMG_URL = 'https://file.gdzckj.net'
 const service = axios.create({
   // axios中请求配置有baseURL选项,表示请求URL公共部分
   baseURL: baseURL, 

+ 22 - 1
src/utils/uploadFile.js

@@ -1,9 +1,11 @@
 import api from '@/api/api'
+import * as baseUrls from "@/utils/request.js";
 import { readImg, compressImg } from "./compress"
 export default {
+    //阿里云oss上传文件
     // 上传图片标识 0头像 1身份证 2题库 3指南指引图片 4广告图片 5身份证或学信网图片 6文件excel,word,zip等
     //file: 类似this.$refs.file.files[0]
-    upload: function (file, int) {
+    upload_aliyun: function (file, int) {
         return new Promise((resolve, reject) => {
             // const img = await readImg(file)
             // const blob = await compressImg(img, file.type, 256, 256)
@@ -38,4 +40,23 @@ export default {
         })
 
     },
+    // 腾讯云ocs上传文件
+    // 上传图片标识 0头像 1身份证 2题库 3指南指引图片 4广告图片 5身份证或学信网图片 6文件excel,word,zip等
+    //file: 类似this.$refs.file.files[0]
+    upload: function (file, int) {
+        return new Promise((resolve, reject) => {
+            let formData = new FormData()
+            formData.append('imageStatus', 14); 
+            formData.append("file", file);
+           
+            api.uploadFileNoToken(baseUrls.baseURL+'tengxun/cos/upload',formData).then(ress => {
+                
+                resolve(ress.data)
+
+            }).catch(err => {
+                reject(err)
+            })
+        })
+
+    },
 }

+ 1 - 1
src/views/Marketing/clientSetup/pageSet/page2.vue

@@ -183,7 +183,7 @@ export default {
   methods: {
     img(int) {
       this.imageUrl =
-        "https://file.xyyxt.net/oss/images/avatar/20231024/1698114087361/1698114087361_116026492";
+        "https://file.gdzckj.net//cos/images/tupain/1744698764810.png";
       this.$nextTick(() => {
         this.$refs.el_image.clickHandler();
       });

+ 1 - 1
src/views/Marketing/goods/commodityManageMent/edit/courseContent/index.vue

@@ -288,7 +288,7 @@ export default {
     copyShowStatus() {
       return (
         this.listData.goodsType === 1 &&
-        sessionStorage.getItem("TenantId") == "867735392558919680"
+        sessionStorage.getItem("TenantId") == "1"
       );
     },
     compayTypes: function () {

+ 2 - 2
src/views/Marketing/goods/commodityManageMent/index.vue

@@ -421,7 +421,7 @@ export default {
         {
           label: "同步时间",
           prop: "copyTime",
-          hidden: sessionStorage.TenantId == 867735392558919680,
+          hidden: sessionStorage.TenantId == 1,
           scope: "copyTime",
         },
       ],
@@ -750,7 +750,7 @@ export default {
   },
   computed: {
     isShowCopy() {
-      return true;// sessionStorage.TenantId == "867735392558919680";
+      return true;// sessionStorage.TenantId == "1";
     },
   },
 };

+ 294 - 0
src/views/education/articleManageMent/articleList/add/index.vue

@@ -0,0 +1,294 @@
+<template>
+    <div id="articleListAdd">
+      <el-row :gutter="20">
+        <el-col :span="16">
+          <el-form
+            :model="listData"
+            :rules="rules"
+            ref="listData"
+            label-width="160px"
+            class="demo-ruleForm"
+          >
+            <el-form-item label="新闻分类:" prop="type">
+              <el-select
+                v-model="listData.type"
+                placeholder="请选择新闻分类"
+              >
+                <el-option label="开班消息" :value="3"></el-option>
+                <el-option label="政策法规" :value="1"></el-option>
+                <el-option label="通知通告" :value="2"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="新闻标题:" prop="title">
+              <el-input v-model="listData.title"></el-input>
+            </el-form-item>
+            <el-form-item label="状态:" prop="status">
+              <el-radio-group v-model="listData.status">
+                <el-radio :label="1">正常</el-radio>
+                <el-radio :label="0">停用</el-radio>
+              </el-radio-group>
+            </el-form-item>
+            <el-form-item label="排序:" prop="sort">
+              <el-input v-model="listData.sort"></el-input>
+            </el-form-item>
+            <el-form-item label="新闻内容:" prop="titleContent">
+              <editor
+                v-model="listData.titleContent"
+                :min-height="150"
+                :max-height="500"
+                :uploadStatus="uploadStatus"
+              />
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <el-col :span="24" style="text-align: center; margin-top: 14px">
+          <el-button @click="backPage">取消</el-button>
+          <el-button type="primary" @click="submit('listData', 1)"
+            >保存</el-button
+          >
+        </el-col>
+      </el-row>
+    </div>
+  </template>
+  
+  <script>
+  import { mapGetters } from "vuex";
+  import Editor from "@/components/Editor";
+  export default {
+    name: "ArticleListAdd",
+    components: { Editor },
+    data() {
+      return {
+        listData: {
+          type: 1,
+          status: 0,
+          title: "",
+          sort: 100,
+          titleContent: "",
+        },
+        arrays: [],
+        loadingBox: true,
+        rules: {
+          type: [
+            { required: true, message: "请选择新闻分类", trigger: "change" },
+          ],
+          title: [
+            { required: true, message: "请输入新闻标题", trigger: "blur" },
+          ],
+          status: [
+            { required: true, message: "请选择状态", trigger: "change" },
+          ],
+          titleContent: [
+            { required: true, message: "请输入公告详情", trigger: "blur" },
+          ],
+        },
+        options: [],
+        uploadStatus: 2,
+      };
+    },
+    computed: {
+      compTimes: function () {
+        return function (aTime) {
+          let chasTime = this.$methodsTools.secondToDate(aTime, false);
+          return `00:00:00 - ${chasTime}`;
+        };
+      },
+    },
+    watch: {
+      
+    },
+    mounted() {
+      
+    },
+    methods: {
+    
+      //返回上一页
+      backPage() {
+        this.$store.dispatch("tagsView/delView", this.$route).then((res) => {
+          this.$router.push({
+            path: "articleList",
+          });
+        });
+      },
+      //表单验证
+      submit(formName, int) {
+        this.$refs[formName].validate((valid) => {
+          if (valid) {
+            this.submits();
+          } else {
+            console.log("error submit!!");
+            return false;
+          }
+        });
+      },
+      //验证通过提交处理
+      submits()  {
+          var data = this.listData;
+          this.$api.consultationsave(data).then((res) => {
+          this.$message.success("保存成功");
+          this.$store.dispatch("tagsView/exitView", this.$route).then((res) => {
+            this.$router.push({
+              path: "articleList",
+            });
+          });
+        });
+      },
+  
+    },
+  };
+  </script>
+  
+  <style lang="less" scoped>
+  .list-complete-enter, .list-complete-leave-to
+  /* .list-complete-leave-active for below version 2.1.8 */ {
+    opacity: 0;
+    transform: translateY(30px);
+  }
+  .list-complete-leave-active {
+    position: absolute;
+  }
+  .ul_styHide {
+    max-height: 146px;
+    overflow: auto;
+    padding-right: 20px;
+  }
+  .liStyle_people {
+    background-color: #fff;
+    margin-right: 6px;
+    margin-bottom: 6px;
+    float: left;
+    border: 1px solid #999;
+    padding: 0px 10px;
+    font-size: 14px;
+    border-radius: 8px;
+    height: 30px;
+    color: #666;
+    line-height: 30px;
+    user-select: none;
+    transition: all 0.6s;
+    cursor: pointer;
+    overflow: hidden;
+    position: relative;
+    &:hover .iconStyle {
+      z-index: 1;
+      display: block;
+    }
+  }
+  .iconStyle {
+    display: none;
+    position: absolute;
+    top: 0;
+    right: 0;
+    text-align: center;
+    color: #f56c6c;
+    width: 100%;
+    line-height: 30px;
+    height: 100%;
+    background-color: rgba(0, 0, 0, 0.6);
+  }
+  /deep/ .filter-tree {
+    max-height: 600px;
+    overflow-y: auto;
+  }
+  ul {
+    margin: 0px;
+  }
+  .sharks {
+    word-wrap: break-word;
+  }
+  .dis_flex {
+    display: flex;
+    align-items: center;
+    flex-wrap: wrap;
+  }
+  /deep/.el-button {
+    border-radius: 8px;
+  }
+  /deep/.el-dialog {
+    border-radius: 8px;
+    .el-dialog__header {
+      padding: 0;
+      .hearders {
+        height: 40px;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        padding: 0px 18px 0px 20px;
+        border-bottom: 1px solid #e2e2e2;
+        .leftTitle {
+          font-size: 14px;
+          font-weight: bold;
+          color: #2f4378;
+        }
+        .rightBoxs {
+          display: flex;
+          align-items: center;
+          img {
+            width: 14px;
+            height: 14px;
+            margin-left: 13px;
+            cursor: pointer;
+          }
+        }
+      }
+    }
+    .el-dialog__footer {
+      padding: 0;
+      .dialog-footer {
+        padding: 0px 40px;
+        height: 70px;
+        border-top: 1px solid #e2e2e2;
+        display: flex;
+        align-items: center;
+        justify-content: flex-end;
+      }
+    }
+  }
+  .imgBox {
+    width: 100%;
+    // height: 210px;
+    border: 1px solid #e2e2e2;
+    border-radius: 8px;
+    padding: 8px 8px 3px;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    .imgLabel {
+      flex: 1;
+      width: 100%;
+      border: 1px dotted #e2e2e2;
+      color: #999;
+      font-size: 14px;
+      cursor: pointer;
+      border-radius: 8px;
+      .msPhoto {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        max-width: 100%;
+        max-height: 270px;
+        img {
+          max-width: 100%;
+          max-height: 270px;
+        }
+      }
+      .imgbbx {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        width: 100%;
+        height: 100%;
+        i {
+          font-weight: bold;
+          margin: 14px 0;
+          font-size: 24px;
+        }
+      }
+    }
+    p {
+      margin: 5px 0px;
+    }
+  }
+  </style>
+  

+ 305 - 0
src/views/education/articleManageMent/articleList/edit/index.vue

@@ -0,0 +1,305 @@
+<template>
+    <div id="articleEdit">
+      <el-row :gutter="20">
+        <el-col :span="16">
+          <el-form
+            :model="listData"
+            :rules="rules"
+            ref="listData"
+            label-width="160px"
+            class="demo-ruleForm"
+          >
+            <el-form-item label="新闻分类:" prop="type">
+              <el-select
+                v-model="listData.type"
+                placeholder="请选择新闻分类"
+              >
+                <el-option label="开班消息" :value="3"></el-option>
+                <el-option label="政策法规" :value="1"></el-option>
+                <el-option label="通知通告" :value="2"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="新闻标题:" prop="title">
+              <el-input v-model="listData.title"></el-input>
+            </el-form-item>
+            <el-form-item label="状态:" prop="status">
+              <el-radio-group v-model="listData.status">
+                <el-radio :label="1">正常</el-radio>
+                <el-radio :label="0">停用</el-radio>
+              </el-radio-group>
+            </el-form-item>
+            <el-form-item label="排序:" prop="sort">
+              <el-input v-model="listData.sort"></el-input>
+            </el-form-item>
+            <el-form-item label="新闻内容:" prop="titleContent">
+              <editor
+                v-model="listData.titleContent"
+                :min-height="150"
+                :max-height="500"
+                :uploadStatus="uploadStatus"
+              />
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <el-col :span="24" style="text-align: center; margin-top: 14px">
+          <el-button @click="backPage">取消</el-button>
+          <el-button type="primary" @click="submit('listData', 1)"
+            >保存</el-button
+          >
+        </el-col>
+      </el-row>
+    </div>
+  </template>
+  
+  <script>
+  import { mapGetters } from "vuex";
+  import Editor from "@/components/Editor";
+  export default {
+    name: "ArticleEdit",
+    components: { Editor },
+    data() {
+      return {
+        listData: {
+          type: 1,
+          status: 0,
+          title: "",
+          sort: 100,
+          titleContent: "",
+        },
+        arrays: [],
+        loadingBox: true,
+        rules: {
+          type: [
+            { required: true, message: "请选择新闻分类", trigger: "change" },
+          ],
+          title: [
+            { required: true, message: "请输入新闻标题", trigger: "blur" },
+          ],
+          status: [
+            { required: true, message: "请选择状态", trigger: "change" },
+          ],
+          titleContent: [
+            { required: true, message: "请输入公告详情", trigger: "blur" },
+          ],
+        },
+        options: [],
+        uploadStatus: 2,
+      };
+    },
+    computed: {
+      compTimes: function () {
+        return function (aTime) {
+          let chasTime = this.$methodsTools.secondToDate(aTime, false);
+          return `00:00:00 - ${chasTime}`;
+        };
+      },
+    },
+    watch: {
+      
+    },
+    mounted() {
+        this.init();
+    },
+    methods: {
+      init(){
+        this.$api
+        .consultationdetails(this.$route.query.id )
+        .then((res) => {
+            this.listData = res.data;
+        })
+        .finally(() => {
+          this.$nextTick(() => {
+            this.$modal.closeLoading();
+          });
+        });
+      },
+      //返回上一页
+      backPage() {
+        this.$store.dispatch("tagsView/delView", this.$route).then((res) => {
+          this.$router.push({
+            path: "articleList",
+          });
+        });
+      },
+      //表单验证
+      submit(formName, int) {
+        this.$refs[formName].validate((valid) => {
+          if (valid) {
+            this.submits();
+          } else {
+            console.log("error submit!!");
+            return false;
+          }
+        });
+      },
+      //验证通过提交处理
+      submits()  {
+          var data = this.listData;
+          this.$api.consultationupdate(data).then((res) => {
+          this.$message.success("保存成功");
+          this.$store.dispatch("tagsView/exitView", this.$route).then((res) => {
+            this.$router.push({
+              path: "articleList",
+            });
+          });
+        });
+      },
+  
+    },
+  };
+  </script>
+  
+  <style lang="less" scoped>
+  .list-complete-enter, .list-complete-leave-to
+  /* .list-complete-leave-active for below version 2.1.8 */ {
+    opacity: 0;
+    transform: translateY(30px);
+  }
+  .list-complete-leave-active {
+    position: absolute;
+  }
+  .ul_styHide {
+    max-height: 146px;
+    overflow: auto;
+    padding-right: 20px;
+  }
+  .liStyle_people {
+    background-color: #fff;
+    margin-right: 6px;
+    margin-bottom: 6px;
+    float: left;
+    border: 1px solid #999;
+    padding: 0px 10px;
+    font-size: 14px;
+    border-radius: 8px;
+    height: 30px;
+    color: #666;
+    line-height: 30px;
+    user-select: none;
+    transition: all 0.6s;
+    cursor: pointer;
+    overflow: hidden;
+    position: relative;
+    &:hover .iconStyle {
+      z-index: 1;
+      display: block;
+    }
+  }
+  .iconStyle {
+    display: none;
+    position: absolute;
+    top: 0;
+    right: 0;
+    text-align: center;
+    color: #f56c6c;
+    width: 100%;
+    line-height: 30px;
+    height: 100%;
+    background-color: rgba(0, 0, 0, 0.6);
+  }
+  /deep/ .filter-tree {
+    max-height: 600px;
+    overflow-y: auto;
+  }
+  ul {
+    margin: 0px;
+  }
+  .sharks {
+    word-wrap: break-word;
+  }
+  .dis_flex {
+    display: flex;
+    align-items: center;
+    flex-wrap: wrap;
+  }
+  /deep/.el-button {
+    border-radius: 8px;
+  }
+  /deep/.el-dialog {
+    border-radius: 8px;
+    .el-dialog__header {
+      padding: 0;
+      .hearders {
+        height: 40px;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        padding: 0px 18px 0px 20px;
+        border-bottom: 1px solid #e2e2e2;
+        .leftTitle {
+          font-size: 14px;
+          font-weight: bold;
+          color: #2f4378;
+        }
+        .rightBoxs {
+          display: flex;
+          align-items: center;
+          img {
+            width: 14px;
+            height: 14px;
+            margin-left: 13px;
+            cursor: pointer;
+          }
+        }
+      }
+    }
+    .el-dialog__footer {
+      padding: 0;
+      .dialog-footer {
+        padding: 0px 40px;
+        height: 70px;
+        border-top: 1px solid #e2e2e2;
+        display: flex;
+        align-items: center;
+        justify-content: flex-end;
+      }
+    }
+  }
+  .imgBox {
+    width: 100%;
+    // height: 210px;
+    border: 1px solid #e2e2e2;
+    border-radius: 8px;
+    padding: 8px 8px 3px;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    .imgLabel {
+      flex: 1;
+      width: 100%;
+      border: 1px dotted #e2e2e2;
+      color: #999;
+      font-size: 14px;
+      cursor: pointer;
+      border-radius: 8px;
+      .msPhoto {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        max-width: 100%;
+        max-height: 270px;
+        img {
+          max-width: 100%;
+          max-height: 270px;
+        }
+      }
+      .imgbbx {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        justify-content: center;
+        width: 100%;
+        height: 100%;
+        i {
+          font-weight: bold;
+          margin: 14px 0;
+          font-size: 24px;
+        }
+      }
+    }
+    p {
+      margin: 5px 0px;
+    }
+  }
+  </style>
+  

+ 502 - 0
src/views/education/articleManageMent/articleList/index.vue

@@ -0,0 +1,502 @@
+<template>
+  <div id="articleList">
+    <search-box-new
+      ref="searchBox"
+      :formData="formData"
+      :formList="formList"
+      @search="search"
+      @init="init"
+    />
+    <table-list
+      rowKey="id"
+      ref="tableList"
+      :tableSets="tableSet"
+      :tableData="tableData"
+      :navText="navText"
+      @addClick="addClickFLs"
+      :loading="loading"
+      @editInfo="editInfo"
+    >
+      <template slot="customize">
+        <el-button :size="size" type="danger" @click="plDel">删除</el-button>
+       
+      </template>
+      <template slot="btn" slot-scope="props">
+        <el-button
+          type="text"
+          @click="editList(props.scope.row)"
+          >修改</el-button
+        >
+        
+        <el-button type="text" @click="del(props.scope.row)">删除</el-button>
+      </template>
+    </table-list>
+    <pagination
+      :total="total"
+      :pageSize="formData.pageSize"
+      :currentPage="formData.pageNum"
+      @handleSizeChange="handleSizeChange"
+      @handleCurrentChange="handleCurrentChange"
+    />
+  </div>
+</template>
+
+<script>
+import searchBoxNew from "@/components/searchBoxNew";
+import tableList from "@/components/tableList";
+import pagination from "@/components/pagination";
+export default {
+  name: "ArticleList",
+  components: { searchBoxNew, tableList, pagination },
+  data() {
+    return {
+      size: "medium",
+      loading: false, //当前表单加载是否加载动画
+      navText: {
+        title: "政策新闻列表",
+        index: 0,
+        ch: "条",
+        border: true,
+        num: true,
+        choice: true,
+        addHide: false,
+        openCheckMore: true,
+        backFatherBtn: {
+          status: false,
+          title: "未定义",
+        },
+      },
+      //搜索
+      formList: [
+        {
+          prop: "type",
+          placeholder: "新闻分类",
+          scope: "select",
+          options: [
+           {
+              label: "全部状态",
+              value: "",
+            },
+            {
+              label: "开班消息",
+              value: 3,
+            },
+            {
+              label: "政策法规",
+              value: 1,
+            },
+            {
+              label: "通知通告",
+              value: 2,
+            },
+          ],
+        },
+        {
+          prop: "status",
+          placeholder: "发布状态",
+          scope: "select",
+          options: [
+            {
+              label: "全部状态",
+              value: "0,1",
+            },
+            {
+              label: "已发布",
+              value: 1,
+            },
+            {
+              label: "已停用",
+              value: 0,
+            },
+          ],
+        },
+        {
+          prop: "title",
+          placeholder: "请输入新闻标题",
+        },
+      ],
+      formData: {
+        status: "",
+        pageSize: 10,
+        pageNum: 1,
+      },
+
+      // 表单
+      tableSet: [
+        {
+          label: "新闻标题",
+          prop: "title",
+          hidden: true,
+        },
+        {
+          label: "分类",
+          prop: "type",
+          hidden: true,
+          scope: "isOptions",
+          options: [
+          {
+              label: "开班消息",
+              value: 3,
+            },
+          {
+              label: "政策法规",
+              value: 1,
+            },
+            {
+              label: "通知通告",
+              value: 2,
+            },
+          ],
+        },
+        {
+          label: "发布状态",
+          prop: "status",
+          hidden: true,
+          scope: "isOptions",
+          options: [
+            {
+              label: "已发布",
+              value: 1,
+            },
+            {
+              label: "已停用",
+              value: 0,
+            },
+          ],
+        },
+        {
+          label: "创建时间",
+          prop: "createTime",
+          hidden: true,
+          scope: "aTimeList",
+        },
+        {
+          label: "最近更新时间",
+          prop: "updateTime",
+          hidden: true,
+          scope: "aTimeList",
+        },
+        {
+          label: "排序",
+          prop: "sort",
+          hidden: true,
+        },
+       
+      ],
+      tableData: [], //表单数据
+      total: 0, //一共多少条
+    };
+  },
+  mounted() {
+    this.search();
+  },
+  activated() {
+    this.search();
+  },
+  methods: {
+    editList(v) {
+      const jump = () => {
+        this.$router.push({
+          path: "articleEdit",
+          query: {
+            id: v.id,
+          },
+        });
+      };
+      const statusPage = this.$store.state.tagsView.visitedViews.some(
+        (item) => {
+          return item.name == "ArticleEdit";
+        }
+      );
+      if (statusPage) {
+        this.$store
+          .dispatch("tagsView/delCachedView", {
+            name: "ArticleEdit",
+          })
+          .then((res) => {
+            jump();
+          });
+      } else {
+        jump();
+      }
+    },
+    addClickFLs(v, int) {
+      if (v === undefined) {
+        this.$router.push({
+          path: "ArticleListAdd",
+        });
+      } else {
+        if (int === 0) {
+          const jump = () => {
+            this.$router.push({
+              path: "articleInfo",
+              query: {
+                id: v.informId,
+              },
+            });
+          };
+          const statusPage = this.$store.state.tagsView.visitedViews.some(
+            (item) => {
+              return item.name == "ArticleInfo";
+            }
+          );
+          if (statusPage) {
+            this.$store
+              .dispatch("tagsView/delCachedView", {
+                name: "ArticleInfo",
+              })
+              .then((res) => {
+                jump();
+              });
+          } else {
+            jump();
+          }
+        }
+        if (int === 6) {
+          const jump = () => {
+            this.$router.push({
+              path: "articleInfo",
+              query: {
+                id: v.informId,
+                active: 2,
+              },
+            });
+          };
+          const statusPage = this.$store.state.tagsView.visitedViews.some(
+            (item) => {
+              return item.name == "ArticleInfo";
+            }
+          );
+          if (statusPage) {
+            this.$store
+              .dispatch("tagsView/delCachedView", {
+                name: "ArticleInfo",
+              })
+              .then((res) => {
+                jump();
+              });
+          } else {
+            jump();
+          }
+        }
+      }
+    },
+    plDel() {
+      if (!this.$refs.tableList.allCheckData.length) {
+        this.$message.warning("请选择需要删除的新闻");
+        return;
+      }
+      var arst = this.$refs.tableList.allCheckData.map((item) => {
+        return item.id;
+      });
+      this.$alert(
+        "确定删除此内容?<br />内容删除后将无法恢复,请慎重考虑",
+        "提示",
+        {
+          dangerouslyUseHTMLString: true,
+        }
+      )
+        .then(() => {
+          var data = {
+            ids: arst,
+            status: -1,
+          };
+          this.$api.consultationdel(data).then((res) => {
+            this.$message.success("删除成功");
+            this.$refs.tableList.clearMoreActive();
+            this.search();
+          });
+        })
+        .catch(() => {
+          this.$message({
+            type: "info",
+            message: "已取消删除",
+          });
+        });
+    },
+    editInfo(v) {
+      this.addClickFLs(v, 6);
+    },
+    
+    search(int) {
+      this.loading = true;
+      if (int === 1) {
+        this.formData.pageNum = 1;
+      }
+      if (int === 2) {
+        this.formData = {
+          status: "",
+          pageSize: 10,
+          pageNum: 1,
+        };
+      }
+      this.$api
+        .consultationlist(this.formData)
+        .then((res) => {
+          this.tableData = res.rows;
+          this.total = res.total;
+          this.navText.index = res.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    init() {
+      this.search(2);
+    },
+    del(v) {
+      this.$alert(
+        "确定删除此内容?<br />内容删除后将无法恢复,请慎重考虑",
+        "提示",
+        {
+          dangerouslyUseHTMLString: true,
+        }
+      )
+        .then(() => {
+          var data = {
+            ids: [v.id],
+            status: -1,
+          };
+          this.$api.consultationdel(data).then((res) => {
+            this.$message.success("删除成功");
+            this.$refs.tableList.clearMoreActive();
+            this.search();
+          });
+        })
+        .catch(() => {
+          this.$message({
+            type: "info",
+            message: "已取消删除",
+          });
+        });
+    },
+    addClick(v, int) {
+      if (v === undefined) {
+        this.listData = {
+          status: 1,
+        };
+      } else {
+        this.listData = JSON.parse(JSON.stringify(v));
+      }
+      this.$nextTick(() => {
+        this.$refs.listData.clearValidate();
+      });
+      this.dialogVisible = true;
+    },
+    submit() {},
+    close() {
+      this.dialogVisible = false;
+    },
+    handleSizeChange(v) {
+      this.formData.pageSize = v;
+      this.formData.pageNum = 1;
+      this.search();
+    },
+    handleCurrentChange(v) {
+      this.formData.pageNum = v;
+      this.search();
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.custom-tree-node {
+  flex: 1;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 14px;
+  padding-right: 8px;
+}
+/deep/.el-button {
+  border-radius: 8px;
+}
+/deep/.el-dialog {
+  border-radius: 8px;
+  .el-dialog__header {
+    padding: 0;
+    .hearders {
+      height: 40px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding: 0px 18px 0px 20px;
+      border-bottom: 1px solid #e2e2e2;
+      .leftTitle {
+        font-size: 14px;
+        font-weight: bold;
+        color: #2f4378;
+      }
+      .rightBoxs {
+        display: flex;
+        align-items: center;
+        img {
+          width: 14px;
+          height: 14px;
+          margin-left: 13px;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+  .el-dialog__footer {
+    padding: 0;
+    .dialog-footer {
+      padding: 0px 40px;
+      height: 70px;
+      border-top: 1px solid #e2e2e2;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+    }
+  }
+}
+.imgBox {
+  width: 100%;
+  // height: 210px;
+  border: 1px solid #e2e2e2;
+  border-radius: 8px;
+  padding: 8px 8px 3px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  .imgLabel {
+    flex: 1;
+    width: 100%;
+    border: 1px dotted #e2e2e2;
+    color: #999;
+    font-size: 14px;
+    cursor: pointer;
+    border-radius: 8px;
+    .msPhoto {
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      max-width: 100%;
+      max-height: 270px;
+      img {
+        max-width: 100%;
+        max-height: 270px;
+      }
+    }
+    .imgbbx {
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+      width: 100%;
+      height: 100%;
+      i {
+        font-weight: bold;
+        margin: 14px 0;
+        font-size: 24px;
+      }
+    }
+  }
+  p {
+    margin: 5px 0px;
+  }
+}
+</style>
+

+ 13 - 9
src/views/login.vue

@@ -273,10 +273,11 @@ export default {
   display: flex;
   height: 100%;
   overflow: hidden;
+  background: url("../assets/images/loginPage/loginbg.png") no-repeat center;
   .login_Left {
     width: 100%;
-    min-width: 1920px;
-    background: url("../assets/images/left@2x.png") no-repeat center;
+    // min-width: 1920px;
+    // background: url("../assets/images/left@2x.png") no-repeat center;
     background-size: contain;
     overflow: hidden;
     .topName {
@@ -288,11 +289,13 @@ export default {
         vertical-align: bottom;
       }
       text-shadow: 0px 0px 3px rgba(41, 115, 255, 0.7);
-      position: absolute;
+     position: absolute;
       color: rgb(41, 115, 255);
       top: 50px;
-      left: 150px;
+      // left: 150px;
       font-size: 32px;
+      text-align: center;
+      width: 100%;
     }
     .anima1 {
       position: fixed;
@@ -330,7 +333,7 @@ export default {
     .anima4 {
       position: fixed;
       bottom: -350px;
-      left: 987px;
+      left: 1487px;
       width: 199px;
       height: 551px;
       background: url("../assets/images/mZ/4@2x.png");
@@ -341,7 +344,7 @@ export default {
     .anima5 {
       position: fixed;
       top: 200px;
-      left: 1289px;
+      left: 1389px;
       width: 85px;
       height: 236px;
       background: url("../assets/images/mZ/5@2x.png");
@@ -358,11 +361,11 @@ export default {
   }
   .login_divs {
     position: fixed;
-    right: 0;
-    top: 0;
+    right: 35%;
+    top: 20%;
     min-width: 500px;
     width: 574px;
-    height: 100%;
+    height: 620px;
     background-color: #4174ff;
     z-index: 1000;
     display: flex;
@@ -372,6 +375,7 @@ export default {
     .login_Right {
       width: 420px;
     }
+    border-radius: 30px;
   }
 }
 .textStys {

+ 9 - 13
src/views/loginnew.vue → src/views/loginold.vue

@@ -273,11 +273,10 @@ export default {
   display: flex;
   height: 100%;
   overflow: hidden;
-  background: url("../assets/images/loginPage/loginbg.png") no-repeat center;
   .login_Left {
     width: 100%;
-    // min-width: 1920px;
-    // background: url("../assets/images/left@2x.png") no-repeat center;
+    min-width: 1920px;
+    background: url("../assets/images/left@2x.png") no-repeat center;
     background-size: contain;
     overflow: hidden;
     .topName {
@@ -289,13 +288,11 @@ export default {
         vertical-align: bottom;
       }
       text-shadow: 0px 0px 3px rgba(41, 115, 255, 0.7);
-     position: absolute;
+      position: absolute;
       color: rgb(41, 115, 255);
       top: 50px;
-      // left: 150px;
+      left: 150px;
       font-size: 32px;
-      text-align: center;
-      width: 100%;
     }
     .anima1 {
       position: fixed;
@@ -333,7 +330,7 @@ export default {
     .anima4 {
       position: fixed;
       bottom: -350px;
-      left: 1487px;
+      left: 987px;
       width: 199px;
       height: 551px;
       background: url("../assets/images/mZ/4@2x.png");
@@ -344,7 +341,7 @@ export default {
     .anima5 {
       position: fixed;
       top: 200px;
-      left: 1389px;
+      left: 1289px;
       width: 85px;
       height: 236px;
       background: url("../assets/images/mZ/5@2x.png");
@@ -361,11 +358,11 @@ export default {
   }
   .login_divs {
     position: fixed;
-    right: 35%;
-    top: 20%;
+    right: 0;
+    top: 0;
     min-width: 500px;
     width: 574px;
-    height: 620px;
+    height: 100%;
     background-color: #4174ff;
     z-index: 1000;
     display: flex;
@@ -375,7 +372,6 @@ export default {
     .login_Right {
       width: 420px;
     }
-    border-radius: 30px;
   }
 }
 .textStys {

+ 1 - 1
vue.config.js

@@ -14,7 +14,7 @@ module.exports = {
   // 部署生产环境和开发环境下的URL。
   // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
   // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
-  publicPath: process.env.NODE_ENV === "production" ? "/" : "/",//system/
+  publicPath: process.env.NODE_ENV === "production" ? "/system/" : "/",//
   // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
   outputDir: 'dist',
   // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)