浏览代码

提交一下(反写完成)

1
mo 3 年之前
父节点
当前提交
c7faa9daf5

+ 52 - 43
src/api/vipSeting.js

@@ -1,8 +1,9 @@
 import request from '@/utils/request'
+import request2 from '@/utils/request2'
 import qs from 'qs'
 let api = '/api-web'
 // 获取vip 分类列表
-export function vipGroupCategory (data) {
+export function vipGroupCategory(data) {
   return request({
     url: api + '/vipGroupCategory/queryAll',
     method: 'get',
@@ -11,7 +12,7 @@ export function vipGroupCategory (data) {
 }
 
 // 获取vip 老师默认分类列表
-export function findTeacherDefaultSalary (data) {
+export function findTeacherDefaultSalary(data) {
   return request({
     url: api + '/vipGroupCategory/findTeacherDefaultSalary',
     method: 'post',
@@ -20,7 +21,7 @@ export function findTeacherDefaultSalary (data) {
 }
 
 // 获取 vip循环列表
-export function getDefaultClassesCycle (data) {
+export function getDefaultClassesCycle(data) {
   return request({
     url: api + '/vipGroupDefaultClassesCycle/queryAll',
     method: 'get',
@@ -29,7 +30,7 @@ export function getDefaultClassesCycle (data) {
 }
 
 // 单个添加vip课程类型
-export function addVipGroupCategory (data) {
+export function addVipGroupCategory(data) {
   return request({
     url: api + '/vipGroupCategory/add',
     method: 'post',
@@ -38,7 +39,7 @@ export function addVipGroupCategory (data) {
 }
 
 // 单个修改vip课程类型
-export function resetVipGroupCategory (data) {
+export function resetVipGroupCategory(data) {
   return request({
     url: api + '/vipGroupCategory/update',
     method: 'post',
@@ -46,7 +47,7 @@ export function resetVipGroupCategory (data) {
   })
 }
 // 删除单个vip类型
-export function removeVipGroupCategory (data) {
+export function removeVipGroupCategory(data) {
   return request({
     url: api + '/vipGroupCategory/delete',
     method: 'post',
@@ -55,7 +56,7 @@ export function removeVipGroupCategory (data) {
 }
 
 // 新增排课周期
-export function addDefaultClassesCycle (data) {
+export function addDefaultClassesCycle(data) {
   return request({
     url: api + '/vipGroupDefaultClassesCycle/add',
     method: 'post',
@@ -64,7 +65,7 @@ export function addDefaultClassesCycle (data) {
 }
 
 // 修改排课周期
-export function resetDefaultClassesCycle (data) {
+export function resetDefaultClassesCycle(data) {
   return request({
     url: api + '/vipGroupDefaultClassesCycle/update',
     method: 'post',
@@ -73,7 +74,7 @@ export function resetDefaultClassesCycle (data) {
 }
 
 // 删除排课周期
-export function removeDefaultClassesCycle (data) {
+export function removeDefaultClassesCycle(data) {
   return request({
     url: api + '/vipGroupDefaultClassesCycle/delete',
     method: 'post',
@@ -82,7 +83,7 @@ export function removeDefaultClassesCycle (data) {
 }
 
 // 新增默认单价
-export function defaultClassesUnitPrice (data) {
+export function defaultClassesUnitPrice(data) {
   return request({
     url: api + '/vipGroupDefaultClassesUnitPrice/add',
     method: 'post',
@@ -91,7 +92,7 @@ export function defaultClassesUnitPrice (data) {
 }
 
 // 查询活动方案列表
-export function vipGroupActivity (data) {
+export function vipGroupActivity(data) {
   return request({
     url: api + '/vipGroupActivity/queryPage',
     method: 'get',
@@ -100,7 +101,7 @@ export function vipGroupActivity (data) {
 }
 
 // 根据课程类型获取活动方案
-export function vipGroupActivityFind (data) {
+export function vipGroupActivityFind(data) {
   return request({
     url: api + '/vipGroupActivity/findByVipGroupCategory',
     method: 'get',
@@ -109,7 +110,7 @@ export function vipGroupActivityFind (data) {
 }
 
 // 新增vip课活动方案
-export function addVipActive (data) {
+export function addVipActive(data) {
   return request({
     url: api + '/vipGroupActivity/addVipGroupActivity',
     method: 'POST',
@@ -117,7 +118,7 @@ export function addVipActive (data) {
   })
 }
 // 修改vio课活动方案
-export function resetVipActive (data) {
+export function resetVipActive(data) {
   return request({
     url: api + '/vipGroupActivity/update',
     method: 'POST',
@@ -127,7 +128,7 @@ export function resetVipActive (data) {
 
 // 删除vip课
 
-export function removeVipActive (data) {
+export function removeVipActive(data) {
   return request({
     url: api + '/vipGroupActivity/delete',
     method: 'POST',
@@ -136,7 +137,7 @@ export function removeVipActive (data) {
 }
 
 // 获取vip列表
-export function getVipList (data) {
+export function getVipList(data) {
   return request({
     url: api + '/vipGroupManage/queryAll',
     method: 'GET',
@@ -144,7 +145,7 @@ export function getVipList (data) {
   })
 }
 // 根据id获取vip详情
-export function getVipGroupDetail (data) {
+export function getVipGroupDetail(data) {
   return request({
     url: api + `/vipGroupManage/getVipGroupDetail`,
     method: 'GET',
@@ -153,7 +154,7 @@ export function getVipGroupDetail (data) {
 }
 
 // 根据id获取vip详情
-export function getVipGroupDetailForAudit (data) {
+export function getVipGroupDetailForAudit(data) {
   return request({
     url: api + `/vipGroupManage/getVipGroupDetailForAudit`,
     method: 'GET',
@@ -162,7 +163,7 @@ export function getVipGroupDetailForAudit (data) {
 }
 
 // 根据vipid获取学员
-export function findVipGroupStudents (data) {
+export function findVipGroupStudents(data) {
   return request({
     url: api + '/vipGroupManage/findVipGroupStudents',
     method: 'GET',
@@ -171,7 +172,7 @@ export function findVipGroupStudents (data) {
 }
 
 // 根据vipid和学生id 退学
-export function leaveSchool (data) {
+export function leaveSchool(data) {
   return request({
     url: api + '/vipGroupManage/applyRefundForStudent',
     method: 'POST',
@@ -180,7 +181,7 @@ export function leaveSchool (data) {
 }
 
 // 获取vip教学记录
-export function findVipGroupTeachingRecord (data) {
+export function findVipGroupTeachingRecord(data) {
   return request({
     url: api + '/vipGroupManage/findVipGroupTeachingRecord',
     method: 'get',
@@ -189,7 +190,7 @@ export function findVipGroupTeachingRecord (data) {
 }
 
 // 获取vip财务信息
-export function getVipGroupSalarys (data) {
+export function getVipGroupSalarys(data) {
   return request({
     url: api + '/vipGroupManage/findVipGroupSalarys',
     method: 'get',
@@ -198,7 +199,7 @@ export function getVipGroupSalarys (data) {
 }
 
 // 获取当前课程上课学员
-export function getStudyStudents (data) {
+export function getStudyStudents(data) {
   return request({
     url: api + '/vipGroupManage/findVipGroupAttendanceStudents',
     method: 'get',
@@ -207,7 +208,7 @@ export function getStudyStudents (data) {
 }
 
 // vip课时调整
-export function resetVipClass (data) {
+export function resetVipClass(data) {
   return request({
     url: api + '/vipGroupManage/classStartDateAdjust',
     method: 'POST',
@@ -216,7 +217,7 @@ export function resetVipClass (data) {
 }
 
 // 计算vip课酬
-export function getVipGroupCostCount (data) {
+export function getVipGroupCostCount(data) {
   return request({
     url: api + '/vipGroupManage/getVipGroupCostCount',
     method: 'POST',
@@ -225,7 +226,7 @@ export function getVipGroupCostCount (data) {
 }
 
 // vip课申请
-export function createVip (data) {
+export function createVip(data) {
   return request({
     url: api + '/vipGroupManage/vipGroupApply',
     method: 'POST',
@@ -234,7 +235,7 @@ export function createVip (data) {
 }
 
 // 暂停vip
-export function closeVip (data) {
+export function closeVip(data) {
   return request({
     url: api + '/vipGroupManage/stopVipGroup',
     method: 'POST',
@@ -244,7 +245,7 @@ export function closeVip (data) {
 
 // 修改vip基本信息
 
-export function updateVipBaseInfo (data) {
+export function updateVipBaseInfo(data) {
   return request({
     url: api + '/vipGroupManage/updateVipBaseInfo',
     method: 'POST',
@@ -253,7 +254,7 @@ export function updateVipBaseInfo (data) {
 }
 
 // 获取vip课程计划
-export function findVipGroupCourseSchedules (data) {
+export function findVipGroupCourseSchedules(data) {
   return request({
     url: api + '/courseSchedule/findVipGroupCourseSchedules',
     method: 'POST',
@@ -262,7 +263,7 @@ export function findVipGroupCourseSchedules (data) {
 }
 
 // 批量删除课程 删除vip
-export function bathDelete (data) {
+export function bathDelete(data) {
   return request({
 
     url: api + '/courseSchedule/batchDelete',
@@ -271,7 +272,7 @@ export function bathDelete (data) {
   })
 }
 // vip批量修改
-export function vipCourseAdjust (data) {
+export function vipCourseAdjust(data) {
   return request({
     url: api + '/courseSchedule/vipCourseAdjust',
     method: 'POST',
@@ -280,7 +281,7 @@ export function vipCourseAdjust (data) {
 }
 
 // 新增vip课程计划
-export function appendVipGroupCourseSchedules (data) {
+export function appendVipGroupCourseSchedules(data) {
   return request({
     url: api + '/vipGroupManage/appendVipGroupCourseSchedules',
     method: 'POST',
@@ -289,7 +290,7 @@ export function appendVipGroupCourseSchedules (data) {
 }
 
 // vip退费查询
-export function getStudentSurplusCourseFee (data) {
+export function getStudentSurplusCourseFee(data) {
   return request({
     url: api + '/vipGroupManage/getStudentSurplusCourseFee',
     method: 'get',
@@ -298,7 +299,7 @@ export function getStudentSurplusCourseFee (data) {
 }
 
 // vip搜索课程余额的学生
-export function getHaveCourseBalanceStudents (data) {
+export function getHaveCourseBalanceStudents(data) {
   return request({
     url: api + '/vipGroupManage/findHaveCourseBalanceStudents',
     method: 'get',
@@ -307,7 +308,7 @@ export function getHaveCourseBalanceStudents (data) {
 }
 
 // vip添加学员 addVipGroupStudents
-export function addVipGroupStudents (data) {
+export function addVipGroupStudents(data) {
   return request({
     url: api + '/vipGroupManage/addVipGroupStudents',
     method: 'post',
@@ -316,7 +317,7 @@ export function addVipGroupStudents (data) {
 }
 // /courseSchedule/batchAppendVipGroupCourses
 // vip课批量新增
-export function batchAppendVipGroupCourses (data) {
+export function batchAppendVipGroupCourses(data) {
   return request({
     url: api + '/courseSchedule/batchAppendVipGroupCourses',
     method: 'POST',
@@ -325,7 +326,7 @@ export function batchAppendVipGroupCourses (data) {
 }
 
 // vip休学
-export function vipPauseForStudent (data) {
+export function vipPauseForStudent(data) {
   return request({
     url: api + '/vipGroupManage/pauseForStudent',
     method: 'POST',
@@ -334,7 +335,7 @@ export function vipPauseForStudent (data) {
 }
 
 // 获取学生休学信息
-export function getStudentPauseInfo (data) {
+export function getStudentPauseInfo(data) {
   return request({
     url: api + '/vipGroupManage/getStudentPauseInfo',
     method: 'POST',
@@ -343,7 +344,7 @@ export function getStudentPauseInfo (data) {
 }
 
 // 恢复休学
-export function recoverForStudent (data) {
+export function recoverForStudent(data) {
   return request({
     url: api + '/vipGroupManage/recoverForStudent',
     method: 'POST',
@@ -352,7 +353,7 @@ export function recoverForStudent (data) {
 }
 
 // 根据vip课所在部门与声部获取教师
-export function findTeacherWithVipGroupOrganAndSubject (data) {
+export function findTeacherWithVipGroupOrganAndSubject(data) {
   return request({
     url: api + '/vipGroupManage/findTeacherWithVipGroupOrganAndSubject',
     method: 'get',
@@ -361,7 +362,7 @@ export function findTeacherWithVipGroupOrganAndSubject (data) {
 }
 
 // 删除VIP课
-export function deleteVipGroup (data) {
+export function deleteVipGroup(data) {
   return request({
     url: api + '/vipGroupManage/deleteVipGroup',
     method: 'post',
@@ -370,7 +371,7 @@ export function deleteVipGroup (data) {
 }
 
 // 查询公用部分,分部
-export function getPublicOrgans (data) {
+export function getPublicOrgans(data) {
   return request({
     url: api + '/vipGroupManage/getPublicOrgans',
     method: 'get',
@@ -378,10 +379,18 @@ export function getPublicOrgans (data) {
   })
 }
 // 修改vip课程组 vipGroupManageUpdate
-export function vipGroupManageUpdate (data) {
+export function vipGroupManageUpdate(data) {
   return request({
     url: api + '/vipGroupManage/update',
     method: 'post',
     data: qs.stringify(data)
   })
 }
+export const getVipGroupActivity = data => request2({
+  url:api +  '/vipGroupActivity/get',
+  params:data,
+  method: 'get',
+  requestType: 'form'
+})
+// 获取活动方案
+

+ 42 - 33
src/views/categroyManager/modals/baseInfo.vue

@@ -20,17 +20,19 @@
           <el-input
             style="width: 400px"
             v-model.trim="baseForm.name"
+            :disabled="isDisabled"
           ></el-input>
         </el-form-item>
+        <!--   @visible-change="$forceUpdate()" -->
         <el-form-item label="适用分部" prop="organ">
           <select-all
             v-model.trim="baseForm.organ"
             style="width: 400px"
             multiple
             filterable
-            @visible-change="$forceUpdate()"
             @change="onOrganChange"
             clearable
+            :disabled="isDisabled"
           >
             <el-option
               v-for="(item, index) in selects.branchs"
@@ -41,21 +43,24 @@
           </select-all>
           <!-- <el-button @click="onCheckAllBranch">适用所有分部</el-button> -->
         </el-form-item>
-        <el-form-item label="活动描述" prop="desc">
+        <el-form-item label="活动描述" prop="description">
           <el-input
             type="textarea"
-            v-model.trim="baseForm.desc"
+            v-model.trim="baseForm.description"
             style="width: 400px"
             :rows="5"
             placeholder="请输入活动说明"
+            :disabled="isDisabled"
           ></el-input>
         </el-form-item>
         <el-form-item label="活动类型" prop="activityType">
           <el-select
-            v-model.trim="baseForm.activeType"
+            v-model.trim="baseForm.activityType"
             placeholder="请选择活动类型"
             clearable
-            style="width: 400px!important"
+            style="width: 400px !important"
+            @change="changeActivityType"
+            :disabled="isDisabled"
           >
             <el-option label="课程活动" :value="0"></el-option>
             <el-option label="会员活动" :value="1"></el-option>
@@ -64,6 +69,7 @@
 
         <el-form-item label="活动生效时间" prop="activeTime">
           <el-date-picker
+          :disabled="isDisabled"
             v-model.trim="baseForm.activeTime"
             type="datetimerange"
             :default-time="['00:00:00', '23:59:59']"
@@ -87,6 +93,7 @@
         </el-form-item>
         <el-form-item label="排课时间范围" prop="courseTime">
           <el-date-picker
+          :disabled="isDisabled"
             v-model.trim="baseForm.courseTime"
             type="datetimerange"
             :default-time="['00:00:00', '23:59:59']"
@@ -118,10 +125,13 @@
                 filterable
                 clearable
                 placeholder="请选择适用学员"
+                @change="applyToStudentTypeChange"
+                :disabled="isDisabled"
               >
-                <el-option label="新学员" :value="1"></el-option>
-                <el-option label="老学员" :value="0"></el-option>
-                <el-option label="所有学员" :value="-1"></el-option>
+                <el-option label="新学员" value="1"></el-option>
+                <el-option label="老学员" value="0"></el-option>
+                <el-option label="会员" value="2"></el-option>
+                <el-option label="非会员" value="3"></el-option>
               </select-all>
             </el-col>
             <el-tooltip placement="top" popper-class="mTooltip">
@@ -130,7 +140,7 @@
               </div>
               <i
                 class="el-icon-question micon el-tooltip"
-                style="font-size: 18px; color: #f56c6c;margin-left:3px;"
+                style="font-size: 18px; color: #f56c6c; margin-left: 3px"
               ></i>
             </el-tooltip>
           </el-row>
@@ -140,6 +150,7 @@
             style="width: 400px"
             type="number"
             v-model.trim="baseForm.studentMaxUsedTimes"
+            :disabled="isDisabled"
           >
             <template slot="append">次</template>
           </el-input>
@@ -153,12 +164,13 @@
             ></i>
           </el-tooltip>
         </el-form-item>
-        <el-form-item label="是否充值课程余额" prop="isPayToBalance" >
+        <el-form-item label="是否充值课程余额" prop="isPayToBalance">
           <el-select
             v-model.trim="baseForm.isPayToBalance"
             placeholder="请选择是否充值课程余额"
             clearable
-            style="width: 400px!important"
+            style="width: 400px !important"
+            :disabled="isDisabled"
           >
             <el-option label="课程余额" :value="1"></el-option>
             <el-option label="资格限制" :value="0"></el-option>
@@ -184,10 +196,9 @@ import { vipGroupCategory, addVipActive } from "@/api/vipSeting";
 import { getEmployeeOrgan } from "@/api/buildTeam";
 import { vipResetTypeList } from "@/utils/searchArray";
 import cleanDeep from "clean-deep";
-const MIN_NUMBER = 1;
-const MAX_NUMBER = 999;
+
 export default {
-  props: ["baseForm"],
+  props: ["baseForm","isDisabled",'status'],
   name: "vipNewActive",
   data() {
     return {
@@ -205,7 +216,7 @@ export default {
           },
         ],
         desc: [
-          { required: false, message: "请输入文字描述", trigger: "blur" },
+          { required: true, message: "请输入文字描述", trigger: "blur" },
           {
             min: 1,
             max: 200,
@@ -213,8 +224,8 @@ export default {
             trigger: "blur",
           },
         ],
-        activeType: [
-          { required: false, message: "请选择活动类型", trigger: "blur" },
+        activityType: [
+          { required: true, message: "请选择活动类型", trigger: "blur" },
         ],
         // activeTime: [
         //   { required: false, message: "请选择活动时间", trigger: "blur" },
@@ -270,18 +281,6 @@ export default {
       },
     };
   },
-  activated() {
-    this.onReSet();
-    // if (this.$route.query.rules) {
-    //   this.rules = this.$route.query.rules;
-    // }
-    // if (this.$route.query.searchForm) {
-    //   this.searchForm = this.$route.query.searchForm;
-    // }
-
-    // this.pageType = this.$route.query.type;
-    // this.$refs.vipform.resetFields();
-  },
 
   async mounted() {
     // 首先获取课程形式
@@ -309,7 +308,10 @@ export default {
     // }
 
     this.pageType = this.$route.query.type;
-    this.$refs.vipform.resetFields();
+    if (!this.$route.query.id) {
+      this.$refs.vipform.resetFields();
+    }
+    //
   },
 
   methods: {
@@ -353,6 +355,9 @@ export default {
     changeStauts(val) {
       console.log(val);
     },
+    changeActivityType(val) {
+      this.$emit("resetPayInfo");
+    },
     submitFrom() {
       this.$refs.form.validate((isok) => {
         if (isok) {
@@ -513,9 +518,13 @@ export default {
     },
     onOrganChange() {
       // this.$forceUpdate();
-      this.$refs.vipform.validate()
+      this.$refs.vipform.validateField("organ");
+      this.$forceUpdate();
+    },
+    applyToStudentTypeChange() {
+      this.$refs.vipform.validateField("applyToStudentType");
+      console.log(this.baseForm.applyToStudentType);
       this.$forceUpdate();
-      console.log('调用')
     },
     onCheckAllBranch() {
       // 选择所有分部
@@ -524,7 +533,7 @@ export default {
       this.selects.branchs.forEach((item) => {
         vipform.organ.push(item.id);
       });
-       this.$refs.vipform.validate()
+      this.$refs.vipform.validateField("organ");
       this.$forceUpdate();
     },
 

+ 234 - 64
src/views/categroyManager/modals/payInfo.vue

@@ -11,15 +11,24 @@
       label-width="120px"
       label-position="right"
       :inline="true"
+      ref="form"
     >
       <div v-if="!activeType">
         <el-row>
-          <el-form-item label="课程类型" prop="courseType">
+          <el-form-item
+            label="课程类型"
+            prop="courseType"
+            :rules="[
+              { required: true, message: '请选择课程类型', trigger: 'blur' },
+            ]"
+          >
             <el-select
               style="width: 400px !important"
               v-model.trim="payForm.courseType"
               placeholder="请选择课程类型"
+              @change="changeCourseType"
               clearable
+              :disabled="isDisabled"
             >
               <el-option label="VIP课" value="VIP"></el-option>
               <el-option label="网管课" value="PRACTICE"></el-option>
@@ -28,6 +37,9 @@
         </el-row>
         <el-row>
           <el-form-item
+            :rules="[
+              { required: true, message: '请选择课程形式', trigger: 'blur' },
+            ]"
             label="课程形式"
             prop="vipGroupCategoryIdList"
             v-if="payForm.courseType == 'VIP'"
@@ -38,6 +50,7 @@
               @visible-change="$forceUpdate()"
               clearable
               multiple
+              :disabled="isDisabled"
             >
               <el-option
                 v-for="item in selects.vipGroupCategory"
@@ -50,29 +63,41 @@
         </el-row>
         <el-row>
           <el-form-item
+            :rules="[
+              { required: true, message: '请选择上课模式', trigger: 'blur' },
+            ]"
             label="上课模式"
-            prop="applyToStudentType"
+            prop="teachMode"
             v-if="payForm.courseType == 'VIP'"
           >
             <el-select
               style="width: 400px !important"
-              v-model.trim="payForm.applyToStudentType"
+              v-model.trim="payForm.teachMode"
               placeholder="请选择上课模式"
               clearable
-              multiple
+              :disabled="isDisabled"
             >
-              <el-option label="线上" :value="1"></el-option>
-              <el-option label="线下" :value="0"></el-option>
+              <el-option label="线上" value="0"></el-option>
+              <el-option label="线下" value="1"></el-option>
+              <el-option label="不限制" value="-1"></el-option>
             </el-select>
           </el-form-item>
         </el-row>
         <el-row>
-          <el-form-item label="课程调整方式" prop="allowOnlineToOffline">
+          <el-form-item
+            label="课程调整方式"
+            prop="allowOnlineToOffline"
+            v-if="payForm.courseType == 'VIP'"
+            :rules="[
+              { required: true, message: '课程调整方式', trigger: 'blur' },
+            ]"
+          >
             <el-select
               style="width: 400px !important"
               v-model.trim="payForm.allowOnlineToOffline"
               placeholder="请选择课程调整方式"
               clearable
+              :disabled="isDisabled"
             >
               <el-option
                 :label="item.label"
@@ -84,38 +109,87 @@
           </el-form-item>
         </el-row>
         <el-row>
-          <el-form-item label="单课时长" prop="singleCourseTime">
+          <el-form-item
+            label="单课时长"
+            prop="singleCourseTime"
+            :rules="[
+              { required: true, message: '请输入单课时长', trigger: 'blur' },
+            ]"
+          >
             <el-input
               v-model.number="payForm.singleCourseTime"
               type="number"
               style="width: 400px"
               placeholder="单课时长"
+              :disabled="isDisabled"
             >
               <template slot="append">分钟</template>
             </el-input>
           </el-form-item>
         </el-row>
         <el-row>
-          <el-form-item prop="minCourseNum" label="最小课时数">
+          <el-form-item
+            label="是否限制课时"
+            prop="isLimitNum"
+            :rules="[
+              {
+                required: false,
+                message: '请选择是否限制课时',
+                trigger: 'blur',
+              },
+            ]"
+          >
+            <el-select
+              style="width: 400px !important"
+              v-model.trim="payForm.isLimitNum"
+              placeholder="请选择是否限制课时"
+              clearable
+              :disabled="isDisabled"
+            >
+              <el-option label="是" :value="true"></el-option>
+              <el-option label="否" :value="false"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-row>
+        <el-row v-if="payForm.isLimitNum">
+          <el-form-item
+            prop="minCourseNum"
+            label="最小课时数"
+            :rules="[
+              { required: true, message: '请输入最小课时数', trigger: 'blur' },
+              { validator: this.validateCom, trigger: 'blur' },
+              { validator: this.validateMin, trigger: 'blur' },
+            ]"
+          >
             <el-input
               @change="handleMinChange"
               v-model.number="payForm.minCourseNum"
               type="number"
               style="width: 400px"
               placeholder="最小课时数"
+              :disabled="isDisabled"
             >
               <template slot="append">课时</template>
             </el-input>
           </el-form-item>
         </el-row>
-        <el-row>
-          <el-form-item prop="maxCourseNum" label="最大课时数">
+        <el-row v-if="payForm.isLimitNum">
+          <el-form-item
+            prop="maxCourseNum"
+            label="最大课时数"
+            :rules="[
+              { required: true, message: '请输入最大课时数', trigger: 'blur' },
+              { validator: this.validateCom, trigger: 'blur' },
+              { validator: this.validateMax, trigger: 'blur' },
+            ]"
+          >
             <el-input
               @change="handleMaxChange"
               v-model.number="payForm.maxCourseNum"
               type="number"
               style="width: 400px"
               placeholder="最大课时数"
+              :disabled="isDisabled"
             >
               <template slot="append">课时</template>
             </el-input>
@@ -124,69 +198,101 @@
       </div>
       <div v-else>
         <el-row>
-          <el-form-item label="会员名称" prop="memberRankId">
+          <el-form-item
+            label="会员名称"
+            prop="memberRankId"
+            :rules="[
+              { required: true, message: '请选择会员名称', trigger: 'blur' },
+            ]"
+          >
             <el-select
               style="width: 400px !important"
               v-model.trim="payForm.memberRankId"
               placeholder="请选择会员名称"
               clearable
-              multiple
+              :disabled="isDisabled"
             >
-              <el-option label="线上" :value="1"></el-option>
-              <el-option label="线下" :value="0"></el-option>
+              <el-option
+                v-for="(item, index) in remberList"
+                :key="index"
+                :label="item.name"
+                :value="item.id"
+              ></el-option>
             </el-select>
           </el-form-item>
         </el-row>
         <el-row>
-          <el-form-item label="会员时长" prop="period">
+          <el-form-item
+            label="会员周期"
+            prop="period"
+            :rules="[
+              { required: true, message: '请选择会员周期', trigger: 'blur' },
+            ]"
+          >
             <el-select
               style="width: 400px !important"
               v-model.trim="payForm.period"
-              placeholder="请选择会员时长"
+              placeholder="请选择会员周期"
               clearable
+              :disabled="isDisabled"
             >
-              <el-option
-                :label="item.label"
-                :value="item.value"
-                v-for="item in vipResetTypeList"
-                :key="item.value"
-              ></el-option>
+              <el-option label="按月" value="MONTH"></el-option>
+              <el-option label="按季度" value="QUARTERLY"></el-option>
+              <el-option label="按半年" value="YEAR_HALF"></el-option>
+              <el-option label="按年" value="YEAR"></el-option>
             </el-select>
           </el-form-item>
         </el-row>
       </div>
       <el-row>
-        <el-form-item prop="discount" label="折扣值">
+        <el-form-item
+          prop="discount"
+          label="折扣值"
+          :rules="[
+            { required: true, message: '请输入折扣值', trigger: 'blur' },
+          ]"
+        >
           <el-input
             v-model.number="payForm.discount"
             type="number"
             style="width: 400px"
             placeholder="折扣值"
+            :disabled="isDisabled"
           >
             <template slot="append">%</template>
           </el-input>
         </el-form-item>
       </el-row>
       <el-row>
-        <el-form-item prop="fullMinusCourseTimes" label="满赠达标课时">
+        <el-form-item prop="fullMinusCourseTimes" label="满赠达标数量">
           <el-input
             v-model.number="payForm.fullMinusCourseTimes"
             type="number"
             style="width: 400px"
-            placeholder="满赠达标课时"
+            @input="changeFullMinus"
+            placeholder="满赠达标数量"
+            :disabled="isDisabled"
           >
-            <template slot="append">课时</template>
           </el-input>
         </el-form-item>
       </el-row>
       <el-row>
         <el-col>
-          <el-form-item label="赠课类型" prop="giveCourseType">
+          <el-form-item
+            label="赠送类型"
+            prop="giveCourseType"
+            v-if="payForm.fullMinusCourseTimes"
+            :rules="[
+              { required: true, message: '请选择赠送类型', trigger: 'blur' },
+            ]"
+          >
             <el-select
               v-model.trim="payForm.giveCourseType"
-              placeholder="请选择赠课类型"
+              placeholder="请选择赠类型"
               style="width: 400px !important"
+              @change="changeGiveCourseType"
               clearable
+              :disabled="isDisabled"
             >
               <el-option label="VIP课" value="VIP"></el-option>
               <el-option label="网管课" value="PRACTICE"></el-option>
@@ -195,33 +301,43 @@
           </el-form-item>
         </el-col>
         <el-form-item
-          label="赠课课模式"
-          prop="applyToStudentType"
-          v-if="payForm.giveCourseType == 'VIP'"
+          label="赠课模式"
+          prop="giveTeachMode"
+          v-if="payForm.giveCourseType == 'VIP' && payForm.fullMinusCourseTimes"
+          :rules="[
+            { required: true, message: '请选择赠课模式', trigger: 'blur' },
+          ]"
         >
           <el-select
             style="width: 400px !important"
-            v-model.trim="payForm.applyToStudentType"
-            placeholder="请选择课模式"
+            v-model.trim="payForm.giveTeachMode"
+            placeholder="请选择课模式"
             clearable
-            multiple
+            :disabled="isDisabled"
           >
-            <el-option label="线上" :value="1"></el-option>
-            <el-option label="线下" :value="0"></el-option>
+            <el-option label="线上" value="0"></el-option>
+            <el-option label="线下" value="1"></el-option>
+            <el-option label="不限制" value="-1"></el-option>
           </el-select>
         </el-form-item>
         <el-col>
           <el-form-item
             label="赠课形式"
             prop="giveCategoryId"
-            v-if="payForm.giveCourseType == 'VIP'"
+            v-if="
+              payForm.giveCourseType == 'VIP' && payForm.fullMinusCourseTimes
+            "
+            :rules="[
+              { required: true, message: '请选择赠课形式', trigger: 'blur' },
+            ]"
           >
-            <select-all
+            <el-select
               style="width: 400px !important"
               v-model.trim="payForm.giveCategoryId"
               @visible-change="$forceUpdate()"
               clearable
-              multiple
+              @change="chageSalary"
+              :disabled="isDisabled"
             >
               <el-option
                 v-for="item in selects.vipGroupCategory"
@@ -229,53 +345,95 @@
                 :value="item.id"
                 :label="item.name"
               ></el-option>
-            </select-all>
+            </el-select>
           </el-form-item>
         </el-col>
       </el-row>
       <el-form-item
         label="赠课时长"
         prop="giveSingleCourseTime"
-        v-if="payForm.giveCourseType != 'MEMBER'"
+        v-if="
+          payForm.giveCourseType != 'MEMBER' && payForm.fullMinusCourseTimes
+        "
+        :rules="[
+          { required: true, message: '请选择赠课时长', trigger: 'blur' },
+        ]"
       >
         <el-input
           v-model.number="payForm.giveSingleCourseTime"
           type="number"
           style="width: 400px"
           placeholder="赠课时长"
+          :disabled="isDisabled"
         >
           <template slot="append">分钟</template>
         </el-input>
       </el-form-item>
-      <el-row>
+      <el-row
+        v-if="
+          payForm.giveCourseType != 'MEMBER' && payForm.fullMinusCourseTimes
+        "
+      >
         <el-form-item
           prop="giveCourseNum"
           label="赠送课时数"
-          v-if="payForm.giveCourseType != 'MEMBER'"
+          :rules="[
+            { required: true, message: '请输入赠送课时数', trigger: 'blur' },
+          ]"
         >
           <el-input
             v-model.number="payForm.giveCourseNum"
+            @input="changeGiveCourseNum"
             type="number"
             style="width: 400px"
             placeholder="赠送课时数"
+            :disabled="isDisabled"
           >
             <template slot="append">课时</template>
           </el-input>
         </el-form-item>
       </el-row>
+      <el-row v-if="payForm.giveCourseType == 'MEMBER'">
+        <el-form-item
+          label="赠送会员名称"
+          prop="giveMemberRankId"
+          :rules="[
+            { required: true, message: '请选择赠送会员名称', trigger: 'blur' },
+          ]"
+        >
+          <el-select
+            style="width: 400px !important"
+            v-model.trim="payForm.giveMemberRankId"
+            placeholder="请选择会员名称"
+            clearable
+            :disabled="isDisabled"
+          >
+            <el-option
+              v-for="(item, index) in remberList"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+      </el-row>
       <el-row>
         <el-form-item
-          prop="giveCourseNum"
+          prop="givePeriod"
           label="赠送会员时长"
           v-if="payForm.giveCourseType == 'MEMBER'"
+          :rules="[
+            { required: true, message: '请输入赠送会员时长', trigger: 'blur' },
+          ]"
         >
           <el-input
-            v-model.number="payForm.giveCourseNum"
+            v-model.number="payForm.givePeriod"
             type="number"
             style="width: 400px"
-            placeholder="赠送课时数"
+            placeholder="请输入赠送会员时长"
+            :disabled="isDisabled"
           >
-            <template slot="append">课时</template>
+            <template slot="append"></template>
           </el-input>
         </el-form-item>
       </el-row>
@@ -283,24 +441,15 @@
   </div>
 </template>
 <script>
+import { vipResetTypeList } from "@/utils/searchArray";
+const MIN_NUMBER = 1;
+const MAX_NUMBER = 999;
 export default {
-  props: ["payForm", "activeType"],
+  props: ["payForm", "activeType", "remberList","isDisabled"],
   data() {
     return {
-      courseNumrules: {
-        minCourseNum: [
-          { required: true, message: "请输入最小课时数", trigger: "blur" },
-          { validator: this.validateCom, trigger: "blur" },
-          { validator: this.validateMin, trigger: "blur" },
-        ],
-        maxCourseNum: [
-          { required: true, message: "请输入最大课时数", trigger: "blur" },
-          { validator: this.validateCom, trigger: "blur" },
-          { validator: this.validateMax, trigger: "blur" },
-        ],
-      },
       coureTimerList: [],
-      vipResetTypeList: [],
+      vipResetTypeList,
     };
   },
   async mounted() {
@@ -327,7 +476,7 @@ export default {
     },
     validateMin(rule, value, callback) {
       const one = Number(value);
-      const max = Number(this.courseNumForm.maxCourseNum);
+      const max = Number(this.payForm.maxCourseNum);
       if (!max || one <= max) {
         return callback();
       }
@@ -335,12 +484,33 @@ export default {
     },
     validateMax(rule, value, callback) {
       const one = Number(value);
-      const min = Number(this.courseNumForm.minCourseNum);
+      const min = Number(this.payForm.minCourseNum);
       if (!min || one >= min) {
         return callback();
       }
       return callback(new Error("输入值不得小于最小课时数"));
     },
+    changeCourseType(val) {
+       this.$emit('chageSalary')
+      this.$emit("changeCourseType", val);
+    },
+    changeGiveCourseType(val) {
+      this.$emit("changeGiveCourseType", val);
+    },
+    chageSalary(val){
+      this.$emit('chageSalary')
+    },
+    changeFullMinus(val){
+      if(!val|| val <= 0){
+         this.$emit('chageSalary')
+          this.$emit("changeGiveCourseType");
+      }
+    },
+    changeGiveCourseNum(val){
+         if(!val|| val <= 0){
+         this.$emit('chageSalary')
+      }
+    }
   },
 };
 </script>

+ 184 - 60
src/views/categroyManager/modals/salaryInfo.vue

@@ -6,151 +6,259 @@
       :closable="false"
       class="baseMsg"
     ></el-alert>
+    <div v-if="(activeType&&payForm.giveCourseType=='MEMBER')||(activeType&&!payForm.giveCourseType)">
+          <empty desc="该活动方案未设置课程,无需设置课酬信息"  />
+    </div>
     <el-form
+    v-else
       :model="salaryForm"
-      label-width="140px"
+      label-width="150px"
       label-position="right"
       :inline="true"
     >
-      <el-row>
-        <el-form-item label="付费VIP线上课课酬" prop="applyToStudentType">
+      <el-row v-if="payForm.courseType == 'VIP'">
+        <el-form-item
+          v-if="courseTeachModeOnline"
+          label="付费VIP线上课课酬"
+          prop="vipOnlineSalarySettlement.salarySettlementType"
+          :rules="[{required: true, message: '请选择付费VIP线上课课酬'}]"
+        >
           <el-select
-            style="width: 180px !important"
-            v-model.trim="salaryForm.applyToStudentType"
+            style="width: 240px !important"
+            v-model.trim="
+              salaryForm.vipOnlineSalarySettlement.salarySettlementType
+            "
             placeholder="请选择付费VIP线上课课酬"
             clearable
+            :disabled="isDisabled"
 
           >
-            <el-option label="自定义课酬" :value="1"></el-option>
-            <el-option label="标准课酬" :value="0"></el-option>
+            <el-option label="自定义课酬" value="FIXED_SALARY"></el-option>
+            <el-option label="标准课酬" value="TEACHER_DEFAULT"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="自定义课时课酬" prop="applyToStudentType">
+        <el-form-item
+          v-if="
+            salaryForm.vipOnlineSalarySettlement.salarySettlementType ==
+            'FIXED_SALARY'&&courseTeachModeOnline
+          "
+          label="自定义课时课酬"
+          prop="vipOnlineSalarySettlement.settlementValue"
+           :rules="[{required: true, message: '请输入自定义课时课酬'}]"
+        >
           <el-input
-            v-model.number="salaryForm.maxCourseNum"
+            v-model.number="
+              salaryForm.vipOnlineSalarySettlement.settlementValue
+            "
             type="number"
-            style="width: 180px"
+            style="width: 240px"
             placeholder="自定义课时课酬"
+            :disabled="isDisabled"
           >
             <template slot="append">课时/元</template>
           </el-input>
         </el-form-item>
       </el-row>
-      <el-row>
-        <el-form-item label="付费VIP线下课课酬" prop="applyToStudentType">
+      <el-row v-if="payForm.courseType == 'VIP'">
+        <el-form-item
+         v-if="courseTeachModeOffline"
+          label="付费VIP线下课课酬"
+          prop="vipOfflineSalarySettlement.salarySettlementType"
+           :rules="[{required: true, message: '请选择付费VIP线下课课酬'}]"
+        >
           <el-select
-            style="width: 180px !important"
-            v-model.trim="salaryForm.applyToStudentType"
+            style="width: 240px !important"
+            v-model.trim="
+              salaryForm.vipOfflineSalarySettlement.salarySettlementType
+            "
             placeholder="请选择付费VIP线下课课酬"
             clearable
-
+            :disabled="isDisabled"
           >
-            <el-option label="自定义课酬" :value="1"></el-option>
-            <el-option label="标准课酬" :value="0"></el-option>
+            <el-option label="自定义课酬" value="FIXED_SALARY"></el-option>
+            <el-option label="标准课酬" value="TEACHER_DEFAULT"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="自定义课时课酬" prop="applyToStudentType">
+        <el-form-item
+          label="自定义课时课酬"
+           :rules="[{required: true, message: '请输入自定义课时课酬'}]"
+          prop="applyToStudentType"
+          v-if="
+            salaryForm.vipOfflineSalarySettlement.salarySettlementType ==
+            'FIXED_SALARY'&&courseTeachModeOffline
+          "
+        >
           <el-input
-            v-model.number="salaryForm.maxCourseNum"
+            v-model.number="
+              salaryForm.vipOfflineSalarySettlement.settlementValue
+            "
             type="number"
-            style="width: 180px"
+            style="width: 240px"
             placeholder="自定义课时课酬"
+            :disabled="isDisabled"
           >
             <template slot="append">课时/元</template>
           </el-input>
         </el-form-item>
       </el-row>
       <el-row>
-        <el-form-item label="付费网管课课酬" prop="applyToStudentType">
+        <el-form-item
+          label="付费网管课课酬"
+          prop="practiceSalarySettlement.salarySettlementType"
+          v-if="payForm.courseType == 'PRACTICE'"
+           :rules="[{required: true, message: '请选择付费网管课课酬'}]"
+        >
           <el-select
-            style="width: 180px !important"
-            v-model.trim="salaryForm.applyToStudentType"
+            style="width: 240px !important"
+            v-model.trim="
+              salaryForm.practiceSalarySettlement.salarySettlementType
+            "
             placeholder="请选择付费网管课课酬"
             clearable
-
+            :disabled="isDisabled"
           >
-            <el-option label="自定义课酬" :value="1"></el-option>
-            <el-option label="标准课酬" :value="0"></el-option>
+            <el-option label="自定义课酬" value="FIXED_SALARY"></el-option>
+            <el-option label="标准课酬" value="TEACHER_DEFAULT"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="自定义课时课酬" prop="applyToStudentType">
+        <el-form-item
+         :rules="[{required: true, message: '请输入自定义课时课酬'}]"
+          label="自定义课时课酬"
+          prop="applyToStudentType"
+          v-if="
+            salaryForm.practiceSalarySettlement.salarySettlementType ==
+            'FIXED_SALARY'&&payForm.courseType == 'PRACTICE'
+          "
+        >
           <el-input
-            v-model.number="salaryForm.maxCourseNum"
+            v-model.number="salaryForm.practiceSalarySettlement.settlementValue"
             type="number"
-            style="width: 180px"
+            style="width: 240px"
             placeholder="自定义课时课酬"
+            :disabled="isDisabled"
           >
             <template slot="append">课时/元</template>
           </el-input>
         </el-form-item>
       </el-row>
       <el-row>
-        <el-form-item label="赠送VIP线上课课酬" prop="applyToStudentType">
+        <el-form-item
+       v-if="giveCourseTeachModeOnline"
+          label="赠送VIP线上课课酬"
+          prop="giveVipOnlineSalarySettlement.salarySettlementType"
+             :rules="[{required: true, message: '请选择赠送VIP线上课课酬'}]"
+        >
           <el-select
-            style="width: 180px !important"
-            v-model.trim="salaryForm.applyToStudentType"
-            placeholder="请选择付费VIP线上课课酬"
+            style="width: 240px !important"
+            v-model.trim="
+              salaryForm.giveVipOnlineSalarySettlement.salarySettlementType
+            "
+            placeholder="请选择赠送VIP线上课课酬"
             clearable
-
+            :disabled="isDisabled"
           >
-            <el-option label="自定义课酬" :value="1"></el-option>
-            <el-option label="标准课酬" :value="0"></el-option>
+            <el-option label="自定义课酬" value="FIXED_SALARY"></el-option>
+            <el-option label="标准课酬" value="TEACHER_DEFAULT"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="自定义课时课酬" prop="applyToStudentType">
+        <el-form-item
+         :rules="[{required: true, message: '请输入自定义课时课酬'}]"
+          label="自定义课时课酬"
+          prop="giveVipOnlineSalarySettlement.settlementValue"
+          v-if="
+            salaryForm.giveVipOnlineSalarySettlement.salarySettlementType ==
+            'FIXED_SALARY'&&giveCourseTeachModeOnline
+          "
+        >
           <el-input
-            v-model.number="salaryForm.maxCourseNum"
+            v-model.number="
+              salaryForm.giveVipOnlineSalarySettlement.settlementValue
+            "
             type="number"
-            style="width: 180px"
+            style="width: 240px"
             placeholder="自定义课时课酬"
+            :disabled="isDisabled"
           >
             <template slot="append">课时/元</template>
           </el-input>
         </el-form-item>
       </el-row>
-      <el-row>
-        <el-form-item label="赠送VIP线下课课酬" prop="applyToStudentType">
+      <el-row   v-if="giveCourseTeachModeOffline">
+        <el-form-item
+          label="赠送VIP线下课课酬"
+          prop="giveVipOfflineSalarySettlement.salarySettlementType"
+           :rules="[{required: true, message: '请选择赠送VIP线下课课酬'}]"
+        >
           <el-select
-            style="width: 180px !important"
-            v-model.trim="salaryForm.applyToStudentType"
+            style="width: 240px !important"
+            v-model.trim="
+              salaryForm.giveVipOfflineSalarySettlement.salarySettlementType
+            "
             placeholder="请选择赠送VIP线下课课酬"
             clearable
-
+            :disabled="isDisabled"
           >
-            <el-option label="自定义课酬" :value="1"></el-option>
-            <el-option label="标准课酬" :value="0"></el-option>
+            <el-option label="自定义课酬" value="FIXED_SALARY"></el-option>
+            <el-option label="标准课酬" value="TEACHER_DEFAULT"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="自定义课时课酬" prop="applyToStudentType">
+        <el-form-item
+          label="自定义课时课酬"
+           :rules="[{required: true, message: '请输入自定义课时课酬'}]"
+          prop="giveVipOfflineSalarySettlement.settlementValue"
+          v-if="
+            salaryForm.giveVipOfflineSalarySettlement.salarySettlementType ==
+            'FIXED_SALARY'&&giveCourseTeachModeOffline
+          "
+        >
           <el-input
-            v-model.number="salaryForm.maxCourseNum"
+            v-model.number="
+              salaryForm.giveVipOfflineSalarySettlement.settlementValue
+            "
             type="number"
-            style="width: 180px"
+            style="width: 240px"
             placeholder="自定义课时课酬"
+            :disabled="isDisabled"
           >
             <template slot="append">课时/元</template>
           </el-input>
         </el-form-item>
       </el-row>
-      <el-row>
-        <el-form-item label="赠送网管课课酬" prop="applyToStudentType">
+      <el-row v-if="payForm.giveCourseType=='PRACTICE'&&payForm.giveCourseNum>0">
+        <el-form-item
+          label="赠送网管课课酬"
+          prop="givePracticeSalarySettlement.salarySettlementType"
+          :rules="[{required: true, message: '请选择赠送网管课课酬'}]"
+        >
           <el-select
-            style="width: 180px !important"
-            v-model.trim="salaryForm.applyToStudentType"
+            style="width: 240px !important"
+            v-model.trim="
+              salaryForm.givePracticeSalarySettlement.salarySettlementType
+            "
             placeholder="请选择赠送网管课课酬"
             clearable
-
+            :disabled="isDisabled"
           >
-            <el-option label="自定义课酬" :value="1"></el-option>
-            <el-option label="标准课酬" :value="0"></el-option>
+            <el-option label="自定义课酬" value="FIXED_SALARY"></el-option>
+            <el-option label="标准课酬" value="TEACHER_DEFAULT"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="自定义课时课酬" prop="applyToStudentType">
+        <el-form-item
+          label="自定义课时课酬"
+          prop="givePracticeSalarySettlement.settlementValue"
+          v-if="
+            salaryForm.givePracticeSalarySettlement.salarySettlementType ==
+            'FIXED_SALARY'&&payForm.giveCourseType=='PRACTICE'&&payForm.giveCourseNum>0
+          "
+        >
           <el-input
-            v-model.number="salaryForm.maxCourseNum"
+            v-model.number="
+              salaryForm.givePracticeSalarySettlement.settlementValue
+            "
             type="number"
-            style="width: 180px"
+            style="width: 240px"
             placeholder="自定义课时课酬"
+            :disabled="isDisabled"
           >
             <template slot="append">课时/元</template>
           </el-input>
@@ -161,10 +269,26 @@
 </template>
 <script>
 export default {
-  props: ["salaryForm"],
+  props: ["salaryForm", "payForm",'activeType','isDisabled'],
   data() {
     return {};
   },
+  mounted() {},
+  methods: {},
+  computed: {
+    courseTeachModeOnline() {
+      return (this.payForm?.teachMode == -1 ||  this.payForm?.teachMode == 0)&&this.payForm?.courseType=='VIP';
+    },
+    courseTeachModeOffline() {
+       return (this.payForm?.teachMode == -1 ||  this.payForm?.teachMode == 1)&&this.payForm?.courseType=='VIP';
+    },
+    giveCourseTeachModeOnline() {
+       return (this.payForm?.giveTeachMode == -1 ||  this.payForm?.giveTeachMode == 0)&&this.payForm?.fullMinusCourseTimes>0&&this.payForm?.giveCourseType=='VIP'&&this.payForm?.giveCourseNum>0;
+    },
+    giveCourseTeachModeOffline() {
+     return (this.payForm?.giveTeachMode == -1 ||  this.payForm?.giveTeachMode == 1)&&this.payForm?.fullMinusCourseTimes>0&&this.payForm?.giveCourseType=='VIP'&&this.payForm?.giveCourseNum>0;
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>

+ 18 - 689
src/views/categroyManager/vipActiveList.vue

@@ -133,7 +133,7 @@
             :formatter="fommatterCourseType"
           ></el-table-column>
           <el-table-column
-          width="135"
+            width="135"
             align="center"
             label="课程调整方式"
             :formatter="fommatterResetType"
@@ -189,6 +189,13 @@
                 <el-button
                   type="text"
                   v-permission="'vipGroupActivity/update'"
+                  @click="look(scope.row)"
+                  >查看</el-button
+                >
+                <el-button
+                style="margin-left:0px"
+                  type="text"
+                  v-permission="'vipGroupActivity/update'"
                   @click="reset(scope.row)"
                   >修改</el-button
                 >
@@ -229,374 +236,6 @@
         />
       </div>
     </div>
-    <el-dialog
-      title="修改VIP/乐理课活动"
-      width="800px"
-      v-if="dialogVisible"
-      :visible.sync="dialogVisible"
-    >
-      <div>
-        <el-form
-          :label-position="labelPosition"
-          :model="resetForm"
-          ref="vipform"
-          :rules="resetFormRules"
-          class="vipform"
-        >
-          <el-form-item label="活动名称" label-width="120px" prop="name">
-            <el-input v-model.trim="resetForm.name"></el-input>
-          </el-form-item>
-          <el-form-item label="适用分部" label-width="120px" prop="organ">
-            <select-all
-              v-model.trim="resetForm.organ"
-              filterable
-              disabled
-              multiple
-              clearable
-            >
-              <el-option
-                v-for="(item, index) in selects.branchs"
-                :key="index"
-                :label="item.name"
-                :value="item.id"
-              ></el-option>
-            </select-all>
-            <!-- <el-button @click="onCheckAllBranch">适用所有分部</el-button> -->
-          </el-form-item>
-          <el-form-item label="课程形式" label-width="120px" prop="stauts">
-            <select-all
-              v-model.trim="resetForm.stauts"
-              filterable
-              clearable
-              multiple
-              disabled
-            >
-              <el-option
-                v-for="(item, index) in selects.vipGroupCategory"
-                :key="index"
-                :value="item.id"
-                :label="item.name"
-              ></el-option>
-            </select-all>
-          </el-form-item>
-          <el-form-item
-            label="课程调整方式"
-            label-width="120px"
-            prop="allowOnlineToOffline"
-          >
-            <el-select
-              style="width: 100% !important"
-              v-model.trim="resetForm.allowOnlineToOffline"
-              placeholder="请选择课程调整方式"
-              clearable
-            >
-              <el-option
-                :label="item.label"
-                :value="item.value"
-                v-for="item in vipResetTypeList"
-                :key="item.value"
-              ></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item
-            label="使用学员"
-            label-width="120px"
-            prop="applyToStudentType"
-          >
-            <el-select
-              v-model.trim="resetForm.applyToStudentType"
-              style="width: 100% !important"
-              placeholder="请选择使用学员"
-              clearable
-            >
-              <el-option label="新学员" :value="1"></el-option>
-              <el-option label="老学员" :value="0"></el-option>
-              <el-option label="所有学员" :value="-1"></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="活动描述" label-width="120px" prop="desc">
-            <el-input
-              type="textarea"
-              v-model.trim="resetForm.desc"
-              :rows="5"
-              placeholder="请输入活动说明"
-            ></el-input>
-          </el-form-item>
-          <el-form-item label="活动时间" label-width="120px" prop="activeTime">
-            <el-date-picker
-              v-model.trim="resetForm.activeTime"
-              style="width: 100%"
-              type="datetimerange"
-              range-separator="至"
-              value-format="yyyy-MM-dd HH:mm:ss"
-              :default-time="['00:00:00', '23:59:59']"
-              :picker-options="{
-                firstDayOfWeek: 1,
-              }"
-              start-placeholder="开始日期"
-              end-placeholder="结束日期"
-            ></el-date-picker>
-          </el-form-item>
-          <el-form-item label="课程时间" label-width="120px" prop="courseTime">
-            <el-date-picker
-              v-model.trim="resetForm.courseTime"
-              style="width: 100%"
-              type="datetimerange"
-              :default-time="['00:00:00', '23:59:59']"
-              :picker-options="{
-                firstDayOfWeek: 1,
-              }"
-              range-separator="至"
-              value-format="yyyy-MM-dd HH:mm:ss"
-              start-placeholder="开始日期"
-              end-placeholder="结束日期"
-            ></el-date-picker>
-          </el-form-item>
-        </el-form>
-        <el-alert
-          title="活动适用范围&结算标准"
-          type="info"
-          :closable="false"
-          class="alert"
-        >
-        </el-alert>
-        <div class="activeRange">
-          <!-- <div class="left">
-            <p>活动适用范围&结算标准:</p>
-          </div> -->
-          <div class="right">
-            <div class="chioseWrap">
-              <el-checkbox label="线上课" v-model.trim="online"></el-checkbox>
-              <el-select v-model.trim="onlineSalary" clearable filterable>
-                <el-option
-                  label="老师默认课酬"
-                  value="TEACHER_DEFAULT"
-                ></el-option>
-                <el-option
-                  label="实际课程单价比例折扣"
-                  value="RATIO_DISCOUNT"
-                ></el-option>
-                <el-option label="固定课酬" value="FIXED_SALARY"></el-option>
-              </el-select>
-              <!--   v-show='onlineSalary!= "TEACHER_DEFAULT"' -->
-              <el-input
-                placeholder="请输入"
-                style="width: 150px"
-                type="number"
-                @mousewheel.native.prevent
-                v-if="onlineSalary == 'FIXED_SALARY'"
-                v-model.trim="onlineprice"
-              >
-                <template slot="append">元</template>
-              </el-input>
-              <el-input
-                placeholder="请输入"
-                style="width: 150px"
-                type="number"
-                @mousewheel.native.prevent
-                v-else-if="onlineSalary == 'RATIO_DISCOUNT'"
-                v-model.trim="onlineprice"
-              >
-                <template slot="append">%</template>
-              </el-input>
-              <el-checkbox
-                label="是否参加梯度"
-                style="margin-left: 20px"
-                v-model.trim="onlineClassJoinGradientRewards"
-              ></el-checkbox>
-            </div>
-            <div class="chioseWrap">
-              <el-checkbox label="线下课" v-model.trim="unonline"></el-checkbox>
-              <el-select v-model.trim="unonlineSalary" filterable clearable>
-                <el-option
-                  label="老师默认课酬"
-                  value="TEACHER_DEFAULT"
-                ></el-option>
-                <el-option
-                  label="实际课程单价比例折扣"
-                  value="RATIO_DISCOUNT"
-                ></el-option>
-                <el-option label="固定课酬" value="FIXED_SALARY"></el-option>
-              </el-select>
-              <!-- unonlineSalary -->
-              <el-input
-                placeholder="请输入"
-                style="width: 150px"
-                type="number"
-                @mousewheel.native.prevent
-                v-if="unonlineSalary == 'FIXED_SALARY'"
-                v-model.trim="unonlineprice"
-              >
-                <template slot="append">元</template>
-              </el-input>
-              <el-input
-                placeholder="请输入"
-                style="width: 150px"
-                type="number"
-                @mousewheel.native.prevent
-                v-else-if="unonlineSalary == 'RATIO_DISCOUNT'"
-                v-model.trim="unonlineprice"
-              >
-                <template slot="append">%</template>
-              </el-input>
-              <el-checkbox
-                label="是否参加梯度"
-                style="margin-left: 20px"
-                v-model.trim="offlineClassJoinGradientRewards"
-              ></el-checkbox>
-            </div>
-            <div class="chioseWrap">
-              <el-checkbox
-                v-model.trim="paymentReadonlyFlag"
-                label="可自定义单价"
-              ></el-checkbox>
-              <!-- <el-checkbox v-model.trim="salaryReadonlyFlag"
-                           disabled
-                           label="可自定义课酬"></el-checkbox> -->
-            </div>
-          </div>
-        </div>
-        <el-alert
-          title="活动类型"
-          type="info"
-          :closable="false"
-          style="margin-bottom: 15px"
-          class="alert"
-        >
-        </el-alert>
-        <div class="activeType">
-          <!-- <div class="left">
-            <p style="width: 60px">活动类型</p>
-          </div> -->
-          <div class="right">
-            <div>
-              <div
-                class="head"
-                @click="
-                  () => {
-                    this.$refs['form'].resetFields();
-                    activeType = 'BASE_ACTIVITY';
-                    courseNumForm = {
-                      minCourseNum: '',
-                      maxCourseNum: '',
-                      studentMaxUsedTimes: '',
-                    };
-                    attribute1 = '';
-                    attribute2 = '';
-                  }
-                "
-                :class="activeType == 'BASE_ACTIVITY' ? 'active' : ''"
-              >
-                基础活动
-              </div>
-              <p class="title" v-if="activeType == 'BASE_ACTIVITY'">课程原价</p>
-            </div>
-            <div>
-              <div
-                class="head"
-                @click="activeType = 'DISCOUNT'"
-                :class="activeType == 'DISCOUNT' ? 'active' : ''"
-              >
-                折扣
-              </div>
-              <el-input
-                v-if="activeType == 'DISCOUNT'"
-                v-model.trim="attribute1"
-                type="number"
-                placeholder="请输入折扣数值"
-              >
-                <template slot="append">%</template>
-              </el-input>
-              <el-form
-                :model="courseNumForm"
-                :inline="true"
-                ref="form"
-                :rules="activeType == 'DISCOUNT' ? courseNumrules : {}"
-                v-show="activeType == 'DISCOUNT'"
-              >
-                <el-form-item prop="minCourseNum">
-                  <el-input
-                    @change="handleMinChange"
-                    v-model.number="courseNumForm.minCourseNum"
-                    type="number"
-                    style="margin-left: 10px; width: 120px !important"
-                    placeholder="最小课时数"
-                  >
-                  </el-input>
-                </el-form-item>
-                <el-form-item prop="maxCourseNum">
-                  <el-input
-                    @change="handleMaxChange"
-                    v-model.number="courseNumForm.maxCourseNum"
-                    type="number"
-                    style="margin-left: 10px; width: 120px !important"
-                    placeholder="最大课时数"
-                  >
-                  </el-input>
-                </el-form-item>
-                <el-form-item>
-                  <el-input
-                    v-model.number="courseNumForm.studentMaxUsedTimes"
-                    type="number"
-                    style="margin-left: 10px; width: 120px !important"
-                    placeholder="学员购买次数"
-                  >
-                  </el-input>
-                </el-form-item>
-              </el-form>
-            </div>
-            <div>
-              <div
-                class="head"
-                @click="
-                  () => {
-                    this.$refs['form'].resetFields();
-                    activeType = 'GIVE_CLASS';
-                    courseNumForm.minCourseNum = '';
-                    courseNumForm.maxCourseNum = '';
-                    attribute1 = '';
-                    attribute2 = '';
-                  }
-                "
-                :class="activeType == 'GIVE_CLASS' ? 'active' : ''"
-              >
-                赠送课时
-              </div>
-              <el-input
-                placeholder="多少节开始赠"
-                v-if="activeType == 'GIVE_CLASS'"
-                v-model.trim="attribute1"
-                type="number"
-                style="margin-right: 10px"
-              ></el-input>
-              <span v-if="activeType == 'GIVE_CLASS'">赠</span>
-              <el-input
-                v-if="activeType == 'GIVE_CLASS'"
-                placeholder="请输入赠送课时数"
-                v-model.trim="attribute2"
-                type="number"
-                style="margin: 0 10px"
-              ></el-input>
-              <el-input
-                v-show="activeType == 'GIVE_CLASS'"
-                v-model.number="courseNumForm.studentMaxUsedTimes"
-                type="number"
-                style="margin-left: 10px; width: 120px !important"
-                placeholder="学员购买次数"
-              >
-              </el-input>
-              <!-- <el-checkbox v-if="activeType=='GIVE_CLASS'"
-                           v-model.trim="giveClassPaySalaryFlag"
-                           label="赠送课时结算课酬"></el-checkbox> -->
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="resetRow">确 定</el-button>
-      </span>
-    </el-dialog>
   </div>
 </template>
 <script>
@@ -637,86 +276,6 @@ export default {
         allowOnlineToOffline: null,
       },
       dialogVisible: false,
-      resetForm: {
-        name: "",
-        desc: "",
-        activeTime: [],
-        courseTime: [],
-        stauts: [],
-        applyToStudentType: null,
-        allowOnlineToOffline: null,
-        organ: [],
-      }, // 修改信息
-      resetFormRules: {
-        name: [
-          { required: true, message: "请输入活动名称", trigger: "blur" },
-          {
-            min: 1,
-            max: 25,
-            message: "长度在 1 到 25 个字符",
-            trigger: "blur",
-          },
-        ],
-        desc: [
-          { required: false, message: "请输入文字描述", trigger: "blur" },
-          {
-            min: 1,
-            max: 200,
-            message: "长度在 1 到 200 个字符",
-            trigger: "blur",
-          },
-        ],
-        activeTime: [
-          { required: false, message: "请选择活动时间", trigger: "blur" },
-        ],
-        courseTime: [
-          { required: false, message: "请选择课程时间", trigger: "blur" },
-        ],
-        organ: [{ required: true, message: "请选择分部", trigger: "blur" }],
-        stauts: [
-          { required: true, message: "请选择活动形式", trigger: "blur" },
-        ],
-        applyToStudentType: [
-          { required: true, message: "请选择是否新生专享", trigger: "change" },
-        ],
-        allowOnlineToOffline: [
-          { required: true, message: "请选择课程调整方式" },
-        ],
-      },
-      courseStatusList: [],
-      activeType: "",
-      online: true,
-      unonline: true,
-      onlineClassJoinGradientRewards: false,
-      offlineClassJoinGradientRewards: false,
-      onlineSalary: "TEACHER_DEFAULT",
-      unonlineSalary: "TEACHER_DEFAULT",
-      onlineprice: "",
-      unonlineprice: "",
-      salaryReadonlyFlag: false,
-      paymentReadonlyFlag: true,
-      attribute1: "",
-      attribute2: "",
-      giveClassPaySalaryFlag: false,
-      activeId: "",
-      isReset: false,
-      courseNumForm: {
-        minCourseNum: "",
-        maxCourseNum: "",
-        studentMaxUsedTimes: "",
-      },
-      courseNumrules: {
-        minCourseNum: [
-          { required: true, message: "请输入最小课时数", trigger: "blur" },
-          { validator: this.validateCom, trigger: "blur" },
-          { validator: this.validateMin, trigger: "blur" },
-        ],
-        maxCourseNum: [
-          { required: true, message: "请输入最大课时数", trigger: "blur" },
-          { validator: this.validateCom, trigger: "blur" },
-          { validator: this.validateMax, trigger: "blur" },
-        ],
-      },
     };
   },
   // created() {
@@ -967,7 +526,7 @@ export default {
       if (row.allowOnlineToOffline == 2) {
         str = "线下不可调为线上";
       }
-        if (row.allowOnlineToOffline == 3) {
+      if (row.allowOnlineToOffline == 3) {
         str = "线上线下不可互调";
       }
       return str;
@@ -1000,248 +559,18 @@ export default {
     },
     // 点击列表修改同步状态
     reset(row) {
-      this.isReset = true;
-      this.activeId = row.id;
-      this.dialogVisible = true;
-      this.resetForm = {
-        name: "",
-        desc: "",
-        activeTime: [],
-        courseTime: [],
-        stauts: [],
-        applyToStudentType: null,
-        allowOnlineToOffline: null,
-        organ: [],
-      }
-      this.resetForm.name = row.name;
-      this.resetForm.applyToStudentType = row.applyToStudentType;
-      this.resetForm.allowOnlineToOffline = row.allowOnlineToOffline + "";
-      this.resetForm.desc = row.description;
-
-      if (row.organId) {
-        this.resetForm.organ = row.organId.split(",").map((res) => {
-          return parseInt(res);
-        });
-      }
-      if (row.vipGroupCategoryIdList) {
-        this.resetForm.stauts = row.vipGroupCategoryIdList
-          .split(",")
-          .map((res) => {
-            return parseInt(res);
-          });
-      }
-
-      // 同步活动时间
-      if (row.startTime && row.endTime) {
-        this.resetForm.activeTime = [row.startTime, row.endTime];
-      }
-      if (row.coursesStartTime && row.coursesEndTime) {
-        this.resetForm.courseTime = [row.coursesStartTime, row.coursesEndTime];
-      }
-      // 同步适用范围
-      let obj = JSON.parse(row.salarySettlementJson);
-      // 同步线上课状态
-      obj.onlineSalarySettlement ? (this.online = true) : (this.online = false);
-      if (obj.onlineSalarySettlement) {
-        this.onlineSalary = obj.salarySettlementType;
-        if (obj.onlineSalarySettlement.settlementValue) {
-          this.onlineprice = obj.onlineSalarySettlement.settlementValue;
-        }
-        if (obj.onlineSalarySettlement.salarySettlementType)
-          this.onlineSalary = obj.onlineSalarySettlement.salarySettlementType;
-      } else {
-        this.onlineSalary = "TEACHER_DEFAULT";
-        this.onlineprice = "";
-      }
-      // 同步线下课状态
-      obj.offlineSalarySettlement
-        ? (this.unonline = true)
-        : (this.unonline = false);
-      if (obj.offlineSalarySettlement) {
-        this.unonlineSalary = obj.offlineSalarySettlement;
-        if (obj.offlineSalarySettlement.settlementValue) {
-          this.unonlineprice = obj.offlineSalarySettlement.settlementValue;
-        }
-        if (obj.offlineSalarySettlement.salarySettlementType)
-          this.unonlineSalary =
-            obj.offlineSalarySettlement.salarySettlementType;
-      } else {
-        this.unonlineSalary = "TEACHER_DEFAULT";
-        this.unonlineprice = "";
-      }
-      //
-      this.salaryReadonlyFlag = !!parseInt(row.salaryReadonlyFlag);
-      this.paymentReadonlyFlag = !!parseInt(row.paymentReadonlyFlag);
-      this.offlineClassJoinGradientRewards = !!parseInt(
-        row.offlineClassJoinGradientRewards
-      );
-      this.onlineClassJoinGradientRewards = !!parseInt(
-        row.onlineClassJoinGradientRewards
-      );
-
-      this.activeType = row.type;
-      this.attribute1 = row.attribute1;
-      this.attribute2 = row.attribute2;
-
-      let studentMaxUsedTimes =
-        row.studentMaxUsedTimes == -1 ? null : row.studentMaxUsedTimes;
-      let minCourseNum = row.minCourseNum == -1 ? null : row.minCourseNum;
-      let maxCourseNum = row.maxCourseNum == -1 ? null : row.maxCourseNum;
-      this.$set(this.courseNumForm, "studentMaxUsedTimes", studentMaxUsedTimes);
-      this.$set(this.courseNumForm, "minCourseNum", minCourseNum);
-      this.$set(this.courseNumForm, "maxCourseNum", maxCourseNum);
-      this.giveClassPaySalaryFlag =
-        row.giveClassPaySalaryFlag == 1 ? true : false;
+      this.$router.push({
+        path: "/operateManager/vipNewActive?type=reset",
+        query: { id: row.id },
+      });
     },
-    // 点击确认按钮发送修改请求
-    resetRow() {
-      this.$refs.form.validate((isok) => {
-        if (isok) {
-          this.$refs["vipform"].validate((valid) => {
-            if (valid) {
-              // 验证通过
-              let coursesStartTime;
-              let coursesEndTime;
-              let startTime;
-              let endTime;
-              if (!this.resetForm.courseTime) {
-                this.resetForm.courseTime = [];
-                // coursesStartTime = null;
-                // coursesEndTime = null;
-              }
-              if (!this.resetForm.activeTime) {
-                this.resetForm.activeTime = [];
-                // startTime = null;
-                // endTime = null;
-              }
-              let id = this.activeId;
-              coursesStartTime = this.resetForm.courseTime[0] || null;
-              coursesEndTime = this.resetForm.courseTime[1] || null;
-              startTime = this.resetForm.activeTime[0] || null;
-              endTime = this.resetForm.activeTime[1] || null;
-              let organId = this.resetForm.organ.join(",");
-              let type = this.activeType;
-              if (!type) {
-                this.$message.error("请选择活动类型");
-                return;
-              }
-              // 判断适用范围
-              if (!this.online && !this.unonline) {
-                this.$message.error("请选择活动适用范围");
-                return;
-              }
-              if (type == "DISCOUNT") {
-                if (!this.attribute1 || this.attribute1 < 0) {
-                  this.$message.error("折扣必须大于等于0");
-                  return;
-                }
-              } else if (type == "GIVE_CLASS") {
-                if (!this.attribute1) {
-                  this.$message.error("请输入多少节开始赠");
-                  return;
-                }
-                if (!this.attribute2) {
-                  this.$message.error("请输入赠送课时数");
-                  return;
-                }
-              }
-              let vipGroupCategoryIdList = this.resetForm.stauts.join(",");
-              let onlineSalarySettlement;
-              let offlineSalarySettlement;
-              if (this.online) {
-                // 勾选线上
-
-                // 判断勾选的是折扣还是现金
-                if (this.onlineSalary == "RATIO_DISCOUNT") {
-                  if (this.onlineprice < 0 || this.onlineprice > 100) {
-                    this.$message.error("折扣比必须大于0且小于100");
-                    return;
-                  }
-                } else if (this.onlineSalary == "TEACHER_DEFAULT") {
-                  this.onlineprice = 0;
-                }
-                onlineSalarySettlement = {
-                  salarySettlementType: this.onlineSalary,
-                  settlementValue: this.onlineprice,
-                };
-              } else {
-                onlineSalarySettlement = null;
-              }
-              if (this.unonline) {
-                // 勾选线下
-                if (this.unonlineSalary == "RATIO_DISCOUNT") {
-                  if (this.unonlineprice < 0 || this.unonlineprice > 100) {
-                    this.$message.error("折扣比必须大于0且小于100");
-                    return;
-                  }
-                } else if (this.unonlineSalary == "TEACHER_DEFAULT") {
-                  this.unonlineprice = 0;
-                }
-                offlineSalarySettlement = {
-                  salarySettlementType: this.unonlineSalary,
-                  settlementValue: this.unonlineprice,
-                };
-              } else {
-                offlineSalarySettlement = null;
-              }
-              let salaryReadonlyFlag = this.salaryReadonlyFlag * 1;
-              let paymentReadonlyFlag = this.paymentReadonlyFlag * 1;
-              // let giveClassPaySalaryFlag = this.giveClassPaySalaryFlag * 1;
-              let vipGroupSalarySettlement = {
-                onlineSalarySettlement,
-                offlineSalarySettlement,
-              };
-              if (type == "BASE_ACTIVITY") {
-                this.courseNumForm.studentMaxUsedTimes = -1;
-                this.courseNumForm.minCourseNum = -1;
-                this.courseNumForm.maxCourseNum = -1;
-              } else if (type == "GIVE_CLASS") {
-                this.courseNumForm.minCourseNum = -1;
-                this.courseNumForm.maxCourseNum = -1;
-              }
-              // 发请求创建活动
-              resetVipActive({
-                paymentReadonlyFlag,
-                id,
-                coursesStartTime,
-                coursesEndTime,
-                startTime,
-                endTime,
-                name: this.resetForm.name,
-                description: this.resetForm.desc,
-                applyToStudentType: this.resetForm.applyToStudentType,
-                allowOnlineToOffline: this.resetForm.allowOnlineToOffline,
-                organId,
-                type,
-                vipGroupCategoryIdList,
-                vipGroupSalarySettlement,
-                salaryReadonlyFlag,
-                giveClassPaySalaryFlag: 1,
-                attribute1: this.attribute1,
-                attribute2: this.attribute2,
-                minCourseNum: this.courseNumForm.minCourseNum,
-                maxCourseNum: this.courseNumForm.maxCourseNum,
-                studentMaxUsedTimes: this.courseNumForm.studentMaxUsedTimes
-                  ? this.courseNumForm.studentMaxUsedTimes
-                  : -1,
-                onlineClassJoinGradientRewards:
-                  this.onlineClassJoinGradientRewards * 1,
-                offlineClassJoinGradientRewards:
-                  this.offlineClassJoinGradientRewards * 1,
-              }).then((res) => {
-                if (res.code == 200) {
-                  this.$message.success("恭喜你,活动修改成功");
-                  this.dialogVisible = false;
-                  this.getList();
-                }
-              });
-            } else {
-              this.$message.error("请填写必要参数");
-            }
-          });
-        }
+    look(row){
+           this.$router.push({
+        path: "/operateManager/vipNewActive?type=look",
+        query: { id: row.id },
       });
     },
+    // 点击确认按钮发送修改请求
     remove(scope) {
       let id = scope.row.id;
       removeVipActive({ id }).then((res) => {

+ 352 - 31
src/views/categroyManager/vipNewActive.vue

@@ -2,10 +2,7 @@
   <div class="m-container">
     <!-- <h2><div class="squrt"></div>VIP活动方案新增 </h2> -->
     <h2>
-      <el-page-header
-        @back="onCancel"
-        :content="'新建课程活动方案'"
-      ></el-page-header>
+      <el-page-header @back="onCancel" :content="title"></el-page-header>
     </h2>
 
     <el-steps
@@ -19,9 +16,32 @@
       <el-step title="课酬信息"></el-step>
     </el-steps>
     <div class="wrap">
-      <baseInfo :baseForm="baseForm" v-if="active == 1" ref='baseForm'/>
-      <payInfo :payForm="payForm" :activeType="baseForm.activeType" v-if="active == 2" />
-      <salaryInfo :salaryForm="salaryForm" v-if="active == 3" :activeType="baseForm.activeType" :payForm="payForm"/>
+      <baseInfo
+        :baseForm="baseForm"
+        v-if="active == 1"
+        ref="baseForm"
+        @resetPayInfo="resetPayInfo"
+        :isDisabled='isDisabled'
+        :status='statuss'
+      />
+      <payInfo
+        :payForm="payForm"
+        ref="payInfo"
+        :activeType="baseForm.activityType"
+        @changeCourseType="changeCourseType"
+        @changeGiveCourseType="changeGiveCourseType"
+        @chageSalary="chageSalary"
+        v-if="active == 2"
+        :remberList="remberList"
+        :isDisabled='isDisabled'
+      />
+      <salaryInfo
+        :salaryForm="salaryForm"
+        v-if="active == 3"
+        :activeType="baseForm.activityType"
+        :payForm="payForm"
+        :isDisabled='isDisabled'
+      />
     </div>
     <el-button
       style="margin-top: 12px"
@@ -37,12 +57,16 @@
       v-if="active < 3"
       >下一步</el-button
     >
+
+    <el-button style="margin-top: 12px" type="danger" @click="save" v-if="!isDisabled"
+      >保存草稿</el-button
+    >
     <el-button
       style="margin-top: 12px"
       type="danger"
       @click="submit"
-      v-if="active == 3"
-      >提 交</el-button
+      v-if="active == 3&&!isDisabled"
+      >创建活动</el-button
     >
   </div>
 </template>
@@ -50,41 +74,112 @@
 <script>
 import baseInfo from "./modals/baseInfo.vue";
 import payInfo from "./modals/payInfo.vue";
-import salaryInfo from './modals/salaryInfo.vue'
+import salaryInfo from "./modals/salaryInfo.vue";
+import { getAllmemberRank } from "@/views/categroyManager/productSystem/api";
+import merge from "webpack-merge";
+import {
+  vipGroupCategory,
+  addVipActive,
+  resetVipActive,
+  getVipGroupActivity,
+} from "@/api/vipSeting";
+import cleanDeep from "clean-deep";
+const payBaseForm = {
+  courseType: "",
+  vipGroupCategoryIdList: [],
+  applyToStudentType: [],
+  teachMode: null,
+  allowOnlineToOffline: "",
+  singleCourseTime: null,
+  isLimitNum: null,
+  minCourseNum: null,
+  maxCourseNum: null,
+  memberRankId: null,
+  period: null,
+  discount: 100,
+  fullMinusCourseTimes: null,
+  giveCourseType: null,
+  giveTeachMode: null,
+  giveCategoryId: null,
+  giveSingleCourseTime: null,
+  giveCourseNum: null,
+  giveMemberRankId: null,
+  givePeriod: null,
+};
+const baseSalaryForm = {
+  vipOnlineSalarySettlement: {
+    salarySettlementType: null,
+    settlementValue: null,
+  },
+  vipOfflineSalarySettlement: {
+    salarySettlementType: null,
+    settlementValue: null,
+  },
+  giveVipOnlineSalarySettlement: {
+    salarySettlementType: null,
+    settlementValue: null,
+  },
+  giveVipOfflineSalarySettlement: {
+    salarySettlementType: null,
+    settlementValue: null,
+  },
+  practiceSalarySettlement: {
+    salarySettlementType: null,
+    settlementValue: null,
+  },
+  givePracticeSalarySettlement: {
+    salarySettlementType: null,
+    settlementValue: null,
+  },
+};
 export default {
   components: {
     baseInfo,
     payInfo,
-    salaryInfo
+    salaryInfo,
   },
   data() {
     return {
+      status: "",
       active: 1,
       baseForm: {
         name: "",
-        desc: "",
+        description: "",
         activeTime: [],
         courseTime: [],
         organ: [],
-        activityType:'',
-        applyToStudentType:'',
-        studentMaxUsedTimes:'',
-        isPayToBalance:''
+        activityType: "",
+        applyToStudentType: [],
+        studentMaxUsedTimes: "",
+        isPayToBalance: "",
       },
+      title: "新建课程活动方案",
       payForm: {
-        courseType:'',
-        vipGroupCategoryIdList:[],
-        applyToStudentType:[]
+        ...payBaseForm,
+      },
+      salaryForm: {
+        ...baseSalaryForm,
       },
-      salaryForm: {},
+      remberList: [],
     };
   },
-  mounted() {},
+  async mounted() {
+    try {
+      const res = await getAllmemberRank();
+      this.remberList = res.data;
+    } catch {}
+
+    if (this.$route.query.id) {
+      this.baseForm.id = this.$route.query.id;
+      const rusult = await getVipGroupActivity({ id: this.$route.query.id });
+      this.formatDetail(rusult.data);
+    }
+  },
   methods: {
     onCancel() {
       if (this.active > 1) {
-        this.active--
-        console.log(this.active)
+        this.active--;
+        console.log(this.active);
       } else {
         this.$store.dispatch("delVisitedViews", this.$route);
         this.$router.push({
@@ -94,18 +189,20 @@ export default {
       }
     },
     next() {
-      let flags = true
+      let flags = true;
       if (this.active == 1) {
-
-        this.$refs.baseForm.$refs.vipform.validate(flag=>{
-        flags =  flag
-        })
+        this.$refs.baseForm.$refs.vipform.validate((flag) => {
+          flags = flag;
+        });
         // 验证表单1
       } else if (this.active == 2) {
         // 验证表单2
+        this.$refs.payInfo.$refs.form.validate((flag) => {
+          flags = flag;
+        });
       }
-      if(!flags){
-        return
+      if (!flags) {
+        return;
       }
       if (this.active < 3) {
         this.active++;
@@ -116,7 +213,231 @@ export default {
         this.active--;
       }
     },
-    submit() {},
+    resetPayInfo() {
+      this.payForm = {
+        ...payBaseForm,
+      };
+      console.log(this.payForm);
+    },
+    changeCourseType(val) {
+      // this.$emit("changeCourseType", val);
+      if (val == "PRACTICE") {
+        this.$set(this.payForm, "vipGroupCategoryIdList", []);
+        this.$set(this.payForm, "teachMode", "");
+        this.$set(this.payForm, "singleCourseTime", 25);
+        this.$set(this.payForm, "allowOnlineToOffline", []);
+      } else {
+        this.$set(this.payForm, "singleCourseTime", 45);
+        this.$set(this.payForm, "allowOnlineToOffline", []);
+        this.$set(this.payForm, "vipGroupCategoryIdList", []);
+        this.$set(this.payForm, "teachMode", "");
+      }
+      // vip
+      // 课程形式
+      // 上课模式
+      // 单课时长
+      // 课程调整方式
+      // PRACTICE
+    },
+    changeGiveCourseType(val) {
+      if (val == "PRACTICE") {
+        this.$set(this.payForm, "giveSingleCourseTime", 25);
+      } else if (val == "VIP") {
+        this.$set(this.payForm, "giveSingleCourseTime", 45);
+      } else {
+        this.$set(this.payForm, "giveSingleCourseTime", null);
+      }
+      this.$set(this.payForm, "giveCourseNum", null);
+      this.$set(this.payForm, "giveCategoryId", null);
+      this.$set(this.payForm, "giveMemberRankId", null);
+      this.$set(this.payForm, "givePeriod", null);
+      this.$set(this.payForm, "giveTeachMode", "");
+    },
+    chageSalary() {
+      this.salaryForm = { ...baseSalaryForm };
+      this.$forceUpdate();
+    },
+    submit() {
+      this.baseForm.status = "PROGRESS";
+      this.submitDataFormat("PROGRESS");
+    },
+    save() {
+      this.baseForm.status = "DRAFT";
+      this.submitDataFormat("DRAFT");
+    },
+    submitDataFormat(status) {
+      let coursesStartTime = null,
+        coursesEndTime = null,
+        startTime = null,
+        endTime = null;
+      if (this.baseForm.courseTime && this.baseForm.courseTime.length > 0) {
+        coursesStartTime = this.baseForm.courseTime[0];
+        coursesEndTime = this.baseForm.courseTime[1];
+      }
+      if (this.baseForm.activeTime && this.baseForm.activeTime.length > 0) {
+        startTime = this.baseForm.activeTime[0];
+        endTime = this.baseForm.activeTime[1];
+      }
+      let organId = this.baseForm.organ.join(",");
+
+      for (let item in this.salaryForm) {
+        if (this.salaryForm[item].salarySettlementType == "TEACHER_DEFAULT") {
+          this.salaryForm[item].settlementValue = null;
+        }
+      }
+      let applyToStudentType = this.baseForm.applyToStudentType.join(",");
+      let vipGroupCategoryIdList =
+        this.payForm.vipGroupCategoryIdList.join(",");
+      let vipGroupSalarySettlement = this.salaryForm;
+      let obj = {
+        ...this.baseForm,
+        ...this.payForm,
+        organId,
+        coursesStartTime,
+        coursesEndTime,
+        startTime,
+        endTime,
+        applyToStudentType,
+        vipGroupCategoryIdList,
+        vipGroupSalarySettlement,
+      };
+      if (this.baseForm.id) {
+        resetVipActive(cleanDeep(obj)).then((res) => {
+          if (res.code == 200) {
+            if (status == "DRAFT") {
+              this.$message.success("恭喜你,保存草稿成功");
+              this.baseForm.id = res.data.id;
+              this.$router.push({
+                query: merge(this.$route.query, {
+                  id: res.data.id,
+                }),
+              });
+            } else {
+              this.$message.success("活动创建成功");
+              this.$store.dispatch("delVisitedViews", this.$route);
+              this.$router.push({
+                path: "/vipActiveManager/vipActiveList",
+              });
+            }
+
+            // this.onReSet();
+            // this.$store.dispatch("delVisitedViews", this.$route);
+            // this.$router.push({
+            //   path: "/vipActiveManager/vipActiveList",
+            // });
+          }
+        });
+      } else {
+        addVipActive(cleanDeep(obj)).then((res) => {
+          if (res.code == 200) {
+            if (status == "DRAFT") {
+              this.$message.success("恭喜你,保存草稿成功");
+              this.baseForm.id = res.data.id;
+              this.$router.push({
+                query: merge(this.$route.query, {
+                  id: res.data.id,
+                }),
+              });
+            } else {
+              this.$message.success("活动创建成功");
+              this.$store.dispatch("delVisitedViews", this.$route);
+              this.$router.push({
+                path: "/vipActiveManager/vipActiveList",
+              });
+            }
+          }
+        });
+      }
+    },
+    formatDetail(data) {
+      this.status = data.status;
+      for (let item in data) {
+        if (!(item == "teachMode" || item == "giveTeachMode")) {
+          if (data[item] == -1) {
+            data[item] = null;
+          }
+        }
+      }
+      let activeTime = [];
+      let courseTime = [];
+      this.title = data.name;
+      if (data.startTime) {
+        activeTime = [data.startTime, data.endTime];
+      }
+      if (data.coursesStartTime) {
+        courseTime = [data.coursesStartTime, data.coursesEndTime];
+      }
+      let applyToStudentType = data.applyToStudentType
+        ? data.applyToStudentType.split(",")
+        : [];
+      // 格式化 baseForm
+      this.baseForm = {
+        name: data.name,
+        description: data.description,
+        activeTime,
+        courseTime,
+        organ: data.organId.split(",").map((organ) => {
+          return Number(organ);
+        }),
+        activityType: data.activityType,
+        applyToStudentType,
+        studentMaxUsedTimes: data.studentMaxUsedTimes,
+        isPayToBalance: Number(data.payToBalance),
+        id: this.$route.query.id,
+      };
+      // this.$set()
+      //格式化payForm
+      this.payForm = {
+        courseType: data.courseType,
+        vipGroupCategoryIdList: data.vipGroupCategoryIdList
+          .split(",")
+          .map((id) => {
+            return Number(id);
+          }),
+        teachMode: data.teachMode + "",
+        allowOnlineToOffline: data.allowOnlineToOffline + "",
+        singleCourseTime: data.singleCourseTime,
+        isLimitNum: data.minCourseNum ? true : false,
+        minCourseNum: data.minCourseNum,
+        maxCourseNum: data.maxCourseNum,
+        memberRankId: data.memberRankId,
+        period: data.periodEnum,
+        discount: data.discount,
+        fullMinusCourseTimes: data.fullMinusCourseTimes,
+        giveCourseType: data.giveCourseType,
+        giveTeachMode: data.giveTeachMode + "",
+        giveCategoryId:
+          data.giveCategoryId * 1 ? data.giveCategoryId * 1 : null,
+        giveSingleCourseTime: data.giveSingleCourseTime,
+        giveCourseNum: data.giveCourseNum,
+        giveMemberRankId: data.giveMemberRankId,
+        givePeriod: data.givePeriodEnum,
+      };
+      // 格式化缴费金额
+      if (data.salarySettlementJson && data.salarySettlementJson != "null") {
+        this.salaryForm = { ...baseSalaryForm };
+        let result = JSON.parse(data.salarySettlementJson);
+
+        for (let key in result) {
+          this.salaryForm[key] = result[key];
+        }
+      } else {
+        this.salaryForm = { ...baseSalaryForm };
+      }
+      this.$forceUpdate();
+    },
+  },
+  computed: {
+    isDisabled() {
+      if(this.$route.query.type == 'look'){
+        return true
+      }else{
+        return false
+      }
+    },
+    statuss(){
+      return this.status
+    }
   },
 };
 </script>

+ 0 - 1
src/views/main/baseinfo/management.vue

@@ -360,7 +360,6 @@ export default {
     };
   },
   mounted() {
-    console.log(this.orderType)
     this.init();
   },
   methods: {

+ 1 - 1
vue.config.js

@@ -17,7 +17,7 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // //  https://online.dayaedu.com
 // let target = 'https://online.dayaedu.com' //线上
 // let target = 'http://192.168.3.139:8000' // 箭河
-// let target = 'http://192.168.3.148:8000' //邹璇
+// let target = 'http://192.168.3.124:8000' //邹璇
 // let target = 'http://192.168.3.112:8000' //勇哥
 // let target = 'http://dev.dayaedu.com' // 开发环境
 let target = 'https://test.dayaedu.com' //测试环境