整包上传

main
zhangshengli 5 months ago
parent 0868495677
commit e4f0d88c1a

@ -11,5 +11,5 @@ VUE_APP_BASE_API = '/fuint-application/'
VUE_APP_PUBLIC_PATH = '/fuintAdmin/' VUE_APP_PUBLIC_PATH = '/fuintAdmin/'
# 后端接口地址 # 后端接口地址
VUE_APP_SERVER_URL = 'https://www.fuint.cn/fuint-application/' VUE_APP_SERVER_URL = 'https://www.huamar.com/fuint-application/'

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

@ -1,6 +1,6 @@
/** /**
* css * css
* Copyright (c) 2022 https://www.fuint.cn * Copyright (c) 2022 https://www.huamar.com
*/ */
/** 基础通用 **/ /** 基础通用 **/
.pt5 { .pt5 {

@ -9,7 +9,7 @@ export default {
name: 'FuintDoc', name: 'FuintDoc',
data() { data() {
return { return {
url: 'https://www.fuint.cn/docs/index/' url: 'https://www.huamar.com/docs/index/'
} }
}, },
methods: { methods: {

@ -1,6 +1,6 @@
/** /**
* v-hasPermi 操作权限处理 * v-hasPermi 操作权限处理
* Copyright (c) 2023 https://www.fuint.cn * Copyright (c) 2023 https://www.huamar.com
*/ */
import store from '@/store' import store from '@/store'

@ -1,6 +1,6 @@
/** /**
* 通用js方法封装处理 * 通用js方法封装处理
* Copyright (c) 2022 https://www.fuint.cn * Copyright (c) 2022 https://www.huamar.com
*/ */
// 获取过去n天时间 // 获取过去n天时间

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="会员ID" prop="userId"> <el-form-item label="会员ID" prop="userId">
<el-input <el-input
v-model="queryParams.userId" v-model="queryParams.userId"

@ -23,7 +23,7 @@
</li> </li>
</ul> </ul>
<div class="client"> <div class="client">
<a target="_blank" href="https://www.fuint.cn/download?v=202307024">下载客户端</a> <a target="_blank" href="https://www.huamar.com/download?v=202307024">下载客户端</a>
</div> </div>
</div> </div>
</div> </div>

@ -1,7 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form size="small" :inline="true" class="main-search" label-width="68px"> <el-form size="small" :inline="true" class="main-search" label-width="83px">
<el-form-item label="所属店铺" prop="storeId"> <el-form-item label="所属服务站" prop="storeId">
<el-select v-model="storeId" filterable clearable placeholder="请选择店铺" style="width: 100%;"> <el-select v-model="storeId" filterable clearable placeholder="请选择店铺" style="width: 100%;">
<el-option <el-option
v-for="item in storeOptions" v-for="item in storeOptions"

@ -1,7 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<!--查询参数--> <!--查询参数-->
<el-form size="small" :inline="true" class="main-search" label-width="68px"> <el-form size="small" :inline="true" class="main-search" label-width="83px">
<el-form-item label="分佣对象" prop="target"> <el-form-item label="分佣对象" prop="target">
<el-select v-model="target" placeholder="请选择方案对象" clearable style="width: 100%;"> <el-select v-model="target" placeholder="请选择方案对象" clearable style="width: 100%;">
<el-option key="" label="全部" value=""/> <el-option key="" label="全部" value=""/>
@ -9,7 +9,7 @@
<el-option key="member" label="会员分销" value="member"/> <el-option key="member" label="会员分销" value="member"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="所属店铺" prop="storeId"> <el-form-item label="所属服务站" prop="storeId">
<el-select v-model="storeId" filterable clearable placeholder="请选择店铺" style="width: 100%;"> <el-select v-model="storeId" filterable clearable placeholder="请选择店铺" style="width: 100%;">
<el-option <el-option
v-for="item in storeOptions" v-for="item in storeOptions"
@ -214,7 +214,7 @@
<span>{{ scope.row.userInfo ? scope.row.userInfo.userName : '-' }}</span> <span>{{ scope.row.userInfo ? scope.row.userInfo.userName : '-' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="所属店铺" align="center" prop="storeInfo.name"> <el-table-column label="所属服务站" align="center" prop="storeInfo.name">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.storeInfo">{{ scope.row.storeInfo.name }}</span> <span v-if="scope.row.storeInfo">{{ scope.row.storeInfo.name }}</span>
<span v-else>-</span> <span v-else>-</span>

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="会员ID" prop="title"> <el-form-item label="会员ID" prop="title">
<el-input <el-input
v-model="queryParams.title" v-model="queryParams.title"
@ -10,10 +10,10 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="所属店铺" prop="store"> <el-form-item label="所属服务站" prop="store">
<el-select <el-select
v-model="queryParams.storeId" v-model="queryParams.storeId"
placeholder="所属店铺" placeholder="所属服务站"
clearable clearable
style="width: 180px" style="width: 180px"
> >
@ -49,7 +49,7 @@
<el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange"> <el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
<el-table-column label="ID" prop="id" width="55"/> <el-table-column label="ID" prop="id" width="55"/>
<el-table-column label="标题" align="center" prop="title" /> <el-table-column label="标题" align="center" prop="title" />
<el-table-column label="所属店铺" align="center" prop="store"> <el-table-column label="所属服务站" align="center" prop="store">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.storeId && scope.row.storeId > 0"> <span v-if="scope.row.storeId && scope.row.storeId > 0">
<span>{{ getName(storeList, scope.row.storeId) }}</span> <span>{{ getName(storeList, scope.row.storeId) }}</span>
@ -118,11 +118,11 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="所属店铺" prop="storeId"> <el-form-item label="所属服务站" prop="storeId">
<el-select <el-select
v-model="form.storeId" v-model="form.storeId"
style="width: 260px" style="width: 260px"
placeholder="所属店铺,空则为公共所有" placeholder="所属服务站,空则为公共所有"
> >
<el-option :key="0" label="公共所有" v-if="!this.$store.getters.storeId" :value="0"/> <el-option :key="0" label="公共所有" v-if="!this.$store.getters.storeId" :value="0"/>
<el-option v-for="storeInfo in storeList" :key="storeInfo.id" :label="storeInfo.name" :value="storeInfo.id"/> <el-option v-for="storeInfo in storeList" :key="storeInfo.id" :label="storeInfo.name" :value="storeInfo.id"/>

@ -1,7 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<!--查询参数--> <!--查询参数-->
<el-form size="small" :inline="true" class="main-search" label-width="68px"> <el-form size="small" :inline="true" class="main-search" label-width="83px">
<el-form-item label="方案名称"> <el-form-item label="方案名称">
<el-input <el-input
v-model="name" v-model="name"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" label-width="83px">
<el-form-item label="文章标题" prop="title"> <el-form-item label="文章标题" prop="title">
<el-input <el-input
v-model="queryParams.title" v-model="queryParams.title"
@ -93,7 +93,7 @@
<!-- 添加或修改文章对话框 --> <!-- 添加或修改文章对话框 -->
<el-dialog :title="title" :visible.sync="open" class="common-dialog" width="700px" append-to-body> <el-dialog :title="title" :visible.sync="open" class="common-dialog" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="83px">
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="标题" prop="title"> <el-form-item label="标题" prop="title">
@ -133,11 +133,11 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="所属店铺" prop="storeId"> <el-form-item label="所属服务站" prop="storeId">
<el-select <el-select
v-model="form.storeId" v-model="form.storeId"
style="width: 260px" style="width: 260px"
placeholder="所属店铺,空则为公共所有" placeholder="所属服务站,空则为公共所有"
> >
<el-option :key="0" label="公共所有" v-if="!this.$store.getters.storeId" :value="0"/> <el-option :key="0" label="公共所有" v-if="!this.$store.getters.storeId" :value="0"/>
<el-option v-for="storeInfo in storeList" :key="storeInfo.id" :label="storeInfo.name" :value="storeInfo.id"/> <el-option v-for="storeInfo in storeList" :key="storeInfo.id" :label="storeInfo.name" :value="storeInfo.id"/>

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="标题" prop="title"> <el-form-item label="标题" prop="title">
<el-input <el-input
v-model="queryParams.title" v-model="queryParams.title"
@ -10,10 +10,10 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="所属店铺" prop="store"> <el-form-item label="所属服务站" prop="store">
<el-select <el-select
v-model="queryParams.storeId" v-model="queryParams.storeId"
placeholder="所属店铺" placeholder="所属服务站"
clearable clearable
style="width: 180px" style="width: 180px"
> >
@ -49,7 +49,7 @@
<el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange"> <el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
<el-table-column label="ID" prop="id" width="55"/> <el-table-column label="ID" prop="id" width="55"/>
<el-table-column label="标题" align="center" prop="title" /> <el-table-column label="标题" align="center" prop="title" />
<el-table-column label="所属店铺" align="center" prop="store"> <el-table-column label="所属服务站" align="center" prop="store">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.storeId && scope.row.storeId > 0"> <span v-if="scope.row.storeId && scope.row.storeId > 0">
<span>{{ getName(storeList, scope.row.storeId) }}</span> <span>{{ getName(storeList, scope.row.storeId) }}</span>
@ -123,11 +123,11 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="所属店铺" prop="storeId"> <el-form-item label="所属服务站" prop="storeId">
<el-select <el-select
v-model="form.storeId" v-model="form.storeId"
style="width: 260px" style="width: 260px"
placeholder="所属店铺,空则为公共所有" placeholder="所属服务站,空则为公共所有"
> >
<el-option :key="0" label="公共所有" v-if="!this.$store.getters.storeId" :value="0"/> <el-option :key="0" label="公共所有" v-if="!this.$store.getters.storeId" :value="0"/>
<el-option v-for="storeInfo in storeList" :key="storeInfo.id" :label="storeInfo.name" :value="storeInfo.id"/> <el-option v-for="storeInfo in storeList" :key="storeInfo.id" :label="storeInfo.name" :value="storeInfo.id"/>

@ -1,7 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="main-panel"> <div class="main-panel">
<el-form class="form" ref="form" :model="form" :rules="rules" label-width="80px"> <el-form class="form" ref="form" :model="form" :rules="rules" label-width="83px">
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item class="form-item" label="核销码" prop="code"> <el-form-item class="form-item" label="核销码" prop="code">

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="会员ID" prop="userId"> <el-form-item label="会员ID" prop="userId">
<el-input <el-input
v-model="queryParams.userId" v-model="queryParams.userId"
@ -74,7 +74,7 @@
<span v-else>-</span> <span v-else>-</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="所属店铺" align="center" prop="storeInfo.name"> <el-table-column label="所属服务站" align="center" prop="storeInfo.name">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.storeInfo">{{ scope.row.storeInfo.name }}</span> <span v-if="scope.row.storeInfo">{{ scope.row.storeInfo.name }}</span>
<span v-else></span> <span v-else></span>

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="卡券ID" prop="couponId"> <el-form-item label="卡券ID" prop="couponId">
<el-input <el-input
v-model="queryParams.id" v-model="queryParams.id"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="会员ID" prop="userId"> <el-form-item label="会员ID" prop="userId">
<el-input <el-input
v-model="queryParams.userId" v-model="queryParams.userId"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="分组ID" prop="couponId"> <el-form-item label="分组ID" prop="couponId">
<el-input <el-input
v-model="queryParams.id" v-model="queryParams.id"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="会员ID" prop="userId"> <el-form-item label="会员ID" prop="userId">
<el-input <el-input
v-model="queryParams.userId" v-model="queryParams.userId"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="ID" prop="id"> <el-form-item label="ID" prop="id">
<el-input <el-input
v-model="queryParams.id" v-model="queryParams.id"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" class="main-search" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" class="main-search" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="分类名称" prop="name"> <el-form-item label="分类名称" prop="name">
<el-input <el-input
v-model="queryParams.name" v-model="queryParams.name"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" class="main-search" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" class="main-search" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="商品名称" prop="name"> <el-form-item label="商品名称" prop="name">
<el-input <el-input
v-model="queryParams.name" v-model="queryParams.name"

@ -70,13 +70,14 @@
<div class="content"> <div class="content">
<el-row class="line home-tools"> <el-row class="line home-tools">
<!-- <el-col class="item no-border" :span="8"><div class="do" @click="toCashier('/fuintCashier/')"><img class="t-icon" src="@/assets/images/home/pay.png"><div class="text">收银下单</div></div></el-col>--> <!-- <el-col class="item no-border" :span="8"><div class="do" @click="toCashier('/fuintCashier/')"><img class="t-icon" src="@/assets/images/home/pay.png"><div class="text">收银下单</div></div></el-col>-->
<el-col class="item no-border" :span="8"><div class="do" @click="toTarget('/coupon/confirm/index')"><img class="t-icon" src="@/assets/images/home/coupon.png"><div class="text">核销卡券</div></div></el-col> <el-col class="item no-border" :span="12"><div class="do" @click="toTarget('/coupon/confirm/index')"><img class="t-icon" src="@/assets/images/home/coupon.png"><div class="text">核销卡券</div></div></el-col>
<el-col class="item no-border" :span="8"><div class="do" @click="toTarget('/member/index')"><img class="t-icon" src="@/assets/images/home/member.png"><div class="text">会员管理</div></div></el-col> <el-col class="item no-border" :span="12"><div class="do" @click="toTarget('/member/index')"><img class="t-icon" src="@/assets/images/home/member.png"><div class="text">会员管理</div></div></el-col>
</el-row> </el-row>
<el-row class="line home-tools"> <el-row class="line home-tools">
<el-col class="item no-border" :span="8"><div class="do" @click="toTarget('/goods/goods/index')"><img class="t-icon" src="@/assets/images/home/goods.png"><div class="text">商品管理</div></div></el-col>
<el-col class="item no-border" :span="8"><div class="do" @click="toTarget('/order/index')"><img class="t-icon" src="@/assets/images/home/order.png"><div class="text">订单管理</div></div></el-col> <el-col class="item no-border" :span="8"><div class="do" @click="toTarget('/order/index')"><img class="t-icon" src="@/assets/images/home/order.png"><div class="text">订单管理</div></div></el-col>
<el-col class="item no-border" :span="8"><div class="do" @click="toTarget('/coupon/coupon/index')"><img class="t-icon" src="@/assets/images/home/card.png"><div class="text">卡券管理</div></div></el-col> <el-col class="item no-border" :span="8"><div class="do" @click="toTarget('/coupon/coupon/index')"><img class="t-icon" src="@/assets/images/home/card.png"><div class="text">卡券管理</div></div></el-col>
<el-col class="item no-border" :span="8"><div class="do" @click="toTarget('/goods/goods/index')"><img class="t-icon" src="@/assets/images/home/goods.png"><div class="text">商品管理</div></div></el-col>
</el-row> </el-row>
</div> </div>
</div> </div>
@ -221,6 +222,13 @@ export default {
} }
.home-tools { .home-tools {
.do { .do {
display: flex;
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
/* 其他样式保持不变 */
height: 90px; height: 90px;
margin-bottom: 10px; margin-bottom: 10px;
cursor: pointer; cursor: pointer;
@ -235,6 +243,7 @@ export default {
border: solid 1px #cccccc; border: solid 1px #cccccc;
.text { .text {
margin-top: 14px; margin-top: 14px;
text-align: center;
} }
} }
.t-icon { .t-icon {

@ -3,7 +3,7 @@
<div class="login-main"> <div class="login-main">
<div class="caption"> <div class="caption">
<h4 class="caption-title">{{ systemName }}</h4> <h4 class="caption-title">{{ systemName }}</h4>
<p class="caption-remark">欢迎使用 {{ systemName }}您的卡券计次卡等会员营销小管家</p> <p class="caption-remark">欢迎使用 {{ systemName }}</p>
</div> </div>
</div> </div>
<div class="login-form"> <div class="login-form">
@ -65,7 +65,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="copy-right"> <div class="copy-right">
<span>Copyright © 2022-2024 <a class="link" href="https://www.fuint.cn">fuint.cn</a> All Rights Reserved.</span> <span>Copyright © 2022-2024 <a class="link" href="https://www.huamar.com">huamar.com</a> All Rights Reserved.</span>
</div> </div>
</div> </div>
</div> </div>
@ -185,7 +185,7 @@ export default {
overflow: hidden; overflow: hidden;
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: center; // background-position: center;
.caption { .caption {
.caption-title { .caption-title {
font-size: 30px; font-size: 30px;

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" label-width="83px">
<el-form-item label="分组ID" prop="id"> <el-form-item label="分组ID" prop="id">
<el-input <el-input
v-model="queryParams.id" v-model="queryParams.id"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="会员ID" prop="id"> <el-form-item label="会员ID" prop="id">
<el-input <el-input
v-model="queryParams.id" v-model="queryParams.id"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="公司号" prop="no"> <el-form-item label="公司号" prop="no">
<el-input <el-input
v-model="queryParams.no" v-model="queryParams.no"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="卡券ID" prop="couponId"> <el-form-item label="卡券ID" prop="couponId">
<el-input <el-input
v-model="queryParams.couponId" v-model="queryParams.couponId"

@ -67,14 +67,14 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row class="row"> <el-row class="row">
<el-col :span="8"> <!-- <el-col :span="8">-->
<span class="head">使用积分</span> <!-- <span class="head">使用积分</span>-->
<span class="control-label">{{ orderInfo.usePoint ? orderInfo.usePoint : 0 }}</span> <!-- <span class="control-label">{{ orderInfo.usePoint ? orderInfo.usePoint : 0 }}</span>-->
</el-col> <!-- </el-col>-->
<el-col :span="8"> <!-- <el-col :span="8">-->
<span class="head">积分金额</span> <!-- <span class="head">积分金额</span>-->
<span class="control-label">{{ orderInfo.pointAmount.toFixed(2) }}</span> <!-- <span class="control-label">{{ orderInfo.pointAmount.toFixed(2) }}</span>-->
</el-col> <!-- </el-col>-->
<el-col :span="8"> <el-col :span="8">
<span class="head">配送费用</span> <span class="head">配送费用</span>
<span class="control-label">{{ orderInfo.deliveryFee ? orderInfo.deliveryFee.toFixed(2) : '-' }}</span> <span class="control-label">{{ orderInfo.deliveryFee ? orderInfo.deliveryFee.toFixed(2) : '-' }}</span>

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="会员ID" prop="name"> <el-form-item label="会员ID" prop="name">
<el-input <el-input
v-model="queryParams.userId" v-model="queryParams.userId"
@ -199,8 +199,8 @@
</span> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="handleView" icon="el-icon-view" v-hasPermi="['order:index']"></el-dropdown-item> <el-dropdown-item command="handleView" icon="el-icon-view" v-hasPermi="['order:index']"></el-dropdown-item>
<el-dropdown-item command="handlePrint" icon="el-icon-notebook-2" v-hasPermi="['order:index']"></el-dropdown-item> <!-- <el-dropdown-item command="handlePrint" icon="el-icon-notebook-2" v-hasPermi="['order:index']"></el-dropdown-item>-->
<el-dropdown-item v-if="scope.row.payStatus == 'B'" command="handleRefund" icon="el-icon-s-order" v-hasPermi="['order:index']">退</el-dropdown-item> <!-- <el-dropdown-item v-if="scope.row.payStatus == 'B'" command="handleRefund" icon="el-icon-s-order" v-hasPermi="['order:index']">退</el-dropdown-item>-->
<el-dropdown-item v-if="scope.row.payStatus != 'B'" command="handleDelete" icon="el-icon-remove" v-hasPermi="['order:delete']"></el-dropdown-item> <el-dropdown-item v-if="scope.row.payStatus != 'B'" command="handleDelete" icon="el-icon-remove" v-hasPermi="['order:delete']"></el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="会员ID" prop="userId"> <el-form-item label="会员ID" prop="userId">
<el-input <el-input
v-model="queryParams.userId" v-model="queryParams.userId"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="订单号" prop="name"> <el-form-item label="订单号" prop="name">
<el-input <el-input
v-model="queryParams.orderSn" v-model="queryParams.orderSn"
@ -66,7 +66,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="会员ID" align="center" prop="userId" /> <el-table-column label="会员ID" align="center" prop="userId" />
<el-table-column label="所属店铺" align="center" width="140" prop="storeInfo.name"> <el-table-column label="所属服务站" align="center" width="140" prop="storeInfo.name">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.storeInfo">{{ scope.row.storeInfo.name }}</span> <span v-if="scope.row.storeInfo">{{ scope.row.storeInfo.name }}</span>
<span v-else>-</span> <span v-else>-</span>

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="备注信息" prop="description"> <el-form-item label="备注信息" prop="description">
<el-input <el-input
v-model="queryParams.description" v-model="queryParams.description"
@ -155,7 +155,7 @@
<span>{{ scope.row.typeName }}</span> <span>{{ scope.row.typeName }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="所属店铺" align="center" width="140" prop="storeInfo.name"> <el-table-column label="所属服务站" align="center" width="140" prop="storeInfo.name">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.storeInfo">{{ scope.row.storeInfo.name }}</span> <span v-if="scope.row.storeInfo">{{ scope.row.storeInfo.name }}</span>
<span v-else>-</span> <span v-else>-</span>
@ -209,7 +209,7 @@
<span>{{ scope.row.orderInfo.typeName }}</span> <span>{{ scope.row.orderInfo.typeName }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="所属店铺" align="center" width="140" prop="storeInfo.name"> <el-table-column label="所属服务站" align="center" width="140" prop="storeInfo.name">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.orderInfo.storeInfo">{{ scope.row.orderInfo.storeInfo.name }}</span> <span v-if="scope.row.orderInfo.storeInfo">{{ scope.row.orderInfo.storeInfo.name }}</span>
<span v-else>-</span> <span v-else>-</span>

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="手机号" prop="mobile"> <el-form-item label="手机号" prop="mobile">
<el-input <el-input
v-model="queryParams.mobile" v-model="queryParams.mobile"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="模板代码" prop="code"> <el-form-item label="模板代码" prop="code">
<el-input <el-input
v-model="queryParams.code" v-model="queryParams.code"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="员工类别" prop="category"> <el-form-item label="员工类别" prop="category">
<el-select v-model="queryParams.category" clearable placeholder="请选择员工类别"> <el-select v-model="queryParams.category" clearable placeholder="请选择员工类别">
<el-option <el-option

@ -24,10 +24,10 @@
<div class="do-search"> <div class="do-search">
<el-button icon="el-icon-refresh" size="small" @click="reset"></el-button> <el-button icon="el-icon-refresh" size="small" @click="reset"></el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="getMainData"></el-button> <el-button type="primary" icon="el-icon-search" size="small" @click="getMainData"></el-button>
<span class="ex" @click="setDay(3)">3</span> <span class="ex" @click="setDay('today')"></span>
<span class="ex" @click="setDay(7)">7</span> <span class="ex" @click="setDay('week')"></span>
<span class="ex" @click="setDay(15)">15</span> <span class="ex" @click="setDay('month')"></span>
<span class="ex" @click="setDay(30)">30</span> <span class="ex" @click="setDay('year')"></span>
</div> </div>
</el-row> </el-row>
<el-row class="line"> <el-row class="line">
@ -186,11 +186,70 @@ export default {
}, },
// //
setDay(day) { setDay(day) {
this.startTime = getNumDayTime(day - 1);
this.endTime = getNumDayTime(0); let today= this.getNumDayTime(day);
this.startTime = today.startDate;
this.endTime = today.endDate;
// Testing the function
//console.log(this.getNumDayTime('today')); // Output: { startDate: "2024-06-11 00:00:00", endDate: "2024-06-11 23:59:59" }
//console.log(this.getNumDayTime('week')); // Output should be the current week's start and end dates
//console.log(this.getNumDayTime('month')); // Output should be the current month's start and end dates
//console.log(this.getNumDayTime('year')); // Output should be the current year's start and end dates
//this.startTime = getNumDayTime(day - 1);
//this.endTime = getNumDayTime(0);
debugger
this.getMainData(); this.getMainData();
this.getTopData(); this.getTopData();
}, },
getNumDayTime(rangeType) {
const now = new Date();
let startDate, endDate;
switch (rangeType) {
case 'today':
startDate = new Date(now.getFullYear(), now.getMonth(), now.getDate());
endDate = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59);
break;
case 'week':
// Assuming Monday is the first day of the week
let dayOfWeek = now.getDay();
let startOfWeek = now.getDate() - dayOfWeek + (dayOfWeek === 0 ? -6 : 1); // Adjust for Sunday being 0
startDate = new Date(now.getFullYear(), now.getMonth(), startOfWeek);
endDate = new Date(now.getFullYear(), now.getMonth(), startOfWeek + 6, 23, 59, 59);
break;
case 'month':
startDate = new Date(now.getFullYear(), now.getMonth(), 1);
endDate = new Date(now.getFullYear(), now.getMonth() + 1, 0, 23, 59, 59);
break;
case 'year':
startDate = new Date(now.getFullYear(), 0, 1);
endDate = new Date(now.getFullYear(), 11, 31, 23, 59, 59);
break;
default:
throw new Error('Invalid range type');
}
// Format dates as strings
function formatDate(date) {
let year = date.getFullYear();
let month = String(date.getMonth() + 1).padStart(2, '0');
let day = String(date.getDate()).padStart(2, '0');
let hours = String(date.getHours()).padStart(2, '0');
let minutes = String(date.getMinutes()).padStart(2, '0');
let seconds = String(date.getSeconds()).padStart(2, '0');
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
return {
startDate: formatDate(startDate),
endDate: formatDate(endDate)
};
},
// //
getMainData() { getMainData() {
this.loading = true; this.loading = true;

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" class="main-search" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" class="main-search" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="说明备注" prop="description"> <el-form-item label="说明备注" prop="description">
<el-input <el-input
v-model="queryParams.description" v-model="queryParams.description"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="服务站名称" prop="name"> <el-form-item label="服务站名称" prop="name">
<el-input <el-input
v-model="queryParams.name" v-model="queryParams.name"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="关键字" prop="content"> <el-form-item label="关键字" prop="content">
<el-input <el-input
v-model="queryParams.title" v-model="queryParams.title"

@ -1,7 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<h4 class="form-header h4">基本信息</h4> <h4 class="form-header h4">基本信息</h4>
<el-form ref="form" :model="form" label-width="80px"> <el-form ref="form" :model="form" label-width="83px">
<el-row> <el-row>
<el-col :span="8" :offset="2"> <el-col :span="8" :offset="2">
<el-form-item label="用户昵称" prop="nickName"> <el-form-item label="用户昵称" prop="nickName">

@ -3,7 +3,7 @@
<el-row :gutter="20"> <el-row :gutter="20">
<!--用户数据--> <!--用户数据-->
<el-col :span="24" :xs="24"> <el-col :span="24" :xs="24">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="用户名" prop="accountName"> <el-form-item label="用户名" prop="accountName">
<el-input <el-input
v-model="queryParams.accountName" v-model="queryParams.accountName"
@ -154,7 +154,7 @@
<!-- 添加或修改管理员配置对话框 --> <!-- 添加或修改管理员配置对话框 -->
<el-dialog :title="title" :visible.sync="open" class="common-dialog" width="600px" append-to-body> <el-dialog :title="title" :visible.sync="open" class="common-dialog" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="83px">
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="用户名" prop="accountName"> <el-form-item label="用户名" prop="accountName">

@ -1,5 +1,5 @@
<template> <template>
<el-form ref="form" :model="user" :rules="rules" label-width="80px"> <el-form ref="form" :model="user" :rules="rules" label-width="83px">
<el-form-item label="旧密码" prop="oldPassword"> <el-form-item label="旧密码" prop="oldPassword">
<el-input v-model="user.oldPassword" placeholder="请输入旧密码" type="password" show-password/> <el-input v-model="user.oldPassword" placeholder="请输入旧密码" type="password" show-password/>
</el-form-item> </el-form-item>

@ -1,5 +1,5 @@
<template> <template>
<el-form ref="form" :model="user" :rules="rules" label-width="80px"> <el-form ref="form" :model="user" :rules="rules" label-width="83px">
<el-form-item label="用户昵称" prop="nickName"> <el-form-item label="用户昵称" prop="nickName">
<el-input v-model="user.nickName" maxlength="30" /> <el-input v-model="user.nickName" maxlength="30" />
</el-form-item> </el-form-item>

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="参数名称" prop="configName"> <el-form-item label="参数名称" prop="configName">
<el-input <el-input
v-model="queryParams.configName" v-model="queryParams.configName"
@ -149,7 +149,7 @@
<!-- 添加或修改参数配置对话框 --> <!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <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 ref="form" :model="form" :rules="rules" label-width="83px">
<el-form-item label="参数名称" prop="configName"> <el-form-item label="参数名称" prop="configName">
<el-input v-model="form.configName" placeholder="请输入参数名称" /> <el-input v-model="form.configName" placeholder="请输入参数名称" />
</el-form-item> </el-form-item>

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="字典名称" prop="dictType"> <el-form-item label="字典名称" prop="dictType">
<el-select v-model="queryParams.dictType"> <el-select v-model="queryParams.dictType">
<el-option <el-option
@ -142,7 +142,7 @@
<!-- 添加或修改参数配置对话框 --> <!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <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 ref="form" :model="form" :rules="rules" label-width="83px">
<el-form-item label="字典类型"> <el-form-item label="字典类型">
<el-input v-model="form.dictType" :disabled="true" /> <el-input v-model="form.dictType" :disabled="true" />
</el-form-item> </el-form-item>

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="字典名称" prop="dictName"> <el-form-item label="字典名称" prop="dictName">
<el-input <el-input
v-model="queryParams.dictName" v-model="queryParams.dictName"
@ -159,7 +159,7 @@
<!-- 添加或修改参数配置对话框 --> <!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <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 ref="form" :model="form" :rules="rules" label-width="83px">
<el-form-item label="字典名称" prop="dictName"> <el-form-item label="字典名称" prop="dictName">
<el-input v-model="form.dictName" placeholder="请输入字典名称" /> <el-input v-model="form.dictName" placeholder="请输入字典名称" />
</el-form-item> </el-form-item>

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="表名称" prop="title"> <el-form-item label="表名称" prop="title">
<el-input <el-input
v-model="queryParams.tableName" v-model="queryParams.tableName"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" class="main-search" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" class="main-search" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="操作内容" prop="title"> <el-form-item label="操作内容" prop="title">
<el-input <el-input
v-model="queryParams.keyword" v-model="queryParams.keyword"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="公告标题" prop="noticeTitle"> <el-form-item label="公告标题" prop="noticeTitle">
<el-input <el-input
v-model="queryParams.noticeTitle" v-model="queryParams.noticeTitle"
@ -124,7 +124,7 @@
<!-- 添加或修改公告对话框 --> <!-- 添加或修改公告对话框 -->
<el-dialog :title="title" :visible.sync="open" width="780px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="780px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="83px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="公告标题" prop="noticeTitle"> <el-form-item label="公告标题" prop="noticeTitle">

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="表名称" prop="tableName"> <el-form-item label="表名称" prop="tableName">
<el-input <el-input
v-model="queryParams.tableName" v-model="queryParams.tableName"

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" class="main-search" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="83px">
<el-form-item label="等级名称" prop="name"> <el-form-item label="等级名称" prop="name">
<el-input <el-input
v-model="queryParams.name" v-model="queryParams.name"

@ -11,7 +11,7 @@ const name = process.env.VUE_APP_TITLE || 'fuint会员营销管理系统' // 网
const port = process.env.port || process.env.npm_config_port || 81 // 端口 const port = process.env.port || process.env.npm_config_port || 81 // 端口
const serverUrl = process.env.VUE_APP_SERVER_URL || 'https://www.fuint.cn' const serverUrl = process.env.VUE_APP_SERVER_URL || 'https://www.huamar.com'
// vue.config.js 配置说明 // vue.config.js 配置说明
//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
@ -19,7 +19,7 @@ const serverUrl = process.env.VUE_APP_SERVER_URL || 'https://www.fuint.cn'
module.exports = { module.exports = {
// 部署生产环境和开发环境下的URL。 // 部署生产环境和开发环境下的URL。
// 默认情况下Vue CLI 会假设你的应用是被部署在一个域名的根路径上 // 默认情况下Vue CLI 会假设你的应用是被部署在一个域名的根路径上
// 例如 https://www.fuint.cn/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.fuint.cn/admin/,则设置 baseUrl 为 /admin/。 // 例如 https://www.huamar.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.huamar.com/admin/,则设置 baseUrl 为 /admin/。
publicPath: process.env.VUE_APP_PUBLIC_PATH, publicPath: process.env.VUE_APP_PUBLIC_PATH,
// 在npm run build 或 yarn build 时 生成文件的目录名称要和baseUrl的生产环境路径一致默认dist // 在npm run build 或 yarn build 时 生成文件的目录名称要和baseUrl的生产环境路径一致默认dist
outputDir: 'dist', outputDir: 'dist',

@ -1,123 +1,3 @@
# fuint会员营销系统介绍 后台管理
xinaoadmin
#### 介绍 xinaoadmin
fuint会员营销系统是一套开源的实体店铺会员管理和营销系统。系统基于前后端分离的架构后端采用<b>Java SpringBoot</b> + <b>Mysql</b>,前端基于当前流行的<b>Uniapp</b><b>Element UI</b>支持小程序、h5。主要功能包含电子优惠券、储值卡、实体卡、集次卡计次卡、短信发送、储值卡、会员积分、会员等级权益体系支付收款等会员日常营销工具。本系统适用于各类实体店铺如零售超市、酒吧、酒店、汽车4S店、鲜花店、奶茶店、甜品店、餐饮店、农家乐等是实体店铺会员营销必备的一款利器。
以下是前台的页面展示:
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/g1.png?v=1" alt="前台页面1"></p>
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/g2.png?v=2" alt="前台页面2"></p>
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/g3.png?v=2" alt="前台页面3"></p>
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/g4.png?v=1" alt="前台页面4"></p>
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/g5.png?v=1" alt="前台页面4"></p>
fuint侧重于线下实体店的私域流量的运营同时提供会员端小程序和收银系统的线上线下统一渠道帮助商户降低获客成本。顾客通过扫码支付成为私域流量支付即可成为会员。积分和卡券功能建立起会员等级体系通过消息推送和短信营销方便触达用户。
<p>1、会员运营自动化商家通过日常活动设置如开卡礼设置沉睡唤醒等成为会员后自动给顾客送优惠券让顾客更有黏性提升会员运营效率。</p>
<p>2、打通收银系统和会员营销的壁垒代客下单收银支付即成为会员。</p>
<p>3、会员体系完整化积分兑换、积分转赠、会员等级权益、积分加速、买单折扣。</p>
<p>4、会员卡券齐全储值卡、电子券、优惠券、集次卡、计次卡、实体卡购买并兑换、会员充值、余额支付。</p>
<p>5、线上代客下单收银系统后台管理员可帮助临柜的会员下单、扫码支付。</p>
<p>6、支持手机短信、站内弹框消息、微信订阅消息支持包括发货消息、卡券到期提醒、活动提醒、会员到期提醒、积分余额变动提醒等消息。</p>
<p>小程序前端仓库https://gitee.com/fuint/fuint-uniapp</p>
<b>扫码小程序演示:</b><br>
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/miniapp.png" alt="小程序演示"></p>
<br>
<b>官网演示地址:</b><br>
<p>
1、官网<a target="_blank" href="https://www.fuint.cn">https://www.fuint.cn</a> 点击 -> 系统演示演示账号fuint / 123456<br>
2、swagger接口文档<a target="_blank" href="https://www.fuint.cn/fuint-application/swagger-ui.html">https://www.fuint.cn/fuint-application/swagger-ui.html</a>
</p>
#### 软件架构
后端JAVA SpringBoot + MYSQL Mybatis Plus + Redis
前端采用基于Vue的Uniapp、Element UI前后端分离支持微信小程序、h5等
<p>后台截图:</p>
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/login.png?v=fuint" alt="登录界面"></p>
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/homeV2.png?v=fuint" alt="首页"></p>
前端使用技术<br>
2.1 Vue2<br>
2.2 Uniapp<br>
2.3 Element UI
2.4 Nodejs 14或16版本
后端使用技术<br>
1.1 SpringBoot 2.5<br>
1.2 Mybatis Plus<br>
1.3 Maven<br>
1.4 SpringSecurity<br>
1.5 Druid<br>
1.6 Slf4j<br>
1.7 Fastjson<br>
1.8 JWT<br>
1.9 Redis<br>
1.10 Quartz<br>
1.11 Mysql 5.7或8版<br>
1.12 Swagger UI<br>
#### 安装步骤
推荐软件环境版本jdk 1.8、mysql 5.8
1. 导入db目录下的数据库文件。
2. 修改config目录下的配置文件。
3. 将工程打包把jar包上传并执行。
<p>提示无后端和linux基础的朋友可以使用<b>宝塔</b>部署,非常方便简单。</p>
#### 前台使用说明
1. 会员登录,登录成功后可看到会员的卡券列表。
2. 卡券领取和购买,预存券的充值等。
3. 核销卡券,会员在前台出示二维码,管理员用微信扫一扫即可核销。
4. 卡券转赠,会员可将自己的卡券转赠给其他用户,输入对方的手机号即可完成转赠,获赠的好友会收到卡券赠送的短信。
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/create.png?v=fuint" alt="卡券创建界面"></p>
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/member.png?v=fuint" alt="卡券创建界面"></p>
#### 后台使用
1. 会员管理:会员新增、导入、禁用等。
2. 内容管理:焦点图管理、文章管理等。
3. 卡券管理电子券管理为2层结构即电子券组和电子券。
4. 会员积分:会员积分管理,会员积分的操作,会员积分明细查看。
5. 转赠管理:卡券转赠记录。
6. 短信管理:短信营销功能,已发送的短信列表。
7. 系统配置:配置系统管理员权限等。
8. 店铺管理:支持多店铺模式。
9. 核销管理员:核销人员管理主要包含3个功能核销人员列表、核销人员审核、核销人员信息编辑。
10. 短信模板管理:可配置不同场景和业务的短信内容。
11. 卡券发放:单独发放、批量发放,发放成功后给会员发送短信通知
12. 操作日志主要针对电子券系统后台的一些关键操作进行日志记录,方便排查相关操作人的行为等问题。
13. 发券记录主要根据发券的实际操作情况来记录,分为单用户发券和批量发券,同时可针对该次发券记录进行作废操作。
14. 代客下单、收银功能。
<p>卡券营销:</p>
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/coupon-list.png?v=fuint" alt="卡券列表"></p>
<p>收银代客下单功能:店员角色登录后台,从首页的“下单首页”菜单可进入代客收银下单界面,完成代客下单收银的流程。</p>
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/cashier.png?v=fuint3.0.8" alt="收银界面"></p>
<p>发起结算:</p>
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/cashier-1.png?v=fuint3.0.8" alt="收银结算"></p>
#### 开发计划
1. 完善的报表统计;
2. 分享助力、分享领券、分享获得积分;
3. 员工提成、分销功能;
4. 店铺结算功能;
5. 更多营销工具,比如签到等。
#### 允许使用范围:
1. 允许个人学习使用
2. 允许用于毕业设计、论文参考代码
3. 推荐Watch、Star项目获取项目第一时间更新同时也是对项目最好的支持
4. 希望大家多多支持原创软件
5. 请勿去除版权标签,要商用请购买源码授权(非常便宜),感谢理解!
不足和待完善之处请谅解!源码仅供学习交流,更多功能欢迎进群咨询讨论,或需安装帮助请联系我们(<b>麻烦先点star</b>)。<br>
官方网站https://www.fuint.cn <br>
开源不易,感谢支持!<br>
<b>作者wxfsq_better</b><br>
<p><img src="https://fuint-cn.oss-cn-shenzhen.aliyuncs.com/screenshots/qr.png" alt="公众号二维码"></p>
特别鸣谢:<br>
Mybaits Plus: https://github.com/baomidou/mybatis-plus<br>
Vue: https://github.com/vuejs/vue<br>
Element UI: https://element.eleme.cn

@ -29,7 +29,7 @@ spring.redis.timeout=0
system.name = fuint\u4F1A\u5458\u8425\u9500\u7BA1\u7406\u7CFB\u7EDF system.name = fuint\u4F1A\u5458\u8425\u9500\u7BA1\u7406\u7CFB\u7EDF
# \u524D\u7AEFh5\u5730\u5740 # \u524D\u7AEFh5\u5730\u5740
website.url=https://www.fuint.cn/h5/ website.url=https://www.huamar.com/h5/
# \u4E0A\u4F20\u56FE\u7247\u672C\u5730\u5730\u5740 # \u4E0A\u4F20\u56FE\u7247\u672C\u5730\u5730\u5740
images.root=D:/code/XinAoDTS/fuintBackend/fuint-application/target/classes images.root=D:/code/XinAoDTS/fuintBackend/fuint-application/target/classes
@ -107,7 +107,7 @@ alipay.appId = \u5E94\u7528\u7F16\u53F7
alipay.privateKey = \u5E94\u7528\u79C1\u94A5 alipay.privateKey = \u5E94\u7528\u79C1\u94A5
alipay.publicKey = \u652F\u4ED8\u5B9D\u516C\u94A5\uFF08\u901A\u8FC7\u5E94\u7528\u516C\u94A5\u4E0A\u4F20\u5230\u652F\u4ED8\u5B9D\u5F00\u653E\u5E73\u53F0\u6362\u53D6\u652F\u4ED8\u5B9D\u516C\u94A5\uFF09 alipay.publicKey = \u652F\u4ED8\u5B9D\u516C\u94A5\uFF08\u901A\u8FC7\u5E94\u7528\u516C\u94A5\u4E0A\u4F20\u5230\u652F\u4ED8\u5B9D\u5F00\u653E\u5E73\u53F0\u6362\u53D6\u652F\u4ED8\u5B9D\u516C\u94A5\uFF09
alipay.serverUrl=https://openapi.alipay.com/gateway.do alipay.serverUrl=https://openapi.alipay.com/gateway.do
alipay.domain=https://www.fuint.cn/fuint-application/clientApi/pay/aliPayCallback alipay.domain=https://www.huamar.com/fuint-application/clientApi/pay/aliPayCallback
################ \u5FAE\u4FE1\u8BA2\u9605\u6A21\u677F\u6D88\u606F\u914D\u7F6E ###################### ################ \u5FAE\u4FE1\u8BA2\u9605\u6A21\u677F\u6D88\u606F\u914D\u7F6E ######################
weixin.subMessage.orderCreated=[{'key':'time', 'name':'\u8BA2\u5355\u65F6\u95F4'},{'key':'orderSn', 'name':'\u8BA2\u5355\u53F7'},{'key':'remark', 'name':'\u5907\u6CE8\u4FE1\u606F'}] weixin.subMessage.orderCreated=[{'key':'time', 'name':'\u8BA2\u5355\u65F6\u95F4'},{'key':'orderSn', 'name':'\u8BA2\u5355\u53F7'},{'key':'remark', 'name':'\u5907\u6CE8\u4FE1\u606F'}]

@ -29,7 +29,7 @@ spring.redis.timeout=0
system.name = fuint会员营销管理系统 system.name = fuint会员营销管理系统
# 前端h5地址 # 前端h5地址
website.url=https://www.fuint.cn/h5/ website.url=https://www.huamar.com/h5/
# 上传图片本地地址 # 上传图片本地地址
images.root=/www/wwwroot/www.xxx.com images.root=/www/wwwroot/www.xxx.com
@ -89,14 +89,14 @@ wxpay.appSecret = 76a538bfa5b55a4564d5f2be5540
wxpay.mchId=1636980812 wxpay.mchId=1636980812
wxpay.apiV2=34354320201030y323e432342343 wxpay.apiV2=34354320201030y323e432342343
wxpay.certPath=/usr/local/fuint/cert/apiclient_cert.p12 wxpay.certPath=/usr/local/fuint/cert/apiclient_cert.p12
wxpay.domain=https://www.fuint.cn/fuint-application wxpay.domain=https://www.huamar.com/fuint-application
################## 支付宝支付相关配置 ###################### ################## 支付宝支付相关配置 ######################
alipay.appId = 应用编号 alipay.appId = 应用编号
alipay.privateKey = 应用私钥 alipay.privateKey = 应用私钥
alipay.publicKey = 支付宝公钥(通过应用公钥上传到支付宝开放平台换取支付宝公钥) alipay.publicKey = 支付宝公钥(通过应用公钥上传到支付宝开放平台换取支付宝公钥)
alipay.serverUrl=https://openapi.alipay.com/gateway.do alipay.serverUrl=https://openapi.alipay.com/gateway.do
alipay.domain=https://www.fuint.cn/fuint-application/clientApi/pay/aliPayCallback alipay.domain=https://www.huamar.com/fuint-application/clientApi/pay/aliPayCallback
################ 微信订阅模板消息配置 ###################### ################ 微信订阅模板消息配置 ######################
weixin.subMessage.orderCreated=[{'key':'time', 'name':'订单时间'},{'key':'orderSn', 'name':'订单号'},{'key':'remark', 'name':'备注信息'}] weixin.subMessage.orderCreated=[{'key':'time', 'name':'订单时间'},{'key':'orderSn', 'name':'订单号'},{'key':'remark', 'name':'备注信息'}]

File diff suppressed because one or more lines are too long

@ -647,7 +647,7 @@ insert into `mt_goods`(`ID`,`TYPE`,`MERCHANT_ID`,`STORE_ID`,`NAME`,`CATE_ID`,`G
(3,'product',1,0,'可爱旅行大号牙刷杯两个装',3,'92342342342','N','/static/uploadImages/20220110/56e306c812f240f89c0ed96ab8f94ad0.jpg','[\"/static/uploadImages/20220110/56e306c812f240f89c0ed96ab8f94ad0.jpg\",\"/static/uploadImages/20220110/56e306c812f240f89c0ed96ab8f94ad0.jpg\",\"/static/uploadImages/20220110/d39f84568b9746f89d9f6a368b8067c4.jpg\"]',99.00,120.00,6000,1.00,'',0,1532,'超级实惠','Y','Y',1,'<p><br></p>','2021-10-14 01:08:45','2023-09-22 13:38:42','fuint','A'), (3,'product',1,0,'可爱旅行大号牙刷杯两个装',3,'92342342342','N','/static/uploadImages/20220110/56e306c812f240f89c0ed96ab8f94ad0.jpg','[\"/static/uploadImages/20220110/56e306c812f240f89c0ed96ab8f94ad0.jpg\",\"/static/uploadImages/20220110/56e306c812f240f89c0ed96ab8f94ad0.jpg\",\"/static/uploadImages/20220110/d39f84568b9746f89d9f6a368b8067c4.jpg\"]',99.00,120.00,6000,1.00,'',0,1532,'超级实惠','Y','Y',1,'<p><br></p>','2021-10-14 01:08:45','2023-09-22 13:38:42','fuint','A'),
(4,'product',1,0,'筷子便携餐盒3件套',1,'6914068026176','N','/static/uploadImages/20220110/31cbf7ad0ef442a4b10dcefc24db0662.jpg','[\"/static/uploadImages/20220110/31cbf7ad0ef442a4b10dcefc24db0662.jpg\"]',80.00,99.00,4010,1.00,'',0,1325,'一体成型','Y','N',1,'<p>测试商品</p>','2021-10-14 05:46:23','2023-07-28 15:13:50','fuint','A'), (4,'product',1,0,'筷子便携餐盒3件套',1,'6914068026176','N','/static/uploadImages/20220110/31cbf7ad0ef442a4b10dcefc24db0662.jpg','[\"/static/uploadImages/20220110/31cbf7ad0ef442a4b10dcefc24db0662.jpg\"]',80.00,99.00,4010,1.00,'',0,1325,'一体成型','Y','N',1,'<p>测试商品</p>','2021-10-14 05:46:23','2023-07-28 15:13:50','fuint','A'),
(5,'product',1,0,'简壳 一拖三可收纳伸缩充电线',2,'6922577729501','N','/static/uploadImages/20220110/856dbc96197e4782b4febb7a6e671bcb.jpg','[\"/static/uploadImages/20220110/856dbc96197e4782b4febb7a6e671bcb.jpg\"]',0.10,100.00,3877,0.00,'',0,1168,'可伸缩','Y','Y',1,'<p><br></p>','2021-10-14 05:47:31','2023-07-24 19:00:45','fuint','A'), (5,'product',1,0,'简壳 一拖三可收纳伸缩充电线',2,'6922577729501','N','/static/uploadImages/20220110/856dbc96197e4782b4febb7a6e671bcb.jpg','[\"/static/uploadImages/20220110/856dbc96197e4782b4febb7a6e671bcb.jpg\"]',0.10,100.00,3877,0.00,'',0,1168,'可伸缩','Y','Y',1,'<p><br></p>','2021-10-14 05:47:31','2023-07-24 19:00:45','fuint','A'),
(6,'product',1,0,'抽绳垃圾袋16只*4卷',1,'6975486820418','Y','/static/uploadImages/20220110/6083071182cd48afa6c2b9e23f181832.jpg','[\"/static/uploadImages/20220110/6083071182cd48afa6c2b9e23f181832.jpg\",\"/static/uploadImages/20220110/ee5c67ed338442fc90e5c647ccbfd381.jpg\"]',18.00,20.00,109528,1.00,'',11,4209,'厨房必备小帮手','Y','Y',0,'<p><img src=\"https://www.fuint.cn/fuint-application/static/uploadImages/20220110/6083071182cd48afa6c2b9e23f181832.jpg\"></p><p><img src=\"https://www.fuint.cn/fuint-application/static/uploadImages/20220110/ee5c67ed338442fc90e5c647ccbfd381.jpg\"></p>','2021-10-14 05:48:43','2023-07-31 20:00:49','fuint','A'); (6,'product',1,0,'抽绳垃圾袋16只*4卷',1,'6975486820418','Y','/static/uploadImages/20220110/6083071182cd48afa6c2b9e23f181832.jpg','[\"/static/uploadImages/20220110/6083071182cd48afa6c2b9e23f181832.jpg\",\"/static/uploadImages/20220110/ee5c67ed338442fc90e5c647ccbfd381.jpg\"]',18.00,20.00,109528,1.00,'',11,4209,'厨房必备小帮手','Y','Y',0,'<p><img src=\"https://www.huamar.com/fuint-application/static/uploadImages/20220110/6083071182cd48afa6c2b9e23f181832.jpg\"></p><p><img src=\"https://www.huamar.com/fuint-application/static/uploadImages/20220110/ee5c67ed338442fc90e5c647ccbfd381.jpg\"></p>','2021-10-14 05:48:43','2023-07-31 20:00:49','fuint','A');
/*Table structure for table `mt_goods_cate` */ /*Table structure for table `mt_goods_cate` */

@ -7,7 +7,7 @@ import java.util.Map;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
public class Constants { public class Constants {

@ -22,7 +22,7 @@ import org.springframework.stereotype.Component;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Component // 声明组件 @Component // 声明组件
@Aspect // 声明切面 @Aspect // 声明切面

@ -7,7 +7,7 @@ import org.springframework.stereotype.Component;
/** /**
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Component @Component
@Aspect @Aspect

@ -36,7 +36,7 @@ import java.util.Map;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Component @Component
@Aspect @Aspect

@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
* Bean * Bean
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Component @Component
@PropertySource("file:${env.properties.path}/${env.profile}/application.properties") @PropertySource("file:${env.properties.path}/${env.profile}/application.properties")

@ -6,7 +6,7 @@ import com.alibaba.fastjson.JSON;
* H5Bean * H5Bean
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
public class H5SceneInfo { public class H5SceneInfo {
private H5 h5_info; private H5 h5_info;

@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
* Bean * Bean
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Component @Component
@PropertySource("file:${env.properties.path}/${env.profile}/application.properties") @PropertySource("file:${env.properties.path}/${env.profile}/application.properties")

@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
* Bean * Bean
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Component @Component
@PropertySource("file:${env.properties.path}/${env.profile}/application.properties") @PropertySource("file:${env.properties.path}/${env.profile}/application.properties")

@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
* V3Bean * V3Bean
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Component @Component
@PropertySource("file:${env.properties.path}/${env.profile}/application.properties") @PropertySource("file:${env.properties.path}/${env.profile}/application.properties")

@ -13,7 +13,7 @@ import java.util.Properties;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Configuration @Configuration
public class CaptchaConfig { public class CaptchaConfig {

@ -4,7 +4,7 @@ package com.fuint.common.config;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
public class Message { public class Message {
public static final String PARAM_ERROR = "参数出错"; public static final String PARAM_ERROR = "参数出错";

@ -13,7 +13,7 @@ import org.springframework.context.annotation.Configuration;
* MybatisPlus * MybatisPlus
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Configuration @Configuration
@MapperScan({"com.fuint.repository.**.mapper"}) @MapperScan({"com.fuint.repository.**.mapper"})

@ -18,7 +18,7 @@ import org.springframework.session.data.redis.config.annotation.web.http.EnableR
* redis * redis
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Configuration @Configuration
@EnableCaching @EnableCaching

@ -14,7 +14,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter { public class SecurityConfig extends WebSecurityConfigurerAdapter {

@ -15,7 +15,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
* Swagger * Swagger
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Configuration @Configuration
@EnableSwagger2 @EnableSwagger2
@ -36,8 +36,8 @@ public class SwaggerConfig implements WebMvcConfigurer {
return new ApiInfoBuilder() return new ApiInfoBuilder()
.title("fuint会员营销系统接口文档") .title("fuint会员营销系统接口文档")
.description("fuint会员营销系统接口文档“/clientApi”目录接口为会员端相关接口“/backendApi”目录接口为后台管理端相关接口。") .description("fuint会员营销系统接口文档“/clientApi”目录接口为会员端相关接口“/backendApi”目录接口为后台管理端相关接口。")
.termsOfServiceUrl("https://www.fuint.cn/") .termsOfServiceUrl("https://www.huamar.com/")
.contact(new Contact("海南延禾信息技术有限公司","https://www.fuint.cn/", "fushengqian@qq.com")) .contact(new Contact("海南延禾信息技术有限公司","https://www.huamar.com/", "fushengqian@qq.com"))
.version("1.0") .version("1.0")
.build(); .build();
} }

@ -16,7 +16,7 @@ import java.util.concurrent.TimeUnit;
* web * web
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Configuration @Configuration
public class WebConfig extends WebMvcConfigurationSupport { public class WebConfig extends WebMvcConfigurationSupport {

@ -12,7 +12,7 @@ import java.util.List;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -9,7 +9,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
* TreeSelect * TreeSelect
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
public class TreeSelect implements Serializable { public class TreeSelect implements Serializable {

@ -10,7 +10,7 @@ import java.util.Date;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -10,7 +10,7 @@ import java.util.Date;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Data @Data
public class AccountInfo implements Serializable { public class AccountInfo implements Serializable {

@ -9,7 +9,7 @@ import java.io.Serializable;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -8,7 +8,7 @@ import lombok.Setter;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -14,7 +14,7 @@ import java.util.Date;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -12,7 +12,7 @@ import java.util.Date;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -10,7 +10,7 @@ import java.util.Map;
* Body * Body
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -11,7 +11,7 @@ import java.util.Date;
/** /**
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Data @Data
public class CommissionCashDto implements Serializable { public class CommissionCashDto implements Serializable {

@ -13,7 +13,7 @@ import java.util.Date;
/** /**
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Data @Data
public class CommissionLogDto implements Serializable { public class CommissionLogDto implements Serializable {

@ -9,7 +9,7 @@ import java.util.List;
/** /**
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Data @Data
public class CommissionRuleDto implements Serializable { public class CommissionRuleDto implements Serializable {

@ -8,7 +8,7 @@ import java.math.BigDecimal;
/** /**
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Data @Data
public class CommissionRuleItemDto implements Serializable { public class CommissionRuleItemDto implements Serializable {

@ -16,7 +16,7 @@ import java.util.Date;
* dto * dto
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -9,7 +9,7 @@ import java.util.List;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -9,7 +9,7 @@ import java.math.BigDecimal;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Data @Data
public class CouponDto implements Serializable { public class CouponDto implements Serializable {

@ -8,7 +8,7 @@ import lombok.Setter;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -8,7 +8,7 @@ import lombok.Setter;
* dto * dto
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -12,7 +12,7 @@ import java.math.BigDecimal;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -13,7 +13,7 @@ import java.util.Date;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -12,7 +12,7 @@ import lombok.Setter;
* DTO * DTO
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -14,7 +14,7 @@ import java.util.List;
* *
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

@ -18,7 +18,7 @@ import java.util.List;
* DTO * DTO
* *
* Created by FSQ * Created by FSQ
* CopyRight https://www.fuint.cn * CopyRight https://www.huamar.com
*/ */
@Getter @Getter
@Setter @Setter

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save