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