Merge remote-tracking branch 'origin/2.0.1' into 2.0.1
# Conflicts:
# admin/.env.development
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-line/u-line.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/pages/consumptionDetails/consumptionDetails.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/pages/maps/maps.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/pages/pricingRules/pricingRules.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/pages/problemReporting/problemReporting.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/pages/ridingDetails/ridingDetails.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/pages/settlementDetails/settlementDetails.js.map
# bicycle/unpackage/dist/dev/.sourcemap/mp-weixin/pages/specification/specification.js.map
# bicycle/unpackage/dist/dev/mp-weixin/common/vendor.js
# bicycle/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.js
# bicycle/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-line/u-line.js
# bicycle/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.js
# bicycle/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.js
# bicycle/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.js
# bicycle/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.js
# bicycle/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js
# bicycle/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.js
# bicycle/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.js
# bicycle/unpackage/dist/dev/mp-weixin/pages/consumptionDetails/consumptionDetails.js
# bicycle/unpackage/dist/dev/mp-weixin/pages/index/index.js
# bicycle/unpackage/dist/dev/mp-weixin/pages/maps/maps.js
# bicycle/unpackage/dist/dev/mp-weixin/pages/pricingRules/pricingRules.js
# bicycle/unpackage/dist/dev/mp-weixin/pages/problemReporting/problemReporting.js
# bicycle/unpackage/dist/dev/mp-weixin/pages/ridingDetails/ridingDetails.js
# bicycle/unpackage/dist/dev/mp-weixin/pages/settlementDetails/settlementDetails.js
# bicycle/unpackage/dist/dev/mp-weixin/pages/specification/specification.js
# server/services/src/main/java/com/doumee/service/business/impl/BikesServiceImpl.java
| | |
| | | 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 |
| | | }) |
| | | } |
| | |
| | | > |
| | | <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" |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| | |
| | | payStatus: '', |
| | | payWay: '', |
| | | payDate: '', |
| | | type: '', |
| | | type: 0, |
| | | closeMoney: '', |
| | | startDate: '', |
| | | endDate: '', |
| | |
| | | <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="ç»ææ¥æ" |
| | |
| | | @change="selectDate" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | |
| | | |
| | | <section> |
| | | <el-button type="primary" @click="search">æç´¢</el-button> |
| | | <el-button @click="reset">éç½®</el-button> |
| | |
| | | ></el-table-column> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | |
| | | </template> |
| | | <!-- æ°å»º/ä¿®æ¹ --> |
| | | </TableLayout> |
| | |
| | | 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 }, |
| | |
| | | <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" |
| | |
| | | <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" |
| | |
| | | <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'])" --> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | </template> |
| | | <BillDetailWindow ref="billDetailWindow"/> |
| | | </TableLayout> |
| | |
| | | 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) }, |
| | |
| | | this.search() |
| | | }, |
| | | arraySpanMethod ({ row, column, rowIndex, columnIndex }) { |
| | | if (rowIndex == 3) { |
| | | if (rowIndex === 3) { |
| | | if (columnIndex === 0) { |
| | | return [1, 8] |
| | | } else { |
| | |
| | | <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" /> |
| | |
| | | <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">æ£å¸¸</span> |
| | |
| | | clearable: true, |
| | | options: [ |
| | | { value: '0', label: 'æ£å¸¸' }, |
| | | { value: '1', label: 'ä½åº' }, |
| | | // { value: '2', label: 'å¾
æ¯ä»' } |
| | | { value: '1', label: 'ä½åº' } |
| | | ] |
| | | },{ |
| | | filed: 'createDate', |
| | | type: 'daterange', |
| | | label: 'åå»ºæ¥æ', |
| | | placeholder: 'è¯·éæ©ç¶æ', |
| | | clearable: true, |
| | | options: [ |
| | | { value: '0', label: 'æ£å¸¸' }, |
| | | { value: '1', label: 'ä½åº' } |
| | | ] |
| | | }], |
| | | online: true |
| | |
| | | remarkCan: '', |
| | | // â¬ï¸adjustè°æ´ç¸å
³ |
| | | isShowAdjust: false, |
| | | isShowCan: false, |
| | | canList: [], |
| | | adjustData: { |
| | | flag: 0, |
| | |
| | | }, |
| | | 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) |
| | |
| | | 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, |
| | |
| | | <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"> |
| | |
| | | // 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) { |
| | |
| | | z-index: 99999999999; |
| | | } |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | return { |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | paramId: '', |
| | | code: '', |
| | | deviceSn: '', |
| | |
| | | }, |
| | | methods: { |
| | | changeMap(e, row) { |
| | | console.log(e); |
| | | updateById({ ...row, electronicFence: JSON.stringify(e) }).then(res => { |
| | | if (res) { |
| | | Message.success('设置æå') |
| | |
| | | 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() |
| | | }) |
| | |
| | | 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/' |
| | |
| | | "versionName" : "1.0.0", |
| | | "versionCode" : "100", |
| | | "transformPx" : false, |
| | | "sassImplementationName" : "node-sass", |
| | | /* 5+Appç¹æç¸å
³ */ |
| | | "app-plus" : { |
| | | "usingComponents" : true, |
| | |
| | | "navigationBarTitleText" : "æ¯ä»è®¢å", |
| | | "navigationBarBackgroundColor": "#ffffff" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/operationLogin/operationLogin", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "è¿è¥ä¸å¿" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/operationsCenter/operationsCenter", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "è¿è¥ä¸å¿" |
| | | } |
| | | }, |
| | | { |
| | | "path" : "pages/operationList/operationList", |
| | | "style" : |
| | | { |
| | | "navigationBarTitleText" : "è¿è¥ä¸å¿" |
| | | } |
| | | } |
| | | ], |
| | | "globalStyle": { |
| | |
| | | </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> |
| | |
| | | id: 4, |
| | | name: 'æ¶è´¹æç»', |
| | | icon: require('@/static/images/home_ic_mingxi@2x.png') |
| | | }, |
| | | { |
| | | id: 5, |
| | | name: 'è¿è¥ä¸å¿', |
| | | icon: require('@/static/icon/home_ic_mingxi.png') |
| | | }, |
| | | ], |
| | | |
| | |
| | | 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) { |
| | |
| | | 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%; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <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> |
| | |
| | | "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": { |
| | |
| | | _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/' |
| | |
| | | <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">å°è±¡æ»¨æ¹è¶£å³èªè¡è½¦</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> |
| | | <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">å°è±¡æ»¨æ¹è¶£å³èªè¡è½¦</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> |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | flex-wrap: wrap; |
| | | position: relative; |
| | | top: -24rpx; |
| | | } |
| | |
| | | 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 { |
| | |
| | | "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 |
| | | } |
| | | ] |
| | | } |
| | | } |
| | | } |
| | |
| | | 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 = { |
| | |
| | | openElecBike, |
| | | backElecBike, |
| | | pauseElecBike, |
| | | pauseOpenElecBike |
| | | pauseOpenElecBike, |
| | | login, |
| | | logout, |
| | | pageBikes, |
| | | updateBikeStatus, |
| | | updateLockStatus |
| | | }; |
| | | } |
| | | |
| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | |
| | | return ApiResponse.success(goodsorderService.findPage(pageWrap)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation("线ä¸äº¤ææ±æ»æ°æ®æ¥å£") |
| | | @PostMapping("/getTotalData") |
| | | @RequiresPermissions("business:goodsorder:query") |
| | |
| | | pageWrap.setEndDate(pageWrap.getEndDate() != null ? pageWrap.getEndDate():pageWrap.getStartDate()); |
| | | return ApiResponse.success(goodsorderService.getTotalData(pageWrap)); |
| | | } |
| | | |
| | | |
| | | |
| | | @ApiOperation("订åå表-导åºExcel") |
| | | @PostMapping("/exportExcel") |
| | |
| | | public ApiResponse<PageData<GoodsorderExportVO>> findPageAccountDetail(@RequestBody PageWrap<Goodsorder> pageWrap) { |
| | | return ApiResponse.success(goodsorderService.findAccountDetailPage(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("æ¶æ¬¾æç»ï¼å¾®ä¿¡å¯¹è´¦æç»ï¼_导åºExcel") |
| | | @PostMapping("/exportAccountDetailExcel") |
| | | @RequiresPermissions("business:goodsorder:exportExcel") |
| | |
| | | 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); |
| | | } |
| | | } |
| | |
| | | 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; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 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 è¾åºæµ |
| | |
| | | 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) { |
| | |
| | | } |
| | | |
| | | |
| | | 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)){ |
| | |
| | | |
| | | @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 = "å建人") |
| | |
| | | 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") |
| | |
| | | @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; |
| | | } |
| | |
| | | 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) |
| | |
| | | @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) |
| | |
| | | private Integer closeStatus; |
| | | |
| | | @ApiModelProperty(value = "æä½äºº") |
| | | @ExcelColumn(name="æä½äºº",index = 9,width = 10,align = HorizontalAlignment.CENTER) |
| | | @TableField(exist = false) |
| | | private String refundUserName; |
| | | |
| | |
| | | @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; |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | |
| | | } |
| | |
| | | @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; |
| | | |
| | | } |
| | |
| | | @ApiModelProperty(value = "æµæ£éé¢") |
| | | private BigDecimal disCountMoney; |
| | | |
| | | @ApiModelProperty(value = "车è¾ç±»åç¼ç ") |
| | | private String paramId; |
| | | |
| | | |
| | | @ApiModelProperty(value = "éªè¡è®°å½") |
| | | private List<MemberRidesResponse> memberRidesResponseList; |
| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | 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); |
| | | } |
| | |
| | | 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; |
| | |
| | | .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)); |
| | |
| | | QueryWrapper<DiscountMember> wrapper = new QueryWrapper<>(discountMember); |
| | | return discountMemberMapper.selectCount(wrapper); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | 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; |
| | |
| | | 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.*; |
| | |
| | | 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; |
| | |
| | | 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"); |
| | | //æ¶é´æ®µçé |
| | |
| | | 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); |
| | |
| | | |
| | | 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())); |
| | |
| | | } |
| | | 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())); |
| | |
| | | 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())); |
| | |
| | | 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()); |
| | |
| | | |
| | | 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()); |
| | |
| | | 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); |
| | |
| | | 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()); |
| | |
| | | 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()); |
| | |
| | | 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; |
| | | } |
| | | /** |
| | | * 鿬¾æååè° |
| | |
| | | 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(),"å½åè®¢åææªå®æçéªè¡ï¼æ æ³å¼ºå¶ç»ç®"); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | //计ç®åºä»éé¢ |
| | | if( topRides != null){ |
| | | int baseTime =Constants.formatIntegerNum(topRides.getBaseTime()); |
| | |
| | | } |
| | | } |
| | | 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); |
| | | //è®¡ç®æµæ£éé¢ |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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)){ |
| | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void goodsOrderSettlement(String memberId) { |
| | | Goodsorder goodsorder = this.goodsorderMapper.selectOne(new QueryWrapper<Goodsorder>() |
| | |
| | | ); |
| | | } |
| | | |
| | | |
| | | |
| | | @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); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | 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 |
| | |
| | | * ç«ç¹è½¦è¾æ»¡æ¶çé¢è¦ |
| | | * @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 ) |