|
|
@@ -33,40 +33,6 @@
|
|
|
</el-form>
|
|
|
|
|
|
<el-row :gutter="10" class="mb8">
|
|
|
-<!-- <el-col :span="1.5">-->
|
|
|
-<!-- <el-button-->
|
|
|
-<!-- type="primary"-->
|
|
|
-<!-- plain-->
|
|
|
-<!-- icon="el-icon-plus"-->
|
|
|
-<!-- size="mini"-->
|
|
|
-<!-- @click="handleAdd"-->
|
|
|
-<!-- v-hasPermi="['course:period:add']"-->
|
|
|
-<!-- >新增-->
|
|
|
-<!-- </el-button>-->
|
|
|
-<!-- </el-col>-->
|
|
|
-<!-- <el-col :span="1.5">-->
|
|
|
-<!-- <el-button-->
|
|
|
-<!-- type="warning"-->
|
|
|
-<!-- plain-->
|
|
|
-<!-- icon="el-icon-download"-->
|
|
|
-<!-- size="mini"-->
|
|
|
-<!-- @click="handleExport"-->
|
|
|
-<!-- v-hasPermi="['course:period:export']"-->
|
|
|
-<!-- >导出-->
|
|
|
-<!-- </el-button>-->
|
|
|
-<!-- </el-col>-->
|
|
|
-<!-- <el-col :span="1.5">-->
|
|
|
-<!-- <el-button-->
|
|
|
-<!-- type="primary"-->
|
|
|
-<!-- plain-->
|
|
|
-<!-- icon="el-icon-edit"-->
|
|
|
-<!-- size="mini"-->
|
|
|
-<!-- @click="handleBatchSetRedPacket"-->
|
|
|
-<!-- v-hasPermi="['course:period:export']"-->
|
|
|
-<!-- :disabled="batchSetRedPacketDisabled"-->
|
|
|
-<!-- >批量设置红包-->
|
|
|
-<!-- </el-button>-->
|
|
|
-<!-- </el-col>-->
|
|
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
</el-row>
|
|
|
|
|
|
@@ -77,6 +43,12 @@
|
|
|
:formatter="periodStatusFormatter"/>
|
|
|
<el-table-column label="开营开始时间" align="center" prop="periodStartingTime" width="180"/>
|
|
|
<el-table-column label="开营结束时间" align="center" prop="periodEndTime" width="180"/>
|
|
|
+<!-- <el-table-column label="看课休息开关" align="center" prop="isOpenRestReminder">-->
|
|
|
+<!-- <template slot-scope="scope">-->
|
|
|
+<!-- <el-tag v-if="scope.row.isOpenRestReminder==1" type="success">开启</el-tag>-->
|
|
|
+<!-- <el-tag v-if="scope.row.isOpenRestReminder==0" type="success">关闭</el-tag>-->
|
|
|
+<!-- </template>-->
|
|
|
+<!-- </el-table-column>-->
|
|
|
<el-table-column label="创建时间" align="center" prop="createTime" width="180"/>
|
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
|
|
<template slot-scope="scope">
|
|
|
@@ -95,6 +67,47 @@
|
|
|
@click="handlePeriodSettings(scope.row)"
|
|
|
>营期相关设置
|
|
|
</el-button>
|
|
|
+ <!-- 根据 isNeedRegisterMember 动态显示按钮 -->
|
|
|
+ <el-button
|
|
|
+ v-if="scope.row.isNeedRegisterMember === '0'"
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ icon="el-icon-open"
|
|
|
+ @click="handlePeriodUser(scope.row, '1')"
|
|
|
+ >开启单独注册会员
|
|
|
+ </el-button>
|
|
|
+<!-- <el-button-->
|
|
|
+<!-- v-else-if="scope.row.isNeedRegisterMember === '1'"-->
|
|
|
+<!-- size="mini"-->
|
|
|
+<!-- type="text"-->
|
|
|
+<!-- icon="el-icon-turn-off"-->
|
|
|
+<!-- @click="handlePeriodUser(scope.row, '0')"-->
|
|
|
+<!-- >关闭单独注册会员-->
|
|
|
+<!-- </el-button>-->
|
|
|
+<!-- <el-button-->
|
|
|
+<!-- v-if="scope.row.isOpenRestReminder ===null||scope.row.isOpenRestReminder === undefined || scope.row.isOpenRestReminder===1 "-->
|
|
|
+<!-- size="mini"-->
|
|
|
+<!-- type="text"-->
|
|
|
+<!-- icon="el-icon-open"-->
|
|
|
+<!-- @click="handlePeriodUserOpenReminder(scope.row, '0')"-->
|
|
|
+<!-- >关闭看课休息-->
|
|
|
+<!-- </el-button>-->
|
|
|
+<!-- <el-button-->
|
|
|
+<!-- v-if="scope.row.isOpenRestReminder ===null||scope.row.isOpenRestReminder === undefined ||scope.row.isOpenRestReminder === 0"-->
|
|
|
+<!-- size="mini"-->
|
|
|
+<!-- type="text"-->
|
|
|
+<!-- icon="el-icon-open"-->
|
|
|
+<!-- @click="handlePeriodUserOpenReminder(scope.row, '1')"-->
|
|
|
+<!-- >打开看课休息-->
|
|
|
+<!-- </el-button>-->
|
|
|
+<!-- <el-button-->
|
|
|
+<!-- v-else-->
|
|
|
+<!-- size="mini"-->
|
|
|
+<!-- type="text"-->
|
|
|
+<!-- icon="el-icon-open"-->
|
|
|
+<!-- @click="handlePeriodUser(scope.row, '1')"-->
|
|
|
+<!-- >开启单独注册会员-->
|
|
|
+<!-- </el-button>-->
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
@@ -107,53 +120,36 @@
|
|
|
@pagination="getList"
|
|
|
/>
|
|
|
|
|
|
- <!-- 添加或修改会员营期对话框-->
|
|
|
+ <!-- 营期详情 -->
|
|
|
<el-drawer :title="title" :visible.sync="open" size="700px" append-to-body>
|
|
|
- <el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
|
|
- <el-form-item label="营期名称" prop="periodName">
|
|
|
- <el-input disabled v-model="form.periodName" placeholder="请输入营期名称"/>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="课程风格" prop="courseStyle">
|
|
|
- <image-upload disabled v-model="form.courseStyle" :limit="1"/>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="直播间风格" prop="liveRoomStyle">
|
|
|
- <image-upload disabled v-model="form.liveRoomStyle" :limit="1"/>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="红包发放方式" prop="redPacketGrantMethod">
|
|
|
- <el-radio-group disabled v-model="form.redPacketGrantMethod">
|
|
|
- <el-radio :label="1">按课程</el-radio>
|
|
|
- <el-radio :label="2">按营期</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="营期类型" prop="periodType">
|
|
|
- <el-radio-group disabled v-model="form.periodType">
|
|
|
- <el-radio :label="1">多课程</el-radio>
|
|
|
- <el-radio :label="2">单课程</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="开营日期" prop="periodStartingTime">
|
|
|
- <el-date-picker
|
|
|
- disabled
|
|
|
- :style="{display: form.periodType == 1 ? '' : 'none !important'}"
|
|
|
- v-model="form.dateRange"
|
|
|
- @change="timeChange(1)"
|
|
|
- type="daterange"
|
|
|
- range-separator="至"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- value-format="yyyy-MM-dd">
|
|
|
- </el-date-picker>
|
|
|
- <el-date-picker
|
|
|
- disabled
|
|
|
- :style="{display: form.periodType == 2 ? '' : 'none !important'}"
|
|
|
- @change="timeChange(2)"
|
|
|
- v-model="form.date"
|
|
|
- type="date"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- placeholder="选择日期">
|
|
|
- </el-date-picker>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
+ <div class="period-detail-drawer">
|
|
|
+ <el-descriptions :column="1" border label-class-name="period-detail-label">
|
|
|
+ <el-descriptions-item label="营期名称">{{ form.periodName || '-' }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="课程风格">
|
|
|
+ <el-image
|
|
|
+ v-if="form.courseStyle"
|
|
|
+ :src="form.courseStyle"
|
|
|
+ :preview-src-list="[form.courseStyle]"
|
|
|
+ fit="contain"
|
|
|
+ class="period-style-image"
|
|
|
+ />
|
|
|
+ <span v-else class="period-detail-empty">暂无</span>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="直播间风格">
|
|
|
+ <el-image
|
|
|
+ v-if="form.liveRoomStyle"
|
|
|
+ :src="form.liveRoomStyle"
|
|
|
+ :preview-src-list="[form.liveRoomStyle]"
|
|
|
+ fit="contain"
|
|
|
+ class="period-style-image"
|
|
|
+ />
|
|
|
+ <span v-else class="period-detail-empty">暂无</span>
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="红包发放方式">{{ formatRedPacketGrantMethod(form.redPacketGrantMethod) }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="营期类型">{{ formatPeriodType(form.periodType) }}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="开营日期">{{ formatPeriodDate(form) }}</el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ </div>
|
|
|
</el-drawer>
|
|
|
|
|
|
<!-- 添加训练营对话框 -->
|
|
|
@@ -248,13 +244,6 @@
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
|
|
|
- <!-- <red-packet-->
|
|
|
- <!-- :visible.sync="redPacketVisible"-->
|
|
|
- <!-- :periodId="currentRedPacketData.periodId"-->
|
|
|
- <!-- :videoId="currentRedPacketData.videoId"-->
|
|
|
- <!-- @success="handleRedPacketSuccess"-->
|
|
|
- <!-- />-->
|
|
|
-
|
|
|
<!-- 营期相关设置抽屉 -->
|
|
|
<el-drawer
|
|
|
title="营期相关设置"
|
|
|
@@ -316,6 +305,7 @@ import {
|
|
|
getPeriod,
|
|
|
pagePeriod,
|
|
|
updatePeriod,
|
|
|
+ updatePeriodIsNeedRegisterMember,
|
|
|
getDays,
|
|
|
addCourse,
|
|
|
updateCourseTime,
|
|
|
@@ -455,7 +445,6 @@ export default {
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
|
-
|
|
|
courseList().then(response => {
|
|
|
this.courseList = response.list;
|
|
|
});
|
|
|
@@ -565,10 +554,63 @@ export default {
|
|
|
this.form.date = this.form.periodStartingTime;
|
|
|
}
|
|
|
this.open = true;
|
|
|
- this.title = "修改会员营期";
|
|
|
+ this.title = "营期详情";
|
|
|
this.isDisabledDateRange = true;
|
|
|
});
|
|
|
},
|
|
|
+ /** 处理单独注册会员开关 */
|
|
|
+ handlePeriodUser(data, open) {
|
|
|
+ const actionText = open === '1' ? '开启' : '关闭';
|
|
|
+ this.$confirm(`确定要${actionText}【${data.periodName}】的单独注册会员功能吗?`, '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ var data1 = {
|
|
|
+ periodId:data.periodId,
|
|
|
+ isNeedRegisterMember:open,
|
|
|
+ }
|
|
|
+ updatePeriodIsNeedRegisterMember(data1).then(response => {
|
|
|
+ if (response.code === 200) {
|
|
|
+ this.msgSuccess(`${actionText}成功`);
|
|
|
+ this.getList();
|
|
|
+ } else {
|
|
|
+ this.msgError(response.msg || `${actionText}失败`);
|
|
|
+ }
|
|
|
+ }).catch(error => {
|
|
|
+ console.error(`${actionText}单独注册会员失败:`, error);
|
|
|
+ this.msgError(`${actionText}失败`);
|
|
|
+ });
|
|
|
+ }).catch(() => {
|
|
|
+ this.$message.info('已取消操作');
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // handlePeriodUserOpenReminder(data, open) {
|
|
|
+ // const actionText = open === '1' ? '开启' : '关闭';
|
|
|
+ // this.$confirm(`确定要${actionText}【${data.periodName}】的看课休息暂停功能吗?`, '提示', {
|
|
|
+ // confirmButtonText: '确定',
|
|
|
+ // cancelButtonText: '取消',
|
|
|
+ // type: 'warning'
|
|
|
+ // }).then(() => {
|
|
|
+ // var data1 = {
|
|
|
+ // periodId:data.periodId,
|
|
|
+ // isOpenRestReminder:open,
|
|
|
+ // }
|
|
|
+ // updatePeriodIsOpenRestReminder(data1).then(response => {
|
|
|
+ // if (response.code === 200) {
|
|
|
+ // this.msgSuccess(`${actionText}成功`);
|
|
|
+ // this.getList();
|
|
|
+ // } else {
|
|
|
+ // this.msgError(response.msg || `${actionText}失败`);
|
|
|
+ // }
|
|
|
+ // }).catch(error => {
|
|
|
+ // console.error(`${actionText}单独注册会员失败:`, error);
|
|
|
+ // this.msgError(`${actionText}失败`);
|
|
|
+ // });
|
|
|
+ // }).catch(() => {
|
|
|
+ // this.$message.info('已取消操作');
|
|
|
+ // });
|
|
|
+ // },
|
|
|
/** 提交按钮 */
|
|
|
submitForm() {
|
|
|
this.$refs["form"].validate(valid => {
|
|
|
@@ -646,19 +688,6 @@ export default {
|
|
|
this.batchRedPacketVisible = true;
|
|
|
},
|
|
|
|
|
|
- /** 处理批量设置红包保存 */
|
|
|
- // handleBatchRedPacketSave(data) {
|
|
|
- // // 这里等待接口提供后补充具体实现
|
|
|
- // // 示例代码:
|
|
|
- // // batchSetRedPacket(data).then(response => {
|
|
|
- // // if (response.code === 200) {
|
|
|
- // // this.$message.success('批量设置成功');
|
|
|
- // // this.getList();
|
|
|
- // // }
|
|
|
- // // });
|
|
|
- // this.batchRedPacketVisible = false;
|
|
|
- // },
|
|
|
-
|
|
|
/** 获取公司下拉列表*/
|
|
|
getCompanyList() {
|
|
|
this.loading = true;
|
|
|
@@ -942,7 +971,6 @@ export default {
|
|
|
this.form.periodStartingTime = this.form.dateRange[0];
|
|
|
this.form.periodEndTime = this.form.dateRange[1];
|
|
|
|
|
|
-
|
|
|
// 转换为天数
|
|
|
let days = this.getDiff(this.form.periodStartingTime, this.form.periodEndTime);
|
|
|
for (let i = 0; i < days; i++) {
|
|
|
@@ -1198,6 +1226,23 @@ export default {
|
|
|
};
|
|
|
return statusMap[row.periodStatus] || '未知状态';
|
|
|
},
|
|
|
+ formatRedPacketGrantMethod(value) {
|
|
|
+ const map = { 1: '按课程', 2: '按营期' };
|
|
|
+ return map[value] || '-';
|
|
|
+ },
|
|
|
+ formatPeriodType(value) {
|
|
|
+ const map = { 1: '多课程', 2: '单课程' };
|
|
|
+ return map[value] || '-';
|
|
|
+ },
|
|
|
+ formatPeriodDate(form) {
|
|
|
+ if (form.periodType == 1 && form.periodStartingTime && form.periodEndTime) {
|
|
|
+ return `${form.periodStartingTime} 至 ${form.periodEndTime}`;
|
|
|
+ }
|
|
|
+ if (form.periodStartingTime) {
|
|
|
+ return form.periodStartingTime;
|
|
|
+ }
|
|
|
+ return '-';
|
|
|
+ },
|
|
|
/** 开课状态格式化 */
|
|
|
courseStatusFormatter(row) {
|
|
|
const statusMap = {
|
|
|
@@ -1472,4 +1517,20 @@ export default {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
}
|
|
|
+
|
|
|
+.period-detail-drawer {
|
|
|
+ padding: 0 20px 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.period-style-image {
|
|
|
+ width: 148px;
|
|
|
+ height: 148px;
|
|
|
+ border: 1px solid #dcdfe6;
|
|
|
+ border-radius: 4px;
|
|
|
+ background-color: #f5f7fa;
|
|
|
+}
|
|
|
+
|
|
|
+.period-detail-empty {
|
|
|
+ color: #909399;
|
|
|
+}
|
|
|
</style>
|