From c6ac7827159e71f6906a42ceb29a4f83a2f239f6 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 21 二月 2025 14:12:38 +0800
Subject: [PATCH] ll
---
admin/src/views/combo/record.vue | 400 +++++++++++-------------------
admin/src/views/combo/components/SaleDetail.vue | 138 ++++++++++
admin/src/views/combo/components/OrderDetail.vue | 140 ++++++++--
admin/src/views/combo/order.vue | 46 ++
admin/src/api/business/combo.js | 34 ++
5 files changed, 458 insertions(+), 300 deletions(-)
diff --git a/admin/src/api/business/combo.js b/admin/src/api/business/combo.js
index 6a6d329..ed20247 100644
--- a/admin/src/api/business/combo.js
+++ b/admin/src/api/business/combo.js
@@ -34,7 +34,7 @@
}
export function comboReDetailPost(params) {
- return request.get('/business/goodsorder/getGoodsorderCanBanlanceDTO', {params})
+ return request.get('/business/goodsorder/getGoodsorderCanBanlanceDTO', { params })
}
export function comboOrderRefundPost(data) {
return request.post('/business/goodsorder/backGoodsorder', data, {
@@ -42,7 +42,7 @@
})
}
export function comboOrderDetailPost(params) {
- return request.get('/business/goodsorder/discountOrderDetail', {params})
+ return request.get('/business/goodsorder/discountOrderDetail', { params })
}
export function comboListOrderEx(data) {
@@ -50,4 +50,34 @@
trim: true,
download: true
})
+}
+
+export function comboSalePage(data) {
+ return request.post('/business/discountMember/page', data, {
+ trim: true
+ })
+}
+export function comboSaleEx(data) {
+ return request.post('/business/discountMember/exportExcel', data, {
+ trim: true,
+ download: true
+ })
+}
+export function comboSaleAdjust(data) {
+ return request.post('/business/discountMember/adjust', data, {
+ trim: true
+ })
+}
+export function comboSaleCancel(data) {
+ return request.post('/business/discountMember/cancel', data, {
+ trim: true
+ })
+}
+export function comboSalerDetailPost(id) {
+ return request.get('/business/discountMember/' + id)
+}
+export function discountLogLog(data) {
+ return request.post('/business/discountLog/page', data, {
+ trim: true
+ })
}
\ No newline at end of file
diff --git a/admin/src/views/combo/components/OrderDetail.vue b/admin/src/views/combo/components/OrderDetail.vue
index 8768d44..075ca64 100644
--- a/admin/src/views/combo/components/OrderDetail.vue
+++ b/admin/src/views/combo/components/OrderDetail.vue
@@ -1,45 +1,95 @@
<template>
- <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking">
- <div class="title">鏀粯鏄庣粏</div>
- <el-table :data="list" stripe border>
- <el-table-column prop="id" label="璁㈠崟缂栧彿" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column prop="onlineorderId" label="浜ゆ槗鍗曞彿" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column prop="refundType" label="浜ゆ槗绫诲瀷" width="100px" align="center">
+ <GlobalWindow :title="title" width="1000px" :visible.sync="visible" :confirm-working="isWorking">
+ <div class="title">璁㈠崟淇℃伅</div>
+ <div class="info_warp">
+ <div class="item">
+ <div class="la">璁㈠崟缂栧彿锛�</div>
+ <div class="val">{{ info.id }}</div>
+ </div>
+ <div class="item">
+ <div class="la">璁㈠崟鐘舵�侊細</div>
+ <div class="val">{{ info.status == 1 ? '宸叉敮浠�' : '鏈敮浠�' }}</div>
+ </div>
+ <div class="item">
+ <div class="la">涓嬪崟鏃堕棿锛�</div>
+ <div class="val">{{ info.createDate }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鏀粯鏃堕棿锛�</div>
+ <div class="val">{{ info.payDate }}</div>
+ </div>
+ <div class="item">
+ <div class="la">璁㈠崟閲戦锛�</div>
+ <div class="val">{{ info.money }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鏀粯鏂瑰紡锛�</div>
+ <div class="val">{{ info.payWay == 0 ? '寰俊' : '鏀粯瀹�' }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鏀粯鍗曞彿锛�</div>
+ <div class="val">{{ info.onlineOrderid }}</div>
+ </div>
+ <div class="item">
+ <div class="la">瀹屾垚鏃堕棿锛�</div>
+ <div class="val">{{ info.closeDate }}</div>
+ </div>
+ <div class="item">
+ <div class="la">澶囨敞锛�</div>
+ <div class="val">{{ info.closeInfo }}</div>
+ </div>
+ </div>
+ <div class="title">涔板淇℃伅</div>
+ <div class="info_warp">
+ <div class="item">
+ <div class="la">鍛㈢О锛�</div>
+ <div class="val">{{ form.member.name }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鎵嬫満鍙凤細</div>
+ <div class="val">{{ form.member.phone }}</div>
+ </div>
+ <div class="item">
+ <div class="la">openId锛�</div>
+ <div class="val">{{ form.member.openid }}</div>
+ </div>
+ </div>
+ <div class="title">鍟嗗搧淇℃伅</div>
+ <el-table :data="[goods]" stripe border>
+ <el-table-column prop="name" min-width="100px" label="濂楅鍗�" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column prop="refundType" label="鏈夋晥鏈�" min-width="160px" align="center">
<template slot-scope="{row}">
- {{ typeToStr(row.refundType) }}
+ {{ row.startDate }} 鑷� {{ row.endDate }}
</template>
</el-table-column>
- <el-table-column prop="money" label="浜ゆ槗閲戦(鍏�)" width="100px" align="center"></el-table-column>
- <el-table-column prop="payWay" label="娓犻亾" width="100px" align="center">
+ <el-table-column label="鏁伴噺" width="80px" align="center">
<template slot-scope="{row}">
- {{ row.payWay==0? '寰俊' : '鏀粯瀹�' }}
+ <span>1</span>
</template>
</el-table-column>
- <el-table-column prop="payDate" label="浜ゆ槗鏃堕棿" width="150px" align="center"></el-table-column>
-
+ <el-table-column prop="price" label="浠锋牸" width="100px" align="center"></el-table-column>
+ <el-table-column prop="payWay" label="鐘舵��" width="100px" align="center">
+ <template slot-scope="{row}">
+ {{ info.status == 1 ? '宸叉敮浠�' : '鏈敮浠�' }}
+ </template>
+ </el-table-column>
</el-table>
- <div class="title">楠戣璁板綍</div>
- <el-table
- :data="memberRidesList"
- stripe
- border
- >
- <el-table-column prop="openid" label="鐢ㄦ埛" width="250px" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column prop="bikeCode" label="杞﹁締缂栧彿" width="100px" align="center"></el-table-column>
- <el-table-column prop="bikeType" label="杞︾被鍨�" width="200px" align="center"></el-table-column>
- <el-table-column prop="rideTime" label="鍊熷嚭鏃堕暱(鍒�)" width="200px" align="center"></el-table-column>
- <el-table-column prop="duration" label="璁¤垂鏃堕暱(鍒�)" width="200px" align="center"></el-table-column>
- <el-table-column prop="bikeType" label="杞︾被鍨�" width="150px" align="center"></el-table-column>
- <el-table-column prop="rentDate" label="鍊熷嚭鏃堕棿" width="150px" align="center"></el-table-column>
- <el-table-column prop="backDate" label="杩樿溅鏃堕棿" width="150px" align="center"></el-table-column>
- <el-table-column prop="closeStatus" fixed="right" label="缁撶畻鐘舵��" width="100px" align="center">
- <template slot-scope="{row}">
- {{ row.closeStatus == 0 ? '鏈粨绠�' : '宸茬粨绠�' }}
+ <div v-if="form.refundList && form.refundList.length > 0" class="title">閫�娆句俊鎭�</div>
+ <el-table v-if="form.refundList && form.refundList.length > 0" :data="form.refundList" stripe border>
+ <el-table-column prop="createDate" label="閫�娆炬椂闂�" min-width="180px" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column prop="money" label="閫�娆鹃噾棰�" min-width="100px" align="center"></el-table-column>
+ <el-table-column label="鐘舵��" min-width="100px" align="center">
+ <template v-slot="{row}">
+ <span v-if="row.status == 0">棰勯��娆�</span>
+ <span v-if="row.status == 1">閫�娆惧け璐�</span>
+ <span v-if="row.status == 2">閫�娆惧畬鎴�</span>
</template>
</el-table-column>
+ <el-table-column prop="reason" label="閫�娆惧娉�" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="creatorName" label="鎿嶄綔浜�" min-width="100px" align="center"></el-table-column>
</el-table>
<div slot="footer">
- <el-button @click="visible=false">杩斿洖</el-button>
+ <el-button @click="visible = false">杩斿洖</el-button>
</div>
</GlobalWindow>
</template>
@@ -52,12 +102,14 @@
name: 'OperaSitesWindow',
extends: BaseOpera,
components: { GlobalWindow },
- data () {
+ data() {
return {
// 琛ㄥ崟鏁版嵁
form: {
- goodsorderId: ''
+ member: {}
},
+ info: {},
+ goods: {},
list: [],
memberRidesList: [],
// 0缁撶畻閫�娆� 1寮哄埗缁撶畻閫�娆� 2缁撶畻鍚庨��娆� [99: 铏氭嫙type 鏀粯鎶奸噾]
@@ -78,7 +130,11 @@
this.title = title
this.visible = true
// 鏂板缓
+ console.log('target', target)
+
this.form = target
+ this.info = target.goodsOrder
+ this.goods = target.discountMember
this.$nextTick(() => {
this.list = target.payOrderDTOList
this.memberRidesList = target.memberRidesList
@@ -86,7 +142,7 @@
})
},
typeToStr(type) {
- let temp = this.type.find(item => item.id == type )
+ let temp = this.type.find(item => item.id == type)
return temp ? temp.label : '-'
}
},
@@ -94,7 +150,23 @@
}
</script>
-<style scoped>
+<style scoped lang="scss">
+.info_warp {
+ display: flex;
+ flex-wrap: wrap;
+ font-size: 14px;
+
+ .item {
+ display: flex;
+ width: 33.3%;
+ margin-bottom: 6px;
+
+ .val {
+ color: #666666;
+ }
+ }
+}
+
.title {
font-size: 18px;
font-weight: 600;
diff --git a/admin/src/views/combo/components/SaleDetail.vue b/admin/src/views/combo/components/SaleDetail.vue
new file mode 100644
index 0000000..7d1dd41
--- /dev/null
+++ b/admin/src/views/combo/components/SaleDetail.vue
@@ -0,0 +1,138 @@
+<template>
+ <GlobalWindow title="濂楅鍗¤鎯�" :visible.sync="isShowModal" width="1000px" @close="close" @confirm="close">
+ <div>
+ <div class="modal_title">濂楅鍚嶇О锛歿{ detail.name }}</div>
+ <div class="place">
+ <span>濂楅鍙凤細{{ detail.code }}</span>
+ <span v-if="detail.useType == 1">鏈夋晥鏈燂細{{ detail.useDays }}澶�</span>
+ <span v-if="detail.useType == 0">鏈夋晥鏈燂細{{ detail.useStartDate }}鑷硔{ detail.useEndDate }}</span>
+ <span v-if="detail.useType == 2">鏈夋晥鏈燂細{{ detail.useStartDate }}鑷硔{ detail.useEndDate }}</span>
+ </div>
+ <div class="df_ac">
+ <el-tabs style="flex: 1;" v-model="activeTab" @tab-click="handleClick">
+ <el-tab-pane label="濂楅浣跨敤鏄庣粏" name="0" />
+ <el-tab-pane label="濂楅鎿嶄綔璁板綍" name="2" />
+ </el-tabs>
+ <div style="border-bottom: 2px solid #e5e7ec; margin-top: 1px;">{{ activeTab == 0 ? '浣跨敤鎯呭喌' : '鎿嶄綔鎯呭喌' }}锛歿{ pagination.total }}娆�</div>
+ </div>
+ <el-table v-if="activeTab == 0" v-loading="loading" :data="list" stripe border>
+ <el-table-column prop="createDate" align="center" label="浣跨敤鏃堕棿" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="discountMemberId" align="center" label="鍏宠仈璁㈠崟" min-width="120" show-overflow-tooltip />
+ <el-table-column prop="" align="center" label="楠戣溅鏃堕暱" min-width="80" show-overflow-tooltip>
+ <template v-slot="{ row }">
+ {{ row.rideTime }}鍒嗛挓
+ </template>
+ </el-table-column>
+ <el-table-column prop="ridePrice" align="center" label="鎶垫墸閲戦" min-width="100" show-overflow-tooltip />
+ </el-table>
+ <el-table v-if="activeTab == 2" v-loading="loading" :data="list" stripe border>
+ <el-table-column prop="createDate" align="center" label="鎿嶄綔鏃堕棿" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="info" align="center" label="鎿嶄綔绫诲瀷" min-width="100" show-overflow-tooltip>
+ <template v-slot="{ row }">
+ <span v-if="row.type == 0">鐢ㄦ埛楠戣浣跨敤</span>
+ <span v-if="row.type == 1">骞冲彴浣滃簾</span>
+ <span v-if="row.type == 2">骞冲彴璋冩暣</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="editInfo" align="center" label="鎿嶄綔澶囨敞" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="creatorName" align="center" label="鎿嶄綔浜�" min-width="100" show-overflow-tooltip />
+ </el-table>
+ <div class="table_btns">
+ <Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
+ </div>
+ </div>
+ </GlobalWindow>
+</template>
+<script>
+import { comboSalerDetailPost, discountLogLog } from '@/api/business/combo.js'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import BasePageTemp from '@/components/base/BasePageTemp'
+export default {
+ name: 'ComboDetail',
+ extends: BasePageTemp,
+ components: {
+ GlobalWindow
+ },
+ data() {
+ return {
+ isShowModal: false,
+ activeTab: '0',
+ detail: {},
+ pagination: {
+ page: 1,
+ rows: 10
+ },
+ totalCount: 0,
+ list: [],
+ loading: false
+ }
+ },
+ created() {
+ // this.detail = this.$route.query
+ // this.comboDetail()
+ },
+ methods: {
+ getDetail(row) {
+ comboSalerDetailPost(row.id).then(res => {
+ this.detail = res
+ this.getList()
+ }, () => {
+
+ })
+ },
+ handleClick(val) {
+ this.getList()
+ },
+ getList(page) {
+ const { pagination, activeTab, detail } = this
+ this.loading = true
+ if (page) { pagination.page = page }
+ discountLogLog({
+ model: {
+ type: activeTab,
+ discountMemberId: detail.id
+ },
+ capacity: pagination.pageSize,
+ page: pagination.page,
+ }).then(res => {
+ this.loading = false
+ this.list = res.records || []
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
+ })
+ },
+ close() {
+ this.isShowModal = false
+ this.$emit('close')
+ },
+ currentPageChange(val) {
+ this.pagination.page = val
+ this.comboDetail()
+ },
+ pageSizeChange(val) {
+ this.pagination.rows = val
+ this.comboDetail()
+ }
+ }
+}
+</script>
+
+<style lang="scss" scoped>
+.modal_title {
+ font-size: 18px;
+ font-weight: 500;
+ margin-bottom: 6px;
+}
+
+.place {
+ color: #999999;
+ font-size: 13px;
+ display: flex;
+ margin-bottom: 8px;
+
+ span {
+ margin-right: 60px;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/combo/order.vue b/admin/src/views/combo/order.vue
index 949d402..e0d03d6 100644
--- a/admin/src/views/combo/order.vue
+++ b/admin/src/views/combo/order.vue
@@ -6,7 +6,7 @@
<el-button type="primary" @click="handleEx()">瀵煎嚭</el-button>
</div>
<el-table v-loading="loading" :data="list" stripe border>
- <el-table-column prop="code" align="center" label="璁㈠崟缂栧彿" min-width="180" show-overflow-tooltip>
+ <el-table-column prop="code" align="center" label="璁㈠崟缂栧彿" min-width="200" show-overflow-tooltip>
<template scope="{row}">
<span @click="handleDetail(row.id)" class="primaryColor pointer">{{ row.code }}</span>
</template>
@@ -15,7 +15,7 @@
<el-table-column prop="money" align="center" label="鍚堣(鍏�)" min-width="80" show-overflow-tooltip />
<el-table-column prop="money" align="center" label="瀹炰粯(鍏�)" min-width="80" show-overflow-tooltip />
<el-table-column prop="refundMoney" align="center" label="宸查��閲戦(鍏�)" min-width="100" show-overflow-tooltip />
- <el-table-column prop="memberId" align="center" label="鐢ㄦ埛淇℃伅" min-width="140" show-overflow-tooltip />
+ <el-table-column prop="memberId" align="center" label="鐢ㄦ埛淇℃伅" min-width="200" show-overflow-tooltip />
<el-table-column prop="payWay" align="center" label="鏀粯鏂瑰紡" min-width="80" show-overflow-tooltip>
<template v-slot="{ row }">
<span v-if="row.payWay == 0">寰俊鏀粯</span>
@@ -32,7 +32,8 @@
<el-table-column label="鎿嶄綔" fixed="right" align="center" min-width="80" show-overflow-tooltip>
<template v-slot="{ row }">
<span @click="handleDetail(row.id)" class="primaryColor pointer">鏌ョ湅璇︽儏</span>
- <span v-if="row.status == 1 && (row.refundMoney < row.money)" @click="handRefund(row.id)" class="primaryColor pointer ml10">閫�娆�</span>
+ <span v-if="row.status == 1 && (row.refundMoney < row.money)" @click="handRefund(row.id)"
+ class="primaryColor pointer ml10">閫�娆�</span>
</template>
</el-table-column>
</el-table>
@@ -73,19 +74,22 @@
label: '璁㈠崟缂栧彿',
},
{
- filed: 'name',
+ filed: 'discountName',
type: 'input',
label: '濂楅鍗�',
placeholder: '璇疯緭鍏ュ崱鍚嶇О',
},
{
- filed: 'pay',
+ filed: 'payWay',
type: 'select',
label: '鏀粯鏂瑰紡',
- options: []
+ options: [
+ { label: '寰俊', value: 0 },
+ { label: '鏀粯瀹�', value: 1 },
+ ]
},
{
- filed: 'status',
+ filed: 'payStatus',
type: 'select',
label: '璁㈠崟鐘舵��',
options: [
@@ -94,12 +98,12 @@
]
},
{
- filed: 'time',
+ filed: 'selDate',
type: 'date',
label: '鏀粯鏃堕棿',
},
{
- filed: 'username',
+ filed: 'openid',
type: 'input',
label: '鐢ㄦ埛淇℃伅',
},
@@ -117,22 +121,33 @@
this.$refs.RefundRef.open(id)
},
handleDetail(id) {
- comboOrderDetailPost({id})
+ comboOrderDetailPost({ id })
.then(res => {
- this.$refs.OrderDetailRef.open('璁㈠崟璇︽儏', res)
+ if (res) {
+ this.$refs.OrderDetailRef.open('璁㈠崟璇︽儏', res)
+ }
+
})
.catch(err => {
this.$tip.apiFailed(err)
})
},
handleEx() {
+ const { pagination, filters } = this
this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
.then(() => {
this.loading = true
+ if (filters.selDate && filters.selDate.length > 0) {
+ filters.startDate = filters.selDate[0]
+ filters.endDate = filters.selDate[1]
+ } else {
+ filters.startDate = null
+ filters.endDate = null
+ }
comboListOrderEx({
page: 1,
capacity: 1000000,
- model: this.filters
+ model: filters
})
.then(response => {
this.download(response)
@@ -155,6 +170,13 @@
const { pagination, filters } = this
this.loading = true
if (page) { pagination.page = page }
+ if (filters.selDate && filters.selDate.length > 0) {
+ filters.startDate = filters.selDate[0]
+ filters.endDate = filters.selDate[1]
+ } else {
+ filters.startDate = null
+ filters.endDate = null
+ }
comboOrderPost({
model: {
...filters,
diff --git a/admin/src/views/combo/record.vue b/admin/src/views/combo/record.vue
index a30b1b8..8d8b0c7 100644
--- a/admin/src/views/combo/record.vue
+++ b/admin/src/views/combo/record.vue
@@ -2,71 +2,48 @@
<div class="main_app">
<Breadcrumb />
<QueryForm v-model="querys" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clearQueryForm">
- <template #btns>
- <el-button v-if="meta.indexOf('MealsUseDetailExport') > -1" type="primary"
- @click="comboRecordExport">瀵煎嚭</el-button>
- </template>
- <template #indate>
- <el-date-picker v-model="querys.indate" type="datetimerange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�"
- end-placeholder="缁撴潫鏃ユ湡" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" class="w400"
- :picker-options="pickerOptions" />
- </template>
</QueryForm>
<div class="table_btns">
- <el-button v-preventReClick plain type="primary" @click="handleEx">瀵煎嚭</el-button>
- <el-button v-preventReClick plain type="danger" @click="openModal('zuofei')">浣滃簾</el-button>
- <el-button v-preventReClick plain @click="openModal('tiaozheng')">濂楅璋冩暣</el-button>
+ <el-button plain type="primary" @click="handleEx">瀵煎嚭</el-button>
+ <el-button plain type="danger" @click="openModal('zuofei')">浣滃簾</el-button>
+ <el-button plain @click="openModal('tiaozheng')">濂楅璋冩暣</el-button>
</div>
<el-table v-loading="loading" :data="list" stripe border @selection-change="handleSelectionChange">
<el-table-column fixed="left" align="center" type="selection" :selectable="handleDisable" width="55" />
- <el-table-column align="center" label="濂楅绁ㄥ彿" width="300" show-overflow-tooltip>
+ <el-table-column align="center" label="濂楅绁ㄥ彿" min-width="160" show-overflow-tooltip>
<template v-slot="scope">
<span class="primaryColor pointer" @click="comboDetail(scope.row)">{{
- scope.row.id
- }}</span>
+ scope.row.code
+ }}</span>
</template>
</el-table-column>
- <el-table-column align="center" label="濂楅绫诲瀷" width="120">
+ <el-table-column align="center" label="濂楅绫诲瀷" min-width="80">
<template v-slot="scope">
- <span v-if="scope.row.mealsType === '0'">闂ㄧエ娆″崱</span>
- <span v-if="scope.row.mealsType === '1'">闂ㄧエ鏈熼檺鍗�</span>
- <span v-if="scope.row.mealsType === '2'">棰勫畾娆″崱</span>
- <span v-if="scope.row.mealsType === '3'">璇剧▼棰勭害娆″崱</span>
- <span v-if="scope.row.mealsType === '4'">璇剧▼鏈熼檺鍗�</span>
+ <span v-if="scope.row.type == '0'">鏈熼檺鍗�</span>
+ <span v-if="scope.row.type == '1'">娆″崱</span>
</template>
</el-table-column>
- <el-table-column align="center" label="濂楅鍚嶇О" show-overflow-tooltip width="160" prop="mealsName" />
- <el-table-column align="center" label="鐢ㄦ埛淇℃伅" min-width="240" prop="memberInfo" show-overflow-tooltip />
- <el-table-column align="center" label="浣跨敤娆℃暟" width="80" prop="useCount">
+ <el-table-column align="center" label="濂楅鍚嶇О" show-overflow-tooltip min-width="100" prop="name" />
+ <el-table-column align="center" label="鐢ㄦ埛淇℃伅" min-width="100" prop="openid" show-overflow-tooltip />
+ <el-table-column align="center" label="浣跨敤娆℃暟" min-width="80" prop="useTimes">
+ </el-table-column>
+ <el-table-column align="center" label="鏈夋晥鏃ユ湡" min-width="200" prop="remainCount">
<template v-slot="scope">
- <span v-if="scope.row.mealsType === '1'">-</span>
- <span v-else>{{ scope.row.useCount }}</span>
+ <span>{{ scope.row.useStartDate }}鑷硔{ scope.row.useEndDate }}</span>
</template>
</el-table-column>
- <el-table-column align="center" label="鏈夋晥鏃ユ湡" width="80" prop="remainCount">
+ <el-table-column align="center" label="濂楅鐘舵��" min-width="80">
<template v-slot="scope">
- <span v-if="scope.row.mealsType === '1'">-</span>
- <span v-else>{{ scope.row.remainCount }}</span>
+ <span v-if="scope.row.status == '0'" class="text_success">姝e父</span>
+ <span v-if="scope.row.status == '1'" class="text_warning">浣滃簾</span>
+ <span v-if="scope.row.status == '2'" class="text-danger">寰呮敮浠�</span>
</template>
</el-table-column>
- <el-table-column fixed="right" align="center" label="濂楅鐘舵��" width="80">
- <template v-slot="scope">
- <span v-if="scope.row.status === '0'" class="text_success">姝e父</span>
- <span v-if="scope.row.status === '1'" class="text_warning">鍐荤粨</span>
- <span v-if="scope.row.status === '2'" class="text-danger">浣滃簾</span>
- <span v-if="scope.row.status === '3'" class="text-danger">澶辨晥</span>
- </template>
- </el-table-column>
- <el-table-column align="center" label="鏈夋晥鏃ユ湡" width="120" prop="validTime" />
- <el-table-column align="center" label="鎿嶄綔" fixed="right" width="150">
+ <el-table-column align="center" label="鎿嶄綔" fixed="right" min-width="150">
<template v-slot="scope">
<template>
- <el-button v-if="
- meta.indexOf('MealsMemberPartRefund') > -1 &&
- (scope.row.status == '0' || scope.row.status == '1')
- " type="text" @click="rowClickRefund(scope.row)">閫�娆�</el-button>
- <el-button v-if="scope.row.status == '0'" type="text"
- @click="getServiceChargePriceBtn('2', scope.row.id)">鍐荤粨</el-button>
+ <el-button v-if="scope.row.status == '0'" type="text" @click="openCan(scope.row)">浣滃簾</el-button>
+ <span v-else>-</span>
</template>
</template>
</el-table-column>
@@ -78,14 +55,14 @@
<el-dialog title="濂楅璋冩暣" :visible.sync="isShowAdjust" width="500px">
<div class="adjust_modal">
<div style="margin-top: -30px; margin-bottom: 10px;">
- <el-radio v-model="adjustData.aa" label="1">宸查�夊綋鍓�2鏉℃暟鎹�</el-radio>
+ <el-radio v-model="adjustData.flag" label="0">宸查�墈{ selList.length }}鏉℃暟鎹�</el-radio>
</div>
<div style="margin-bottom: 16px;">
- <el-radio v-model="adjustData.aa" label="1">宸查�夌幇鏈夌瓫閫夋潯浠朵笅鍏ㄩ儴鐨�11鏉℃暟鎹�</el-radio>
+ <el-radio v-model="adjustData.flag" label="1">閫夌幇鏈夌瓫閫夋潯浠朵笅鍏ㄩ儴鐨剓{ pagination.total }}鏉℃暟鎹�</el-radio>
</div>
<div class="df_ac mb5">
<span class="key">鏈夋晥鏈熷鍔狅細</span>
- <el-input v-model="adjustData.addTime" oninput="value=value.replace(/[^\d]/g,'')" class="flex1 mr10" />
+ <el-input v-model="adjustData.addNum" oninput="value=value.replace(/[^\d]/g,'')" class="flex1 mr10" />
<span>澶�</span>
</div>
<div class="df_ac mb20">
@@ -99,26 +76,43 @@
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="isShowAdjust = false">鍙栨秷</el-button>
- <el-button v-preventReClick type="primary" :loading="subLoading" @click="handleModelEnter">纭畾</el-button>
+ <el-button type="primary" :loading="subLoading" @click="handleModelEnter">纭畾</el-button>
+ </span>
+ </el-dialog>
+ <el-dialog title="濂楅浣滃簾" :visible.sync="isShowCan" width="500px">
+ <div class="adjust_modal" style="margin-top: -30px;">
+ <div class="red" style="font-size: 16px;">纭畾浣滃簾閫変腑濂楅鍚楋紵浣滃簾鍚庯紝濂楅涓嶅彲浣跨敤</div>
+ <div class="df_ac mt10">
+ <el-input type="textarea" v-model="remarkCan" placeholder="璇锋寜瑕佹眰杈撳叆澶囨敞璇存槑锛岄潪蹇呭~" />
+ </div>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="isShowCan = false">鍙栨秷</el-button>
+ <el-button type="primary" :loading="subLoading" @click="handleCan">纭畾</el-button>
</span>
</el-dialog>
<Refund v-if="isShowRefund" ref="RefundRef" @close="isShowRefund = false" @success="refundSuccess" />
<Detail v-if="isShowDetail" ref="detailRef" />
- <orderDialog ref="child" @orderSuccess="getList()" />
+ <Detail ref="DetailRef" />
</div>
</template>
<script>
-import { pickerOptions } from './components/config'
import BasePageTemp from '@/components/base/BasePageTemp'
import Breadcrumb from '@/layouts/Breadcrumb'
-// import Detail from '../comboDetail'
-// import Refund from './refund.vue'
+import Detail from './components/SaleDetail.vue'
+import { Message } from 'element-ui'
+import {
+ comboSalePage,
+ comboSaleEx,
+ comboSaleCancel,
+ comboSaleAdjust,
+} from '@/api/business/combo.js'
export default {
name: 'SalesRecord',
extends: BasePageTemp,
- components: { Breadcrumb },
+ components: { Breadcrumb, Detail },
data() {
return {
exportLoading: false,
@@ -126,19 +120,19 @@
isShowRefund: false,
queryFormConfig: {
formItems: [{
- filed: 'id',
+ filed: 'code',
type: 'input',
label: '濂楅绁ㄥ彿',
placeholder: '璇疯緭鍏ュ椁愬彿',
clearable: true
}, {
- filed: 'mealsName',
+ filed: 'name',
type: 'input',
label: '濂楅鍚嶇О',
placeholder: '璇疯緭鍏ュ椁愬悕绉�',
clearable: true
}, {
- filed: 'memberSearchValue',
+ filed: 'openid',
type: 'input',
label: '鐢ㄦ埛淇℃伅',
clearable: true
@@ -150,13 +144,12 @@
clearable: true,
options: [
{ value: '0', label: '姝e父' },
- { value: '1', label: '鍐荤粨' },
- { value: '2', label: '浣滃簾' },
- { value: '3', label: '澶辨晥' }]
+ { value: '1', label: '浣滃簾' },
+ // { value: '2', label: '寰呮敮浠�' }
+ ]
}],
online: true
},
- pickerOptions,
querys: {
id: '',
mealsName: '',
@@ -167,17 +160,21 @@
saleRecordList: [],
saleRecordTotal: 0,
- selectSalesList: [],
+ selList: [],
saleRecordLoading: false,
subLoading: false,
- isShowModal: false,
+ isShowCan: false,
ModalTitle: '',
ModalText: '',
ModelRemark: '',
+ remarkCan: '',
// 猬囷笍adjust璋冩暣鐩稿叧
isShowAdjust: false,
+ isShowCan: false,
+ canList: [],
adjustData: {
+ flag: 0,
addNum: '',
addTime: ''
},
@@ -187,7 +184,7 @@
},
created() {
// this.meta = this.$route.meta.buttons || []
- // this.getList(1)
+ this.getList(1)
},
methods: {
rowClickRefund(row) {
@@ -201,84 +198,53 @@
this.isShowRefund = false
this.getList()
},
- getServiceChargePriceBtn(type, mealsMemberId) {
- this.serviceChargeId = mealsMemberId
- getServiceChargePrice({
- param: {
- type,
- mealsMemberId
- }
- }).then((res) => {
- if (res.errorCode === '000000') {
- this.serviceChargePrice = res.record.price
- this.openModal('dongjie')
- }
- })
+ handleEx() {
+ const { pagination, filters } = this
+ this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
+ .then(() => {
+ this.loading = true
+ comboSaleEx({
+ page: 1,
+ capacity: 1000000,
+ model: filters
+ })
+ .then(response => {
+ this.download(response)
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.loading = false
+ })
+ })
.catch(() => { })
},
- handleEx() {
- const { querys } = this
- this.exportLoading = true
- recordExport({
- param: {
- ...querys
- }
- }).then((res) => {
- this.exportLoading = false
- if (res.errorCode === '000000') {
- const a = document.createElement('a') // 鍒涘缓涓�涓猘鏍囩鍏冪礌
- a.style.display = 'none' // 璁剧疆鍏冪礌涓嶅彲瑙�
- a.href = res.record.showUrl // 璁剧疆涓嬭浇鍦板潃
- document.body.appendChild(a) // 鍔犲叆
- a.click() // 瑙﹀彂鐐瑰嚮,涓嬭浇
- document.body.removeChild(a) //
- this.$message.success('瀵煎嚭鎴愬姛')
- }
- })
- .catch(() => {
- this.exportLoading = false
- })
+ openCan(row) {
+ this.isShowCan = true
+ this.canList = [row]
},
- handleDisable(row, index) {
- if (row.status === '2') {
- return false
- } else {
- return true
- }
+ handleDisable(row) {
+ // return row.status == 0
+ return true
},
// 鏌ヨ琛ㄦ牸鏁版嵁
getList(page) {
- const { querys, pagination } = this
- if (page) {
- pagination.page = page
- this.pagination.page = Number(page)
- }
- if (querys.indate && querys.indate.length > 0) {
- querys.startTime = querys.indate[0]
- querys.endTime = querys.indate[1]
- } else {
- querys.startTime = null
- querys.endTime = null
- }
- pagination.firstQueryTime = parseTime(new Date())
- this.saleRecordLoading = true
- comboSalesRecordPost({
- pagination, param: {
- ...querys,
- venueId: sessionStorage.getItem('venueId')
- }
+ const { pagination, filters } = this
+ this.loading = true
+ if (page) { pagination.page = page }
+ comboSalePage({
+ model: {
+ ...filters
+ },
+ capacity: pagination.pageSize,
+ page: pagination.page,
}).then(res => {
- this.saleRecordLoading = false
- if (res.errorCode === '000000') {
- this.saleRecordLoading = false
- this.saleRecordTotal = res.totalCount
- this.saleRecordList = res.recordList
- if (res.totalCount && res.recordList.length === 0 && pagination.page > 1) {
- this.getList(Math.ceil(res.totalCount / pagination.rows))
- }
- }
- }).catch(() => {
- this.saleRecordLoading = false
+ this.loading = false
+ this.list = res.records || []
+ this.pagination.total = res.total || 0
+ }, () => {
+ this.loading = false
})
},
clearQueryForm() {
@@ -288,19 +254,11 @@
},
// 鎵撳紑modal 鍐荤粨 瑙e喕 浣滃簾
openModal(type) {
- const { selectSalesList } = this
+ const { selList } = this
this.ModelRemark = ''
this.adjustData.addNum = ''
this.adjustData.addTime = ''
switch (type) {
- case 'dongjie':
- this.ModalTitle = '濂楅鍐荤粨'
- this.ModalText = '纭畾鍐荤粨閫変腑濂楅鍚楋紵鍐荤粨鍚庯紝濂楅灏嗘棤娉曚娇鐢�'
- break
- case 'jiedong':
- this.ModalTitle = '濂楅瑙e喕'
- this.ModalText = '纭畾瑙e喕閫変腑濂楅鍚楋紵瑙e喕鍚庯紝濂楅鍙珛鍗崇敓鏁堜娇鐢�'
- break
case 'zuofei':
this.ModalTitle = '濂楅浣滃簾'
this.ModalText = '纭畾浣滃簾閫変腑濂楅鍚楋紵浣滃簾鍚庯紝濂楅涓嶅彲浣跨敤'
@@ -311,28 +269,21 @@
default:
break
}
- if (selectSalesList.length === 0 && type !== 'dongjie') {
- return this.$message.warning(`璇峰厛閫夋嫨瑕�${this.ModalTitle.slice(2)}鐨勫椁恅)
+ if (selList.length === 0 && type == 'zuofei') {
+ return Message.warning(`璇峰厛閫夋嫨瑕�${this.ModalTitle.slice(2)}鐨勫椁恅)
}
if (this.ModalTitle === '濂楅璋冩暣') {
this.isShowAdjust = true
+ this.adjustData = {
+ flag: '0'
+ }
} else {
- this.isShowModal = true
+ this.isShowCan = true
}
},
// 纭畾 鍐荤粨 瑙e喕 浣滃簾
handleModelEnter() {
- // if (!this.ModelRemark) {
- // this.$message.warning('鎿嶄綔澶囨敞蹇呭~')
- // return
- // }
switch (this.ModalTitle) {
- case '濂楅鍐荤粨':
- this.Freeze()
- break
- case '濂楅瑙e喕':
- this.Unfreeze()
- break
case '濂楅浣滃簾':
this.cancellation()
break
@@ -343,92 +294,27 @@
break
}
},
- // 鍐荤粨
- Freeze() {
- const that = this
- const data = {
- type: '1',
- handleRemake: this.ModelRemark,
- isCreateOrder: '1',
- id: this.serviceChargeId
- }
- this.subLoading = true
- handleComboSalesPost({ param: { ...data } }).then(res => {
- this.subLoading = false
- this.isShowModal = false
- if (res.errorCode === '000000') {
- const obj = res.record
- if (obj && obj.price) {
- obj.goodsInfos = obj.serviceChargeOrderInfo
- obj.allPrice = obj.price
- this.$refs.child.continuePay(obj, 'handlingFees')
- } else {
- this.$message.success('鍐荤粨鎴愬姛')
- this.getList()
- }
- //
- } else if (res.errorCode === '200001') {
- this.$confirm('瀛樺湪鏈鐞嗚鍗�, 鏄惁璺宠浆?', '鎻愮ず', {
- confirmButtonText: '纭畾',
- cancelButtonText: '鍙栨秷',
- type: 'warning',
- callback: () => { },
- beforeClose: (action, ctx, close) => {
- if (action !== 'confirm') {
- close()
- return
- }
- ctx.confirmButtonLoading = true
- that.$router.push({ name: 'HandlingFees' })
- }
- }).finally(() => {
- this.subLoading = false
- this.isShowModal = false
- })
- }
- })
- },
- // 瑙e喕
- async Unfreeze() {
- const data = {
- type: '2',
- handleRemake: this.ModelRemark,
- id: this.selectSalesList.map(i => i.id).join(',')
- }
- this.subLoading = true
- const res = await handleComboSalesPost({ param: { ...data } }).catch(() => {
- this.subLoading = false
- this.isShowModal = false
- })
- this.subLoading = false
- this.isShowModal = false
- if (res && res.errorCode === '000000') {
- this.$message.success('瑙e喕鎴愬姛')
- this.getList()
- }
- },
// 璋冩暣
async handleAdjust() {
if (!this.adjustData.addNum && !this.adjustData.addTime) {
- return this.$message.warning('璇疯緭鍏ヨ璋冩暣鐨勬湁鏁堟湡澶╂暟鎴栬�呬綑閲忔鏁�')
+ return Message.warning('璇疯緭鍏ヨ璋冩暣鐨勬湁鏁堟湡澶╂暟鎴栬�呬綑閲忔鏁�')
}
const data = {
- type: '3',
- handleRemake: this.ModelRemark,
- addNum: this.adjustData.addNum || 0,
- addTime: this.adjustData.addTime || 0,
- id: this.selectSalesList.map(i => i.id).join(',')
+ info: this.ModelRemark,
+ addDays: this.adjustData.addNum || 0,
+ choseIdList: this.adjustData.flag == 0 ? this.selList.map(i => i.id) : [],
+ ...this.filters
}
this.subLoading = true
- const res = await handleComboSalesPost({ param: { ...data } }).catch(() => {
+ const res = await comboSaleAdjust({ ...data }).catch(() => {
this.subLoading = false
- this.isShowModal = false
+ this.isShowCan = false
})
this.subLoading = false
- this.isShowModal = false
- if (res && res.errorCode === '000000') {
- this.$message.success('濂楅璋冩暣鎴愬姛')
+ this.isShowCan = false
+ if (res) {
+ Message.success('濂楅璋冩暣鎴愬姛')
this.getList()
this.isShowAdjust = false
}
@@ -436,36 +322,46 @@
// 浣滃簾
async cancellation() {
const data = {
- type: '4',
- handleRemake: this.ModelRemark,
- id: this.selectSalesList.map(i => i.id).join(',')
+ handleRemake: this.remarkCan,
+ choseIdList: this.selList.map(i => i.id)
}
this.subLoading = true
- const res = await handleComboSalesPost({ param: { ...data } }).catch(() => {
+ const res = await comboSaleCancel({ ...data }).catch(() => {
this.subLoading = false
- this.isShowModal = false
+ this.isShowCan = false
})
this.subLoading = false
- this.isShowModal = false
- if (res && res.errorCode === '000000') {
- this.$message.success('浣滃簾鎴愬姛')
+ this.isShowCan = false
+ if (res) {
+ Message.success('浣滃簾鎴愬姛')
+ this.getList()
+ }
+ },
+ async handleCan() {
+ const data = {
+ handleRemake: this.remarkCan,
+ choseIdList: this.canList.map(i => i.id)
+ }
+ this.subLoading = true
+ const res = await comboSaleCancel({ ...data }).catch(() => {
+ this.subLoading = false
+ this.isShowCan = false
+ })
+ this.subLoading = false
+ this.isShowCan = false
+ if (res) {
+ Message.success('浣滃簾鎴愬姛')
this.getList()
}
},
handleSelectionChange(val) {
- this.selectSalesList = val
+ this.selList = val
},
comboDetail(item) {
- this.isShowDetail = true
this.$nextTick(() => {
- this.$refs.detailRef.isShowModal = true
- this.$refs.detailRef.comboDetail(item)
+ this.$refs.DetailRef.isShowModal = true
+ this.$refs.DetailRef.getDetail(item)
})
-
- // this.$router.push({
- // name: 'comboDetail',
- // query: item
- // })
},
pageSizeChange(val) {
this.pagination.rows = val
@@ -484,9 +380,9 @@
text-align: right;
}
}
- .el-dialog__body{
-
- }
+
+ .el-dialog__body {}
+
.text_warning {
color: #e89e42;
}
--
Gitblit v1.9.3