parent
af73845fe9
commit
f72f6ac234
@ -1,54 +0,0 @@
|
|||||||
import request from '@/utils/request'
|
|
||||||
|
|
||||||
// 新增班级学员
|
|
||||||
export function addClaStu(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/sc/course/cla/stu/add/addScCourseClaStu',
|
|
||||||
method: 'post',
|
|
||||||
data: data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增学员班级
|
|
||||||
export function addStuCla(data) {
|
|
||||||
return request({
|
|
||||||
url: '/api/sc/course/cla/stu/add/addScCourseStuCla',
|
|
||||||
method: 'post',
|
|
||||||
data: data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除班级学员
|
|
||||||
export function delClaStu(studentIds, claId) {
|
|
||||||
return request({
|
|
||||||
url: '/api/sc/course/cla/stu/delete/deleteById/' + studentIds + '/' + claId,
|
|
||||||
method: 'delete'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除学员班级
|
|
||||||
export function delStuCla(claIds, studentId) {
|
|
||||||
return request({
|
|
||||||
url: '/api/sc/course/cla/stu/delete/deleteStuCla/' + claIds + '/' + studentId,
|
|
||||||
method: 'delete'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除
|
|
||||||
export function claStuChargeInfo(query) {
|
|
||||||
return request({
|
|
||||||
url: '/api/sc/course/cla/stu/info/claStuChargeInfo',
|
|
||||||
method: 'get',
|
|
||||||
params: query
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改资费
|
|
||||||
export function updateClaStuCharge(data) {
|
|
||||||
return request({
|
|
||||||
url: '/apisc/course/cla/stu/update/claStuCharge',
|
|
||||||
method: 'put',
|
|
||||||
data: data
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -0,0 +1,136 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员卡办理API
|
||||||
|
*/
|
||||||
|
export default {
|
||||||
|
// 办理新会员卡
|
||||||
|
createMemberCard(data) {
|
||||||
|
return request({
|
||||||
|
url: '/api/sc/memberCard/create',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
checkIn(data) {
|
||||||
|
return request({
|
||||||
|
url: `/api/sc/memberCard/checkIn`,
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 根据ID查询会员卡
|
||||||
|
getCardById(id) {
|
||||||
|
return request({
|
||||||
|
url: `/api/sc/memberCard/${id}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 根据卡号查询会员卡
|
||||||
|
getCardByNo(cardNo) {
|
||||||
|
return request({
|
||||||
|
url: `/api/sc/memberCard/no/${cardNo}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 激活会员卡
|
||||||
|
activateCard(cardId) {
|
||||||
|
return request({
|
||||||
|
url: `/api/sc/memberCard/activate/${cardId}`,
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 暂停会员卡
|
||||||
|
suspendCard(cardId) {
|
||||||
|
return request({
|
||||||
|
url: `/api/sc/memberCard/suspend/${cardId}`,
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 续费会员卡
|
||||||
|
renewCard(data) {
|
||||||
|
return request({
|
||||||
|
url: '/api/sc/memberCard/renew',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 增加次数
|
||||||
|
addCardCount(cardId, count) {
|
||||||
|
return request({
|
||||||
|
url: '/api/sc/memberCard/add-count',
|
||||||
|
method: 'post',
|
||||||
|
params: { cardId, count }
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 扣减次数
|
||||||
|
deductCardCount(cardId, count) {
|
||||||
|
return request({
|
||||||
|
url: '/api/sc/memberCard/deduct-count',
|
||||||
|
method: 'post',
|
||||||
|
params: { cardId, count }
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询会员的会员卡列表
|
||||||
|
getMemberCards(memberId) {
|
||||||
|
return request({
|
||||||
|
url: `/api/sc/memberCard/member/${memberId}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 分页查询会员卡列表
|
||||||
|
getCardList(params) {
|
||||||
|
return request({
|
||||||
|
url: '/api/sc/memberCard/list',
|
||||||
|
method: 'post',
|
||||||
|
data: params
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查询有效的会员卡
|
||||||
|
getValidMemberCards(memberId) {
|
||||||
|
return request({
|
||||||
|
url: `/api/sc/memberCard/valid/${memberId}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 检查会员卡状态
|
||||||
|
checkCardStatus(cardId) {
|
||||||
|
return request({
|
||||||
|
url: `/api/sc/memberCard/check-status/${cardId}`,
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除会员卡
|
||||||
|
deleteCard(id) {
|
||||||
|
return request({
|
||||||
|
url: `/api/sc/memberCard/${id}`,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取会员卡统计信息
|
||||||
|
getCardStatistics(memberId) {
|
||||||
|
return request({
|
||||||
|
url: `/api/sc/memberCard/statistics/${memberId}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getTodayCardCount() {
|
||||||
|
return request({
|
||||||
|
url: `/api/sc/memberCard/todayCardCount`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,70 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 查询列表
|
||||||
|
export function listMemberCard(query) {
|
||||||
|
return request({
|
||||||
|
url: '/api/sc/memberCardTypes/list/searchList',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// select
|
||||||
|
export function select(query) {
|
||||||
|
return request({
|
||||||
|
url: '/api/sc/memberCardTypes/list/select',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询详细
|
||||||
|
export function getMemberCard(cardId) {
|
||||||
|
return request({
|
||||||
|
url: '/api/sc/memberCardTypes/info/detailById/' + cardId,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增
|
||||||
|
export function addMemberCard(data) {
|
||||||
|
return request({
|
||||||
|
url: '/api/sc/memberCardTypes/add/memberCardTypes',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改
|
||||||
|
export function updateMemberCard(data) {
|
||||||
|
return request({
|
||||||
|
url: '/api/sc/memberCardTypes/update/updateMemberCardTypes',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}export function editSale(data) {
|
||||||
|
return request({
|
||||||
|
url: '/api/sc/memberCardTypes/update/editSale',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
export function delMemberCard(cardIds) {
|
||||||
|
return request({
|
||||||
|
url: '/api/sc/memberCardTypes/delete/deleteById/' + cardIds,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function orderCardTypeDetail(query) {
|
||||||
|
return request({
|
||||||
|
url: '/api/sc/memberCardTypes/info/orderCardTypeDetail',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,184 @@
|
|||||||
|
<template>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="feeModePrepaid" class="align-left none-margin-bottom margin-top-20">
|
||||||
|
<template slot="label">
|
||||||
|
<div class="second-title">4. 储值收费:</div>
|
||||||
|
</template>
|
||||||
|
<el-switch v-model="feeModePrepaid" />
|
||||||
|
<el-tooltip class="item" effect="dark" content="适合按储值收费课程" placement="right">
|
||||||
|
<svg-icon icon-class="question" style="height: 22px;width: 22px;top: 8px;position: absolute;left: 48px;" />
|
||||||
|
</el-tooltip>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col v-if="feeModePrepaid" :span="24">
|
||||||
|
<label class="el-form-item__label" style="width: 100px;">定价标准:</label>
|
||||||
|
<el-table
|
||||||
|
:data="feeModeTableData"
|
||||||
|
border
|
||||||
|
class="fee-table"
|
||||||
|
>
|
||||||
|
<!-- <el-table-column-->
|
||||||
|
<!-- prop="campusName"-->
|
||||||
|
<!-- label="开课校区"-->
|
||||||
|
<!-- />-->
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
prop="totalFee"
|
||||||
|
label="单次课金额(元)"
|
||||||
|
width="260"
|
||||||
|
>
|
||||||
|
<template slot="header"><span class="header-need-input">单次课金额(元)</span></template>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-input-number v-model="feeModeTableData[scope.$index].totalFee" size="small" controls-position="right" :min="0" label="请输入总金额" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
// 全部校区
|
||||||
|
campusOptions: {
|
||||||
|
type: Array,
|
||||||
|
default: function() {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 已选择校区
|
||||||
|
hadChooseCampus: {
|
||||||
|
type: Array,
|
||||||
|
default: function() {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 全部校区/部分校区
|
||||||
|
courseCampus: {
|
||||||
|
type: String,
|
||||||
|
default: 'all'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
feeModePrepaid: false,
|
||||||
|
feeModeTableData: [{
|
||||||
|
campusId: -1,
|
||||||
|
campusName: '全部校区',
|
||||||
|
cnt: 1,
|
||||||
|
totalFee: 10
|
||||||
|
}],
|
||||||
|
// key value形式存储 所有校区
|
||||||
|
campusOptionsMap: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
// key value形式存储 所有校区
|
||||||
|
campusOptions(newValue, oldValue) {
|
||||||
|
newValue.forEach((value, index, array) => {
|
||||||
|
this.campusOptionsMap[value.id] = value.label
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 全部校区、部分校区 变更时
|
||||||
|
courseCampus(newValue, oldValue) {
|
||||||
|
if (!this.feeModePrepaid) {
|
||||||
|
this.feeModeTableData = []
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (newValue === 'all') {
|
||||||
|
this.feeModeTableData = [{
|
||||||
|
campusId: -1,
|
||||||
|
campusName: '全部校区',
|
||||||
|
cnt: 1,
|
||||||
|
totalFee: 0
|
||||||
|
}]
|
||||||
|
} else if (newValue === 'part') {
|
||||||
|
const campusArray = []
|
||||||
|
this.campusOptions.forEach((value, index, array) => {
|
||||||
|
const id = value.id
|
||||||
|
const label = value.label
|
||||||
|
if (this.hadChooseCampus.indexOf(id) !== -1) {
|
||||||
|
campusArray.push({
|
||||||
|
campusId: id,
|
||||||
|
campusName: label,
|
||||||
|
cnt: 1,
|
||||||
|
totalFee: 0
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.feeModeTableData = campusArray
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 已选择校区变更
|
||||||
|
hadChooseCampus(newValue, oldValue) {
|
||||||
|
if (!this.feeModePrepaid) {
|
||||||
|
this.feeModeTableData = []
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const addCampusArray = []
|
||||||
|
const subCampusArray = []
|
||||||
|
// 计算需要新增、删除的校区
|
||||||
|
if (newValue.length > oldValue.length) {
|
||||||
|
// 新增校区
|
||||||
|
newValue.forEach((value, index, array) => {
|
||||||
|
if (oldValue.indexOf(value) === -1) {
|
||||||
|
addCampusArray.push(value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
// 删除校区
|
||||||
|
oldValue.forEach((value, index, array) => {
|
||||||
|
if (newValue.indexOf(value) === -1) {
|
||||||
|
subCampusArray.push(value)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 新增校区
|
||||||
|
addCampusArray.forEach((value, index, array) => {
|
||||||
|
const campusName = this.campusOptionsMap[value]
|
||||||
|
this.feeModeTableData.push({
|
||||||
|
campusId: value,
|
||||||
|
campusName: campusName,
|
||||||
|
cnt: 1,
|
||||||
|
totalFee: 0
|
||||||
|
})
|
||||||
|
})
|
||||||
|
// 删除校区
|
||||||
|
const tempArray = this.feeModeTableData
|
||||||
|
subCampusArray.forEach((value, index, array) => {
|
||||||
|
for (let i = tempArray.length - 1; i >= 0; i--) {
|
||||||
|
if (tempArray[i].campusId + '' === value) {
|
||||||
|
this.feeModeTableData.splice(i, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 是否配置本收费模式
|
||||||
|
feeModePrepaid(newValue, oldValue) {
|
||||||
|
if (newValue && this.feeModeTableData.length === 0) {
|
||||||
|
if (this.courseCampus === 'all') {
|
||||||
|
this.feeModeTableData = [{
|
||||||
|
campusId: -1,
|
||||||
|
campusName: '全部校区',
|
||||||
|
cnt: 1,
|
||||||
|
totalFee: 0
|
||||||
|
}]
|
||||||
|
} else {
|
||||||
|
this.hadChooseCampus.forEach((value, index, array) => {
|
||||||
|
const campusName = this.campusOptionsMap[value]
|
||||||
|
this.feeModeTableData.push({
|
||||||
|
campusId: value,
|
||||||
|
campusName: campusName,
|
||||||
|
cnt: 1,
|
||||||
|
totalFee: 0
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,98 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="dashboard-editor-container">
|
|
||||||
|
|
||||||
<panel-group @handleSetLineChartData="handleSetLineChartData" />
|
|
||||||
|
|
||||||
<el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
|
|
||||||
<line-chart :chart-data="lineChartData" />
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
<el-row :gutter="32">
|
|
||||||
<el-col :xs="24" :sm="24" :lg="8">
|
|
||||||
<div class="chart-wrapper">
|
|
||||||
<raddar-chart />
|
|
||||||
</div>
|
|
||||||
</el-col>
|
|
||||||
<el-col :xs="24" :sm="24" :lg="8">
|
|
||||||
<div class="chart-wrapper">
|
|
||||||
<pie-chart />
|
|
||||||
</div>
|
|
||||||
</el-col>
|
|
||||||
<el-col :xs="24" :sm="24" :lg="8">
|
|
||||||
<div class="chart-wrapper">
|
|
||||||
<bar-chart />
|
|
||||||
</div>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import PanelGroup from './dashboard/PanelGroup'
|
|
||||||
import LineChart from './dashboard/LineChart'
|
|
||||||
import RaddarChart from './dashboard/RaddarChart'
|
|
||||||
import PieChart from './dashboard/PieChart'
|
|
||||||
import BarChart from './dashboard/BarChart'
|
|
||||||
|
|
||||||
const lineChartData = {
|
|
||||||
newVisitis: {
|
|
||||||
expectedData: [100, 120, 161, 134, 105, 160, 165],
|
|
||||||
actualData: [120, 82, 91, 154, 162, 140, 145]
|
|
||||||
},
|
|
||||||
messages: {
|
|
||||||
expectedData: [200, 192, 120, 144, 160, 130, 140],
|
|
||||||
actualData: [180, 160, 151, 106, 145, 150, 130]
|
|
||||||
},
|
|
||||||
purchases: {
|
|
||||||
expectedData: [80, 100, 121, 104, 105, 90, 100],
|
|
||||||
actualData: [120, 90, 100, 138, 142, 130, 130]
|
|
||||||
},
|
|
||||||
shoppings: {
|
|
||||||
expectedData: [130, 140, 141, 142, 145, 150, 160],
|
|
||||||
actualData: [120, 82, 91, 154, 162, 140, 130]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'Index',
|
|
||||||
components: {
|
|
||||||
PanelGroup,
|
|
||||||
LineChart,
|
|
||||||
RaddarChart,
|
|
||||||
PieChart,
|
|
||||||
BarChart
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
lineChartData: lineChartData.newVisitis
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
handleSetLineChartData(type) {
|
|
||||||
this.lineChartData = lineChartData[type]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.dashboard-editor-container {
|
|
||||||
padding: 32px;
|
|
||||||
background-color: rgb(240, 242, 245);
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
.chart-wrapper {
|
|
||||||
background: #fff;
|
|
||||||
padding: 16px 16px 0;
|
|
||||||
margin-bottom: 32px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width:1024px) {
|
|
||||||
.chart-wrapper {
|
|
||||||
padding: 8px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,309 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="app-container">
|
|
||||||
<el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
|
|
||||||
<el-form-item label="订单类型" prop="orderType">
|
|
||||||
<el-select v-model="queryParams.orderType" placeholder="请选择订单类型" clearable size="small">
|
|
||||||
<el-option
|
|
||||||
v-for="dict in orderTypeOptions"
|
|
||||||
:key="dict.dictValue"
|
|
||||||
:label="dict.dictLabel"
|
|
||||||
:value="dict.dictValue"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="校区:" prop="deptId">
|
|
||||||
<dept-select v-model="queryParams.deptId" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="课程:" prop="courseId">
|
|
||||||
<course-select v-model="queryParams.courseId" :dept-id="queryParams.deptId" clearable mounted-load-all />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="订单状态" prop="orderStatus">
|
|
||||||
<el-select v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable size="small">
|
|
||||||
<el-option
|
|
||||||
v-for="dict in orderStatusOptions"
|
|
||||||
:key="dict.dictValue"
|
|
||||||
:label="dict.dictLabel"
|
|
||||||
:value="dict.dictValue"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="经办日期" prop="handleDateArray">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="handleDateArray"
|
|
||||||
clearable
|
|
||||||
size="small"
|
|
||||||
style="width: 230px"
|
|
||||||
type="daterange"
|
|
||||||
value-format="yyyy-MM-dd"
|
|
||||||
placeholder="选择经办日期"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
|
||||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<el-row :gutter="10" class="mb8">
|
|
||||||
<el-col :span="1.5">
|
|
||||||
<el-dropdown>
|
|
||||||
<el-button type="primary" size="mini">
|
|
||||||
业务办理 <i class="el-icon-arrow-down el-icon--right" />
|
|
||||||
</el-button>
|
|
||||||
<el-dropdown-menu slot="dropdown">
|
|
||||||
<el-dropdown-item v-has-permi="['sc:order:handleSignUp']" icon="el-icon-plus" @click.native="signUp">报名</el-dropdown-item>
|
|
||||||
</el-dropdown-menu>
|
|
||||||
</el-dropdown>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="1.5">
|
|
||||||
<el-button
|
|
||||||
v-hasPermi="['sc:order:batchInvalid']"
|
|
||||||
v-loading="loadingChange"
|
|
||||||
type="danger"
|
|
||||||
icon="el-icon-delete"
|
|
||||||
size="mini"
|
|
||||||
:disabled="multiple"
|
|
||||||
@click="batchInvalidOrder"
|
|
||||||
>批量作废订单
|
|
||||||
</el-button>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange">
|
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
|
||||||
<el-table-column prop="orderId" width="170" align="center" label="订单编号" fixed="left">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<span style="text-decoration: underline;cursor: pointer;" @click="handleOrderDetail(scope.row)">{{ scope.row.orderId }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="orderType" align="center" label="订单类型" :formatter="orderTypeFormat" fixed="left" />
|
|
||||||
<el-table-column prop="orderStatus" align="center" label="订单状态" fixed="left">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<el-tag v-if="scope.row.orderStatus === '1'" size="medium" type="info">未支付</el-tag>
|
|
||||||
<el-tag v-if="scope.row.orderStatus === '2'" size="medium">已支付</el-tag>
|
|
||||||
<el-tag v-if="scope.row.orderStatus === '3'" size="medium" type="danger">已作废</el-tag>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="studentName" align="center" label="学生" />
|
|
||||||
<el-table-column prop="phone" width="110" align="center" label="联系电话" />
|
|
||||||
<el-table-column prop="orderDetail" width="200" align="center" label="销售内容">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<el-tooltip effect="dark" placement="left">
|
|
||||||
<template slot="content">
|
|
||||||
<div v-for="item in scope.row.orderDetail.split(';')" :key="item">
|
|
||||||
<span>{{ item }}</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<span style="display:inline-block;width: 180px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;"> {{ scope.row.orderDetail }} </span>
|
|
||||||
</el-tooltip>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column prop="actualTotalFee" align="center" label="应付(元)" />
|
|
||||||
<el-table-column prop="receiptFee" align="center" label="实收(元)" />
|
|
||||||
<el-table-column prop="balanceFee" width="120" align="center" label="余额支付(元)" />
|
|
||||||
<el-table-column prop="saleStaffName" align="center" label="销售员" />
|
|
||||||
<el-table-column prop="orderTag" align="center" label="订单标签" show-overflow-tooltip />
|
|
||||||
<el-table-column prop="handleDeptName" align="center" label="经办校区" show-overflow-tooltip />
|
|
||||||
<el-table-column prop="handleDate" width="100" align="center" label="经办日期" />
|
|
||||||
<el-table-column prop="createUserName" width="100" align="center" label="经办人" />
|
|
||||||
<el-table-column prop="memo" align="center" label="办理备注" show-overflow-tooltip />
|
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<el-dropdown trigger="click">
|
|
||||||
<span style="cursor: pointer;color: #409EFF;outline: none;">
|
|
||||||
操作<i class="el-icon-arrow-down el-icon--right" style="font-size: 12px;" />
|
|
||||||
</span>
|
|
||||||
<el-dropdown-menu slot="dropdown">
|
|
||||||
<el-dropdown-item icon="el-icon-document" @click.native="handleOrderDetail(scope.row)">详情</el-dropdown-item>
|
|
||||||
<el-dropdown-item icon="el-icon-delete" @click.native="invalidOrder(scope.row)">作废</el-dropdown-item>
|
|
||||||
<el-dropdown-item v-has-permi="['sc:order:print']" icon="el-icon-printer" @click.native="handlePrintOrder(scope.row)">打印</el-dropdown-item>
|
|
||||||
</el-dropdown-menu>
|
|
||||||
</el-dropdown>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
|
|
||||||
<pagination
|
|
||||||
v-show="total>0"
|
|
||||||
:total="total"
|
|
||||||
:page.sync="queryParams.pageNum"
|
|
||||||
:limit.sync="queryParams.pageSize"
|
|
||||||
@pagination="getList"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<order-detail ref="orderDetail" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { selectDictLabel } from '@/utils/commonUtils'
|
|
||||||
import { listOrder, invalidById } from '@/api/school/sc/order'
|
|
||||||
import orderDetail from '@/components/sc/order/orderDetail'
|
|
||||||
import deptSelect from '@/components/system/dept/deptSelect'
|
|
||||||
import courseSelect from '@/components/sc/course/courseSelect'
|
|
||||||
import moment from 'moment'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'Order',
|
|
||||||
components: {
|
|
||||||
orderDetail,
|
|
||||||
deptSelect,
|
|
||||||
courseSelect
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
// 遮罩层
|
|
||||||
loading: true,
|
|
||||||
loadingChange: false,
|
|
||||||
// 选中数组
|
|
||||||
ids: [],
|
|
||||||
// 非单个禁用
|
|
||||||
single: true,
|
|
||||||
// 非多个禁用
|
|
||||||
multiple: true,
|
|
||||||
// 总条数
|
|
||||||
total: 0,
|
|
||||||
// 表格树数据
|
|
||||||
dataList: [],
|
|
||||||
// 是否显示弹出层
|
|
||||||
open: false,
|
|
||||||
// 学员编号数据字典
|
|
||||||
studentIdOptions: [],
|
|
||||||
// 订单类型 1报名数据字典
|
|
||||||
orderTypeOptions: [],
|
|
||||||
// 订单状态
|
|
||||||
orderStatusOptions: [],
|
|
||||||
handleDateArray: [],
|
|
||||||
// 查询参数
|
|
||||||
queryParams: {
|
|
||||||
pageNum: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
studentId: undefined,
|
|
||||||
orderType: undefined,
|
|
||||||
handleDate: undefined
|
|
||||||
},
|
|
||||||
// 表单参数
|
|
||||||
form: {},
|
|
||||||
// 表单校验
|
|
||||||
rules: {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
const handleDate = this.$route.query.handleDate
|
|
||||||
if (handleDate !== undefined && handleDate === 'thisMonth') {
|
|
||||||
// 查询本月订单
|
|
||||||
const startDate = moment().month(moment().month()).startOf('month').format('YYYY-MM-DD')
|
|
||||||
const endDate = moment().month(moment().month()).endOf('month').format('YYYY-MM-DD')
|
|
||||||
this.handleDateArray = [startDate, endDate]
|
|
||||||
}
|
|
||||||
this.getList()
|
|
||||||
this.getDictListByDictType('course_order_type').then(response => {
|
|
||||||
this.orderTypeOptions = response.data
|
|
||||||
})
|
|
||||||
this.getDictListByDictType('course_order_status').then(response => {
|
|
||||||
this.orderStatusOptions = response.data
|
|
||||||
})
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
getList() {
|
|
||||||
this.loading = true
|
|
||||||
listOrder(this.queryParams).then(response => {
|
|
||||||
this.dataList = response.data.rows
|
|
||||||
this.total = response.data.total
|
|
||||||
this.loading = false
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 取消按钮
|
|
||||||
cancel() {
|
|
||||||
this.open = false
|
|
||||||
this.reset()
|
|
||||||
},
|
|
||||||
// 表单重置
|
|
||||||
reset() {
|
|
||||||
this.form = {
|
|
||||||
}
|
|
||||||
this.resetForm('form')
|
|
||||||
},
|
|
||||||
/** 搜索按钮操作 */
|
|
||||||
handleQuery() {
|
|
||||||
this.queryParams.pageNum = 1
|
|
||||||
if (this.handleDateArray !== undefined && this.handleDateArray !== null && this.handleDateArray.length === 2) {
|
|
||||||
this.queryParams.handleDate = this.handleDateArray.toString()
|
|
||||||
} else {
|
|
||||||
this.queryParams.handleDate = undefined
|
|
||||||
}
|
|
||||||
this.getList()
|
|
||||||
},
|
|
||||||
/** 重置按钮操作 */
|
|
||||||
resetQuery() {
|
|
||||||
this.resetForm('queryForm')
|
|
||||||
this.handleQuery()
|
|
||||||
},
|
|
||||||
// 多选框选中数据
|
|
||||||
handleSelectionChange(selection) {
|
|
||||||
this.ids = selection.map(item => item.orderId)
|
|
||||||
this.single = selection.length !== 1
|
|
||||||
this.multiple = !selection.length
|
|
||||||
},
|
|
||||||
// 报名
|
|
||||||
signUp() {
|
|
||||||
this.$router.push({
|
|
||||||
path: '/order/handle/signUp'
|
|
||||||
})
|
|
||||||
},
|
|
||||||
orderTypeFormat(row, column) {
|
|
||||||
return selectDictLabel(this.orderTypeOptions, row.orderType)
|
|
||||||
},
|
|
||||||
// 作废订单
|
|
||||||
invalidOrder(row) {
|
|
||||||
const that = this
|
|
||||||
this.confirm('确定作废本订单?', function() {
|
|
||||||
that.loading = true
|
|
||||||
invalidById(row.orderId).then(response => {
|
|
||||||
that.loading = false
|
|
||||||
if (response.respCode === '0000') {
|
|
||||||
that.msgSuccess('作废成功')
|
|
||||||
that.getList()
|
|
||||||
} else {
|
|
||||||
that.msgError(response.respMsg)
|
|
||||||
}
|
|
||||||
}).catch(() => {
|
|
||||||
that.loading = false
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 批量作废订单
|
|
||||||
batchInvalidOrder(row) {
|
|
||||||
const that = this
|
|
||||||
const id = this.ids
|
|
||||||
this.confirm('确定作废已选择订单?', function() {
|
|
||||||
that.loading = true
|
|
||||||
invalidById(id).then(response => {
|
|
||||||
that.loading = false
|
|
||||||
if (response.respCode === '0000') {
|
|
||||||
that.msgSuccess('作废成功')
|
|
||||||
that.getList()
|
|
||||||
} else {
|
|
||||||
that.msgError(response.respMsg)
|
|
||||||
}
|
|
||||||
}).catch(() => {
|
|
||||||
that.loading = false
|
|
||||||
that.getList()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 订单详情
|
|
||||||
handleOrderDetail(row) {
|
|
||||||
this.$refs.orderDetail.loadOrderDetail(row.orderId)
|
|
||||||
},
|
|
||||||
// 打印
|
|
||||||
handlePrintOrder(row) {
|
|
||||||
this.$router.push({
|
|
||||||
path: '/order/handle/print/' + row.orderId
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
|
||||||
</style>
|
|
||||||
@ -1,280 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div ref="print" class="print-container">
|
|
||||||
<div class="print-title">
|
|
||||||
<span>{{ tenantInfo.tenantName }}</span>
|
|
||||||
<span>业务凭证</span>
|
|
||||||
</div>
|
|
||||||
<div class="header-info">
|
|
||||||
<div class="left-info">
|
|
||||||
<div class="header-item">学员姓名: {{ orderInfo.studentName }}</div>
|
|
||||||
<div class="header-item">经办日期: {{ orderInfo.handleDate }}</div>
|
|
||||||
<div v-if="orderInfo.orderType === '1'" class="header-item">类型: 新办</div>
|
|
||||||
<div v-else class="header-item">类型: {{ orderInfo.orderType }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="right-info">订单: {{ orderInfo.orderId }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="print-content">
|
|
||||||
<div v-for="item in orderDetailArray" :key="item.orderDetailId">
|
|
||||||
<div class="header">
|
|
||||||
<div class="top-title w150">课程信息</div>
|
|
||||||
<div class="top-title w150">班级</div>
|
|
||||||
<div class="top-title w150">收费方式</div>
|
|
||||||
<div class="top-title w50">数量</div>
|
|
||||||
<div class="top-title w80">原价</div>
|
|
||||||
<div class="top-title w150">折扣/减免</div>
|
|
||||||
<div class="top-title w80">实际价格</div>
|
|
||||||
<div class="top-title flex1">备注</div>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
<div class="value w150">{{ item.courseName }}({{ item.deptName }})</div>
|
|
||||||
<div class="value w150">{{ item.claName||'' }}</div>
|
|
||||||
<div class="value w150">{{ item.chargeName }}</div>
|
|
||||||
<div class="value w50">{{ item.buyCount }}</div>
|
|
||||||
<div class="value w80">¥{{ item.originalFee }}</div>
|
|
||||||
<div class="value w150">
|
|
||||||
<span v-if="item.directDiscount && item.directDiscount !== 10">{{ item.directDiscount }}折 </span>
|
|
||||||
<span v-if="item.directReduceFee && item.directReduceFee !== 0"> 减免:¥{{ item.directReduceFee }}</span>
|
|
||||||
</div>
|
|
||||||
<div class="value w80">¥{{ item.actualFee }}</div>
|
|
||||||
<div class="value flex1">{{ item.outsideMemo }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
<div class="value flex1">备注: {{ orderInfo.memo||'' }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
<div class="value flex1">
|
|
||||||
<span class="span-title">原价总计:</span>
|
|
||||||
<span>¥{{ orderInfo.originalTotalFee }}</span>
|
|
||||||
</div>
|
|
||||||
<div class="value flex1">
|
|
||||||
<span class="span-title">实际价格:</span>
|
|
||||||
<span>¥{{ orderInfo.actualTotalFee }}</span>
|
|
||||||
</div>
|
|
||||||
<div class="value flex1">
|
|
||||||
<span class="span-title">实收:</span>
|
|
||||||
<span>¥{{ orderInfo.receiptFee }}</span>
|
|
||||||
</div>
|
|
||||||
<div class="value flex1">
|
|
||||||
<span class="span-title">余额支付:</span>
|
|
||||||
<span>¥{{ orderInfo.balanceFee }}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
<div class="value flex1">
|
|
||||||
<span class="span-title">收款方式:</span>
|
|
||||||
<span v-for="(item, index) in orderAccountArray" :key="index">
|
|
||||||
<span style="margin-right: 15px;">{{ item.accountName }}: {{ item.fee }}元</span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
<div class="value flex1">
|
|
||||||
<div>地址:</div>
|
|
||||||
<div>{{ tenantInfo.contactAddress }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="value flex1">
|
|
||||||
<div>联系电话:</div>
|
|
||||||
<div>{{ tenantInfo.contactPhone }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="value flex1">
|
|
||||||
<div>经办人:</div>
|
|
||||||
<div>{{ orderInfo.handleStaffName }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="value flex1">
|
|
||||||
<div>打印时间:</div>
|
|
||||||
<div>{{ now }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="value flex1">
|
|
||||||
<div>经办签名:</div>
|
|
||||||
<div> </div>
|
|
||||||
</div>
|
|
||||||
<div class="value flex1">
|
|
||||||
<div>客户签名:</div>
|
|
||||||
<div> </div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="bottom-memo">开课后不予办理退费。请妥善保管您的收据,丢失不予补办。</div>
|
|
||||||
|
|
||||||
<div class="no-print bottom-btn-container">
|
|
||||||
<el-button v-if="canPrint" type="primary" @click="handlePrint">打 印</el-button>
|
|
||||||
<el-button v-else type="info">订单已作废,无法打印</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import { getOrder } from '@/api/school/sc/order'
|
|
||||||
import { nowTenantInfo } from '@/api/school/system/tenant'
|
|
||||||
import moment from 'moment'
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
orderId: undefined,
|
|
||||||
loading: false,
|
|
||||||
orderInfo: {},
|
|
||||||
orderDetailArray: [],
|
|
||||||
orderAccountArray: [],
|
|
||||||
tenantInfo: {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
now() {
|
|
||||||
return moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
|
|
||||||
},
|
|
||||||
// 是否可打印
|
|
||||||
canPrint() {
|
|
||||||
// 非作废
|
|
||||||
return this.orderInfo.orderStatus && this.orderInfo.orderStatus !== '3'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
orderId: {
|
|
||||||
handler(newValue) {
|
|
||||||
if (newValue) {
|
|
||||||
this.loadOrderDetail(newValue)
|
|
||||||
this.loadTenantInfo()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
immediate: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created(param) {
|
|
||||||
const orderId = this.$route.params && this.$route.params.orderId
|
|
||||||
if (orderId) {
|
|
||||||
this.orderId = orderId
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
loadOrderDetail(orderId) {
|
|
||||||
this.loading = true
|
|
||||||
getOrder(orderId).then(response => {
|
|
||||||
this.loading = false
|
|
||||||
this.orderInfo = response.data.orderInfo
|
|
||||||
this.orderDetailArray = response.data.orderDetail
|
|
||||||
this.orderAccountArray = response.data.orderAccountList
|
|
||||||
}).catch(() => {
|
|
||||||
this.loading = false
|
|
||||||
})
|
|
||||||
},
|
|
||||||
loadTenantInfo() {
|
|
||||||
nowTenantInfo().then(response => {
|
|
||||||
this.tenantInfo = response.data
|
|
||||||
}).catch(() => {
|
|
||||||
this.loading = false
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handlePrint() {
|
|
||||||
this.$print(this.$refs.print)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
|
||||||
.main-container.print {
|
|
||||||
.print-container {
|
|
||||||
zoom: 0.7;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.print-container {
|
|
||||||
width: 900px;
|
|
||||||
margin: auto;
|
|
||||||
|
|
||||||
.print-title {
|
|
||||||
margin-top: 25px;
|
|
||||||
font-size: 16px;
|
|
||||||
color: #000;
|
|
||||||
font-weight: 800;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-info {
|
|
||||||
padding: 10px 0;
|
|
||||||
font-size: 12px;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.left-info {
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-start;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.header-item {
|
|
||||||
margin-right: 15px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.print-content {
|
|
||||||
border-top: 1px solid #737373;
|
|
||||||
border-left: 1px solid #737373;
|
|
||||||
font-size: 14px;
|
|
||||||
text-align: left;
|
|
||||||
|
|
||||||
.flex1 {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.w150 {
|
|
||||||
width: 150px;
|
|
||||||
}
|
|
||||||
.w180 {
|
|
||||||
width: 180px;
|
|
||||||
}
|
|
||||||
.w50 {
|
|
||||||
width: 50px;
|
|
||||||
}
|
|
||||||
.w100 {
|
|
||||||
width: 100px;
|
|
||||||
}
|
|
||||||
.w80 {
|
|
||||||
width: 80px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header {
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-start;
|
|
||||||
align-items: inherit;
|
|
||||||
|
|
||||||
.top-title {
|
|
||||||
border-right: 1px solid #737373;
|
|
||||||
border-bottom: 1px solid #737373;
|
|
||||||
font-weight: 600;
|
|
||||||
color: #000;
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-start;
|
|
||||||
align-items: inherit;
|
|
||||||
|
|
||||||
.value {
|
|
||||||
border-right: 1px solid #737373;
|
|
||||||
border-bottom: 1px solid #737373;
|
|
||||||
font-weight: normal;
|
|
||||||
color: #000;
|
|
||||||
padding: 5px;
|
|
||||||
|
|
||||||
.span-title {
|
|
||||||
font-weight: 600;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.bottom-memo {
|
|
||||||
margin-top: 5px;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*底部按钮*/
|
|
||||||
.bottom-btn-container {
|
|
||||||
padding: 15px 20px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue