Pārlūkot izejas kodu

Merge branch '11/24SAAS' of http://git.dayaedu.com/yonge/dy-admin-manager into 11/24SAAS

mo 3 gadi atpakaļ
vecāks
revīzija
1e420dc882

+ 36 - 14
src/components/serviceRemind/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog :visible.sync="dialogFormVisible" width="700px" :show-close="showClose">
+  <el-dialog :visible.sync="dialogFormVisible" width="700px" :before-close="beforeClose" :show-close="showClose">
     <div class="serviceTitle" slot="title">
       <span class="squat"></span>服务到期提醒
     </div>
@@ -81,6 +81,10 @@ export default {
     "$route"(){
       // 路由变化时重新判断是否需要续费
       this.__init()
+    },
+    tenantInfo() {
+      console.log('showInfo ing', this.tenantInfo)
+      this.__init()
     }
   },
   mounted() {
@@ -90,23 +94,41 @@ export default {
     __init() {
       const { path, query } = this.$route
       const tenantInfo = this.tenantInfo
-      this.tInfo = { ...tenantInfo }
-      // 有效期如果小于0则不能关闭弹窗
-      console.log(tenantInfo, 'tenantInfo')
-      if(tenantInfo.validRemaining <= 0) {
-        this.showClose = false
-      } else if(tenantInfo.validRemaining <= 30 && tenantInfo.validRemaining > 0) {
-        // 只要续费则弹窗
-        this.dialogFormVisible = true
-      }
-      // 如果是续费页面则不能弹续费, 并且tabrouter 也需要一起判断
-      if(path === '/productService' && query.tabrouter == 1 || path === '/productService' && !query.tabrouter) {
+      console.log(+new Date(), '__init', tenantInfo)
+      const tenantRenewStatus = sessionStorage.getItem('tenantRenewStatus')
+      if(tenantRenewStatus) {
         this.dialogFormVisible = false
-        return
+      } else {
+        this.tInfo = { ...tenantInfo }
+        // 有效期如果小于0则不能关闭弹窗
+        if(tenantInfo.validRemaining <= 0) {
+          this.showClose = false
+        } else if(tenantInfo.validRemaining <= 30 && tenantInfo.validRemaining > 0) {
+          // 只要续费则弹窗
+          this.dialogFormVisible = true
+          this.showClose = true
+        } else { // 大于30天
+          this.showClose = true
+          this.dialogFormVisible = false
+        }
+        // 如果是续费页面则不能弹续费, 并且tabrouter 也需要一起判断
+        if(path === '/productService' && query.tabrouter == 1 || path === '/productService' && !query.tabrouter) {
+          this.dialogFormVisible = false
+          return
+        }
       }
     },
-    onSubmit() {
+    beforeClose() { // 续费弹窗关闭前
+      const tInfo = this.tInfo
+      if(tInfo.validRemaining > 0) { // 设置标识,如果机构可用天数大于1天,小于30天则,关闭一次,就不会在提示
+        sessionStorage.setItem('tenantRenewStatus', 1)
+      } else {
+        sessionStorage.removeItem('tenantRenewStatus')
+      }
       this.dialogFormVisible = false
+    },
+    onSubmit() {
+      this.beforeClose()
       this.$router.push('/productService')
     }
   }

+ 3 - 5
src/layout/components/Navbar.vue

@@ -130,7 +130,7 @@
             class="user-avatar"
             src="@/assets/images/base/placehorder-icon.png"
           />
-          <span>{{ username }}</span>
+          <span>{{ name }}</span>
         </div>
         <el-dropdown-menu slot="dropdown" class="user-dropdown">
           <div class="drop_userInfo">
@@ -146,7 +146,7 @@
                 src="@/assets/images/base/placehorder-icon.png"
               />
               <div>
-                <span>{{ username }}</span>
+                <span>{{ name }}</span>
                 <p class="positionName" :title="positionName">{{ positionName }}</p>
               </div>
             </div>
@@ -335,7 +335,6 @@ export default {
     tenantConfig = tenantConfig ? JSON.parse(tenantConfig) : {}
     return {
       accountStatus: false,
-      username: "",
       organName: this.$store.getters.organName,
       organNameList: [],
       resetVisible: false,
@@ -367,7 +366,7 @@ export default {
     // Hamburger
   },
   computed: {
-    ...mapGetters(["sidebar", "avatar", "positionName", "permission_routes", "tenantInfo"]),
+    ...mapGetters(["sidebar", "avatar", "name", "positionName", "permission_routes", "tenantInfo"]),
     getTopMenuActive() {
       let route = this.$route;
       //  (route, getBelongTopMenuPath(route))
@@ -381,7 +380,6 @@ export default {
   mounted() {
     // 手动加入
     this.toggleSideBar();
-    this.username = this.$store.getters.name;
     this.organNameList = this.organName.split(",") || [];
   },
   methods: {

+ 5 - 1
src/layout/components/modal/userModal.vue

@@ -205,7 +205,8 @@ export default {
       // employee/simpleUpdate
       this.$refs['ruleForm'].validate(async (valid) => {
         if (valid) {
-          simpleUpdate(this.form).then((res) => {
+          const { phone, ...res } = this.form
+          simpleUpdate({...res}).then((res) => {
               this.messageTips("修改", res);
             });
         } else {
@@ -216,6 +217,9 @@ export default {
     messageTips(title, res) {
       if (res.code == 200) {
         this.$message.success(title + "成功");
+        const { realName, avatar } = this.form
+        this.$store.dispatch('user/setUserName', realName)
+        this.$store.dispatch('user/setUserAvatar', avatar)
         this.$listeners.close();
       } else {
         this.$message.error(res.msg);

+ 6 - 0
src/store/modules/user.js

@@ -84,6 +84,12 @@ async function tenantQueryPage(id) {
 }
 
 const actions = {
+  setUserName({commit}, userName) {
+    commit('SET_NAME',userName)
+  },
+  setUserAvatar({commit}, userName) {
+    commit('SET_AVATAR',userName)
+  },
   // user login
   login ({ commit }, userInfo) {
     const { username, password } = userInfo

+ 1 - 0
src/utils/downLoadFile.js

@@ -66,6 +66,7 @@ export const Export = (that, params, message) => {
 
                 load.endLoading();
             }).catch(error => {
+                console.log(error)
                 that.$message.error('下载失败,请联系管理员');
                 load.endLoading();
             });

+ 8 - 8
src/views/organManager/components/organInfo.vue

@@ -77,14 +77,6 @@
             placeholder="请输入机构简称(最多8个字)"
           ></el-input>
         </el-form-item>
-        <el-form-item label="营业执照编号" prop="tsignCode"
-          :rules="[{ required: true, message: '请输入营业执照编号', trigger: 'blur' }]">
-          <el-input
-            v-model.trim="form.tsignCode"
-            :disabled="isDisabled || tenantInfo == 'SETTING'"
-            placeholder="请输入营业执照编号"
-          ></el-input>
-        </el-form-item>
         <el-form-item label="所在城市" required>
           <el-form-item prop="province" :rules="[{ required: true, message: '请选择省', trigger: 'change' }]" style="margin-right: 0;">
             <el-select
@@ -129,6 +121,14 @@
             placeholder="请输入机构地址"
           ></el-input>
         </el-form-item>
+        <el-form-item label="营业执照编号" prop="tsignCode"
+          :rules="[{ required: true, message: '请输入营业执照编号', trigger: 'blur' }]">
+          <el-input
+            v-model.trim="form.tsignCode"
+            :disabled="isDisabled || tenantInfo == 'SETTING'"
+            placeholder="请输入营业执照编号"
+          ></el-input>
+        </el-form-item>
         <el-form-item label="机构联系人" prop="contacts"
           :rules="[{ required: true, message: '请输入机构联系人', trigger: 'blur' }]">
           <el-input

+ 2 - 4
src/views/platformManager/serviceManager/index.vue

@@ -10,8 +10,7 @@
       ref="searchForm"
       @submit="search"
       @reset="reset"
-      
-      :saveKey="'platformServiceManager'"
+      :saveKey="'serviceManager'"
       :model.sync="searchForm"
     >
       <el-form-item :rules="[]">
@@ -27,7 +26,6 @@
     <div class="tableWrap">
       <el-table
         :data="tableList"
-        
         :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
       >
         <el-table-column align="center" prop="id" label="服务编号">
@@ -56,7 +54,7 @@
         </el-table-column>
       </el-table>
       <pagination
-       :saveKey="'platformServiceManager'"
+       :saveKey="'serviceManager'"
         sync
         :total.sync="pageInfo.total"
         :page.sync="pageInfo.page"

+ 5 - 5
src/views/productService/components/cloudRecharge.vue

@@ -5,10 +5,10 @@
           <div class="title">云教室扣费规则</div>
           <div class="tips" style="line-height: 30px;">
             1.系统根据线上课课程人数(含老师)进行扣费;<br />
-            2.用户人数2人(含老师)每分钟0.2元;用户人数3人(含老师)每分钟0.5元;<br />
-            3.每节线上课平台赠送10分钟免费时,长分别为课前5分钟及课后5分钟,总送时长不计算费用;<br />
-            4.扣费金额按排课人数计算,无论实际到课人数是否为排课人数,都会按照排课人数扣费<br />
-            5.课程结束后费用立即结算
+            2.每节线上课平台赠送10分钟免费时长,分别为课前5分钟及课后5分钟,赠送时长不计算费用;<br />
+            3.扣费金额按排课人数计算,无论实际到课人数是否为排课人数,都会按照排课人数扣费;<br />
+            4.课程结束后费用立即结算;<br />
+            5.云教室余额不足时,老师及学员将无法进入云教室,为了保障老师及学员能够正常上课,请及时对云教室进行充值
           </div>
         </div>
 
@@ -60,7 +60,7 @@
       v-if="cloudVisible"
       append-to-body
     >
-      <rechargeModel :amount="form.amount" @close="cloudVisible = false" />
+      <rechargeModel :amount="form.amount" v-on="$listeners" @close="cloudVisible = false" />
     </el-dialog>
   </div>
 </template>

+ 2 - 2
src/views/productService/index.vue

@@ -67,7 +67,7 @@
           v-if="permission('/serviceRenew')"
           name="1"
         >
-          <service-renew v-if="activeIndex == 1" />
+          <service-renew v-if="activeIndex == 1" @getList="__init" />
         </el-tab-pane>
         <el-tab-pane
           label="云教室充值"
@@ -75,7 +75,7 @@
           v-if="permission('/cloudRecharge')"
           name="2"
         >
-          <cloud-recharge v-if="activeIndex == 2" />
+          <cloud-recharge v-if="activeIndex == 2" @getList="__init" />
         </el-tab-pane>
       </tab-router>
     </div>

+ 1 - 0
src/views/productService/model/payment.vue

@@ -50,6 +50,7 @@ export default {
           if(res.data) {
             clearInterval(orderTimer)
             this.$message.success('您已成功缴费')
+            this.$listeners.getList()
             this.$emit('close', true)
           }
         } catch(e) {

+ 0 - 84
src/views/productService/model/paymentService.vue

@@ -1,84 +0,0 @@
-<template>
-  <div class="chioseWrap">
-    <p>请在30分钟完成扫码支付</p>
-
-    <vue-qr :text="codeUrl" style="width: 250px" :margin="0"></vue-qr>
-  </div>
-</template>
-<script>
-import VueQr from 'vue-qr'
-import { checkInfo } from '../api'
-export default {
-  props: {
-    tableList: {
-      type: Array,
-      default: []
-    },
-    orderNo: {
-      type: String
-    },
-    codeUrl: {
-      type: String
-    },
-  },
-  components: { VueQr },
-  data() {
-    return {
-      payForm: {
-        payType: null,
-      },
-      selectStudentMoney: 0, // 选中学生金额
-      orderTimer: null
-    };
-  },
-  async mounted() {
-    let tableList = this.tableList || []
-    for(let i of tableList) {
-      this.selectStudentMoney += parseFloat(i.amount)
-    }
-    setTimeout(() => {
-      this.getPaymentStatus()
-    }, 3000)
-  },
-  methods: {
-    async getPaymentStatus() {
-      let orderTimer = setInterval(async () => {
-        this.orderTimer = orderTimer
-        try {
-          const res = await checkInfo({ orderNo: this.orderNo })
-          if(res.data) {
-            clearInterval(orderTimer)
-            this.$message.success('您已成功缴费')
-            this.$emit('close', true)
-          }
-        } catch(e) {
-          clearInterval(orderTimer)
-        }
-      }, 5000);
-    }
-  },
-  beforeDestroy() {
-    clearInterval(this.orderTimer)
-  }
-};
-</script>
-<style lang="less" scoped>
-.chioseWrap {
-  text-align: center;
-  font-size: 16px;
-  > p {
-    font-weight: 600;
-    padding-bottom: 15px;
-    line-height: 1.5;
-    span {
-      color: red;
-      padding: 0 3px;
-    }
-  }
-}
-.dialog-footer {
-  text-align: right;
-  display: block;
-  padding-top: 15px;
-}
-</style>

+ 8 - 2
src/views/productService/model/rechargeModel.vue

@@ -52,7 +52,7 @@
       width="500px"
       append-to-body
     >
-      <payment :tableList="tableList" :orderNo="orderNo" :codeUrl="codeUrl" @close="onPaymentClose" />
+      <payment :tableList="tableList" :orderNo="orderNo" v-on="$listeners" :codeUrl="codeUrl" @close="onPaymentClose" />
     </el-dialog>
   </div>
 </template>
@@ -91,7 +91,13 @@ export default {
         if(_) {
           try {
             const res = await recharge({ amount: this.amount })
-            console.log(res)
+            console.log(res.data.amount, res.data.orderNo)
+            if(res.data.amount == 0 && res.data.orderNo) {
+              this.$message.success('您已成功缴费')
+              this.onPaymentClose(true)
+              this.$listeners.getList()
+              return
+            }
             const payForm = this.payForm
             // // 二维码页面, 唤起支付页面
             const { orderNo, sign, amount, orderBody, orderSubject } = res.data.payMap

+ 7 - 1
src/views/productService/model/serviceModel.vue

@@ -64,7 +64,7 @@
       width="500px"
       append-to-body
     >
-      <payment :tableList="tableList" :orderNo="orderNo" :codeUrl="codeUrl" @close="onPaymentClose" />
+      <payment :tableList="tableList" :orderNo="orderNo" v-on="$listeners" :codeUrl="codeUrl" @close="onPaymentClose" />
     </el-dialog>
   </div>
 </template>
@@ -109,6 +109,12 @@ export default {
             console.log(this.value, 'this.value')
             const res = await tenantInfoRePay({ id: getTenantId(), val: this.value })
             // console.log(res)
+            if(res.data.amount == 0 && res.data.orderNo) {
+              this.$message.success('您已成功缴费')
+              this.onPaymentClose(true)
+              this.$listeners.getList()
+              return
+            }
             const payForm = this.payForm
             // 二维码页面, 唤起支付页面
             const { orderNo, sign, amount, orderBody, orderSubject } = res.data.payMap