lex-xin %!s(int64=3) %!d(string=hai) anos
pai
achega
55d354b925

+ 27 - 19
src/views/organManager/components/memberSetting.vue

@@ -8,13 +8,13 @@
         style="margin-bottom: 20px"
       ></el-alert>
       <el-form ref="form" :model="form" label-width="140px" size="small" :inline="true">
-        <el-form-item label="月度会员分润金额" prop="month_divide"
-          :rules="[{ required: true, message: '请输入月度会员分润金额', trigger: 'blur' },
-            { type: 'number', message: '月度会员分润金额必须为数字值' }]">
+        <el-form-item label="月度会员激活价" prop="month_divide"
+          :rules="[{ required: true, message: '请输入月度会员激活价', trigger: 'blur' },
+            { type: 'number', message: '月度会员激活价必须为数字值' }]">
           <el-input
             size="small"
             :disabled="isDisabled"
-            placeholder="请输入月度会员分润金额"
+            placeholder="请输入月度会员激活价"
             v-model.number="form.month_divide"
             type="number"
             style="width: 238px;"
@@ -22,13 +22,13 @@
             <div slot="append">元/月</div>
           </el-input>
         </el-form-item>
-        <el-form-item label="季度会员分润金额" prop="quarter_divide"
-          :rules="[{ required: true, message: '请输入月度会员分润金额', trigger: 'blur' },
-            { type: 'number', message: '季度会员分润金额必须为数字值' }]">
+        <el-form-item label="季度会员激活价" prop="quarter_divide"
+          :rules="[{ required: true, message: '请输入月度会员激活价', trigger: 'blur' },
+            { type: 'number', message: '季度会员激活价必须为数字值' }]">
           <el-input
             size="small"
             :disabled="isDisabled"
-            placeholder="请输入季度会员分润金额"
+            placeholder="请输入季度会员激活价"
             v-model.number="form.quarter_divide"
             type="number"
             style="width: 238px;"
@@ -36,13 +36,13 @@
             <div slot="append">元/季</div>
           </el-input>
         </el-form-item>
-        <el-form-item label="半年会员分润金额" prop="half_year_divide"
-          :rules="[{ required: true, message: '请输入月度会员分润金额', trigger: 'blur' },
-            { type: 'number', message: '半年会员分润金额必须为数字值' }]">
+        <el-form-item label="半年会员激活价" prop="half_year_divide"
+          :rules="[{ required: true, message: '请输入月度会员激活价', trigger: 'blur' },
+            { type: 'number', message: '半年会员激活价必须为数字值' }]">
           <el-input
             size="small"
             :disabled="isDisabled"
-            placeholder="请输入半年会员分润金额"
+            placeholder="请输入半年会员激活价"
             type="number"
             v-model.number="form.half_year_divide"
             style="width: 238px;"
@@ -50,13 +50,13 @@
             <div slot="append">元/半年</div>
           </el-input>
         </el-form-item>
-        <el-form-item label="年度会员分润金额" prop="year_divide"
-          :rules="[{ required: true, message: '请输入月度会员分润金额', trigger: 'blur' },
-            { type: 'number', message: '年度会员分润金额必须为数字值' }]">
+        <el-form-item label="年度会员激活价" prop="year_divide"
+          :rules="[{ required: true, message: '请输入月度会员激活价', trigger: 'blur' },
+            { type: 'number', message: '年度会员激活价必须为数字值' }]">
           <el-input
             size="small"
             :disabled="isDisabled"
-            placeholder="请输入年度会员分润金额"
+            placeholder="请输入年度会员激活价"
             type="number"
             v-model.number="form.year_divide"
             style="width: 238px;"
@@ -103,7 +103,7 @@
 // }
 import { getSysMusicScoreList } from '@/views/teachManager/api'
 export default {
-  props: ['type'],
+  props: ['type', 'data'],
   data () {
     return {
       form: {
@@ -116,8 +116,16 @@ export default {
       teachList: [] // 教材列表
     };
   },
-  mounted () {
-    this.__init()
+  async mounted () {
+    await this.__init()
+    if(this.data) {
+      const { config, teachingMaterialId } = this.data
+      const tmpConfig = config ? JSON.parse(config) : {}
+      this.form = {
+        ...tmpConfig.member_config,
+        teachingMaterialId: teachingMaterialId.split(',').map(i => Number(i))
+      }
+    }
   },
   computed: {
     isDisabled() {

+ 23 - 11
src/views/organManager/components/openService.vue

@@ -7,7 +7,7 @@
         :closable="false"
         style="margin-bottom: 20px"
       ></el-alert>
-      <el-form ref="form" :model="form" label-width="120px" size="small" :inline="true">
+      <el-form ref="form" :model="form" label-width="140px" size="small" :inline="true">
         <el-form-item label="服务名称" prop="serveId"
           :rules="[{ required: true, message: '请选择服务名称', trigger: 'change' }]">
           <el-select
@@ -34,14 +34,14 @@
               :label="paymentMode[item.mode]" :value="item.mode"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="学员上限" prop="studentUpLimit"
-          :rules="[{ required: true, message: '请选择学员上限', trigger: 'change' }]">
+        <el-form-item label="学员上限" prop="serveDetailId"
+          :rules="[{ required: true, message: '请选择学员上限', trigger: 'blur, change' }]">
           <el-select
             placeholder="请选择学员上限"
             :disabled="isDisabled"
             @change="onStudentUpLimitChange"
             style="width: 238px !important"
-            v-model="form.studentUpLimit"
+            v-model="form.serveDetailId"
           >
             <el-option v-for="(item, index) in studentUpList" :key="index"
               :label="item.studentUpLimit" :value="item.id"></el-option>
@@ -104,7 +104,7 @@
 import { platformServeQueryPage, platformServeQueryModeDetail } from '@/views/platformManager/serviceManager/api'
 import { paymentMode } from '@/constant'
 export default {
-  props: ['type'],
+  props: ['type', 'data'],
   data () {
     return {
       paymentMode,
@@ -119,17 +119,27 @@ export default {
         expiryCount: null,
         payAmount: null
       },
+      payState: null,
       productList: [],
       modeList: [],
       studentUpList: [], // 学员上限列表
     };
   },
-  mounted () {
-    this.__init()
+  async mounted () {
+    await this.__init()
+    if(this.data) {
+      const data = this.data
+      this.payState = data.payState
+      data.serveId ? (await this.onProductChange(data.serveId)) : null
+      this.form = data
+      this.form.serveMode = data.expiryUnit
+      data.serveDetailId ? (await this.onModeChange(data.expiryUnit, 'none')) : null
+    }
   },
   computed: {
     isDisabled() {
-      return this.type == 'setting' ? true : false
+      console.log(this.payState)
+      return this.type == 'setting' || this.payState == 1  ? true : false
     },
     unitSuffix() {
       // 后辍默认为年
@@ -160,7 +170,7 @@ export default {
     getValues() {
       return this.form
     },
-    onModeChange(val) { // 付费模式改变时
+    onModeChange(val, type) { // 付费模式改变时
       const form = this.form
       for(let item of (this.modeList || [])) {
         if(val == item.mode) {
@@ -168,8 +178,10 @@ export default {
           form.expiryUnit = item.mode
 
           // ...
-          form.studentUpLimit = null // 学员上限
-          form.originalPrice = null // 重置原价
+          if(type != 'none') {
+            form.serveDetailId = null // 学员上限
+            form.originalPrice = null // 重置原价
+          }
         }
       }
     },

+ 6 - 4
src/views/organManager/components/organInfo.vue

@@ -7,7 +7,7 @@
         :closable="false"
         style="margin-bottom: 20px"
       ></el-alert>
-      <el-form ref="form" :model="form" label-width="120px" :inline="true">
+      <el-form ref="form" :model="form" label-width="140px" :inline="true">
         <el-col :span="24">
           <el-form-item label="机构LOGO" prop="logo"
             :rules="[{ required: true, message: '请上传机构LOGO', trigger: 'blur, change' }]">
@@ -71,6 +71,7 @@
           <el-input
             v-model.trim="form.customerServicePhone"
             size="small"
+            type="number"
             placeholder="请输入机构客服电话"
           ></el-input>
         </el-form-item>
@@ -97,11 +98,9 @@
 <script>
 import { getToken } from "@/utils/auth";
 export default {
-  name: 'serviceManger',
+  props: ['data'],
   data () {
-    const query = this.$route.query
     return {
-      payType: query.type,
       headers: {
         Authorization: getToken(),
       },
@@ -120,6 +119,9 @@ export default {
     };
   },
   mounted () {
+    if(this.data) {
+      this.form = { ...this.data }
+    }
   },
   methods: {
     onSubmit() {

+ 6 - 1
src/views/organManager/components/rateSetting.vue

@@ -28,10 +28,11 @@
 
 <script>
 export default {
-  props: ['type'],
+  props: ['type', 'data'],
   data () {
     return {
       form: {
+        id: null,
         chargeRate: null
       }
     };
@@ -42,6 +43,10 @@ export default {
     }
   },
   mounted () {
+    if(this.data) {
+      this.form.id = this.data.id
+      this.form.chargeRate = this.data.chargeRate
+    }
   },
   methods: {
     onSubmit() {

+ 21 - 4
src/views/organManager/components/roomRules.vue

@@ -42,7 +42,7 @@
 
 <script>
 export default {
-  props: ['type'],
+  props: ['type', 'data'],
   data () {
     return {
       form: {
@@ -53,6 +53,7 @@ export default {
     };
   },
   mounted () {
+    this.setValues()
   },
   computed: {
     isDisabled() {
@@ -94,13 +95,29 @@ export default {
       })
       return status
     },
+    setValues() {
+      if(this.data) {
+        const { config } = this.data
+        const tempC = config ? JSON.parse(config) : {}
+        const { cloud_room_rule } = tempC
+        console.log(cloud_room_rule)
+        this.form.cloud_room_up_limit = cloud_room_rule.cloud_room_up_limit
+        const roomCloud = cloud_room_rule.cloud_room_config
+        if(!roomCloud) return
+        let tempConfig = []
+        for(let item in roomCloud) {
+          tempConfig.push({
+            num: item,
+            price: roomCloud[item]
+          })
+        }
+        this.form.roomConfig = tempConfig
+      }
+    },
     getValues() {
       const { roomConfig, cloud_room_up_limit } = this.form
       let cloud_room_config = {}
       roomConfig.forEach(room => {
-        // if(typeof room.price == 'number') {
-
-        // }
         cloud_room_config[room.num] = room.price
       });
       return {

+ 31 - 10
src/views/organManager/index.vue

@@ -59,7 +59,7 @@
         <el-button native-type="reset" type="primary">重置</el-button>
       </el-form-item>
     </save-form>
-    <el-button size="small" style="margin-bottom: 20px;" type="primary" v-permission="'platformServe/add'" @click="openService('create')" icon="el-icon-plus">新增机构</el-button>
+    <el-button size="small" style="margin-bottom: 20px;" type="primary" v-permission="'tenantInfo/add'" @click="openService('create')" icon="el-icon-plus">新增机构</el-button>
     <!-- 列表 -->
     <div class="tableWrap">
       <el-table
@@ -98,29 +98,29 @@
         <el-table-column align="center" label="操作">
           <template slot-scope="scope">
             <el-button
-              @click="openService('update', scope.row)"
-              v-permission="'platformServe/update'"
+              @click="openService('look', scope.row)"
+              v-permission="'tenantInfo/info'"
               type="text"
               size="small"
               >查看</el-button>
             <el-button
               @click="openService('update', scope.row)"
-              v-permission="'platformServe/update'"
+              v-permission="'tenantInfo/update'"
               type="text"
               size="small"
               >修改</el-button>
             <el-button
-              @click="delService(scope.row)"
-              v-permission="'platformServe/delete'"
+              @click="changeOrgan(scope.row)"
+              v-permission="scope.row.state == 1 ? 'tenantInfo/opsState/stop' : 'tenantInfo/opsState/open'"
               type="text"
               size="small"
-              >停用</el-button>
-            <el-button
+              >{{ scope.row.state == 1 ? '停用' : '启用' }}</el-button>
+            <!-- <el-button
               @click="openService('update', scope.row)"
               v-permission="'platformServe/update'"
               type="text"
               size="small"
-              >重置密码</el-button>
+              >重置密码</el-button> -->
           </template>
         </el-table-column>
       </el-table>
@@ -189,8 +189,29 @@ export default {
       this.searchForm = { ...initSearch };
       this.search();
     },
+    changeOrgan(row) {
+      const stateStr = row.state == 1 ? '停用' : '启用'
+      const state = row.state == 1 ? 2 : 1
+      this.$confirm(`是否${stateStr}?`, "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then( async() => {
+        try{
+         await tenantInfoOpsState({ id: row.id, state})
+         this.$message.success(stateStr + '成功')
+         this.getList()
+        }catch{}
+      });
+    },
     openService(type, row) {
-      const tagTitle = type == 'update' ? '修改' : '创建'
+      let tagTitle = '创建'
+      if(type == 'update') {
+        tagTitle ='修改'
+      } else if(type == 'look') {
+        tagTitle = '查看'
+      }
+
       this.$router.push({
         path: '/federationManager/organOperation',
         query: {

+ 55 - 19
src/views/organManager/organOperation.vue

@@ -2,10 +2,10 @@
 <template>
   <div class="m-container">
     <h2>
-      <el-page-header @back="onCancel" :content="(payType == 'create' ? '新增机构' : '修改机构')"></el-page-header>
+      <el-page-header @back="onCancel" :content="title"></el-page-header>
     </h2>
     <div class="m-core" style="overflow: hidden">
-      <div style="display: block;overflow: hidden;">
+      <div style="display: block;overflow: hidden;" v-if="payType != 'look'">
         <el-col :span="8" :lg="10" :md="18" :sm="18" :xs="24">
           <el-steps :active="active" finish-status="success" simple align-center>
             <el-step title="机构信息" ></el-step>
@@ -14,18 +14,20 @@
           </el-steps>
         </el-col>
       </div>
-      <!-- 机构基本信息 -->
-      <organInfo ref="organInfo" v-show="active == 0" />
-      <!-- 产品定价 确认设置 -->
-      <div v-show="[1, 2].includes(active)">
-        <openService ref="openService" :type="getType" />
-        <memberSetting ref="memberSetting" :type="getType" />
-        <roomRules ref="roomRules" :type="getType" />
-        <rateSetting ref="rateSetting" :type="getType" />
-      </div>
-      <div style="padding-left: 120px;display: flex;width: 100%;">
-        <el-button type="primary" size="small" v-if="active > 0" @click="active -= 1">上一步</el-button>
-        <el-button type="primary" size="small" @click="onNext">{{ active >= 2 ? '提交' : '下一步' }}</el-button>
+      <div v-if="status">
+        <!-- 机构基本信息 -->
+        <organInfo ref="organInfo" :data="info" v-show="active == 0" />
+        <!-- 产品定价 确认设置 -->
+        <div v-show="[1, 2].includes(active)">
+          <openService ref="openService" :data="productInfo" :type="getType" />
+          <memberSetting ref="memberSetting" :data="config" :type="getType" />
+          <roomRules ref="roomRules" :data="config" :type="getType" />
+          <rateSetting ref="rateSetting" :data="config" :type="getType" />
+        </div>
+        <div style="padding-left: 140px;display: flex;width: 100%;" v-if="payType != 'look'">
+          <el-button type="primary" size="small" v-if="active > 0" @click="active -= 1">上一步</el-button>
+          <el-button type="primary" size="small" @click="onNext">{{ active >= 2 ? '提交' : '下一步' }}</el-button>
+        </div>
       </div>
     </div>
   </div>
@@ -37,7 +39,7 @@ import openService from './components/openService'
 import memberSetting from './components/memberSetting'
 import roomRules from './components/roomRules'
 import rateSetting from './components/rateSetting'
-import { tenantInfoAdd } from './api'
+import { tenantInfoAdd, tenantInfoInfo, tenantInfoUpdate } from './api'
 export default {
   name: 'serviceManger',
   components: { organInfo, openService, memberSetting, roomRules, rateSetting },
@@ -45,10 +47,35 @@ export default {
     const query = this.$route.query
     return {
       payType: query.type,
+      id: query.id,
       active: 0, // 当前第几步
+      config: null,
+      productInfo: null,
+      info: null,
+      status: false,
+      title: '新增机构',
+      payState: null, // 支付状态
     };
   },
-  mounted () {
+  async mounted () {
+
+    if(this.payType !== 'create') {
+      try {
+        if(this.payType == 'look') {
+          this.active = 2
+          this.title = '查看机构'
+        } else {
+          this.title = '修改机构'
+        }
+        const res = await tenantInfoInfo({ id: this.id })
+        const { config, productInfo, ...other } = res.data
+        this.config = config
+        this.productInfo = productInfo
+        this.info = { ...other }
+        this.productInfo.payState = this.info.payState
+      } catch(e) {}
+    }
+    this.status = true
   },
   computed: {
     getType() {
@@ -82,7 +109,7 @@ export default {
         const { member_config, teachingMaterialId } = memberData
         let config = {
           member_config,
-          ruleData
+          ...ruleData
         }
         let params = {
           ...organData,
@@ -95,8 +122,17 @@ export default {
         }
         console.log(params)
         try {
-          const res = await tenantInfoAdd(params)
-          console.log(res)
+          if(this.payType == 'create') {
+            const res = await tenantInfoAdd(params)
+            console.log(res)
+            this.$message.success('新增机构成功')
+            this.onCancel()
+          } else if(this.payType == 'update') {
+            const res = await tenantInfoUpdate(params)
+            console.log(res)
+            this.$message.success('修改机构成功')
+            this.onCancel()
+          }
         } catch(e) {}
       }
     },