浏览代码

Merge branch '03/03GRADE' into test

mo 3 年之前
父节点
当前提交
d33c1fd19b

+ 77 - 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',
@@ -224,8 +225,33 @@ export function getVipGroupCostCount (data) {
   })
 }
 
+// 计算网管课课酬
+export function getPracticeGroupCostCount(data) {
+  return request({
+    url: api + '/practiceGroupManage/getPracticeGroupCostCount',
+    method: 'POST',
+    data: data
+  })
+}
+// 网管课申请
+export function createPractice(data) {
+  return request({
+    url: api + '/practiceGroupManage/practiceGroupApply',
+    method: 'POST',
+    data
+  })
+}
+
+// 获取网管课单价 practiceGroupManage/queryPracticeGroupSellPrice
+export function getPracticeGroupSellPrice(data) {
+  return request({
+    url: api + '/practiceGroupManage/queryPracticeGroupSellPrice',
+    method: 'GET',
+    params:data
+  })
+}
 // vip课申请
-export function createVip (data) {
+export function createVip(data) {
   return request({
     url: api + '/vipGroupManage/vipGroupApply',
     method: 'POST',
@@ -234,7 +260,7 @@ export function createVip (data) {
 }
 
 // 暂停vip
-export function closeVip (data) {
+export function closeVip(data) {
   return request({
     url: api + '/vipGroupManage/stopVipGroup',
     method: 'POST',
@@ -244,7 +270,7 @@ export function closeVip (data) {
 
 // 修改vip基本信息
 
-export function updateVipBaseInfo (data) {
+export function updateVipBaseInfo(data) {
   return request({
     url: api + '/vipGroupManage/updateVipBaseInfo',
     method: 'POST',
@@ -253,7 +279,7 @@ export function updateVipBaseInfo (data) {
 }
 
 // 获取vip课程计划
-export function findVipGroupCourseSchedules (data) {
+export function findVipGroupCourseSchedules(data) {
   return request({
     url: api + '/courseSchedule/findVipGroupCourseSchedules',
     method: 'POST',
@@ -262,7 +288,7 @@ export function findVipGroupCourseSchedules (data) {
 }
 
 // 批量删除课程 删除vip
-export function bathDelete (data) {
+export function bathDelete(data) {
   return request({
 
     url: api + '/courseSchedule/batchDelete',
@@ -271,7 +297,7 @@ export function bathDelete (data) {
   })
 }
 // vip批量修改
-export function vipCourseAdjust (data) {
+export function vipCourseAdjust(data) {
   return request({
     url: api + '/courseSchedule/vipCourseAdjust',
     method: 'POST',
@@ -280,7 +306,7 @@ export function vipCourseAdjust (data) {
 }
 
 // 新增vip课程计划
-export function appendVipGroupCourseSchedules (data) {
+export function appendVipGroupCourseSchedules(data) {
   return request({
     url: api + '/vipGroupManage/appendVipGroupCourseSchedules',
     method: 'POST',
@@ -289,7 +315,7 @@ export function appendVipGroupCourseSchedules (data) {
 }
 
 // vip退费查询
-export function getStudentSurplusCourseFee (data) {
+export function getStudentSurplusCourseFee(data) {
   return request({
     url: api + '/vipGroupManage/getStudentSurplusCourseFee',
     method: 'get',
@@ -298,7 +324,7 @@ export function getStudentSurplusCourseFee (data) {
 }
 
 // vip搜索课程余额的学生
-export function getHaveCourseBalanceStudents (data) {
+export function getHaveCourseBalanceStudents(data) {
   return request({
     url: api + '/vipGroupManage/findHaveCourseBalanceStudents',
     method: 'get',
@@ -307,7 +333,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 +342,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 +351,7 @@ export function batchAppendVipGroupCourses (data) {
 }
 
 // vip休学
-export function vipPauseForStudent (data) {
+export function vipPauseForStudent(data) {
   return request({
     url: api + '/vipGroupManage/pauseForStudent',
     method: 'POST',
@@ -334,7 +360,7 @@ export function vipPauseForStudent (data) {
 }
 
 // 获取学生休学信息
-export function getStudentPauseInfo (data) {
+export function getStudentPauseInfo(data) {
   return request({
     url: api + '/vipGroupManage/getStudentPauseInfo',
     method: 'POST',
@@ -343,7 +369,7 @@ export function getStudentPauseInfo (data) {
 }
 
 // 恢复休学
-export function recoverForStudent (data) {
+export function recoverForStudent(data) {
   return request({
     url: api + '/vipGroupManage/recoverForStudent',
     method: 'POST',
@@ -352,7 +378,7 @@ export function recoverForStudent (data) {
 }
 
 // 根据vip课所在部门与声部获取教师
-export function findTeacherWithVipGroupOrganAndSubject (data) {
+export function findTeacherWithVipGroupOrganAndSubject(data) {
   return request({
     url: api + '/vipGroupManage/findTeacherWithVipGroupOrganAndSubject',
     method: 'get',
@@ -361,7 +387,7 @@ export function findTeacherWithVipGroupOrganAndSubject (data) {
 }
 
 // 删除VIP课
-export function deleteVipGroup (data) {
+export function deleteVipGroup(data) {
   return request({
     url: api + '/vipGroupManage/deleteVipGroup',
     method: 'post',
@@ -370,7 +396,7 @@ export function deleteVipGroup (data) {
 }
 
 // 查询公用部分,分部
-export function getPublicOrgans (data) {
+export function getPublicOrgans(data) {
   return request({
     url: api + '/vipGroupManage/getPublicOrgans',
     method: 'get',
@@ -378,10 +404,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'
+})
+// 获取活动方案
+

+ 3 - 0
src/layout/components/TagsView.vue

@@ -90,6 +90,9 @@ export default {
         document.body.removeEventListener("click", this.closeMenu);
       }
     },
+   async '$route.meta.title'(val){
+       await this.$store.dispatch("addVisitedViews", this.$route);
+    }
   },
   mounted() {
     this.addViewTags();

+ 2 - 0
src/router/index.js

@@ -452,6 +452,8 @@ export const asyncRoutes = {
   couponManager:()=>import ('@/views/couponManager'),
   // 优惠券明细
   couponDetail:()=>import ('@/views/couponManager/couponDetail'),
+  // 优惠券明细
+  activeMarketing:()=>import ('@/views/activityScheduling/activeMarketing'),
 }
 
 export default router

+ 38 - 11
src/views/accompanyManager/accompanyList.vue

@@ -8,7 +8,7 @@
         class="newBand"
         v-permission="'export/practiceGroup'"
         @click="onStudentExport"
-        style="width: 150px; max-width:150px"
+        style="width: 150px; max-width: 150px"
       >
         续费提醒导出
       </div>
@@ -20,6 +20,14 @@
       >
         网管课导出
       </div>
+      <div
+        class="newBand"
+        v-permission="'/buildVip'"
+        @click="newPractice"
+        style="width: 120px"
+      >
+        新建网管课
+      </div>
     </div>
     <div class="m-core">
       <save-form
@@ -265,7 +273,10 @@
             <template slot-scope="scope">
               <div>
                 <!-- v-permission="'courseSchedule/classStartDateAdjust'"  v-if="!scope.row.isSettlement" -->
-                <el-button type="text" @click="lookCrouse(scope.row)"   v-if="permission('/accompanys')"
+                <el-button
+                  type="text"
+                  @click="lookCrouse(scope.row)"
+                  v-if="permission('/accompanys')"
                   >查看</el-button
                 >
                 <el-button
@@ -288,7 +299,7 @@
           </el-table-column>
         </el-table>
         <pagination
-         save-key="accompanyList"
+          save-key="accompanyList"
           sync
           :total.sync="rules.total"
           :page.sync="rules.page"
@@ -340,6 +351,7 @@
 </template>
 <script>
 import pagination from "@/components/Pagination/index";
+
 import { permission } from "@/utils/directivePage";
 import cleanDeep from "clean-deep";
 import { commGroupStatus, practiceGroupType } from "@/utils/searchArray";
@@ -392,9 +404,9 @@ export default {
     };
   },
   mounted() {
-           const { query } = this.$route;
-      if(query.search){
-      this.searchForm.search = query.search
+    const { query } = this.$route;
+    if (query.search) {
+      this.searchForm.search = query.search;
     }
     this.init();
   },
@@ -470,7 +482,7 @@ export default {
                 } else {
                   let objectUrl = URL.createObjectURL(blob);
                   let link = document.createElement("a");
-                  let fname = "网管课续费提醒" + new Date().getTime() + '.xls'; //下载文件的名字
+                  let fname = "网管课续费提醒" + new Date().getTime() + ".xls"; //下载文件的名字
                   link.href = objectUrl;
                   link.setAttribute("download", fname);
                   document.body.appendChild(link);
@@ -532,7 +544,7 @@ export default {
                 } else {
                   let objectUrl = URL.createObjectURL(blob);
                   let link = document.createElement("a");
-                  let fname = "网管课" + new Date().getTime() + '.xls'; //下载文件的名字
+                  let fname = "网管课" + new Date().getTime() + ".xls"; //下载文件的名字
                   link.href = objectUrl;
                   link.setAttribute("download", fname);
                   document.body.appendChild(link);
@@ -569,11 +581,20 @@ export default {
       });
     },
     lookCrouse(row) {
-    let coursesStartDate = this.$helpers.dayjs(row.coursesStartDate).format('YYYY-MM-DD')
-    let coursesExpireDate = this.$helpers.dayjs(row.coursesExpireDate).format('YYYY-MM-DD')
+      let coursesStartDate = this.$helpers
+        .dayjs(row.coursesStartDate)
+        .format("YYYY-MM-DD");
+      let coursesExpireDate = this.$helpers
+        .dayjs(row.coursesExpireDate)
+        .format("YYYY-MM-DD");
       this.$router.push({
         path: "/business/accompanys",
-        query: { id: row.id, type: row.type,coursesStartDate,coursesExpireDate },
+        query: {
+          id: row.id,
+          type: row.type,
+          coursesStartDate,
+          coursesExpireDate,
+        },
       });
     },
     closeCrouse(row) {
@@ -620,6 +641,12 @@ export default {
         }
       });
     },
+    newPractice() {
+      this.$router.push({
+        path: "/business/buildVip",
+        query:{courseType:'PRACTICE'}
+      });
+    },
   },
   watch: {
     closeVisible(val) {

+ 134 - 0
src/views/activityScheduling/activeMarketing.vue

@@ -0,0 +1,134 @@
+<template>
+    <div class="m-container">
+        <h2>
+            <div class="squrt"></div>营销活动列表
+        </h2>
+
+        <div class="m-core">
+            <save-form
+                ref="searchForm"
+                :inline="true"
+                :model="searchForm"
+                @submit="search"
+                @reset="onReSet"
+            >
+                <el-form-item prop="search">
+                    <el-input
+                        v-model="searchForm.search"
+                        clearable
+                        placeholder="活动名称/活动编号"
+                    />
+                </el-form-item>
+                <el-form-item prop="search">
+                    <el-input
+                        v-model="searchForm.search"
+                        clearable
+                        placeholder="活动方案编号"
+                    />
+                </el-form-item>
+                <el-form-item>
+                    <el-button native-type="submit" type="primary">搜索</el-button>
+                    <el-button native-type="reset" type="danger">重置</el-button>
+                    <!-- <el-button @click="marketVisible = true">新建</el-button> -->
+                </el-form-item>
+            </save-form>
+
+            <el-table
+                style="width: 100%"
+                :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+                :data="tableList"
+            >
+                <el-table-column align="center" prop="id" label="营销活动编号">
+                    <template slot-scope="scope">
+                        <div>
+                        <copy-text>{{ scope.row.id }}</copy-text>
+                        </div>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" prop="name" label="活动名称">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.name }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" prop="type" label="关联活动方案">
+                    <template slot-scope="scope">
+                        {{ scope.row.type | songUseTypeFormat }}
+                    </template>
+                </el-table-column>
+                <el-table-column
+                    align="center"
+                    width="180px"
+                    label="操作"
+                    fixed="right"
+                >
+                    <template slot-scope="scope">
+                        <el-button
+                            type="text"
+                        >修改</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                sync
+                :total.sync="rules.total"
+                :page.sync="rules.page"
+                :limit.sync="rules.limit"
+                :page-sizes="rules.page_size"
+                @pagination="FetchList"
+            />
+        </div>
+
+        <el-dialog
+            title="修改"
+            :visible.sync="marketVisible"
+            width="550px"
+            v-if="marketVisible"
+        >
+            <market-form
+                @submited="FetchList"
+                @close="marketVisible = false"
+            />
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import saveForm from "@/components/save-form";
+import pagination from "@/components/Pagination/index";
+import marketForm from './modals/market'
+export default {
+    components: {
+        saveForm,
+        pagination,
+        marketForm
+    },
+    data() {
+        return {
+            marketVisible: false,
+            searchForm: {
+                search: null
+            },
+            rules: {
+                // 分页规则
+                limit: 10, // 限制显示条数
+                page: 1, // 当前页
+                total: 0, // 总条数
+                page_size: [10, 20, 40, 50], // 选择限制显示条数
+            },
+            tableList: [],
+        }
+    },
+    methods: {
+        search() {
+
+        },
+        onReSet() {
+            this.$refs.searchForm.resetFields();
+            this.FetchList();
+        },
+        FetchList() {
+
+        }
+    }
+}
+</script>

+ 9 - 0
src/views/activityScheduling/api.js

@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+export function getCountCloudTeacherList (data) {
+    return request({
+        url: '/api-web/studentManage/countCloudTeacherActive',
+        method: 'get',
+        params: data
+    })
+}

+ 51 - 0
src/views/activityScheduling/modals/market.vue

@@ -0,0 +1,51 @@
+<template>
+    <div>
+        <el-form ref="form" :model="form" label-width="100px">
+            <el-form-item
+                prop="activeId"
+                label="营销活动编号"
+            >
+                <el-input placeholder="请输入营销活动编号" disabled v-model="form.activeId"/>
+            </el-form-item>
+            <el-form-item
+                prop="activeName"
+                label="活动名称"
+            >
+                <el-input placeholder="请输入活动名称" disabled v-model="form.activeName"/>
+            </el-form-item>
+            <el-form-item label="收费详情" prop="ids" :rules="[{required: true, message: '请输入收费详情'}]">
+                <el-input
+                    type="textarea"
+                    v-model.trim="form.ids"
+                    style="width: 100%"
+                    maxlength="300"
+                    :autosize="{ minRows: 5 }"
+                ></el-input>
+            </el-form-item>
+
+            <div style="text-align: right;">
+                <el-button type="primary" @click="submit">提交</el-button>
+                <el-button @click="$listeners.close">取消</el-button>
+            </div>
+        </el-form>
+    </div>
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+            form: {
+                activeId: '00001',
+                activeName: '活动名称',
+                ids: '13132,1445,12345,5643',
+            }
+        }
+    },
+    methods: {
+        submit() {
+            console.log('提交')
+        }
+    }
+}
+</script>

文件差异内容过多而无法显示
+ 482 - 255
src/views/buildVip/index.vue


+ 663 - 0
src/views/categroyManager/modals/baseInfo.vue

@@ -0,0 +1,663 @@
+<template>
+  <div>
+    <el-alert
+      title="基础信息"
+      type="info"
+      :closable="false"
+      class="baseMsg"
+    ></el-alert>
+
+    <div class="m-core">
+      <el-form
+        :label-position="labelPosition"
+        :model="baseForm"
+        ref="vipform"
+        label-width="140px"
+        :rules="vipformRules"
+        class="vipform"
+      >
+        <el-form-item label="活动名称" prop="name">
+          <el-input
+            style="width: 400px"
+            v-model.trim="baseForm.name"
+            :disabled="isDisabled || status != 'DRAFT'"
+          ></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
+            @change="onOrganChange"
+            clearable
+            :disabled="isDisabled || status != 'DRAFT'"
+          >
+            <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="活动描述" prop="description">
+          <el-input
+            type="textarea"
+            v-model.trim="baseForm.description"
+            style="width: 400px"
+            :rows="5"
+            placeholder="请输入活动说明"
+            :disabled="isDisabled || status != 'DRAFT'"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="活动类型" prop="activityType">
+          <el-select
+            v-model.trim="baseForm.activityType"
+            placeholder="请选择活动类型"
+            clearable
+            style="width: 400px !important"
+            @change="changeActivityType"
+            :disabled="isDisabled || status != 'DRAFT'"
+          >
+            <el-option label="课程活动" :value="0"></el-option>
+            <el-option label="会员活动" :value="1"></el-option>
+          </el-select>
+        </el-form-item>
+
+        <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']"
+            range-separator="至"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            start-placeholder="开始日期"
+            :picker-options="{
+              firstDayOfWeek: 1,
+            }"
+            end-placeholder="结束日期"
+          ></el-date-picker>
+          <el-tooltip placement="top" popper-class="mTooltip">
+            <div slot="content">
+              可通过该方案购买课程的时间范围,到达开始时间才可购买,到达结束时间后不可购买,不填则不限制且立即生效
+            </div>
+            <i
+              class="el-icon-question micon el-tooltip"
+              style="font-size: 18px; color: #f56c6c"
+            ></i>
+          </el-tooltip>
+        </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']"
+            range-separator="至"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            start-placeholder="开始日期"
+            :picker-options="{
+              firstDayOfWeek: 1,
+            }"
+            end-placeholder="结束日期"
+          ></el-date-picker>
+          <el-tooltip placement="top" popper-class="mTooltip">
+            <div slot="content">
+              通过该方案购买的课程排课时间不可超过该时间范围,不填则不限制
+            </div>
+            <i
+              class="el-icon-question micon el-tooltip"
+              style="font-size: 18px; color: #f56c6c"
+            ></i>
+          </el-tooltip>
+        </el-form-item>
+        <el-form-item label="适用学员" prop="applyToStudentType">
+          <el-row>
+            <el-col style="width: 400px">
+              <select-all
+                v-model.trim="baseForm.applyToStudentType"
+                style="width: 400px"
+                multiple
+                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="2"></el-option>
+                <el-option label="非会员" value="3"></el-option>
+              </select-all>
+            </el-col>
+            <el-tooltip placement="top" popper-class="mTooltip">
+              <div slot="content">
+                可通过该方案购买课程的学员群体,不填则不限制
+              </div>
+              <i
+                class="el-icon-question micon el-tooltip"
+                style="font-size: 18px; color: #f56c6c; margin-left: 3px"
+              ></i>
+            </el-tooltip>
+          </el-row>
+        </el-form-item>
+        <el-form-item label="可购买次数" prop="studentMaxUsedTimes">
+          <el-input
+            style="width: 400px"
+            type="number"
+            v-model.trim="baseForm.studentMaxUsedTimes"
+            :disabled="isDisabled"
+          >
+            <template slot="append">次</template>
+          </el-input>
+          <el-tooltip placement="top" popper-class="mTooltip">
+            <div slot="content">
+              学员可通购买该活动方案的次数限制,不填则不限制
+            </div>
+            <i
+              class="el-icon-question micon el-tooltip"
+              style="font-size: 18px; color: #f56c6c"
+            ></i>
+          </el-tooltip>
+        </el-form-item>
+        <el-form-item label="是否充值课程余额" prop="isPayToBalance">
+          <el-select
+            v-model.trim="baseForm.isPayToBalance"
+            placeholder="请选择是否充值课程余额"
+            clearable
+            style="width: 400px !important"
+            :disabled="isDisabled  || status !=  'DRAFT'"
+          >
+            <el-option label="课程余额" :value="1"></el-option>
+            <el-option label="资格限制" :value="0"></el-option>
+          </el-select>
+          <el-tooltip placement="top" popper-class="mTooltip">
+            <div slot="content">
+              课程余额:学员缴费金额进入课程余额,排课时扣减课程余额;若课程余额不足则不可排课
+              资格限制:学员缴费金额不进入课程余额,学员购买后增加可排课次数,排课后扣减可排课次数
+              会员活动默认为资格限制,不可修改
+            </div>
+            <i
+              class="el-icon-question micon el-tooltip"
+              style="font-size: 18px; color: #f56c6c"
+            ></i>
+          </el-tooltip>
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+</template>
+<script>
+import { vipGroupCategory, addVipActive } from "@/api/vipSeting";
+import { getEmployeeOrgan } from "@/api/buildTeam";
+import { vipResetTypeList } from "@/utils/searchArray";
+import cleanDeep from "clean-deep";
+
+export default {
+  props: ["baseForm", "isDisabled", "status"],
+  name: "vipNewActive",
+  data() {
+    return {
+      vipResetTypeList,
+      pageType: "",
+      labelPosition: "right",
+      vipformRules: {
+        name: [
+          { required: true, message: "请输入活动名称", trigger: "blur" },
+          {
+            min: 1,
+            max: 25,
+            message: "长度在 1 到 25 个字符",
+            trigger: "blur",
+          },
+        ],
+        desc: [
+          { required: true, message: "请输入文字描述", trigger: "blur" },
+          {
+            min: 1,
+            max: 200,
+            message: "长度在 1 到 200 个字符",
+            trigger: "blur",
+          },
+        ],
+        activityType: [
+          { required: true, message: "请选择活动类型", trigger: "blur" },
+        ],
+        // activeTime: [
+        //   { required: false, message: "请选择活动时间", trigger: "blur" },
+        // ],
+        courseTime: [
+          { required: false, message: "请选择课程时间", trigger: "blur" },
+        ],
+        studentMaxUsedTimes: [
+          { required: true, message: "请输入购买次数", trigger: "blur" },
+        ],
+        organ: [{ required: true, message: "请选择适用分部", trigger: "blur" }],
+        stauts: [
+          { required: true, message: "请选择活动形式", trigger: "blur" },
+        ],
+        applyToStudentType: [{ required: true, message: "请选择是否新生专享" }],
+        isPayToBalance: [{ required: true, message: "请选择是否支付到余额" }],
+        allowOnlineToOffline: [
+          { required: true, message: "请选择课程调整方式" },
+        ],
+      },
+      courseStatusList: [], // 获取所有课程形式
+      activeType: "",
+      online: true,
+      unonline: true,
+      onlineSalary: "TEACHER_DEFAULT",
+      unonlineSalary: "TEACHER_DEFAULT",
+      onlineprice: "",
+      unonlineprice: "",
+      salaryReadonlyFlag: false,
+      paymentReadonlyFlag: false,
+      attribute1: "",
+      attribute2: "",
+      courseNumForm: {
+        minCourseNum: "",
+        maxCourseNum: "",
+        studentMaxUsedTimes: "",
+      },
+      giveClassPaySalaryFlag: true,
+      organList: [],
+      onlineClassJoinGradientRewards: false,
+      offlineClassJoinGradientRewards: false,
+      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" },
+        ],
+      },
+    };
+  },
+
+  async mounted() {
+    // 首先获取课程形式
+    // vipGroupCategory().then(res => {
+    //   if (res.code == 200) {
+    //     this.courseStatusList = res.data;
+    //   }
+    // });
+    // // 适用分部
+    // getEmployeeOrgan().then(res => {
+    //   if (res.code == 200) {
+    //     this.organList = res.data;
+    //   }
+    // });
+    // 获取类型
+    await this.$store.dispatch("setVipGroupCategory");
+    // 获取分部
+    await this.$store.dispatch("setBranchs");
+    // 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;
+    if (!this.$route.query.id) {
+      this.$refs.vipform.resetFields();
+    }
+    //
+  },
+
+  methods: {
+    resetForm() {
+      this.$refs.form.resetFields();
+    },
+    handleMinChange() {
+      this.$refs.form.validateField("maxCourseNum");
+    },
+    handleMaxChange() {
+      this.$refs.form.validateField("minCourseNum");
+    },
+    validateCom(rule, value, callback) {
+      const one = Number(value);
+      if (Number.isInteger(one)) {
+        if (one < MIN_NUMBER) {
+          return callback(new Error("输入值必须大于0"));
+        } else if (one > MAX_NUMBER) {
+          return callback(new Error("输入值必须小于999"));
+        }
+        return callback();
+      }
+      return callback(new Error("输入值必须为正整数"));
+    },
+    validateMin(rule, value, callback) {
+      const one = Number(value);
+      const max = Number(this.courseNumForm.maxCourseNum);
+      if (!max || one <= max) {
+        return callback();
+      }
+      return callback(new Error("输入值不得大于最大课时数"));
+    },
+    validateMax(rule, value, callback) {
+      const one = Number(value);
+      const min = Number(this.courseNumForm.minCourseNum);
+      if (!min || one >= min) {
+        return callback();
+      }
+      return callback(new Error("输入值不得小于最小课时数"));
+    },
+    changeStauts(val) {
+      console.log(val);
+    },
+    changeActivityType(val) {
+      this.$emit("resetPayInfo");
+    },
+    submitFrom() {
+      this.$refs.form.validate((isok) => {
+        if (isok) {
+          this.$refs["vipform"].validate((valid) => {
+            if (valid) {
+              // 验证通过
+              let coursesStartTime = null,
+                coursesEndTime = null,
+                startTime = null,
+                endTime = null;
+              if (
+                this.vipform.courseTime &&
+                this.vipform.courseTime.length > 0
+              ) {
+                coursesStartTime = this.vipform.courseTime[0];
+                coursesEndTime = this.vipform.courseTime[1];
+              }
+              if (
+                this.vipform.activeTime &&
+                this.vipform.activeTime.length > 0
+              ) {
+                startTime = this.vipform.activeTime[0];
+                endTime = this.vipform.activeTime[1];
+              }
+              let organId = this.vipform.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.vipform.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;
+              }
+              // 发请求创建活动
+              addVipActive(
+                cleanDeep({
+                  coursesStartTime,
+                  coursesEndTime,
+                  startTime,
+                  endTime,
+                  name: this.vipform.name,
+                  description: this.vipform.desc,
+                  applyToStudentType: this.vipform.applyToStudentType,
+                  allowOnlineToOffline: this.vipform.allowOnlineToOffline,
+                  organId,
+                  type,
+                  vipGroupCategoryIdList,
+                  vipGroupSalarySettlement,
+                  salaryReadonlyFlag,
+                  paymentReadonlyFlag,
+                  giveClassPaySalaryFlag: 1,
+                  attribute1: this.attribute1,
+                  attribute2: this.attribute2,
+                  minCourseNum: this.courseNumForm.minCourseNum,
+                  maxCourseNum: this.courseNumForm.maxCourseNum,
+                  studentMaxUsedTimes: this.courseNumForm.studentMaxUsedTimes
+                    ? this.courseNumForm.studentMaxUsedTimes
+                    : -1,
+                  offlineClassJoinGradientRewards:
+                    this.offlineClassJoinGradientRewards * 1,
+                  onlineClassJoinGradientRewards:
+                    this.onlineClassJoinGradientRewards * 1,
+                })
+              ).then((res) => {
+                if (res.code == 200) {
+                  this.$message.success("恭喜你,活动创建成功");
+                  // this.onReSet();
+                  this.$store.dispatch("delVisitedViews", this.$route);
+                  this.$router.push({
+                    path: "/vipActiveManager/vipActiveList",
+                  });
+                }
+              });
+            } else {
+              this.$nextTick(() => {
+                let isError = document.getElementsByClassName("is-error");
+                isError[0].scrollIntoView({
+                  block: "center",
+                  behavior: "smooth",
+                });
+              });
+              // this.$message.error("请填写必要参数");
+            }
+          });
+        }
+      });
+
+      // 线上线下课 勾选就传不勾选就不传
+      // addVipActive().then(res => { })
+    },
+    onOrganChange() {
+      // this.$forceUpdate();
+      this.$refs.vipform.validateField("organ");
+      this.$forceUpdate();
+    },
+    applyToStudentTypeChange() {
+      this.$refs.vipform.validateField("applyToStudentType");
+      this.$forceUpdate();
+    },
+    onCheckAllBranch() {
+      // 选择所有分部
+      let vipform = this.vipform;
+      vipform.organ = [];
+      this.selects.branchs.forEach((item) => {
+        vipform.organ.push(item.id);
+      });
+      this.$refs.vipform.validateField("organ");
+      this.$forceUpdate();
+    },
+
+    onReSet() {
+      this.vipform = {
+        name: "",
+        desc: "",
+        activeTime: [],
+        courseTime: [],
+      };
+      this.activeType = "";
+      this.online = true;
+      this.unonline = true;
+      this.salaryReadonlyFlag = false;
+      this.onlineSalary = "TEACHER_DEFAULT";
+      this.unonlineSalary = "TEACHER_DEFAULT";
+      this.onlineprice = "";
+      this.unonlineprice = "";
+      this.onlineClassJoinGradientRewards = false;
+      this.offlineClassJoinGradientRewards = false;
+      this.attribute1 = "";
+      this.attribute2 = "";
+      this.courseNumForm.maxCourseNum = "";
+      this.courseNumForm.minCourseNum = "";
+      // this.$refs.vipform.resetFields();
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.baseMsg {
+  margin: 30px 0;
+}
+.m-core {
+  font-size: 14px;
+  width: 100%;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  // text-align: center;
+  .activeRange {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+    .left {
+      height: 72px;
+      line-height: 72px;
+    }
+    .right {
+      .chioseWrap {
+        display: flex;
+        flex-direction: row;
+        justify-content: flex-start;
+        height: 72px;
+        line-height: 72px;
+        align-items: center;
+        .el-checkbox {
+          margin-right: 20px;
+        }
+        .el-select {
+          margin-right: 20px;
+        }
+      }
+    }
+  }
+  .activeType {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+    .left {
+      margin-right: 20px;
+      p {
+        height: 40px;
+        line-height: 40px;
+      }
+    }
+    .right {
+      > div {
+        display: flex;
+        flex-direction: row;
+        justify-content: flex-start;
+        height: 40px;
+        line-height: 40px;
+        margin-bottom: 20px;
+        .head {
+          width: 120px;
+          height: 40px;
+          line-height: 40px;
+          border: 1px solid #ccc;
+
+          text-align: center;
+          border-radius: 5px;
+          cursor: pointer;
+          margin-right: 10px;
+        }
+        > .head.active {
+          background-color: #13817a;
+          color: #fff;
+          border: none;
+        }
+        .title {
+          line-height: 40px;
+          height: 40px;
+        }
+      }
+    }
+  }
+}
+</style>
+<style lang="scss">
+.m-core {
+  // .vipform {
+  //   .el-select {
+  //     .el-input__inner {
+  //     }
+  //   }
+  // }
+  .activeType {
+    .right {
+      .el-input {
+        width: 150px !important;
+      }
+    }
+  }
+}
+</style>
+
+

+ 521 - 0
src/views/categroyManager/modals/payInfo.vue

@@ -0,0 +1,521 @@
+<template>
+  <div>
+    <el-alert
+      title="缴费信息"
+      type="info"
+      :closable="false"
+      class="baseMsg"
+    ></el-alert>
+    <el-form
+      :model="payForm"
+      label-width="120px"
+      label-position="right"
+      :inline="true"
+      ref="form"
+    >
+      <div v-if="!activeType">
+        <el-row>
+          <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>
+            </el-select>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            :rules="[
+              { required: true, message: '请选择课程形式', trigger: 'blur' },
+            ]"
+            label="课程形式"
+            prop="vipGroupCategoryIdList"
+            v-if="payForm.courseType == 'VIP'"
+          >
+            <select-all
+              v-model.trim="payForm.vipGroupCategoryIdList"
+              style="width: 400px"
+              @visible-change="$forceUpdate()"
+              clearable
+              multiple
+              :disabled="isDisabled"
+            >
+              <el-option
+                v-for="item in selects.vipGroupCategory"
+                :key="item.id"
+                :value="item.id"
+                :label="item.name"
+              ></el-option>
+            </select-all>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <el-form-item
+            :rules="[
+              { required: true, message: '请选择上课模式', trigger: 'blur' },
+            ]"
+            label="上课模式"
+            prop="teachMode"
+            v-if="payForm.courseType == 'VIP'"
+          >
+            <el-select
+              style="width: 400px !important"
+              v-model.trim="payForm.teachMode"
+              placeholder="请选择上课模式"
+              clearable
+              :disabled="isDisabled"
+            >
+              <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"
+            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"
+                :value="item.value"
+                v-for="item in vipResetTypeList"
+                :key="item.value"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-row>
+        <el-row>
+          <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
+            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 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>
+          </el-form-item>
+        </el-row>
+      </div>
+      <div v-else>
+        <el-row>
+          <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
+              :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
+            label="会员周期"
+            prop="period"
+            :rules="[
+              { required: true, message: '请选择会员周期', trigger: 'blur' },
+            ]"
+          >
+            <el-select
+              style="width: 400px !important"
+              v-model.trim="payForm.period"
+              placeholder="请选择会员周期"
+              clearable
+              :disabled="isDisabled"
+            >
+              <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="折扣值"
+          :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-input
+            v-model.number="payForm.fullMinusCourseTimes"
+            type="number"
+            style="width: 400px"
+            @input="changeFullMinus"
+            placeholder="满赠达标数量"
+            :disabled="isDisabled"
+          >
+          </el-input>
+        </el-form-item>
+      </el-row>
+      <el-row>
+        <el-col>
+          <el-form-item
+            label="赠送类型"
+            prop="giveCourseType"
+            v-if="payForm.fullMinusCourseTimes"
+            :rules="[
+              { required: true, message: '请选择赠送类型', trigger: 'blur' },
+            ]"
+          >
+            <el-select
+              v-model.trim="payForm.giveCourseType"
+              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>
+              <el-option label="会员" value="MEMBER"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-form-item
+          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.giveTeachMode"
+            placeholder="请选择赠课模式"
+            clearable
+            :disabled="isDisabled"
+          >
+            <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' && payForm.fullMinusCourseTimes
+            "
+            :rules="[
+              { required: true, message: '请选择赠课形式', trigger: 'blur' },
+            ]"
+          >
+            <el-select
+              style="width: 400px !important"
+              v-model.trim="payForm.giveCategoryId"
+              @visible-change="$forceUpdate()"
+              clearable
+              @change="chageSalary"
+              :disabled="isDisabled"
+            >
+              <el-option
+                v-for="item in selects.vipGroupCategory"
+                :key="item.id"
+                :value="item.id"
+                :label="item.name"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-form-item
+        label="赠课时长"
+        prop="giveSingleCourseTime"
+        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
+        v-if="
+          payForm.giveCourseType != 'MEMBER' && payForm.fullMinusCourseTimes
+        "
+      >
+        <el-form-item
+          prop="giveCourseNum"
+          label="赠送课时数"
+          :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="givePeriod"
+          label="赠送会员时长"
+          v-if="payForm.giveCourseType == 'MEMBER'"
+          :rules="[
+            { required: true, message: '请输入赠送会员时长', trigger: 'blur' },
+          ]"
+        >
+          <el-input
+            v-model.number="payForm.givePeriod"
+            type="number"
+            style="width: 400px"
+            placeholder="请输入赠送会员时长"
+            :disabled="isDisabled"
+          >
+            <template slot="append">天</template>
+          </el-input>
+        </el-form-item>
+      </el-row>
+    </el-form>
+  </div>
+</template>
+<script>
+import { vipResetTypeList } from "@/utils/searchArray";
+const MIN_NUMBER = 1;
+const MAX_NUMBER = 999;
+export default {
+  props: ["payForm", "activeType", "remberList","isDisabled"],
+  data() {
+    return {
+      coureTimerList: [],
+      vipResetTypeList,
+    };
+  },
+  async mounted() {
+    await this.$store.dispatch("setVipGroupCategory");
+  },
+  methods: {
+    handleMinChange() {
+      this.$refs.form.validateField("maxCourseNum");
+    },
+    handleMaxChange() {
+      this.$refs.form.validateField("minCourseNum");
+    },
+    validateCom(rule, value, callback) {
+      const one = Number(value);
+      if (Number.isInteger(one)) {
+        if (one < MIN_NUMBER) {
+          return callback(new Error("输入值必须大于0"));
+        } else if (one > MAX_NUMBER) {
+          return callback(new Error("输入值必须小于999"));
+        }
+        return callback();
+      }
+      return callback(new Error("输入值必须为正整数"));
+    },
+    validateMin(rule, value, callback) {
+      const one = Number(value);
+      const max = Number(this.payForm.maxCourseNum);
+      if (!max || one <= max) {
+        return callback();
+      }
+      return callback(new Error("输入值不得大于最大课时数"));
+    },
+    validateMax(rule, value, callback) {
+      const one = Number(value);
+      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>
+<style lang="scss" scoped>
+.baseMsg {
+  margin: 30px 0;
+}
+</style>

+ 298 - 0
src/views/categroyManager/modals/salaryInfo.vue

@@ -0,0 +1,298 @@
+<template>
+  <div>
+    <el-alert
+      title="课酬信息"
+      type="info"
+      :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="150px"
+      label-position="right"
+      :inline="true"
+    >
+      <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: 240px !important"
+            v-model.trim="
+              salaryForm.vipOnlineSalarySettlement.salarySettlementType
+            "
+            placeholder="请选择付费VIP线上课课酬"
+            clearable
+            :disabled="isDisabled"
+
+          >
+            <el-option label="自定义课酬" value="FIXED_SALARY"></el-option>
+            <el-option label="标准课酬" value="TEACHER_DEFAULT"></el-option>
+          </el-select>
+        </el-form-item>
+        <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.vipOnlineSalarySettlement.settlementValue
+            "
+            type="number"
+            style="width: 240px"
+            placeholder="自定义课时课酬"
+            :disabled="isDisabled"
+          >
+            <template slot="append">课时/元</template>
+          </el-input>
+        </el-form-item>
+      </el-row>
+      <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: 240px !important"
+            v-model.trim="
+              salaryForm.vipOfflineSalarySettlement.salarySettlementType
+            "
+            placeholder="请选择付费VIP线下课课酬"
+            clearable
+            :disabled="isDisabled"
+          >
+            <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="自定义课时课酬"
+           :rules="[{required: true, message: '请输入自定义课时课酬'}]"
+          prop="applyToStudentType"
+          v-if="
+            salaryForm.vipOfflineSalarySettlement.salarySettlementType ==
+            'FIXED_SALARY'&&courseTeachModeOffline
+          "
+        >
+          <el-input
+            v-model.number="
+              salaryForm.vipOfflineSalarySettlement.settlementValue
+            "
+            type="number"
+            style="width: 240px"
+            placeholder="自定义课时课酬"
+            :disabled="isDisabled"
+          >
+            <template slot="append">课时/元</template>
+          </el-input>
+        </el-form-item>
+      </el-row>
+      <el-row>
+        <el-form-item
+          label="付费网管课课酬"
+          prop="practiceSalarySettlement.salarySettlementType"
+          v-if="payForm.courseType == 'PRACTICE'"
+           :rules="[{required: true, message: '请选择付费网管课课酬'}]"
+        >
+          <el-select
+            style="width: 240px !important"
+            v-model.trim="
+              salaryForm.practiceSalarySettlement.salarySettlementType
+            "
+            placeholder="请选择付费网管课课酬"
+            clearable
+            :disabled="isDisabled"
+          >
+            <el-option label="自定义课酬" value="FIXED_SALARY"></el-option>
+            <el-option label="标准课酬" value="TEACHER_DEFAULT"></el-option>
+          </el-select>
+        </el-form-item>
+        <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.practiceSalarySettlement.settlementValue"
+            type="number"
+            style="width: 240px"
+            placeholder="自定义课时课酬"
+            :disabled="isDisabled"
+          >
+            <template slot="append">课时/元</template>
+          </el-input>
+        </el-form-item>
+      </el-row>
+      <el-row>
+        <el-form-item
+       v-if="giveCourseTeachModeOnline"
+          label="赠送VIP线上课课酬"
+          prop="giveVipOnlineSalarySettlement.salarySettlementType"
+             :rules="[{required: true, message: '请选择赠送VIP线上课课酬'}]"
+        >
+          <el-select
+            style="width: 240px !important"
+            v-model.trim="
+              salaryForm.giveVipOnlineSalarySettlement.salarySettlementType
+            "
+            placeholder="请选择赠送VIP线上课课酬"
+            clearable
+            :disabled="isDisabled"
+          >
+            <el-option label="自定义课酬" value="FIXED_SALARY"></el-option>
+            <el-option label="标准课酬" value="TEACHER_DEFAULT"></el-option>
+          </el-select>
+        </el-form-item>
+        <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.giveVipOnlineSalarySettlement.settlementValue
+            "
+            type="number"
+            style="width: 240px"
+            placeholder="自定义课时课酬"
+            :disabled="isDisabled"
+          >
+            <template slot="append">课时/元</template>
+          </el-input>
+        </el-form-item>
+      </el-row>
+      <el-row   v-if="giveCourseTeachModeOffline">
+        <el-form-item
+          label="赠送VIP线下课课酬"
+          prop="giveVipOfflineSalarySettlement.salarySettlementType"
+           :rules="[{required: true, message: '请选择赠送VIP线下课课酬'}]"
+        >
+          <el-select
+            style="width: 240px !important"
+            v-model.trim="
+              salaryForm.giveVipOfflineSalarySettlement.salarySettlementType
+            "
+            placeholder="请选择赠送VIP线下课课酬"
+            clearable
+            :disabled="isDisabled"
+          >
+            <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="自定义课时课酬"
+           :rules="[{required: true, message: '请输入自定义课时课酬'}]"
+          prop="giveVipOfflineSalarySettlement.settlementValue"
+          v-if="
+            salaryForm.giveVipOfflineSalarySettlement.salarySettlementType ==
+            'FIXED_SALARY'&&giveCourseTeachModeOffline
+          "
+        >
+          <el-input
+            v-model.number="
+              salaryForm.giveVipOfflineSalarySettlement.settlementValue
+            "
+            type="number"
+            style="width: 240px"
+            placeholder="自定义课时课酬"
+            :disabled="isDisabled"
+          >
+            <template slot="append">课时/元</template>
+          </el-input>
+        </el-form-item>
+      </el-row>
+      <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: 240px !important"
+            v-model.trim="
+              salaryForm.givePracticeSalarySettlement.salarySettlementType
+            "
+            placeholder="请选择赠送网管课课酬"
+            clearable
+            :disabled="isDisabled"
+          >
+            <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="givePracticeSalarySettlement.settlementValue"
+          v-if="
+            salaryForm.givePracticeSalarySettlement.salarySettlementType ==
+            'FIXED_SALARY'&&payForm.giveCourseType=='PRACTICE'&&payForm.giveCourseNum>0
+          "
+        >
+          <el-input
+            v-model.number="
+              salaryForm.givePracticeSalarySettlement.settlementValue
+            "
+            type="number"
+            style="width: 240px"
+            placeholder="自定义课时课酬"
+            :disabled="isDisabled"
+          >
+            <template slot="append">课时/元</template>
+          </el-input>
+        </el-form-item>
+      </el-row>
+    </el-form>
+  </div>
+</template>
+<script>
+export default {
+  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>
+.baseMsg {
+  margin: 30px 0;
+}
+</style>

+ 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) => {

+ 413 - 807
src/views/categroyManager/vipNewActive.vue

@@ -2,859 +2,465 @@
   <div class="m-container">
     <!-- <h2><div class="squrt"></div>VIP活动方案新增 </h2> -->
     <h2>
-      <el-page-header
-        @back="onCancel"
-        :content="
-          'VIP/乐理课活动方案' + (pageType == 'create' ? '新增' : '修改')
-        "
-      ></el-page-header>
+      <el-page-header @back="onCancel" :content="title"></el-page-header>
     </h2>
-    <div class="m-core">
-      <el-form
-        :label-position="labelPosition"
-        :model="vipform"
-        ref="vipform"
-        label-width="120px"
-        :rules="vipformRules"
-        class="vipform"
-      >
-        <el-form-item label="活动名称" prop="name">
-          <el-input style="width: 400px" v-model.trim="vipform.name"></el-input>
-        </el-form-item>
-        <el-form-item label="适用分部" prop="organ">
-          <select-all
-            v-model.trim="vipform.organ"
-            style="width: 400px"
-            multiple
-            filterable
-            @visible-change="$forceUpdate()"
-            @change="onOrganChange"
-            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="课程形式" prop="stauts">
-          <select-all
-            v-model.trim="vipform.stauts"
-            style="width: 400px"
-            @visible-change="$forceUpdate()"
-            clearable
-            multiple
-          >
-            <el-option
-              v-for="item in selects.vipGroupCategory"
-              :key="item.id"
-              :value="item.id"
-              :label="item.name"
-            ></el-option>
-          </select-all>
-        </el-form-item>
-        <el-form-item label="课程调整方式" prop="allowOnlineToOffline">
-          <el-select
-            v-model.trim="vipform.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="使用学员" prop="applyToStudentType">
-          <el-select
-            v-model.trim="vipform.applyToStudentType"
-            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="活动描述" prop="desc">
-          <el-input
-            type="textarea"
-            v-model.trim="vipform.desc"
-            style="width: 400px"
-            :rows="5"
-            placeholder="请输入活动说明"
-          ></el-input>
-        </el-form-item>
-        <el-form-item label="活动时间" prop="activeTime">
-          <el-date-picker
-            v-model.trim="vipform.activeTime"
-            type="datetimerange"
-            :default-time="['00:00:00', '23:59:59']"
-            range-separator="至"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            start-placeholder="开始日期"
-            :picker-options="{
-              firstDayOfWeek: 1,
-            }"
-            end-placeholder="结束日期"
-          ></el-date-picker>
-        </el-form-item>
-        <el-form-item label="课程时间" prop="courseTime">
-          <el-date-picker
-            v-model.trim="vipform.courseTime"
-            type="datetimerange"
-            :default-time="['00:00:00', '23:59:59']"
-            range-separator="至"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            start-placeholder="开始日期"
-            :picker-options="{
-              firstDayOfWeek: 1,
-            }"
-            end-placeholder="结束日期"
-          ></el-date-picker>
-        </el-form-item>
-      </el-form>
-      <el-alert
-        title="活动适用范围&结算标准:"
-        type="info"
-        :closable="false"
-        class="alert"
-      >
-      </el-alert>
-      <div class="activeRange" style="padding-left: 120px">
-        <!-- <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"
-              disabled
-              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>
-            <el-input
-              placeholder="请输入"
-              v-if="onlineSalary == 'RATIO_DISCOUNT'"
-              style="width: 200px"
-              type="number"
-              @mousewheel.native.prevent
-              v-model.trim="onlineprice"
-            >
-              <template slot="append">%</template>
-            </el-input>
-            <el-input
-              placeholder="请输入"
-              v-if="onlineSalary == 'FIXED_SALARY'"
-              style="width: 200px"
-              type="number"
-              @mousewheel.native.prevent
-              v-model.trim="onlineprice"
-            >
-              <template slot="append">元</template>
-            </el-input>
-            <div
-              style="width: 200px"
-              v-if="onlineSalary == 'TEACHER_DEFAULT'"
-            ></div>
-            <!-- <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"
-              clearable
-              disabled
-              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>
-            <el-input
-              placeholder="请输入"
-              v-if="unonlineSalary == 'RATIO_DISCOUNT'"
-              style="width: 200px"
-              type="number"
-              @mousewheel.native.prevent
-              v-model.trim="unonlineprice"
-            >
-              <template slot="append">%</template>
-            </el-input>
-            <el-input
-              placeholder="请输入"
-              style="width: 200px"
-              v-if="unonlineSalary == 'FIXED_SALARY'"
-              type="number"
-              @mousewheel.native.prevent
-              v-model.trim="unonlineprice"
-            >
-              <template slot="append">元</template>
-            </el-input>
-            <div
-              style="width: 200px"
-              v-if="unonlineSalary == 'TEACHER_DEFAULT'"
-            ></div>
-            <!-- <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"
-                         label="可自定义课酬"></el-checkbox>
-          </div> -->
-        </div>
-      </div>
-      <el-alert
-        title="活动类型:"
-        type="info"
-        style="margin-bottom: 15px"
-        :closable="false"
-        class="alert"
-      >
-      </el-alert>
-      <div class="activeType">
-        <!-- <div class="left">
-          <p>活动类型</p>
-        </div> -->
-        <div class="right">
-          <div>
-            <div
-              class="head"
-              :class="activeType == 'BASE_ACTIVITY' ? 'active' : ''"
-              @click="
-                () => {
-                  this.$refs['form'].resetFields();
-                  activeType = 'BASE_ACTIVITY';
-                  courseNumForm = {
-                    minCourseNum: '',
-                    maxCourseNum: '',
-                    studentMaxUsedTimes: '',
-                  };
-                  attribute1 = '';
-                  attribute2 = '';
-                }
-              "
-            >
-              基础活动
-            </div>
-            <p class="title" v-if="activeType == 'BASE_ACTIVITY'">课程原价</p>
-          </div>
-          <div>
-            <div
-              class="head"
-              :class="activeType == 'DISCOUNT' ? 'active' : ''"
-              @click="activeType = 'DISCOUNT'"
-            >
-              折扣
-            </div>
-            <el-input
-              v-if="activeType == 'DISCOUNT'"
-              v-model.trim="attribute1"
-              style="width: 200px !important"
-              placeholder="请输入折扣数值"
-            >
-              <template slot="append">%</template>
-            </el-input>
-            <el-form
-              :model="courseNumForm"
-              :inline="true"
-              ref="form"
-              v-show="activeType == 'DISCOUNT'"
-              :rules="activeType == 'DISCOUNT' ? courseNumrules : {}"
-            >
-              <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"
-              :class="activeType == 'GIVE_CLASS' ? 'active' : ''"
-              @click="
-                () => {
-                  this.$refs['form'].resetFields();
-                  activeType = 'GIVE_CLASS';
-                  courseNumForm.minCourseNum = '';
-                  courseNumForm.maxCourseNum = '';
-                  attribute1 = '';
-                  attribute2 = '';
-                }
-              "
-            >
-              赠送课时
-            </div>
-            <el-input
-              placeholder="多少节开始赠"
-              v-if="activeType == 'GIVE_CLASS'"
-              v-model.trim="attribute1"
-              type="number"
-              @mousewheel.native.prevent
-              style="margin-right: 10px; width: 200px !important"
-            >
-              <template slot="append">节</template>
-            </el-input>
-            <span v-if="activeType == 'GIVE_CLASS'">赠</span>
-            <el-input
-              v-if="activeType == 'GIVE_CLASS'"
-              placeholder="请输入赠送课时数"
-              type="number"
-              @mousewheel.native.prevent
-              v-model.trim="attribute2"
-              style="margin: 0 10px; width: 200px !important"
-            >
-              <template slot="append">节</template>
-            </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>
-    <div
-      class="btnWrap"
-      style="justify-content: flex-start; padding-left: 120px"
+
+    <el-steps
+      :active="active"
+      finish-status="success"
+      align-center
+      class="steps"
     >
-      <el-button type="primary" @click="submitFrom">确定</el-button>
-      <el-button type="info" @click="onReSet">重置</el-button>
-      <!-- <div class="okBtn"
-           @click="submitFrom">确定</div> -->
+      <el-step title="基础信息"></el-step>
+      <el-step title="缴费信息"></el-step>
+      <el-step title="课酬信息"></el-step>
+    </el-steps>
+    <div class="wrap">
+      <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 || statuss != 'DRAFT'"
+      />
+      <salaryInfo
+        :salaryForm="salaryForm"
+        v-if="active == 3"
+        :activeType="baseForm.activityType"
+        :payForm="payForm"
+        :isDisabled="isDisabled || statuss != 'DRAFT'"
+        :status="statuss"
+      />
     </div>
+    <el-button
+      style="margin-top: 12px"
+      type="primary"
+      @click="prve"
+      v-if="active > 1"
+      >上一步</el-button
+    >
+    <el-button
+      style="margin-top: 12px"
+      type="primary"
+      @click="next"
+      v-if="active < 3"
+      >下一步</el-button
+    >
+
+    <el-button
+      style="margin-top: 12px"
+      type="danger"
+      @click="save"
+      v-if="!isDisabled && statuss == 'DRAFT'"
+      >保存草稿</el-button
+    >
+    <el-button
+      style="margin-top: 12px"
+      type="danger"
+      @click="submit"
+      v-if="active == 3 && !isDisabled && statuss == 'DRAFT'"
+      >创建活动</el-button
+    >
+    <el-button
+      style="margin-top: 12px"
+      type="danger"
+      @click="submit"
+      v-if="active == 3 && !isDisabled && statuss != 'DRAFT'"
+      >提交修改</el-button
+    >
   </div>
 </template>
+
 <script>
-import { vipGroupCategory, addVipActive } from "@/api/vipSeting";
-import { getEmployeeOrgan } from "@/api/buildTeam";
-import { vipResetTypeList } from "@/utils/searchArray";
+import baseInfo from "./modals/baseInfo.vue";
+import payInfo from "./modals/payInfo.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 MIN_NUMBER = 1;
-const MAX_NUMBER = 999;
+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 {
-  name: "vipNewActive",
+  components: {
+    baseInfo,
+    payInfo,
+    salaryInfo,
+  },
   data() {
     return {
-      vipResetTypeList,
-      pageType: "",
-      labelPosition: "right",
-      vipform: {
+      status: "DRAFT",
+      active: 1,
+      baseForm: {
         name: "",
-        desc: "",
+        description: "",
         activeTime: [],
         courseTime: [],
         organ: [],
-      },
-      vipformRules: {
-        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: "请选择是否新生专享" }],
-        allowOnlineToOffline: [
-          { required: true, message: "请选择课程调整方式" },
-        ],
-      },
-      courseStatusList: [], // 获取所有课程形式
-      activeType: "",
-      online: true,
-      unonline: true,
-      onlineSalary: "TEACHER_DEFAULT",
-      unonlineSalary: "TEACHER_DEFAULT",
-      onlineprice: "",
-      unonlineprice: "",
-      salaryReadonlyFlag: false,
-      paymentReadonlyFlag: false,
-      attribute1: "",
-      attribute2: "",
-      courseNumForm: {
-        minCourseNum: "",
-        maxCourseNum: "",
+        activityType: "",
+        applyToStudentType: [],
         studentMaxUsedTimes: "",
+        isPayToBalance: "",
       },
-      giveClassPaySalaryFlag: true,
-      organList: [],
-      onlineClassJoinGradientRewards: false,
-      offlineClassJoinGradientRewards: false,
-      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" },
-        ],
+      title: "新建课程活动方案",
+      payForm: {
+        ...payBaseForm,
       },
+      salaryForm: {
+        ...baseSalaryForm,
+      },
+      remberList: [],
     };
   },
-  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() {
-    // 首先获取课程形式
-    // vipGroupCategory().then(res => {
-    //   if (res.code == 200) {
-    //     this.courseStatusList = res.data;
-    //   }
-    // });
-    // // 适用分部
-    // getEmployeeOrgan().then(res => {
-    //   if (res.code == 200) {
-    //     this.organList = res.data;
-    //   }
-    // });
-    // 获取类型
-    await this.$store.dispatch("setVipGroupCategory");
-    // 获取分部
-    await this.$store.dispatch("setBranchs");
-    this.onReSet();
-    // if (this.$route.query.rules) {
-    //   this.rules = this.$route.query.rules;
-    // }
-    // if (this.$route.query.searchForm) {
-    //   this.searchForm = this.$route.query.searchForm;
-    // }
+    try {
+      const res = await getAllmemberRank();
+      this.remberList = res.data;
+    } catch {}
 
-    this.pageType = this.$route.query.type;
-    this.$refs.vipform.resetFields();
+    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: {
-    resetForm() {
-      this.$refs.form.resetFields();
-    },
-    handleMinChange() {
-      this.$refs.form.validateField("maxCourseNum");
+    onCancel() {
+      // if (this.active > 1) {
+      //   this.active--;
+      //   console.log(this.active);
+      // } else {
+        this.$store.dispatch("delVisitedViews", this.$route);
+        this.$router.push({
+          path: "/vipActiveManager/vipActiveList",
+          query: { rules: this.rules, searchForm: this.searchForm },
+        });
+      // }
     },
-    handleMaxChange() {
-      this.$refs.form.validateField("minCourseNum");
+    next() {
+      let flags = true;
+      if (this.active == 1) {
+        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 (this.active < 3) {
+        this.active++;
+      }
     },
-    validateCom(rule, value, callback) {
-      const one = Number(value);
-      if (Number.isInteger(one)) {
-        if (one < MIN_NUMBER) {
-          return callback(new Error("输入值必须大于0"));
-        } else if (one > MAX_NUMBER) {
-          return callback(new Error("输入值必须小于999"));
-        }
-        return callback();
+    prve() {
+      if (this.active >= 2) {
+        this.active--;
       }
-      return callback(new Error("输入值必须为正整数"));
     },
-    validateMin(rule, value, callback) {
-      const one = Number(value);
-      const max = Number(this.courseNumForm.maxCourseNum);
-      if (!max || one <= max) {
-        return callback();
+    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", "");
       }
-      return callback(new Error("输入值不得大于最大课时数"));
+      // vip
+      // 课程形式
+      // 上课模式
+      // 单课时长
+      // 课程调整方式
+      // PRACTICE
     },
-    validateMax(rule, value, callback) {
-      const one = Number(value);
-      const min = Number(this.courseNumForm.minCourseNum);
-      if (!min || one >= min) {
-        return callback();
+    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);
       }
-      return callback(new Error("输入值不得小于最小课时数"));
+      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();
     },
-    changeStauts(val) {
-      console.log(val);
+    submit() {
+      this.baseForm.status = "PROGRESS";
+      this.submitDataFormat("PROGRESS");
     },
-    submitFrom() {
-      this.$refs.form.validate((isok) => {
-        if (isok) {
-          this.$refs["vipform"].validate((valid) => {
-            if (valid) {
-              // 验证通过
-              let coursesStartTime = null,
-                coursesEndTime = null,
-                startTime = null,
-                endTime = null;
-              if (
-                this.vipform.courseTime &&
-                this.vipform.courseTime.length > 0
-              ) {
-                coursesStartTime = this.vipform.courseTime[0];
-                coursesEndTime = this.vipform.courseTime[1];
-              }
-              if (
-                this.vipform.activeTime &&
-                this.vipform.activeTime.length > 0
-              ) {
-                startTime = this.vipform.activeTime[0];
-                endTime = this.vipform.activeTime[1];
-              }
-              let organId = this.vipform.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.vipform.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;
-              }
-              // 发请求创建活动
-              addVipActive(
-                cleanDeep({
-                  coursesStartTime,
-                  coursesEndTime,
-                  startTime,
-                  endTime,
-                  name: this.vipform.name,
-                  description: this.vipform.desc,
-                  applyToStudentType: this.vipform.applyToStudentType,
-                  allowOnlineToOffline: this.vipform.allowOnlineToOffline,
-                  organId,
-                  type,
-                  vipGroupCategoryIdList,
-                  vipGroupSalarySettlement,
-                  salaryReadonlyFlag,
-                  paymentReadonlyFlag,
-                  giveClassPaySalaryFlag: 1,
-                  attribute1: this.attribute1,
-                  attribute2: this.attribute2,
-                  minCourseNum: this.courseNumForm.minCourseNum,
-                  maxCourseNum: this.courseNumForm.maxCourseNum,
-                  studentMaxUsedTimes: this.courseNumForm.studentMaxUsedTimes
-                    ? this.courseNumForm.studentMaxUsedTimes
-                    : -1,
-                  offlineClassJoinGradientRewards:
-                    this.offlineClassJoinGradientRewards * 1,
-                  onlineClassJoinGradientRewards:
-                    this.onlineClassJoinGradientRewards * 1,
-                })
-              ).then((res) => {
-                if (res.code == 200) {
-                  this.$message.success("恭喜你,活动创建成功");
-                  this.onReSet();
-                  this.$store.dispatch("delVisitedViews", this.$route);
-                  this.$router.push({
-                    path: "/vipActiveManager/vipActiveList",
-                  });
-                }
+    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.$nextTick(() => {
-                let isError = document.getElementsByClassName("is-error");
-                isError[0].scrollIntoView({
-                  block: "center",
-                  behavior: "smooth",
-                });
+              this.$message.success("活动修改成功");
+              this.$store.dispatch("delVisitedViews", this.$route);
+              this.$router.push({
+                path: "/vipActiveManager/vipActiveList",
               });
-              // this.$message.error("请填写必要参数");
             }
-          });
-        }
-      });
 
-      // 线上线下课 勾选就传不勾选就不传
-      // addVipActive().then(res => { })
+            // 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",
+              });
+            }
+          }
+        });
+      }
     },
-    onOrganChange() {
+    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();
     },
-    onCheckAllBranch() {
-      // 选择所有分部
-      let vipform = this.vipform;
-      vipform.organ = [];
-      this.selects.branchs.forEach((item) => {
-        vipform.organ.push(item.id);
-      });
-      this.$forceUpdate();
+  },
+  computed: {
+    isDisabled() {
+      if (this.$route.query.type == "look") {
+        return true;
+      } else {
+        return false;
+      }
     },
-    onCancel() {
-      this.$store.dispatch("delVisitedViews", this.$route);
-      this.$router.push({
-        path: "/vipActiveManager/vipActiveList",
-        query: { rules: this.rules, searchForm: this.searchForm },
-      });
-    },
-    onReSet() {
-      this.vipform = {
-        name: "",
-        desc: "",
-        activeTime: [],
-        courseTime: [],
-      };
-      this.activeType = "";
-      this.online = true;
-      this.unonline = true;
-      this.salaryReadonlyFlag = false;
-      this.onlineSalary = "TEACHER_DEFAULT";
-      this.unonlineSalary = "TEACHER_DEFAULT";
-      this.onlineprice = "";
-      this.unonlineprice = "";
-      this.onlineClassJoinGradientRewards = false;
-      this.offlineClassJoinGradientRewards = false;
-      this.attribute1 = "";
-      this.attribute2 = "";
-      this.courseNumForm.maxCourseNum = "";
-      this.courseNumForm.minCourseNum = "";
-      this.$refs.vipform.resetFields();
+    statuss() {
+      return this.status;
     },
   },
 };
 </script>
 <style lang="scss" scoped>
-.m-core {
-  font-size: 14px;
-  width: 100%;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  // text-align: center;
-  .activeRange {
-    display: flex;
-    flex-direction: row;
-    justify-content: flex-start;
-    .left {
-      height: 72px;
-      line-height: 72px;
-    }
-    .right {
-      .chioseWrap {
-        display: flex;
-        flex-direction: row;
-        justify-content: flex-start;
-        height: 72px;
-        line-height: 72px;
-        align-items: center;
-        .el-checkbox {
-          margin-right: 20px;
-        }
-        .el-select {
-          margin-right: 20px;
-        }
-      }
-    }
-  }
-  .activeType {
-    display: flex;
-    flex-direction: row;
-    justify-content: flex-start;
-    .left {
-      margin-right: 20px;
-      p {
-        height: 40px;
-        line-height: 40px;
-      }
-    }
-    .right {
-      > div {
-        display: flex;
-        flex-direction: row;
-        justify-content: flex-start;
-        height: 40px;
-        line-height: 40px;
-        margin-bottom: 20px;
-        .head {
-          width: 120px;
-          height: 40px;
-          line-height: 40px;
-          border: 1px solid #ccc;
-
-          text-align: center;
-          border-radius: 5px;
-          cursor: pointer;
-          margin-right: 10px;
-        }
-        > .head.active {
-          background-color: #13817a;
-          color: #fff;
-          border: none;
-        }
-        .title {
-          line-height: 40px;
-          height: 40px;
-        }
-      }
-    }
-  }
+.steps {
+  margin-top: 30px;
 }
-</style>
-<style lang="scss">
-.m-core {
-  .vipform {
-    .el-select {
-      width: 400px !important;
-      .el-input__inner {
-        width: 400px;
-      }
-    }
-  }
-  .activeType {
-    .right {
-      .el-input {
-        width: 150px !important;
-      }
-    }
-  }
+/deep/.is-success {
+  color: #14928a !important;
+  border-color: #14928a !important;
 }
 </style>
+
+

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

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

+ 0 - 2
src/views/vipClass/vipList.vue

@@ -508,8 +508,6 @@ export default {
       scope._self.$refs[scope.$index].doClose();
     },
     gotoBuildVip() {
-      let rules = JSON.stringify(this.rules);
-      let searchForm = JSON.stringify(this.searchForm);
       this.$router.push({
         path: "/business/buildVip",
       });

+ 1 - 1
src/views/withdrawal-application/index.vue

@@ -24,7 +24,7 @@
             placeholder="学员(乐团)编号"
           ></el-input>
         </el-form-item>
-                <el-form-item prop="organId">
+         <el-form-item prop="organId">
           <el-select
             class="multiple"
             style="width: 180px !important"

+ 2 - 2
vue.config.js

@@ -17,10 +17,10 @@ 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' //测试环境
+// let target = 'https://test.dayaedu.com' //测试环境
 // let target = 'http://192.168.3.134:8000' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {

部分文件因为文件数量过多而无法显示