Browse Source

fiex:新需求优化

Tang 3 years ago
parent
commit
c988a33057

+ 2 - 2
src/components/tableList.vue

@@ -915,7 +915,7 @@
             }}
           </span>
           <div v-else-if="item.scope === 'changeCLS'">
-            <div v-if="scope.row[item.prop] === 1" style="color: red">
+            <div v-if="scope.row[item.prop] === 1" :style="scope.row['userUpdates'][0].createTime > scope.row['officialStatusTime'] ? 'color: purple':'color: red'">
               有变更
               <span
                 style="margin-left: 6px; color: blue; cursor: pointer"
@@ -1229,7 +1229,7 @@
         <template slot-scope="scope">
           {{
             scope.row.officialStatus === 1
-              ? `是(${scope.row.officialNum})`
+              ? `是(${scope.row.officialStatusNum})`
               : scope.row.officialStatus === 0
               ? "否"
               : ""

+ 8 - 7
src/components/version/index.vue

@@ -1,18 +1,19 @@
 <template>
-  <span><svg-icon class-name="size-icon" icon-class="redis" @click="openMsg" /></span>
+  <span>
+    <svg-icon class-name="size-icon" icon-class="redis" @click="openMsg" />
+  </span>
 </template>
 
 <script>
 export default {
   data() {
     return {
-    }
+    };
   },
   methods: {
-    openMsg(){
-      console.log(1)
+    openMsg() {
+      this.$emit('openMsg')
     },
-  }
-
-}
+  },
+};
 </script>

+ 200 - 52
src/layout/components/Navbar.vue

@@ -1,14 +1,23 @@
 <template>
   <div class="navbar">
-    <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
+    <hamburger
+      id="hamburger-container"
+      :is-active="sidebar.opened"
+      class="hamburger-container"
+      @toggleClick="toggleSideBar"
+    />
 
-    <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>
-    <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
+    <breadcrumb
+      id="breadcrumb-container"
+      class="breadcrumb-container"
+      v-if="!topNav"
+    />
+    <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav" />
 
     <div class="right-menu">
-      <template v-if="device!=='mobile'">
+      <template v-if="device !== 'mobile'">
         <search id="header-search" class="right-menu-item" />
-        
+
         <!-- <el-tooltip content="源码地址" effect="dark" placement="bottom">
           <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
         </el-tooltip>
@@ -17,19 +26,51 @@
           <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
         </el-tooltip> -->
         <el-tooltip content="版本说明" effect="dark" placement="bottom">
-          <version id="version" class="right-menu-item hover-effect" />
+          <version
+            id="version"
+            class="right-menu-item hover-effect"
+            @openMsg="openMsg"
+          />
         </el-tooltip>
+
+        <el-dialog
+          append-to-body
+          :visible.sync="dialogVisible"
+          width="560px"
+          :show-close="false"
+          :close-on-click-modal="false"
+        >
+          <div slot="title" class="hearders">
+            <div class="leftTitle">版本说明</div>
+            <div class="rightBoxs">
+              <img
+                src="@/assets/images/Close@2x.png"
+                alt=""
+                @click="dialogVisible = false"
+              />
+            </div>
+          </div>
+          <div class="dialogSty">
+            <h2>v1.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" />
 
         <el-tooltip content="布局大小" effect="dark" placement="bottom">
           <size-select id="size-select" class="right-menu-item hover-effect" />
         </el-tooltip>
-
       </template>
 
-      <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
+      <el-dropdown
+        class="avatar-container right-menu-item hover-effect"
+        trigger="click"
+      >
         <div class="avatar-wrapper">
-          <img :src="avatar" class="user-avatar">
+          <img :src="avatar" class="user-avatar" />
           <i class="el-icon-caret-bottom" />
         </div>
         <el-dropdown-menu slot="dropdown">
@@ -49,16 +90,16 @@
 </template>
 
 <script>
-import { mapGetters } from 'vuex'
-import Breadcrumb from '@/components/Breadcrumb'
-import TopNav from '@/components/TopNav'
-import Hamburger from '@/components/Hamburger'
-import Screenfull from '@/components/Screenfull'
-import SizeSelect from '@/components/SizeSelect'
-import version from '@/components/version'
-import Search from '@/components/HeaderSearch'
-import RuoYiGit from '@/components/RuoYi/Git'
-import RuoYiDoc from '@/components/RuoYi/Doc'
+import { mapGetters } from "vuex";
+import Breadcrumb from "@/components/Breadcrumb";
+import TopNav from "@/components/TopNav";
+import Hamburger from "@/components/Hamburger";
+import Screenfull from "@/components/Screenfull";
+import SizeSelect from "@/components/SizeSelect";
+import version from "@/components/version";
+import Search from "@/components/HeaderSearch";
+import RuoYiGit from "@/components/RuoYi/Git";
+import RuoYiDoc from "@/components/RuoYi/Doc";
 
 export default {
   components: {
@@ -70,68 +111,175 @@ export default {
     Search,
     RuoYiGit,
     RuoYiDoc,
-    version
+    version,
+  },
+  data() {
+    return {
+      dialogVisible: false,
+    };
   },
   computed: {
-    ...mapGetters([
-      'sidebar',
-      'avatar',
-      'device'
-    ]),
+    ...mapGetters(["sidebar", "avatar", "device"]),
     setting: {
       get() {
-        return this.$store.state.settings.showSettings
+        return this.$store.state.settings.showSettings;
       },
       set(val) {
-        this.$store.dispatch('settings/changeSetting', {
-          key: 'showSettings',
-          value: val
-        })
-      }
+        this.$store.dispatch("settings/changeSetting", {
+          key: "showSettings",
+          value: val,
+        });
+      },
     },
     topNav: {
       get() {
-        return this.$store.state.settings.topNav
-      }
-    }
+        return this.$store.state.settings.topNav;
+      },
+    },
   },
   methods: {
+    openMsg() {
+      this.dialogVisible = true;
+    },
     toggleSideBar() {
-      this.$store.dispatch('app/toggleSideBar')
+      this.$store.dispatch("app/toggleSideBar");
     },
     async logout() {
-      this.$confirm('确定注销并退出系统吗?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        this.$store.dispatch('LogOut').then(() => {
-          location.href = '/index';
+      this.$confirm("确定注销并退出系统吗?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          this.$store.dispatch("LogOut").then(() => {
+            location.href = "/index";
+          });
         })
-      }).catch(() => {});
-    }
-  }
-}
+        .catch(() => {});
+    },
+  },
+};
 </script>
 
 <style lang="scss" scoped>
+/deep/.el-button {
+  border-radius: 8px;
+}
+/deep/.el-dialog {
+  z-index: 9999;
+  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__body {
+    padding: 0px 20px;
+    max-height: 450px;
+    overflow: auto;
+    h2 {
+      font-weight: bold;
+      color: #333;
+      border-bottom: 2px dashed #000;
+      padding-bottom: 10px;
+    }
+  }
+  .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;
+  }
+}
 .navbar {
   height: 50px;
   overflow: hidden;
   position: relative;
   background: #fff;
-  box-shadow: 0 1px 4px rgba(0,21,41,.08);
+  box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
 
   .hamburger-container {
     line-height: 46px;
     height: 100%;
     float: left;
     cursor: pointer;
-    transition: background .3s;
-    -webkit-tap-highlight-color:transparent;
+    transition: background 0.3s;
+    -webkit-tap-highlight-color: transparent;
 
     &:hover {
-      background: rgba(0, 0, 0, .025)
+      background: rgba(0, 0, 0, 0.025);
     }
   }
 
@@ -168,10 +316,10 @@ export default {
 
       &.hover-effect {
         cursor: pointer;
-        transition: background .3s;
+        transition: background 0.3s;
 
         &:hover {
-          background: rgba(0, 0, 0, .025)
+          background: rgba(0, 0, 0, 0.025);
         }
       }
     }

+ 16 - 0
src/newApi/classTab.js

@@ -184,4 +184,20 @@ export default {
             data
         })
     },
+    //查询班级信息推送数量
+    inquireGradegradeofficialInfoCount(data) {
+        return request({
+            url: '/grade/grade/officialInfoCount',
+            method: 'get',
+            params: data
+        })
+    },
+    //查询班级学时推送数量
+    inquireGradegradeofficialPeriodCount(data) {
+        return request({
+            url: '/grade/grade/officialPeriodCount',
+            method: 'get',
+            params: data
+        })
+    },
 }

+ 14 - 4
src/views/education/classManageMent/classHours/index.vue

@@ -75,7 +75,7 @@
         <span
           style="font-size: 14px; margin: 0px 6px"
           v-if="statusShow.indexOf(2) !== -1"
-          >已推送:150/300</span
+          >已推送:{{gfNum}}/{{total}}</span
         >
       </div>
     </div>
@@ -311,6 +311,7 @@ export default {
       ],
       tableData: [], //表单数据
       total: 0, //一共多少条
+      gfNum: 0, //学时数量
       dialogVisible: false,
       allCheckList: [], //多选数组
       stice: 0,
@@ -341,13 +342,13 @@ export default {
       });
       this.$api.editGradeUsereditpushPeriod(arr).then((res) => {
         if (res.code === 200) {
-          if(!res.msg){
+          if (!res.msg) {
             this.$message.success("推送成功");
-          }else{
+          } else {
             this.$message.error(res.msg);
           }
           this.search();
-          this.$refs.tableList.clearMoreActive()
+          this.$refs.tableList.clearMoreActive();
         }
       });
     },
@@ -500,6 +501,15 @@ export default {
           this.tableData = res.rows;
           this.total = res.total;
           this.navText.index = res.total;
+          if (this.navText.gfxsStatus) {
+            this.$api
+              .inquireGradegradeofficialPeriodCount({
+                gradeId: this.$route.query.id,
+              })
+              .then((res) => {
+                this.gfNum = res.data;
+              });
+          }
         })
         .finally(() => {
           this.loading = false;

+ 0 - 1
src/views/education/classManageMent/classHoursReview/studyTimes.vue

@@ -1120,7 +1120,6 @@ export default {
             this.telPhone = data.telphone.value;
           }
           this.userData = res.rows[0];
-          console.log(this.userData, 123);
         });
     },
     search() {

+ 14 - 15
src/views/education/classManageMent/studentMenu/index.vue

@@ -25,7 +25,7 @@
         <span
           style="font-size: 14px; margin: 0px 6px"
           v-if="statusShow.indexOf(1) !== -1"
-          >已推送:150/300</span
+          >已推送:{{gfNum}}/{{total}}</span
         >
         <el-button size="small" v-if="statusShow.indexOf(3) !== -1"
           >官方学习账号开通</el-button
@@ -548,7 +548,6 @@ export default {
           label: "学员编码",
           prop: "studentCode",
           hidden: true,
-          width: "130px",
         },
         {
           label: "学员姓名",
@@ -559,20 +558,17 @@ export default {
           label: "学员身份证",
           prop: "idCard",
           hidden: true,
-          width: "170px",
         },
         {
           label: "绑定手机号码",
           prop: "telPhone",
           hidden: true,
-          width: "130px",
         },
         {
           label: "资料变更状态",
           prop: "userStatus",
           hidden: true,
           scope: "changeCLS",
-          width: "130px",
         },
         {
           label: "学时",
@@ -585,7 +581,6 @@ export default {
           prop2: "secAllNum",
           hidden: true,
           scope: "computer",
-          width: "220px",
         },
         {
           label: "做题进度(章卷)",
@@ -593,14 +588,12 @@ export default {
           prop2: "examNum",
           hidden: true,
           scope: "computer",
-          width: "150px",
         },
         {
           label: "学时审批状态",
           prop: "periodStatus",
           hidden: true,
           scope: "statusPeriods",
-          width: "130px",
         },
         {
           label: "学习有效期",
@@ -609,7 +602,6 @@ export default {
           hidden: true,
           Diszing: false,
           scope: "TimeLists",
-          width: "220px",
         },
         {
           label: "班级有效期",
@@ -618,7 +610,6 @@ export default {
           hidden: true,
           Diszing: false,
           scope: "TimeLists",
-          width: "220px",
         },
         {
           label: "结业状态",
@@ -633,7 +624,6 @@ export default {
         },
         {
           label: "复购-学时冲突",
-          width: "120px",
           prop: "rebuy",
           hidden: true,
           scope: "rebuy",
@@ -643,6 +633,7 @@ export default {
       finishStatusOS: "",
       tableData: [], //表单数据
       total: 0, //一共多少条
+      gfNum: 0, //官方信息推送
       dialogVisible: false,
       dialogVisibleTable: false,
       dialogVisibleStudent: false,
@@ -708,13 +699,13 @@ export default {
       });
       this.$api.editGradeUsereditpushInfo(arr).then((res) => {
         if (res.code === 200) {
-          if(!res.msg){
+          if (!res.msg) {
             this.$message.success("推送成功");
-          }else{
+          } else {
             this.$message.error(res.msg);
           }
           this.search();
-          this.$refs.tableList.clearMoreActive()
+          this.$refs.tableList.clearMoreActive();
         }
       });
     },
@@ -818,7 +809,6 @@ export default {
           JSON.stringify(this.$refs.tableList.allCheckData)
         );
         var ast = itemsq.every((items) => {
-          console.log(items);
           return items.periodStatus !== 1 && items.classEndTime
             ? items.classEndTime < newTime
             : false;
@@ -958,6 +948,15 @@ export default {
           this.tableData = res.rows;
           this.total = res.total;
           this.navText.index = res.total;
+          if (this.navText.gftsStatus) {
+            this.$api
+              .inquireGradegradeofficialInfoCount({
+                gradeId: this.$route.query.id,
+              })
+              .then((res) => {
+                this.gfNum = res.data;
+              });
+          }
         })
         .finally(() => {
           this.loading = false;