|
@@ -1,230 +1,267 @@
|
|
|
<template>
|
|
|
- <div>
|
|
|
- <div class="i-layout-page-header">
|
|
|
- <PageHeader class="product_tabs" title="会员卡" hidden-breadcrumb></PageHeader>
|
|
|
- </div>
|
|
|
- <Card :bordered="false" dis-hover class="ivu-mt">
|
|
|
- <Form ref="tableFrom" :model="tableFrom" :label-width="labelWidth" :label-position="labelPosition" @submit.native.prevent>
|
|
|
- <Row type="flex">
|
|
|
- <Col v-bind="grid">
|
|
|
- <Button v-auth="['admin-marketing-store_coupon-add']" type="primary" icon="md-add" @click="add">添加打卡规则</Button>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
+ <div>
|
|
|
+ <div class="i-layout-page-header">
|
|
|
+ <PageHeader class="product_tabs" title="会员卡" hidden-breadcrumb></PageHeader>
|
|
|
+ </div>
|
|
|
+ <Card :bordered="false" dis-hover class="ivu-mt">
|
|
|
+ <Form ref="tableFrom" :model="tableFrom" :label-width="labelWidth" :label-position="labelPosition"
|
|
|
+ @submit.native.prevent>
|
|
|
+ <Row type="flex">
|
|
|
+ <Col v-bind="grid">
|
|
|
+ <Button v-auth="['admin-marketing-store_coupon-add']" type="primary" icon="md-add"
|
|
|
+ @click="add">添加打卡规则</Button>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
</Form>
|
|
|
- <Table :columns="columns1" :data="tableList" ref="table" class="mt25"
|
|
|
- :loading="loading" highlight-row
|
|
|
- no-userFrom-text="暂无数据"
|
|
|
- no-filtered-userFrom-text="暂无筛选结果">
|
|
|
- <template slot-scope="{ row }" slot="coupon_price">
|
|
|
- <span v-if="row.coupon_type==1">{{row.coupon_price}}元</span>
|
|
|
- <span v-if="row.coupon_type==2">{{parseFloat(row.coupon_price)/10}}折({{row.coupon_price.toString().split(".")[0]}}%)</span>
|
|
|
- </template>
|
|
|
- <template slot-scope="{ row, index }" slot="status">
|
|
|
- <Icon type="md-checkmark" v-if="row.status === 1" color="#0092DC" size="14"/>
|
|
|
- <Icon type="md-close" v-else color="#ed5565" size="14"/>
|
|
|
- </template>
|
|
|
- <template slot-scope="{ row, index }" slot="add_time">
|
|
|
- <span> {{row.add_time | formatDate}}</span>
|
|
|
- </template>
|
|
|
- <template slot-scope="{ row, index }" slot="action">
|
|
|
- <a @click="couponSend(row)" >编辑</a>
|
|
|
- <Divider type="vertical" />
|
|
|
- <a @click="couponDel(row,'删除会员卡',index)">删除</a>
|
|
|
- </template>
|
|
|
- </Table>
|
|
|
- <div class="acea-row row-right page">
|
|
|
- <Page :total="total" :current="tableFrom.page" show-elevator show-total @on-change="pageChange"
|
|
|
- :page-size="tableFrom.limit"/>
|
|
|
- </div>
|
|
|
- </Card>
|
|
|
- <!--表单编辑-->
|
|
|
- <edit-from :FromData="FromData" @changeType="changeType" ref="edits"></edit-from>
|
|
|
- </div>
|
|
|
+ <Table :columns="columns1" :data="tableList" ref="table" class="mt25" :loading="loading" highlight-row
|
|
|
+ no-userFrom-text="暂无数据" no-filtered-userFrom-text="暂无筛选结果">
|
|
|
+ <template slot-scope="{ row, index }" slot="groupname">
|
|
|
+ {{row.checkin_option.groupname}}
|
|
|
+ </template>
|
|
|
+ <!-- workdays -->
|
|
|
+ <template slot-scope="{ row, index }" slot="workdays">
|
|
|
+ <el-tag v-for="witem in row.checkin_option.checkindate[0].workdays">{{witem | showWd}}</el-tag>
|
|
|
+ </template>
|
|
|
+ <template slot-scope="{ row }" slot="coupon_price">
|
|
|
+ <span v-if="row.coupon_type==1">{{row.coupon_price}}元</span>
|
|
|
+ <span
|
|
|
+ v-if="row.coupon_type==2">{{parseFloat(row.coupon_price)/10}}折({{row.coupon_price.toString().split(".")[0]}}%)</span>
|
|
|
+ </template>
|
|
|
+ <template slot-scope="{ row, index }" slot="status">
|
|
|
+ <Icon type="md-checkmark" v-if="row.status === 1" color="#0092DC" size="14" />
|
|
|
+ <Icon type="md-close" v-else color="#ed5565" size="14" />
|
|
|
+ </template>
|
|
|
+ <template slot-scope="{ row, index }" slot="add_time">
|
|
|
+ <span> {{row.add_time | formatDate}}</span>
|
|
|
+ </template>
|
|
|
+ <template slot-scope="{ row, index }" slot="action">
|
|
|
+ <a @click="couponSend(row)">编辑</a>
|
|
|
+ <Divider type="vertical" />
|
|
|
+ <a @click="couponDel(row,'删除会员卡',index)">删除</a>
|
|
|
+ </template>
|
|
|
+ </Table>
|
|
|
+ <div class="acea-row row-right page">
|
|
|
+ <Page :total="total" :current="tableFrom.page" show-elevator show-total @on-change="pageChange"
|
|
|
+ :page-size="tableFrom.limit" />
|
|
|
+ </div>
|
|
|
+ </Card>
|
|
|
+ <!--表单编辑-->
|
|
|
+ <edit-from :FromData="FromData" @changeType="changeType" ref="edits"></edit-from>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- import { mapState } from 'vuex';
|
|
|
- import { couponListApi, couponCreateApi, couponEditeApi, couponSendApi,vipListApi,VipDeleteApi ,VipEditApi} from '@/api/marketing';
|
|
|
- import { checkGroupList,checkRuleList } from '@/api/store';
|
|
|
- import editFrom from '@/components/from/from';
|
|
|
- import { formatDate } from '@/utils/validate';
|
|
|
+ import {
|
|
|
+ mapState
|
|
|
+ } from 'vuex';
|
|
|
+ import {
|
|
|
+ couponListApi,
|
|
|
+ couponCreateApi,
|
|
|
+ couponEditeApi,
|
|
|
+ couponSendApi,
|
|
|
+ vipListApi,
|
|
|
+ VipDeleteApi,
|
|
|
+ VipEditApi
|
|
|
+ } from '@/api/marketing';
|
|
|
+ import {
|
|
|
+ checkGroupList,
|
|
|
+ checkRuleList
|
|
|
+ } from '@/api/store';
|
|
|
+ import editFrom from '@/components/from/from';
|
|
|
+ import {
|
|
|
+ formatDate
|
|
|
+ } from '@/utils/validate';
|
|
|
import Setting from "@/setting";
|
|
|
- export default {
|
|
|
- name: 'storeCoupon',
|
|
|
- filters: {
|
|
|
- formatDate (time) {
|
|
|
- if (time !== 0) {
|
|
|
- let date = new Date(time * 1000);
|
|
|
- return formatDate(date, 'yyyy-MM-dd hh:mm');
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- components: { editFrom },
|
|
|
- data () {
|
|
|
- return {
|
|
|
+ export default {
|
|
|
+ name: 'storeCoupon',
|
|
|
+ filters: {
|
|
|
+ formatDate(time) {
|
|
|
+ if (time !== 0) {
|
|
|
+ let date = new Date(time * 1000);
|
|
|
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ showWd(day) {
|
|
|
+ if(day) {
|
|
|
+ switch (day){
|
|
|
+ case value:
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ components: {
|
|
|
+ editFrom
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
roterPre: Setting.roterPre,
|
|
|
- grid: {
|
|
|
- xl: 7,
|
|
|
- lg: 7,
|
|
|
- md: 12,
|
|
|
- sm: 24,
|
|
|
- xs: 24
|
|
|
- },
|
|
|
- loading: false,
|
|
|
- columns1: [
|
|
|
- {
|
|
|
- title: 'ID',
|
|
|
- key: 'id',
|
|
|
- width: 80
|
|
|
- },
|
|
|
- {
|
|
|
- title: '考勤组名称',
|
|
|
- key: 'name',
|
|
|
- minWidth: 150
|
|
|
- },
|
|
|
- {
|
|
|
- title: 'price',
|
|
|
- key: 'price',
|
|
|
- minWidth: 80
|
|
|
- },
|
|
|
- {
|
|
|
- title: 'classes_id',
|
|
|
- key: 'classes_id',
|
|
|
- minWidth: 100
|
|
|
- },
|
|
|
- // {
|
|
|
- // title: '折扣',
|
|
|
- // key: 'discount_ratio',
|
|
|
- // minWidth: 100
|
|
|
- // },
|
|
|
- {
|
|
|
- title: '操作',
|
|
|
- slot: 'action',
|
|
|
- fixed: 'right',
|
|
|
- minWidth: 170
|
|
|
- }
|
|
|
- ],
|
|
|
- tableFrom: {
|
|
|
- page: 1,
|
|
|
- limit: 15
|
|
|
- },
|
|
|
- tableList: [],
|
|
|
- total: 0,
|
|
|
- FromData: null
|
|
|
- }
|
|
|
- },
|
|
|
- created () {
|
|
|
- this.getList();
|
|
|
- },
|
|
|
- computed: {
|
|
|
- ...mapState('admin/layout', [
|
|
|
- 'isMobile'
|
|
|
- ]),
|
|
|
- labelWidth () {
|
|
|
- return this.isMobile ? undefined : 90;
|
|
|
- },
|
|
|
- labelPosition () {
|
|
|
- return this.isMobile ? 'top' : 'left';
|
|
|
- }
|
|
|
- },
|
|
|
- methods: {
|
|
|
- // 失效
|
|
|
- couponInvalid (row, tit, num) {
|
|
|
- let delfromData = {
|
|
|
- title: tit,
|
|
|
- num: num,
|
|
|
- url: `marketing/coupon/status/${row.id}`,
|
|
|
- method: 'PUT',
|
|
|
- ids: ''
|
|
|
- };
|
|
|
- this.$modalSure(delfromData).then((res) => {
|
|
|
- this.$Message.success(res.msg);
|
|
|
- this.getList();
|
|
|
- }).catch(res => {
|
|
|
- this.$Message.error(res.msg);
|
|
|
- });
|
|
|
- },
|
|
|
- // 发布
|
|
|
- couponSend (row) {
|
|
|
- this.$modalForm(VipEditApi(row.id)).then(() => this.getList());
|
|
|
- },
|
|
|
- // 删除
|
|
|
- couponDel (row, tit, num) {
|
|
|
- let delfromData = {
|
|
|
- title: tit,
|
|
|
- url: `membership/deleteCard/${row.id}`,
|
|
|
- method: 'DELETE',
|
|
|
- ids: ''
|
|
|
- };
|
|
|
- this.$modalSure(delfromData).then((res) => {
|
|
|
- this.$Message.success(res.msg);
|
|
|
- this.tableList.splice(num, 1)
|
|
|
- }).catch(res => {
|
|
|
- this.$Message.error(res.msg);
|
|
|
- });
|
|
|
- },
|
|
|
- // 列表
|
|
|
- getList () {
|
|
|
- this.loading = true;
|
|
|
-
|
|
|
- checkRuleList(this.tableFrom).then(async res => {
|
|
|
- let data = res.data
|
|
|
- this.tableList = data.list;
|
|
|
- this.total = res.data.count;
|
|
|
- this.loading = false;
|
|
|
- }).catch(res => {
|
|
|
- this.loading = false;
|
|
|
- this.$Message.error(res.msg);
|
|
|
- });
|
|
|
- },
|
|
|
- pageChange (index) {
|
|
|
- this.tableFrom.page = index;
|
|
|
- this.getList();
|
|
|
- },
|
|
|
- changeType (data) {
|
|
|
- this.type = data;
|
|
|
- },
|
|
|
- // 添加
|
|
|
- add () {
|
|
|
- // this.$modalForm(couponCreateApi()).then(() => this.getList());
|
|
|
- this.$router.push({ path: this.roterPre + "/store/checkRule/create" });
|
|
|
- // this.addType(0);
|
|
|
- },
|
|
|
- addType (type) {
|
|
|
- couponCreateApi(type).then(async res => {
|
|
|
- if (res.data.status === false) {
|
|
|
- return this.$authLapse(res.data);
|
|
|
- }
|
|
|
+ grid: {
|
|
|
+ xl: 7,
|
|
|
+ lg: 7,
|
|
|
+ md: 12,
|
|
|
+ sm: 24,
|
|
|
+ xs: 24
|
|
|
+ },
|
|
|
+ loading: false,
|
|
|
+ columns1: [{
|
|
|
+ title: 'ID',
|
|
|
+ key: 'id',
|
|
|
+ width: 80
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '规则名称',
|
|
|
+ slot: 'groupname',
|
|
|
+ minWidth: 150
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '工作日',
|
|
|
+ slot: 'workdays',
|
|
|
+ minWidth: 80
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: 'classes_id',
|
|
|
+ key: 'classes_id',
|
|
|
+ minWidth: 100
|
|
|
+ },
|
|
|
+ // {
|
|
|
+ // title: '折扣',
|
|
|
+ // key: 'discount_ratio',
|
|
|
+ // minWidth: 100
|
|
|
+ // },
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ slot: 'action',
|
|
|
+ fixed: 'right',
|
|
|
+ minWidth: 170
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ tableFrom: {
|
|
|
+ page: 1,
|
|
|
+ limit: 15
|
|
|
+ },
|
|
|
+ tableList: [],
|
|
|
+ total: 0,
|
|
|
+ FromData: null
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapState('admin/layout', [
|
|
|
+ 'isMobile'
|
|
|
+ ]),
|
|
|
+ labelWidth() {
|
|
|
+ return this.isMobile ? undefined : 90;
|
|
|
+ },
|
|
|
+ labelPosition() {
|
|
|
+ return this.isMobile ? 'top' : 'left';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ // 失效
|
|
|
+ couponInvalid(row, tit, num) {
|
|
|
+ let delfromData = {
|
|
|
+ title: tit,
|
|
|
+ num: num,
|
|
|
+ url: `marketing/coupon/status/${row.id}`,
|
|
|
+ method: 'PUT',
|
|
|
+ ids: ''
|
|
|
+ };
|
|
|
+ this.$modalSure(delfromData).then((res) => {
|
|
|
+ this.$Message.success(res.msg);
|
|
|
+ this.getList();
|
|
|
+ }).catch(res => {
|
|
|
+ this.$Message.error(res.msg);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 发布
|
|
|
+ couponSend(row) {
|
|
|
+ this.$modalForm(VipEditApi(row.id)).then(() => this.getList());
|
|
|
+ },
|
|
|
+ // 删除
|
|
|
+ couponDel(row, tit, num) {
|
|
|
+ let delfromData = {
|
|
|
+ title: tit,
|
|
|
+ url: `membership/deleteCard/${row.id}`,
|
|
|
+ method: 'DELETE',
|
|
|
+ ids: ''
|
|
|
+ };
|
|
|
+ this.$modalSure(delfromData).then((res) => {
|
|
|
+ this.$Message.success(res.msg);
|
|
|
+ this.tableList.splice(num, 1)
|
|
|
+ }).catch(res => {
|
|
|
+ this.$Message.error(res.msg);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 列表
|
|
|
+ getList() {
|
|
|
+ this.loading = true;
|
|
|
+
|
|
|
+ checkRuleList(this.tableFrom).then(async res => {
|
|
|
+ let data = res.data
|
|
|
+ this.tableList = data.data;
|
|
|
+ this.total = res.data.count;
|
|
|
+ this.loading = false;
|
|
|
+ }).catch(res => {
|
|
|
+ this.loading = false;
|
|
|
+ this.$Message.error(res.msg);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ pageChange(index) {
|
|
|
+ this.tableFrom.page = index;
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ changeType(data) {
|
|
|
+ this.type = data;
|
|
|
+ },
|
|
|
+ // 添加
|
|
|
+ add() {
|
|
|
+ // this.$modalForm(couponCreateApi()).then(() => this.getList());
|
|
|
+ this.$router.push({
|
|
|
+ path: this.roterPre + "/store/checkRule/create"
|
|
|
+ });
|
|
|
+ // this.addType(0);
|
|
|
+ },
|
|
|
+ addType(type) {
|
|
|
+ couponCreateApi(type).then(async res => {
|
|
|
+ if (res.data.status === false) {
|
|
|
+ return this.$authLapse(res.data);
|
|
|
+ }
|
|
|
// console.log()
|
|
|
- console.log(res.data,'res.data');
|
|
|
- this.FromData = res.data;
|
|
|
- this.$refs.edits.modals = true;
|
|
|
- }).catch(res => {
|
|
|
- this.$Message.error(res.msg);
|
|
|
- })
|
|
|
- },
|
|
|
- // 编辑
|
|
|
- edit (row) {
|
|
|
- this.$modalForm(couponEditeApi(row.id)).then(() => this.getList());
|
|
|
- },
|
|
|
- // 表格搜索
|
|
|
- userSearchs () {
|
|
|
- this.tableFrom.page = 1;
|
|
|
- this.getList();
|
|
|
- },
|
|
|
- // 修改成功
|
|
|
- submitFail () {
|
|
|
- this.getList();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ console.log(res.data, 'res.data');
|
|
|
+ this.FromData = res.data;
|
|
|
+ this.$refs.edits.modals = true;
|
|
|
+ }).catch(res => {
|
|
|
+ this.$Message.error(res.msg);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 编辑
|
|
|
+ edit(row) {
|
|
|
+ this.$modalForm(couponEditeApi(row.id)).then(() => this.getList());
|
|
|
+ },
|
|
|
+ // 表格搜索
|
|
|
+ userSearchs() {
|
|
|
+ this.tableFrom.page = 1;
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ // 修改成功
|
|
|
+ submitFail() {
|
|
|
+ this.getList();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
- .ivu-col:nth-of-type(1) .ivu-form-item .ivu-form-item-label{
|
|
|
- width: 80px !important;
|
|
|
- }
|
|
|
- .ivu-col:nth-of-type(1) .ivu-form-item .ivu-form-item-content{
|
|
|
- margin-left: 80px !important;
|
|
|
- }
|
|
|
-</style>
|
|
|
+ .ivu-col:nth-of-type(1) .ivu-form-item .ivu-form-item-label {
|
|
|
+ width: 80px !important;
|
|
|
+ }
|
|
|
+
|
|
|
+ .ivu-col:nth-of-type(1) .ivu-form-item .ivu-form-item-content {
|
|
|
+ margin-left: 80px !important;
|
|
|
+ }
|
|
|
+</style>
|