卡券功能

This commit is contained in:
磷叶 2025-05-27 16:13:45 +08:00
parent 2be6bb44da
commit 0d8551c020
4 changed files with 45 additions and 9 deletions

View File

@ -28,9 +28,18 @@
<el-tab-pane label="车辆列表" lazy v-if="checkPermi(['bst:device:list'])"> <el-tab-pane label="车辆列表" lazy v-if="checkPermi(['bst:device:list'])">
<device :query="{areaId: detail.id}" /> <device :query="{areaId: detail.id}" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="订单列表" lazy v-if="checkPermi(['bst:order:list'])"> <el-tab-pane label="骑行订单" lazy v-if="checkPermi(['bst:order:list'])">
<order :query="{areaId: detail.id}" /> <order :query="{areaId: detail.id}" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="卡券列表" lazy v-if="checkPermi(['bst:vip:list'])">
<vip :query="{areaId: detail.id}" />
</el-tab-pane>
<el-tab-pane label="卡券订单" lazy v-if="checkPermi(['bst:vipOrder:list'])">
<vip-order :query="{vipAreaId: detail.id}" />
</el-tab-pane>
<el-tab-pane label="用户卡券" lazy v-if="checkPermi(['bst:vipUser:list'])">
<vip-user :query="{areaId: detail.id}" />
</el-tab-pane>
<el-tab-pane label="加盟列表" lazy v-if="checkPermi(['bst:areaJoin:list'])"> <el-tab-pane label="加盟列表" lazy v-if="checkPermi(['bst:areaJoin:list'])">
<area-join :query="{areaId: detail.id, types: [AreaJoinType.JOIN, AreaJoinType.COOPERATE]}" /> <area-join :query="{areaId: detail.id, types: [AreaJoinType.JOIN, AreaJoinType.COOPERATE]}" />
</el-tab-pane> </el-tab-pane>
@ -54,13 +63,16 @@
<script> <script>
import { getArea } from '@/api/bst/area'; import { getArea } from '@/api/bst/area';
import UserLink from '@/components/Business/User/UserLink.vue'; import UserLink from '@/components/Business/User/UserLink.vue';
import { AreaJoinType, LogBizType } from '@/utils/enums';
import Agreement from '@/views/bst/agreement/index.vue';
import AreaJoin from '@/views/bst/areaJoin/index.vue';
import AreaSub from '@/views/bst/areaSub/index.vue'; import AreaSub from '@/views/bst/areaSub/index.vue';
import CustomerService from '@/views/bst/customerService/index.vue';
import Device from '@/views/bst/device/index.vue'; import Device from '@/views/bst/device/index.vue';
import Order from '@/views/bst/order/index.vue'; import Order from '@/views/bst/order/index.vue';
import AreaJoin from '@/views/bst/areaJoin/index.vue'; import Vip from '@/views/bst/vip/index.vue';
import { AreaJoinType, LogBizType } from '@/utils/enums'; import VipOrder from '@/views/bst/vipOrder/index.vue';
import CustomerService from '@/views/bst/customerService/index.vue'; import VipUser from '@/views/bst/vipUser/index.vue';
import Agreement from '@/views/bst/agreement/index.vue';
import OperLog from '@/views/monitor/operlog/index.vue'; import OperLog from '@/views/monitor/operlog/index.vue';
export default { export default {
@ -74,7 +86,10 @@ export default {
AreaJoin, AreaJoin,
CustomerService, CustomerService,
Agreement, Agreement,
OperLog OperLog,
VipOrder,
Vip,
VipUser
}, },
data() { data() {
return { return {

View File

@ -194,6 +194,12 @@ export default {
BooleanTag, BooleanTag,
VipEditDialog VipEditDialog
}, },
props: {
query: {
type: Object,
default: () => ({})
}
},
data() { data() {
return { return {
VipType, VipType,
@ -254,6 +260,7 @@ export default {
}; };
}, },
created() { created() {
Object.assign(this.queryParams, this.query);
this.getList(); this.getList();
}, },
methods: { methods: {

View File

@ -153,6 +153,12 @@ export default {
mixins: [$showColumns], mixins: [$showColumns],
dicts: ['vip_type', 'vip_order_status', 'vip_limit_unit'], dicts: ['vip_type', 'vip_order_status', 'vip_limit_unit'],
components: {FormCol, AreaRemoteSelect, AreaLink, UserLink}, components: {FormCol, AreaRemoteSelect, AreaLink, UserLink},
props: {
query: {
type: Object,
default: () => ({})
}
},
data() { data() {
return { return {
VipType, VipType,
@ -246,6 +252,7 @@ export default {
}; };
}, },
created() { created() {
Object.assign(this.queryParams, this.query);
this.getList(); this.getList();
}, },
methods: { methods: {

View File

@ -50,7 +50,7 @@
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="vipUserList" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="onSortChange"> <el-table v-loading="loading" :data="vipUserList" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="onSortChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<template v-for="column of showColumns"> <template v-for="column of showColumns">
<el-table-column <el-table-column
@ -76,7 +76,7 @@
<user-link :id="d.row.userId" :text="d.row.userName"/> <user-link :id="d.row.userId" :text="d.row.userName"/>
</template> </template>
<template v-else-if="column.key === 'areaName'"> <template v-else-if="column.key === 'areaName'">
<area-link :id="d.row.areaId" :text="d.row.areaName"/> <area-link :id="d.row.areaId" :text="d.row.areaName" />
</template> </template>
<template v-else-if="column.key === 'surplusTotal'"> <template v-else-if="column.key === 'surplusTotal'">
{{ d.row.surplusTotal | dv}} {{ d.row.surplusTotal | dv}}
@ -150,6 +150,12 @@ export default {
mixins: [$showColumns], mixins: [$showColumns],
dicts: ['vip_type', 'vip_limit_unit'], dicts: ['vip_type', 'vip_limit_unit'],
components: {FormCol, UserLink, AreaLink, AreaRemoteSelect}, components: {FormCol, UserLink, AreaLink, AreaRemoteSelect},
props: {
query: {
type: Object,
default: () => ({})
}
},
data() { data() {
return { return {
VipType, VipType,
@ -157,7 +163,7 @@ export default {
// //
columns: [ columns: [
{key: 'id', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"}, {key: 'id', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
{key: 'name', visible: true, label: '卡券', minWidth: null, sortable: true, overflow: false, align: 'left', width: null}, {key: 'name', visible: true, label: '卡券', minWidth: null, sortable: true, overflow: false, align: 'left', width: "250"},
{key: 'userName', visible: true, label: '用户', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'userName', visible: true, label: '用户', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'areaName', visible: true, label: '运营区', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'areaName', visible: true, label: '运营区', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'discount', visible: true, label: '优惠', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}, {key: 'discount', visible: true, label: '优惠', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
@ -244,6 +250,7 @@ export default {
}; };
}, },
created() { created() {
Object.assign(this.queryParams, this.query);
this.getList(); this.getList();
}, },
methods: { methods: {