Преглед на файлове

feat: 更新会员营期代码(权限),从ylrz_scrm移过来

caoliqin преди 2 седмици
родител
ревизия
c29f54ff32
променени са 2 файла, в които са добавени 73 реда и са изтрити 55 реда
  1. 72 55
      src/views/course/userCoursePeriod/index.vue
  2. 1 0
      src/views/course/userCoursePeriod/redPacket.vue

+ 72 - 55
src/views/course/userCoursePeriod/index.vue

@@ -6,8 +6,8 @@
         <!-- 顶部区域 -->
         <div class="left-header">
           <div class="left-header-top">
-            <el-button type="primary" class="search-btn" @click="handleLeftQuery">搜索</el-button>
-            <el-button type="primary" style="width: 50%" icon="el-icon-plus" @click="handleAddTrainingCamp">新建训练营</el-button>
+            <el-button type="primary" class="search-btn" @click="handleLeftQuery" v-hasPermi="['course:trainingCamp:list']">搜索</el-button>
+            <el-button type="primary" style="width: 50%" icon="el-icon-plus" @click="handleAddTrainingCamp" v-hasPermi="['course:trainingCamp:add']">新建训练营</el-button>
           </div>
           <div class="search-input-wrapper">
             <el-input
@@ -63,9 +63,9 @@
               </div>
             </div>
             <div class="camp-actions">
-              <el-button type="text" class="action-btn delete-btn" @click.stop="handleDeleteCamp(item)">删除</el-button>
-              <el-button type="text" class="action-btn copy-btn" @click.stop="handleCopyCamp(item)">复制</el-button>
-              <el-button type="text" class="action-btn copy-btn" @click.stop="handleEditCamp(item)">编辑</el-button>
+              <el-button type="text" class="action-btn delete-btn" @click.stop="handleDeleteCamp(item)" v-hasPermi="['course:trainingCamp:remove']">删除</el-button>
+<!--              <el-button type="text" class="action-btn copy-btn" @click.stop="handleCopyCamp(item)" v-hasPermi="['course:trainingCamp:copy']">复制</el-button>-->
+              <el-button type="text" class="action-btn copy-btn" @click.stop="handleEditCamp(item)" v-hasPermi="['course:trainingCamp:edit']">编辑</el-button>
             </div>
           </div>
           <!-- 底部加载更多提示 -->
@@ -120,7 +120,7 @@
             </el-date-picker>
           </el-form-item>
           <el-form-item>
-            <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+            <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery" v-hasPermi="['course:period:list']">搜索</el-button>
             <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
           </el-form-item>
         </el-form>
@@ -153,14 +153,14 @@
               icon="el-icon-edit"
               size="mini"
               @click="handleBatchSetRedPacket"
-              v-hasPermi="['course:period:export']"
+              v-hasPermi="['course:period:setRedPacket']"
               :disabled="batchSetRedPacketDisabled"
             >批量设置红包</el-button>
           </el-col>
           <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
         </el-row>
 
-        <el-table v-loading="loading" :data="periodList" @selection-change="handleSelectionChange">
+        <el-table v-loading="loading" :data="periodList" @selection-change="handleSelectionChange" border>
           <el-table-column type="selection" width="55" align="center" />
           <el-table-column label="营期名称" align="center" prop="periodName" />
           <el-table-column label="公司名称" align="center" prop="companyName" />
@@ -175,7 +175,7 @@
                 type="text"
                 icon="el-icon-edit"
                 @click="handleUpdate(scope.row)"
-                v-hasPermi="['course:period:edit']"
+                v-hasPermi="['course:period:query']"
               >修改</el-button>
     <!--              <el-button-->
     <!--                size="mini"-->
@@ -201,6 +201,7 @@
                 type="text"
                 icon="el-icon-circle-close"
                 @click="handleClosePeriod(scope.row)"
+                v-hasPermi="['course:period:close']"
               >结束营期</el-button>
               <el-button
                 size="mini"
@@ -245,6 +246,9 @@
         <el-form-item label="直播间风格" prop="liveRoomStyle">
           <image-upload v-model="form.liveRoomStyle" :limit="1" />
         </el-form-item>
+        <el-form-item label="课程LOGO" prop="courseLogo">
+          <image-upload v-model="form.courseLogo" :limit="1" />
+        </el-form-item>
         <el-form-item label="红包发放方式" prop="redPacketGrantMethod">
           <el-radio-group v-model="form.redPacketGrantMethod">
             <el-radio :label="1" >按课程</el-radio>
@@ -257,7 +261,7 @@
             <el-radio :label="2" >单课程</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="销售可查看天数" prop="periodType">
+        <el-form-item label="销售可查看天数" prop="maxViewNum">
           <el-input-number :min="0" v-model="form.maxViewNum" style="width: 200px" />
         </el-form-item>
         <el-form-item label="开营日期" prop="periodStartingTime">
@@ -270,7 +274,9 @@
             range-separator="至"
             start-placeholder="开始日期"
             end-placeholder="结束日期"
-            value-format="yyyy-MM-dd">
+            value-format="yyyy-MM-dd"
+            :picker-options="{disabledDate}"
+          >
           </el-date-picker>
           <el-date-picker
             :style="{display: form.periodType == 2 ? '' : 'none !important'}"
@@ -278,7 +284,9 @@
             v-model="form.date"
             type="date"
             value-format="yyyy-MM-dd"
-            placeholder="选择日期">
+            placeholder="选择日期"
+            :picker-options="{disabledDate}"
+          >
           </el-date-picker>
         </el-form-item>
 
@@ -372,26 +380,6 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="看课时间" prop="timeRange">
-          <el-time-picker
-            is-range
-            v-model="course.form.timeRange"
-            range-separator="至"
-            start-placeholder="开始时间"
-            value-format="HH:mm:ss"
-            end-placeholder="结束时间"
-            placeholder="选择时间范围">
-          </el-time-picker>
-        </el-form-item>
-        <el-form-item label="领取红包时间" prop="lastJoinTime">
-          <el-time-picker
-            v-model="course.form.joinTime"
-            :selectableRange="course.form.timeRange"
-            value-format="HH:mm:ss"
-            placeholder="选择时间范围">
-          </el-time-picker>
-          <p style="color: red;margin: 0;font-size: 12px">超过领取红包时间,只允许看课,不允许领取红包</p>
-        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitCourseForm">确 定</el-button>
@@ -416,6 +404,10 @@
             v-model="updateCourse.form.joinTime"
             :selectableRange="updateCourse.form.timeRange"
             value-format="HH:mm:ss"
+            format="HH:mm:ss"
+            :picker-options="{
+              selectableRange: updateCourse.form.timeRange || '00:00:00 - 23:59:59'
+            }"
             placeholder="选择时间范围">
           </el-time-picker>
           <p style="color: red;margin: 0;font-size: 12px">超过领取红包时间,只允许看课,不允许领取红包</p>
@@ -426,23 +418,23 @@
         <el-button @click="closeUpdateCourse">取 消</el-button>
       </div>
     </el-dialog>
-    <el-dialog title="修改营期时间" :visible.sync="updateDateOpen" width="500px" append-to-body>
-      <el-form ref="courseUpdateForm" :model="form" label-width="100px">
-        <el-form-item label="营期时间" prop="dayDate">
-          <el-date-picker
-            v-model="form.dayDate"
-            :selectableRange="form.dayDate"
-            value-format="yyyy-MM-dd"
-            type="date"
-            placeholder="选择时间">
-          </el-date-picker>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="updateDate">确 定</el-button>
-        <el-button @click="updateDateOpen = false">取 消</el-button>
-      </div>
-    </el-dialog>
+<!--    <el-dialog title="修改营期时间" :visible.sync="updateDateOpen" width="500px" append-to-body>-->
+<!--      <el-form ref="courseUpdateForm" :model="form" label-width="100px">-->
+<!--        <el-form-item label="营期时间" prop="dayDate">-->
+<!--          <el-date-picker-->
+<!--            v-model="form.dayDate"-->
+<!--            :selectableRange="form.dayDate"-->
+<!--            value-format="yyyy-MM-dd"-->
+<!--            type="date"-->
+<!--            placeholder="选择时间">-->
+<!--          </el-date-picker>-->
+<!--        </el-form-item>-->
+<!--      </el-form>-->
+<!--      <div slot="footer" class="dialog-footer">-->
+<!--        <el-button type="primary" @click="updateDate">确 定</el-button>-->
+<!--        <el-button @click="updateDateOpen = false">取 消</el-button>-->
+<!--      </div>-->
+<!--    </el-dialog>-->
 
 <!--    <red-packet-->
 <!--      :visible.sync="redPacketVisible"-->
@@ -456,7 +448,7 @@
     title="营期相关设置"
     :visible.sync="periodSettingsVisible"
     direction="rtl"
-    size="70%"
+    size="74%"
     :destroy-on-close="true"
     append-to-body
     custom-class="period-settings-drawer"
@@ -472,7 +464,7 @@
                 icon="el-icon-plus"
                 size="mini"
                 @click="handleAddCourse"
-                v-hasPermi="['course:period:add']"
+                v-hasPermi="['course:period:addCourse']"
               >添加课程</el-button>
             </el-col>
             <el-col :span="1.5">
@@ -481,14 +473,15 @@
                 size="mini"
                 :disabled="updateCourse.ids.length <= 0"
                 @click="handleUpdateCourse"
-                v-hasPermi="['course:period:add']"
+                v-hasPermi="['course:period:updateCourseTime']"
               >修改看课时间</el-button>
             </el-col>
           </el-row>
-          <el-table v-loading="course.loading" :data="course.list" @selection-change="handleSelectionCourseChange">
+          <el-table v-loading="course.loading" :data="course.list" @selection-change="handleSelectionCourseChange" border>
             <el-table-column type="selection" width="55" align="center" />
             <el-table-column label="课程" align="center" prop="courseName" width="180" />
             <el-table-column label="小节" align="center" prop="videoName" />
+            <el-table-column label="开课状态" align="center" prop="status" width="100" :formatter="courseStatusFormatter" />
             <el-table-column label="营期时间" align="center" prop="dayDate" />
             <el-table-column label="开始时间" align="center" prop="startDateTime" width="100">
               <template slot-scope="scope">
@@ -512,12 +505,14 @@
                   type="text"
                   icon="el-icon-top"
                   @click="handleTop(scope.row)"
+                  v-hasPermi="['course:period:courseMove']"
                 >上移</el-button>
               <el-button
                 size="mini"
                 type="text"
                 icon="el-icon-bottom"
                 @click="handleBottom(scope.row)"
+                v-hasPermi="['course:period:courseMove']"
               >下移</el-button>
 <!--              <el-button-->
 <!--                size="mini"-->
@@ -641,6 +636,24 @@ export default {
       },
       // 表单校验
       rules: {
+        periodName: [
+          { required: true, message: '营期名称不能为空', trigger: 'blur' }
+        ],
+        companyId: [
+          { required: true, message: '公司不能为空', trigger: 'change' }
+        ],
+        redPacketGrantMethod: [
+          { required: true, message: '红包发放方式不能为空', trigger: 'change' }
+        ],
+        periodType: [
+          { required: true, message: '营期类型不能为空', trigger: 'change' }
+        ],
+        maxViewNum: [
+          { required: true, message: '销售可查看天数不能为空', trigger: 'blur' }
+        ],
+        periodStartingTime: [
+          { required: true, message: '开营日期不能为空', trigger: 'change' }
+        ]
       },
       // 公司选项
       companyOptions: [],
@@ -1250,7 +1263,8 @@ export default {
       this.updateCourse.open = true;
       this.updateCourse.form = {
         ids: this.updateCourse.ids,
-        joinTime: [],
+        timeRange: [], // 初始化timeRange
+        joinTime: null // 初始化joinTime
       };
     },
     closeAddCourse() {
@@ -1266,7 +1280,7 @@ export default {
       }
     },
     closeUpdateCourse() {
-      this.course.open = false;
+      this.updateCourse.open = false;
     },
     courseChange(row){
       this.course.form.videoIds = [];
@@ -1448,6 +1462,9 @@ export default {
       this.form = {id: row.id, dayDate: row.dayDate};
       this.updateDateOpen = true;
     },
+    disabledDate(time) {
+      return time.getTime() < new Date(new Date().setHours(0,0,0,0));
+    },
   },
 };
 </script>

+ 1 - 0
src/views/course/userCoursePeriod/redPacket.vue

@@ -11,6 +11,7 @@
               size="mini"
               type="text"
               @click="handleInputAmount(scope.row)"
+              v-hasPermi="['course:period:setCourseRedPacket']"
             >设置红包</el-button>
           </template>
         </el-table-column>