Browse Source

2023-12-8

master
guoxing 2 years ago
parent
commit
8fc32205c4
  1. 117
      src/api/corporateCardSet/corporateCardSet.js
  2. 21
      src/layout/components/Sidebar/index.vue
  3. 19
      src/router/index.js
  4. 563
      src/views/marketingCard/corporateCardSet.vue
  5. 8
      src/views/marketingCard/packageDetails.vue
  6. 4
      src/views/marketingCard/pickupCardSet.vue
  7. 53
      src/views/order/index.vue

117
src/api/corporateCardSet/corporateCardSet.js

@ -0,0 +1,117 @@
import request from '@/utils/request'
export default {
// 礼包设置
// 获取礼包列表
giftBagListPage: function(data) {
return request({
url: '/lpkgiftbag/giftBagListPage',
method: 'post',
data: data
});
},
// 获取发放网点列表
bankList: function(data) {
return request({
url: '/lpkbank/listAll',
method: 'get',
data: data
});
},
// 礼包选择商品时,返回的商品列表
getGoods: function(data) {
return request({
url: '/lpkgoods/getGoods',
method: 'post',
data: data
});
},
// 新增、保存礼包
saveGiftBag: function(data) {
return request({
url: '/lpkgiftbag/saveGiftBag',
method: 'post',
data: data
});
},
// 初始化礼包
giftBagInit: function(data) {
return request({
url: '/lpkgiftbag/giftBagInit/'+data,
method: 'get'
});
},
// 企业卡设置
// 企业卡发行记录
recordListPage: function(data) {
return request({
url: '/empcardbuildrecord/recordListPage',
method: 'post',
data: data
});
},
// 发行记录详细
recordDetails: function(data) {
return request({
url: '/empcard/recordDetails',
method: 'post',
data: data
});
},
// 导出
exportExcel: function(data) {
return request({
url: '/empcard/exportExcel',
method: 'post',
responseType: 'blob', // 表明返回服务器返回的数据类型
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
// 获取提货卡页面 礼包列表
giftBagList: function(data) {
return request({
url: '/lpkgiftbag/giftBagList',
method: 'get',
data: data
});
},
// 发行企业卡
generateCard: function(data) {
return request({
url: '/empcard/generateCard',
method: 'post',
data: data
});
},
// 发放提货卡
cardGrant: function(data) {
return request({
url: '/lpkgiftcard/cardGrant',
method: 'post',
data: data
});
},
}

21
src/layout/components/Sidebar/index.vue

@ -69,16 +69,7 @@
name: "/marketingCard/index",
path: "/marketingCard/index",
},
// {
// alwaysShow: true,
// component: "packageDetails",
// meta: {
// icon: "el-icon-help",
// title: "",
// },
// name: "/marketingCard/packageDetails",
// path: "/marketingCard/packageDetails",
// },
{
alwaysShow: true,
component: "pickupCardSet",
@ -89,6 +80,16 @@
name: "/marketingCard/pickupCardSet",
path: "/marketingCard/pickupCardSet",
},
{
alwaysShow: true,
component: "corporateCardSet",
meta: {
icon: "el-icon-help",
title: "企业卡设置",
},
name: "/marketingCard/corporateCardSet",
path: "/marketingCard/corporateCardSet",
},
// {
// alwaysShow: true,
// component: "grantRecords",

19
src/router/index.js

@ -81,15 +81,7 @@ export const constantRoutes = [
noCache: true
}
},
// {
// path: '/marketingCard/packageDetails',
// component: () => import('@/views/marketingCard/packageDetails.vue'),
// name: 'packageDetails',
// meta: {
// title: '礼包奖品明细',
// noCache: true
// }
// },
{
path: '/marketingCard/pickupCardSet',
component: () => import('@/views/marketingCard/pickupCardSet.vue'),
@ -99,6 +91,15 @@ export const constantRoutes = [
noCache: true
}
},
{
path: '/marketingCard/corporateCardSet',
component: () => import('@/views/marketingCard/corporateCardSet.vue'),
name: 'corporateCardSet',
meta: {
title: '企业卡设置',
noCache: true
}
},
// {
// path: '/marketingCard/grantRecords',
// component: () => import('@/views/marketingCard/grantRecords.vue'),

563
src/views/marketingCard/corporateCardSet.vue

@ -0,0 +1,563 @@
<template>
<div>
<el-tabs v-model="activeName" class="my-tabs" type="card" @tab-click="handleClick" style="margin-top: 20px;">
<el-tab-pane label="企业卡记录" name="roleList">
<div class="main-content">
<div class="container" v-show="viewState == 1">
<div class="tab-header">
<el-form :inline="true" :model="page.params" class="demo-form-inline">
<el-row :gutter="20">
<el-col :span="21">
<el-form-item label="发行开始日期">
<el-date-picker v-model="page.params.startDate" @change="selectTime1"
type="date" placeholder="选择日期" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" style="width: 200px;">
</el-date-picker>
</el-form-item>
<el-form-item label="发行结束日期">
<el-date-picker v-model="page.params.endDate" @change="selectTime2"
type="date" placeholder="选择日期" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" style="width: 200px;">
</el-date-picker>
</el-form-item>
<el-button type="primary" @click="getPageList()"> </el-button>
</el-col>
</el-row>
</el-form>
</div>
<el-table :data="tableData" border style="width: 100%; margin-top: 20px;"
:row-style="{height: '40px'}">
<el-table-column label="序号" width="70px" type="index" align="center">
</el-table-column>
<el-table-column label="操作" width="150px" align="center">
<template slot-scope="scope">
<!-- <el-button type="primary" size="mini" @click="editRow(scope.row)">
发放
</el-button> -->
<el-button type="primary" size="mini" @click="showRow(scope.row)">
明细
</el-button>
</template>
</el-table-column>
<el-table-column prop="startNumber" label="序列起始号" align="center">
</el-table-column>
<el-table-column prop="endNumber" label="序列结束号" align="center">
</el-table-column>
<el-table-column prop="buildDate" label="发行时间" align="center">
</el-table-column>
<el-table-column prop="countNumber" label="发行总数" align="center">
</el-table-column>
<el-table-column prop="bagName" label="绑定礼包" align="center">
</el-table-column>
<!-- <el-table-column prop="bagName" label="发放数量" align="center">
</el-table-column> -->
</el-table>
<pagination :total="page.total" :page.sync="page.current" :limit.sync="page.size"
@pagination="pagination" style="padding-bottom: 100px;" />
</div>
<div class="container" v-show="viewState == 2">
<div class="tab-header">
<el-form :inline="true" :model="listQuery.params" class="demo-form-inline">
<el-row :gutter="20">
<el-col :span="20">
<el-form-item label="卡片序列号">
<el-input v-model="listQuery.params.number" placeholder="" clearable />
</el-form-item>
<el-form-item label="卡片状态">
<el-select v-model="listQuery.params.state" placeholder="请选择">
<el-option v-for="(item,i) in stateList" :key="i" :label="item.name"
:value="item.sid">
</el-option>
</el-select>
</el-form-item>
<el-button type="primary" @click="getPageList2()"> </el-button>
<el-button type="primary" @click="returnView()"> </el-button>
</el-col>
<el-col :span="4">
<el-form-item style="float: right;">
<div
style="display: flex;flex-direction: row;align-items: center;justify-content: space-between;">
<el-button type="primary" @click="exportExcel()">导出Excel</el-button>
<el-button type="primary" @click="downloadQR()"
style="margin-left: 10px;">下载二维码</el-button>
</div>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<el-table :data="tableData2" border style="width: 100%; margin-top: 20px;"
:row-style="{height: '40px'}">
<el-table-column label="序号" width="70px" type="index" align="center">
</el-table-column>
<!-- <el-table-column label="操作" width="150px" align="center">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="editRow(scope.row)">
明细
</el-button>
</template>
</el-table-column> -->
<el-table-column prop="serialNumber" label="序列号" align="center">
</el-table-column>
<el-table-column prop="code" label="卡号" align="center">
</el-table-column>
<el-table-column prop="codeKey" label="秘钥" align="center">
</el-table-column>
<el-table-column prop="state" label="卡片状态" align="center">
</el-table-column>
<!-- <el-table-column prop="name" label="发放时间" align="center">
</el-table-column>
<el-table-column prop="buildDate" label="发放网点" align="center">
</el-table-column> -->
</el-table>
<pagination :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size"
@pagination="pagination2" style="padding-bottom: 100px;" />
</div>
</div>
</el-tab-pane>
<el-tab-pane label="发行企业卡" name="addrole">
<div class="listconadd">
<el-card class="box-card">
<div class="item">
<span class="item_text">区域编码</span>
<el-input v-model="formobj.cardArea" placeholder="" class="item_input"
oninput="value=value.replace(/[^0-9]/g,'')" maxlength="2" clearable />
</div>
<div class="item">
<span class="item_text">券卡数量</span>
<el-input v-model="formobj.num" placeholder="" class="item_input"
oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" clearable />
</div>
<div class="item">
<span class="item_text">选择礼包</span>
<el-select v-model="formobj.giftbagSid" filterable class="item_input" clearable
placeholder="请选择" style="width:100%" @change="giftPackSelect">
<el-option v-for="item in giftPackList" :key="item.sid" :label="item.name"
:value="item.sid">
</el-option>
</el-select>
</div>
<div
style="width: 100%;display: flex;flex-direction: row;justify-content: center;margin-top: 20px;">
<span
style="background: #018AD2; color: #fff;padding: 5px 15px;border-radius: 5px;font-size: 16px;"
@click="saveOrUpdate">发行</span>
</div>
</el-card>
</div>
</el-tab-pane>
</el-tabs>
<el-dialog title="发放信息" :visible.sync="editDialog" width="30%" :before-close="banClose">
<table class="e-table" cellspacing="0">
<tr>
<td>起始序列号</td>
<td> <!-- @change="changeParentSid" -->
<el-input v-model="from.start" style="width:100%" oninput="value=value.replace(/[^0-9]/g,'')"
@input="input1"></el-input>
</td>
</tr>
<tr>
<td>结束序列号</td>
<td>
<el-input v-model="from.end" style="width:100%" oninput="value=value.replace(/[^0-9]/g,'')"
@input="input2"></el-input>
</td>
</tr>
<tr>
<td>发放网点</td>
<td>
<el-select v-model="from.bankSid" filterable clearable placeholder="请选择" style="width:100%"
@change="bankSelect">
<el-option v-for="item in bankList" :key="item.sid" :label="item.name" :value="item.sid">
</el-option>
</el-select>
</td>
</tr>
</table>
<div style="margin-top: 20px; text-align: center;">
<el-button type="primary" @click="save()"> </el-button>
<el-button @click="banClose"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import req from '@/api/corporateCardSet/corporateCardSet.js'
export default {
data() {
return {
viewState: 1,
page: {
total: 0, //
current: 1, //
size: 10, //
params: {
startDate: '',
endDate: '',
},
},
tableData: [],
tableData2: [],
listQuery: {
total: 0, //
current: 1, //
size: 10, //
params: {
sid: "",
number: '',
state: '',
},
},
activeName: 'roleList',
formobj: {
cardArea: "",
num: '',
giftbagSid: ""
},
giftPackList: [],
stateList: [{
name: "全部",
sid: ""
}, {
name: "未绑定用户",
sid: "2"
}
],
recordId: '',
editDialog: false,
from: {
start: "",
end: "",
bankSid: ""
},
bankList: []
}
},
created() {
this.getPageList()
this.getBankList()
},
methods: {
handleClick(tab, event) {
this.viewState = 1
this.listQuery = {
total: 0, //
current: 1, //
size: 10, //
params: {
sid: "",
number: '',
state: '',
},
}
if (tab.name == 'addrole') {
this.giftBagList()
} else {
this.getPageList()
}
},
pagination(val) { //
this.page.current = val.pageNum
this.page.size = val.pageSize
this.getPageList(this.page)
},
pagination2(val) { //
this.listQuery.current = val.pageNum
this.listQuery.size = val.pageSize
this.getPageList2(this.listQuery)
},
selectTime1(val) {
console.log('selectTime1:', val)
this.page.params.startDate = val
},
selectTime2(val) {
console.log('selectTime2:', val)
this.page.params.endDate = val
},
getPageList() {
req.recordListPage(this.page)
.then(resp => {
console.log('>>>>>>>>>getPageList', resp.data)
this.tableData = resp.data.records
this.page.total = resp.data.total
})
.catch(() => {})
},
getPageList2() {
req.recordDetails(this.listQuery)
.then(resp => {
console.log('>>>>>>>>>recordDetails', resp.data)
this.tableData2 = resp.data.records
this.recordId = resp.data.records[0].recordId
this.listQuery.total = resp.data.total
})
.catch(() => {
})
},
editRow(row) {
this.editDialog = true
},
showRow(row) {
this.listQuery.params.sid = row.sid
this.viewState = 2
req.recordDetails(this.listQuery)
.then(resp => {
console.log('>>>>>>>>>recordDetails', resp.data)
this.tableData2 = resp.data.records
this.recordId = resp.data.records[0].recordId
this.listQuery.total = resp.data.total
})
.catch(() => {
})
},
returnView() {
this.tableData2 = []
this.viewState = 1
this.listQuery = {
total: 0, //
current: 1, //
size: 10, //
params: {
sid: "",
number: '',
state: '',
},
}
},
exportExcel() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
this.listQuery.params.serialNumber = '',
this.listQuery.params.state = '',
req.exportExcel(this.listQuery.params).then((resp) => {
loading.close()
const blob = new Blob([resp], {
type: 'application/vnd.ms-excel'
})
const fileName = '企业卡明细列表(批次号_' + this.recordId + ').xls'
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'nonde'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
}).catch(() => {
loading.close()
})
},
downloadQR() {
this.$message({
showClose: true,
type: 'success',
message: '功能暂未完善...'
})
},
giftBagList() {
req.giftBagList()
.then(resp => {
console.log('>>>>>>>>>giftBagList', resp.data)
this.giftPackList = resp.data
})
.catch(() => {})
},
giftPackSelect(val) {
console.log('>>>>>>>>>giftPackSelect', val)
this.formobj.giftbagSid = val
},
saveOrUpdate() {
console.log('>>>>>>>>>saveOrUpdate', this.formobj)
req.generateCard(this.formobj)
.then(resp => {
if (resp.success) {
this.$message({
showClose: true,
type: 'success',
message: resp.msg
})
this.handleReturn('true')
} else {
// resp.code
}
})
.catch(() => {})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
cardArea: "",
num: '',
giftbagSid: ""
}
this.$emit('doback')
},
getBankList() {
req.bankList()
.then(resp => {
console.log('>>>>>>>>>getBankList', resp.data)
this.bankList = resp.data
})
.catch(() => {})
},
input1(val) {
console.log("input1》》》》", val)
},
input2(val) {
console.log("input2》》》》", val)
},
bankSelect(val) {
console.log("bankSelect》》》》", val)
const choose = this.bankList.filter((item) => item.sid === val)
this.from.bankSid = choose[0].sid
},
save() {
console.log("save》》》》", this.from)
req.cardGrant(this.from)
.then(resp => {
this.$message({
showClose: true,
type: 'success',
message: resp.msg
})
this.editDialog = false
this.from = {
start: "",
end: "",
bankSid: ""
}
this.getPageList()
})
.catch(() => {})
},
banClose() {
this.from = {
start: "",
end: "",
bankSid: ""
}
this.editDialog = false
},
}
}
</script>
<style lang="scss">
.box-card {
margin-left: 60px;
margin-right: 60px;
min-width: 70%;
margin-top: 20px;
margin-bottom: 50px;
.item {
display: flex;
flex-direction: row;
align-items: center;
margin-top: 15px;
height: 40px;
line-height: 40px;
.item_text {
flex: 0.8;
font-size: 18px;
text-align: right;
}
.item_input {
flex: 4;
font-size: 16px;
margin-left: 10px;
margin-right: 80px;
}
.item_left_input {
width: 20%;
}
.item_left_text {
height: 30px;
margin-left: 20px;
line-height: 30px;
color: #018AD2;
padding: 0px 15px;
border: 1.5px solid #018AD2;
border-radius: 5px;
}
.item_right {
flex: 1;
justify-items: center;
.item_right_list_text {
font-size: 16px;
}
.item_right_list_delect {
color: #5E94FF;
margin-left: 20px;
font-size: 16px;
text-decoration: underline;
}
}
}
}
</style>

8
src/views/marketingCard/packageDetails.vue

@ -1,8 +0,0 @@
<template>
</template>
<script>
</script>
<style>
</style>

4
src/views/marketingCard/pickupCardSet.vue

@ -53,8 +53,8 @@
</el-table-column>
<el-table-column prop="bagName" label="绑定礼包" align="center">
</el-table-column>
<el-table-column prop="bagName" label="发放数量" align="center">
</el-table-column>
<!-- <el-table-column prop="bagName" label="发放数量" align="center">
</el-table-column> -->
</el-table>
<pagination :total="page.total" :page.sync="page.current" :limit.sync="page.size"

53
src/views/order/index.vue

@ -9,12 +9,19 @@
</el-button>
<div v-show="isSearchShow" class="search">
<el-form :inline="true" class="tab-header">
<el-form-item label="预约日期">
<el-form-item label="预约开始日期">
<el-date-picker v-model="page.params.startDate" @change="selectTime1" type="date"
placeholder="选择日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
style="width: 200px;">
</el-date-picker>
</el-form-item>
<el-form-item label="预约结束日期">
<el-date-picker v-model="page.params.endDate" @change="selectTime2" type="date"
placeholder="选择日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
style="width: 200px;">
</el-date-picker>
</el-form-item>
<el-form-item label="提货门店">
@ -118,7 +125,8 @@
current: 1, //
size: 10, //
params: {
startDate:getBeforeDate(-2),
startDate: "",
endDate: "",
store: ""
},
},
@ -159,6 +167,12 @@
console.log('selectTime1:', val)
this.page.params.startDate = val
},
selectTime2(val) {
console.log('selectTime2:', val)
this.page.params.endDate = val
},
giftPackSelect(val) {
@ -208,7 +222,8 @@
size: 10,
total: 0,
params: {
startDate: etBeforeDate(-2),
startDate: "",
endDate: "",
store: ""
},
}
@ -237,23 +252,23 @@
})
req.exportExcel(this.page).then((resp) => {
loading.close()
const blob = new Blob([resp], {
type: 'application/vnd.ms-excel'
})
const fileName = '订单明细_' + this.page.params.startDate + '.xls'
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'nonde'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
}).catch(() => {
loading.close()
req.exportExcel(this.page).then((resp) => {
loading.close()
const blob = new Blob([resp], {
type: 'application/vnd.ms-excel'
})
const fileName = '订单明细_' + this.page.params.startDate + '.xls'
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'nonde'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
}).catch(() => {
loading.close()
})
},

Loading…
Cancel
Save