|
@@ -4,26 +4,21 @@
|
|
|
<div class="squrt"></div> VIP参数设置
|
|
|
</h2>
|
|
|
<div class="m-core">
|
|
|
- <div class="listWrap">
|
|
|
- <div class="left">
|
|
|
- <div class="newBand" v-permission="'vipGroupCategory/add'"
|
|
|
- @click="addGroupCategory">新建</div>
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="12" :xs="24">
|
|
|
+ <el-button v-permission="'vipGroupCategory/add'" @click="addGroupCategory" type="primary" style="margin-bottom: 20px">新建</el-button>
|
|
|
<el-table :data='leftList'
|
|
|
:header-cell-style="{background:'#EDEEF0',color:'#444'}">
|
|
|
<el-table-column label="课程形式"
|
|
|
- prop="name"
|
|
|
- width="180">
|
|
|
+ prop="name">
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="班级人数"
|
|
|
- prop="studentNum"
|
|
|
- width="180">
|
|
|
+ <el-table-column label="班级人数(人)"
|
|
|
+ prop="studentNum">
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="课程课时"
|
|
|
- prop="singleClassMinutes"
|
|
|
- width="180">
|
|
|
+ <el-table-column label="课程课时(分钟)"
|
|
|
+ prop="singleClassMinutes">
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="操作"
|
|
|
- width="180">
|
|
|
+ <el-table-column label="操作">
|
|
|
<template slot-scope="scope">
|
|
|
<div>
|
|
|
<el-button type="text" v-permission="'vipGroupCategory/update'"
|
|
@@ -44,27 +39,22 @@
|
|
|
<el-button type="text"
|
|
|
slot="reference">删除</el-button>
|
|
|
</el-popover>
|
|
|
-
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
- </div>
|
|
|
- <div class="right">
|
|
|
- <div class="newBand" v-permission="'vipGroupDefaultClassesCycle/add'"
|
|
|
- @click="addVipTimer">新建</div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12" :xs="24">
|
|
|
+ <el-button v-permission="'vipGroupDefaultClassesCycle/add'" @click="addVipTimer" type="primary" style="margin-bottom: 20px">新建</el-button>
|
|
|
<el-table :data='rightList'
|
|
|
:header-cell-style="{background:'#EDEEF0',color:'#444'}">
|
|
|
- <el-table-column label="达到课时总数/次"
|
|
|
- prop="maxClassTimes"
|
|
|
- width="180">
|
|
|
+ <el-table-column label="达到课时总数(次)"
|
|
|
+ prop="maxClassTimes">
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="可排课时间段"
|
|
|
- prop="month"
|
|
|
- width="180">
|
|
|
+ <el-table-column label="可排课时间段(月)"
|
|
|
+ prop="month">
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="操作"
|
|
|
- width="180">
|
|
|
+ <el-table-column label="操作">
|
|
|
<template slot-scope="scope">
|
|
|
<div>
|
|
|
<el-button type="text" v-permission="'vipGroupDefaultClassesCycle/update'"
|
|
@@ -90,38 +80,40 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
</div>
|
|
|
|
|
|
<!-- 课程类型新增弹窗 -->
|
|
|
- <el-dialog title="vip课程形式"
|
|
|
+ <el-dialog :title="(vipStatusFrom.isAdd ? '添加' : '修改') + `VIP课程形式`"
|
|
|
class="courseMask"
|
|
|
width="500px"
|
|
|
+ @close="onVipStatusClose('vipStatus')"
|
|
|
:visible.sync="vipStatus">
|
|
|
<el-form :model="vipStatusFrom"
|
|
|
ref='vipStatus'>
|
|
|
<el-form-item label="课程形式"
|
|
|
prop='name'
|
|
|
+ :rules="[{ required: true, message: '请输入课程形式', trigger: 'blur' }]"
|
|
|
:label-width="formLabelWidth">
|
|
|
<el-input v-model.trim="vipStatusFrom.name"
|
|
|
autocomplete="off"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="班级人数"
|
|
|
prop="num"
|
|
|
+ :rules="[{ required: true, message: '请输入班级人数', trigger: 'blur' }]"
|
|
|
:label-width="formLabelWidth">
|
|
|
- <el-input v-model.trim="vipStatusFrom.num"
|
|
|
+ <el-input v-model.trim="vipStatusFrom.num" type="number"
|
|
|
autocomplete="off"></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="课程课时"
|
|
|
- prop="timer"
|
|
|
+ prop="dynamicTags"
|
|
|
+ :rules="[{ required: true, message: '请输入课程课时', trigger: 'blur, change' }]"
|
|
|
:label-width="formLabelWidth">
|
|
|
- <!-- <el-input v-model.trim="vipStatusFrom.timer"
|
|
|
- autocomplete="off"></el-input> -->
|
|
|
<el-tag :key="index"
|
|
|
effect="dark"
|
|
|
type="info"
|
|
|
- v-for="(tag, index) in dynamicTags"
|
|
|
+ v-for="(tag, index) in vipStatusFrom.dynamicTags"
|
|
|
closable
|
|
|
:disable-transitions="false"
|
|
|
@close="handleClose(tag)">
|
|
@@ -147,36 +139,37 @@
|
|
|
</el-form>
|
|
|
<div slot="footer"
|
|
|
class="dialog-footer">
|
|
|
- <el-button @click="closeVipStatus">取 消</el-button>
|
|
|
+ <el-button @click="vipStatus = false">取 消</el-button>
|
|
|
<el-button type="primary"
|
|
|
- @click="addVipStatus">确 定</el-button>
|
|
|
+ @click="addVipStatus('vipStatus')">确 定</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 周期循环新增弹窗 -->
|
|
|
- <el-dialog title="vip时间段"
|
|
|
+ <el-dialog :title="(vipTimerFrom.isAdd ? '添加' : '修改') + 'VIP时间段'"
|
|
|
width="500px"
|
|
|
+ @close="onVipStatusClose('timerStatus')"
|
|
|
:visible.sync="timerStatus">
|
|
|
<el-form :model="vipTimerFrom"
|
|
|
ref='timerStatus'>
|
|
|
- <el-form-item label="达到课时总数/次"
|
|
|
+ <el-form-item label="达到课时总数"
|
|
|
prop='count'
|
|
|
+ :rules="[{required: true, message: '请输入达到课时总数', trigger: 'blur'}]"
|
|
|
:label-width="formLabelWidth">
|
|
|
- <el-input v-model.trim="vipTimerFrom.count"
|
|
|
- autocomplete="off"></el-input>
|
|
|
+ <el-input v-model.trim="vipTimerFrom.count" type="number" autocomplete="off"></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="可排课时间段/月"
|
|
|
+ <el-form-item label="可排课时间段"
|
|
|
prop="timer"
|
|
|
+ :rules="[{required: true, message: '请输入可排课时间段', trigger: 'blur'}]"
|
|
|
:label-width="formLabelWidth">
|
|
|
- <el-input v-model.trim="vipTimerFrom.timer"
|
|
|
- autocomplete="off"></el-input>
|
|
|
+ <el-input v-model.trim="vipTimerFrom.timer" type="number" autocomplete="off"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<div slot="footer"
|
|
|
class="dialog-footer">
|
|
|
<el-button @click="timerStatus=false">取 消</el-button>
|
|
|
<el-button type="primary"
|
|
|
- @click="addTimerStatus">确 定</el-button>
|
|
|
+ @click="addTimerStatus('timerStatus')">确 定</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
@@ -194,11 +187,10 @@ export default {
|
|
|
vipStatusFrom: {
|
|
|
name: '',
|
|
|
num: '',
|
|
|
- timer: [],
|
|
|
+ dynamicTags: [],
|
|
|
isAdd: true,
|
|
|
id: ''
|
|
|
}, // 弹窗内容
|
|
|
- statusRemovevisible: false,
|
|
|
timerStatus: false, //课程时间段弹窗状态
|
|
|
vipTimerFrom: {
|
|
|
count: '',
|
|
@@ -217,102 +209,100 @@ export default {
|
|
|
},
|
|
|
methods: {
|
|
|
handleClose (tag) {
|
|
|
- this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
|
|
|
+ this.vipStatusFrom.dynamicTags.splice(this.vipStatusFrom.dynamicTags.indexOf(tag), 1);
|
|
|
},
|
|
|
-
|
|
|
showInput () {
|
|
|
this.inputVisible = true;
|
|
|
this.$nextTick(_ => {
|
|
|
this.$refs.saveTagInput.$refs.input.focus();
|
|
|
});
|
|
|
},
|
|
|
-
|
|
|
handleInputConfirm () {
|
|
|
let inputValue = this.inputValue;
|
|
|
if (inputValue) {
|
|
|
- this.dynamicTags.push(inputValue);
|
|
|
+ this.vipStatusFrom.dynamicTags.push(inputValue);
|
|
|
}
|
|
|
this.inputVisible = false;
|
|
|
this.inputValue = '';
|
|
|
},
|
|
|
- getVipGroupCategoryList () {
|
|
|
+ async getVipGroupCategoryList () {
|
|
|
// 获取默认左边参数
|
|
|
- vipGroupCategory().then(res => {
|
|
|
+ await vipGroupCategory().then(res => {
|
|
|
if (res.code == 200) {
|
|
|
this.leftList = res.data;
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
- getDefaultClassesCycle () {
|
|
|
+ async getDefaultClassesCycle () {
|
|
|
// 获取默认右边参数
|
|
|
- getDefaultClassesCycle().then(res => {
|
|
|
+ await getDefaultClassesCycle().then(res => {
|
|
|
this.rightList = res.data;
|
|
|
})
|
|
|
},
|
|
|
+ onVipStatusClose(formName) {
|
|
|
+ this.inputVisible = false
|
|
|
+ this.inputValue = ''
|
|
|
+ this.$refs[formName].resetFields()
|
|
|
+ },
|
|
|
// 新增分类
|
|
|
addGroupCategory () {
|
|
|
this.vipStatus = true;
|
|
|
this.vipStatusFrom.isAdd = true;
|
|
|
- this.vipStatusFrom.id = '';
|
|
|
- this.vipStatusFrom.name = ''
|
|
|
- this.vipStatusFrom.num = ''
|
|
|
- this.dynamicTags = [];
|
|
|
- },
|
|
|
- closeVipStatus () {
|
|
|
- this.vipStatus = false;
|
|
|
},
|
|
|
- addVipStatus () {
|
|
|
+ addVipStatus (formName) {
|
|
|
// 点击添加后 发送请求单独添加=> 刷新列表
|
|
|
// 判断是添加还是修改
|
|
|
- if (this.vipStatusFrom.isAdd) {
|
|
|
- // 添加
|
|
|
- if (this.vipStatusFrom.name && this.vipStatusFrom.num && this.dynamicTags.length > 0) {
|
|
|
- addVipGroupCategory({
|
|
|
- name: this.vipStatusFrom.name,
|
|
|
- singleClassMinutes: this.dynamicTags.join(','),
|
|
|
- studentNum: this.vipStatusFrom.num
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 200) {
|
|
|
+ this.$refs[formName].validate(async (valid) => {
|
|
|
+ console.log(valid)
|
|
|
+ if(valid) {
|
|
|
+ const vipStatusFrom = this.vipStatusFrom
|
|
|
+ if(vipStatusFrom.isAdd) {
|
|
|
+ await addVipGroupCategory({
|
|
|
+ name: vipStatusFrom.name,
|
|
|
+ singleClassMinutes: vipStatusFrom.dynamicTags.join(','),
|
|
|
+ studentNum: vipStatusFrom.num
|
|
|
+ }).then(res => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.$message.success('添加成功')
|
|
|
+ this.getVipGroupCategoryList();
|
|
|
+ this.vipStatus = false;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ await resetVipGroupCategory({
|
|
|
+ name: vipStatusFrom.name,
|
|
|
+ singleClassMinutes: vipStatusFrom.dynamicTags.join(','),
|
|
|
+ studentNum: vipStatusFrom.num,
|
|
|
+ id: vipStatusFrom.id
|
|
|
+ }).then(res => {
|
|
|
+ this.$message.success('修改成功')
|
|
|
this.getVipGroupCategoryList();
|
|
|
this.vipStatus = false;
|
|
|
- }
|
|
|
- })
|
|
|
- } else {
|
|
|
- this.$message.error('请填写参数')
|
|
|
- return
|
|
|
+ })
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- } else {
|
|
|
- // 修改
|
|
|
- resetVipGroupCategory({
|
|
|
- name: this.vipStatusFrom.name,
|
|
|
- singleClassMinutes: this.dynamicTags.join(','),
|
|
|
- studentNum: this.vipStatusFrom.num,
|
|
|
- id: this.vipStatusFrom.id
|
|
|
- }).then(res => {
|
|
|
- this.getVipGroupCategoryList();
|
|
|
- this.vipStatus = false;
|
|
|
- })
|
|
|
- }
|
|
|
+ })
|
|
|
},
|
|
|
resetGroupCategory (row) {
|
|
|
// 修改课程形式
|
|
|
+ const vipStatusFrom = this.vipStatusFrom
|
|
|
this.vipStatus = true;
|
|
|
- this.vipStatusFrom.name = row.name;
|
|
|
-
|
|
|
- this.vipStatusFrom.timer = row.singleClassMinutes.split(',');
|
|
|
- this.dynamicTags = row.singleClassMinutes.split(',');
|
|
|
- this.vipStatusFrom.num = row.studentNum;
|
|
|
- this.vipStatusFrom.id = row.id;
|
|
|
- this.vipStatusFrom.isAdd = false;
|
|
|
+ this.$nextTick(() => {
|
|
|
+ vipStatusFrom.name = row.name;
|
|
|
+ vipStatusFrom.timer = row.singleClassMinutes.split(',');
|
|
|
+ vipStatusFrom.dynamicTags = row.singleClassMinutes.split(',');
|
|
|
+ vipStatusFrom.num = row.studentNum;
|
|
|
+ vipStatusFrom.id = row.id;
|
|
|
+ vipStatusFrom.isAdd = false;
|
|
|
+ })
|
|
|
},
|
|
|
- removeGroupCategory (scope) {
|
|
|
- // 删除
|
|
|
- removeVipGroupCategory({
|
|
|
+ async removeGroupCategory (scope) {
|
|
|
+ // 删除
|
|
|
+ await removeVipGroupCategory({
|
|
|
id: scope.row.id
|
|
|
}).then(res => {
|
|
|
if (res.code == 200) {
|
|
|
- // scope._self.$refs[scope.$index].doClose();
|
|
|
+ this.$message.success('删除成功')
|
|
|
this.getVipGroupCategoryList();
|
|
|
}
|
|
|
})
|
|
@@ -321,41 +311,50 @@ export default {
|
|
|
addVipTimer () {
|
|
|
this.timerStatus = true;
|
|
|
this.vipTimerFrom.isAdd = true;
|
|
|
- this.vipTimerFrom.id = '';
|
|
|
},
|
|
|
- addTimerStatus () {
|
|
|
+ addTimerStatus (formName) {
|
|
|
// 点击添加后 发送请求单独添加=> 刷新列表
|
|
|
// 判断是添加还是修改
|
|
|
- if (this.vipTimerFrom.isAdd) {
|
|
|
- // 添加
|
|
|
- addDefaultClassesCycle({
|
|
|
- organId: null,
|
|
|
- maxClassTimes: this.vipTimerFrom.count,
|
|
|
- month: this.vipTimerFrom.timer,
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 200) {
|
|
|
- this.getDefaultClassesCycle();
|
|
|
- this.timerStatus = false;
|
|
|
+ this.$refs[formName].validate(async (valid) => {
|
|
|
+ if(valid) {
|
|
|
+ const vipTimerFrom = this.vipTimerFrom
|
|
|
+ if (vipTimerFrom.isAdd) {
|
|
|
+ // 添加
|
|
|
+ await addDefaultClassesCycle({
|
|
|
+ organId: null,
|
|
|
+ maxClassTimes: vipTimerFrom.count,
|
|
|
+ month: vipTimerFrom.timer,
|
|
|
+ }).then(res => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.$message.success('添加成功')
|
|
|
+ this.getDefaultClassesCycle();
|
|
|
+ this.timerStatus = false;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ // 修改
|
|
|
+ await resetDefaultClassesCycle({
|
|
|
+ maxClassTimes: vipTimerFrom.count,
|
|
|
+ month: vipTimerFrom.timer,
|
|
|
+ id: vipTimerFrom.id
|
|
|
+ }).then(res => {
|
|
|
+ this.$message.success('修改成功')
|
|
|
+ this.getDefaultClassesCycle();
|
|
|
+ this.timerStatus = false;
|
|
|
+ })
|
|
|
}
|
|
|
- })
|
|
|
- } else {
|
|
|
- // 修改
|
|
|
- resetDefaultClassesCycle({
|
|
|
- maxClassTimes: this.vipTimerFrom.count,
|
|
|
- month: this.vipTimerFrom.timer,
|
|
|
- id: this.vipTimerFrom.id
|
|
|
- }).then(res => {
|
|
|
- this.getDefaultClassesCycle();
|
|
|
- this.timerStatus = false;
|
|
|
- })
|
|
|
- }
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
resetTimerList (row) {
|
|
|
this.timerStatus = true;
|
|
|
- this.vipTimerFrom.count = row.maxClassTimes;
|
|
|
- this.vipTimerFrom.timer = row.month;
|
|
|
- this.vipTimerFrom.id = row.id;
|
|
|
- this.vipTimerFrom.isAdd = false;
|
|
|
+ const vipTimerFrom = this.vipTimerFrom
|
|
|
+ this.$nextTick(() => {
|
|
|
+ vipTimerFrom.count = row.maxClassTimes;
|
|
|
+ vipTimerFrom.timer = row.month;
|
|
|
+ vipTimerFrom.id = row.id;
|
|
|
+ vipTimerFrom.isAdd = false;
|
|
|
+ })
|
|
|
},
|
|
|
// 删除时间管理
|
|
|
removeDefaultClassesCycle (scope) {
|
|
@@ -368,20 +367,7 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
- },
|
|
|
- watch: {
|
|
|
- vipStatus (val) {
|
|
|
- if (!val) {
|
|
|
- this.$refs['vipStatus'].resetFields();
|
|
|
- }
|
|
|
- },
|
|
|
- timerStatus (val) {
|
|
|
- if (!val) {
|
|
|
- this.$refs['timerStatus'].resetFields();
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|