From 051abca66db233f5dbde3f69aa706422e1ac9fd9 Mon Sep 17 00:00:00 2001
From: jiaosong <jiaosong6760@dingtalk.com>
Date: 星期三, 18 十月 2023 16:41:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
admin/src/views/business/bikeLocation.vue | 2
admin/src/views/business/goodsorder.vue | 87 +++-
admin/src/api/business/bikeRetakeRecord.js | 17
admin/src/components/business/BillDetailWindow.vue | 2
admin/src/api/business/bikeRepair.js | 5
admin/src/components/system/dict/OperaDictDataWindow.vue | 1
admin/src/views/business/pricingParam.vue | 36 +
server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java | 8
admin/src/components/business/OperaRepairDealWindow.vue | 129 ++++++
admin/src/views/business/memberRides.vue | 10
admin/src/views/business/bikeRetakeRecord.vue | 16
admin/src/components/business/OperaRentSiteWindow.vue | 2
admin/src/views/business/returnReason.vue | 4
admin/src/api/business/goodsorder.js | 20 +
admin/src/components/common/CommonHeader.vue | 2
server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java | 2
admin/src/api/business/pricingParam.js | 9
admin/.env.development | 15
admin/src/components/business/goodsOrderList.vue | 69 +++
admin/src/components/common/UploadAvatarImage.vue | 2
admin/src/components/business/OperaPriceConfigWindow.vue | 226 +++++++++++
admin/src/views/business/miniproSetting.vue | 28
admin/src/views/business/bikeRepair.vue | 46 +-
admin/package.json | 2
admin/src/components/business/priceConfiguration.vue | 94 ++++
server/services/src/main/java/com/doumee/core/utils/DateUtil.java | 2
admin/src/components/business/backGoodsorderWindow.vue | 151 +++++++
admin/src/components/business/goodsOrderDetail.vue | 104 +++++
server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 2
server/platform/src/main/resources/application.yml | 1
admin/.env.staging | 8
31 files changed, 992 insertions(+), 110 deletions(-)
diff --git a/admin/.env.development b/admin/.env.development
index fea891d..6e828ff 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -5,15 +5,12 @@
VUE_APP_CONTEXT_PATH = '/'
VUE_APP_API_PREFIX='/martempo_admin_interface'
-#姹熻悕鏈湴
-# VUE_APP_API_BASE_URL='http://192.168.0.36:10011'
-
-#鍒樼纾婃湰鍦�
-# VUE_APP_API_BASE_URL='http://192.168.0.18:10013'
-
#鐒︽澗鏈湴
# http://192.168.0.36:10012/doc.html#/home
-VUE_APP_API_BASE_URL='http://192.168.0.36:10012'
+VUE_APP_API_BASE_URL='http://192.168.0.36:10026'
-# 娴嬭瘯鏈嶅姟
-# VUE_APP_API_BASE_URL = 'https://dmtest.ahapp.net/martempo_admin_interface'
+# # 娴嬭瘯鏈嶅姟
+# VUE_APP_API_PREFIX='/bike_admin_api'
+
+# # 鍚庣鎺ュ彛鍦板潃锛歨ttps://dmtest.ahapp.net/bike_admin_api/doc.html
+# VUE_APP_API_BASE_URL='https://dmtest.ahapp.net/bike_admin_api'
diff --git a/admin/.env.staging b/admin/.env.staging
index 657b0f1..29b9b57 100644
--- a/admin/.env.staging
+++ b/admin/.env.staging
@@ -1,8 +1,8 @@
# 娴嬭瘯鐜閰嶇疆
NODE_ENV = 'production'
-VUE_APP_CONTEXT_PATH = '/martempo_admin'
-VUE_APP_API_PREFIX = '/martempo_admin_interface'
-# 鍚庣鎺ュ彛鍦板潃锛歨ttps://dmtest.ahapp.net/martempo_admin_interface/doc.html
+VUE_APP_CONTEXT_PATH = '/bike_admin'
+VUE_APP_API_PREFIX = '/bike_admin_api'
-VUE_APP_API_BASE_URL = 'https://dmtest.ahapp.net/martempo_admin_interface'
+# 鍚庣鎺ュ彛鍦板潃锛歨ttps://dmtest.ahapp.net/bike_admin_api/doc.html
+VUE_APP_API_BASE_URL = 'https://dmtest.ahapp.net/bike_admin_api'
diff --git a/admin/package.json b/admin/package.json
index 44c7272..c288459 100644
--- a/admin/package.json
+++ b/admin/package.json
@@ -5,7 +5,7 @@
"scripts": {
"serve": "vue-cli-service serve",
"build:pro": "vue-cli-service build",
- "build:staging": "vue-cli-service build --mode staging",
+ "build:dev": "vue-cli-service build --mode staging",
"lint": "vue-cli-service lint",
"fix": "eslint --ext .js,.vue src --fix"
},
diff --git a/admin/src/api/business/bikeRepair.js b/admin/src/api/business/bikeRepair.js
index a9eb360..1d233e6 100644
--- a/admin/src/api/business/bikeRepair.js
+++ b/admin/src/api/business/bikeRepair.js
@@ -6,3 +6,8 @@
trim: true
})
}
+
+// 淇敼
+export function updateById (data) {
+ return request.post('/business/bikeRepair/updateById', data)
+}
diff --git a/admin/src/api/business/bikeRetakeRecord.js b/admin/src/api/business/bikeRetakeRecord.js
new file mode 100644
index 0000000..27f0fcf
--- /dev/null
+++ b/admin/src/api/business/bikeRetakeRecord.js
@@ -0,0 +1,17 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+ return request.post('/business/memberRides/pageBikeLog', data, {
+ trim: true
+ })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+ return request.post('/business/memberRides/exportBikeLogExcel', data, {
+ trim: true,
+ download: true
+ })
+}
+
diff --git a/admin/src/api/business/goodsorder.js b/admin/src/api/business/goodsorder.js
index 92323a4..cfbb69b 100644
--- a/admin/src/api/business/goodsorder.js
+++ b/admin/src/api/business/goodsorder.js
@@ -19,3 +19,23 @@
export function deleteById (id) {
return request.get(`/business/goodsorder/delete/${id}`)
}
+
+// 璇︽儏
+export function getDetail (id) {
+ return request.get(`/business/goodsorder/${id}`)
+}
+
+// 閫�娆�
+export function backGoodsorder (data) {
+ return request.post('/business/goodsorder/backGoodsorder', data, {
+ trim: true
+ })
+}
+// 閫�娆�
+export function closerGoodsorder (id) {
+ return request.post('/business/goodsorder/closerGoodsorder', {id})
+}
+// 鑾峰彇鍙��娆句俊鎭�
+export function getGoodsorderCanBanlanceDTO (params) {
+ return request.get('/business/goodsorder/getGoodsorderCanBanlanceDTO', {params})
+}
diff --git a/admin/src/api/business/pricingParam.js b/admin/src/api/business/pricingParam.js
index c62ea9a..17037e9 100644
--- a/admin/src/api/business/pricingParam.js
+++ b/admin/src/api/business/pricingParam.js
@@ -21,3 +21,12 @@
export function deleteById (id) {
return request.get(`/business/pricingParam/delete/${id}`)
}
+
+// 鏍规嵁瀹氫环閰嶇疆ID鏌ヨ
+export function findListByPricePramId (params) {
+ return request.get(`/business/pricingDetail/findListByPricePramId`, {params})
+}
+// 鏍规嵁ID淇敼閰嶇疆
+export function updatePricingDetailById (data) {
+ return request.post('/business/pricingDetail/updateById', data)
+}
\ No newline at end of file
diff --git a/admin/src/components/business/BillDetailWindow.vue b/admin/src/components/business/BillDetailWindow.vue
index 48a51a5..065573c 100644
--- a/admin/src/components/business/BillDetailWindow.vue
+++ b/admin/src/components/business/BillDetailWindow.vue
@@ -5,7 +5,7 @@
:confirm-working="isWorking"
>
<NoBikeBillDetail v-if="form.type==4" ref="noBikeBillDetail"/>
- <BillDetail v-else ref="billDetail"/>
+ <BillDetail v-else ref="billDetail"/>
</GlobalWindow>
</template>
diff --git a/admin/src/components/business/OperaPriceConfigWindow.vue b/admin/src/components/business/OperaPriceConfigWindow.vue
new file mode 100644
index 0000000..7c4b835
--- /dev/null
+++ b/admin/src/components/business/OperaPriceConfigWindow.vue
@@ -0,0 +1,226 @@
+<template>
+ <GlobalAlertWindow
+ :title="title"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ width="600px"
+ @confirm="confirm"
+ >
+
+ <el-form :model="form" ref="form" :rules="rules" label-suffix="锛�">
+ <el-form-item label="杞﹀瀷鍚嶇О" prop="bikeTypeName">
+ {{ form.bikeTypeName }}
+ </el-form-item>
+ <el-form-item label="宸ヤ綔鏃ヨ璐�">
+ <el-select v-model="form.baseType" @change="selectBaseType">
+ <el-option
+ v-for="item in priceType"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ ></el-option>
+ </el-select>
+ <div class="setting" v-if="form.baseType == 1" style="display: flex;">
+ <el-input v-model="form.basePrice" type="number" placeholder="" v-trim/>
+ 鍏冿紝鐣呴獞涓�鏁村ぉ
+ </div>
+ <div class="setting" v-else>
+ <div style="display: flex;">
+ 璧锋浠�<el-input v-model="form.basePrice" type="number" placeholder="" v-trim/>
+ 鍏�<el-input v-model="form.baseTime" type="number" placeholder="" v-trim/>鍒嗛挓
+ </div>
+ <div style="display: flex; margin-top: 5px;">
+ 瓒呰繃鍚�<el-input v-model="form.unitPrice" type="number" placeholder="" v-trim/>
+ 鍏冿紝姣�<el-input v-model="form.unitTime" type="number" placeholder="" v-trim/>鍒嗛挓
+ </div>
+ </div>
+ </el-form-item>
+ <el-form-item label="鑺傚亣鏃ヨ璐�">
+ <el-select v-model="form.holidayBaseType" @change="selectHolidayBaseType">
+ <el-option
+ v-for="item in priceType"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ ></el-option>
+ </el-select>
+ <div class="setting" v-if="form.holidayBaseType == 1" style="display: flex;">
+ <el-input v-model="form.holidayBasePrice" type="number" placeholder="" v-trim/>
+ 鍏冿紝鐣呴獞涓�鏁村ぉ
+ </div>
+ <div class="setting" v-else>
+ <div style="display: flex;">
+ 璧锋浠�<el-input v-model="form.holidayBasePrice" type="number" placeholder="" v-trim/>
+ 鍏�<el-input v-model="form.holidayBaseTime" type="number" placeholder="" v-trim/>鍒嗛挓
+ </div>
+ <div style="display: flex; margin-top: 5px;">
+ 瓒呰繃鍚�<el-input v-model="form.holidayUnitPrice" type="number" placeholder="" v-trim/>
+ 鍏冿紝姣�<el-input v-model="form.holidayUnitTime" type="number" placeholder="" v-trim/>鍒嗛挓
+ </div>
+ </div>
+ </el-form-item>
+ </el-form>
+ </GlobalAlertWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+import { create } from '@/api/business/pricingParam'
+// import { findList } from '@/api/business/roomTime'
+import { numRule } from '@/utils/form'
+export default {
+ name: 'OperaPriceConfigWindow',
+ extends: BaseOpera,
+ components: { GlobalAlertWindow },
+ data () {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ id: null,
+ pricePramId: null,
+ bikeTypeId: null,
+ bikeTypeName: '',
+ baseType: '',
+ baseTime: '',
+ basePrice: '',
+ unitPrice: '',
+ unitTime: '',
+ holidayBaseType: '',
+ holidayBaseTime: '',
+ holidayBasePrice: '',
+ holidayUnitPrice: '',
+ holidayUnitTime: '',
+ },
+ priceType: [
+ { name: '涓�鍙d环', id: 1 },
+ { name: '闃舵瀹氫环', id: 2 },
+ ],
+ backInfoRequired: false,
+ // 楠岃瘉瑙勫垯
+ rules: {
+ duration: [
+ { required: true, validator: numRule, message: '璇疯緭鍏ヨ璐规椂闀�', tigger: 'blur' }
+ ],
+ backReason: [
+ { required: true, message: '璇烽�夋嫨璋冩暣鍘熷洜', tigger: 'change'},
+ ]
+ },
+
+ }
+ },
+
+ methods: {
+ /**
+ * 鎵撳紑绐楀彛
+ * @title 绐楀彛鏍囬
+ * @target 缂栬緫鐨勫璞�
+ */
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ this.form[this.configData['field.id']] = null
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ this.form.baseType = target.baseTime==-1 ? 1 : 2
+ this.form.holidayBaseType = target.holidayBaseTime==-1 ? 1 : 2
+
+ // this.form.backReason = ''
+ // this.form.backInfo = ''
+ // this.$refs.form.clearValidate()
+ })
+ },
+ selectBaseType(v) {
+ console.log(v);
+ if (v==1) {
+ this.form.baseTime = -1
+ } else {
+ this.form.baseTime = ''
+ }
+ },
+ selectHolidayBaseType(v) {
+ // console.log(item);
+ if (v==1) {
+ this.form.holidayBaseTime = -1
+ } else {
+ this.form.holidayBaseTime = ''
+ }
+ },
+ confirm() {
+ this.$refs.form.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ this.isWorking = true
+ create(this.form)
+ .then(res => {
+ this.visible = false
+ this.$tip.apiSuccess('淇敼鎴愬姛')
+ this.$emit('success')
+
+ })
+ .catch(err => {
+ this.$tip.apiFailed(err)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ })
+ }
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/style/alertstyle.scss";
+@import "@/assets/style/variables.scss";
+
+::v-deep .el-input.is-disabled .el-input__inner {
+ background-color: #fff !important;
+ cursor: pointer;
+}
+
+.time-style {
+ display: flex;
+ flex-wrap: wrap;
+ cursor: pointer;
+ .time-item {
+ margin-right: 8px;
+ margin-bottom: 8px;
+ border: #111 solid 1px;
+ font-size: 14px;
+ line-height: 14px;
+ padding: 5px;
+ border-radius: 5px;
+ color: #111;
+ }
+ .time-item-sel {
+ border-color: $primary-color;
+ background-color: $primary-color;
+ color: #fff;
+ }
+ .time-item-disable {
+ border-color: #999;
+ background-color: #999;
+ color: #111;
+ }
+}
+
+.setting {
+ margin-top: 15px;
+ .el-input {
+ width: 100px;
+ }
+}
+
+</style>
diff --git a/admin/src/components/business/OperaRentSiteWindow.vue b/admin/src/components/business/OperaRentSiteWindow.vue
index d099f86..05fc3f6 100644
--- a/admin/src/components/business/OperaRentSiteWindow.vue
+++ b/admin/src/components/business/OperaRentSiteWindow.vue
@@ -125,7 +125,7 @@
for (const key in this.form) {
this.form[key] = target[key]
}
- this.form.longAndLat = `${this.form.longitude},${this.form.latitude}`
+ this.form.longAndLat = `${this.form.latitude},${this.form.longitude}`
})
},
changeLongAndLat(v) {
diff --git a/admin/src/components/business/OperaRepairDealWindow.vue b/admin/src/components/business/OperaRepairDealWindow.vue
new file mode 100644
index 0000000..2bfe2e7
--- /dev/null
+++ b/admin/src/components/business/OperaRepairDealWindow.vue
@@ -0,0 +1,129 @@
+<template>
+ <GlobalAlertWindow
+ :title="title"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ width="600px"
+ @confirm="confirm"
+ >
+
+ <el-form :model="form" ref="form" :rules="rules " label-suffix="锛�">
+ <el-form-item label="澶勭悊璇存槑" prop="dealInfo">
+ <el-input
+ type="textarea"
+ :autosize="{ minRows: 2, maxRows: 4}"
+ v-model="form.dealInfo"
+ placeholder="璇疯緭鍏ヨ皟鏁村娉�"
+ v-trim
+ />
+ </el-form-item>
+
+ </el-form>
+ </GlobalAlertWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+// import { findList } from '@/api/business/roomTime'
+import { numRule } from '@/utils/form'
+export default {
+ name: 'OperaSuggestWindow',
+ extends: BaseOpera,
+ components: { GlobalAlertWindow },
+ data () {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ id: null,
+ dealInfo: '',
+ status: '',
+
+ },
+ backInfoRequired: false,
+ // 楠岃瘉瑙勫垯
+ rules: {
+ duration: [
+ { required: true, validator: numRule, message: '璇疯緭鍏ヨ璐规椂闀�', tigger: 'blur' }
+ ],
+ backReason: [
+ { required: true, message: '璇烽�夋嫨璋冩暣鍘熷洜', tigger: 'change'},
+ ]
+ }
+ }
+ },
+ created () {
+ this.config({
+ api: '/business/bikeRepair',
+ 'field.id': 'id',
+ })
+
+ },
+ methods: {
+ /**
+ * 鎵撳紑绐楀彛
+ * @title 绐楀彛鏍囬
+ * @target 缂栬緫鐨勫璞�
+ */
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ debugger
+ // 鏂板缓
+ if (target == null) {
+ this.$nextTick(() => {
+ this.$refs.form.resetFields()
+ this.form[this.configData['field.id']] = null
+ })
+ return
+ }
+ // 缂栬緫
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ this.form.status = '1'
+ this.$refs.form.clearValidate()
+ })
+ },
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/style/alertstyle.scss";
+@import "@/assets/style/variables.scss";
+
+::v-deep .el-input.is-disabled .el-input__inner {
+ background-color: #fff !important;
+ cursor: pointer;
+ color: aqua;
+}
+
+.time-style {
+ display: flex;
+ flex-wrap: wrap;
+ cursor: pointer;
+ .time-item {
+ margin-right: 8px;
+ margin-bottom: 8px;
+ border: #111 solid 1px;
+ font-size: 14px;
+ line-height: 14px;
+ padding: 5px;
+ border-radius: 5px;
+ color: #111;
+ }
+ .time-item-sel {
+ border-color: $primary-color;
+ background-color: $primary-color;
+ color: #fff;
+ }
+ .time-item-disable {
+ border-color: #999;
+ background-color: #999;
+ color: #111;
+ }
+}
+
+</style>
diff --git a/admin/src/components/business/backGoodsorderWindow.vue b/admin/src/components/business/backGoodsorderWindow.vue
new file mode 100644
index 0000000..6579b5f
--- /dev/null
+++ b/admin/src/components/business/backGoodsorderWindow.vue
@@ -0,0 +1,151 @@
+<template>
+ <GlobalAlertWindow
+ :title="title"
+ :visible.sync="visible"
+ :confirm-working="isWorking"
+ width="600px"
+ @confirm="confirm"
+ >
+ <el-descriptions title="" :column="2" >
+ <el-descriptions-item label="鍏呭�兼娂閲�">{{ form.goodsorderMoney }}</el-descriptions-item>
+ <el-descriptions-item label="缁撶畻閲戦">{{ form.closeMoney }}</el-descriptions-item>
+ <el-descriptions-item label="宸查��閲戦">{{ form.hasRefundMoney }}</el-descriptions-item>
+ <el-descriptions-item label="鍙��閲戦">{{ form.canBanlanceMoney }}</el-descriptions-item>
+ </el-descriptions>
+ <el-form :model="form" ref="form" :rules="rules" label-suffix="锛�">
+ <el-form-item label="閫�娆鹃噾棰�" prop="money">
+ <div style="display: flex;">
+ <el-input style="flex: 1;" v-model="form.money" placeholder="璇疯緭鍏ラ��娆鹃噾棰�" v-trim/>
+ </div>
+ </el-form-item>
+ <el-form-item label="閫�娆惧師鍥�" prop="reason">
+ <el-input
+ type="textarea"
+ :autosize="{ minRows: 2, maxRows: 4}"
+ v-model="form.reason"
+ placeholder="璇疯緭鍏ヨ皟鏁村娉�"
+ v-trim
+ />
+ </el-form-item>
+ </el-form>
+ </GlobalAlertWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
+import { backGoodsorder } from '@/api/business/goodsorder'
+import { numRule } from '@/utils/form'
+export default {
+ name: 'OperaSuggestWindow',
+ extends: BaseOpera,
+ components: { GlobalAlertWindow },
+ data () {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ orderId: null,
+ canBanlanceMoney: '',
+ closeMoney: '',
+ goodsorderMoney: '',
+ hasRefundMoney: '',
+
+ money: '',
+ reason: '',
+ },
+ // 楠岃瘉瑙勫垯
+ rules: {
+ duration: [
+ { required: true, validator: numRule, message: '璇疯緭鍏ラ��娆鹃噾棰�', tigger: 'blur' }
+ ]
+ },
+
+ }
+ },
+ created () {
+
+ },
+ methods: {
+ /**
+ * 鎵撳紑绐楀彛
+ * @title 绐楀彛鏍囬
+ * @target 缂栬緫鐨勫璞�
+ */
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ this.$nextTick(() => {
+ for (const key in this.form) {
+ this.form[key] = target[key]
+ }
+ this.form.money = ''
+ this.form.reason = ''
+ this.$refs.form.clearValidate()
+ })
+
+ },
+ selectReason(v) {
+ // console.log(item);
+ let item = this.reason.find(item => item.name == v)
+ this.backInfoRequired = item.required == 1
+ },
+ confirm() {
+ this.$refs.form.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ this.isWorking = true
+ backGoodsorder(this.form)
+ .then(() => {
+ this.visible = false
+ this.$tip.apiSuccess('閫�娆炬垚鍔�')
+ this.$emit('success')
+ })
+ .catch(err => {
+ this.$tip.apiFailed(err)
+ })
+ .finally(() => {
+ this.isWorking = false
+ })
+ })
+ }
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/style/alertstyle.scss";
+@import "@/assets/style/variables.scss";
+
+::v-deep .el-input.is-disabled .el-input__inner {
+ background-color: #fff !important;
+ cursor: pointer;
+}
+
+.time-style {
+ display: flex;
+ flex-wrap: wrap;
+ cursor: pointer;
+ .time-item {
+ margin-right: 8px;
+ margin-bottom: 8px;
+ border: #111 solid 1px;
+ font-size: 14px;
+ line-height: 14px;
+ padding: 5px;
+ border-radius: 5px;
+ color: #111;
+ }
+ .time-item-sel {
+ border-color: $primary-color;
+ background-color: $primary-color;
+ color: #fff;
+ }
+ .time-item-disable {
+ border-color: #999;
+ background-color: #999;
+ color: #111;
+ }
+}
+
+</style>
diff --git a/admin/src/components/business/goodsOrderDetail.vue b/admin/src/components/business/goodsOrderDetail.vue
new file mode 100644
index 0000000..da7671e
--- /dev/null
+++ b/admin/src/components/business/goodsOrderDetail.vue
@@ -0,0 +1,104 @@
+<template>
+ <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking">
+ <div class="title">鏀粯鏄庣粏</div>
+ <el-table :data="list" stripe border>
+ <el-table-column prop="id" label="璁㈠崟缂栧彿" min-width="120px" align="center"></el-table-column>
+ <el-table-column prop="onlineorderId" label="浜ゆ槗鍗曞彿" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="refundType" label="浜ゆ槗绫诲瀷" min-width="100px" align="center">
+ <template slot-scope="{row}">
+ {{ typeToStr(row.refundType) }}
+ </template>
+ </el-table-column>
+ <el-table-column prop="money" label="浜ゆ槗閲戦(鍏�)" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="payWay" label="娓犻亾" min-width="100px" align="center">
+ <template slot-scope="{row}">
+ {{ row.payWay==0? '寰俊' : '鏀粯瀹�' }}
+ </template>
+ </el-table-column>
+ <el-table-column prop="payDate" label="浜ゆ槗鏃堕棿" min-width="100px" align="center"></el-table-column>
+
+ </el-table>
+ <div class="title">楠戣璁板綍</div>
+ <el-table
+ :data="memberRidesList"
+ stripe
+ border
+ >
+ <el-table-column prop="openid" label="鐢ㄦ埛" min-width="120px" align="center"></el-table-column>
+ <el-table-column prop="bikeCode" label="杞﹁締缂栧彿" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="bikeType" label="杞︾被鍨�" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="rideTime" label="鍊熷嚭鏃堕暱(鍒�)" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="duration" label="璁¤垂鏃堕暱(鍒�)" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="bikeType" label="杞︾被鍨�" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="rentDate" label="鍊熷嚭鏃堕棿" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="backDate" label="杩樿溅鏃堕棿" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="closeStatus" fixed="right" label="缁撶畻鐘舵��" min-width="100px" align="center">
+ <template slot-scope="{row}">
+ {{ row.closeStatus == 0 ? '鏈粨绠�' : '宸茬粨绠�' }}
+ </template>
+ </el-table-column>
+ </el-table>
+ <div slot="footer">
+ <el-button @click="visible=false">杩斿洖</el-button>
+ </div>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+// import GoodsOrderList from './goodsOrderList.vue'
+export default {
+ name: 'OperaSitesWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow },
+ data() {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ goodsorderId: ''
+ },
+ list: [],
+ memberRidesList: [],
+ // 0缁撶畻閫�娆� 1寮哄埗缁撶畻閫�娆� 2缁撶畻鍚庨��娆� [99: 铏氭嫙type 鏀粯鎶奸噾]
+ type: [
+ { label: '缁撶畻閫�娆�', id: 0 },
+ { label: '寮哄埗缁撶畻閫�娆�', id: 1 },
+ { label: '缁撶畻鍚庨��娆�', id: 2 },
+ { label: '鏀粯鎶奸噾', id: 99 },
+ ],
+ }
+ },
+ created() {
+ },
+ methods: {
+ open(title, target) {
+ debugger
+ this.title = title
+ this.visible = true
+ // 鏂板缓
+ this.form = target
+ this.$nextTick(() => {
+ this.list = target.payOrderDTOList
+ this.memberRidesList = target.memberRidesList
+ // this.$refs.goodsOrderList.reload(target.model)
+ })
+ },
+ typeToStr(type) {
+ let temp = this.type.find(item => item.id == type )
+ return temp ? temp.label : '-'
+ }
+ },
+
+}
+</script>
+
+<style scoped>
+.title {
+ font-size: 18px;
+ font-weight: 600;
+ color: #333;
+ margin-bottom: 20px;
+ margin-top: 20px;
+}
+</style>
diff --git a/admin/src/components/business/goodsOrderList.vue b/admin/src/components/business/goodsOrderList.vue
new file mode 100644
index 0000000..ebdf3e3
--- /dev/null
+++ b/admin/src/components/business/goodsOrderList.vue
@@ -0,0 +1,69 @@
+<template>
+ <TableLayout>
+ <template v-slot:table-wrap>
+
+ <el-table
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ stripe
+ border
+ >
+ <el-table-column prop="openid" label="鐢ㄦ埛" min-width="120px" align="center"></el-table-column>
+ <el-table-column prop="bikeCode" label="杞﹁締缂栧彿" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="bikeType" label="杞︾被鍨�" min-width="100px" align="center"></el-table-column>
+ <!-- <el-table-column prop="money" label="鍊熷嚭鏃堕暱(鍒�)" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="money" label="璁¤垂鏃堕暱(鍒�)" min-width="100px" align="center"></el-table-column> -->
+
+ <el-table-column prop="rentDateStart" label="鍊熷嚭鏃堕棿" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="rentDateEnd" label="杩樿溅鏃堕棿" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="refundDate" label="閫�娆炬椂闂�" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="closeStatus" label="缁撶畻鐘舵��" min-width="100px" align="center">
+ <template slot-scope="{row}">
+ {{ row.closeStatus == 0 ? '鏈粨绠�' : '宸茬粨绠�' }}
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
+ </template>
+ <!-- 鏂板缓/淇敼 -->
+ </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+
+export default {
+ name: 'goodsOrderList',
+ extends: BaseTable,
+ components: { TableLayout, Pagination },
+
+ data () {
+ return {
+ // 鎼滅储
+ searchForm: {
+ goodsorderId: ''
+ }
+ }
+ },
+ created () {
+ this.config({
+ module: '绯荤粺鍩虹閰嶇疆琛�',
+ api: '/business/memberRides',
+ })
+ },
+ methods: {
+ reload(target) {
+ this.searchForm = target
+ this.tableData.pagination.pageIndex = 1
+ this.search()
+ }
+ },
+}
+</script>
diff --git a/admin/src/components/business/priceConfiguration.vue b/admin/src/components/business/priceConfiguration.vue
new file mode 100644
index 0000000..87edbb5
--- /dev/null
+++ b/admin/src/components/business/priceConfiguration.vue
@@ -0,0 +1,94 @@
+<template>
+ <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking">
+ <el-table :data="list" stripe border>
+ <el-table-column prop="bikeTypeId" label="杞﹀瀷" min-width="120px" align="center"></el-table-column>
+ <el-table-column prop="bikeTypeName" label="杞﹀瀷绫诲瀷" min-width="100px" align="center"></el-table-column>
+ <el-table-column label="宸ヤ綔鏃ヨ浠疯鍒�" min-width="100px" align="center">
+ <template slot-scope="{row}">
+ <div style="text-align: left;">
+ <div>鏂瑰紡锛歿{ row.baseTime == -1 ? '涓�鍙d环' : '闃舵浠锋牸' }}</div>
+ <div>{{ row.title || '-' }}</div>
+ <!-- <div v-if="row.baseTime == -1">瑙勫垯锛歿{ row.basePrice }}鍏冪晠鐜╀竴鏁村ぉ</div>
+ <div v-else>瑙勫垯锛歿{ `璧锋${row.baseTime}鍒嗛挓${row.basePrice }鍏冿紝瓒呰繃鍚�${row.unitPrice}鍏�/${row.unitTime}鍒嗛挓` }}</div> -->
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column label="鑺傚亣鏃ヨ浠疯鍒�" min-width="100px" align="center">
+ <template slot-scope="{row}">
+ <div style="text-align: left;">
+ <div>鏂瑰紡锛歿{ row.holidayBaseTime == -1 ? '涓�鍙d环' : '闃舵浠锋牸' }}</div>
+ <div>瑙勫垯锛歿{ row.info || '-' }}</div>
+ <!-- <div v-if="row.holidayBaseTime == -1">瑙勫垯锛歿{ row.holidayBasePrice }}鍏冪晠鐜╀竴鏁村ぉ</div>
+ <div v-else>瑙勫垯锛歿{ `璧锋${row.holidayBaseTime}鍒嗛挓${row.holidayBasePrice}鍏冿紝瓒呰繃鍚�${row.holidayUnitPrice}鍏�/${row.holidayUnitTime}鍒嗛挓` }}</div> -->
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="payWay" label="鎿嶄綔" width="80px" align="center">
+ <template slot-scope="{row}">
+ <el-button type="text" @click="$refs.operaPriceConfigWindow.open('淇敼璐圭巼', row)">缂栬緫</el-button>
+ </template>
+ </el-table-column>
+
+ </el-table>
+ <div slot="footer">
+ <el-button @click="visible=false">杩斿洖</el-button>
+ </div>
+ <OperaPriceConfigWindow ref="operaPriceConfigWindow" @success="search" />
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import OperaPriceConfigWindow from '@/components/business/OperaPriceConfigWindow'
+import { findListByPricePramId } from '@/api/business/pricingParam'
+export default {
+ name: 'OperaSitesWindow',
+ extends: BaseOpera,
+ components: { GlobalWindow, OperaPriceConfigWindow },
+ data() {
+ return {
+ // 琛ㄥ崟鏁版嵁
+ form: {
+ pricePramId: ''
+ },
+ list: [],
+ memberRidesList: [],
+ }
+ },
+ created() {
+ },
+ methods: {
+ open(title, target) {
+ this.title = title
+ this.visible = true
+ // 鏂板缓
+ this.form.pricePramId = target.id
+ this.search()
+ // this.$nextTick(() => {
+ // this.list = target.payOrderDTOList
+ // this.memberRidesList = target.memberRidesList
+ // this.$refs.goodsOrderList.reload(target.model)
+ // })
+ },
+ search() {
+ findListByPricePramId(this.form)
+ .then(res => {
+ this.list = res
+ })
+ }
+ },
+
+}
+</script>
+
+<style scoped>
+.title {
+ font-size: 18px;
+ font-weight: 600;
+ color: #333;
+ margin-bottom: 20px;
+ margin-top: 20px;
+}
+
+</style>
diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue
index f64334c..9a72a26 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -2,7 +2,7 @@
<div class="common-header">
<div class="header">
<div class="logo">
- <div>娴峰緱瀹�</div>
+ <div>婊ㄦ箹鑷杞︾璧佺郴缁�</div>
<!-- <div class="title-en">Diagnosis of Intelligent Manufacturing Integrated Service Platfrom</div> -->
</div>
<div class="user">
diff --git a/admin/src/components/common/UploadAvatarImage.vue b/admin/src/components/common/UploadAvatarImage.vue
index d5f1a06..687a8fd 100644
--- a/admin/src/components/common/UploadAvatarImage.vue
+++ b/admin/src/components/common/UploadAvatarImage.vue
@@ -30,7 +30,7 @@
},
data() {
return {
- uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/uploadPicture',
+ uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/uploadLocal',
// uploadData: {
// folder: 'upload',
// type: 'image'
diff --git a/admin/src/components/system/dict/OperaDictDataWindow.vue b/admin/src/components/system/dict/OperaDictDataWindow.vue
index 1ee593d..600e0ae 100644
--- a/admin/src/components/system/dict/OperaDictDataWindow.vue
+++ b/admin/src/components/system/dict/OperaDictDataWindow.vue
@@ -78,7 +78,6 @@
for (const key in this.form) {
this.form[key] = target[key]
}
- debugger
this.form.code = target.code
})
},
diff --git a/admin/src/views/business/bikeLocation.vue b/admin/src/views/business/bikeLocation.vue
index ec5987d..35a4e74 100644
--- a/admin/src/views/business/bikeLocation.vue
+++ b/admin/src/views/business/bikeLocation.vue
@@ -67,6 +67,6 @@
}
}
/**
- *
+ *
*/
</script>
diff --git a/admin/src/views/business/bikeRepair.vue b/admin/src/views/business/bikeRepair.vue
index c49203c..143b16a 100644
--- a/admin/src/views/business/bikeRepair.vue
+++ b/admin/src/views/business/bikeRepair.vue
@@ -8,7 +8,7 @@
<el-form-item label="杞﹁締缂栧彿" prop="binkeId">
<el-input v-model="searchForm.binkeId" placeholder="璇疯緭鍏ヨ溅杈嗙紪鍙�" @keypress.enter.native="search"></el-input>
</el-form-item>
- <el-form-item label="鐘舵�� 0寰呭鐞� 1宸插鐞� 2鍏朵粬" prop="status">
+ <el-form-item label="鐘舵��" prop="status">
<el-select v-model="searchForm.status" placeholder="璇烽�夋嫨">
<el-option
label="寰呭鐞�"
@@ -45,36 +45,38 @@
stripe
border
>
- <el-table-column prop="creator" label="鍒涘缓浜�" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="linkname" label="鑱旂郴浜�" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="binkeId" label="杞﹁締缂栫爜" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="editDate" label="杞︾被鍨�" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="param" label="闂绫诲瀷" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="openid" label="鍒涘缓浜�" min-width="180px" align="center"></el-table-column>
+ <el-table-column prop="linkname" label="鑱旂郴浜�" min-width="100px" align="center">
+ <template slot-scope="{row}">
+ {{ `${row.linkname} ${row.linkphone}` }}
+ </template>
+ </el-table-column>
+ <el-table-column prop="bikeCode" label="杞﹁締缂栫爜" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="bikeTypeName" label="杞︾被鍨�" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="param" label="闂绫诲瀷" min-width="100px" show-overflow-tooltip align="center">
+ <template slot-scope="{row}">
+ <div class="long-title-style">{{ row.param }}</div>
+ </template>
+ </el-table-column>
<!-- <el-table-column prop="param" label="杞﹁締闂" min-width="100px"></el-table-column> -->
- <el-table-column prop="content" label="闂璇存槑" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="content" label="闂璇存槑" min-width="100px" show-overflow-tooltip align="center">
+ <template slot-scope="{row}">
+ <div class="long-title-style">{{ row.content }}</div>
+ </template>
+ </el-table-column>
<el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="status" label="鐘舵��" min-width="100px" align="center">
+ <el-table-column prop="status" label="鐘舵��" min-width="80px" align="center">
<template slot-scope="{row}">
<div v-if="row.status==0" style="color: red;">寰呭鐞�</div>
<div v-else-if="row.status==1">宸插鐞�</div>
<div v-else>鍏朵粬</div>
</template>
</el-table-column>
- <el-table-column label="鎿嶄綔" min-width="100px" align="center">
+ <el-table-column label="鎿嶄綔" min-width="80px" fixed="right" align="center">
<template slot-scope="{row}">
<el-button v-if="row.status==0" type="text" @click="dealAction(row)">澶勭悊</el-button>
</template>
</el-table-column>
- <!-- <el-table-column prop="isdeleted" label="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�" min-width="100px"></el-table-column>
- <el-table-column prop="longitude" label="缁忓害" min-width="100px"></el-table-column>
- <el-table-column prop="latitude" label="绾害" min-width="100px"></el-table-column>
- <el-table-column prop="addr" label="璇︾粏鍦板潃" min-width="100px"></el-table-column>
- <el-table-column prop="paramId" label="杞﹁締闂鍘熷洜缂栫爜锛堝叧鑱攂ase_param)" min-width="100px"></el-table-column>
- <el-table-column prop="info" label="澶囨敞" min-width="100px"></el-table-column>
- <el-table-column prop="linkphone" label="鑱旂郴鐢佃瘽" min-width="100px"></el-table-column>
- <el-table-column prop="dealUser" label="澶勭悊浜虹紪鐮侊紙鍏宠仈system_user)" min-width="100px"></el-table-column>
- <el-table-column prop="dealDate" label="澶勭悊鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="dealInfo" label="澶勭悊澶囨敞" min-width="100px"></el-table-column> -->
</el-table>
<pagination
@size-change="handleSizeChange"
@@ -83,6 +85,7 @@
>
</pagination>
</template>
+ <OperaRepairDealWindow ref="operaRepairDealWindow" @success="handlePageChange"/>
</TableLayout>
</template>
@@ -90,10 +93,11 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
+import OperaRepairDealWindow from '@/components/business/OperaRepairDealWindow'
export default {
name: 'BikeRepair',
extends: BaseTable,
- components: { TableLayout, Pagination },
+ components: { TableLayout, Pagination, OperaRepairDealWindow },
data () {
return {
value1: [],
@@ -133,7 +137,7 @@
},
methods: {
dealAction(row) {
-
+ this.$refs.operaRepairDealWindow.open('澶勭悊', row)
}
},
}
diff --git a/admin/src/views/business/bikeRetakeRecord.vue b/admin/src/views/business/bikeRetakeRecord.vue
index c74cbc3..3b4b016 100644
--- a/admin/src/views/business/bikeRetakeRecord.vue
+++ b/admin/src/views/business/bikeRetakeRecord.vue
@@ -45,16 +45,16 @@
stripe
border
>
- <el-table-column prop="memberId" label="鐢ㄦ埛" min-width="180px" align="center"></el-table-column>
+ <el-table-column prop="openid" label="鐢ㄦ埛" min-width="180px" align="center"></el-table-column>
<el-table-column prop="bikeCode" label="杞﹁締缂栫爜" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="paramId" label="杞﹁締绫诲瀷" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="paramId" label="鍊熷嚭绔欑偣" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="paramId" label="鍊熷嚭閿佸叿鍙�" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="bikeType" label="杞﹁締绫诲瀷" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="rentSiteId" label="鍊熷嚭绔欑偣" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="rentLockId" label="鍊熷嚭閿佸叿鍙�" min-width="100px" align="center"></el-table-column>
<el-table-column prop="rentDate" label="鍊熷嚭鏃堕棿" min-width="140px" align="center"></el-table-column>
- <el-table-column prop="paramId" label="褰掕繕绔欑偣" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="paramId" label="褰掕繕閿佸叿鍙�" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="backSiteId" label="褰掕繕绔欑偣" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="backLockId" label="褰掕繕閿佸叿鍙�" min-width="100px" align="center"></el-table-column>
<el-table-column prop="backDate" label="褰掕繕鏃堕棿" min-width="140px" align="center"></el-table-column>
- <el-table-column prop="duration" label="鍊熷嚭鏃堕暱(鍒�)" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="rideTime" label="鍊熷嚭鏃堕暱(鍒�)" fixed="right" min-width="100px" align="center"></el-table-column>
<!-- <el-table-column prop="creator" label="鍒涘缓浜�" min-width="100px"></el-table-column>
<el-table-column prop="editDate" label="缂栬緫鏃堕棿" min-width="100px"></el-table-column>
@@ -151,7 +151,7 @@
created () {
this.config({
module: '鐢ㄦ埛楠戣璁板綍琛�',
- api: '/business/memberRides',
+ api: '/business/bikeRetakeRecord',
'field.id': 'id',
'field.main': 'id'
})
diff --git a/admin/src/views/business/goodsorder.vue b/admin/src/views/business/goodsorder.vue
index 2107caa..e6a06dc 100644
--- a/admin/src/views/business/goodsorder.vue
+++ b/admin/src/views/business/goodsorder.vue
@@ -2,8 +2,8 @@
<TableLayout :permissions="['business:goodsorder:query']">
<!-- 鎼滅储琛ㄥ崟 -->
<el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
- <el-form-item label="鐢ㄦ埛" prop="memberId">
- <el-input v-model="searchForm.memberId" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
+ <el-form-item label="鐢ㄦ埛" prop="openid">
+ <el-input v-model="searchForm.openid" placeholder="璇疯緭鍏�" @keypress.enter.native="search"></el-input>
</el-form-item>
<el-form-item label="璁㈠崟缂栧彿" prop="code">
<el-input v-model="searchForm.code" placeholder="璇疯緭鍏ヨ鍗曠紪鍙�" @keypress.enter.native="search"></el-input>
@@ -15,7 +15,7 @@
<el-select v-model="searchForm.status" placeholder="璇烽�夋嫨">
<el-option
label="鏈粨绠�"
- :value="1">
+ :value="0">
</el-option>
<el-option
label="宸茬粨绠�"
@@ -27,15 +27,12 @@
<el-date-picker
v-model="value1"
type="daterange"
+ @change="selectDate"
range-separator="鑷�"
start-placeholder="寮�濮嬫棩鏈�"
end-placeholder="缁撴潫鏃ユ湡">
</el-date-picker>
</el-form-item>
-
- <!-- <el-form-item label="缁撶畻绫诲瀷 0鑷姩缁撶畻 1骞冲彴浜哄伐缁撶畻 2绯荤粺鑷姩缁撶畻" prop="closeType">
- <el-input v-model="searchForm.closeType" placeholder="璇疯緭鍏ョ粨绠楃被鍨� 0鑷姩缁撶畻 1骞冲彴浜哄伐缁撶畻 2绯荤粺鑷姩缁撶畻" @keypress.enter.native="search"></el-input>
- </el-form-item> -->
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
<el-button @click="reset">閲嶇疆</el-button>
@@ -52,12 +49,13 @@
stripe
border
>
- <el-table-column prop="code" label="璁㈠崟缂栧彿" min-width="130px" align="center"></el-table-column>
- <el-table-column prop="onlineOrderid" label="浜ゆ槗鍗曞彿" min-width="180px" align="center"></el-table-column>
- <el-table-column prop="money" label="鎶奸噾(鍏�)" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="openid" label="鐢ㄦ埛" min-width="225px" align="center"></el-table-column>
+ <el-table-column prop="id" label="璁㈠崟缂栧彿" min-width="225px" align="center"></el-table-column>
+ <el-table-column prop="onlineOrderid" label="浜ゆ槗鍗曞彿" min-width="225px" align="center"></el-table-column>
+ <el-table-column prop="money" label="鎶奸噾(鍏�)" min-width="80px" align="center"></el-table-column>
<el-table-column prop="payDate" label="浜ゆ娂閲戞椂闂�" min-width="140px" align="center"></el-table-column>
- <el-table-column prop="closeMoney" label="閫�鎶奸噾(鍏冿級" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="closeMoney" label="缁撶畻閲戦(鍏冿級" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="refundMoney" label="閫�鎶奸噾(鍏冿級" min-width="80px" align="center"></el-table-column>
+ <el-table-column prop="closeMoney" label="缁撶畻閲戦(鍏冿級" min-width="90px" align="center"></el-table-column>
<el-table-column prop="closeDate" label="閫�娆剧粨绠楁椂闂�" min-width="140px" align="center"></el-table-column>
@@ -85,9 +83,9 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="deleteById(row)">璁㈠崟璇︽儏</el-button>
- <el-button type="text" @click="deleteById(row)">閫�娆�</el-button>
- <el-button type="text" @click="deleteById(row)" style="color: red">缁撶畻</el-button>
+ <el-button type="text" @click="showDetail(row)">璁㈠崟璇︽儏</el-button>
+ <el-button type="text" @click="statement(row)" v-if="row.status != 4" style="color: red">缁撶畻</el-button>
+ <el-button type="text" @click="refenMoney(row)" v-else>閫�娆�</el-button>
</template>
</el-table-column>
</el-table>
@@ -98,6 +96,8 @@
>
</pagination>
</template>
+ <GoodsOrderDetail ref="goodsOrderDetail" />
+ <BackGoodsorderWindow ref="backGoodsorderWindow" @success="handlePageChange" />
</TableLayout>
</template>
@@ -105,10 +105,13 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
+import GoodsOrderDetail from '@/components/business/goodsOrderDetail'
+import BackGoodsorderWindow from '@/components/business/backGoodsorderWindow'
+import { getDetail, getGoodsorderCanBanlanceDTO, closerGoodsorder } from '@/api/business/goodsorder'
export default {
name: 'Goodsorder',
extends: BaseTable,
- components: { TableLayout, Pagination },
+ components: { TableLayout, Pagination, GoodsOrderDetail, BackGoodsorderWindow },
data () {
return {
// 鎼滅储
@@ -121,7 +124,7 @@
isdeleted: '',
info: '',
code: '',
- memberId: '',
+ openid: '',
money: '',
status: '',
preOrderid: '',
@@ -131,11 +134,9 @@
payDate: '',
type: '',
closeMoney: '',
- closeId: '',
- closeDate: '',
- closeInfo: '',
- closeUserId: '',
- closeType: ''
+ startDate: '',
+ endDate: '',
+
},
value1: []
}
@@ -154,6 +155,48 @@
this.value1 = []
this.$refs.searchForm.resetFields()
this.search()
+ },
+ selectDate(v) {
+ this.searchForm.startDate = ''
+ this.searchForm.endDate = ''
+ if (v) {
+ this.searchForm.startDate = v[0]
+ this.searchForm.endDate = v[1]
+ }
+ this.search()
+ },
+ showDetail({id}) {
+ getDetail(id)
+ .then(res => {
+ this.$refs.goodsOrderDetail.open('璁㈠崟璇︽儏',res)
+ })
+ .catch(err => {
+ this.$tip.apiFailed(err)
+ })
+
+ },
+ statement({id}) {
+ this.$dialog.messageWaring('褰撳墠璁㈠崟鍙兘鏈夋湭瀹屾垚鐨勯獞琛岋紝纭畾寮哄埗缁撶畻锛�', '寮哄埗缁撶畻')
+ .then(() => {
+ closerGoodsorder(id)
+ .then(() => {
+ this.$tip.apiSuccess('缁撶畻鎴愬姛')
+ })
+ .catch(err => {
+ this.$tip.apiFailed(err)
+ })
+ })
+ .catch(() => {})
+
+ },
+ refenMoney({id}) {
+ getGoodsorderCanBanlanceDTO({orderId:id})
+ .then(res => {
+ this.$refs.backGoodsorderWindow.open('寮哄埗閫�娆�', {orderId:id, ...res})
+ })
+ .catch(err => {
+ this.$tip.apiFailed(err)
+ })
}
}
}
diff --git a/admin/src/views/business/memberRides.vue b/admin/src/views/business/memberRides.vue
index 5446f02..7bfa153 100644
--- a/admin/src/views/business/memberRides.vue
+++ b/admin/src/views/business/memberRides.vue
@@ -45,12 +45,12 @@
stripe
border
>
- <el-table-column prop="memberId" label="鐢ㄦ埛" min-width="180px" align="center"></el-table-column>
+ <el-table-column prop="openid" label="鐢ㄦ埛" min-width="180px" align="center"></el-table-column>
<el-table-column prop="bikeCode" label="杞﹁締缂栫爜" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="paramId" label="杞﹁締绫诲瀷缂栫爜" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="rentDate" label="绉熻溅鏃堕棿" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="duration" label="楠戣璁¤垂鏃堕暱" min-width="100px" align="center"></el-table-column>
- <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="bikeType" label="杞﹁締绫诲瀷" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="rideTime" label="鍊熷嚭鏃堕暱(鍒�)" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="duration" label="璁¤垂鏃堕暱(鍒�)" min-width="100px" align="center"></el-table-column>
+ <el-table-column prop="rentDate" label="鍒涘缓鏃堕棿" min-width="100px" align="center"></el-table-column>
<el-table-column prop="backDate" label="杩樿溅鏃堕棿" min-width="100px" align="center"></el-table-column>
<el-table-column prop="closeStatus" label="缁撶畻鐘舵��" min-width="100px" align="center">
<!-- 0鏈粨绠� 1宸茬粨鏉� -->
diff --git a/admin/src/views/business/miniproSetting.vue b/admin/src/views/business/miniproSetting.vue
index 8bf034e..a869a4d 100644
--- a/admin/src/views/business/miniproSetting.vue
+++ b/admin/src/views/business/miniproSetting.vue
@@ -10,22 +10,22 @@
<el-input v-model="form.serverPhone" placeholder="璇疯緭鍏ユ湇鍔$數璇�"></el-input>
</el-form-item>
<el-form-item label="鎶奸噾閲戦">
- <el-input v-model="form.rentDeposit" placeholder="璇疯緭鍏ユ娂閲戦噾棰�"></el-input>
+ <el-input v-model="form.rentDeposit" type="number" placeholder="璇疯緭鍏ユ娂閲戦噾棰�"></el-input>
<div class="tips">璇疯緭鍏ラ渶瑕佺即绾崇殑鎶奸噾閲戦(鍗曚綅锛氬厓)</div>
</el-form-item>
<el-form-item label="钀ヤ笟鏃堕棿">
- <el-time-select placeholder="寮�濮嬫椂闂�" v-model="form.businessStarttime"></el-time-select>
+ <el-time-picker placeholder="寮�濮嬫椂闂�" value-format="HH:mm" :picker-options="option" v-model="form.businessStarttime"></el-time-picker>
鑷�
- <el-time-select placeholder="缁撴潫鏃堕棿" v-model="form.businessEndtime"></el-time-select>
+ <el-time-picker placeholder="缁撴潫鏃堕棿" value-format="HH:mm" :picker-options="option" v-model="form.businessEndtime"></el-time-picker>
</el-form-item>
<el-form-item label="鍏嶈垂楠戣鏃堕暱">
- <el-input v-model="form.freeRentTime" placeholder="璇疯緭鍏ュ悕绉�"></el-input>
+ <el-input v-model="form.freeRentTime" type="number" placeholder="璇疯緭鍏ュ厤璐归獞琛屾椂闀�"></el-input>
<div class="tips">鍏嶈垂楠戣鏃堕暱锛屽崟浣嶏細鍒嗛挓</div>
</el-form-item>
<el-form-item label="婊¤浇棰勮(%)" prop="name">
<div style="display: flex;">
- 浣庝簬<el-input style="width: 80px;" v-model="form.warnMin" placeholder="鏈�灏忓��"></el-input>
- 鎴栭珮浜�<el-input style="width: 80px;" v-model="form.warnMax" placeholder="鏈�澶у��"></el-input>
+ 浣庝簬<el-input style="width: 80px;" v-model="form.warnMin" type="number" placeholder="鏈�灏忓��"></el-input>
+ 鎴栭珮浜�<el-input style="width: 80px;" v-model="form.warnMax" type="number" placeholder="鏈�澶у��"></el-input>
浼氭兂閽夐拤缇ゅ彂閫侀璀�
</div>
<div class="tips">褰撹溅杈嗘弧杞借秴杩囦互涓婇厤缃椂锛屾彁绀虹鐞嗗憳</div>
@@ -34,9 +34,8 @@
<el-input v-model="form.warnDingdingUrl" placeholder="璇疯緭鍏ラ璀﹂拤閽夌兢鍦板潃"></el-input>
</el-form-item>
<el-form-item label="绉熻祦娴佺▼瑙嗛" prop="name">
- <!-- :before-upload="beforeAvatarUpload" -->
- <el-upload class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/" :show-file-list="false"
- accept=".mp4" :on-success="handleAvatarSuccess">
+ <el-upload class="avatar-uploader" :action="uploadImgUrl" :show-file-list="false"
+ accept=".mp4" :data="{folder: 'bike',}" :on-success="handleAvatarSuccess">
<video v-if="form.rentTipsVideo" :src="form.rentTipsVideo" class="avatar"></video>
<!-- <img v-if="imageUrl" :src="imageUrl" > -->
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
@@ -56,9 +55,9 @@
placeholder="璇疯緭鍏ュ仠姝㈡湇鍔℃彁绀�"></el-input>
</el-form-item>
<el-form-item label="鍋滄鏈嶅姟鏃堕棿">
- <el-time-select placeholder="寮�濮嬫椂闂�" v-model="form.stopServeStarttime"></el-time-select>
+ <el-time-picker placeholder="寮�濮嬫椂闂�" value-format="HH:mm" :picker-options="option" v-model="form.stopServeStarttime"></el-time-picker>
鑷�
- <el-time-select placeholder="缁撴潫鏃堕棿" v-model="form.stopServeEndtime"></el-time-select>
+ <el-time-picker placeholder="缁撴潫鏃堕棿" value-format="HH:mm" :picker-options="option" v-model="form.stopServeEndtime"></el-time-picker>
<div class="tips">鍋滄鏈嶅姟寮�濮嬫椂闂磋嚦缁撴潫鏃堕棿</div>
</el-form-item>
</template>
@@ -77,6 +76,10 @@
components: { TableLayout },
data() {
return {
+ uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/uploadLocal',
+ option: {
+ format: 'HH:mm'
+ },
// 鎼滅储
form: {
businessEndtime: '',
@@ -106,7 +109,8 @@
},
methods: {
handleAvatarSuccess(res, file) {
- this.imageUrl = URL.createObjectURL(file.raw);
+ console.log(res.data.url);
+ this.form.rentTipsVideo = res.data.url;
},
// beforeAvatarUpload(file) {
// console.log(file.type);
diff --git a/admin/src/views/business/pricingParam.vue b/admin/src/views/business/pricingParam.vue
index 287d7e5..90d56b4 100644
--- a/admin/src/views/business/pricingParam.vue
+++ b/admin/src/views/business/pricingParam.vue
@@ -31,18 +31,10 @@
<el-table-column prop="status" label="鐘舵��" min-width="100px" align="center">
<template slot-scope="{row}">
<!-- 0鍚敤 1绂佺敤 -->
- <el-switch v-model="form.status" active-value="0" inactive-value="1" active-color="#13ce66"></el-switch>
+ <el-switch v-model="row.status" :active-value="0" :inactive-value="1" active-color="#13ce66" @change="changeStatus(row)"></el-switch>
</template>
</el-table-column>
<el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px" align="center"></el-table-column>
- <!-- <el-table-column prop="creator" label="鍒涘缓浜�" min-width="100px"></el-table-column>
- <el-table-column prop="editDate" label="缂栬緫鏃堕棿" min-width="100px"></el-table-column>
- <el-table-column prop="editor" label="缂栬緫浜�" min-width="100px"></el-table-column>
- <el-table-column prop="isdeleted" label="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�" min-width="100px"></el-table-column> -->
-
-
-
- <!-- <el-table-column prop="info" label="澶囨敞" min-width="100px"></el-table-column> -->
<el-table-column
v-if="containPermissions(['business:pricingparam:update', 'business:pricingparam:delete'])"
label="鎿嶄綔"
@@ -51,8 +43,9 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaPricingParamWindow.open('缂栬緫瀹氫环鏂规閰嶇疆', row)" icon="el-icon-edit" v-permissions="['business:pricingparam:update']">缂栬緫</el-button>
- <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:pricingparam:delete']">鍒犻櫎</el-button>
+ <el-button type="text" @click="$refs.priceConfiguration.open(`${row.name}瀹氫环鏂规`, row)">閰嶇疆璐圭巼</el-button>
+ <el-button type="text" @click="$refs.operaPricingParamWindow.open('缂栬緫瀹氫环鏂规閰嶇疆', row)" v-permissions="['business:pricingparam:update']">缂栬緫</el-button>
+ <el-button type="text" @click="deleteById(row)" v-permissions="['business:pricingparam:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
</el-table>
@@ -65,6 +58,7 @@
</template>
<!-- 鏂板缓/淇敼 -->
<OperaPricingParamWindow ref="operaPricingParamWindow" @success="handlePageChange"/>
+ <PriceConfiguration ref="priceConfiguration" @success="handlePageChange"/>
</TableLayout>
</template>
@@ -73,10 +67,12 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaPricingParamWindow from '@/components/business/OperaPricingParamWindow'
+import PriceConfiguration from '@/components/business/priceConfiguration'
+import { updateById } from '@/api/business/pricingParam'
export default {
name: 'PricingParam',
extends: BaseTable,
- components: { TableLayout, Pagination, OperaPricingParamWindow },
+ components: { TableLayout, Pagination, OperaPricingParamWindow, PriceConfiguration },
data () {
return {
// 鎼滅储
@@ -104,6 +100,20 @@
'field.main': 'id'
})
this.search()
- }
+ },
+ methods: {
+ changeStatus(row) {
+ updateById(row)
+ .then(() => {
+ this.$tip.apiSuccess('鎴愬姛')
+ })
+ .catch(e => {
+ this.$tip.apiFailed(e)
+ })
+ .finally(() => {
+ this.handlePageChange()
+ })
+ }
+ },
}
</script>
diff --git a/admin/src/views/business/returnReason.vue b/admin/src/views/business/returnReason.vue
index 1ae36f1..38af376 100644
--- a/admin/src/views/business/returnReason.vue
+++ b/admin/src/views/business/returnReason.vue
@@ -15,7 +15,7 @@
<!-- 琛ㄦ牸鍜屽垎椤� -->
<template v-slot:table-wrap>
<ul class="toolbar" v-permissions="['business:baseparam:create']">
- <li><el-button type="primary" @click="$refs.operaReturnReasonWindow.open('鏂板缓杞﹁締闂')" icon="el-icon-plus" v-permissions="['business:baseparam:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" @click="$refs.operaReturnReasonWindow.open('鏂板缓寮哄埗杩樿溅鍘熷洜')" icon="el-icon-plus" v-permissions="['business:baseparam:create']">鏂板缓</el-button></li>
</ul>
<el-table
v-loading="isWorking.search"
@@ -44,7 +44,7 @@
fixed="right"
>
<template slot-scope="{row}">
- <el-button type="text" @click="$refs.operaReturnReasonWindow.open('缂栬緫杞﹁締闂', row)" icon="el-icon-edit" v-permissions="['business:baseparam:update']">缂栬緫</el-button>
+ <el-button type="text" @click="$refs.operaReturnReasonWindow.open('缂栬緫寮哄埗杩樿溅鍘熷洜', row)" icon="el-icon-edit" v-permissions="['business:baseparam:update']">缂栬緫</el-button>
<el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:baseparam:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
diff --git a/server/platform/src/main/resources/application.yml b/server/platform/src/main/resources/application.yml
index 7a60062..82e580e 100644
--- a/server/platform/src/main/resources/application.yml
+++ b/server/platform/src/main/resources/application.yml
@@ -63,4 +63,3 @@
mqtt:
clientid: doumeetestplat
subclientid: doumeetestplatSub
-
diff --git a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
index faadb29..fdee4ed 100644
--- a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -3011,7 +3011,7 @@
* @return
*/
public static Integer betweenMin(Date begin, Date end) {
- if(begin ==null || end == null){
+ if(begin ==null ){
return 0;
}
long createTime =begin.getTime();//鑾峰彇鍒涘缓鏃堕棿鐨勬椂闂存埑
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 307569d..2ed8c62 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -641,7 +641,7 @@
memberRidesResponse.setUnitTime(s.getUnitTime());
if ( Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(s.getStatus()))){
//濡傛灉鏄獞琛屼腑
- s.setDuration(rideTime> finalFreeTime ?(rideTime- finalFreeTime):0);
+ s.setDuration(rideTime> finalFreeTime ?(rideTime):0);
}
s.setRideTime(rideTime);
return memberRidesResponse;
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
index d9e8c89..349f663 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberRidesServiceImpl.java
@@ -220,9 +220,9 @@
queryWrapper.ge(model.getRentDateStart()!=null, MemberRides::getRentDate,model.getRentDateStart());
queryWrapper.le(model.getRentDateEnd()!=null, MemberRides::getRentDate,model.getRentDateEnd());
queryWrapper.eq(model.getCloseStatus()!=null,MemberRides::getCloseStatus, model.getCloseStatus());
+ queryWrapper.eq(model.getStatus()!=null,MemberRides::getStatus, model.getStatus());
queryWrapper.eq(model.getGoodsorderId()!=null,MemberRides::getOrdreId, model.getGoodsorderId());
- queryWrapper.eq(model.getGoodsorderId()!=null,MemberRides::getStatus, model.getStatus());
- queryWrapper.eq(MemberRides::getBackType, Constants.ZERO);
+// queryWrapper.eq(MemberRides::getBackType, Constants.ZERO);
queryWrapper.in(MemberRides::getStatus,
Arrays.asList(Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey(),Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()));
queryWrapper
@@ -728,7 +728,9 @@
update.setBackLockId(param.getBackLockId());
update.setBackSiteId(param.getBackSiteId());
update.setBackCommondId(param.getBackCommondId());
- int duration =DateUtil.betweenMin(memberRides.getRentDate(),date)-freeTime;
+// int duration =DateUtil.betweenMin(memberRides.getRentDate(),date)-freeTime;
+ int min = DateUtil.betweenMin(memberRides.getRentDate(),date);//瀹為檯楠戣鏃堕棿
+ int duration = min>freeTime?min:0;
update.setDuration(duration>0?duration:0);
update.setBackType(Constants.ONE);
update.setBackInfo("鐢ㄦ埛姝e父杩樿溅");
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java
index 4716129..4d0f278 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/PricingDetailServiceImpl.java
@@ -104,7 +104,7 @@
if(min >0){
title += min+"鍒嗛挓";
}
- title = Constants.translateMoney(unitPrice).doubleValue()
+ title += Constants.translateMoney(unitPrice).doubleValue()
+"鍏冿紝瓒呰繃鍚�"+Constants.translateMoney(basePrice).doubleValue()+"鍏�/"
+unitTime+"鍒嗛挓";
}
--
Gitblit v1.9.3