소스 검색

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

mo 3 년 전
부모
커밋
ba34bea221

+ 7 - 7
src/api/repairManager.js

@@ -2,13 +2,13 @@ import request from '@/utils/request'
 import qs from 'qs'
 let api = '/api-web'
 
-export function findTechnician (data) {
-  return request({
-    url: api + '/employee/findTechnician',
-    method: 'get',
-    params: data
-  })
-}
+// export function findTechnician (data) {
+//   return request({
+//     url: api + '/employee/findTechnician',
+//     method: 'get',
+//     params: data
+//   })
+// }
 
 export function findAllTechnician (data) {
   return request({

+ 7 - 0
src/api/systemManage.js

@@ -403,3 +403,10 @@ export const getPosition = data => request2({
   method: 'get',
   requestType: 'form'
 })
+
+// 修改员工
+export const simpleUpdate = data => request2({
+  url: api +  '/employee/simpleUpdate',
+  method: 'post',
+  data
+})

+ 10 - 6
src/components/serviceRemind/index.vue

@@ -18,9 +18,9 @@
                 >当前版本:<span class="color">{{ tInfo.serverName }}</span></el-col
               >
               <el-col :span="24"
-                v-if="tInfo.expiryDate && tInfo.expiryDateEnd"
+                v-if="tInfo.expiryDateEnd"
                 >服务有效期:<span class="color"
-                  >{{ tInfo.expiryDate }} ~ {{ tInfo.expiryDateEnd }}</span
+                  >{{ tInfo.expiryDateEnd }}</span
                 ></el-col
               >
             </el-row>
@@ -89,21 +89,24 @@ export default {
   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则不能关闭弹窗
+      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) {
+        this.dialogFormVisible = false
+        return
+      }
     },
     onSubmit() {
+      this.dialogFormVisible = false
       this.$router.push('/productService')
     }
   }
@@ -195,6 +198,7 @@ export default {
     margin: 0 auto;
     width: 227px;
     height: 51px;
+    cursor: pointer;
     background: linear-gradient(270deg, #FFC65E 0%, #FFE8A6 100%);
     border-radius: 26px;
     font-size: 24px;

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

@@ -145,13 +145,16 @@
                 class="user-avatar"
                 src="@/assets/images/base/placehorder-icon.png"
               />
-              <span>{{ username }}</span>
+              <div>
+                <span>{{ username }}</span>
+                <p class="positionName" :title="positionName">{{ positionName }}</p>
+              </div>
             </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 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 }})到期
@@ -170,7 +173,7 @@
             <i class="icon_admin_edit userSize"></i>
             <span class="dropdown-text">修改密码</span>
           </el-dropdown-item>
-          <el-dropdown-item @click.native="accountSetting" v-if="$helpers.permission('/tenantInfoSetting')">
+          <el-dropdown-item @click.native="accountStatus = true" v-if="$helpers.permission('/tenantInfoSetting')">
             <i class="icon_admin_account userSize"></i>
             <span class="dropdown-text">账号设置</span>
           </el-dropdown-item>
@@ -295,6 +298,16 @@
       </div>
     </el-dialog>
 
+
+    <el-dialog
+      title="账号设置"
+      append-to-body
+      :visible.sync="accountStatus"
+      v-if="accountStatus"
+      width="650px"
+    >
+      <user-model @close="accountStatus = false"></user-model>
+    </el-dialog>
     <!-- <portal-target name="AppMain" ref="target">
       <instructions ref="instructions" @checkShow="checkShow" />
     </portal-target> -->
@@ -315,11 +328,13 @@ import { validOaUrl } from '@/utils/validate'
 import { tenantInfoQueryPage } from '@/views/organManager/api'
 import Cookies from 'js-cookie'
 import axios from 'axios'
+import userModel from './modal/userModal'
 export default {
   data() {
     let tenantConfig = sessionStorage.getItem('tenantConfig')
     tenantConfig = tenantConfig ? JSON.parse(tenantConfig) : {}
     return {
+      accountStatus: false,
       username: "",
       organName: this.$store.getters.organName,
       organNameList: [],
@@ -346,12 +361,13 @@ export default {
 
   components: {
     AppLink,
+    userModel
     // instructions,
     // Breadcrumb,
     // Hamburger
   },
   computed: {
-    ...mapGetters(["sidebar", "avatar", "permission_routes", "tenantInfo"]),
+    ...mapGetters(["sidebar", "avatar", "positionName", "permission_routes", "tenantInfo"]),
     getTopMenuActive() {
       let route = this.$route;
       //  (route, getBelongTopMenuPath(route))
@@ -389,10 +405,6 @@ export default {
     onRenew() {
       this.$router.push('/productService')
     },
-    accountSetting() {
-      // 账号设置
-      this.$router.push('/tenantSetting/tenantInfoSetting')
-    },
     submitTenant() {
       this.$refs['tenantForm'].validate((res) => {
         if(res) {
@@ -810,4 +822,11 @@ export default {
   text-overflow: ellipsis;
   overflow: hidden;
 }
+.positionName {
+  font-size: 12px;
+  width: 145px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
 </style>

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

@@ -17,7 +17,7 @@ export default {
     const vnodes = []
     if (icon) {
       icon = 'iconfont ' + icon
-      console.log(icon, 'showInfo')
+      // console.log(icon, 'showInfo')
       // vnodes.push(<svg-icon icon-class={icon} />)
       vnodes.push(<span class={icon}></span>)
     } else {

+ 263 - 0
src/layout/components/modal/userModal.vue

@@ -0,0 +1,263 @@
+<template>
+  <div class="userModal">
+    <el-form
+      :model="form"
+      :rules="rules"
+      ref="ruleForm"
+      :label-width="formLabelWidth"
+    >
+      <el-form-item label="用户头像" prop="avatar">
+        <div style="width: 150px !important">
+          <el-upload
+            class="avatar-uploader"
+            action="/api-web/uploadFile"
+            accept=".png, .jpg, .jpeg, .gif"
+            :headers="headers"
+            :show-file-list="false"
+            :on-success="handleAvatarSuccess"
+            :before-upload="beforeAvatarUpload"
+          >
+            <img v-if="form.avatar" :src="form.avatar" class="avatar" />
+            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+          </el-upload>
+        </div>
+        <div
+            class="tips"
+            style="line-height: 1;color: red;"
+          >
+            支持的格式:png, jpg, jpeg, gif;
+          </div>
+      </el-form-item>
+      <el-form-item label="姓名" prop="realName">
+        <el-input
+          v-model.trim="form.realName"
+          placeholder="请输入姓名"
+          autocomplete="off"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="手机号" prop="phone">
+        <el-input
+          v-model.trim.number="form.phone"
+          disabled
+          placeholder="请输入手机号"
+          autocomplete="off"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="性别" prop="gender">
+        <el-radio-group v-model="form.gender">
+          <el-radio :label="1">男</el-radio>
+          <el-radio :label="0">女</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="邮政编码" prop="postalCode">
+        <el-input
+          v-model.trim="form.postalCode"
+          placeholder="请输入邮政编码"
+          autocomplete="off"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="通讯地址" prop="contactAddress">
+        <el-input
+          v-model.trim="form.contactAddress"
+          placeholder="请输入通讯地址"
+          autocomplete="off"
+        ></el-input>
+      </el-form-item>
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="$listeners.close()">取 消</el-button>
+      <el-button @click="onRoleSubmit('ruleForm')" type="primary"
+        >确 定</el-button
+      >
+    </span>
+  </div>
+</template>
+
+<script>
+import { getInfo } from "@/api/user";
+import { simpleUpdate } from "@/api/systemManage";
+import { isvalidPhone } from "@/utils/validate";
+import { getToken } from "@/utils/auth";
+let validPhone = (rule, value, callback) => {
+  if (!value) {
+    callback(new Error("请输入电话号码"));
+  } else if (!isvalidPhone(value)) {
+    callback(new Error("请输入正确的11位手机号码"));
+  } else {
+    callback();
+  }
+};
+export default {
+  name: "userModel",
+  data() {
+    return {
+      headers: {
+        Authorization: getToken(),
+      },
+      formLabelWidth: "100px",
+      form: {
+        id: null,
+        avatar: null,
+        realName: null,
+        gender: null,
+        phone: null,
+        contactAddress: null,
+        postalCode: null
+      },
+      rules: {
+        avatar: [
+          { required: true, message: "请上传用户头像", trigger: "blur, change" }
+        ],
+        realName: [{ required: true, message: "请输入姓名", trigger: "blur" }],
+        gender: [{ required: true, message: "请选择性别", trigger: "change" }],
+        phone: [
+          {
+            type: "number",
+            required: true,
+            validator: validPhone,
+            trigger: "blur"
+          },
+          {
+            pattern: /^1[3456789]\d{9}$/,
+            message: "请输入正确的手机号",
+            trigger: "blur"
+          }
+        ]
+      }
+    };
+  },
+  mounted() {
+    this.__init();
+  },
+  methods: {
+    async __init() {
+      try {
+        const res = await getInfo()
+        const { id, avatar,realName,gender,phone,contactAddress,postalCode } = res.data
+        this.form = {
+          id,
+          avatar,
+          realName,
+          gender,
+          phone,
+          contactAddress,
+          postalCode
+        }
+      } catch(e) {}
+    },
+    handleAvatarSuccess(res) {
+      this.form.avatar = res.data.url;
+    },
+    beforeAvatarUpload(file) {
+      const imageType = {
+        "image/png": true,
+        "image/jpg": true,
+        "image/jpeg": true,
+        "image/gif": true
+      };
+      const isImage = imageType[file.type];
+      const isLt2M = file.size / 1024 / 1024 < 2;
+      if (!isImage) {
+        this.$message.error("只能上传图片格式!");
+        return false
+      }
+      if (!isLt2M) {
+        this.$message.error("上传头像图片大小不能超过 2MB!");
+        return false
+      }
+      // const imageWidth = this.imageWidthM;
+      // const imageHeigh = this.imageHeightM;
+      // const _URL = window.URL || window.webkitURL;
+      // const isSize = new Promise((resolve, reject) => {
+      //   const img = new Image();
+      //   img.onload = function () {
+      //     if (imageWidth && imageHeigh) {
+      //       this.width === imageWidth && this.height === imageHeigh
+      //         ? resolve()
+      //         : reject(`请上传${imageWidth}x${imageHeigh}尺寸图片`);
+      //     } else if (imageWidth && !imageHeigh) {
+      //       this.width === imageWidth
+      //         ? resolve()
+      //         : reject(`请上传宽为${imageWidth}的图片`);
+      //     } else if (!imageWidth && imageHeigh) {
+      //       this.height === imageHeigh
+      //         ? resolve()
+      //         : reject(`请上传高为${imageHeigh}的图片`);
+      //     } else {
+      //       resolve();
+      //     }
+      //   };
+      //   img.src = _URL.createObjectURL(file);
+      // }).then(
+      //   () => {
+      //     return file;
+      //   },
+      //   (src) => {
+      //     this.$message.error(src);
+      //     this.uploadImgLoading = false;
+      //     return Promise.reject();
+      //   }
+      // );
+      //  && isSize
+      return isImage && isLt2M;
+    },
+    onRoleSubmit() {
+      // employee/simpleUpdate
+      this.$refs['ruleForm'].validate(async (valid) => {
+        if (valid) {
+          simpleUpdate(this.form).then((res) => {
+              this.messageTips("修改", res);
+            });
+        } else {
+          return;
+        }
+      });
+    },
+    messageTips(title, res) {
+      if (res.code == 200) {
+        this.$message.success(title + "成功");
+        this.$listeners.close();
+      } else {
+        this.$message.error(res.msg);
+      }
+    },
+  }
+};
+</script>
+
+<style lang="less" scoped>
+/deep/.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+  background: #e7e7e7;
+  width: 150px;
+  height: 150px;
+}
+.avatar {
+  width: 100%;
+  height: 100%;
+}
+.avatar-uploader-icon {
+  font-size: 28px;
+  color: #8c939d;
+  width: 150px;
+  height: 150px;
+  line-height: 150px;
+  text-align: center;
+}
+.dialog-footer {
+  width: 100%;
+  display: block;
+  text-align: right;
+}
+/deep/.el-select,
+/deep/.el-date-editor.el-input {
+  width: 100% !important;
+}
+.setWidth {
+  display: inline-block;
+}
+</style>

+ 1 - 0
src/store/getters.js

@@ -4,6 +4,7 @@ const getters = {
   device: state => state.app.device,
   token: state => state.user.token,
   avatar: state => state.user.avatar,
+  positionName: state => state.user.positionName,
   name: state => state.user.name,
   tenantId: state => state.user.tenantId,
   permission_routes: state => state.permission.routes,

+ 2 - 2
src/store/modules/app.js

@@ -58,10 +58,10 @@ const mutations = {
     toggleDot(state.status)
   },
   TEANAT_SETTING: (state, status) => {
-    const { expiryDate, expiryDateEnd, ...res } = status
+    const { expiryDateEnd, ...res } = status
     state.tenantInfo = { 
       ...res,
-      expiryDate: expiryDate ? dayjs(expiryDate).format('YYYY-MM-DD') : null,
+      // expiryDate: expiryDate ? dayjs(expiryDate).format('YYYY-MM-DD') : null,
       expiryDateEnd: expiryDateEnd ? dayjs(expiryDateEnd).format('YYYY-MM-DD') : null
     }
   }

+ 16 - 16
src/store/modules/selects.js

@@ -15,9 +15,9 @@ import {
   vipGroupCategory,
 
 } from "@/api/vipSeting"
-import {
-  findTechnician
-} from '@/api/repairManager'
+// import {
+//   findTechnician
+// } from '@/api/repairManager'
 
 const loadings = {}
 
@@ -204,20 +204,20 @@ export default {
       }
       getOrganRole
     },
-    async setTechnician({
-      commit,
-      state
-    }, force) {
-      if ((!state.technician.length || force === true) && !loadings.commit_technician) {
-        loadings.commit_technician = findTechnician()
-        try {
-          const res = await loadings.commit_technician
-          commit('commit_technician', res.data)
-        } catch (error) {}
-        loadings.commit_technician = false
-      }
+    // async setTechnician({
+    //   commit,
+    //   state
+    // }, force) {
+    //   if ((!state.technician.length || force === true) && !loadings.commit_technician) {
+    //     loadings.commit_technician = findTechnician()
+    //     try {
+    //       const res = await loadings.commit_technician
+    //       commit('commit_technician', res.data)
+    //     } catch (error) {}
+    //     loadings.commit_technician = false
+    //   }
 
-    },
+    // },
     async setEmploys({
       commit,
       state

+ 7 - 1
src/store/modules/user.js

@@ -8,6 +8,7 @@ const state = {
   token: getToken(),
   name: '',
   avatar: '',
+  positionName: '', // 职位
   organ: '',
   organName: '',
   phone: '',
@@ -51,7 +52,10 @@ const mutations = {
   },
   SET_TENANTID:(state,tenantId)=>{
     state.tenantId = tenantId
-  }
+  },
+  SET_POSITIONNAME:(state,positionName)=>{
+    state.positionName = positionName
+  },
 }
 
 async function tenantQueryPage(id) {
@@ -119,6 +123,7 @@ const actions = {
           const isSuperAdmin = data.data.isSuperAdmin
           const roles = data.data.roles
           const tenantId = data.data.tenantId
+          const positionName = data.data.positionName
           let tenantConfig = sessionStorage.getItem('tenantConfig')
           tenantConfig = tenantConfig ? JSON.parse(tenantConfig) : {}
           if(tenantConfig.tenantStatus != 'on') {
@@ -141,6 +146,7 @@ const actions = {
           commit('SET_PHONE', phone)
           commit('SET_SUPERADMIN',isSuperAdmin)
           commit('SET_ROLES',roles)
+          commit('SET_POSITIONNAME',positionName)
           resolve(data)
         }
       }).catch(error => {

+ 42 - 2
src/styles/iconfont/iconfont.css

@@ -1,11 +1,11 @@
 @font-face {
   font-family: "iconfont"; /* Project id  */
-  src: url('iconfont.ttf?t=1641873168481') format('truetype');
+  src: url('iconfont.ttf?t=1641903083235') format('truetype');
 }
 
 .iconfont {
   font-family: "iconfont" !important;
-  font-size: 18px;
+  font-size: 16px;
   font-style: normal;
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;
@@ -343,3 +343,43 @@
   content: "\e66e";
 }
 
+.icon-caozuoshouceguanli:before {
+  content: "\e66f";
+}
+
+.icon-caidanguanli:before {
+  content: "\e670";
+}
+
+.icon-tuanlianbaojihuojilu:before {
+  content: "\e671";
+}
+
+.icon-chanpinfuwu:before {
+  content: "\e672";
+}
+
+.icon-jigouxinxishezhi:before {
+  content: "\e673";
+}
+
+.icon-jigoujiaoyiguanli:before {
+  content: "\e674";
+}
+
+.icon-youhuijuanguanli:before {
+  content: "\e675";
+}
+
+.icon-pingtaineirongguanli:before {
+  content: "\e676";
+}
+
+.icon-letuanxuncha1:before {
+  content: "\e677";
+}
+
+.icon-jingyingbaobiao1:before {
+  content: "\e678";
+}
+

BIN
src/styles/iconfont/iconfont.ttf


+ 1 - 13
src/views/baseRulesManager/index.vue

@@ -2,7 +2,7 @@
   <div class="m-container">
     <h2>
       <div class="squrt"></div>
-      特殊规则设置
+      大雅规则设置
     </h2>
     <div class="m-core">
       <!-- navMenu -->
@@ -15,15 +15,6 @@
         >
           <dayaTeamRules v-if="activeIndex==1"/>
         </el-tab-pane>
-
-        <el-tab-pane
-          label="网管&试听课规则"
-          lazy
-          name="2"
-           v-if="permission('/institutionAccompanyBaseConfig')"
-        >
-          <accompanyBaseConfig v-if="activeIndex==2"/>
-        </el-tab-pane>
         <el-tab-pane
           label="商品库存规则"
           lazy
@@ -66,17 +57,14 @@ import overallManager from "@/views/categroyManager/generalSettings/overallManag
 import dayaTeamRules from "./components/dayaTeamRules";
 import goodsRules from "./components/goodsRules";
 import institutionRules from "./components/institutionRules";
-import accompanyBaseConfig from "@/views/categroyManager/accompanyBaseConfig";
 import otherRules from './components/otherRules'
 import { permission } from "@/utils/directivePage";
 export default {
   components: {
-
     goodsRules,
     institutionRules,
     overallManager,
     dayaTeamRules,
-    accompanyBaseConfig,
     otherRules
   },
   name: "baseRulersManager",

+ 1 - 1
src/views/baseRulesManager/special.vue

@@ -2,7 +2,7 @@
   <div class="m-container">
     <h2>
       <div class="squrt"></div>
-      特殊规则默认值
+      大雅规则默认值
     </h2>
     <div class="m-core">
       <!-- navMenu -->

+ 2 - 3
src/views/categroyManager/insideSetting/modals/handover.vue

@@ -63,7 +63,7 @@ export default {
     },
     technicianByOrganId() {
       const data = {}
-      for (const item of this.selects.technician) {
+      for (const item of this.selects.roles?.REPAIR) {
         if (item.organIdList) {
           for (const organId of item.organIdList) {
             if (!data[organId]) {
@@ -93,8 +93,7 @@ export default {
   },
   async mounted() {
     this.$store.dispatch('setBranchs')
-    this.$store.dispatch('setTechnician')
-    // await this.$store.dispatch("setOrganRole");
+    await this.$store.dispatch("setOrganRole");
     this.FetchDetail()
   },
   methods: {

+ 2 - 0
src/views/categroyManager/insideSetting/staffManager.vue

@@ -261,6 +261,8 @@
                 v-model.trim.number="form.phone"
                 placeholder="请输入手机号"
                 autocomplete="off"
+                maxlength="11"
+                :max="11"
               ></el-input>
             </el-form-item>
           </el-col>

+ 8 - 0
src/views/courseRulersManager/index.vue

@@ -66,6 +66,14 @@
         >
           <serverMinitor v-if="activeIndex==6"/>
         </el-tab-pane>
+        <el-tab-pane
+          label="网管&试听课规则"
+          lazy
+          name="7"
+           v-if="permission('/institutionAccompanyBaseConfig')"
+        >
+          <accompanyBaseConfig v-if="activeIndex==7"/>
+        </el-tab-pane>
         <!--
         <el-tab-pane
           label="登录设置"

+ 1 - 1
src/views/dictionaryManager/index.vue

@@ -3,7 +3,7 @@
   <div class="m-container">
     <h2>
       <div class="squrt"></div>
-      功能字典
+      云教练功能字典
     </h2>
     <div class="m-core">
       <save-form

+ 15 - 15
src/views/organManager/components/memberSetting.vue

@@ -9,63 +9,63 @@
       ></el-alert>
       <el-form ref="form" label-position="top" :model="form" label-width="140px"  :inline="true">
         <el-form-item label="按天会员激活金额" prop="day_divide"
-          :rules="[{ required: true, message: '请输入按天会员激活金额', trigger: 'blur' }]">
+          :rules="[{ required: true, message: '请输入会员激活金额', trigger: 'blur' }]">
           <el-input
             :disabled="isDisabled"
-            placeholder="请输入按天会员激活金额"
+            placeholder="请输入会员激活金额"
             v-model="form.day_divide"
             @keyup.native='keyupEvent($event)'
             style="width: 238px;"
           >
-            <div slot="append">元/天</div>
+            <div slot="append">元/天/人</div>
           </el-input>
         </el-form-item>
         <el-form-item label="月度会员激活价" prop="month_divide"
-          :rules="[{ required: true, message: '请输入月度会员激活价', trigger: 'blur' }]">
+          :rules="[{ required: true, message: '请输入会员激活价', trigger: 'blur' }]">
           <el-input
             :disabled="isDisabled"
-            placeholder="请输入月度会员激活价"
+            placeholder="请输入会员激活价"
             v-model="form.month_divide"
             @keyup.native='keyupEvent($event)'
             style="width: 238px;"
           >
-            <div slot="append">元/月</div>
+            <div slot="append">元/月/人</div>
           </el-input>
         </el-form-item>
         <el-form-item label="季度会员激活价" prop="quarter_divide"
-          :rules="[{ required: true, message: '请输入月度会员激活价', trigger: 'blur' }]">
+          :rules="[{ required: true, message: '请输入会员激活价', trigger: 'blur' }]">
           <el-input
             :disabled="isDisabled"
-            placeholder="请输入季度会员激活价"
+            placeholder="请输入会员激活价"
             v-model="form.quarter_divide"
             @keyup.native='keyupEvent($event)'
             style="width: 238px;"
           >
-            <div slot="append">元/季</div>
+            <div slot="append">元/季/人</div>
           </el-input>
         </el-form-item>
         <el-form-item label="半年会员激活价" prop="half_year_divide"
-          :rules="[{ required: true, message: '请输入月度会员激活价', trigger: 'blur' }]">
+          :rules="[{ required: true, message: '请输入会员激活价', trigger: 'blur' }]">
           <el-input
             :disabled="isDisabled"
-            placeholder="请输入半年会员激活价"
+            placeholder="请输入会员激活价"
             @keyup.native='keyupEvent($event)'
             v-model="form.half_year_divide"
             style="width: 238px;"
           >
-            <div slot="append">元/半年</div>
+            <div slot="append">元/半年/人</div>
           </el-input>
         </el-form-item>
         <el-form-item label="年度会员激活价" prop="year_divide"
-          :rules="[{ required: true, message: '请输入月度会员激活价', trigger: 'blur' }]">
+          :rules="[{ required: true, message: '请输入会员激活价', trigger: 'blur' }]">
           <el-input
             :disabled="isDisabled"
-            placeholder="请输入年度会员激活价"
+            placeholder="请输入会员激活价"
             @keyup.native='keyupEvent($event)'
             v-model="form.year_divide"
             style="width: 238px;"
           >
-            <div slot="append">元/年</div>
+            <div slot="append">元/年/人</div>
           </el-input>
         </el-form-item>
         <el-form-item label="可用教材" prop="teachingMaterialId"

+ 4 - 4
src/views/organManager/components/openService.vue

@@ -44,7 +44,7 @@
               :label="item.studentUpLimit" :value="item.id"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="合同价" prop="contractPrice"
+        <el-form-item label="合同价(续费价格)" prop="contractPrice"
           :rules="[{ required: true, message: '请输入合同价', trigger: 'blur' }]">
           <el-input
             :disabled="isDisabled"
@@ -79,10 +79,10 @@
             <div slot="append">{{ unitSuffix }}</div>
           </el-input>
         </el-form-item>
-        <el-form-item label="开通价格" prop="payAmount"
-          :rules="[{ required: true, message: '请输入开通价格', trigger: 'blur' }]">
+        <el-form-item label="首次开通价格" prop="payAmount"
+          :rules="[{ required: true, message: '请输入首次开通价格', trigger: 'blur' }]">
           <el-input
-            placeholder="请输入开通价格"
+            placeholder="请输入首次开通价格"
             type="number"
             @keyup.native='keyupEvent($event)'
             v-model="form.payAmount"

+ 27 - 26
src/views/organManager/components/organInfo.vue

@@ -26,9 +26,19 @@
                 <img v-if="form.logo" :src="form.logo" class="avatar" />
                 <i v-else class="el-icon-plus avatar-uploader-icon"></i>
               </el-upload>
-              <div class="tips" v-show="!isDisabled" style="line-height: 1;color: red;">图片尺寸:72x72;支持的格式:png;</div>
+              <div class="tips" v-show="!isDisabled" style="line-height: 1;color: red;">仅支持图片尺寸:72x72;格式:png;</div>
             </div>
           </el-form-item>
+          <el-form-item label="机构简介" prop="remark">
+            <el-input
+              type="textarea"
+              show-word-limit
+              :max="200"
+              :disabled="isDisabled"
+              v-model.trim="form.remark"
+              placeholder="请输入机构简介"
+            ></el-input>
+          </el-form-item>
           <el-form-item label="主题" v-if="tenantInfo == 'SETTING'" prop="theme" :rules="[{ required: true, message: '请选择主题', trigger: 'change' }]">
             <el-select
               v-model="form.theme"
@@ -49,12 +59,22 @@
             </div>
           </el-form-item> -->
         </el-col>
-        <el-form-item label="公司全称" prop="tsignName"
-          :rules="[{ required: true, message: '请输入公司全称', trigger: 'blur' }]">
+        <el-form-item label="机构全称" prop="tsignName"
+          :rules="[{ required: true, message: '请输入机构全称', trigger: 'blur' }]">
           <el-input
             v-model.trim="form.tsignName"
             :disabled="isDisabled || tenantInfo == 'SETTING'"
-            placeholder="请输入公司全称"
+            placeholder="请输入机构全称"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="机构简称" prop="name"
+          :rules="[{ required: true, message: '请输入机构简称', trigger: 'blur' }]">
+          <el-input
+            v-model.trim="form.name"
+            :disabled="isDisabled"
+            :max="8"
+            :maxlength="8"
+            placeholder="请输入机构简称(最多8个字)"
           ></el-input>
         </el-form-item>
         <el-form-item label="营业执照编号" prop="tsignCode"
@@ -102,14 +122,11 @@
             </el-select>
           </el-form-item>
         </el-form-item>
-        <el-form-item label="机构简称" prop="name"
-          :rules="[{ required: true, message: '请输入机构简称', trigger: 'blur' }]">
+        <el-form-item label="机构地址" prop="address">
           <el-input
-            v-model.trim="form.name"
+            v-model.trim="form.address"
             :disabled="isDisabled"
-            :max="8"
-            :maxlength="8"
-            placeholder="请输入机构简称(最多8个字)"
+            placeholder="请输入机构地址"
           ></el-input>
         </el-form-item>
         <el-form-item label="机构联系人" prop="contacts"
@@ -151,22 +168,6 @@
             placeholder="请输入机构客服电话"
           ></el-input>
         </el-form-item>
-        <el-form-item label="机构地址" prop="address">
-          <el-input
-            v-model.trim="form.address"
-            :disabled="isDisabled"
-            placeholder="请输入机构地址"
-          ></el-input>
-        </el-form-item>
-        <el-form-item label="机构简介" prop="remark">
-          <el-input
-            type="textarea"
-            show-word-limit
-            :max="200"
-            :disabled="isDisabled"
-            v-model.trim="form.remark"
-          ></el-input>
-        </el-form-item>
       </el-form>
   </div>
 </template>

+ 18 - 0
src/views/organManager/components/rateSetting.vue

@@ -7,9 +7,27 @@
         :closable="false"
         style="margin-bottom: 20px"
       ></el-alert>
+
       <el-form ref="form" label-position="top" :model="form" label-width="120px"  :inline="true">
         <el-form-item label="手续费费率" prop="chargeRate"
           :rules="[{ required: true, message: '请输入手续费费率', trigger: 'blur' }]">
+          <template slot="label">
+            手续费费率
+            <el-tooltip placement="top" popper-class="mTooltip">
+              <div slot="content">
+                每笔交易支付通道收取的手续费比例
+              </div>
+              <i
+                class="el-icon-question"
+                style="
+                  font-size: 18px;
+                  color: #f56c6c;
+                  position: relative;
+                  top: 2px;
+                "
+              ></i>
+            </el-tooltip>
+          </template>
           <el-input
             :disabled="isDisabled"
             v-model="form.chargeRate"

+ 1 - 1
src/views/organManager/organOperation.vue

@@ -24,7 +24,7 @@
           <roomRules ref="roomRules" :data="config" :type="getType" />
           <rateSetting ref="rateSetting" :data="config" :type="getType" />
         </div>
-        <div style="padding-left: 0;display: flex;width: 100%;" v-if="payType != 'look'">
+        <div style="padding-left: 0;display: flex;width: 100%;justify-content: center;" v-if="payType != 'look'">
           <el-button type="primary"  v-if="active > 0" @click="onPrev">上一步</el-button>
           <el-button type="primary"  @click="onNext">{{ active >= 2 ? '提交' : '下一步' }}</el-button>
         </div>

+ 5 - 5
src/views/platformManager/productManger/operationModel.vue

@@ -28,16 +28,16 @@
           :closable="false"
           style="margin-bottom: 20px"
         ></el-alert>
-      <el-form-item label="搜索">
+      <el-form-item label="搜索" style="margin-bottom: 0;">
         <el-input style="width:210px"
-                  v-model.trim="seachRoleValue"></el-input>
+                  v-model.trim="seachRoleValue" clearable></el-input>
         <el-button style="margin-left: 10px"
                     type="danger"
                     @click="seachRoles">搜索</el-button>
-        <el-button type="primary"
-                    @click="onReSetRole">重置</el-button>
+        <!-- <el-button type="primary"
+                    @click="onReSetRole">重置</el-button> -->
       </el-form-item>
-      <el-form-item >
+      <el-form-item style="max-height: 300px;overflow: hidden;overflow-y: auto;">
         <el-checkbox :indeterminate="isIndeterminate"
                       @change="onCheckAll"
                       v-model.trim="checkAll">全选</el-checkbox>

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

@@ -12,7 +12,7 @@
             <el-col :span="12" class="border">
               <el-row>
                 <el-col :span="24">当前版本:<span class="color">{{ dataInfo.serverName }}</span></el-col>
-                <el-col :span="24">服务有效期:<span class="color" v-if="dataInfo.expiryDate && dataInfo.expiryDateEnd">{{ dataInfo.expiryDate }} ~ {{ dataInfo.expiryDateEnd }}</span></el-col>
+                <el-col :span="24">服务有效期:<span class="color" v-if="dataInfo.expiryDateEnd">{{ dataInfo.expiryDateEnd }}</span></el-col>
               </el-row>
             </el-col>
             <el-col :span="10" :offset="2">
@@ -119,7 +119,7 @@ export default {
       try {
         const res = await queryTenantInfoSumm()
         this.dataInfo = res.data || {}
-        this.dataInfo.expiryDate = res.data.expiryDate ? dayjs(res.data.expiryDate).format('YYYY-MM-DD') : null
+        // 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
         this.dataInfo.validRemaining = res.data.validRemaining || 0
       } catch(e) { }

+ 1 - 1
src/views/resetTeaming/modals/instrumentModel.vue

@@ -85,7 +85,7 @@
                     >
                       {{ con.goodsList[0].specification }}
                     </div>
-                    <el-tag effect="plain" size="mini" style="margin-left: 10px; color: #01C1B5;" @click.stop="onLookRule" v-if="con.groupRemissionCourseFee == 1 && con.kitType == 'GROUP'">课程减免</el-tag>
+                    <el-tag effect="plain" size="mini" style="margin-left: 10px; color: #ff4644;" @click.stop="onLookRule" v-if="con.groupRemissionCourseFee == 1 && con.kitType == 'GROUP'">课程减免</el-tag>
                   </div>
               </el-col>
             </el-row>