|  | @@ -0,0 +1,158 @@
 | 
	
		
			
				|  |  | +<template>
 | 
	
		
			
				|  |  | +  <div class="app-container">
 | 
	
		
			
				|  |  | +    <!-- 搜索工作栏 -->
 | 
	
		
			
				|  |  | +    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
 | 
	
		
			
				|  |  | +      <el-form-item label="会员昵称" prop="nickname">
 | 
	
		
			
				|  |  | +        <el-input v-model="queryParams.nickname" placeholder="请输入会员昵称" clearable @keyup.enter.native="handleQuery"/>
 | 
	
		
			
				|  |  | +      </el-form-item>
 | 
	
		
			
				|  |  | +      <el-form-item label="创建时间" prop="createTime">
 | 
	
		
			
				|  |  | +        <el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
 | 
	
		
			
				|  |  | +                        range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
 | 
	
		
			
				|  |  | +      </el-form-item>
 | 
	
		
			
				|  |  | +      <el-form-item>
 | 
	
		
			
				|  |  | +        <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
 | 
	
		
			
				|  |  | +        <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
 | 
	
		
			
				|  |  | +      </el-form-item>
 | 
	
		
			
				|  |  | +    </el-form>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <!-- 操作工具栏 -->
 | 
	
		
			
				|  |  | +    <el-row :gutter="10" class="mb8">
 | 
	
		
			
				|  |  | +      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
 | 
	
		
			
				|  |  | +    </el-row>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <!-- Tab 选项:真正的内容在 Lab -->
 | 
	
		
			
				|  |  | +    <el-tabs v-model="activeTab" type="card" @tab-click="tabClick" style="margin-top: -40px;">
 | 
	
		
			
				|  |  | +      <el-tab-pane v-for="tab in statusTabs" :key="tab.value" :label="tab.label" :name="tab.value" />
 | 
	
		
			
				|  |  | +    </el-tabs>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <!-- 列表 -->
 | 
	
		
			
				|  |  | +    <el-table v-loading="loading" :data="list">
 | 
	
		
			
				|  |  | +      <el-table-column label="会员信息" align="center" prop="nickname" /> <!-- TODO 芋艿:以后支持头像,支持跳转 -->
 | 
	
		
			
				|  |  | +      <el-table-column label="优惠劵" align="center" prop="name" />
 | 
	
		
			
				|  |  | +      <el-table-column label="优惠码状态" align="center" prop="status" />
 | 
	
		
			
				|  |  | +      <el-table-column label="生效开始时间" align="center" prop="validStartTime" width="180">
 | 
	
		
			
				|  |  | +        <template slot-scope="scope">
 | 
	
		
			
				|  |  | +          <span>{{ parseTime(scope.row.validStartTime) }}</span>
 | 
	
		
			
				|  |  | +        </template>
 | 
	
		
			
				|  |  | +      </el-table-column>
 | 
	
		
			
				|  |  | +      <el-table-column label="生效结束时间" align="center" prop="validEndTime" width="180">
 | 
	
		
			
				|  |  | +        <template slot-scope="scope">
 | 
	
		
			
				|  |  | +          <span>{{ parseTime(scope.row.validEndTime) }}</span>
 | 
	
		
			
				|  |  | +        </template>
 | 
	
		
			
				|  |  | +      </el-table-column>
 | 
	
		
			
				|  |  | +      <el-table-column label="使用时间" align="center" prop="useTime" width="180">
 | 
	
		
			
				|  |  | +        <template slot-scope="scope">
 | 
	
		
			
				|  |  | +          <span>{{ parseTime(scope.row.useTime) }}</span>
 | 
	
		
			
				|  |  | +        </template>
 | 
	
		
			
				|  |  | +      </el-table-column>
 | 
	
		
			
				|  |  | +      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
 | 
	
		
			
				|  |  | +        <template slot-scope="scope">
 | 
	
		
			
				|  |  | +          <span>{{ parseTime(scope.row.createTime) }}</span>
 | 
	
		
			
				|  |  | +        </template>
 | 
	
		
			
				|  |  | +      </el-table-column>
 | 
	
		
			
				|  |  | +      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
 | 
	
		
			
				|  |  | +        <template slot-scope="scope">
 | 
	
		
			
				|  |  | +          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
 | 
	
		
			
				|  |  | +                     v-hasPermi="['promotion:coupon:delete']">删除</el-button>
 | 
	
		
			
				|  |  | +        </template>
 | 
	
		
			
				|  |  | +      </el-table-column>
 | 
	
		
			
				|  |  | +    </el-table>
 | 
	
		
			
				|  |  | +    <!-- 分页组件 -->
 | 
	
		
			
				|  |  | +    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
 | 
	
		
			
				|  |  | +                @pagination="getList"/>
 | 
	
		
			
				|  |  | +  </div>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<script>
 | 
	
		
			
				|  |  | +import { deleteCoupon, getCouponPage } from "@/api/mall/promotion/coupon";
 | 
	
		
			
				|  |  | +import { DICT_TYPE, getDictDatas} from "@/utils/dict";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +  name: "Coupon",
 | 
	
		
			
				|  |  | +  components: {
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  data() {
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      // 遮罩层
 | 
	
		
			
				|  |  | +      loading: true,
 | 
	
		
			
				|  |  | +      // 导出遮罩层
 | 
	
		
			
				|  |  | +      exportLoading: false,
 | 
	
		
			
				|  |  | +      // 显示搜索条件
 | 
	
		
			
				|  |  | +      showSearch: true,
 | 
	
		
			
				|  |  | +      // 总条数
 | 
	
		
			
				|  |  | +      total: 0,
 | 
	
		
			
				|  |  | +      // 优惠劵列表
 | 
	
		
			
				|  |  | +      list: [],
 | 
	
		
			
				|  |  | +      // 弹出层标题
 | 
	
		
			
				|  |  | +      title: "",
 | 
	
		
			
				|  |  | +      // 是否显示弹出层
 | 
	
		
			
				|  |  | +      open: false,
 | 
	
		
			
				|  |  | +      // 查询参数
 | 
	
		
			
				|  |  | +      queryParams: {
 | 
	
		
			
				|  |  | +        pageNo: 1,
 | 
	
		
			
				|  |  | +        pageSize: 10,
 | 
	
		
			
				|  |  | +        createTime: [],
 | 
	
		
			
				|  |  | +        status: undefined,
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      // Tab 想选
 | 
	
		
			
				|  |  | +      activeTab: 'all',
 | 
	
		
			
				|  |  | +      statusTabs: [{
 | 
	
		
			
				|  |  | +        label: '全部',
 | 
	
		
			
				|  |  | +        value: 'all'
 | 
	
		
			
				|  |  | +      }],
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  created() {
 | 
	
		
			
				|  |  | +    this.getList();
 | 
	
		
			
				|  |  | +    // 设置 statuses 过滤
 | 
	
		
			
				|  |  | +    for (const dict of getDictDatas(DICT_TYPE.PROMOTION_COUPON_STATUS)) {
 | 
	
		
			
				|  |  | +      this.statusTabs.push({
 | 
	
		
			
				|  |  | +        label: dict.label,
 | 
	
		
			
				|  |  | +        value: dict.value
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods: {
 | 
	
		
			
				|  |  | +    /** 查询列表 */
 | 
	
		
			
				|  |  | +    getList() {
 | 
	
		
			
				|  |  | +      this.loading = true;
 | 
	
		
			
				|  |  | +      // 执行查询
 | 
	
		
			
				|  |  | +      getCouponPage(this.queryParams).then(response => {
 | 
	
		
			
				|  |  | +        this.list = response.data.list;
 | 
	
		
			
				|  |  | +        this.total = response.data.total;
 | 
	
		
			
				|  |  | +        this.loading = false;
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 取消按钮 */
 | 
	
		
			
				|  |  | +    cancel() {
 | 
	
		
			
				|  |  | +      this.open = false;
 | 
	
		
			
				|  |  | +      this.reset();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 搜索按钮操作 */
 | 
	
		
			
				|  |  | +    handleQuery() {
 | 
	
		
			
				|  |  | +      this.queryParams.pageNo = 1;
 | 
	
		
			
				|  |  | +      this.getList();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 重置按钮操作 */
 | 
	
		
			
				|  |  | +    resetQuery() {
 | 
	
		
			
				|  |  | +      this.resetForm("queryForm");
 | 
	
		
			
				|  |  | +      this.handleQuery();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    /** 删除按钮操作 */
 | 
	
		
			
				|  |  | +    handleDelete(row) {
 | 
	
		
			
				|  |  | +      const id = row.id;
 | 
	
		
			
				|  |  | +      this.$modal.confirm('是否确认删除优惠劵编号为"' + id + '"的数据项?').then(function() {
 | 
	
		
			
				|  |  | +          return deleteCoupon(id);
 | 
	
		
			
				|  |  | +        }).then(() => {
 | 
	
		
			
				|  |  | +          this.getList();
 | 
	
		
			
				|  |  | +          this.$modal.msgSuccess("删除成功");
 | 
	
		
			
				|  |  | +        }).catch(() => {});
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    tabClick(tab) {
 | 
	
		
			
				|  |  | +      this.queryParams.status = tab.name === 'all' ? undefined : tab.name;
 | 
	
		
			
				|  |  | +      this.list = [];
 | 
	
		
			
				|  |  | +      this.getList();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +</script>
 |