From 0046d701fb2878895359b0ffe7a5354c4ccab7e4 Mon Sep 17 00:00:00 2001 From: Mr.Zhang <710666463@qq.com> Date: 星期三, 18 十月 2023 16:07:09 +0800 Subject: [PATCH] 管理端 --- 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 + 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 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 ++++ admin/src/components/business/backGoodsorderWindow.vue | 151 +++++++ admin/src/components/business/goodsOrderDetail.vue | 104 +++++ admin/.env.staging | 8 26 files changed, 984 insertions(+), 103 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> -- Gitblit v1.9.3