瀏覽代碼

更新续费与提醒

lex-xin 3 年之前
父節點
當前提交
d783a0d61f

+ 1 - 1
src/App.vue

@@ -54,7 +54,7 @@ body {
   visibility: hidden;
 }
 .el-checkbox__inner:hover {
-  background-color: #00A79D;
+  background-color: val(--color-primary);
 }
 .el-checkbox__input.is-checked .el-checkbox__inner,
 .el-checkbox__input.is-indeterminate .el-checkbox__inner {

二進制
src/assets/images/user_tips.png


二進制
src/components/serviceRemind/icon_service.png


二進制
src/components/serviceRemind/icon_yunB.png


+ 194 - 22
src/components/serviceRemind/index.vue

@@ -1,50 +1,222 @@
 <template>
-  <el-dialog :visible.sync="dialogFormVisible" width="700">
+  <el-dialog :visible.sync="dialogFormVisible" width="700px" :show-close="showClose">
     <div class="serviceTitle" slot="title">
-      服务到期提醒
+      <span class="squat"></span>服务到期提醒
     </div>
+    <p class="tips">
+      <i class="el-icon-info"></i
+      >您的以下服务即将到期,为了不影响学员的正常使用请联系本机构管理员及时续费
+    </p>
 
-    
-    <el-form :model="form">
-      <el-form-item label="活动名称" :label-width="formLabelWidth">
-        <el-input v-model="form.name" autocomplete="off"></el-input>
-      </el-form-item>
-      <el-form-item label="活动区域" :label-width="formLabelWidth">
-        <el-select v-model="form.region" placeholder="请选择活动区域">
-          <el-option label="区域一" value="shanghai"></el-option>
-          <el-option label="区域二" value="beijing"></el-option>
-        </el-select>
-      </el-form-item>
-    </el-form>
+    <div class="descriptions-container">
+      <div class="descriptions">
+        <div class="title"><i class="remind icon_service"></i>服务信息</div>
+        <el-row style="padding: 0 20px 10px">
+          <el-col :span="12">
+            <el-row>
+              <el-col :span="24"
+                >当前版本:<span class="color">{{ tInfo.serverName }}</span></el-col
+              >
+              <el-col :span="24"
+                v-if="tInfo.expiryDate && tInfo.expiryDateEnd"
+                >服务有效期:<span class="color"
+                  >{{ tInfo.expiryDate }} ~ {{ tInfo.expiryDateEnd }}</span
+                ></el-col
+              >
+            </el-row>
+          </el-col>
+          <el-col :span="10" :offset="2">
+            <el-row>
+              <el-col :span="24"
+                >学员上限:<span class="color">{{ tInfo.studentNum }} / {{ tInfo.studentUpLimit }}人</span></el-col
+              >
+              <el-col :span="24"
+                >有效期剩余:<span class="color">{{ tInfo.validRemaining }}天</span></el-col
+              >
+            </el-row>
+          </el-col>
+        </el-row>
+      </div>
+
+      <div class="descriptions">
+        <div class="title"><i class="remind icon_yunB"></i>云教室余额</div>
+        <el-row style="padding: 0 20px 10px;">
+          <el-col :span="24"
+            >云教室总余额:<span class="color">{{ tInfo.balance | moneyFormat}}元</span></el-col
+          >
+        </el-row>
+      </div>
+    </div>
+
+    <div class="btn-section" v-if="$helpers.permission('/productService') && $helpers.permission('/serviceRenew')">
+      <div class="submit" @click="onSubmit">立刻续费</div>
+    </div>
   </el-dialog>
 </template>
 
 <script>
+import { mapGetters } from "vuex";
+import dayjs from 'dayjs';
 export default {
-  name: 'serviceRemind',
+  name: "serviceRemind",
   data() {
     return {
-      dialogFormVisible: true,
-      form: {
-        name: null,
-        region: null
+      dialogFormVisible: false,
+      showClose: true, // 是否显示关闭按钮
+      tInfo: {
+        serverName: null,
+        studentNum: 0,
+        studentUpLimit: 0,
+        expiryDate: null,
+        expiryDateEnd: null,
+        validRemaining: 0, // 剩余有效期
+        balance: 0
+      }
+    };
+  },
+  computed: {
+    ...mapGetters(["tenantInfo"])
+  },
+  watch: {
+    "$route"(){
+      // 路由变化时重新判断是否需要续费
+      this.__init()
+    }
+  },
+  mounted() {
+    this.__init()
+  },
+  methods: {
+    __init() {
+      const { path, query } = this.$route
+      // 如果是续费页面则不能弹续费, 并且tabrouter 也需要一起判断
+      if(path === '/productService' && query.tabrouter == 1 || path === '/productService' && !query.tabrouter) {
+        this.dialogFormVisible = false
+      }
+      const tenantInfo = this.tenantInfo
+      this.tInfo = { ...tenantInfo }
+      // 有效期如果小于0则不能关闭弹窗
+      if(tenantInfo.validRemaining <= 0) {
+        this.showClose = false
+      } else if(tenantInfo.validRemaining <= 30 && tenantInfo.validRemaining > 0) {
+        // 只要续费则弹窗
+        this.dialogFormVisible = true
       }
+    },
+    onSubmit() {
+      this.$router.push('/productService')
     }
   }
-}
+};
 </script>
 
 <style lang="less" scoped>
+.serviceTitle {
+  font-size: 26px;
+  font-weight: 500;
+  color: var(--color-primary);
+  .squat {
+    display: inline-block;
+    margin-right: 10px;
+    height: 17px;
+    width: 5px;
+    border-radius: 3px;
+    background-color: var(--color-primary);
+  }
+}
+.tips {
+  font-size: 16px;
+  line-height: 22px;
+  color: #6d7278;
+  .el-icon-info {
+    color: #f7b500;
+    margin-right: 6px;
+  }
+}
 /deep/.el-dialog {
-  background: url('./header_bg.png') no-repeat top center #fff;
+  background: url("./header_bg.png") no-repeat top center #fff;
   background-size: 100% auto;
   border-radius: 6px;
   overflow: hidden;
   .el-dialog__header {
+    padding: 26px 26px 10px;
     background: transparent;
     .el-dialog__headerbtn .el-dialog__close {
       color: #000000;
+      font-size: 14px;
     }
   }
+  .el-dialog__body {
+    padding: 0 26px 26px;
+  }
+}
+.descriptions-container {
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+  margin-bottom: 15px;
+  margin-top: 50px;
+  .descriptions {
+    border-radius: 6px;
+    border: 1px solid #dde8ff;
+    background: #fff;
+    margin-bottom: 10px;
+    .title {
+      display: flex;
+      align-items: center;
+      // justify-content: space-between;
+      padding: 18px;
+      line-height: 28px;
+      font-size: 20px;
+      font-weight: 500;
+      color: #212121;
+    }
+  }
+  .el-col {
+    height: 22px;
+    line-height: 22px;
+    font-size: 16px;
+    color: #212121;
+    display: table;
+    span {
+      color: #6d7278;
+    }
+  }
+  .el-col-24 {
+    padding-bottom: 15px;
+  }
+  .color {
+    color: #6d7278;
+  }
+}
+.btn-section {
+  text-align: center;
+  .submit {
+    margin: 0 auto;
+    width: 227px;
+    height: 51px;
+    background: linear-gradient(270deg, #FFC65E 0%, #FFE8A6 100%);
+    border-radius: 26px;
+    font-size: 24px;
+    font-weight: 500;
+    color: #981E13;
+    line-height: 51px;
+  }
+}
+.remind {
+  display: inline-block;
+  margin-right: 12px;
+}
+.icon_service {
+  width: 22px;
+  height: 18px;
+  background: url("./icon_service.png") no-repeat center;
+  background-size: contain;
+}
+.icon_yunB {
+  width: 16px;
+  height: 22px;
+  background: url("./icon_yunB.png") no-repeat center;
+  background-size: contain;
 }
-</style>
+</style>

+ 4 - 1
src/layout/components/AppMain.vue

@@ -16,6 +16,7 @@
         <router-view v-if="!needKeep" :key="key" /> -->
       </div>
     </transition>
+    <serviceRemind />
     <el-dialog
       :visible.sync="guideVisible"
       title="您需要完成以下设置"
@@ -108,6 +109,7 @@
 
 <script>
 import notKeepAliveList from "@/router/notKeepAliveList";
+import serviceRemind from '@/components/serviceRemind' // 续费弹窗
 import { permission } from "@/utils/directivePage";
 import { guideList } from "@/constant/guide";
 import {
@@ -133,6 +135,7 @@ export default {
       isShow: false,
     };
   },
+  components: { serviceRemind },
   computed: {
     key() {
       return this.$route.path;
@@ -219,7 +222,7 @@ export default {
       if (!val) {
         this.activeName = "first";
       }
-    },
+    }
   },
 };
 </script>

+ 106 - 8
src/layout/components/Navbar.vue

@@ -118,7 +118,7 @@
           </span>
         </el-popover>
       </div>
-      <el-dropdown class="avatar-container" trigger="click">
+      <el-dropdown class="avatar-container" trigger="hover">
         <div class="avatar-wrapper">
           <img
             v-if="$store.getters.avatar"
@@ -130,10 +130,36 @@
             class="user-avatar"
             src="@/assets/images/base/placehorder-icon.png"
           />
-          <!-- <i class="el-icon-caret-bottom" /> -->
           <span>{{ username }}</span>
         </div>
         <el-dropdown-menu slot="dropdown" class="user-dropdown">
+          <div class="drop_userInfo">
+            <div class="avatar-wrapper">
+              <img
+                v-if="$store.getters.avatar"
+                :src="$store.getters.avatar"
+                class="user-avatar"
+              />
+              <img
+                v-else
+                class="user-avatar"
+                src="@/assets/images/base/placehorder-icon.png"
+              />
+              <span>{{ username }}</span>
+            </div>
+          </div>
+          <div class="tenantService"  v-if="!tenantStatus">
+            <div class="serviceName">
+              <p class="name">{{ tenantInfo.serverName }}</p>
+              <div class="serviceRenew" @click="onRenew" v-if="$helpers.permission('/productService') && $helpers.permission('/serviceRenew')">立即续费</div>
+            </div>
+            <div class="serviceTime" v-if="tenantInfo.validRemaining <= 0">
+              剩余{{ tenantInfo.validRemaining }}天({{ tenantInfo.expiryDateEnd }})到期
+            </div>
+            <div class="serviceTime" v-else>
+              已过期
+            </div>
+          </div>
           <!-- divided -->
           <el-dropdown-item v-if="tenantStatus" @click.native="onTenantChange">
             <i class="icon_admin_tenant userSize"></i>
@@ -144,11 +170,11 @@
             <i class="icon_admin_edit userSize"></i>
             <span class="dropdown-text">修改密码</span>
           </el-dropdown-item>
-          <el-dropdown-item @click.native="accountSetting">
+          <el-dropdown-item @click.native="accountSetting" v-if="$helpers.permission('/tenantInfoSetting')">
             <i class="icon_admin_account userSize"></i>
             <span class="dropdown-text">账号设置</span>
           </el-dropdown-item>
-          <el-dropdown-item style="border-top: 1px solid #EBEEF5;" @click.native="logout">
+          <el-dropdown-item style="border-top: 1px solid #E5E5E5;" @click.native="logout">
             <i class="icon_admin_exit userSize"></i>
             <span class="dropdown-text">安全退出</span>
           </el-dropdown-item>
@@ -325,7 +351,7 @@ export default {
     // Hamburger
   },
   computed: {
-    ...mapGetters(["sidebar", "avatar", "permission_routes"]),
+    ...mapGetters(["sidebar", "avatar", "permission_routes", "tenantInfo"]),
     getTopMenuActive() {
       let route = this.$route;
       //  (route, getBelongTopMenuPath(route))
@@ -360,6 +386,9 @@ export default {
         this.tenantVisible = true
       } catch(e) {}
     },
+    onRenew() {
+      this.$router.push('/productService')
+    },
     accountSetting() {
       // 账号设置
       this.$router.push('/tenantSetting/tenantInfoSetting')
@@ -678,15 +707,84 @@ export default {
   }
 }
 .user-dropdown {
-  width: 135px;
+  width: 258px;
+  padding-top: 0 !important;
+  box-shadow: 0px 2px 13px 0px rgba(0, 0, 0, 0.05);
+  /deep/.popper__arrow {
+    border-bottom-color: var(--color-primary) !important;
+    &::after {
+      border-bottom-color: var(--color-primary) !important;
+    }
+  }
+  .drop_userInfo {
+    background-color: var(--color-primary);
+    height: 64px;
+    color: #fff;
+    padding: 0 12px;
+    border-radius: 4px 4px 0 0;
+    display: flex;
+    align-items: center;
+    .avatar-wrapper {
+      display: flex;
+      align-items: center;
+      background: url("../../assets/images/user_tips.png") no-repeat right center;
+      background-size: 45%;
+      width: 100%;
+      .user-avatar {
+        width: 38px;
+        height: 38px;
+        border-radius: 50%;
+        margin-right: 10px;
+      }
+    }
+  }
+  .tenantService {
+    border-bottom: 1px solid #E5E5E5;
+    padding: 18px 17px 12px;
+    .serviceName {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      .name {
+        font-size: 18px;
+        font-weight: 600;
+        color: var(--color-primary);
+        line-height: 25px;
+        width: 160px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+      }
+      .serviceRenew {
+        width: 63px;
+        height: 22px;
+        background: linear-gradient(270deg, #FFC65E 0%, #FFE8A6 100%);
+        border-radius: 11px;
+        line-height: 22px;
+        font-size: 11px;
+        font-weight: 400;
+        color: #981E13;
+        text-align: center;
+        cursor: pointer;
+      }
+    }
+    .serviceTime {
+      margin-top: 15px;
+      font-size: 13px;
+      font-weight: 400;
+      color: #333333;
+      line-height: 18px;
+    }
+  }
   .el-dropdown-menu__item {
     display: flex;
     align-items: center;
-    padding: 3px 17px;
+    // margin: 3px 17px;
+    padding: 7px 17px;
   }
   .dropdown-text {
     display: block;
-    width: 60px;
+    width: 180px;
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;

+ 1 - 0
src/store/getters.js

@@ -1,5 +1,6 @@
 const getters = {
   sidebar: state => state.app.sidebar,
+  tenantInfo: state => state.app.tenantInfo,
   device: state => state.app.device,
   token: state => state.user.token,
   avatar: state => state.user.avatar,

+ 27 - 0
src/store/modules/app.js

@@ -2,6 +2,8 @@
 import Cookies from 'js-cookie'
 import { hasIndexErrData } from '@/views/main/api'
 import { permission } from '@/utils/directivePage'
+import { queryTenantInfoSumm } from '@/views/productService/api'
+import dayjs from 'dayjs'
 
 const state = {
   sidebar: {
@@ -17,6 +19,15 @@ const state = {
     teacherInfo: false,
     attendanceServe:false
   },
+  tenantInfo: {
+    serverName: null,
+    studentNum: 0,
+    studentUpLimit: 0,
+    expiryDate: null,
+    expiryDateEnd: null,
+    validRemaining: 0, // 剩余有效期
+    balance: 0
+  }
 }
 
 const mutations = {
@@ -45,6 +56,14 @@ const mutations = {
       indexErrData: musicPatrol || studentInfo || teacherInfo || attendanceServe
     }
     toggleDot(state.status)
+  },
+  TEANAT_SETTING: (state, status) => {
+    const { expiryDate, expiryDateEnd, ...res } = status
+    state.tenantInfo = { 
+      ...res,
+      expiryDate: expiryDate ? dayjs(expiryDate).format('YYYY-MM-DD') : null,
+      expiryDateEnd: expiryDateEnd ? dayjs(expiryDateEnd).format('YYYY-MM-DD') : null
+    }
   }
 }
 
@@ -81,6 +100,14 @@ const actions = {
         commit('COMMIT_DOT_STATUS', res.data)
       } catch (error) {}
     }
+  },
+  async setServiceInfo({ commit }) {
+    if (permission('tenantInfo/queryTenantInfoSumm')) {
+      try {
+        const res = await queryTenantInfoSumm()
+        commit('TEANAT_SETTING', res.data)
+      } catch (error) {}
+    }
   }
 }
 

+ 1 - 18
src/store/modules/permission.js

@@ -873,24 +873,6 @@ function setDetailRoute(accessedRoutes) {
         }
       }])
     }
-    // if (route.path == '/federationManager') {
-    //   if (!route.children) {
-    //     route.children = []
-    //   }
-    //   route.children = route.children.concat([{
-    //     name: '扣费记录',
-    //     path: 'chargingRecord',
-    //     component: () => import('@/views/tenantSetting/chargingRecord.vue'),
-    //     hidden: true,
-    //     meta: {
-    //       noCache: '1',
-    //       title: '扣费记录',
-    //       belongTopMenu: "/federationManager",
-    //       activeMenu: '/productService',
-    //       id: '4741'
-    //     }
-    //   }])
-    // }
   })
   return accessedRoutes
 }
@@ -932,6 +914,7 @@ const actions = {
           window.localStorage.removeItem('permission')
           window.localStorage.setItem('permission', tempArr)
           this.dispatch('app/setDotStatus')
+          this.dispatch('app/setServiceInfo') // 获取机构信息,用于续费弹窗和个人信息
           resolve(accessedRoutes)
         }
       })

+ 53 - 10
src/views/categroyManager/generalSettings/holidaySetting.vue

@@ -5,7 +5,7 @@
       <!-- 列表 -->
       <calendar class="calendarComponent" v-if="dataStatus" :first-day-of-week="1" multiple :select-date="dateList" width="800px"/>
       <div v-if="dataStatus" style="width: 800px; margin: 10px auto; text-align: center;">
-        <el-button v-permission="'sysConfig/update/holidaySetting'" type="primary" @click="onSave" style="padding: 16px 33px; font-size: 18px;">保&nbsp;&nbsp;存</el-button>
+        <el-button v-permission="'sysConfig/update/holidaySetting'" type="primary" @click="onSave">保&nbsp;&nbsp;存</el-button>
       </div>
     </div>
   </div>
@@ -72,20 +72,63 @@ export default {
 .calendarComponent {
   margin: 0 auto;
 }
-/deep/.calendar-pro__body table td .day-box.select {
-  background-color: #fcf0f0;
-}
-/deep/.calendar-pro__body table td .day-box.select .info-date {
-  color: #c2423f;
-}
-/deep/.calendar-pro__body table td .day-box {
-  height: 80px;
+/deep/.calendar-pro__body {
+  th {
+    padding: 10px 0;
+  }
+  th, td {
+    width: 120px;
+  }
+  table td .day-box.select {
+    background-color: #fcf0f0;
+  }
+  table td .day-box.select .info-date {
+    color: #c2423f;
+  }
+  table td .day-box {
+    height: 100px;
+    padding: 12px;
+    box-sizing: border-box;
+    cursor: pointer;
+    &:hover {
+      background-color: #fcf0f0;
+    }
+  }
+
+  table tr td:first-child {
+    border-left: 1px solid #ebeef5;
+  }
+
+  table tr:first-child td {
+      border-top: 1px solid #ebeef5;
+  }
+  table td {
+    border-bottom: 1px solid #ebeef5;
+    border-right: 1px solid #ebeef5;
+    vertical-align: top;
+    transition: background-color .2s ease;
+  }
 }
 /deep/.info-festival {
   color: red;
 }
 /deep/.calendar-pro__title {
-  margin-bottom: 10px;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding-bottom: 20px;
+  margin-bottom: 20px;
+  border-bottom: 1px solid #ebeef5;
+  .calendar-pro__tool button {
+    padding: 8px 15px;
+    &:hover {
+      background: #f7f7f7;
+    }
+  }
+  .calendar-pro__title-info {
+    font-size: 22px;
+    font-weight: 600;
+  }
 }
 /deep/.calendar-pro__tool {
   button {

+ 4 - 9
src/views/productService/index.vue

@@ -25,9 +25,9 @@
         </div>
 
         <div class="descriptions">
-          <div class="title">云教室余额 <el-button type="text" size="small" @click="onDetail">扣费记录 >></el-button></div>
+          <div class="title">云教室余额 <el-button type="text" @click="onDetail">扣费记录 >></el-button></div>
           <el-row style="padding: 0 20px">
-            <el-col :span="24">云教室总余额:<span class="color">{{ dataInfo.sumBalance | hasMoneyFormat }}</span></el-col>
+            <el-col :span="24">云教室总余额:<span class="color">{{ dataInfo.balance | hasMoneyFormat }}</span></el-col>
             <!-- <el-col :span="24">冻结余额<el-tooltip placement="top" popper-class="mTooltip">
                   <div slot="content">已排线上课预计服务费用总和,课程结束后扣减</div>
                   <i
@@ -78,15 +78,12 @@
           <cloud-recharge v-if="activeIndex == 2" />
         </el-tab-pane>
       </tab-router>
-
-    <!-- <serviceRemind /> -->
     </div>
   </div>
 </template>
 <script>
 import cloudRecharge from '@/views/productService/components/cloudRecharge'
 import serviceRenew from '@/views/productService/components/serviceRenew'
-import serviceRemind from '@/components/serviceRemind'
 import { permission } from "@/utils/directivePage";
 import { queryTenantInfoSumm } from "./api";
 import dayjs from 'dayjs'
@@ -94,8 +91,7 @@ import dayjs from 'dayjs'
 export default {
   components: {
     cloudRecharge,
-    serviceRenew,
-    serviceRemind
+    serviceRenew
   },
   name: "productService",
   data() {
@@ -108,7 +104,7 @@ export default {
         studentNum: 0,
         studentUpLimit: 0,
         validRemaining: 0,
-        sumBalance: 0,
+        balance: 0,
         frozenAmount: 0,
         balance: 0
       }
@@ -122,7 +118,6 @@ export default {
     async __init() {
       try {
         const res = await queryTenantInfoSumm()
-        console.log(res)
         this.dataInfo = res.data || {}
         this.dataInfo.expiryDate = res.data.expiryDate ? dayjs(res.data.expiryDate).format('YYYY-MM-DD') : null
         this.dataInfo.expiryDateEnd = res.data.expiryDateEnd ? dayjs(res.data.expiryDateEnd).format('YYYY-MM-DD') : null

二進制
src/views/resetTeaming/images/1.png


二進制
src/views/resetTeaming/images/10.png


二進制
src/views/resetTeaming/images/11.png


二進制
src/views/resetTeaming/images/12.png


二進制
src/views/resetTeaming/images/13.png


二進制
src/views/resetTeaming/images/2.png


二進制
src/views/resetTeaming/images/3.png


二進制
src/views/resetTeaming/images/4.png


二進制
src/views/resetTeaming/images/5.png


二進制
src/views/resetTeaming/images/6.png


二進制
src/views/resetTeaming/images/7.png


二進制
src/views/resetTeaming/images/8.png


二進制
src/views/resetTeaming/images/9.png


+ 89 - 47
src/views/resetTeaming/index.vue

@@ -1,29 +1,50 @@
 <template>
   <div class="m-container">
-    <h2>
+    <h2 class="musicGroupInfo">
       <el-page-header @back="onCancel">
         <template slot="content">
-          <div
-            class="hearConcat"
-            @click="gotoArchices"
-            v-if="permission('/musicArchices')"
-          >
-            <el-tooltip placement="top" popper-class="mTooltip">
-              <div slot="content">乐团档案</div>
-              <div class="titleWrap">
-                <p>{{ teamName }}</p>
-                <img :src="archices" alt="" class="archices" />
-              </div>
-            </el-tooltip>
-          </div>
-          <div v-else>
-            <p>{{ teamName }}</p>
+          <div class="page-headers">
+            <span>{{ teamName }}</span>
+            <span class="musicGroupStatus"><img
+              :src="stepImgs[team_status]"
+              alt=""
+              v-if="stepImgs[team_status]"
+            />
+            {{ musicGroupType[team_status] }}</span>
           </div>
         </template>
       </el-page-header>
+      <div class="musicGroupOperation">
+        <!-- 进行中才有乐团档案 -->
+        <span class="item" @click="gotoArchices" v-if="permission('/musicArchices') && team_status == 'PROGRESS'">乐团档案</span>
+        <i class="line" v-if="permission('/musicArchices') && team_status == 'PROGRESS' && permission('recharge/findAll')"></i>
+        <span class="item" @click="journalVisible = true" v-if="permission('recharge/findAll')">操作日志</span>
+        <!-- <div
+          class="hearConcat"
+          @click="gotoArchices"
+          v-if="permission('/musicArchices')"
+        >
+          <el-tooltip placement="top" popper-class="mTooltip">
+            <div slot="content">乐团档案</div>
+            <div class="titleWrap">
+              <p>{{ teamName }}</p>
+              <img :src="archices" alt="" class="archices" />
+            </div>
+          </el-tooltip>
+        </div> -->
+      </div>
     </h2>
+    <el-dialog
+      title="操作日志"
+      :visible.sync="journalVisible"
+      width="1000px"
+      v-if="journalVisible"
+      append-to-body
+    >
+      <teamJournal :teamid="teamid" />
+    </el-dialog>
     <div class="m-core">
-      <el-popover
+      <!-- <el-popover
         placement="left"
         :append-to-body="false"
         width="1000"
@@ -32,10 +53,7 @@
         :open-delay="500"
         @show="setpopover()"
       >
-        <!--  @setpopover='setpopover'  -->
-
         <teamJournal :teamid="teamid" />
-        <!--  v-if="team_status" -->
         <p slot="reference" class="msg" :class="team_status">
           <img
             :src="stepImgs[team_status]"
@@ -44,7 +62,7 @@
           />
           {{ musicGroupType[team_status] }}
         </p>
-      </el-popover>
+      </el-popover> -->
 
       <!-- navMenu    -->
       <tab-router
@@ -265,6 +283,7 @@ export default {
       visible: false,
       activeIndex: "1",
       teamid: "",
+      journalVisible: false,
       baseInfo: null,
       // permissionStatus: {
       //   teamBaseInfo: true,
@@ -280,19 +299,19 @@ export default {
       team_status: "",
       archices: require("@/assets/images/base/archices.png"),
       stepImgs: {
-        AUDIT_FAILED: require("@/assets/images/base/end.png"),
-        CANCELED: require("@/assets/images/base/end.png"),
-        CLOSE: require("@/assets/images/base/end.png"),
-        PAUSE: require("@/assets/images/base/end.png"),
-        PROGRESS: require("@/assets/images/base/ing.png"),
-        DRAFT: require("@/assets/images/base/ing.png"),
-        AUDIT: require("@/assets/images/base/ing.png"),
-        PRE_APPLY: require("@/assets/images/base/ing.png"),
-        PRE_BUILD_FEE: require("@/assets/images/base/ing.png"),
-        FEE_AUDIT: require("@/assets/images/base/ing.png"),
-        APPLY: require("@/assets/images/base/clock.png"),
-        PAY: require("@/assets/images/base/pay.png"),
-        PREPARE: require("@/assets/images/base/ing.png"),
+        AUDIT_FAILED: require("./images/7.png"),
+        CANCELED: require("./images/10.png"),
+        CLOSE: require("./images/8.png"),
+        PAUSE: require("./images/9.png"),
+        PROGRESS: require("./images/13.png"),
+        DRAFT: require("./images/2.png"),
+        AUDIT: require("./images/1.png"),
+        PRE_APPLY: require("./images/3.png"),
+        PRE_BUILD_FEE: require("./images/5.png"),
+        FEE_AUDIT: require("./images/6.png"),
+        APPLY: require("./images/4.png"),
+        PAY: require("./images/12.png"),
+        PREPARE: require("./images/11.png"),
       },
     };
   },
@@ -429,20 +448,43 @@ export default {
 };
 </script>
 <style lang="scss" scoped>
-// AUDIT_FAILED: require("@/assets/images/base/end.png"),
-//         CANCELED: require("@/assets/images/base/end.png"),
-//         CLOSE: require("@/assets/images/base/end.png"),
-//         PAUSE: require("@/assets/images/base/end.png"),
+.musicGroupInfo {
+  justify-content: space-between;
+}
+.page-headers {
+  display: flex;
+  align-items: center;
+}
+.musicGroupStatus {
+  display: flex;
+  align-items: center;
+  font-size: 22px;
+  color: #262626;
+  img {
+    margin: 0 10px 0 40px;
+    width: 27px;
+    height: 27px;
+  }
+}
+.musicGroupOperation {
+  display: flex;
+  align-items: center;
+  .item {
+    font-size: 16px;
+    font-weight: 400;
+    color: var(--color-primary);
+    line-height: 22px;
+    cursor: pointer;
+  }
+  .line {
+    display: inline-block;
+    width: 1px;
+    height: 16px;
+    background: #DDDFE6;
+    margin: 0 10px;
+  }
+}
 
-//         PROGRESS: require("@/assets/images/base/ing.png"),
-//         DRAFT: require("@/assets/images/base/ing.png"),
-//         AUDIT: require("@/assets/images/base/ing.png"),
-//         PRE_APPLY: require("@/assets/images/base/ing.png"),
-//         PRE_BUILD_FEE: require("@/assets/images/base/ing.png"),
-//         FEE_AUDIT: require("@/assets/images/base/ing.png"),
-//         APPLYL: require("@/assets/images/base/clock.png"),
-//         PAY: require("@/assets/images/base/pay.png"),
-//         PREPARE: require("@/assets/images/base/ing.png"),
 .msg.PAY {
   color: #f85043;
 }

+ 2 - 1
src/views/teacherManager/teacherOperation/components/salarySet.vue

@@ -185,6 +185,7 @@
                 <el-option label="是" :value="1"></el-option>
                 <el-option label="否" :value="0"></el-option>
               </el-select>
+            <div style="display: inline; color: red; padding-left: 10px;">说明:老师是否结算课酬;</div>
           </el-form-item>
           <el-form-item label="生效日期" label-width="120px" prop="startDate" :rules="[{ required: true, message: '请选择生效日期', trigger: 'change'}]">
             <el-date-picker v-model.trim="updateForm.startDate"
@@ -330,7 +331,7 @@ export default {
       vipList: [],
       updateForm: {
         startDate: null,
-        isSettlementSalary: null,
+        isSettlementSalary: 1,
       },
       rules: {},
       accompanyTable: [

+ 3 - 3
src/views/vipClass/vipList.vue

@@ -117,15 +117,15 @@
         新建
       </el-button>
       <el-button
-        v-permission="'export/vipGroup'"
-        @click="onStudentExport"
+        v-permission="'export/vipGroupList'"
+        @click="onVIPCourseExport"
         type="primary"
         style="margin-bottom:20px"
       >
         导出
       </el-button>
       <el-button
-        v-permission="'/buildVip'" @click="gotoBuildVip"
+        v-permission="'export/vipGroup'" @click="onStudentExport"
         type="primary"
         style="margin-bottom:20px"
       >