From 55ba702c1df240929e68df3b42fa9cb0607378b8 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 08 九月 2025 10:58:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0.1' into 2.0.1
---
bicycle/static/icon/login_ic_password@2x.png | 0
admin/src/views/business/goodsorder.vue | 2
server/services/src/main/java/com/doumee/service/business/GoodsorderService.java | 7
admin/src/components/business/billDetail.vue | 15
bicycle/static/icon/ic_close@2x.png | 0
server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java | 11
server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java | 21
server/web/src/main/java/com/doumee/task/ScheduleTool.java | 12
server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java | 64 +
bicycle/static/icon/ic_shangjia@2x.png | 0
bicycle/unpackage/dist/dev/mp-weixin/common/main.js | 6
bicycle/static/images/home_i1mg_zulingxuzhi@2x.png | 0
bicycle/unpackage/dist/dev/mp-weixin/pages/index/index.wxml | 2
admin/src/views/business/wxBill.vue | 15
bicycle/pages/operationList/operationList.vue | 680 ++++++++++++++++++++++
server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeDetailReportVO.java | 25
bicycle/static/icon/ic_guansuo@2x.png | 0
server/services/src/main/java/com/doumee/core/utils/DateUtil.java | 24
server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeReportVO.java | 32 +
bicycle/unpackage/dist/dev/mp-weixin/project.private.config.json | 27
bicycle/static/icon/login_ic_name@2x.png | 0
server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java | 7
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 192 +++++
admin/src/views/business/onlinePayStatistics.vue | 11
admin/src/views/combo/record.vue | 33
admin/src/views/operation/site.vue | 7
bicycle/static/icon/list_checkbox@2x.png | 0
bicycle/pages/index/index.vue | 19
bicycle/manifest.json | 1
admin/src/views/business/wxBillDetail.vue | 12
bicycle/pages/operationsCenter/operationsCenter.vue | 99 +++
bicycle/static/icon/ic_shaixuan@2x.png | 0
bicycle/pages.json | 21
admin/src/api/business/goodsorder.js | 12
bicycle/pages/operationLogin/operationLogin.vue | 122 ++++
server/services/src/main/java/com/doumee/dao/business/web/response/RidesDetailResponse.java | 3
admin/src/views/operation/components/TramEdit.vue | 1
bicycle/static/icon/ic_kaisuo@2x.png | 0
server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java | 13
bicycle/static/icon/list_checkbox_sel@2x.png | 0
bicycle/static/icon/ic_search@2x.png | 0
admin/src/views/operation/components/AMap.vue | 10
bicycle/main.js | 5
bicycle/static/icon/home_ic_mingxi.png | 0
bicycle/unpackage/dist/dev/mp-weixin/pages/index/index.wxss | 2
bicycle/static/icon/ic_xiajia@2x.png | 0
server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java | 11
bicycle/utils/http.api.js | 12
admin/src/views/business/analysis.vue | 203 ++++++
bicycle/unpackage/dist/dev/mp-weixin/app.json | 5
server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java | 1
51 files changed, 1,655 insertions(+), 90 deletions(-)
diff --git a/admin/src/api/business/goodsorder.js b/admin/src/api/business/goodsorder.js
index cfbb69b..c2178e4 100644
--- a/admin/src/api/business/goodsorder.js
+++ b/admin/src/api/business/goodsorder.js
@@ -35,7 +35,19 @@
export function closerGoodsorder (id) {
return request.post('/business/goodsorder/closerGoodsorder', {id})
}
+// 杞﹀瀷鏀跺叆鍒嗘瀽
+export function getBikeIncomeReportVOList (data) {
+ return request.post('/business/goodsorder/getBikeIncomeReportVOList', data)
+}
// 鑾峰彇鍙��娆句俊鎭�
export function getGoodsorderCanBanlanceDTO (params) {
return request.get('/business/goodsorder/getGoodsorderCanBanlanceDTO', {params})
}
+
+// 瀵煎嚭Excel
+export function bikeIncomeExportExcel (data) {
+ return request.post('/business/goodsorder/bikeIncomeExportExcel', data, {
+ trim: true,
+ download: true
+ })
+}
diff --git a/admin/src/components/business/billDetail.vue b/admin/src/components/business/billDetail.vue
index 7b9c974..6511742 100644
--- a/admin/src/components/business/billDetail.vue
+++ b/admin/src/components/business/billDetail.vue
@@ -12,11 +12,24 @@
>
<el-table-column prop="openid" label="鐢ㄦ埛" min-width="100px" align="center"></el-table-column>
<el-table-column prop="code" label="璁㈠崟缂栧彿" min-width="100px" align="center"></el-table-column>
+ <el-table-column label="璁㈠崟绫诲瀷" min-width="100px" align="center">
+ <template slot-scope="scope">
+ <span v-if="scope.row.bikeType === 1">濂楅璁㈠崟</span>
+ <span v-else-if="scope.row.bikeType === 3">鑷杞﹁鍗�</span>
+ <span v-else-if="scope.row.bikeType === 4">鐢靛姩杞﹁鍗�</span>
+ <span v-else>-</span>
+ </template>
+ </el-table-column>
<el-table-column prop="payDate" label="鏀粯鏃堕棿" min-width="100px" align="center"></el-table-column>
<el-table-column prop="money" label="鏀粯閲戦" width="80px" align="center"></el-table-column>
<el-table-column prop="refundDate" label="閫�娆炬椂闂�" width="150px" align="center"></el-table-column>
<el-table-column prop="refundMoney" label="閫�娆鹃噾棰�" width="80px" align="center"></el-table-column>
- <el-table-column prop="closeMoney" label="缁撶畻閲戦" width="80px" align="center"></el-table-column>
+ <el-table-column label="缁撶畻閲戦" width="80px" align="center">
+ <template slot-scope="scope">
+ <span v-if="scope.row.bikeType === 1">-</span>
+ <span v-else>{{scope.row.closeMoney}}</span>
+ </template>
+ </el-table-column>
</el-table>
<pagination
@size-change="handleSizeChange"
diff --git a/admin/src/views/business/analysis.vue b/admin/src/views/business/analysis.vue
new file mode 100644
index 0000000..5104a24
--- /dev/null
+++ b/admin/src/views/business/analysis.vue
@@ -0,0 +1,203 @@
+<template>
+ <TableLayout :permissions="['business:wxbill:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+ <el-form-item label="瀵硅处鏃ユ湡" prop="name">
+ <el-date-picker
+ v-model="value1"
+ type="daterange"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ :picker-options="pickerOptions"
+ format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss"
+ @change="selectDate"
+ ></el-date-picker>
+ </el-form-item>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ <el-button type="primary" @click="daochu">瀵煎嚭</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+ <el-table
+ v-loading="isWorking.search"
+ :data="list"
+ stripe
+ border
+ >
+ <el-table-column :prop="item" :label="item" align="center" v-for="(item, index) in column" :key="index"></el-table-column>
+ </el-table>
+ </template>
+ </TableLayout>
+</template>
+
+<script>
+ import BaseTable from '@/components/base/BaseTable'
+ import TableLayout from '@/layouts/TableLayout'
+ import Pagination from '@/components/common/Pagination'
+ import { getBikeIncomeReportVOList, bikeIncomeExportExcel } from '@/api/business/goodsorder'
+ export default {
+ name: 'analysis',
+ extends: BaseTable,
+ components: { TableLayout, Pagination },
+ data () {
+ return {
+ value1: [],
+ list: [],
+ column: [],
+ // 鎼滅储
+ searchForm: {
+ endDate: '',
+ startDate: ''
+ },
+ sumData: {
+ },
+ pickerOptions: {}
+ }
+ },
+ created () {
+ this.config({
+ module: '',
+ api: '/business/wxBill',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
+ this.pickerOptions.disabledDate = (time) => {
+ // 涓�澶�
+ const tempTime = 3600 * 1000 * 24
+ return time.getTime() > new Date() - tempTime
+ }
+ const yesterday = new Date();
+ yesterday.setDate(yesterday.getDate() - 1);
+ const startDate = new Date(yesterday);
+ startDate.setDate(startDate.getDate() - 30);
+ this.searchForm.startDate = startDate.toISOString().split('T')[0] + ' 00:00:00'
+ this.searchForm.endDate = yesterday.toISOString().split('T')[0] + ' 00:00:00'
+ this.value1 = [this.searchForm.startDate, this.searchForm.endDate]
+ this.search()
+ },
+ methods: {
+ search() {
+ getBikeIncomeReportVOList({
+ startDate: this.searchForm.startDate,
+ endDate: this.searchForm.endDate
+ }).then(res => {
+ this.column = res.map(item => item[0])
+
+ const keys = res.map(row => row[0]); // 鑾峰彇閿悕
+ const values = res.map(row => row.slice(1, row.length)); // 鑾峰彇鍊�
+
+ this.list = values[0].map((_, index) => {
+ return keys.reduce((obj, key, i) => {
+ obj[key] = values[i][index];
+ return obj;
+ }, {});
+ });
+ })
+ },
+ daochu() {
+ bikeIncomeExportExcel({
+ startDate: this.searchForm.startDate,
+ endDate: this.searchForm.endDate
+ }).then(res => {
+ this.download(res)
+ console.log(res.data)
+ })
+ },
+ reset () {
+ const yesterday = new Date();
+ yesterday.setDate(yesterday.getDate() - 1);
+ const startDate = new Date(yesterday);
+ startDate.setDate(startDate.getDate() - 30);
+ this.searchForm.startDate = startDate.toISOString().split('T')[0] + ' 00:00:00'
+ this.searchForm.endDate = yesterday.toISOString().split('T')[0] + ' 00:00:00'
+ this.value1 = [this.searchForm.startDate, this.searchForm.endDate]
+ this.search()
+ },
+ getDays(startDate, endDate) {
+ const date1 = new Date(startDate); // 绗竴涓棩鏈�
+ const date2 = new Date(endDate); // 绗簩涓棩鏈�
+
+ const timeDifference = date2 - date1;
+
+ return timeDifference / (1000 * 3600 * 24);
+ },
+ selectDate (v) {
+ // this.searchForm.startDate = ''
+ // this.searchForm.endDate = ''
+ if (v) {
+ if (this.getDays(v[0], v[1]) > 30) {
+ this.$message.warning('鏈�澶氬彧鑳介�夋嫨30澶�')
+ const yesterday = new Date();
+ yesterday.setDate(yesterday.getDate() - 1);
+ const startDate = new Date(yesterday);
+ startDate.setDate(startDate.getDate() - 30);
+ this.searchForm.startDate = startDate.toISOString().split('T')[0] + ' 00:00:00'
+ this.searchForm.endDate = yesterday.toISOString().split('T')[0] + ' 00:00:00'
+ this.value1 = [this.searchForm.startDate, this.searchForm.endDate]
+ } else {
+ this.searchForm.startDate = v[0]
+ this.searchForm.endDate = v[1]
+ }
+ }
+ this.search()
+ },
+ // 椤电爜鍙樻洿澶勭悊
+ handlePageChange (pageIndex) {
+ this.__checkApi()
+ this.tableData.pagination.pageIndex = pageIndex || this.tableData.pagination.pageIndex
+ this.isWorking.search = true
+ this.api.fetchList({
+ page: this.tableData.pagination.pageIndex,
+ capacity: this.tableData.pagination.pageSize,
+ model: this.searchForm,
+ sorts: this.tableData.sorts
+ })
+ .then(data => {
+ this.tableData.list = data.records
+ this.tableData.pagination.total = data.total
+ this.sumData = data.extData
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.isWorking.search = false
+ })
+ }
+ }
+ }
+</script>
+<style lang="scss" scoped>
+ ::v-deep .el-table tbody tr:last-child {
+ font-size: 16px;
+ font-weight: bold;
+ background-color: #f3f3fb;
+ }
+ .sum {
+ display: flex;
+ font-size: 16px;
+ margin-bottom: 10px;
+ background-color: rgb(243, 243, 251);
+ .sum-title {
+ flex-shrink: 0;
+ background-color: rgb(111, 129, 198);
+ color: #fff;
+ font-weight: 500;
+ text-align: center;
+ padding: 15px;
+ }
+ .sum-value {
+ padding: 15px 30px;
+ :first-child {
+ font-size: 14px;
+ }
+ :last-child {
+ font-weight: 600;
+ }
+ }
+ }
+</style>
diff --git a/admin/src/views/business/goodsorder.vue b/admin/src/views/business/goodsorder.vue
index d96ba6b..178e05b 100644
--- a/admin/src/views/business/goodsorder.vue
+++ b/admin/src/views/business/goodsorder.vue
@@ -155,7 +155,7 @@
payStatus: '',
payWay: '',
payDate: '',
- type: '',
+ type: 0,
closeMoney: '',
startDate: '',
endDate: '',
diff --git a/admin/src/views/business/onlinePayStatistics.vue b/admin/src/views/business/onlinePayStatistics.vue
index 5178a32..0ed4b12 100644
--- a/admin/src/views/business/onlinePayStatistics.vue
+++ b/admin/src/views/business/onlinePayStatistics.vue
@@ -2,12 +2,12 @@
<TableLayout>
<!-- 鎼滅储琛ㄥ崟 -->
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-
+
<el-form-item label="鍒涘缓鏃堕棿" prop="name">
<el-date-picker
v-model="value1"
type="daterange"
-
+
range-separator="鑷�"
start-placeholder="寮�濮嬫棩鏈�"
end-placeholder="缁撴潫鏃ユ湡"
@@ -15,7 +15,7 @@
@change="selectDate"
></el-date-picker>
</el-form-item>
-
+
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
<el-button @click="reset">閲嶇疆</el-button>
@@ -45,7 +45,7 @@
></el-table-column>
</el-table-column>
</el-table>
-
+
</template>
<!-- 鏂板缓/淇敼 -->
</TableLayout>
@@ -83,11 +83,12 @@
this.$refs.searchForm.resetFields()
this.search()
},
-
+
search() {
fetchList(this.searchForm)
.then(res => {
this.tableData.list = [
+ { name: '濂楅鏀跺叆', payNum: res.discountNum, payMoney: res.discountMoney },
{ name: '鏀粯鎶奸噾', payNum: res.payNum, payMoney: res.payMoney },
{ name: '閫�娆�', payNum: res.refundNum, payMoney: res.refundMoney },
{ name: '鏈粨绠�', payNum: res.unClosedNum, payMoney: res.unClosedMoney },
diff --git a/admin/src/views/business/wxBill.vue b/admin/src/views/business/wxBill.vue
index 0f5042d..3f014da 100644
--- a/admin/src/views/business/wxBill.vue
+++ b/admin/src/views/business/wxBill.vue
@@ -55,6 +55,14 @@
<div>缁撶畻閲戦(鍏�)</div>
<div>{{ sumData.total }}</div>
</div>
+ <div class="sum-value">
+ <div>楠戣鏀跺叆(鍏�)</div>
+ <div>{{ sumData.bikeFee }}</div>
+ </div>
+ <div class="sum-value">
+ <div>濂楅鏀跺叆(鍏�)</div>
+ <div>{{ sumData.discountFee }}</div>
+ </div>
</div>
<el-table
v-loading="isWorking.search"
@@ -70,12 +78,9 @@
<el-table-column prop="sumRefundBill" label="閫�娆剧瑪鏁�" min-width="100px" align="center"></el-table-column>
<el-table-column prop="sumRefundFee" label="閫�娆鹃噾棰�(鍏�)" min-width="100px" align="center"></el-table-column>
<el-table-column prop="sumRefundCmmsAmt" label="閫�娆炬墜缁垂(鍏�)" min-width="100px" align="center"></el-table-column>
-
- <!-- <el-table-column prop="sumSuccessFee" label="搴旂粨璁㈠崟鎬婚噾棰�" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="sumCouponRefundFee" label="鍏呭�煎埜閫�娆炬�婚噾棰�" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="sumApplyRefundFee" label="鐢宠閫�娆炬�婚噾棰�" min-width="100px" align="center"></el-table-column> -->
<el-table-column prop="total" label="缁撶畻閲戦(鍏�)" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="bikeFee" label="鑷杞︽敹鍏�(鍏�)" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="bikeFee" label="楠戣鏀跺叆(鍏�)" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="discountFee" label="濂楅鏀跺叆(鍏�)" min-width="100px" align="center"></el-table-column>
</el-table>
<pagination
@size-change="handleSizeChange"
diff --git a/admin/src/views/business/wxBillDetail.vue b/admin/src/views/business/wxBillDetail.vue
index 2f72f38..5118499 100644
--- a/admin/src/views/business/wxBillDetail.vue
+++ b/admin/src/views/business/wxBillDetail.vue
@@ -60,9 +60,15 @@
<span>{{scope.row.total == 0 ? '-' : scope.row.total }}</span>
</template>
</el-table-column>
- <el-table-column prop="bikefee" label="鑷杞︽敹鍏ワ紙鍏冿級" min-width="100px" align="center">
+ <el-table-column prop="bikefee" label="楠戣鏀跺叆锛堝厓锛�" min-width="100px" align="center">
<template slot-scope="scope">
<span>{{scope.row.bikeFee == 0 ? '-' : scope.row.bikeFee }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="濂楅鏀跺叆(鍏�)" min-width="100px" align="center">
+ <template slot-scope="scope">
+<!-- <span>{{scope.row.discountFee >= 0 ? scope.row.discountFee : '-' }}</span>-->
+ <span>{{ [0,2].includes(scope.$index) ? scope.row.discountFee : '-' }}</span>
</template>
</el-table-column>
<!-- v-if="containPermissions(['business:pricingparam:update', 'business:pricingparam:delete'])" -->
@@ -81,7 +87,6 @@
</template>
</el-table-column>
</el-table>
-
</template>
<BillDetailWindow ref="billDetailWindow"/>
</TableLayout>
@@ -192,7 +197,6 @@
search () {
fetchList(this.searchForm)
.then(res => {
- console.log(res)
this.tableData.list = [
{ billType: '浜ゆ槗瀹炴敹', ...res[0], cmmsAmt: (res[0].sumCmmsAmt + res[0].sumRefundCmmsAmt).toFixed(2) },
{ billType: '閫�娆�', ...res[1], cmmsAmt: (res[1].sumCmmsAmt + res[1].sumRefundCmmsAmt).toFixed(2) },
@@ -212,7 +216,7 @@
this.search()
},
arraySpanMethod ({ row, column, rowIndex, columnIndex }) {
- if (rowIndex == 3) {
+ if (rowIndex === 3) {
if (columnIndex === 0) {
return [1, 8]
} else {
diff --git a/admin/src/views/combo/record.vue b/admin/src/views/combo/record.vue
index 4333ac9..9e99055 100644
--- a/admin/src/views/combo/record.vue
+++ b/admin/src/views/combo/record.vue
@@ -6,7 +6,7 @@
<div class="table_btns">
<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>
+ <el-button plain type="primary" @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" />
@@ -32,6 +32,7 @@
<span>{{ scope.row.useStartDate }}鑷硔{ scope.row.useEndDate }}</span>
</template>
</el-table-column>
+ <el-table-column align="center" label="鍒涘缓鏃堕棿" min-width="150" prop="createDate" show-overflow-tooltip />
<el-table-column align="center" label="濂楅鐘舵��" min-width="80">
<template v-slot="scope">
<span v-if="scope.row.status == '0'" class="text_success">姝e父</span>
@@ -144,8 +145,17 @@
clearable: true,
options: [
{ value: '0', label: '姝e父' },
- { value: '1', label: '浣滃簾' },
- // { value: '2', label: '寰呮敮浠�' }
+ { value: '1', label: '浣滃簾' }
+ ]
+ },{
+ filed: 'createDate',
+ type: 'daterange',
+ label: '鍒涘缓鏃ユ湡',
+ placeholder: '璇烽�夋嫨鐘舵��',
+ clearable: true,
+ options: [
+ { value: '0', label: '姝e父' },
+ { value: '1', label: '浣滃簾' }
]
}],
online: true
@@ -171,7 +181,6 @@
remarkCan: '',
// 猬囷笍adjust璋冩暣鐩稿叧
isShowAdjust: false,
- isShowCan: false,
canList: [],
adjustData: {
flag: 0,
@@ -200,13 +209,19 @@
},
handleEx() {
const { pagination, filters } = this
+ let form = JSON.parse(JSON.stringify(filters))
+ if (form.createDate && form.createDate.length > 0) {
+ form.startCreateDate = form.createDate[0] + ' 00:00:00'
+ form.endCreateDate = form.createDate[1] + ' 23:59:59'
+ delete form.createDate
+ }
this.$dialog.exportConfirm('纭瀵煎嚭鍚楋紵')
.then(() => {
this.loading = true
comboSaleEx({
page: 1,
capacity: 1000000,
- model: filters
+ model: form
})
.then(response => {
this.download(response)
@@ -233,9 +248,15 @@
const { pagination, filters } = this
this.loading = true
if (page) { pagination.page = page }
+ let form = JSON.parse(JSON.stringify(filters))
+ if (form.createDate && form.createDate.length > 0) {
+ form.startCreateDate = form.createDate[0] + ' 00:00:00'
+ form.endCreateDate = form.createDate[1] + ' 23:59:59'
+ delete form.createDate
+ }
comboSalePage({
model: {
- ...filters
+ ...form
},
capacity: pagination.pageSize,
page: pagination.page,
diff --git a/admin/src/views/operation/components/AMap.vue b/admin/src/views/operation/components/AMap.vue
index 52da152..5627175 100644
--- a/admin/src/views/operation/components/AMap.vue
+++ b/admin/src/views/operation/components/AMap.vue
@@ -1,6 +1,6 @@
<template>
<GlobalWindow title="缁樺埗杩愯惀鍖哄煙" :visible.sync="isShowModal" :confirm-working="isWorking" @close="close"
- @confirm="confirm" width="1000px">
+ @confirm="confirm" width="100%">
<div class="map_title">缁樺埗锛氶紶鏍囧乏閿偣鍑诲強绉诲姩鍗冲彲缁樺埗鍥惧舰锛岀粯鍒惰繃绋嬩腑鎸変笅esc閿彲涓柇璇ヨ繃绋�</div>
<div class="map_title">榧犳爣宸﹂敭鍙屽嚮鍗冲彲缁撴潫褰撳墠澶氳竟褰㈢粯鍒讹紝澶氳竟褰細鑷姩闂悎锛�</div>
<div class="map_wrap">
@@ -52,11 +52,11 @@
// maximumAge: 0 // 绂佺敤缂撳瓨
// }
// )
- console.log('-----')
+ console.log('-----', this.row)
map = new TMap.Map("containera", {
- zoom: 16, // 璁剧疆鍦板浘缂╂斁绾у埆
- center: new TMap.LatLng(31.722763, 117.385480) // 璁剧疆鍦板浘涓績鐐瑰潗鏍�
+ zoom: this.polygons.length > 0 ? 20 : 16, // 璁剧疆鍦板浘缂╂斁绾у埆
+ center: this.polygons.length > 0 ? new TMap.LatLng(this.polygons[0].lat, this.polygons[0].lng) : new TMap.LatLng(31.722763, 117.385480) // 璁剧疆鍦板浘涓績鐐瑰潗鏍�
})
var tempList = []
if (this.polygons.length > 0) {
@@ -157,4 +157,4 @@
z-index: 99999999999;
}
}
-</style>
\ No newline at end of file
+</style>
diff --git a/admin/src/views/operation/components/TramEdit.vue b/admin/src/views/operation/components/TramEdit.vue
index 38293a1..1ac5fad 100644
--- a/admin/src/views/operation/components/TramEdit.vue
+++ b/admin/src/views/operation/components/TramEdit.vue
@@ -34,6 +34,7 @@
return {
// 琛ㄥ崟鏁版嵁
form: {
+ id: null,
paramId: '',
code: '',
deviceSn: '',
diff --git a/admin/src/views/operation/site.vue b/admin/src/views/operation/site.vue
index cee6a24..60daae8 100644
--- a/admin/src/views/operation/site.vue
+++ b/admin/src/views/operation/site.vue
@@ -92,7 +92,6 @@
},
methods: {
changeMap(e, row) {
- console.log(e);
updateById({ ...row, electronicFence: JSON.stringify(e) }).then(res => {
if (res) {
Message.success('璁剧疆鎴愬姛')
@@ -104,9 +103,9 @@
this.$refs.MapRef.isShowModal = true
this.$nextTick(() => {
this.$refs.MapRef.row = row
- // if (row.electronicFence) {
- // this.$refs.MapRef.polygons = JSON.parse(row.electronicFence)
- // }
+ if (row.electronicFence) {
+ this.$refs.MapRef.polygons = JSON.parse(row.electronicFence)
+ }
this.$refs.MapRef.initMap()
})
diff --git a/bicycle/main.js b/bicycle/main.js
index cfdda97..0bd814b 100644
--- a/bicycle/main.js
+++ b/bicycle/main.js
@@ -16,8 +16,9 @@
Vue.prototype.$isResolve = resolve;
})
-// Vue.prototype.$baseUrl = 'http://192.168.0.129:10025/'
-Vue.prototype.$baseUrl = 'https://dmtest.ahapp.net/bike_h5_api/'
+Vue.prototype.$baseUrl = 'http://192.168.1.46:10025/'
+// Vue.prototype.$baseUrl = 'https://bikes.yxbhlt.cn/bike_h5_api/'
+// Vue.prototype.$baseUrl = 'https://dmtest.ahapp.net/bike_h5_api/'
// Vue.prototype.$baseUrl = 'http://xiaopiqiu2.natapp1.cc/'
// Vue.prototype.$baseUrl = 'http://xiaopiqiu.natapp1.cc/'
// Vue.prototype.$baseUrl = 'http://xiaopiqiu3.natapp1.cc/'
diff --git a/bicycle/manifest.json b/bicycle/manifest.json
index 9d4032a..d8ecf83 100644
--- a/bicycle/manifest.json
+++ b/bicycle/manifest.json
@@ -5,6 +5,7 @@
"versionName" : "1.0.0",
"versionCode" : "100",
"transformPx" : false,
+ "sassImplementationName" : "node-sass",
/* 5+App鐗规湁鐩稿叧 */
"app-plus" : {
"usingComponents" : true,
diff --git a/bicycle/pages.json b/bicycle/pages.json
index 7fb1082..e5d1ad3 100644
--- a/bicycle/pages.json
+++ b/bicycle/pages.json
@@ -114,6 +114,27 @@
"navigationBarTitleText" : "鏀粯璁㈠崟",
"navigationBarBackgroundColor": "#ffffff"
}
+ },
+ {
+ "path" : "pages/operationLogin/operationLogin",
+ "style" :
+ {
+ "navigationBarTitleText" : "杩愯惀涓績"
+ }
+ },
+ {
+ "path" : "pages/operationsCenter/operationsCenter",
+ "style" :
+ {
+ "navigationBarTitleText" : "杩愯惀涓績"
+ }
+ },
+ {
+ "path" : "pages/operationList/operationList",
+ "style" :
+ {
+ "navigationBarTitleText" : "杩愯惀涓績"
+ }
}
],
"globalStyle": {
diff --git a/bicycle/pages/index/index.vue b/bicycle/pages/index/index.vue
index 185873f..677e47d 100644
--- a/bicycle/pages/index/index.vue
+++ b/bicycle/pages/index/index.vue
@@ -38,7 +38,7 @@
</image>
</view>
<view class="index_box_function">
- <view class="cXYC" v-for="(item, index) in functionList" :key="index" @click.stop="jump(item)">
+ <view class="cXYC" :style="{ marginTop: item.id === 5 ? '30rpx' : '' }" v-for="(item, index) in functionList" :key="index" @click.stop="jump(item)">
<button open-type="getPhoneNumber" @getphonenumber="getPhone" v-if="!userInfo.mobile"></button>
<image class="img80" :src="item.icon" mode="widthFix"></image>
<text class="f26 c3 mt10">{{item.name}}</text>
@@ -314,6 +314,11 @@
id: 4,
name: '娑堣垂鏄庣粏',
icon: require('@/static/images/home_ic_mingxi@2x.png')
+ },
+ {
+ id: 5,
+ name: '杩愯惀涓績',
+ icon: require('@/static/icon/home_ic_mingxi.png')
},
],
@@ -715,6 +720,16 @@
uni.navigateTo({
url: '/pages/consumptionDetails/consumptionDetails'
});
+ } else if (item.id === 5) {
+ if (!this.userInfo.sysuser) {
+ uni.navigateTo({
+ url: '/pages/operationLogin/operationLogin'
+ });
+ } else {
+ uni.navigateTo({
+ url: '/pages/operationsCenter/operationsCenter'
+ });
+ }
} else if (item.id === 2) {
if (!this.userInfo.mobile) return
if (this.info.rideStatus === 1) {
@@ -1419,12 +1434,14 @@
display: flex;
align-items: center;
justify-content: space-between;
+ flex-wrap: wrap;
position: relative;
top: -24rpx;
text {
font-weight: 400;
}
.cXYC {
+ width: 23%;
position: relative;
button {
width: 100%;
diff --git a/bicycle/pages/operationList/operationList.vue b/bicycle/pages/operationList/operationList.vue
new file mode 100644
index 0000000..9a0ef1f
--- /dev/null
+++ b/bicycle/pages/operationList/operationList.vue
@@ -0,0 +1,680 @@
+<template>
+ <view class="box">
+ <view class="search">
+ <view class="search_sou">
+ <image src="/static/icon/ic_search@2x.png" mode="widthFix"></image>
+ <input type="text" v-model="form.code" placeholder="鎼滅储杞﹁締缂栧彿" @confirm="getList(1)" />
+ </view>
+ <view class="search_shai" @click="show = true">
+ <text>绛涢��</text>
+ <image src="/static/icon/ic_shaixuan@2x.png" mode="widthFix"></image>
+ </view>
+ </view>
+ <view class="list">
+ <view class="list_item" v-for="(item, index) in list" :key="index">
+ <view class="list_item_title">
+ <view class="list_item_title_left">杞﹁締缂栧彿锛歿{item.code}}</view>
+ <view class="list_item_title_cate">
+ <view class="list_item_title_cate_row" :style="{ background: item.isOnline === 1 ? '#E7F8F7' : 'rgba(255, 90, 49, 0.10)', color: item.isOnline === 1 ? '#01B6AD' : '#FF5A31' }">{{item.isOnline === 1 ? '鍦ㄧ嚎' : '绂荤嚎'}}</view>
+ <view class="list_item_title_cate_row" :style="{ background: item.lockStatus === 1 ? '#E7F8F7' : 'rgba(255, 90, 49, 0.10)', color: item.lockStatus === 1 ? '#01B6AD' : '#FF5A31' }">{{item.lockStatus === 1 ? '寮�閿�' : '鍏抽攣'}}</view>
+ <view class="list_item_title_cate_row" :style="{ background: item.status === 0 ? '#E7F8F7' : item.status === 1 ? '#D9EBFF' : 'rgba(255, 90, 49, 0.10)', color: item.status === 0 ? '#01B6AD' : item.status === 1 ? '#1185FF' : '#FF5A31' }">{{item.status === 0 ? '绌洪棽' : item.status === 1 ? '楠戣涓�' : '绂佺敤'}}</view>
+ </view>
+ </view>
+ <view class="list_item_infos">
+ <view class="list_item_infos_row">
+ <view class="list_item_infos_row_label">杞﹁締绫诲瀷锛�</view>
+ <view class="list_item_infos_row_val">{{item.type === 1 ? '鐢佃溅' : '鑷杞�'}}</view>
+ </view>
+ <view class="list_item_infos_row">
+ <view class="list_item_infos_row_label">杩愯惀鎯呭喌锛�</view>
+ <view class="list_item_infos_row_val">{{item.bikeStatus === 1 ? '杩愯惀涓�' : '宸插仠杩�'}}</view>
+ </view>
+ <view class="list_item_infos_row">
+ <view class="list_item_infos_row_label">鐢靛帇鐢甸噺锛�</view>
+ <view class="list_item_infos_row_val">{{item.voltage}}V</view>
+ </view>
+ <view class="list_item_infos_row">
+ <view class="list_item_infos_row_label">褰撳墠绔欑偣锛�</view>
+ <view class="list_item_infos_row_val">{{item.siteName}}</view>
+ </view>
+ <view class="list_item_infos_row">
+ <view class="list_item_infos_row_label">鏈�鍚庨�氳锛�</view>
+ <view class="list_item_infos_row_val">{{item.heartDate}}</view>
+ </view>
+ </view>
+ <view class="list_item_x"></view>
+ <view class="list_item_btns">
+ <image :src="selectIds.includes(item.id) ? '/static/icon/list_checkbox_sel@2x.png' : '/static/icon/list_checkbox@2x.png'" mode="widthFix" @click="seleRow(index)"></image>
+ <view class="list_item_btns_list">
+ <view class="list_item_btns_list_item" @click="openMap(item)">鍦板浘</view>
+ <view class="list_item_btns_list_item" @click="bikeChangeStatus(item.id, item.bikeStatus, index)">{{item.bikeStatus === 0 ? '涓婃灦' : '涓嬫灦'}}</view>
+ <view class="list_item_btns_list_item active" @click="bikeChangeLockStatus(item.id, item.lockStatus, index)">{{item.lockStatus === 0 ? '寮�閿�' : '鍏抽攣'}}</view>
+ </view>
+ </view>
+ </view>
+ <view class="list_wu" v-if="!next">娌℃湁鏇村鏁版嵁浜唦</view>
+ </view>
+ <view style="width: 100%; height: calc(env(safe-area-inset-bottom) + 130rpx);"></view>
+ <view class="footer">
+ <view class="footer_hz">
+ <view class="footer_hz_left" @click="quanxuan">
+ <image :src="selectAll ? '/static/icon/list_checkbox_sel@2x.png' : '/static/icon/list_checkbox@2x.png'" mode="widthFix"></image>
+ <text>鍏ㄩ��</text>
+ </view>
+ <view class="footer_hz_btn" @click="show1 = true">鎵归噺鎿嶄綔</view>
+ </view>
+ <view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
+ </view>
+ <!-- 绛涢�� -->
+ <u-popup :show="show" :round="10" mode="bottom">
+ <view class="shaixuan">
+ <view class="shaixuan_head">
+ <text></text>
+ <text>绛涢��</text>
+ <image @click="show = false" src="/static/icon/ic_close@2x.png" mode="widthFix"></image>
+ </view>
+ <view class="shaixuan_item">
+ <view class="shaixuan_item_label">杞﹁締鐘舵��</view>
+ <view class="shaixuan_item_val">
+ <view :class="form.isOnline === 1 ? 'shaixuan_item_val_row active' : 'shaixuan_item_val_row'" @click="form.isOnline = 1">鍦ㄧ嚎</view>
+ <view :class="form.isOnline === 0 ? 'shaixuan_item_val_row active' : 'shaixuan_item_val_row'" @click="form.isOnline = 0">绂荤嚎</view>
+ <view class="shaixuan_item_val_zw"></view>
+ </view>
+ </view>
+ <view class="shaixuan_item">
+ <view class="shaixuan_item_label">杩愯惀鐘舵��</view>
+ <view class="shaixuan_item_val">
+ <view :class="form.bikeStatus === 1 ? 'shaixuan_item_val_row active' : 'shaixuan_item_val_row'" @click="form.bikeStatus = 1">杩愯惀涓�</view>
+ <view :class="form.bikeStatus === 0 ? 'shaixuan_item_val_row active' : 'shaixuan_item_val_row'" @click="form.bikeStatus = 0">宸插仠杩�</view>
+ <view class="shaixuan_item_val_zw"></view>
+ </view>
+ </view>
+ <view class="shaixuan_item">
+ <view class="shaixuan_item_label">閿佸ご鐘舵��</view>
+ <view class="shaixuan_item_val">
+ <view :class="form.lockStatus === 1 ? 'shaixuan_item_val_row active' : 'shaixuan_item_val_row'" @click="form.lockStatus = 1">寮�閿�</view>
+ <view :class="form.lockStatus === 0 ? 'shaixuan_item_val_row active' : 'shaixuan_item_val_row'" @click="form.lockStatus = 0">鍏抽攣</view>
+ <view class="shaixuan_item_val_zw"></view>
+ </view>
+ </view>
+ <view class="shaixuan_item">
+ <view class="shaixuan_item_label">楠戣鐘舵��</view>
+ <view class="shaixuan_item_val">
+ <view :class="form.status === 1 ? 'shaixuan_item_val_row active' : 'shaixuan_item_val_row'" @click="form.status = 1">楠戣涓�</view>
+ <view :class="form.status === 0 ? 'shaixuan_item_val_row active' : 'shaixuan_item_val_row'" @click="form.status = 0">绌洪棽涓�</view>
+ <view class="shaixuan_item_val_zw"></view>
+ </view>
+ </view>
+ <view class="shaixuan_footer">
+ <view class="shaixuan_footer_btn" @click="show = false">鍙栨秷</view>
+ <view class="shaixuan_footer_btn1" @click="getList(1)">纭畾</view>
+ </view>
+ </view>
+ </u-popup>
+ <!-- 閫夋嫨鎿嶄綔 -->
+ <u-popup :show="show1" :round="10" mode="bottom">
+ <view class="shaixuan">
+ <view class="shaixuan_head">
+ <text></text>
+ <text>閫夋嫨鎿嶄綔</text>
+ <image @click="show1 = false" src="/static/icon/ic_close@2x.png" mode="widthFix"></image>
+ </view>
+ <view class="shaixuan_row" @click="bikeChangeStatusBatch(0)">
+ <image src="/static/icon/ic_shangjia@2x.png" mode="widthFix"></image>
+ <text>鎵归噺涓婃灦</text>
+ </view>
+ <view class="shaixuan_row" @click="bikeChangeStatusBatch(1)">
+ <image src="/static/icon/ic_xiajia@2x.png" mode="widthFix"></image>
+ <text>鎵归噺涓嬫灦</text>
+ </view>
+ <view class="shaixuan_row" @click="bikeChangeLockStatusBatch(0)">
+ <image src="/static/icon/ic_kaisuo@2x.png" mode="widthFix"></image>
+ <text>鎵归噺寮�閿�</text>
+ </view>
+ <view class="shaixuan_row" @click="bikeChangeLockStatusBatch(1)">
+ <image src="/static/icon/ic_guansuo@2x.png" mode="widthFix"></image>
+ <text>鎵归噺鍏抽攣</text>
+ </view>
+ </view>
+ </u-popup>
+ <!-- 娓╅Θ鎻愮ず -->
+ <u-popup :show="show2" :round="10" mode="bottom">
+ <view class="shaixuan">
+ <view class="shaixuan_head">
+ <text></text>
+ <text>娓╅Θ鎻愮ず</text>
+ <text></text>
+ </view>
+ <view class="shaixuan_info">纭畾寮�濮嬭繍钀ラ�変腑杞﹁締鍚楋紵</view>
+ <view class="shaixuan_footer" style="margin-top: 94rpx;">
+ <view class="shaixuan_footer_btn" @click="show2 = false">鍙栨秷</view>
+ <view class="shaixuan_footer_btn1">纭畾</view>
+ </view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ show: false,
+ show1: false,
+ show2: false,
+ page: 1,
+ form: {
+ code: '',
+ isOnline: '',
+ status: '',
+ lockStatus: '',
+ bikeStatus: ''
+ },
+ list: [],
+ selectIds: [],
+ next: true
+ };
+ },
+ computed: {
+ selectAll() {
+ return this.selectIds.length === this.list.length
+ }
+ },
+ onLoad() {
+ this.getList()
+ },
+ onReachBottom() {
+ this.getList()
+ },
+ methods: {
+ getList(type) {
+ if (type === 1) {
+ this.page = 1
+ this.list = []
+ this.show = false
+ this.next = true
+ }
+ if (!this.next) return;
+ uni.showLoading({ title: '鍔犺浇涓�' });
+ this.$u.api.pageBikes({
+ capacity: 10,
+ page: this.page,
+ model: this.form
+ }).then(res => {
+ if (res.code === 200) {
+ uni.hideLoading();
+ this.list.push(...res.data.records)
+ this.page += 1
+ if (Number(res.data.total) === this.list.length) {
+ this.next = false
+ }
+ }
+ })
+ },
+ seleRow(index) {
+ if (!this.selectIds.includes(this.list[index].id)) {
+ this.selectIds.push(this.list[index].id)
+ } else {
+ this.selectIds.forEach((item, i) => {
+ if (item === this.list[index].id) {
+ this.selectIds.splice(i, 1)
+ }
+ })
+ }
+ },
+ quanxuan() {
+ if (this.selectAll) {
+ this.selectIds = []
+ } else {
+ this.selectIds = this.list.map(item => item.id)
+ }
+ },
+ openMap(item) {
+ uni.openLocation({
+ latitude: item.latitude,
+ longitude: item.longitude,
+ name: item.siteName,
+ success: () => {
+ console.log('鎵撳紑鎴愬姛');
+ },
+ fail: () => {
+ console.log('鎵撳紑澶辫触');
+ }
+ });
+ },
+ bikeChangeStatusBatch(bikeStatus) {
+ var that = this;
+ uni.showModal({
+ title: '鎻愮ず',
+ content: `鏄惁纭鎵归噺${bikeStatus === 0 ? '涓婃灦' : '涓嬫灦'}杞﹁締`,
+ success: function (res) {
+ if (res.confirm) {
+ that.$u.api.updateBikeStatus({
+ ids: that.selectIds.join(','),
+ bikeStatus: bikeStatus === 0 ? 1 : 0
+ }).then(res => {
+ if (res.code === 200) {
+ that.show1 = false
+ that.selectIds = []
+ that.getList(1)
+ }
+ })
+ } else if (res.cancel) {
+
+ }
+ }
+ });
+ },
+ bikeChangeStatus(id, bikeStatus, index) {
+ var that = this;
+ uni.showModal({
+ title: '鎻愮ず',
+ content: `鏄惁纭${bikeStatus === 0 ? '涓婃灦' : '涓嬫灦'}璇ヨ溅杈哷,
+ success: function (res) {
+ if (res.confirm) {
+ that.$u.api.updateBikeStatus({
+ ids: id,
+ bikeStatus: bikeStatus === 0 ? 1 : 0
+ }).then(res => {
+ if (res.code === 200) {
+ that.getList(1)
+ }
+ })
+ } else if (res.cancel) {
+
+ }
+ }
+ });
+ },
+ bikeChangeLockStatus(id, lockStatus, index) {
+ var that = this;
+ uni.showModal({
+ title: '鎻愮ず',
+ content: `鏄惁纭${lockStatus === 0 ? '寮�閿�' : '鍏抽攣'}璇ヨ溅杈哷,
+ success: function (res) {
+ if (res.confirm) {
+ that.$u.api.updateLockStatus({
+ ids: id,
+ lockStatus: lockStatus === 0 ? 1 : 0
+ }).then(res => {
+ if (res.code === 200) {
+ that.getList(1)
+ }
+ })
+ } else if (res.cancel) {
+
+ }
+ }
+ });
+ },
+ bikeChangeLockStatusBatch(lockStatus) {
+ var that = this;
+ uni.showModal({
+ title: '鎻愮ず',
+ content: `鏄惁纭鎵归噺${lockStatus === 0 ? '寮�閿�' : '鍏抽攣'}杞﹁締`,
+ success: function (res) {
+ if (res.confirm) {
+ that.$u.api.updateLockStatus({
+ ids: that.selectIds.join(','),
+ lockStatus: lockStatus === 0 ? 1 : 0
+ }).then(res => {
+ if (res.code === 200) {
+ that.show1 = false
+ that.selectIds = []
+ that.getList(1)
+ }
+ })
+ } else if (res.cancel) {
+
+ }
+ }
+ });
+ }
+ }
+ }
+</script>
+
+<style>
+ page {
+ background-color: #F7F7F7;
+ }
+</style>
+<style lang="scss" scoped>
+ .box {
+ width: 100%;
+ .shaixuan {
+ width: 100%;
+ .shaixuan_head {
+ padding: 40rpx;
+ width: 100%;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ text {
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #222222;
+ }
+ image {
+ width: 32rpx;
+ height: 32rpx;
+ }
+ }
+ .shaixuan_info {
+ width: 100%;
+ text-align: center;
+ font-weight: 400;
+ font-size: 30rpx;
+ color: #333333;
+ margin-top: 76rpx;
+ }
+
+ .shaixuan_row {
+ width: calc(100% - 60rpx);
+ margin: 0 auto;
+ height: 88rpx;
+ background: rgba(1,182,173,0.14);
+ border-radius: 44rpx;
+ border: 1rpx solid #01B6AD;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 30rpx;
+ image {
+ width: 36rpx;
+ height: 36rpx;
+ margin-right: 16rpx;
+ }
+ text {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #01B6AD;
+ }
+ }
+ .shaixuan_item {
+ width: 100%;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ margin-bottom: 48rpx;
+ &:last-child {
+ margin: 0 !important;
+ }
+ .shaixuan_item_label {
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #111111;
+ margin-bottom: 30rpx;
+ }
+ .shaixuan_item_val {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ flex-wrap: wrap;
+ .shaixuan_item_val_zw {
+ width: 208rpx;
+ height: 0;
+ }
+ .active {
+ background-color: #01B6AD !important;
+ color: #FFFFFF !important;
+ }
+ .shaixuan_item_val_row {
+ width: 208rpx;
+ height: 72rpx;
+ line-height: 72rpx;
+ text-align: center;
+ background: #F7F7F7;
+ border-radius: 36rpx;
+ font-weight: 400;
+ font-size: 28rpx;
+ color: #333333;
+ }
+ }
+ }
+ .shaixuan_footer {
+ width: 100%;
+ height: 96rpx;
+ padding: 0 20rpx;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-top: 60rpx;
+ .shaixuan_footer_btn {
+ width: 344rpx;
+ height: 96rpx;
+ line-height: 96rpx;
+ text-align: center;
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #01B6AD;
+ border-radius: 46rpx;
+ border: 1rpx solid #01B6AD;
+ }
+ .shaixuan_footer_btn1 {
+ width: 344rpx;
+ height: 96rpx;
+ line-height: 96rpx;
+ text-align: center;
+ background: #01B6AD;
+ border-radius: 46rpx;
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #FFFFFF;
+ }
+ }
+ }
+ .footer {
+ width: 100%;
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ z-index: 9;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ height: calc(100rpx + env(safe-area-inset-bottom));
+ background: #FFFFFF;
+ box-shadow: 0rpx -2rpx 4rpx 0rpx rgba(0,0,0,0.06);
+ .footer_hz {
+ width: 100%;
+ height: 100rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .footer_hz_left {
+ display: flex;
+ align-items: center;
+ image {
+ width: 40rpx;
+ height: 40rpx;
+ margin-right: 20rpx;
+ }
+ text {
+ font-weight: 400;
+ font-size: 28rpx;
+ color: #333333;
+ }
+ }
+ .footer_hz_btn {
+ width: 160rpx;
+ height: 68rpx;
+ font-weight: 400;
+ font-size: 28rpx;
+ color: #FFFFFF;
+ line-height: 68rpx;
+ text-align: center;
+ background: #01B6AD;
+ border-radius: 34rpx;
+ }
+ }
+ }
+ .search {
+ width: 100%;
+ height: 96rpx;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ background: #FFFFFF;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ position: sticky;
+ top: 0;
+ left: 0;
+ z-index: 9;
+ .search_sou {
+ flex: 1;
+ height: 72rpx;
+ background: #F7F7F7;
+ border-radius: 36rpx;
+ padding: 0 40rpx;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ image {
+ width: 28rpx;
+ height: 28rpx;
+ flex-shrink: 0;
+ margin-right: 16rpx;
+ }
+ input {
+ flex: 1;
+ height: 100%;
+ font-weight: 400;
+ font-size: 26rpx;
+ color: #222222;
+ }
+ }
+ .search_shai {
+ flex-shrink: 0;
+ margin-left: 30rpx;
+ display: flex;
+ align-items: center;
+ text {
+ font-weight: 400;
+ font-size: 28rpx;
+ color: #666666;
+ }
+ image {
+ width: 28rpx;
+ height: 28rpx;
+ }
+ }
+ }
+ .list {
+ width: 100%;
+ padding: 0 30rpx;
+ box-sizing: border-box;
+ .list_wu {
+ width: 100%;
+ text-align: center;
+ margin-top: 30rpx;
+ font-weight: 400;
+ font-size: 26rpx;
+ color: #666666;
+ }
+ .list_item {
+ width: 100%;
+ background: #FFFFFF;
+ border-radius: 20rpx;
+ margin-top: 30rpx;
+ .list_item_x {
+ width: 100%;
+ height: 1rpx;
+ background-color: #E5E5E5;
+ margin-top: 30rpx;
+ }
+ .list_item_btns {
+ width: 100%;
+ margin-top: 14rpx;
+ padding: 0 30rpx 18rpx 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ image {
+ width: 40rpx;
+ height: 40rpx;
+ flex-shrink: 0;
+ }
+ .list_item_btns_list {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ .active {
+ background-color: rgba(1, 182, 173, 1) !important;
+ color: #FFFFFF !important;
+ }
+ .list_item_btns_list_item {
+ width: 120rpx;
+ height: 68rpx;
+ line-height: 68rpx;
+ text-align: center;
+ border-radius: 34rpx;
+ font-weight: 400;
+ font-size: 28rpx;
+ color: #01B6AD;
+ border: 1rpx solid #01B6AD;
+ margin-left: 20rpx;
+ }
+ }
+ }
+ .list_item_infos {
+ margin-top: 16rpx;
+ padding: 0 30rpx 0 30rpx;
+ box-sizing: border-box;
+ .list_item_infos_row {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ margin-bottom: 20rpx;
+ &:last-child {
+ margin: 0 !important;
+ }
+ .list_item_infos_row_label {
+ flex-shrink: 0;
+ font-weight: 400;
+ font-size: 26rpx;
+ color: #666666;
+ }
+ .list_item_infos_row_val {
+ font-weight: 400;
+ font-size: 26rpx;
+ color: #666666;
+ }
+ }
+ }
+ .list_item_title {
+ width: 100%;
+ padding: 30rpx 30rpx 0 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ .list_item_title_left {
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #222222;
+ }
+ .list_item_title_cate {
+ display: flex;
+ align-items: center;
+ .list_item_title_cate_row {
+ padding: 6rpx 12rpx;
+ border-radius: 8rpx;
+ font-weight: 400;
+ font-size: 24rpx;
+ background: #E7F8F7;
+ color: #01B6AD;
+ margin-left: 10rpx;
+ }
+ }
+ }
+ }
+ }
+ }
+</style>
diff --git a/bicycle/pages/operationLogin/operationLogin.vue b/bicycle/pages/operationLogin/operationLogin.vue
new file mode 100644
index 0000000..4767f07
--- /dev/null
+++ b/bicycle/pages/operationLogin/operationLogin.vue
@@ -0,0 +1,122 @@
+<template>
+ <view class="login">
+ <view class="login_title">娆㈣繋鐧诲綍</view>
+ <view class="login_info">婊ㄦ箹妫灄鍏洯杩愯惀涓績</view>
+ <view class="login_form">
+ <view class="login_form_item">
+ <image src="@/static/icon/login_ic_name@2x.png" mode="widthFix"></image>
+ <input type="text" v-model="from.account" placeholder="璐﹀彿" />
+ </view>
+ <view class="login_form_item">
+ <image src="@/static/icon/login_ic_password@2x.png" mode="widthFix"></image>
+ <input type="safe-password" v-model="from.password" placeholder="瀵嗙爜" />
+ </view>
+ </view>
+ <view class="login_btn" @click="login">鐧诲綍</view>
+ </view>
+</template>
+
+<script>
+ export default {
+ data() {
+ return {
+ from: {
+ account: '',
+ password: ''
+ }
+ };
+ },
+ methods: {
+ login() {
+ var that = this;
+ if (!this.from.account) return uni.showToast({
+ title: '璇疯緭鍏ヨ处鍙�',
+ icon: 'none'
+ })
+ if (!this.from.password) return uni.showToast({
+ title: '璇疯緭鍏ュ瘑鐮�',
+ icon: 'none'
+ })
+ uni.showLoading({ title: '鍔犺浇涓�' });
+ that.$u.api.login({
+ password: that.from.password,
+ username: that.from.account
+ }).then(res => {
+ if (res.code === 200) {
+ uni.hideLoading();
+ that.$store.commit('setUserInfo', res.data)
+ uni.navigateTo({
+ url: '/pages/operationsCenter/operationsCenter'
+ })
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .login {
+ width: 100vw;
+ height: 100vh;
+ padding: 80rpx 60rpx;
+ box-sizing: border-box;
+ background: linear-gradient( 179deg, #E1FBFA 0%, #FBFEFE 17%, #FFFFFF 100%);
+ .login_title {
+ font-weight: 600;
+ font-size: 52rpx;
+ color: #333333;
+ }
+ .login_info {
+ font-weight: 400;
+ font-size: 28rpx;
+ color: #999999;
+ margin-top: 16rpx;
+ }
+ .login_form {
+ width: 100%;
+ margin-top: 80rpx;
+ .login_form_item {
+ width: 100%;
+ height: 98rpx;
+ padding: 0 40rpx;
+ box-sizing: border-box;
+ background: #F4F9F8;
+ border-radius: 50rpx;
+ border: 1rpx solid #E4EFED;
+ margin-bottom: 40rpx;
+ display: flex;
+ align-items: center;
+ &:last-child {
+ margin: 0 !important;
+ }
+ image {
+ width: 40rpx;
+ height: 40rpx;
+ margin-right: 24rpx;
+ flex-shrink: 0;
+ }
+ input {
+ flex: 1;
+ height: 100%;
+ font-weight: 400;
+ font-size: 30rpx;
+ color: #222222;
+ }
+ }
+ }
+ .login_btn {
+ width: 100%;
+ height: 96rpx;
+ line-height: 96rpx;
+ text-align: center;
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #FFFFFF;
+ background: #01B6AD;
+ box-shadow: 0rpx 6rpx 16rpx 0rpx rgba(1,182,173,0.24);
+ border-radius: 50rpx;
+ margin-top: 80rpx;
+ }
+ }
+</style>
diff --git a/bicycle/pages/operationsCenter/operationsCenter.vue b/bicycle/pages/operationsCenter/operationsCenter.vue
new file mode 100644
index 0000000..b776134
--- /dev/null
+++ b/bicycle/pages/operationsCenter/operationsCenter.vue
@@ -0,0 +1,99 @@
+<template>
+ <view class="login">
+ <view class="login_title">娆㈣繋鍥炴潵锛寋{userInfo.sysuser.username}}锝�</view>
+ <view class="login_info">{{getWeek()}}</view>
+ <view class="login_func" @click="jump">
+ <image src="/static/images/home_i1mg_zulingxuzhi@2x.png" mode="widthFix"></image>
+ </view>
+ <view class="login_btn" @click="logout">閫�鍑虹櫥褰�</view>
+ </view>
+</template>
+
+<script>
+ import { mapState } from 'vuex'
+ export default {
+ computed: {
+ ...mapState(['userInfo'])
+ },
+ data() {
+ return {
+
+ };
+ },
+ methods: {
+ jump() {
+ uni.navigateTo({
+ url: '/pages/operationList/operationList'
+ })
+ },
+ getWeek() {
+ let today = new Date();
+ let dayOfWeek = today.getDay();
+ let weekdays = ["鏄熸湡鏃�", "鏄熸湡涓�", "鏄熸湡浜�", "鏄熸湡涓�", "鏄熸湡鍥�", "鏄熸湡浜�", "鏄熸湡鍏�"];
+ let weekdayName = weekdays[dayOfWeek];
+
+ const date = new Date();
+ const month = date.getMonth() + 1;
+ const day = date.getDate();
+
+ return month + '鏈�' + day + '鏃�' + '锛�' + weekdayName;
+ },
+ logout() {
+ uni.showLoading({ title: '鍔犺浇涓�' });
+ this.$u.api.logout()
+ .then(res => {
+ if (res.code === 200) {
+ uni.hideLoading();
+ this.$store.commit('setUserInfo', res.data)
+ uni.navigateBack({ delta: 1 });
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .login {
+ width: 100vw;
+ height: 100vh;
+ padding: 40rpx 30rpx;
+ box-sizing: border-box;
+ background: #ffffff;
+ .login_title {
+ font-weight: 600;
+ font-size: 40rpx;
+ color: #333333;
+ }
+ .login_info {
+ font-weight: 400;
+ font-size: 28rpx;
+ color: #999999;
+ margin-top: 16rpx;
+ }
+ .login_func {
+ width: 100%;
+ height: 182rpx;
+ margin-top: 40rpx;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ }
+ .login_btn {
+ width: 200rpx;
+ height: 72rpx;
+ line-height: 72rpx;
+ text-align: center;
+ border-radius: 36rpx;
+ border: 1rpx solid #01B6AD;
+ font-weight: 400;
+ font-size: 28rpx;
+ color: #01B6AD;
+ position: fixed;
+ bottom: calc(env(safe-area-inset-bottom) + 30rpx);
+ left: 50%;
+ transform: translate(-50%, 0);
+ }
+ }
+</style>
diff --git a/bicycle/static/icon/home_ic_mingxi.png b/bicycle/static/icon/home_ic_mingxi.png
new file mode 100644
index 0000000..f3a4b09
--- /dev/null
+++ b/bicycle/static/icon/home_ic_mingxi.png
Binary files differ
diff --git a/bicycle/static/icon/ic_close@2x.png b/bicycle/static/icon/ic_close@2x.png
new file mode 100644
index 0000000..e86fbf4
--- /dev/null
+++ b/bicycle/static/icon/ic_close@2x.png
Binary files differ
diff --git a/bicycle/static/icon/ic_guansuo@2x.png b/bicycle/static/icon/ic_guansuo@2x.png
new file mode 100644
index 0000000..6f0f25c
--- /dev/null
+++ b/bicycle/static/icon/ic_guansuo@2x.png
Binary files differ
diff --git a/bicycle/static/icon/ic_kaisuo@2x.png b/bicycle/static/icon/ic_kaisuo@2x.png
new file mode 100644
index 0000000..7faa564
--- /dev/null
+++ b/bicycle/static/icon/ic_kaisuo@2x.png
Binary files differ
diff --git a/bicycle/static/icon/ic_search@2x.png b/bicycle/static/icon/ic_search@2x.png
new file mode 100644
index 0000000..0f8502c
--- /dev/null
+++ b/bicycle/static/icon/ic_search@2x.png
Binary files differ
diff --git a/bicycle/static/icon/ic_shaixuan@2x.png b/bicycle/static/icon/ic_shaixuan@2x.png
new file mode 100644
index 0000000..5ad72ac
--- /dev/null
+++ b/bicycle/static/icon/ic_shaixuan@2x.png
Binary files differ
diff --git a/bicycle/static/icon/ic_shangjia@2x.png b/bicycle/static/icon/ic_shangjia@2x.png
new file mode 100644
index 0000000..80029ab
--- /dev/null
+++ b/bicycle/static/icon/ic_shangjia@2x.png
Binary files differ
diff --git a/bicycle/static/icon/ic_xiajia@2x.png b/bicycle/static/icon/ic_xiajia@2x.png
new file mode 100644
index 0000000..f2d6794
--- /dev/null
+++ b/bicycle/static/icon/ic_xiajia@2x.png
Binary files differ
diff --git a/bicycle/static/icon/list_checkbox@2x.png b/bicycle/static/icon/list_checkbox@2x.png
new file mode 100644
index 0000000..ef01ec4
--- /dev/null
+++ b/bicycle/static/icon/list_checkbox@2x.png
Binary files differ
diff --git a/bicycle/static/icon/list_checkbox_sel@2x.png b/bicycle/static/icon/list_checkbox_sel@2x.png
new file mode 100644
index 0000000..49ee3c5
--- /dev/null
+++ b/bicycle/static/icon/list_checkbox_sel@2x.png
Binary files differ
diff --git a/bicycle/static/icon/login_ic_name@2x.png b/bicycle/static/icon/login_ic_name@2x.png
new file mode 100644
index 0000000..d7643d0
--- /dev/null
+++ b/bicycle/static/icon/login_ic_name@2x.png
Binary files differ
diff --git a/bicycle/static/icon/login_ic_password@2x.png b/bicycle/static/icon/login_ic_password@2x.png
new file mode 100644
index 0000000..da16ba9
--- /dev/null
+++ b/bicycle/static/icon/login_ic_password@2x.png
Binary files differ
diff --git a/bicycle/static/images/home_i1mg_zulingxuzhi@2x.png b/bicycle/static/images/home_i1mg_zulingxuzhi@2x.png
new file mode 100644
index 0000000..a6fd382
--- /dev/null
+++ b/bicycle/static/images/home_i1mg_zulingxuzhi@2x.png
Binary files differ
diff --git a/bicycle/unpackage/dist/dev/mp-weixin/app.json b/bicycle/unpackage/dist/dev/mp-weixin/app.json
index 36aa59f..52c3057 100644
--- a/bicycle/unpackage/dist/dev/mp-weixin/app.json
+++ b/bicycle/unpackage/dist/dev/mp-weixin/app.json
@@ -12,7 +12,10 @@
"pages/leaseNotice/leaseNotice",
"pages/setMenu/setMenu",
"pages/packageDetails/packageDetails",
- "pages/paymentPage/paymentPage"
+ "pages/paymentPage/paymentPage",
+ "pages/operationLogin/operationLogin",
+ "pages/operationsCenter/operationsCenter",
+ "pages/operationList/operationList"
],
"subPackages": [],
"window": {
diff --git a/bicycle/unpackage/dist/dev/mp-weixin/common/main.js b/bicycle/unpackage/dist/dev/mp-weixin/common/main.js
index 7ce0d91..fbf8309 100644
--- a/bicycle/unpackage/dist/dev/mp-weixin/common/main.js
+++ b/bicycle/unpackage/dist/dev/mp-weixin/common/main.js
@@ -31,9 +31,9 @@
_vue.default.prototype.$onLaunched = new Promise(function (resolve) {
_vue.default.prototype.$isResolve = resolve;
});
-
-// Vue.prototype.$baseUrl = 'http://192.168.0.129:10025/'
-_vue.default.prototype.$baseUrl = 'https://dmtest.ahapp.net/bike_h5_api/';
+_vue.default.prototype.$baseUrl = 'http://192.168.1.46:10025/';
+// Vue.prototype.$baseUrl = 'https://bikes.yxbhlt.cn/bike_h5_api/'
+// Vue.prototype.$baseUrl = 'https://dmtest.ahapp.net/bike_h5_api/'
// Vue.prototype.$baseUrl = 'http://xiaopiqiu2.natapp1.cc/'
// Vue.prototype.$baseUrl = 'http://xiaopiqiu.natapp1.cc/'
// Vue.prototype.$baseUrl = 'http://xiaopiqiu3.natapp1.cc/'
diff --git a/bicycle/unpackage/dist/dev/mp-weixin/pages/index/index.wxml b/bicycle/unpackage/dist/dev/mp-weixin/pages/index/index.wxml
index 2005ed8..6a12f08 100644
--- a/bicycle/unpackage/dist/dev/mp-weixin/pages/index/index.wxml
+++ b/bicycle/unpackage/dist/dev/mp-weixin/pages/index/index.wxml
@@ -1 +1 @@
-<view class="index data-v-57280228"><view class="index_nav data-v-57280228" style="{{'height:'+('calc('+(statusbarHeight+navHeight)+'px'+' + '+'224rpx'+')')+';'}}"><view class="index_nav_a data-v-57280228" style="{{'height:'+(statusbarHeight+'px')+';'}}"></view><view style="{{'height:'+(navHeight+'px')+';'}}" class="data-v-57280228"></view><view class="index_nav_box data-v-57280228" style="{{'background:'+(top>0?'#9AE2DF':'rgba(0,0,0,0)')+';'}}"><view class="index_nav_a data-v-57280228" style="{{'height:'+(statusbarHeight+'px')+';'}}"></view><view style="{{'height:'+(navHeight+'px')+';'}}" class="data-v-57280228"></view><view class="index_nav_b data-v-57280228" style="{{'height:'+(navHeight+'px')+';'+('line-height:'+(navHeight+'px')+';')+('top:'+(statusbarHeight+'px')+';')}}"><text class="data-v-57280228">鍗拌薄婊ㄦ箹瓒e懗鑷杞�</text></view></view><view class="index_box data-v-57280228"><view class="index_box_map data-v-57280228"><map class="map data-v-57280228" id="mapId" scale="15" show-location="{{true}}" polygons="{{eleBusinessArea}}" markers="{{markers}}" latitude="{{latitude}}" longitude="{{longitude}}"></map><view class="index_box_map_type data-v-57280228"><block wx:for="{{types}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['clickType',['$0'],[[['types','',index,'id']]]]]]]}}" class="{{['data-v-57280228',type===item.id?'index_box_map_type_row active':'index_box_map_type_row']}}" bindtap="__e">{{item.name}}</view></block></view><view data-event-opts="{{[['tap',[['jumpMap',['$event']]]]]}}" class="index_box_icon data-v-57280228" bindtap="__e"><image src="/static/icon/ic_fullscreen@2x.png" mode="widthFix" class="data-v-57280228"></image></view></view><view class="index_box_title data-v-57280228"><view class="index_box_title_left data-v-57280228"><text class="data-v-57280228">{{info.parkName}}</text><text class="data-v-57280228">{{"鏈嶅姟鐢佃瘽锛�"+info.serverPhone}}</text></view><image src="/static/icon/ic_call@2x.png" mode="widthFix" data-event-opts="{{[['tap',[['calling',['$0'],['info.serverPhone']]]]]}}" bindtap="__e" class="data-v-57280228"></image></view><view class="index_box_function data-v-57280228"><block wx:for="{{functionList}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['jump',['$0'],[[['functionList','',index]]]]]]]}}" class="cXYC data-v-57280228" catchtap="__e"><block wx:if="{{!userInfo.mobile}}"><button open-type="getPhoneNumber" data-event-opts="{{[['getphonenumber',[['getPhone',['$event']]]]]}}" bindgetphonenumber="__e" class="data-v-57280228"></button></block><image class="img80 data-v-57280228" src="{{item.icon}}" mode="widthFix"></image><text class="f26 c3 mt10 data-v-57280228">{{item.name}}</text></view></block></view><view class="index_box_vip data-v-57280228"><view class="index_box_vip_head data-v-57280228"><text class="data-v-57280228">鐑攢濂楅</text><text data-event-opts="{{[['tap',[['jumpTC',['$event']]]]]}}" bindtap="__e" class="data-v-57280228">鏇村浼樻儬 ></text></view><scroll-view class="scrollView data-v-57280228" scroll-x="{{true}}"><block wx:for="{{tcList}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view class="index_box_vip_row data-v-57280228"><view class="vip1 data-v-57280228"><view class="vip1_left data-v-57280228">{{''+(item.name||'')+''}}</view><view class="vip1_right data-v-57280228">{{''+(item.price||'')+''}}</view></view><view class="vip2 data-v-57280228"><text class="data-v-57280228">{{item.descs||''}}</text><view class="_u data-v-57280228">{{"楼"+(item.linePrice||'')}}</view></view><view class="vip3 data-v-57280228"><view class="vip3_info data-v-57280228">{{"浣庤嚦"+item.dayPrice+"鍏�/澶�"}}</view><view data-event-opts="{{[['tap',[['purchase',['$0'],[[['tcList','',index,'id']]]]]]]}}" class="vip3_button data-v-57280228" bindtap="__e">璐拱</view></view></view></block></scroll-view></view><view data-event-opts="{{[['tap',[['jumpX',['$event']]]]]}}" class="index_box_poster data-v-57280228" bindtap="__e"><image class="imgfull data-v-57280228" src="{{info.leaseNoticeUrl}}" mode="widthFix"></image></view><block wx:if="{{info.leaseVideoUrl}}"><view class="index_box_video data-v-57280228"><video class="img100b data-v-57280228" src="{{info.leaseVideoUrl}}" enable-danmu="{{true}}" danmu-btn="{{true}}" controls="{{true}}"></video></view></block><block wx:if="{{info.memberRidesResponse&&info.memberRidesResponse.ridesType===0}}"><block wx:if="{{show5}}"><view style="width:100%;height:calc(env(safe-area-inset-bottom) + 600rpx);" class="data-v-57280228"></view></block><block wx:else><block wx:if="{{show6}}"><view style="width:100%;height:calc(env(safe-area-inset-bottom) + 660rpx);" class="data-v-57280228"></view></block><block wx:else><block wx:if="{{show2}}"><view style="width:100%;height:calc(env(safe-area-inset-bottom) + 660rpx);" class="data-v-57280228"></view></block><block wx:else><block wx:if="{{show1}}"><view style="width:100%;height:calc(env(safe-area-inset-bottom) + 580rpx);" class="data-v-57280228"></view></block><block wx:else><block wx:if="{{show3}}"><view style="width:100%;height:calc(env(safe-area-inset-bottom) + 500rpx);" class="data-v-57280228"></view></block><block wx:else><view class="index_zw1 data-v-57280228"></view></block></block></block></block></block></block><block wx:else><block wx:if="{{info.memberRidesResponse&&info.memberRidesResponse.ridesType===1}}"><block wx:if="{{$refs.d_tram.d_show3||$refs.d_tram.d_show4}}"><view style="width:100%;height:calc(env(safe-area-inset-bottom) + 660rpx);" class="data-v-57280228"></view></block><block wx:else><view class="index_zw1 data-v-57280228"></view></block></block><block wx:else><view class="index_zw1 data-v-57280228"></view></block></block></view></view><view class="index_scancode data-v-57280228"><view class="index_scancode_top data-v-57280228"><view class="index_scancode_top_left data-v-57280228"><text class="data-v-57280228">閬靛畧浜よ锛屽畨鍏ㄩ獞琛�</text><text class="data-v-57280228">楠戣鏃惰閬靛畧浜ら�氳鍒欙紝瀹夊叏楠戣</text></view><image src="/static/images/ic_safe@2x.png" mode="widthFix" class="data-v-57280228"></image></view><block wx:if="{{!userInfo.mobile}}"><button class="index_scancode_bottom data-v-57280228" open-type="getPhoneNumber" data-event-opts="{{[['getphonenumber',[['getPhone',['$event']]]]]}}" bindgetphonenumber="__e">鎵爜绉熻溅</button></block><block wx:else><view data-event-opts="{{[['tap',[['carRental',['$event']]]]]}}" class="index_scancode_bottom data-v-57280228" bindtap="__e">鎵爜绉熻溅</view></block><view class="index_scancode_zw data-v-57280228"></view></view><u-popup vue-id="8dd740cc-1" show="{{show1}}" closeOnClickOverlay="{{false}}" mode="bottom" bgColor="#fff" round="{{10}}" data-event-opts="{{[['^close',[['e0']]]]}}" bind:close="__e" class="data-v-57280228" bind:__l="__l" vue-slots="{{['default']}}"><view class="deposit data-v-57280228"><view class="deposit_text data-v-57280228"><text class="data-v-57280228">娓╅Θ鎻愮ず</text><text class="data-v-57280228">{{"楠戣闇�瑕佺即绾�"+$root.g0+"鍏冭嚜琛岃溅鎶奸噾"}}</text><text class="data-v-57280228">锛堟娂閲戦殢鏃跺彲閫�锛�</text></view><view data-event-opts="{{[['tap',[['e1',['$event']]]]]}}" class="deposit_read data-v-57280228" bindtap="__e"><block wx:if="{{!active}}"><image src="/static/icon/ic_select@2x.png" mode="widthFix" class="data-v-57280228"></image></block><block wx:else><image src="/static/icon/ic_selected@2x.png" mode="widthFix" class="data-v-57280228"></image></block><view class="deposit_read_z data-v-57280228">鎴戝凡闃呰<text data-event-opts="{{[['tap',[['jumpX',['$event']]]]]}}" catchtap="__e" class="data-v-57280228">銆婄璧侀』鐭ャ��</text>鍜�<text data-event-opts="{{[['tap',[['jumpgz',['$event']]]]]}}" catchtap="__e" class="data-v-57280228">銆婅浠疯鍒欍��</text></view></view><view class="deposit_footer data-v-57280228"><view data-event-opts="{{[['tap',[['e2',['$event']]]]]}}" class="deposit_footer_item data-v-57280228" bindtap="__e">杩斿洖</view><view data-event-opts="{{[['tap',[['depositPayment',['$event']]]]]}}" class="deposit_footer_item c data-v-57280228" bindtap="__e">鍏呭��</view></view></view></u-popup><u-popup vue-id="8dd740cc-2" show="{{show5}}" closeOnClickOverlay="{{false}}" mode="bottom" bgColor="#fff" round="{{10}}" data-event-opts="{{[['^close',[['e3']]]]}}" bind:close="__e" class="data-v-57280228" bind:__l="__l" vue-slots="{{['default']}}"><view class="loading data-v-57280228"><view class="loading_box data-v-57280228"><view class="loading_box_top data-v-57280228"><image src="/static/icon/ic_loading.png" mode="widthFix" class="data-v-57280228"></image><text class="data-v-57280228">寮�閿佷腑</text></view><view class="loading_box_info data-v-57280228">璇锋寜鐓т氦瑙勮椹�</view></view></view></u-popup><u-popup vue-id="8dd740cc-3" show="{{show2}}" overlay="{{false}}" overlayOpacity="0" closeOnClickOverlay="{{false}}" mode="bottom" bgColor="#fff" round="{{10}}" data-event-opts="{{[['^close',[['e4']]]]}}" bind:close="__e" class="data-v-57280228" bind:__l="__l" vue-slots="{{['default']}}"><view class="ride data-v-57280228"><view class="ride_head data-v-57280228"><view class="ride_head_item option data-v-57280228"><text class="data-v-57280228">楠戣鏄庣粏</text><image src="/static/icon/ar_detail@2x.png" mode="widthFix" class="data-v-57280228"></image></view><view class="ride_head_center data-v-57280228"><image src="/static/icon/ic_riding@2x.png" mode="widthFix" class="data-v-57280228"></image><text class="data-v-57280228">楠戣涓�</text></view><view data-event-opts="{{[['tap',[['toRidingDetails']]]]}}" class="ride_head_item data-v-57280228" bindtap="__e"><text class="data-v-57280228">楠戣鏄庣粏</text><image src="/static/icon/ar_detail@2x.png" mode="widthFix" class="data-v-57280228"></image></view></view><block wx:if="{{info&&info.memberRidesResponse&&info.memberRidesResponse.discountMember}}"><view class="info_des_tc data-v-57280228"><u-icon vue-id="{{('8dd740cc-4')+','+('8dd740cc-3')}}" name="info-circle" color="#FF5A31" size="18" class="data-v-57280228" bind:__l="__l"></u-icon><block wx:if="{{info.memberRidesResponse.discountMember.limitType===0}}"><text class="data-v-57280228">鎮ㄦ湁楠戣濂楅锛屾湰娆¤绋嬪厤璐归獞琛�</text></block><block wx:if="{{info.memberRidesResponse.discountMember.limitType===1}}"><text class="data-v-57280228">{{"鎮ㄥ凡璐拱楠戣濂楅锛屾湰娆¤绋嬪厤璐归獞琛�"+$root.m0+"~"}}</text></block></view></block><block wx:if="{{info.memberRidesResponse}}"><view class="ride_content data-v-57280228"><view class="ride_content_a data-v-57280228"><text class="data-v-57280228">{{"寮�濮嬫椂闂达細"+info.memberRidesResponse.rideStartTimeStr}}</text><text class="data-v-57280228">{{"鏈宸查獞琛岋細"+info.memberRidesResponse.rideTime+"鍒嗛挓"}}</text></view><view class="ride_content_b data-v-57280228"><text class="data-v-57280228">{{"杞﹀瀷锛�"+info.memberRidesResponse.bikeType+"锛堢紪鍙凤細"+info.memberRidesResponse.bikeCode+"锛�"}}</text><text class="data-v-57280228">{{info.memberRidesResponse.priceRole}}</text></view><view class="ride_content_info data-v-57280228"><image src="/static/icon/ic_tip@2x.png" mode="widthFix" class="data-v-57280228"></image><block wx:if="{{info.tips}}"><text class="data-v-57280228">{{info.tips}}</text></block></view></view></block><view data-event-opts="{{[['tap',[['navigationReturn',['$event']]]]]}}" class="ride_btn data-v-57280228" bindtap="__e">瀵艰埅鑷冲洯鍖虹珯杩樿溅鐐�</view><view data-event-opts="{{[['tap',[['toFaultReporting',['$event']]]]]}}" class="ride_err data-v-57280228" bindtap="__e"><image src="/static/icon/ic_guzhang@2x.png" mode="widthFix" class="data-v-57280228"></image><text class="data-v-57280228">杞﹁締鏁呴殰涓婃姤</text></view></view></u-popup><u-popup vue-id="8dd740cc-5" show="{{show6}}" overlay="{{false}}" overlayOpacity="0" closeOnClickOverlay="{{false}}" mode="bottom" bgColor="#fff" round="{{10}}" data-event-opts="{{[['^close',[['e5']]]]}}" bind:close="__e" class="data-v-57280228" bind:__l="__l" vue-slots="{{['default']}}"><view class="ride data-v-57280228"><view class="ride_head data-v-57280228"><view class="ride_head_item option data-v-57280228"><text class="data-v-57280228">楠戣鏄庣粏</text><image src="/static/icon/ar_detail@2x.png" mode="widthFix" class="data-v-57280228"></image></view><view class="ride_head_center data-v-57280228"><image src="/static/icon/ic_riding@2x.png" mode="widthFix" class="data-v-57280228"></image><text class="data-v-57280228">宸茶繕杞�</text></view><view data-event-opts="{{[['tap',[['toRidingDetails']]]]}}" class="ride_head_item data-v-57280228" bindtap="__e"><text class="data-v-57280228">楠戣鏄庣粏</text><image src="/static/icon/ar_detail@2x.png" mode="widthFix" class="data-v-57280228"></image></view></view><block wx:if="{{info&&info.memberRidesResponse&&info.memberRidesResponse.discountMember}}"><view class="info_des_tc data-v-57280228"><u-icon vue-id="{{('8dd740cc-6')+','+('8dd740cc-5')}}" name="info-circle" color="#FF5A31" size="18" class="data-v-57280228" bind:__l="__l"></u-icon><block wx:if="{{info.memberRidesResponse.discountMember.limitType===0}}"><text class="data-v-57280228">鎮ㄦ湁楠戣濂楅锛屾湰娆¤绋嬪厤璐归獞琛�</text></block><block wx:if="{{info.memberRidesResponse.discountMember.limitType===1}}"><text class="data-v-57280228">{{"鎮ㄥ凡璐拱楠戣濂楅锛屾湰娆¤绋嬪厤璐归獞琛�"+$root.m1+"~"}}</text></block></view></block><block wx:if="{{info.memberRidesResponse}}"><view class="ride_content data-v-57280228"><view class="ride_content_a data-v-57280228"><text class="data-v-57280228">{{"鏈�鍚庨獞琛岋細"+info.memberRidesResponse.rideStartTimeStr+"~"+info.memberRidesResponse.rideEndTimeStr+"锛�"+info.memberRidesResponse.rideTime+"鍒嗛挓)"}}</text></view><view class="ride_content_b data-v-57280228"><text class="data-v-57280228">{{"杞﹀瀷锛�"+info.memberRidesResponse.bikeType+"锛堢紪鍙凤細"+info.memberRidesResponse.bikeCode+"锛�"}}</text><text class="data-v-57280228">{{info.memberRidesResponse.priceRole}}</text></view><view class="ride_content_info data-v-57280228"><image src="/static/icon/ic_tip@2x.png" mode="widthFix" class="data-v-57280228"></image><block wx:if="{{info.tips}}"><text class="data-v-57280228">{{info.tips}}</text></block></view></view></block><view data-event-opts="{{[['tap',[['carRental',['$event']]]]]}}" class="ride_btn data-v-57280228" bindtap="__e">鎵爜缁х画楠戣</view><view data-event-opts="{{[['tap',[['settlement',['$event']]]]]}}" class="ride_settlement data-v-57280228" bindtap="__e">缁撴潫楠戣锛岀粨绠楅��鎶奸噾</view></view></u-popup><u-popup vue-id="8dd740cc-7" show="{{show3}}" overlay="{{false}}" closeOnClickOverlay="{{false}}" mode="bottom" bgColor="#fff" round="{{10}}" data-event-opts="{{[['^close',[['e6']]]]}}" bind:close="__e" class="data-v-57280228" bind:__l="__l" vue-slots="{{['default']}}"><view class="deposit1 data-v-57280228"><view class="deposit_text data-v-57280228"><text class="data-v-57280228">娓╅Θ鎻愮ず</text><text class="red data-v-57280228">缁撶畻鍚庯紝濡傛灉缁х画楠戣浼氶噸鏂板紑濮嬭璐�</text><text class="red data-v-57280228">纭缁撶畻涔堬紵</text></view><view class="deposit_footer data-v-57280228"><view data-event-opts="{{[['tap',[['minute',['$event']]]]]}}" class="deposit_footer_item data-v-57280228" bindtap="__e">鍐嶇瓑绛�</view><view data-event-opts="{{[['tap',[['settlement1',['$event']]]]]}}" class="deposit_footer_item c data-v-57280228" bindtap="__e">绔嬪嵆缁撶畻</view></view></view></u-popup><u-modal vue-id="8dd740cc-8" show="{{show4}}" title="{{title}}" content="{{content}}" confirmColor="#01B6AD" data-event-opts="{{[['^confirm',[['e7']]]]}}" bind:confirm="__e" class="data-v-57280228" bind:__l="__l"></u-modal><u-modal vue-id="8dd740cc-9" show="{{show7}}" title="鎻愮ず" content="纭缁撶畻鍚楋紵" showCancelButton="{{true}}" cancelText="鍙栨秷" data-event-opts="{{[['^confirm',[['settlement1']]],['^cancel',[['e8']]]]}}" bind:confirm="__e" bind:cancel="__e" class="data-v-57280228" bind:__l="__l"></u-modal><u-popup vue-id="8dd740cc-10" show="{{show}}" mode="center" overlayStyle="{{({zIndex:'99999'})}}" closeOnClickOverlay="{{false}}" zIndex="99999" bgColor="transparent" round="{{10}}" data-event-opts="{{[['^close',[['e9']]]]}}" bind:close="__e" class="data-v-57280228" bind:__l="__l" vue-slots="{{['default']}}"><view class="popupbox data-v-57280228"><view class="advertisement data-v-57280228"><image src="{{info.adList[0].imgfullurl}}" mode="widthFix" class="data-v-57280228"></image></view><image class="close data-v-57280228" src="/static/images/ic_close@2x.png" mode="widthFix" data-event-opts="{{[['tap',[['e10',['$event']]]]]}}" bindtap="__e"></image></view></u-popup><tram bind:unlockDoor="__e" vue-id="8dd740cc-11" data-ref="d_tram" data-event-opts="{{[['^unlockDoor',[['refresh',['tram']]]]]}}" class="data-v-57280228 vue-ref" bind:__l="__l"></tram></view>
\ No newline at end of file
+<view class="index data-v-57280228"><view class="index_nav data-v-57280228" style="{{'height:'+('calc('+(statusbarHeight+navHeight)+'px'+' + '+'224rpx'+')')+';'}}"><view class="index_nav_a data-v-57280228" style="{{'height:'+(statusbarHeight+'px')+';'}}"></view><view style="{{'height:'+(navHeight+'px')+';'}}" class="data-v-57280228"></view><view class="index_nav_box data-v-57280228" style="{{'background:'+(top>0?'#9AE2DF':'rgba(0,0,0,0)')+';'}}"><view class="index_nav_a data-v-57280228" style="{{'height:'+(statusbarHeight+'px')+';'}}"></view><view style="{{'height:'+(navHeight+'px')+';'}}" class="data-v-57280228"></view><view class="index_nav_b data-v-57280228" style="{{'height:'+(navHeight+'px')+';'+('line-height:'+(navHeight+'px')+';')+('top:'+(statusbarHeight+'px')+';')}}"><text class="data-v-57280228">鍗拌薄婊ㄦ箹瓒e懗鑷杞�</text></view></view><view class="index_box data-v-57280228"><view class="index_box_map data-v-57280228"><map class="map data-v-57280228" id="mapId" scale="15" show-location="{{true}}" polygons="{{eleBusinessArea}}" markers="{{markers}}" latitude="{{latitude}}" longitude="{{longitude}}"></map><view class="index_box_map_type data-v-57280228"><block wx:for="{{types}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['clickType',['$0'],[[['types','',index,'id']]]]]]]}}" class="{{['data-v-57280228',type===item.id?'index_box_map_type_row active':'index_box_map_type_row']}}" bindtap="__e">{{item.name}}</view></block></view><view data-event-opts="{{[['tap',[['jumpMap',['$event']]]]]}}" class="index_box_icon data-v-57280228" bindtap="__e"><image src="/static/icon/ic_fullscreen@2x.png" mode="widthFix" class="data-v-57280228"></image></view></view><view class="index_box_title data-v-57280228"><view class="index_box_title_left data-v-57280228"><text class="data-v-57280228">{{info.parkName}}</text><text class="data-v-57280228">{{"鏈嶅姟鐢佃瘽锛�"+info.serverPhone}}</text></view><image src="/static/icon/ic_call@2x.png" mode="widthFix" data-event-opts="{{[['tap',[['calling',['$0'],['info.serverPhone']]]]]}}" bindtap="__e" class="data-v-57280228"></image></view><view class="index_box_function data-v-57280228"><block wx:for="{{functionList}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['jump',['$0'],[[['functionList','',index]]]]]]]}}" class="cXYC data-v-57280228" style="{{'margin-top:'+(item.id===5?'30rpx':'')+';'}}" catchtap="__e"><block wx:if="{{!userInfo.mobile}}"><button open-type="getPhoneNumber" data-event-opts="{{[['getphonenumber',[['getPhone',['$event']]]]]}}" bindgetphonenumber="__e" class="data-v-57280228"></button></block><image class="img80 data-v-57280228" src="{{item.icon}}" mode="widthFix"></image><text class="f26 c3 mt10 data-v-57280228">{{item.name}}</text></view></block></view><view class="index_box_vip data-v-57280228"><view class="index_box_vip_head data-v-57280228"><text class="data-v-57280228">鐑攢濂楅</text><text data-event-opts="{{[['tap',[['jumpTC',['$event']]]]]}}" bindtap="__e" class="data-v-57280228">鏇村浼樻儬 ></text></view><scroll-view class="scrollView data-v-57280228" scroll-x="{{true}}"><block wx:for="{{tcList}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view class="index_box_vip_row data-v-57280228"><view class="vip1 data-v-57280228"><view class="vip1_left data-v-57280228">{{''+(item.name||'')+''}}</view><view class="vip1_right data-v-57280228">{{''+(item.price||'')+''}}</view></view><view class="vip2 data-v-57280228"><text class="data-v-57280228">{{item.descs||''}}</text><view class="_u data-v-57280228">{{"楼"+(item.linePrice||'')}}</view></view><view class="vip3 data-v-57280228"><view class="vip3_info data-v-57280228">{{"浣庤嚦"+item.dayPrice+"鍏�/澶�"}}</view><view data-event-opts="{{[['tap',[['purchase',['$0'],[[['tcList','',index,'id']]]]]]]}}" class="vip3_button data-v-57280228" bindtap="__e">璐拱</view></view></view></block></scroll-view></view><view data-event-opts="{{[['tap',[['jumpX',['$event']]]]]}}" class="index_box_poster data-v-57280228" bindtap="__e"><image class="imgfull data-v-57280228" src="{{info.leaseNoticeUrl}}" mode="widthFix"></image></view><block wx:if="{{info.leaseVideoUrl}}"><view class="index_box_video data-v-57280228"><video class="img100b data-v-57280228" src="{{info.leaseVideoUrl}}" enable-danmu="{{true}}" danmu-btn="{{true}}" controls="{{true}}"></video></view></block><block wx:if="{{info.memberRidesResponse&&info.memberRidesResponse.ridesType===0}}"><block wx:if="{{show5}}"><view style="width:100%;height:calc(env(safe-area-inset-bottom) + 600rpx);" class="data-v-57280228"></view></block><block wx:else><block wx:if="{{show6}}"><view style="width:100%;height:calc(env(safe-area-inset-bottom) + 660rpx);" class="data-v-57280228"></view></block><block wx:else><block wx:if="{{show2}}"><view style="width:100%;height:calc(env(safe-area-inset-bottom) + 660rpx);" class="data-v-57280228"></view></block><block wx:else><block wx:if="{{show1}}"><view style="width:100%;height:calc(env(safe-area-inset-bottom) + 580rpx);" class="data-v-57280228"></view></block><block wx:else><block wx:if="{{show3}}"><view style="width:100%;height:calc(env(safe-area-inset-bottom) + 500rpx);" class="data-v-57280228"></view></block><block wx:else><view class="index_zw1 data-v-57280228"></view></block></block></block></block></block></block><block wx:else><block wx:if="{{info.memberRidesResponse&&info.memberRidesResponse.ridesType===1}}"><block wx:if="{{$refs.d_tram.d_show3||$refs.d_tram.d_show4}}"><view style="width:100%;height:calc(env(safe-area-inset-bottom) + 660rpx);" class="data-v-57280228"></view></block><block wx:else><view class="index_zw1 data-v-57280228"></view></block></block><block wx:else><view class="index_zw1 data-v-57280228"></view></block></block></view></view><view class="index_scancode data-v-57280228"><view class="index_scancode_top data-v-57280228"><view class="index_scancode_top_left data-v-57280228"><text class="data-v-57280228">閬靛畧浜よ锛屽畨鍏ㄩ獞琛�</text><text class="data-v-57280228">楠戣鏃惰閬靛畧浜ら�氳鍒欙紝瀹夊叏楠戣</text></view><image src="/static/images/ic_safe@2x.png" mode="widthFix" class="data-v-57280228"></image></view><block wx:if="{{!userInfo.mobile}}"><button class="index_scancode_bottom data-v-57280228" open-type="getPhoneNumber" data-event-opts="{{[['getphonenumber',[['getPhone',['$event']]]]]}}" bindgetphonenumber="__e">鎵爜绉熻溅</button></block><block wx:else><view data-event-opts="{{[['tap',[['carRental',['$event']]]]]}}" class="index_scancode_bottom data-v-57280228" bindtap="__e">鎵爜绉熻溅</view></block><view class="index_scancode_zw data-v-57280228"></view></view><u-popup vue-id="8dd740cc-1" show="{{show1}}" closeOnClickOverlay="{{false}}" mode="bottom" bgColor="#fff" round="{{10}}" data-event-opts="{{[['^close',[['e0']]]]}}" bind:close="__e" class="data-v-57280228" bind:__l="__l" vue-slots="{{['default']}}"><view class="deposit data-v-57280228"><view class="deposit_text data-v-57280228"><text class="data-v-57280228">娓╅Θ鎻愮ず</text><text class="data-v-57280228">{{"楠戣闇�瑕佺即绾�"+$root.g0+"鍏冭嚜琛岃溅鎶奸噾"}}</text><text class="data-v-57280228">锛堟娂閲戦殢鏃跺彲閫�锛�</text></view><view data-event-opts="{{[['tap',[['e1',['$event']]]]]}}" class="deposit_read data-v-57280228" bindtap="__e"><block wx:if="{{!active}}"><image src="/static/icon/ic_select@2x.png" mode="widthFix" class="data-v-57280228"></image></block><block wx:else><image src="/static/icon/ic_selected@2x.png" mode="widthFix" class="data-v-57280228"></image></block><view class="deposit_read_z data-v-57280228">鎴戝凡闃呰<text data-event-opts="{{[['tap',[['jumpX',['$event']]]]]}}" catchtap="__e" class="data-v-57280228">銆婄璧侀』鐭ャ��</text>鍜�<text data-event-opts="{{[['tap',[['jumpgz',['$event']]]]]}}" catchtap="__e" class="data-v-57280228">銆婅浠疯鍒欍��</text></view></view><view class="deposit_footer data-v-57280228"><view data-event-opts="{{[['tap',[['e2',['$event']]]]]}}" class="deposit_footer_item data-v-57280228" bindtap="__e">杩斿洖</view><view data-event-opts="{{[['tap',[['depositPayment',['$event']]]]]}}" class="deposit_footer_item c data-v-57280228" bindtap="__e">鍏呭��</view></view></view></u-popup><u-popup vue-id="8dd740cc-2" show="{{show5}}" closeOnClickOverlay="{{false}}" mode="bottom" bgColor="#fff" round="{{10}}" data-event-opts="{{[['^close',[['e3']]]]}}" bind:close="__e" class="data-v-57280228" bind:__l="__l" vue-slots="{{['default']}}"><view class="loading data-v-57280228"><view class="loading_box data-v-57280228"><view class="loading_box_top data-v-57280228"><image src="/static/icon/ic_loading.png" mode="widthFix" class="data-v-57280228"></image><text class="data-v-57280228">寮�閿佷腑</text></view><view class="loading_box_info data-v-57280228">璇锋寜鐓т氦瑙勮椹�</view></view></view></u-popup><u-popup vue-id="8dd740cc-3" show="{{show2}}" overlay="{{false}}" overlayOpacity="0" closeOnClickOverlay="{{false}}" mode="bottom" bgColor="#fff" round="{{10}}" data-event-opts="{{[['^close',[['e4']]]]}}" bind:close="__e" class="data-v-57280228" bind:__l="__l" vue-slots="{{['default']}}"><view class="ride data-v-57280228"><view class="ride_head data-v-57280228"><view class="ride_head_item option data-v-57280228"><text class="data-v-57280228">楠戣鏄庣粏</text><image src="/static/icon/ar_detail@2x.png" mode="widthFix" class="data-v-57280228"></image></view><view class="ride_head_center data-v-57280228"><image src="/static/icon/ic_riding@2x.png" mode="widthFix" class="data-v-57280228"></image><text class="data-v-57280228">楠戣涓�</text></view><view data-event-opts="{{[['tap',[['toRidingDetails']]]]}}" class="ride_head_item data-v-57280228" bindtap="__e"><text class="data-v-57280228">楠戣鏄庣粏</text><image src="/static/icon/ar_detail@2x.png" mode="widthFix" class="data-v-57280228"></image></view></view><block wx:if="{{info&&info.memberRidesResponse&&info.memberRidesResponse.discountMember}}"><view class="info_des_tc data-v-57280228"><u-icon vue-id="{{('8dd740cc-4')+','+('8dd740cc-3')}}" name="info-circle" color="#FF5A31" size="18" class="data-v-57280228" bind:__l="__l"></u-icon><block wx:if="{{info.memberRidesResponse.discountMember.limitType===0}}"><text class="data-v-57280228">鎮ㄦ湁楠戣濂楅锛屾湰娆¤绋嬪厤璐归獞琛�</text></block><block wx:if="{{info.memberRidesResponse.discountMember.limitType===1}}"><text class="data-v-57280228">{{"鎮ㄥ凡璐拱楠戣濂楅锛屾湰娆¤绋嬪厤璐归獞琛�"+$root.m0+"~"}}</text></block></view></block><block wx:if="{{info.memberRidesResponse}}"><view class="ride_content data-v-57280228"><view class="ride_content_a data-v-57280228"><text class="data-v-57280228">{{"寮�濮嬫椂闂达細"+info.memberRidesResponse.rideStartTimeStr}}</text><text class="data-v-57280228">{{"鏈宸查獞琛岋細"+info.memberRidesResponse.rideTime+"鍒嗛挓"}}</text></view><view class="ride_content_b data-v-57280228"><text class="data-v-57280228">{{"杞﹀瀷锛�"+info.memberRidesResponse.bikeType+"锛堢紪鍙凤細"+info.memberRidesResponse.bikeCode+"锛�"}}</text><text class="data-v-57280228">{{info.memberRidesResponse.priceRole}}</text></view><view class="ride_content_info data-v-57280228"><image src="/static/icon/ic_tip@2x.png" mode="widthFix" class="data-v-57280228"></image><block wx:if="{{info.tips}}"><text class="data-v-57280228">{{info.tips}}</text></block></view></view></block><view data-event-opts="{{[['tap',[['navigationReturn',['$event']]]]]}}" class="ride_btn data-v-57280228" bindtap="__e">瀵艰埅鑷冲洯鍖虹珯杩樿溅鐐�</view><view data-event-opts="{{[['tap',[['toFaultReporting',['$event']]]]]}}" class="ride_err data-v-57280228" bindtap="__e"><image src="/static/icon/ic_guzhang@2x.png" mode="widthFix" class="data-v-57280228"></image><text class="data-v-57280228">杞﹁締鏁呴殰涓婃姤</text></view></view></u-popup><u-popup vue-id="8dd740cc-5" show="{{show6}}" overlay="{{false}}" overlayOpacity="0" closeOnClickOverlay="{{false}}" mode="bottom" bgColor="#fff" round="{{10}}" data-event-opts="{{[['^close',[['e5']]]]}}" bind:close="__e" class="data-v-57280228" bind:__l="__l" vue-slots="{{['default']}}"><view class="ride data-v-57280228"><view class="ride_head data-v-57280228"><view class="ride_head_item option data-v-57280228"><text class="data-v-57280228">楠戣鏄庣粏</text><image src="/static/icon/ar_detail@2x.png" mode="widthFix" class="data-v-57280228"></image></view><view class="ride_head_center data-v-57280228"><image src="/static/icon/ic_riding@2x.png" mode="widthFix" class="data-v-57280228"></image><text class="data-v-57280228">宸茶繕杞�</text></view><view data-event-opts="{{[['tap',[['toRidingDetails']]]]}}" class="ride_head_item data-v-57280228" bindtap="__e"><text class="data-v-57280228">楠戣鏄庣粏</text><image src="/static/icon/ar_detail@2x.png" mode="widthFix" class="data-v-57280228"></image></view></view><block wx:if="{{info&&info.memberRidesResponse&&info.memberRidesResponse.discountMember}}"><view class="info_des_tc data-v-57280228"><u-icon vue-id="{{('8dd740cc-6')+','+('8dd740cc-5')}}" name="info-circle" color="#FF5A31" size="18" class="data-v-57280228" bind:__l="__l"></u-icon><block wx:if="{{info.memberRidesResponse.discountMember.limitType===0}}"><text class="data-v-57280228">鎮ㄦ湁楠戣濂楅锛屾湰娆¤绋嬪厤璐归獞琛�</text></block><block wx:if="{{info.memberRidesResponse.discountMember.limitType===1}}"><text class="data-v-57280228">{{"鎮ㄥ凡璐拱楠戣濂楅锛屾湰娆¤绋嬪厤璐归獞琛�"+$root.m1+"~"}}</text></block></view></block><block wx:if="{{info.memberRidesResponse}}"><view class="ride_content data-v-57280228"><view class="ride_content_a data-v-57280228"><text class="data-v-57280228">{{"鏈�鍚庨獞琛岋細"+info.memberRidesResponse.rideStartTimeStr+"~"+info.memberRidesResponse.rideEndTimeStr+"锛�"+info.memberRidesResponse.rideTime+"鍒嗛挓)"}}</text></view><view class="ride_content_b data-v-57280228"><text class="data-v-57280228">{{"杞﹀瀷锛�"+info.memberRidesResponse.bikeType+"锛堢紪鍙凤細"+info.memberRidesResponse.bikeCode+"锛�"}}</text><text class="data-v-57280228">{{info.memberRidesResponse.priceRole}}</text></view><view class="ride_content_info data-v-57280228"><image src="/static/icon/ic_tip@2x.png" mode="widthFix" class="data-v-57280228"></image><block wx:if="{{info.tips}}"><text class="data-v-57280228">{{info.tips}}</text></block></view></view></block><view data-event-opts="{{[['tap',[['carRental',['$event']]]]]}}" class="ride_btn data-v-57280228" bindtap="__e">鎵爜缁х画楠戣</view><view data-event-opts="{{[['tap',[['settlement',['$event']]]]]}}" class="ride_settlement data-v-57280228" bindtap="__e">缁撴潫楠戣锛岀粨绠楅��鎶奸噾</view></view></u-popup><u-popup vue-id="8dd740cc-7" show="{{show3}}" overlay="{{false}}" closeOnClickOverlay="{{false}}" mode="bottom" bgColor="#fff" round="{{10}}" data-event-opts="{{[['^close',[['e6']]]]}}" bind:close="__e" class="data-v-57280228" bind:__l="__l" vue-slots="{{['default']}}"><view class="deposit1 data-v-57280228"><view class="deposit_text data-v-57280228"><text class="data-v-57280228">娓╅Θ鎻愮ず</text><text class="red data-v-57280228">缁撶畻鍚庯紝濡傛灉缁х画楠戣浼氶噸鏂板紑濮嬭璐�</text><text class="red data-v-57280228">纭缁撶畻涔堬紵</text></view><view class="deposit_footer data-v-57280228"><view data-event-opts="{{[['tap',[['minute',['$event']]]]]}}" class="deposit_footer_item data-v-57280228" bindtap="__e">鍐嶇瓑绛�</view><view data-event-opts="{{[['tap',[['settlement1',['$event']]]]]}}" class="deposit_footer_item c data-v-57280228" bindtap="__e">绔嬪嵆缁撶畻</view></view></view></u-popup><u-modal vue-id="8dd740cc-8" show="{{show4}}" title="{{title}}" content="{{content}}" confirmColor="#01B6AD" data-event-opts="{{[['^confirm',[['e7']]]]}}" bind:confirm="__e" class="data-v-57280228" bind:__l="__l"></u-modal><u-modal vue-id="8dd740cc-9" show="{{show7}}" title="鎻愮ず" content="纭缁撶畻鍚楋紵" showCancelButton="{{true}}" cancelText="鍙栨秷" data-event-opts="{{[['^confirm',[['settlement1']]],['^cancel',[['e8']]]]}}" bind:confirm="__e" bind:cancel="__e" class="data-v-57280228" bind:__l="__l"></u-modal><u-popup vue-id="8dd740cc-10" show="{{show}}" mode="center" overlayStyle="{{({zIndex:'99999'})}}" closeOnClickOverlay="{{false}}" zIndex="99999" bgColor="transparent" round="{{10}}" data-event-opts="{{[['^close',[['e9']]]]}}" bind:close="__e" class="data-v-57280228" bind:__l="__l" vue-slots="{{['default']}}"><view class="popupbox data-v-57280228"><view class="advertisement data-v-57280228"><image src="{{info.adList[0].imgfullurl}}" mode="widthFix" class="data-v-57280228"></image></view><image class="close data-v-57280228" src="/static/images/ic_close@2x.png" mode="widthFix" data-event-opts="{{[['tap',[['e10',['$event']]]]]}}" bindtap="__e"></image></view></u-popup><tram bind:unlockDoor="__e" vue-id="8dd740cc-11" data-ref="d_tram" data-event-opts="{{[['^unlockDoor',[['refresh',['tram']]]]]}}" class="data-v-57280228 vue-ref" bind:__l="__l"></tram></view>
\ No newline at end of file
diff --git a/bicycle/unpackage/dist/dev/mp-weixin/pages/index/index.wxss b/bicycle/unpackage/dist/dev/mp-weixin/pages/index/index.wxss
index bb6c693..cce8bd5 100644
--- a/bicycle/unpackage/dist/dev/mp-weixin/pages/index/index.wxss
+++ b/bicycle/unpackage/dist/dev/mp-weixin/pages/index/index.wxss
@@ -169,6 +169,7 @@
display: flex;
align-items: center;
justify-content: space-between;
+ flex-wrap: wrap;
position: relative;
top: -24rpx;
}
@@ -176,6 +177,7 @@
font-weight: 400;
}
.index .index_nav .index_box .index_box_function .cXYC.data-v-57280228 {
+ width: 23%;
position: relative;
}
.index .index_nav .index_box .index_box_function .cXYC button.data-v-57280228 {
diff --git a/bicycle/unpackage/dist/dev/mp-weixin/project.private.config.json b/bicycle/unpackage/dist/dev/mp-weixin/project.private.config.json
index 33c440a..cac8e08 100644
--- a/bicycle/unpackage/dist/dev/mp-weixin/project.private.config.json
+++ b/bicycle/unpackage/dist/dev/mp-weixin/project.private.config.json
@@ -3,5 +3,32 @@
"projectname": "bicycle",
"setting": {
"compileHotReLoad": true
+ },
+ "condition": {
+ "miniprogram": {
+ "list": [
+ {
+ "name": "杩愯惀涓績鍒楄〃",
+ "pathName": "pages/operationList/operationList",
+ "query": "",
+ "scene": null,
+ "launchMode": "default"
+ },
+ {
+ "name": "杩愯惀涓績",
+ "pathName": "pages/operationsCenter/operationsCenter",
+ "query": "",
+ "launchMode": "default",
+ "scene": null
+ },
+ {
+ "name": "杩愯惀涓績鐧诲綍",
+ "pathName": "pages/operationLogin/operationLogin",
+ "query": "",
+ "launchMode": "default",
+ "scene": null
+ }
+ ]
+ }
}
}
\ No newline at end of file
diff --git a/bicycle/utils/http.api.js b/bicycle/utils/http.api.js
index b7d98f5..f38f652 100644
--- a/bicycle/utils/http.api.js
+++ b/bicycle/utils/http.api.js
@@ -34,6 +34,11 @@
let backElecBike = (data = {}) => uni.$u.http.post('web/business/backElecBike', data) // 鐢佃溅绔欑偣杩樿溅
let pauseElecBike = (data = {}) => uni.$u.http.post('web/business/pauseElecBike', data) // 鐢佃溅涓存椂鍋滆溅
let pauseOpenElecBike = (data = {}) => uni.$u.http.post('web/business/pauseOpenElecBike', data) // 鐢佃溅涓村仠寮�閿�
+ let login = (data = {}) => uni.$u.http.post('web/manger/login', data) // 鐧诲綍绠$悊鍛樿处鍙�
+ let logout = (data = {}) => uni.$u.http.post('web/manger/logout', data) // 閫�鍑虹鐞嗗憳璐﹀彿
+ let pageBikes = (data = {}) => uni.$u.http.post('web/manger/pageBikes', data) // 鍒嗛〉鏌ヨ鐢佃溅鍒楄〃
+ let updateBikeStatus = (params = {}) => uni.$u.http.get('web/manger/updateBikeStatus/batch', { params }) // 鐢佃溅鎵归噺涓婁笅鏋�
+ let updateLockStatus = (params = {}) => uni.$u.http.get('web/manger/updateLockStatus/batch', { params }) // 鐢佃溅鎵归噺寮�鍏抽攣
vm.$u.api = {
@@ -63,7 +68,12 @@
openElecBike,
backElecBike,
pauseElecBike,
- pauseOpenElecBike
+ pauseOpenElecBike,
+ login,
+ logout,
+ pageBikes,
+ updateBikeStatus,
+ updateLockStatus
};
}
diff --git a/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java b/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
index f27e18d..753f115 100644
--- a/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/GoodsorderController.java
@@ -10,6 +10,7 @@
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.dao.business.model.WxBillDetail;
+import com.doumee.dao.business.vo.BikeIncomeReportVO;
import com.doumee.dao.business.vo.DiscountGoodsorderExportVO;
import com.doumee.dao.business.vo.GoodsorderExportVO;
import com.doumee.dao.business.vo.GoodsorderTotalDataVO;
@@ -31,6 +32,7 @@
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -94,6 +96,7 @@
return ApiResponse.success(goodsorderService.findPage(pageWrap));
}
+
@ApiOperation("绾夸笂浜ゆ槗姹囨�绘暟鎹帴鍙�")
@PostMapping("/getTotalData")
@RequiresPermissions("business:goodsorder:query")
@@ -102,6 +105,8 @@
pageWrap.setEndDate(pageWrap.getEndDate() != null ? pageWrap.getEndDate():pageWrap.getStartDate());
return ApiResponse.success(goodsorderService.getTotalData(pageWrap));
}
+
+
@ApiOperation("璁㈠崟鍒楄〃-瀵煎嚭Excel")
@PostMapping("/exportExcel")
@@ -135,6 +140,7 @@
public ApiResponse<PageData<GoodsorderExportVO>> findPageAccountDetail(@RequestBody PageWrap<Goodsorder> pageWrap) {
return ApiResponse.success(goodsorderService.findAccountDetailPage(pageWrap));
}
+
@ApiOperation("鏀舵鏄庣粏锛堝井淇″璐︽槑缁嗭級_瀵煎嚭Excel")
@PostMapping("/exportAccountDetailExcel")
@RequiresPermissions("business:goodsorder:exportExcel")
@@ -186,4 +192,19 @@
public ApiResponse<GoodsorderCanBanlanceDTO> getGoodsorderCanBanlanceDTO(@RequestParam String orderId){
return ApiResponse.success(goodsorderService.getGoodsorderCanBanlanceDTO(orderId));
}
+
+
+ @ApiOperation("杞﹀瀷鏀跺叆鍒嗘瀽")
+ @PostMapping("/getBikeIncomeReportVOList")
+ public ApiResponse<List<List<String>>> getBikeIncomeReportVOList (@RequestBody Goodsorder goodsorder) {
+ return ApiResponse.success(goodsorderService.getBikeIncomeReportVOList(goodsorder.getStartDate(),goodsorder.getEndDate()));
+ }
+
+
+
+ @ApiOperation("杞﹀瀷鏀跺叆鍒嗘瀽-瀵煎嚭Excel")
+ @PostMapping("/bikeIncomeExportExcel")
+ public void exportExcel (@RequestBody Goodsorder goodsorder, HttpServletResponse response) {
+ goodsorderService.excel(goodsorder.getStartDate(),goodsorder.getEndDate(),response);
+ }
}
diff --git a/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
index 6358b59..c6090e0 100644
--- a/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
+++ b/server/services/src/main/java/com/doumee/core/annotation/excel/ExcelExporter.java
@@ -1,5 +1,6 @@
package com.doumee.core.annotation.excel;
+import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.dao.business.model.Goodsorder;
@@ -168,6 +169,21 @@
}
}
}
+
+// public void exportList (List<List<String>> data, String fileName, String sheetName, HttpServletResponse response) {
+// try {
+// String encodeFileName = URLEncoder.encode(fileName, Charset.forName("UTF-8").toString()) + ".xlsx";
+// response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
+// response.setContentType("application/octet-stream");
+// response.setHeader("eva-opera-type", "download");
+// response.setHeader("eva-download-filename", encodeFileName);
+// this.exportList(data, sheetName, response.getOutputStream());
+// } catch (IOException e) {
+// throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+// }
+// }
+
+
/**
* 瀵煎嚭鍒版寚瀹氳緭鍑烘祦
* @param os 杈撳嚭娴�
@@ -181,27 +197,47 @@
sheet.createFreezePane(0, 1);
Row header = sheet.createRow(0);
CellStyle hstyle = configHeaderCellStatic(sxssfWorkbook);
- CellStyle cstyle = configCellStatic(sxssfWorkbook);
- List<String> headerList =dataList.get(0);
- for (int i = 0; i < headerList.size(); i++) {
+ for (int i = 0; i < dataList.size(); i++) {
Cell cell = header.createCell(i);
- cell.setCellValue(headerList.get(i));
+ cell.setCellValue(dataList.get(i).get(Constants.ZERO));
// 鍒楀璁剧疆
- sheet.setColumnWidth(i, headerList.get(i).length() * 2 * 256);
+ sheet.setColumnWidth(i, dataList.get(i).get(Constants.ZERO).length() * 2 * 256);
// 璁剧疆鍒楀ご鍗曞厓鏍�
cell.setCellStyle(hstyle);
}
- // 鍒涘缓鏁版嵁璁板綍
- for (int rowIndex = 1; rowIndex < dataList.size(); rowIndex++) {
- Row row = sheet.createRow(rowIndex );
- List<String> rowList = dataList.get(rowIndex);
- for (int i = 0; i < rowList.size(); i++) {
- Cell cell = row.createCell(i);
- cell.setCellValue(rowList.get(i));
- // 鍒楀璁剧疆
- cell.setCellStyle(cstyle);
+
+ //鎬昏鏁�
+ Integer rowSize = dataList.get(Constants.ZERO).size();
+ //鎬诲垪鏁�
+ Integer columnSize = dataList.size();
+ for (int i = 1; i < rowSize; i++) {
+ Row row = sheet.createRow(i);
+ for (int j = 0; j < columnSize; j++) {
+ Cell cell = row.createCell(j);
+ cell.setCellValue(dataList.get(j).get(i));
}
}
+//
+// List<String> headerList =dataList.get(0);
+// for (int i = 0; i < headerList.size(); i++) {
+// Cell cell = header.createCell(i);
+// cell.setCellValue(headerList.get(i));
+// // 鍒楀璁剧疆
+// sheet.setColumnWidth(i, headerList.get(i).length() * 2 * 256);
+// // 璁剧疆鍒楀ご鍗曞厓鏍�
+// cell.setCellStyle(hstyle);
+// }
+// // 鍒涘缓鏁版嵁璁板綍
+// for (int rowIndex = 1; rowIndex < dataList.size(); rowIndex++) {
+// Row row = sheet.createRow(rowIndex );
+// List<String> rowList = dataList.get(rowIndex);
+// for (int i = 0; i < rowList.size(); i++) {
+// Cell cell = row.createCell(i);
+// cell.setCellValue(rowList.get(i));
+// // 鍒楀璁剧疆
+// cell.setCellStyle(cstyle);
+// }
+// }
sxssfWorkbook.write(os);
os.close();
} catch (Exception e) {
diff --git a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
index ca3082d..f585aa6 100644
--- a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -69,6 +69,30 @@
}
+ public static List<Date> getDateList(Date dBegin, Date dEnd) {
+ int i = 1;
+ //鏃ユ湡宸ュ叿绫诲噯澶�
+ DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ //璁剧疆寮�濮嬫椂闂�
+ Calendar calBegin = Calendar.getInstance();
+ calBegin.setTime(dBegin);
+ int weekNumber = calBegin.get(Calendar.DAY_OF_WEEK) - 1;
+ //璁剧疆缁撴潫鏃堕棿
+ Calendar calEnd = Calendar.getInstance();
+ calEnd.setTime(dEnd);
+ //瑁呰繑鍥炵殑鏃ユ湡闆嗗悎瀹瑰櫒
+ List<Date> dateList = new ArrayList<Date>();
+ dateList.add(dBegin);
+ //灏嗙涓�涓湀娣诲姞閲岄潰鍘�
+ while (dEnd.after(calBegin.getTime())) {
+ calBegin.add(Calendar.DAY_OF_MONTH, 1);
+ Date date = calBegin.getTime();
+ dateList.add(date);
+ }
+ return dateList;
+ }
+
+
public static Date StringToDateFormat(String DATE,String format) {
if(StringUtils.isBlank(DATE)){
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java b/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
index ac0e439..dbf46d2 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/DiscountMember.java
@@ -28,6 +28,7 @@
@ApiModelProperty(value = "鍒涘缓鏃堕棿")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ExcelColumn(name="鍒涘缓鏃堕棿",index = 8,width = 16,dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date createDate;
@ApiModelProperty(value = "鍒涘缓浜�")
@@ -55,7 +56,7 @@
private String name;
@ApiModelProperty(value = "绫诲瀷 0鏈熼檺鍗� 1娆″崱", example = "1")
- @ExcelColumn(name="濂楅绫诲瀷",index = 1,valueMapping = "0=鏈熼檺鍗★紱1=娆″崱锛�",width = 10)
+ @ExcelColumn(name="濂楅绫诲瀷",index = 1,valueMapping = "0=鏈熼檺鍗�;1=娆″崱;",width = 10)
private Integer type;
@ApiModelProperty(value = "姣忔棩楠戣闄愬埗绫诲瀷 0涓嶉檺鍒� 1闄愬埗", example = "1")
@@ -162,4 +163,14 @@
@ApiModelProperty(value = "鎿嶄綔璁板綍")
@TableField(exist = false)
private List<DiscountLog> optLogList;
+
+ @ApiModelProperty(value = "鏌ヨ寮�濮嬫棩鏈燂紙鍖呭惈锛�", example = "2023-10-01 15:12:01")
+ @TableField(exist = false)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date startCreateDate;
+
+ @ApiModelProperty(value = "鏌ヨ鎴鏃ユ湡锛堝寘鍚級", example = "2023-10-09 15:12:05")
+ @TableField(exist = false)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endCreateDate;
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java b/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java
index 8af42cf..e0bf2db 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Goodsorder.java
@@ -103,6 +103,8 @@
private String closeUserId;
@ApiModelProperty(value = "缁撶畻绫诲瀷 0鐢ㄦ埛鑷缁撶畻 1骞冲彴浜哄伐寮哄埗缁撶畻 2绯荤粺鑷姩缁撶畻")
private Integer closeType;
+ @ApiModelProperty(value = "缁撶畻杞﹀瀷缂栫爜")
+ private String paramId;
@ApiModelProperty(value = "鐢ㄦ埛openid" )
@TableField(exist = false)
@ExcelColumn(name="鐢ㄦ埛",index = 1 ,width = 10,align = HorizontalAlignment.CENTER)
@@ -123,11 +125,12 @@
@ExcelColumn(name="閫�鎶奸噾(鍏�)",index = 6,width = 10,align = HorizontalAlignment.CENTER)
private BigDecimal refundMoney;
@ApiModelProperty(value = "楠戣鍗℃姷鎵�(鍒嗭級")
+ @ExcelColumn(name="浼樻儬閲戦",index = 10,width = 10,align = HorizontalAlignment.CENTER)
@TableField(exist = false)
private BigDecimal discountMoney;
@ApiModelProperty(value = "鏈�鍚庨��娆炬椂闂�")
@TableField(exist = false)
- @ExcelColumn(name="閫�娆剧粨绠楁椂闂�",index = 9,width = 10,align = HorizontalAlignment.CENTER,dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @ExcelColumn(name="閫�娆炬椂闂�",index = 9,width = 10,align = HorizontalAlignment.CENTER,dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date refundDate;
@ApiModelProperty(value = "鏈�杩戦獞琛岀姸鎬�")
@TableField(exist = false)
@@ -137,7 +140,6 @@
private Integer closeStatus;
@ApiModelProperty(value = "鎿嶄綔浜�")
- @ExcelColumn(name="鎿嶄綔浜�",index = 9,width = 10,align = HorizontalAlignment.CENTER)
@TableField(exist = false)
private String refundUserName;
@@ -145,4 +147,9 @@
@TableField(exist = false)
private String discountName;
+ @ApiModelProperty(value = "楠戣绫诲瀷")
+ @ExcelColumn(name="璁㈠崟绫诲瀷",index = 11,width = 10,valueMapping = "3=鍗曡溅绫诲瀷;4=鐢佃溅绫诲瀷;",align = HorizontalAlignment.CENTER)
+ @TableField(exist = false)
+ private Integer bikeType;
+
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeDetailReportVO.java b/server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeDetailReportVO.java
new file mode 100644
index 0000000..8840b4f
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeDetailReportVO.java
@@ -0,0 +1,25 @@
+package com.doumee.dao.business.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 璁㈠崟淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @date 2023/09/27 18:06
+ */
+@Data
+@ApiModel("杞﹀瀷鏀跺叆鍒嗘瀽")
+public class BikeIncomeDetailReportVO {
+
+ @ApiModelProperty(value = "鏀跺叆閲戦")
+ private String totalAmount;
+
+ @ApiModelProperty(value = "鏃ユ湡鍊�")
+ private String dateStr;
+
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeReportVO.java b/server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeReportVO.java
new file mode 100644
index 0000000..054fa24
--- /dev/null
+++ b/server/services/src/main/java/com/doumee/dao/business/vo/BikeIncomeReportVO.java
@@ -0,0 +1,32 @@
+package com.doumee.dao.business.vo;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 璁㈠崟淇℃伅琛�
+ * @author 姹熻箘韫�
+ * @date 2023/09/27 18:06
+ */
+@Data
+@ApiModel("杞﹀瀷鏀跺叆鍒嗘瀽")
+public class BikeIncomeReportVO {
+
+ @ApiModelProperty(value = "杞﹀瀷鍚嶇О")
+ private String paramName;
+
+ @ApiModelProperty(value = "杞﹀瀷涓婚敭")
+ private String paramId;
+
+// @ApiModelProperty(value = "琛屾暟鎹敹鍏ュ垪琛�")
+// private List<BikeIncomeDetailReportVO> bikeIncomeDetailReportVOList;
+
+ @ApiModelProperty(value = "琛屾暟鎹敹鍏ュ垪琛�")
+ private List<String> dataList;
+
+}
diff --git a/server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java b/server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java
index a994ae9..87bafe0 100644
--- a/server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java
+++ b/server/services/src/main/java/com/doumee/dao/business/vo/GoodsorderExportVO.java
@@ -57,4 +57,11 @@
@ExcelColumn(name="閫�娆炬椂闂�",width = 10,index = 5,align = HorizontalAlignment.CENTER,dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date refundDate;
+ @ApiModelProperty(value = "楠戣绫诲瀷")
+ @ExcelColumn(name="璁㈠崟绫诲瀷",index = 8,width = 10,valueMapping = "1=濂楅璁㈠崟;3=鑷杞﹁鍗�;4=鐢靛姩杞﹁鍗�;",align = HorizontalAlignment.CENTER)
+ private Integer bikeType;
+
+ @ApiModelProperty(value = "浜ゆ槗绫诲瀷 0绉熻溅鎶奸噾 1濂楅鍗¤喘涔�")
+ private Integer type;
+
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/web/response/RidesDetailResponse.java b/server/services/src/main/java/com/doumee/dao/business/web/response/RidesDetailResponse.java
index ff943c2..373233b 100644
--- a/server/services/src/main/java/com/doumee/dao/business/web/response/RidesDetailResponse.java
+++ b/server/services/src/main/java/com/doumee/dao/business/web/response/RidesDetailResponse.java
@@ -35,6 +35,9 @@
@ApiModelProperty(value = "鎶垫墸閲戦")
private BigDecimal disCountMoney;
+ @ApiModelProperty(value = "杞﹁締绫诲瀷缂栫爜")
+ private String paramId;
+
@ApiModelProperty(value = "楠戣璁板綍")
private List<MemberRidesResponse> memberRidesResponseList;
diff --git a/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java b/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
index 9a570bf..a63ecaa 100644
--- a/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
+++ b/server/services/src/main/java/com/doumee/service/business/GoodsorderService.java
@@ -8,6 +8,7 @@
import com.doumee.dao.business.model.DiscountMember;
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.dao.business.model.MemberRides;
+import com.doumee.dao.business.vo.BikeIncomeReportVO;
import com.doumee.dao.business.vo.GoodsorderExportVO;
import com.doumee.dao.business.vo.GoodsorderTotalDataVO;
import com.doumee.dao.business.web.request.BackElecBikeRequest;
@@ -20,7 +21,9 @@
import com.wechat.pay.java.service.refund.model.RefundNotification;
import io.swagger.models.auth.In;
+import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
+import java.util.Date;
import java.util.List;
/**
@@ -212,4 +215,8 @@
DiscountMember getUseDiscount(String memberId, Integer driveTime,Integer type);
void autCancel();
+
+ List<List<String>> getBikeIncomeReportVOList(Date startDate , Date endDate);
+
+ void excel(Date startDate , Date endDate, HttpServletResponse response);
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java
index aab545c..479c726 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/DiscountMemberServiceImpl.java
@@ -11,10 +11,7 @@
import com.doumee.dao.business.DiscountLogMapper;
import com.doumee.dao.business.DiscountMemberMapper;
import com.doumee.dao.business.join.DiscountMemberJoinMapper;
-import com.doumee.dao.business.model.Discount;
-import com.doumee.dao.business.model.DiscountLog;
-import com.doumee.dao.business.model.DiscountMember;
-import com.doumee.dao.business.model.Member;
+import com.doumee.dao.business.model.*;
import com.doumee.dao.business.web.request.DiscountMemberDTO;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.DiscountMemberService;
@@ -147,6 +144,8 @@
.like(StringUtils.isNotBlank(model.getName()),DiscountMember::getName,model.getName())
.like(StringUtils.isNotBlank(model.getOpenid()),Member::getOpenid,model.getOpenid())
.eq(Objects.nonNull(model.getStatus()),DiscountMember::getStatus,model.getStatus())
+ .ge(Objects.nonNull(model.getStartCreateDate()),DiscountMember::getCreateDate, model.getStartCreateDate())
+ .le(Objects.nonNull(model.getEndCreateDate()),DiscountMember::getCreateDate, model.getEndCreateDate())
.ne(DiscountMember::getStatus,Constants.TWO)
.orderByDesc(DiscountMember::getCode);
return PageData.from(discountMemberJoinMapper.selectJoinPage(page, DiscountMember.class,queryWrapper));
@@ -249,4 +248,8 @@
QueryWrapper<DiscountMember> wrapper = new QueryWrapper<>(discountMember);
return discountMemberMapper.selectCount(wrapper);
}
+
+
+
+
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 0b3c4a2..74ead5c 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.constants.Constants;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.Constants;
@@ -28,6 +29,8 @@
import com.doumee.dao.business.model.Goodsorder;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.MemberRides;
+import com.doumee.dao.business.vo.BikeIncomeDetailReportVO;
+import com.doumee.dao.business.vo.BikeIncomeReportVO;
import com.doumee.dao.business.vo.GoodsorderExportVO;
import com.doumee.dao.business.vo.GoodsorderTotalDataVO;
import com.doumee.dao.business.web.request.*;
@@ -58,10 +61,14 @@
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
import java.math.BigDecimal;
import java.net.InetAddress;
+import java.net.URLEncoder;
import java.net.UnknownHostException;
+import java.nio.charset.Charset;
import java.sql.Ref;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
@@ -199,7 +206,9 @@
MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>();
queryWrapper.selectAll(Goodsorder.class);
queryWrapper.selectAs(Member::getOpenid, Goodsorder::getOpenid);
+ queryWrapper.selectAs(BaseParam::getType, Goodsorder::getBikeType);
queryWrapper.leftJoin(Member.class, Member::getId ,Goodsorder::getMemberId);
+ queryWrapper.leftJoin(BaseParam.class, BaseParam::getId ,Goodsorder::getParamId);
queryWrapper.select("(select max(r.done_date) from refund r where r.obj_id=t.id and r.status=2 ) as refund_date");
queryWrapper.select("(select sum(r.money) from refund r where r.obj_id=t.id and r.status=2) as refund_money");
//鏃堕棿娈电瓫閫�
@@ -213,6 +222,9 @@
queryWrapper.eq(Goodsorder::getPayStatus,Constants.ONE);
queryWrapper.orderByAsc(Goodsorder::getPayDate);
goodsorderExportVOIPage = goodsorderJoinMapper.selectJoinPage(page, GoodsorderExportVO.class, queryWrapper);
+
+
+
}else{
MPJLambdaWrapper<Refund> queryWrapper = new MPJLambdaWrapper<>();
queryWrapper.selectAs(Refund::getMoney,GoodsorderExportVO::getRefundMoney);
@@ -240,6 +252,7 @@
if (!CollectionUtils.isEmpty(goodsorderExportVOIPage.getRecords())){
goodsorderExportVOIPage.getRecords().forEach(s->{
+ s.setBikeType(s.getType()==Constants.ZERO?s.getBikeType():Constants.ONE);
s.setMoney(Constants.translateMoney(s.getMoney()));
s.setRefundMoney(Constants.translateMoney(s.getRefundMoney()));
s.setCloseMoney(Constants.translateMoney(s.getCloseMoney()).compareTo(s.getMoney()) > 0 ? s.getMoney() : Constants.translateMoney(s.getCloseMoney()));
@@ -283,6 +296,7 @@
}
if (!CollectionUtils.isEmpty(goodsorderList)){
goodsorderList.forEach(s->{
+ s.setBikeType(s.getType()==Constants.ZERO?s.getBikeType():Constants.ONE);
s.setMoney(Constants.translateMoney(s.getMoney()));
s.setCloseMoney(Constants.translateMoney(s.getCloseMoney()).compareTo(s.getMoney()) > 0 ? s.getMoney() : Constants.translateMoney(s.getCloseMoney()));
s.setRefundMoney(Constants.translateMoney(s.getRefundMoney()));
@@ -296,11 +310,13 @@
queryWrapper.selectAll(Goodsorder.class);
queryWrapper.selectAs(Member::getOpenid, Goodsorder::getOpenid);
queryWrapper.selectAs(DiscountMember::getName, Goodsorder::getDiscountName);
+ queryWrapper.selectAs(BaseParam::getType, Goodsorder::getBikeType);
queryWrapper.leftJoin(Member.class, Member::getId ,Goodsorder::getMemberId);
queryWrapper.leftJoin(DiscountMember.class, DiscountMember::getGoodsorderId ,Goodsorder::getId);
-// queryWrapper.select("(select r.name from discount_member r where r.isdeleted=0 and r.goodsorder_id=t.id limit 1) as discountName");
+ queryWrapper.leftJoin(BaseParam.class, BaseParam::getId ,Goodsorder::getParamId);
queryWrapper.select("(select max(r.done_date) from refund r where r.obj_id=t.id and r.status in(0,2)) as refund_date");
queryWrapper.select("(select sum(r.money) from refund r where r.obj_id=t.id and r.status in(0,2)) as refund_money");
+ queryWrapper.select("(select sum(d.ride_price) from discount_log d where d.goodsorder_id=t.id and d.type = 0) as discountMoney");
//鏃堕棿娈电瓫閫�
if (Objects.nonNull(model.getStartDate())){
queryWrapper.ge(Goodsorder::getPayDate, Utils.Date.getStart(model.getStartDate()));
@@ -308,6 +324,7 @@
if (Objects.nonNull(model.getEndDate())){
queryWrapper.le( Goodsorder::getPayDate, Utils.Date.getEnd(model.getEndDate()));
}
+ queryWrapper.eq(Objects.nonNull(model.getBikeType()),BaseParam::getType,model.getBikeType());
queryWrapper.eq(Constants.equalsInteger(model.getType(),Constants.ONE)&&model.getPayStatus() !=null,Goodsorder::getPayStatus,model.getPayStatus());
queryWrapper.like(model.getCode() !=null,Goodsorder::getCode,model.getCode());
queryWrapper.like(model.getId() !=null,Goodsorder::getId,model.getId());
@@ -333,6 +350,8 @@
queryWrapper.select("(select sum(er.discount_price) from member_rides er where er.ordre_id=t.id and er.isdeleted=0) as discountMoney," +
"(select er.status from member_rides er where er.ordre_id=t.id order by er.create_date desc limit 1) as memberRidesStatus");
+
+
queryWrapper.select("( select s.realname from refund r left join system_user s on r.creator = s.id where r.obj_id = t.id order by r.id desc limit 1 ) ",Goodsorder::getRefundUserName);
if(Objects.nonNull(pageWrap.getModel().getCloseStatus()) && pageWrap.getModel().getCloseStatus().equals(Constants.ZERO)){
queryWrapper.ne(Goodsorder::getStatus,Constants.GOODSORDER_STATUS.CLOSE.getKey());
@@ -627,6 +646,7 @@
freeTime = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME, Constants.FREE_RENT_TIME).getCode());
}catch (Exception e){
}
+
closeMoney = getCloseMoneyByRides(memberRides,freeTime,true,goodsorder.getMoney(),goodsorder.getMemberId(),true).getAmount();
//瀹為檯缁撶畻浠锋牸锛岃褰曞湪鏈�楂樿溅鍨嬭褰曚笂
// memberRides.get(0).setActualPrice(closeMoney);
@@ -674,6 +694,31 @@
memberRidesJoinMapper.updateById(up);
}
}
+ int durationSum = 0;
+ int freeTime = 0;
+ try {
+ freeTime = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME, Constants.FREE_RENT_TIME).getCode());
+ }catch (Exception e){
+ }
+ //鏈�楂樹环鏍艰溅鍨嬬殑楠戣璁板綍
+ //MemberRides topRides = this.getMaxRides(memberRides,durationSum,freeTime,true);
+ MemberRides topRides =null;
+ for(MemberRides rides : memberRides){
+ if ( true && Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(rides.getStatus()))){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁㈠崟鏈夋湭瀹屾垚鐨勯獞琛岋紝鏃犳硶寮哄埗缁撶畻");
+ }
+ durationSum += Constants.formatIntegerNum(rides.getDuration());//绱楠戣锛堣璐癸級鏃堕暱
+ if(durationSum-freeTime > 0 ){//鍙畻瓒呭嚭鍏嶈垂鏃堕暱鐨勬暟鎹�
+ if(topRides == null ||( Constants.formatIntegerNum(topRides.getSortnum())<Constants.formatIntegerNum(rides.getSortnum())
+ && Constants.formatIntegerNum(rides.getDuration())>0)){
+ topRides = rides;
+ }
+ }
+ }
+ //鏃犺秴杩囧厤璐规椂闀跨殑楠戣璁板綍 鏌ヨ鏈�鍚庝竴鏉¤褰�
+ if(Objects.isNull(topRides)){
+ topRides = memberRidesJoinMapper.selectOne(new QueryWrapper<MemberRides>().lambda().eq(MemberRides::getOrdreId,goodsorder.getId()).orderByDesc(MemberRides::getCreateDate).last("limit 1"));
+ }
// BigDecimal closeMoney =( Constants.formatDecimalNum(goodsorder.getMoney()).subtract(refund.getMoney()));
//閫�娆句箰琛�
// int type =Constants.formatIntegerNum(refund.getType());
@@ -681,6 +726,7 @@
update.setId(goodsorder.getId());
update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey());
update.setCloseMoney(closeMoney);
+ update.setParamId(Objects.nonNull(topRides)?topRides.getParamId():null);
update.setCloseStatus(Constants.ONE);
update.setCloseDate(new Date());
update.setCloseInfo(Constants.REFUND_TYPE.get(type).getInfo());
@@ -717,6 +763,23 @@
transactionsMapper.insert(transactions);
//淇敼璁㈠崟淇℃伅
goodsorderMapper.updateById(update);
+ }
+
+ public MemberRides getMaxRides(List<MemberRides> memberRides,Integer durationSum,Integer freeTime,boolean isClose){
+ MemberRides topRides =null;
+ for(MemberRides rides : memberRides){
+ if ( isClose && Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(rides.getStatus()))){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁㈠崟鏈夋湭瀹屾垚鐨勯獞琛岋紝鏃犳硶寮哄埗缁撶畻");
+ }
+ durationSum += Constants.formatIntegerNum(rides.getDuration());//绱楠戣锛堣璐癸級鏃堕暱
+ if(durationSum-freeTime > 0 ){//鍙畻瓒呭嚭鍏嶈垂鏃堕暱鐨勬暟鎹�
+ if(topRides == null ||( Constants.formatIntegerNum(topRides.getSortnum())<Constants.formatIntegerNum(rides.getSortnum())
+ && Constants.formatIntegerNum(rides.getDuration())>0)){
+ topRides = rides;
+ }
+ }
+ }
+ return topRides;
}
/**
* 閫�娆炬垚鍔熷洖璋�
@@ -792,14 +855,30 @@
transactionsMapper.insert(transactions);
}
+ @Override
+ public List<MemberRides> getMemberRidesForClose(String id) {
+ MPJLambdaWrapper<MemberRides> wrapper = new MPJLambdaWrapper<>();
+ wrapper.eq(MemberRides::getOrdreId,id);
+ wrapper.ne(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.LOCKING_DEFEAT.getKey());
+ wrapper.selectAll(MemberRides.class)
+ .selectAs(BaseParam::getSortnum, MemberRides::getSortnum)
+ .selectAs(BaseParam::getName, MemberRides::getParamName);
+ wrapper.leftJoin(BaseParam.class, BaseParam::getId, MemberRides::getParamId);
+ wrapper.orderByDesc(BaseParam::getSortnum);
+ //鍙栨渶楂樿溅鍨嬩綔涓鸿浠锋柟妗�
+ //鏌ヨ鎵�鏈夐獞琛岃褰�
+ List<MemberRides> memberRides = memberRidesJoinMapper.selectJoinList(MemberRides.class,wrapper);
+ return memberRides;
+ }
+
private RidesDetailResponse getCloseMoneyByRides(List<MemberRides> memberRides,int freeTime,boolean isClose,BigDecimal yjMoney,String memberId,Boolean unOver) {
RidesDetailResponse ridesDetailResponse = new RidesDetailResponse();
ridesDetailResponse.setHaveDisCount(Constants.ZERO);
BigDecimal closeMoney = new BigDecimal(0.00);
int durationSum = 0;
+ //鏈�楂樹环鏍艰溅鍨嬬殑楠戣璁板綍
+ //MemberRides topRides = this.getMaxRides(memberRides,durationSum,freeTime,isClose);
MemberRides topRides =null;
-
- //鍙栨渶楂樿溅鍨嬭绠楁柟妗堢粨绠楄鍗�
for(MemberRides rides : memberRides){
if ( isClose && Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(rides.getStatus()))){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁㈠崟鏈夋湭瀹屾垚鐨勯獞琛岋紝鏃犳硶寮哄埗缁撶畻");
@@ -812,7 +891,6 @@
}
}
}
-
//璁$畻搴斾粯閲戦
if( topRides != null){
int baseTime =Constants.formatIntegerNum(topRides.getBaseTime());
@@ -827,7 +905,9 @@
}
}
topRides.setActualPrice(closeMoney);
- }
+ //2025骞�3鏈�18鏃�11:28:38 杩斿洖楠戣浠锋牸鏈�楂樼殑杞﹀瀷
+ ridesDetailResponse.setParamId(topRides.getParamId());
+ }
//鏌ヨ鏄惁瀛樺湪濂楅淇℃伅
DiscountMember discountMember = this.getUseDiscount(memberId,durationSum,Objects.nonNull(topRides)?topRides.getType():null);
//璁$畻鎶垫墸閲戦
@@ -891,22 +971,6 @@
ridesDetailResponse.setAmount(closeMoney);
ridesDetailResponse.setBikeType(topRides!=null?topRides.getParamName():"-");
return ridesDetailResponse;
- }
-
- @Override
- public List<MemberRides> getMemberRidesForClose(String id) {
- MPJLambdaWrapper<MemberRides> wrapper = new MPJLambdaWrapper<>();
- wrapper.eq(MemberRides::getOrdreId,id);
- wrapper.ne(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.LOCKING_DEFEAT.getKey());
- wrapper.selectAll(MemberRides.class)
- .selectAs(BaseParam::getSortnum, MemberRides::getSortnum)
- .selectAs(BaseParam::getName, MemberRides::getParamName);
- wrapper.leftJoin(BaseParam.class, BaseParam::getId, MemberRides::getParamId);
- wrapper.orderByDesc(BaseParam::getSortnum);
- //鍙栨渶楂樿溅鍨嬩綔涓鸿浠锋柟妗�
- //鏌ヨ鎵�鏈夐獞琛岃褰�
- List<MemberRides> memberRides = memberRidesJoinMapper.selectJoinList(MemberRides.class,wrapper);
- return memberRides;
}
@Override
@@ -1078,7 +1142,7 @@
model.setRefundNum(Constants.formatIntegerNum(refund.getCountNum()));
model.setRefundMoney(Constants.translateMoney(Constants.formatDecimalNum(refund.getMoney())));
}
- model.setClosedMoney(model.getPayMoney().subtract(model.getRefundMoney()).subtract(model.getUnClosedMoney()));
+ model.setClosedMoney(model.getPayMoney().add(model.getDiscountMoney()).subtract(model.getRefundMoney()).subtract(model.getUnClosedMoney()));
return model;
}
@Override
@@ -1385,6 +1449,7 @@
public void autoCloseOrder( ) {
Goodsorder goodsorder = new Goodsorder();
goodsorder.setIsdeleted(Constants.ZERO);
+ goodsorder.setType(Constants.ZERO);
goodsorder.setStatus(Constants.goodsorderStatus.pay);
List<Goodsorder> list = findList(goodsorder);
if (!CollectionUtils.isEmpty(list)){
@@ -1401,8 +1466,8 @@
}
});
}
-
}
+
@Override
public void goodsOrderSettlement(String memberId) {
Goodsorder goodsorder = this.goodsorderMapper.selectOne(new QueryWrapper<Goodsorder>()
@@ -1641,4 +1706,85 @@
);
}
+
+
+ @Override
+ public List<List<String>> getBikeIncomeReportVOList(Date startDate ,Date endDate){
+ if( (Objects.isNull(startDate)||Objects.isNull(endDate))
+ || startDate.getTime()>endDate.getTime()
+ || DateUtil.daysBetweenDates(endDate,startDate) > 30
+ )
+ {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ System.out.println( DateUtil.daysBetweenDates(endDate,startDate));
+ //鑾峰彇鎵�鏈夎溅鍨嬩俊鎭�
+ List<BaseParam> baseParamList = baseParamMapper.selectList(new QueryWrapper<BaseParam>().lambda().eq(BaseParam::getIsdeleted,Constants.ZERO)
+ .in(BaseParam::getType,Constants.THREE,Constants.FOUR)
+ .orderByAsc(BaseParam::getType,BaseParam::getSortnum)
+ );
+ //鑾峰彇2涓棩鏈熶笅鎵�鏈夊ぉ鏁�
+ List<Date> dateList = DateUtil.getDateList(startDate,endDate);
+ //鏌ヨ鏃ユ湡鍐呯殑鎵�鏈夋暟鎹�
+ List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda().eq(Goodsorder::getType,Constants.ZERO)
+ .eq(Goodsorder::getIsdeleted,Constants.ZERO)
+ .eq(Goodsorder::getStatus,Constants.FOUR)
+ .isNotNull(Goodsorder::getParamId)
+ .ge(Goodsorder::getPayDate, Utils.Date.getStart(startDate))
+ .le( Goodsorder::getPayDate, Utils.Date.getEnd(endDate))
+ );
+
+ List<List<String>> parentList = new ArrayList<>();
+
+ for (BaseParam baseParam:baseParamList) {
+ List<String> dataChildList = new ArrayList<>();
+ dataChildList.add(baseParam.getName()+"(鍏�)");
+ BigDecimal totalAmount = BigDecimal.ZERO;
+ for (Date date:dateList) {
+ BigDecimal amount = goodsorderList.stream()
+ .filter(i->StringUtils.isNotBlank(i.getParamId())&&DateUtil.getShortDateStr(date).equals(DateUtil.getShortDateStr(i.getCreateDate()))&&baseParam.getId().equals(i.getParamId()))
+ .map(i->i.getCloseMoney()).reduce(BigDecimal.ZERO,BigDecimal::add);
+ amount = amount.divide(new BigDecimal("100"),2,BigDecimal.ROUND_HALF_UP);
+ dataChildList.add(amount.toString());
+ totalAmount = amount.add(totalAmount);
+ }
+ dataChildList.add("锟�"+totalAmount);
+ parentList.add(dataChildList);
+ }
+
+ List<String> dataStrList = new ArrayList<>();
+ dataStrList.add("鏃ユ湡");
+ for (Date date:dateList) {
+ dataStrList.add(DateUtil.getShortDateStr(date));
+ }
+ dataStrList.add("鎬昏");
+ parentList.add(0,dataStrList);
+
+ return parentList;
+
+ }
+
+ @Override
+ public void excel(Date startDate , Date endDate, HttpServletResponse response){
+ List<List<String>> data = this.getBikeIncomeReportVOList(startDate,endDate);
+ try {
+ String fileName = "杞﹀瀷鏀跺叆鍒嗘瀽_"+System.currentTimeMillis();
+ String encodeFileName = URLEncoder.encode(fileName, Charset.forName("UTF-8").toString()) + ".xlsx";
+ response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
+ response.setContentType("application/octet-stream");
+ response.setHeader("eva-opera-type", "download");
+ response.setHeader("eva-download-filename", encodeFileName);
+ ExcelExporter.exportList(data, fileName, response.getOutputStream());
+ } catch (IOException e) {
+ throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
+ }
+ }
+
+
+
+
+
+
+
+
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
index de6b416..36c5cdf 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
@@ -273,6 +273,7 @@
bill.setDiscountRefundFee(new BigDecimal(0.00));
bill.setDiscountRefundCmmsAmt(new BigDecimal(0.00));
bill.setBikeRefundCmmsAmt(new BigDecimal(0.00));
+ bill.setDiscountFee(new BigDecimal(0.00));
return bill;
}
@Override
diff --git a/server/web/src/main/java/com/doumee/task/ScheduleTool.java b/server/web/src/main/java/com/doumee/task/ScheduleTool.java
index 6df7a1c..31f956e 100644
--- a/server/web/src/main/java/com/doumee/task/ScheduleTool.java
+++ b/server/web/src/main/java/com/doumee/task/ScheduleTool.java
@@ -43,12 +43,12 @@
* 绔欑偣杞﹁締婊℃灦鐜囬璀�
* @throws Exception
*/
-// @Scheduled(fixedDelay = 1000L *20L )
-// public void reSubMqtt() throws Exception {
-// log.info("=====================妫�鏌ユ槸鍚﹂渶瑕侀噸鏂拌闃�===========start============");
-// MqttClientInit.isSubClientValid();
-// log.info("=====================妫�鏌ユ槸鍚﹂渶瑕侀噸鏂拌闃�===========end============");
-// }
+ @Scheduled(fixedDelay = 1000L *20L )
+ public void reSubMqtt() throws Exception {
+ log.info("=====================妫�鏌ユ槸鍚﹂渶瑕侀噸鏂拌闃�===========start============");
+ MqttClientInit.isSubClientValid();
+ log.info("=====================妫�鏌ユ槸鍚﹂渶瑕侀噸鏂拌闃�===========end============");
+ }
@Scheduled(fixedDelay = 1000L * 100L )
--
Gitblit v1.9.3