Browse Source

课程优惠券

wjj 1 month ago
parent
commit
430cb2ef60

+ 9 - 0
src/api/his/courserCoupon.js

@@ -50,4 +50,13 @@ export function exportCourserCoupon(query) {
     method: 'get',
     params: query
   })
+}
+
+
+// 课程优惠券选项列表
+export function options() {
+  return request({
+    url: '/his/courserCoupon/options',
+    method: 'get'
+  })
 }

+ 19 - 1
src/views/components/course/userCourseCatalogDetails.vue

@@ -344,6 +344,16 @@
             <el-radio :label="1">下架</el-radio>
           </el-radio-group>
         </el-form-item>
+        <el-form-item label="课程优惠券" prop="courseCouponId">
+          <el-select v-model="form.courseCouponId" clearable placeholder="请选择课程优惠券">
+            <el-option
+              v-for="item in courseCouponList"
+              :key="item.id"
+              :label="item.title"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item label="商品选择" v-if="form.isProduct === 1">
           <el-button size="small" type="primary" @click="chooseCourseProduct">选取商品</el-button>
           <el-table border width="100%" style="margin-top:5px;" :data="form.courseProducts">
@@ -693,6 +703,7 @@ import {getCateListByPid, getCatePidList, getPublicCateListByPid, getPublicCateP
 import {downloadCommentImportTemplate, importComments, listFeaturedComments, delUserCourseComment} from '@/api/course/userCourseComment'
 import draggable from 'vuedraggable'
 import { getConfigByKey } from '@/api/system/config'
+import { options as courserCouponOptions} from "@/api/his/courserCoupon";
 
 export default {
   name: "userCourseCatalog",
@@ -716,6 +727,7 @@ export default {
   },
   data() {
     return {
+      courseCouponList: [],
       duration: null,
       packageList: [],
       //课题
@@ -896,7 +908,13 @@ export default {
         }
     }).catch(res=>{
 
-    })
+    });
+    courserCouponOptions().then(res=>{ 
+      this.courseCouponList = res.data;
+    }).catch(res=>{
+
+    });
+    
   },
   methods: {
     getPickerOptions() {

+ 149 - 73
src/views/his/courserCoupon/index.vue

@@ -1,6 +1,12 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
       <!-- <el-form-item label="有效期" prop="limitTime">
         <el-date-picker clearable size="small"
           v-model="queryParams.limitTime"
@@ -65,8 +71,16 @@
         />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
       </el-form-item>
     </el-form>
 
@@ -79,7 +93,8 @@
           size="mini"
           @click="handleAdd"
           v-hasPermi="['his:courserCoupon:add']"
-        >新增</el-button>
+          >新增</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -90,7 +105,8 @@
           :disabled="single"
           @click="handleUpdate"
           v-hasPermi="['his:courserCoupon:edit']"
-        >修改</el-button>
+          >修改</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -101,7 +117,8 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['his:courserCoupon:remove']"
-        >删除</el-button>
+          >删除</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -112,27 +129,51 @@
           :loading="exportLoading"
           @click="handleExport"
           v-hasPermi="['his:courserCoupon:export']"
-        >导出</el-button>
+          >导出</el-button
+        >
       </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
     </el-row>
 
-    <el-table border v-loading="loading" :data="courserCouponList" @selection-change="handleSelectionChange">
+    <el-table
+      border
+      v-loading="loading"
+      :data="courserCouponList"
+      @selection-change="handleSelectionChange"
+    >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="标题" align="center" prop="id" />
-      <el-table-column label="有效期" align="center" prop="limitTime" width="180">
+      <el-table-column
+        label="有效期"
+        align="center"
+        prop="limitTime"
+        width="180"
+      >
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.limitTime, '{y}-{m}-{d}') }}</span>
+          <span>{{ parseTime(scope.row.limitTime, "{y}-{m}-{d}") }}</span>
         </template>
       </el-table-column>
       <el-table-column label="数量" align="center" prop="number" />
       <el-table-column label="剩余数量" align="center" prop="remainNumber" />
-      <el-table-column label="状态" align="center" prop="status" />
-      <el-table-column label="领取后有效期" align="center" prop="limitDay" />
-      <el-table-column label="有效期类别 1 过期时间 2 领取后有效期" align="center" prop="limitType" />
-      <el-table-column label="每人可领取数量" align="center" prop="limitCount" />
+      <el-table-column label="状态" align="center" prop="status">
+        <template slot-scope="scope">
+          <dict-tag :options="statusOptions" :value="scope.row.status" />
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="每人可领取数量"
+        align="center"
+        prop="limitCount"
+      />
       <el-table-column label="标题" align="center" prop="title" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -140,20 +181,22 @@
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['his:courserCoupon:edit']"
-          >修改</el-button>
+            >修改</el-button
+          >
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
             v-hasPermi="['his:courserCoupon:remove']"
-          >删除</el-button>
+            >删除</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
 
     <pagination
-      v-show="total>0"
+      v-show="total > 0"
       :total="total"
       :page.sync="queryParams.pageNum"
       :limit.sync="queryParams.pageSize"
@@ -161,41 +204,42 @@
     />
 
     <!-- 添加或修改课程优惠券对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="有效期" prop="limitTime">
-          <el-date-picker clearable size="small"
+    <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-form-item label="优惠券名称" prop="title">
+          <el-input v-model="form.title" placeholder="请输入优惠券名称" />
+        </el-form-item>
+        <el-form-item label="过期时间" prop="limitTime">
+          <el-date-picker
+            clearable
+            size="small"
             v-model="form.limitTime"
             type="date"
             value-format="yyyy-MM-dd"
-            placeholder="选择有效期">
+            placeholder="选择过期时间"
+          >
           </el-date-picker>
         </el-form-item>
         <el-form-item label="数量" prop="number">
-          <el-input v-model="form.number" placeholder="请输入数量" />
+          <el-input-number
+            v-model="form.number"
+            :min="0"
+            label="请输入数量"
+          ></el-input-number>
         </el-form-item>
-        <el-form-item label="剩余数量" prop="remainNumber">
-          <el-input v-model="form.remainNumber" placeholder="请输入剩余数量" />
+        <el-form-item label="用户可领取数量" prop="limitCount">
+          <el-input-number
+            v-model="form.limitCount"
+            :min="1"
+            label="请输入用户可领取数量"
+          ></el-input-number>
         </el-form-item>
-        <el-form-item label="状态">
+        <el-form-item label="状态" prop="status">
           <el-radio-group v-model="form.status">
-            <el-radio label="1">请选择字典生成</el-radio>
+            <el-radio :label="1">正常</el-radio>
+            <el-radio :label="0">停用</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item label="领取后有效期" prop="limitDay">
-          <el-input v-model="form.limitDay" placeholder="请输入领取后有效期" />
-        </el-form-item>
-        <el-form-item label="有效期类别 1 过期时间 2 领取后有效期" prop="limitType">
-          <el-select v-model="form.limitType" placeholder="请选择有效期类别 1 过期时间 2 领取后有效期">
-            <el-option label="请选择字典生成" value="" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="每人可领取数量" prop="limitCount">
-          <el-input v-model="form.limitCount" placeholder="请输入每人可领取数量" />
-        </el-form-item>
-        <el-form-item label="标题" prop="title">
-          <el-input v-model="form.title" placeholder="请输入标题" />
-        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -206,7 +250,14 @@
 </template>
 
 <script>
-import { listCourserCoupon, getCourserCoupon, delCourserCoupon, addCourserCoupon, updateCourserCoupon, exportCourserCoupon } from "@/api/his/courserCoupon";
+import {
+  listCourserCoupon,
+  getCourserCoupon,
+  delCourserCoupon,
+  addCourserCoupon,
+  updateCourserCoupon,
+  exportCourserCoupon,
+} from "@/api/his/courserCoupon";
 
 export default {
   name: "CourserCoupon",
@@ -243,23 +294,37 @@ export default {
         limitDay: null,
         limitType: null,
         limitCount: null,
-        title: null
+        title: null,
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
-      }
+        title: [{ required: true, message: "标题不能为空", trigger: "blur" }],
+        limitTime: [
+          { required: true, message: "有效期不能为空", trigger: "blur" },
+        ],
+        status: [
+          { required: true, message: "状态不能为空", trigger: "change" },
+        ],
+      },
+      statusOptions: [
+        { dictLabel: "正常", dictValue: 1 },
+        { dictLabel: "停用", dictValue: 0 },
+      ],
     };
   },
   created() {
     this.getList();
+    this.getDicts("sys_company_status").then((response) => {
+      this.statusOptions = response.data;
+    });
   },
   methods: {
     /** 查询课程优惠券列表 */
     getList() {
       this.loading = true;
-      listCourserCoupon(this.queryParams).then(response => {
+      listCourserCoupon(this.queryParams).then((response) => {
         this.courserCouponList = response.rows;
         this.total = response.total;
         this.loading = false;
@@ -278,12 +343,12 @@ export default {
         limitTime: null,
         number: null,
         remainNumber: null,
-        status: 0,
+        status: 1,
         updateTime: null,
-        limitDay: null,
+        limitDay: 1,
         limitType: null,
-        limitCount: null,
-        title: null
+        limitCount: 1,
+        title: null,
       };
       this.resetForm("form");
     },
@@ -299,9 +364,9 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
+      this.ids = selection.map((item) => item.id);
+      this.single = selection.length !== 1;
+      this.multiple = !selection.length;
     },
     /** 新增按钮操作 */
     handleAdd() {
@@ -309,11 +374,12 @@ export default {
       this.open = true;
       this.title = "添加课程优惠券";
     },
+
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const id = row.id || this.ids
-      getCourserCoupon(id).then(response => {
+      const id = row.id || this.ids;
+      getCourserCoupon(id).then((response) => {
         this.form = response.data;
         this.open = true;
         this.title = "修改课程优惠券";
@@ -321,16 +387,16 @@ export default {
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs["form"].validate((valid) => {
         if (valid) {
           if (this.form.id != null) {
-            updateCourserCoupon(this.form).then(response => {
+            updateCourserCoupon(this.form).then((response) => {
               this.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            addCourserCoupon(this.form).then(response => {
+            addCourserCoupon(this.form).then((response) => {
               this.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -342,32 +408,42 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$confirm('是否确认删除课程优惠券编号为"' + ids + '"的数据项?', "警告", {
+      this.$confirm(
+        '是否确认删除课程优惠券编号为"' + ids + '"的数据项?',
+        "警告",
+        {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
+          type: "warning",
+        }
+      )
+        .then(function () {
           return delCourserCoupon(ids);
-        }).then(() => {
+        })
+        .then(() => {
           this.getList();
           this.msgSuccess("删除成功");
-        }).catch(() => {});
+        })
+        .catch(() => {});
     },
     /** 导出按钮操作 */
     handleExport() {
       const queryParams = this.queryParams;
-      this.$confirm('是否确认导出所有课程优惠券数据项?', "警告", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(() => {
+      this.$confirm("是否确认导出所有课程优惠券数据项?", "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
           this.exportLoading = true;
           return exportCourserCoupon(queryParams);
-        }).then(response => {
+        })
+        .then((response) => {
           this.download(response.msg);
           this.exportLoading = false;
-        }).catch(() => {});
-    }
-  }
+        })
+        .catch(() => {});
+    },
+  },
 };
 </script>