From c313a253b1fcdc75b6be5db575fc2b29fb407021 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 15 四月 2026 20:05:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 admin/src/components/business/OperaCityPriceRuleWindow.vue     |   10 
 admin/src/components/business/OperaShopApprovalWindow.vue      |  450 +++++
 small-program/pages/itinerary/itinerary.vue                    |   19 
 small-program/static/icon/nav_wode@2x.png                      |    0 
 small-program/pages/message/message.vue                        |   19 
 small-program/static/icon/nav_xingcheng_sel@2x.png             |    0 
 admin/src/api/business/shopWithdraw.js                         |   29 
 admin/src/views/business/driverList.vue                        |  155 +
 admin/src/views/business/shopWithdrawList.vue                  |  156 +
 admin/src/components/business/OperaWithdrawDetailWindow.vue    |  297 +++
 small-program/static/icon/nav_xiaoxi_sel@2x.png                |    0 
 admin/.env.development                                         |    2 
 admin/src/views/business/vehicleType.vue                       |   99 +
 admin/src/components/business/OperaGoodsCategoryEditWindow.vue |  204 ++
 admin/src/api/business/goodsCategory.js                        |   33 
 admin/src/components/business/OperaMemberDetail.vue            |  185 ++
 admin/src/components/business/OperaDriverDetail.vue            |  363 ++++
 admin/src/components/business/OperaShopInfoWindow.vue          |  100 
 admin/src/views/business/shopQualificationList.vue             |  155 +
 admin/src/components/business/OperaDispatch.vue                |  144 +
 admin/src/api/business/banner.js                               |   43 
 admin/src/views/business/driverVerification.vue                |  160 +
 small-program/static/icon/nav_xingcheng@2x.png                 |    0 
 admin/src/views/business/memberList.vue                        |  105 +
 admin/src/views/business/bannerList.vue                        |  138 +
 admin/src/views/business/goodsCategoryList.vue                 |   96 +
 admin/src/api/business/memberManage.js                         |   18 
 admin/src/views/business/memberManage.vue                      |  149 +
 small-program/static/icon/nav_home@2x.png                      |    0 
 admin/src/components/business/OperaOrderDetail.vue             |  399 ++++
 admin/src/views/business/storeList.vue                         |    5 
 admin/src/components/business/OperaShopEditWindow.vue          |   19 
 admin/src/components/business/OperaShopInfoSeeWindow.vue       |  416 ++++
 small-program/static/icon/nav_wode_sel@2x.png                  |    0 
 small-program/static/icon/nav_xiaoxi@2x.png                    |    0 
 small-program/static/icon/nav_home_sel@2x.png                  |    0 
 admin/src/views/business/itemLevel.vue                         |   96 +
 admin/src/api/business/orderManagement.js                      |   18 
 admin/src/views/business/orderManagement.vue                   |  190 ++
 admin/src/api/business/shopInfo.js                             |    5 
 admin/src/views/business/baggageType.vue                       |   96 +
 admin/src/views/business/sysParams.vue                         |  169 +
 admin/src/api/business/revenue.js                              |   39 
 admin/src/components/business/OperaDriverApproval.vue          |  338 +++
 admin/src/components/business/OperaBannerEditWindow.vue        |  135 +
 /dev/null                                                      |   26 
 small-program/main.js                                          |    6 
 small-program/pages.json                                       |  154 -
 admin/src/api/business/sysParams.js                            |   11 
 admin/src/api/business/driver.js                               |   30 
 50 files changed, 5,059 insertions(+), 222 deletions(-)

diff --git a/admin/.env.development b/admin/.env.development
index 2585437..a03598a 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -1,4 +1,4 @@
 # 寮�鍙戠幆澧冮厤缃�
 NODE_ENV = 'development'
-VUE_APP_API_URL  = 'http://192.168.1.44:10010'
+VUE_APP_API_URL  = 'http://192.168.1.4:10010'
 # VUE_APP_API_URL = 'https://jinkuai.832smartfarm.com/jinkuai_admin'
diff --git a/admin/src/api/business/banner.js b/admin/src/api/business/banner.js
new file mode 100644
index 0000000..84e4f4d
--- /dev/null
+++ b/admin/src/api/business/banner.js
@@ -0,0 +1,43 @@
+import request from '../../utils/request'
+
+export function fetchList (data) {
+  return request.post('/business/banner/page', data, {
+    trim: true
+  })
+}
+
+export function create (data) {
+  return request.post('/business/banner/create', data)
+}
+
+export function updateStatus (data) {
+  return request.post('/business/banner/updateStatus', data)
+}
+
+export function updateById (data) {
+  return request.post('/business/banner/updateById', data)
+}
+
+export function getById (id) {
+  return request.get(`/business/banner/${id}`)
+}
+
+export function deleteById (id) {
+  return request.get(`/business/banner/delete/${id}`)  
+}
+
+export function deleteByIdInBatch (ids) {
+  return request.get('/business/banner/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/business/banner/exportExcel', data, {
+    download: true,
+    trim: true
+  })
+}
\ No newline at end of file
diff --git a/admin/src/api/business/driver.js b/admin/src/api/business/driver.js
new file mode 100644
index 0000000..f7ae784
--- /dev/null
+++ b/admin/src/api/business/driver.js
@@ -0,0 +1,30 @@
+import request from '../../utils/request'
+
+export function fetchList (data) {
+  return request.post('/business/driverInfo/page', data, {
+    trim: true
+  })
+}
+
+export function getById (id) {
+  return request.get(`/business/driverInfo/detail/${id}`)
+}
+
+export function updateStatus (data) {
+  return request.post('/business/driverInfo/updateStatus', data, {
+    trim: true
+  })
+}
+
+export function exportExcel (data) {
+  return request.post('/business/driverInfo/exportExcel', data, {
+    download: true,
+    trim: true
+  })
+}
+
+export function audit (data) {
+  return request.post('/business/driverInfo/audit', data, {
+    trim: true
+  })
+}
diff --git a/admin/src/api/business/goodsCategory.js b/admin/src/api/business/goodsCategory.js
new file mode 100644
index 0000000..4d1bfec
--- /dev/null
+++ b/admin/src/api/business/goodsCategory.js
@@ -0,0 +1,33 @@
+import request from '../../utils/request'
+
+export function fetchList (data) {
+  return request.post('/business/category/page', data, {
+    trim: true
+  })
+}
+
+export function create (data) {
+  return request.post('/business/category/create', data, {
+    trim: true
+  })
+}
+
+export function updateStatus (data) {
+  return request.post('/business/category/updateStatus', data, {
+    trim: true
+  })
+}
+
+export function updateById (data) {
+  return request.post('/business/category/updateById', data, {
+    trim: true
+  })
+}
+
+export function getById (id) {
+  return request.get(`/business/category/${id}`)
+}
+
+export function deleteById (id) {
+  return request.get(`/business/category/delete/${id}`)
+}
diff --git a/admin/src/api/business/memberManage.js b/admin/src/api/business/memberManage.js
new file mode 100644
index 0000000..797020e
--- /dev/null
+++ b/admin/src/api/business/memberManage.js
@@ -0,0 +1,18 @@
+import request from '../../utils/request'
+
+export function fetchList (data) {
+  return request.post('/business/member/list/page', data, {
+    trim: true
+  })
+}
+
+export function getById (id) {
+  return request.get(`/business/member/detail/${id}`)
+}
+
+export function exportExcel (data) {
+  return request.post('/business/member/list/exportExcel', data, {
+    download: true,
+    trim: true
+  })
+}
diff --git a/admin/src/api/business/orderManagement.js b/admin/src/api/business/orderManagement.js
new file mode 100644
index 0000000..c7fae0e
--- /dev/null
+++ b/admin/src/api/business/orderManagement.js
@@ -0,0 +1,18 @@
+import request from '../../utils/request'
+
+export function fetchList (data) {
+  return request.post('/business/orders/page', data, {
+    trim: true
+  })
+}
+
+export function getById (id) {
+  return request.get(`/business/orders/detail/${id}`)
+}
+
+export function exportExcel (data) {
+  return request.post('/business/orders/exportExcel', data, {
+    download: true,
+    trim: true
+  })
+}
diff --git a/admin/src/api/business/revenue.js b/admin/src/api/business/revenue.js
new file mode 100644
index 0000000..335f68a
--- /dev/null
+++ b/admin/src/api/business/revenue.js
@@ -0,0 +1,39 @@
+import request from '../../utils/request'
+
+export function fetchList (data) {
+  return request.post('/business/revenue/page', data, {
+    trim: true
+  })
+}
+
+export function create (data) {
+  return request.post('/business/revenue/create', data)
+}
+
+export function updateStatus (data) {
+  return request.post('/business/revenue/updateStatus', data)
+}
+
+export function updateById (data) {
+  return request.post('/business/revenue/updateShop', data)
+}
+
+export function deleteById (id) {
+  return request.get(`/business/revenue/delete/${id}`)  
+}
+
+export function deleteByIdInBatch (ids) {
+  return request.get('/business/revenue/delete/batch', {
+    params: {
+      ids
+    }
+  })
+}
+
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+  return request.post('/business/revenue/exportExcel', data, {
+    download: true,
+    trim: true
+  })
+}
\ No newline at end of file
diff --git a/admin/src/api/business/shopInfo.js b/admin/src/api/business/shopInfo.js
index d394d7f..3ec1001 100644
--- a/admin/src/api/business/shopInfo.js
+++ b/admin/src/api/business/shopInfo.js
@@ -44,3 +44,8 @@
 export function resetPassword (data) {
   return request.post('/business/shopInfo/resetPassword', data)
 }
+
+// 闂ㄥ簵瀹℃壒
+export function audit (data) {
+  return request.post('/business/shopInfo/audit', data)
+}
diff --git a/admin/src/api/business/shopWithdraw.js b/admin/src/api/business/shopWithdraw.js
new file mode 100644
index 0000000..4bec4a8
--- /dev/null
+++ b/admin/src/api/business/shopWithdraw.js
@@ -0,0 +1,29 @@
+import request from '../../utils/request'
+
+export function fetchList (data) {
+  return request.post('/business/withdrawalOrders/page', data, {
+    trim: true
+  })
+}
+
+export function getById (id) {
+  return request.get(`/business/withdrawalOrders/${id}`)
+}
+
+export function getTotalAmount (data) {
+  return request.post('/business/withdrawalOrders/totalAmount', data, {
+    trim: true
+  })
+}
+
+export function audit (data) {
+  return request.post('/business/withdrawalOrders/audit', data, {
+    trim: true
+  })
+}
+
+export function approve (data) {
+  return request.post('/business/withdrawalOrders/approve', data, {
+    trim: true
+  })
+}
diff --git a/admin/src/api/business/sysParams.js b/admin/src/api/business/sysParams.js
new file mode 100644
index 0000000..0ca888f
--- /dev/null
+++ b/admin/src/api/business/sysParams.js
@@ -0,0 +1,11 @@
+import request from '../../utils/request'
+
+export function getParams () {
+  return request.get('/business/operationConfig')
+}
+
+export function saveParams (data) {
+  return request.post('/business/operationConfig/save', data, {
+    trim: true
+  })
+}
diff --git a/admin/src/components/business/OperaBannerEditWindow.vue b/admin/src/components/business/OperaBannerEditWindow.vue
new file mode 100644
index 0000000..d688d0d
--- /dev/null
+++ b/admin/src/components/business/OperaBannerEditWindow.vue
@@ -0,0 +1,135 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    width="500px"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form ref="form" :model="form" :rules="rules">
+      <el-form-item label="鏍囬" prop="title">
+        <el-input v-model="form.title" placeholder="璇疯緭鍏ユ爣棰�"></el-input>
+      </el-form-item>
+      <el-form-item label="鍥剧墖" prop="imgurl">
+        <UploadImages
+          :fileList="imgurl ? [{ url: imgurl }] : []"
+          :uploadData="{ folder: 'banner' }"
+          :maxCount="1"
+          @getFileList="e => { form.imgurl = e.fileurl; imgurl = e.url }"
+          @deleteRow="form.imgurl = ''; imgurl = ''" />
+      </el-form-item>
+      <el-form-item label="鎺掑簭鐮�" prop="sortnum">
+        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-switch
+          v-model="form.status"
+          active-color="#13ce66"
+          inactive-color="#ff4949"
+          :active-value="1"
+          :inactive-value="0"
+        ></el-switch>
+      </el-form-item>
+      <el-form-item label="灞曠ず浣嶇疆" prop="position">
+        <el-select v-model="form.position" placeholder="璇烽�夋嫨灞曠ず浣嶇疆">
+          <el-option label="浼氬憳绔椤佃疆鎾�" :value="0"></el-option>
+          <el-option label="鍙告満APP寮曞椤�" :value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="璺宠浆鏂瑰紡" prop="type">
+        <el-select v-model="form.type" placeholder="璇烽�夋嫨璺宠浆鏂瑰紡">
+          <el-option label="鏃�" :value="0"></el-option>
+          <el-option label="瀵屾枃鏈�" :value="1"></el-option>
+          <el-option label="澶栭摼" :value="2"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鍐呭" prop="content" v-if="form.type === 1">
+        <RichEditor :richData="form.content" :styleEditor="styleEditor" @getWangedditor="getWangedditor" :readonly="false"/>
+      </el-form-item>
+      <el-form-item label="鍐呭" prop="content" v-if="form.type === 2">
+        <el-input v-model="form.content" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadImages from '@/components/common/uploadImages'
+import { getById } from '@/api/business/banner'
+import RichEditor from '@/components/common/RichEditor'
+export default {
+  name: 'OperaBannerEditWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow, UploadImages, RichEditor },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      styleEditor:'border: 1px solid #ccc;display: inline-block;',
+      form: {
+        id: null,
+        title: '',
+        content: '',
+        position: '',
+        imgurl: '',
+        type: '',
+        sortnum: '',
+        status: 1
+      },
+      imgurl: '',
+      rules: {
+        position: [{ required: true, message: '璇烽�夋嫨灞曠ず浣嶇疆', trigger: 'change' }],
+        imgurl: [{ required: true, message: '璇蜂笂浼犲浘鐗�', trigger: 'change' }],
+        type: [{ required: true, message: '璇烽�夋嫨璺宠浆鏂瑰紡', trigger: 'change' }],
+        content: [{ required: true, message: '璇疯緭鍏ュ唴瀹�', trigger: 'blur' }]
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/banner',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    open (title, row) {
+      this.title = title
+      if (row && row.id) {
+        getById(row.id).then(res => {
+          this.form = {
+            id: res.id,
+            title: res.title || '',
+            position: res.position,
+            imgurl: res.imgurl || '',
+            type: res.type,
+            sortnum: res.sortnum,
+            status: res.status ?? 1,
+            content: res.content || ''
+          }
+          this.imgurl = res.imgurlFull
+          this.visible = true
+        }).catch(e => {
+          this.$tip.apiFailed(e)
+        })
+      } else {
+        this.form = {
+          id: null,
+          title: '',
+          position: '',
+          imgurl: '',
+          type: '',
+          sortnum: '',
+          status: 1,
+          content: ''
+        }
+        this.imgurl = ''
+        this.visible = true
+      }
+    },
+    getWangedditor (data) {
+      this.form.content = data
+    }
+  }
+}
+</script>
diff --git a/admin/src/components/business/OperaCityPriceRuleWindow.vue b/admin/src/components/business/OperaCityPriceRuleWindow.vue
index 8e40ff5..74b5489 100644
--- a/admin/src/components/business/OperaCityPriceRuleWindow.vue
+++ b/admin/src/components/business/OperaCityPriceRuleWindow.vue
@@ -179,13 +179,11 @@
           this.$tip.apiFailed(e)
         })
     },
-    // 鏌ヨ寮傚湴瀵勯�佽鍒欏垪琛�
+    // 鏌ヨ棰勮鏃舵晥
     fetchEstimatedDelivery () {
       estimatedDelivery(this.form.cityId)
         .then(data => {
-          this.timeTableData = [
-            data
-          ]
+          this.timeTableData = data
         })
         .catch(e => {
           this.$tip.apiFailed(e)
@@ -223,13 +221,13 @@
       Promise.all([
         batchSave({ cityId: this.form.cityId, items: this.jiudiTableData }),
         batchSaveRemoteDelivery({ cityId: this.form.cityId, items: this.remoteTableData }),
-        batchSaveEstimatedDelivery({ cityId: this.form.cityId, ...this.timeTableData[0] }),
+        batchSaveEstimatedDelivery({ cityId: this.form.cityId, items: this.timeTableData }),
         batchSaveStoreDeposit({ cityId: this.form.cityId, items: this.storeDepositData }),
         batchSaveRevenueShare({ cityId: this.form.cityId, items: this.shareTableData })
       ])
         .then(() => {
           this.visible = false
-          this.$tip.apiSuccess('淇濆瓨鎴愬姛')
+          // this.$tip.apiSuccess('淇濆瓨鎴愬姛')
           this.$emit('success')
         })
         .catch(e => {
diff --git a/admin/src/components/business/OperaDispatch.vue b/admin/src/components/business/OperaDispatch.vue
new file mode 100644
index 0000000..24f5aae
--- /dev/null
+++ b/admin/src/components/business/OperaDispatch.vue
@@ -0,0 +1,144 @@
+<template>
+  <GlobalWindow
+    title="鎵嬪姩娲惧崟"
+    :visible.sync="visible"
+    width="700px"
+    @confirm="handleConfirm"
+    @close="handleClose"
+  >
+    <div class="dispatch-info">
+      <div class="info-row">
+        <div class="info-item">
+          <span class="label">璁㈠崟缂栧彿锛�</span>
+          <span class="value">{{ orderInfo.orderNo }}</span>
+        </div>
+        <div class="info-item">
+          <span class="label">瀹炰粯閲戦锛�</span>
+          <span class="value">楼{{ (orderInfo.payAmount / 100).toFixed(2) }}</span>
+        </div>
+        <div class="info-item">
+          <span class="label">閰嶉�佹柟寮忥細</span>
+          <span class="value">
+            <span v-if="orderInfo.deliveryType === 1">鏅�氶厤閫�</span>
+            <span v-else-if="orderInfo.deliveryType === 2">鎬ラ�熻揪</span>
+            <span v-else-if="orderInfo.deliveryType === 3">寮傚湴瀵勯��</span>
+            <span v-else>-</span>
+          </span>
+        </div>
+      </div>
+    </div>
+
+    <el-table :data="orderInfo.goodsList" stripe class="goods-table">
+      <el-table-column prop="goodsName" label="鐗╁搧鍚嶇О" min-width="100px"></el-table-column>
+      <el-table-column prop="goodsSize" label="鐗╁搧灏哄" min-width="80px"></el-table-column>
+      <el-table-column label="閰嶉�佷环锛堝厓锛�" min-width="100px">
+        <template slot-scope="{row}">楼{{ (row.deliveryPrice / 100).toFixed(2) }}</template>
+      </el-table-column>
+      <el-table-column prop="quantity" label="鏁伴噺" min-width="60px"></el-table-column>
+      <el-table-column label="灏忚锛堝厓锛�" min-width="100px">
+        <template slot-scope="{row}">楼{{ ((row.deliveryPrice * row.quantity) / 100).toFixed(2) }}</template>
+      </el-table-column>
+    </el-table>
+
+    <el-form ref="form" :model="form" :rules="rules" label-width="100px" class="dispatch-form">
+      <el-form-item label="閰嶉�佸徃鏈�" prop="driverId">
+        <el-select v-model="form.driverId" placeholder="璇烽�夋嫨閰嶉�佸徃鏈�" style="width: 100%">
+          <el-option label="鍙告満A" :value="1"></el-option>
+          <el-option label="鍙告満B" :value="2"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鍔犳�ヨ垂" prop="urgentFee">
+        <el-input-number v-model="form.urgentFee" :min="0" :precision="2" controls-position="right" style="width: 100%"></el-input-number>
+      </el-form-item>
+      <el-form-item label="澶囨敞璇存槑" prop="remark">
+        <el-input type="textarea" v-model="form.remark" placeholder="璇疯緭鍏ュ娉ㄨ鏄�" :rows="3"></el-input>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+
+export default {
+  name: 'OperaDispatch',
+  components: { GlobalWindow },
+  data () {
+    return {
+      visible: false,
+      orderInfo: {
+        orderNo: '',
+        payAmount: 0,
+        deliveryType: '',
+        goodsList: []
+      },
+      form: {
+        driverId: '',
+        urgentFee: 0,
+        remark: ''
+      },
+      rules: {
+        driverId: [{ required: true, message: '璇烽�夋嫨閰嶉�佸徃鏈�', trigger: 'change' }]
+      }
+    }
+  },
+  methods: {
+    open (row) {
+      this.orderInfo = {
+        orderNo: row.orderNo,
+        payAmount: row.payAmount || 0,
+        deliveryType: row.deliveryType || '',
+        goodsList: row.goodsList || []
+      }
+      this.form = {
+        driverId: '',
+        urgentFee: 0,
+        remark: ''
+      }
+      this.visible = true
+    },
+    handleClose () {
+      this.visible = false
+    },
+    handleConfirm () {
+      this.$refs.form.validate(valid => {
+        if (!valid) return
+        this.$emit('confirm', {
+          orderId: this.orderInfo.id,
+          ...this.form
+        })
+        this.visible = false
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.dispatch-info {
+  margin-bottom: 20px;
+}
+.info-row {
+  display: flex;
+  gap: 30px;
+  padding: 15px;
+  background: #f5f7fa;
+  border-radius: 4px;
+}
+.info-item {
+  display: flex;
+  font-size: 14px;
+}
+.info-item .label {
+  color: #909399;
+}
+.info-item .value {
+  color: #606266;
+}
+.goods-table {
+  margin-bottom: 20px;
+}
+.dispatch-form {
+  margin-top: 20px;
+}
+</style>
diff --git a/admin/src/components/business/OperaDriverApproval.vue b/admin/src/components/business/OperaDriverApproval.vue
new file mode 100644
index 0000000..c328301
--- /dev/null
+++ b/admin/src/components/business/OperaDriverApproval.vue
@@ -0,0 +1,338 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    width="900px"
+    :withFooter="false"
+  >
+    <div class="driver-approval">
+      <div class="section">
+        <div class="section-header">
+          <span class="section-title">鍙告満淇℃伅</span>
+          <el-tag type="success" v-if="detailInfo.auditStatus">宸叉巿鏉冩墜鏈哄彿</el-tag>
+          <el-tag type="warning" v-else>鏈巿鏉冩墜鏈哄彿</el-tag>
+          <div class="approval-status">
+            <el-tag v-if="detailInfo.auditStatus === 0" type="warning" class="status-tag">寰呭鏍�</el-tag>
+            <el-tag v-else-if="detailInfo.auditStatus === 1" type="success" class="status-tag">瀹℃壒閫氳繃</el-tag>
+            <el-tag v-else-if="detailInfo.auditStatus === 2" type="danger" class="status-tag">瀹℃壒椹冲洖</el-tag>
+          </div>
+        </div>
+        <div class="info-grid">
+          <div class="info-item">
+            <span class="label">鍙告満濮撳悕锛�</span>
+            <span class="value">{{ detailInfo.name || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鎺堟潈鎵嬫満鍙凤細</span>
+            <span class="value">{{ detailInfo.telephone || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">韬唤璇佸彿锛�</span>
+            <span class="value">{{ detailInfo.idcard || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">濠氬Щ鎯呭喌锛�</span>
+            <span class="value" v-if="detailInfo.maritalStatus === 3">涓у伓</span>
+            <span class="value" v-else-if="detailInfo.maritalStatus === 2">绂诲紓</span>
+            <span class="value" v-else-if="detailInfo.maritalStatus === 1">宸插</span>
+            <span class="value" v-else-if="detailInfo.maritalStatus === 0">鏈</span>
+            <span class="value" v-else>-</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鎬у埆锛�</span>
+            <span class="value">{{ detailInfo.gender === 1 ? '鐢�' : detailInfo.gender === 2 ? '濂�' : '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鐜板眳浣忓湴鍧�锛�</span>
+            <span class="value">{{ detailInfo.livePlace || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">璇勭骇锛�</span>
+            <span class="value">{{ detailInfo.driverLevel || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鐘舵�侊細</span>
+            <span class="value">{{ detailInfo.status === 0 ? '鍚敤' : '绂佺敤' }}</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="section">
+        <div class="section-header">
+          <span class="section-title">杞﹁締淇℃伅</span>
+        </div>
+        <div class="info-grid">
+          <div class="info-item">
+            <span class="label">杞︾墝鍙凤細</span>
+            <span class="value">{{ detailInfo.carCode || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">杞﹁締绫诲瀷锛�</span>
+            <span class="value">{{ detailInfo.carTypeName || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">杞﹁締棰滆壊锛�</span>
+            <span class="value">{{ detailInfo.carColor || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">椹鹃┒璇佹湁鏁堟湡锛�</span>
+            <span class="value">{{ detailInfo.cardStartDate || '-' }} 鑷� {{ detailInfo.cardEndDate || '-' }}</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="section">
+        <div class="section-header">
+          <span class="section-title">闄勪欢鏉愭枡</span>
+        </div>
+        <div class="info-grid">
+          <div class="info-item">
+            <span class="label">韬唤璇佹闈細</span>
+            <el-image
+              v-if="detailInfo.idcardImg"
+              style="width: 80px; height: 80px"
+              :src="detailInfo.imgPrefix + detailInfo.idcardImg"
+              :preview-src-list="[detailInfo.imgPrefix + detailInfo.idcardImg]"
+              fit="cover"
+            ></el-image>
+            <span v-else>-</span>
+          </div>
+          <div class="info-item">
+            <span class="label">韬唤璇佸弽闈細</span>
+            <el-image
+              v-if="detailInfo.idcardImgBack"
+              style="width: 80px; height: 80px"
+              :src="detailInfo.imgPrefix + detailInfo.idcardImgBack"
+              :preview-src-list="[detailInfo.imgPrefix + detailInfo.idcardImgBack]"
+              fit="cover"
+            ></el-image>
+            <span v-else>-</span>
+          </div>
+          <div class="info-item full-width">
+            <span class="label">杞﹁締鐓х墖锛�</span>
+            <span v-if="!detailInfo.carImgList">-</span>
+            <div v-else class="image-list">
+              <el-image
+                v-for="(img, index) in detailInfo.carImgList"
+                :key="index"
+                style="width: 80px; height: 80px; margin-right: 10px"
+                :src="img.fileurlFull"
+                :preview-src-list="detailInfo.carImgList.map(item => item.fileurlFull)"
+                fit="cover"
+              ></el-image>
+            </div>
+          </div>
+          <div class="info-item full-width">
+            <span class="label">椹鹃┒璇佺収鐗囷細</span>
+            <span v-if="!detailInfo.licenseImgList">-</span>
+            <div v-else class="image-list">
+              <el-image
+                v-for="(img, index) in detailInfo.licenseImgList"
+                :key="index"
+                style="width: 80px; height: 80px; margin-right: 10px"
+                :src="img.fileurlFull"
+                :preview-src-list="detailInfo.licenseImgList.map(item => item.fileurlFull)"
+                fit="cover"
+              ></el-image>
+            </div>
+          </div>
+          <div class="info-item full-width">
+            <span class="label">鍏跺畠鏉愭枡锛�</span>
+            <span v-if="!detailInfo.otherImgList">-</span>
+            <div v-else class="image-list">
+              <el-image
+                v-for="(img, index) in detailInfo.otherImgList"
+                :key="index"
+                style="width: 80px; height: 80px; margin-right: 10px"
+                :src="img.fileurlFull"
+                :preview-src-list="detailInfo.otherImgList.map(item => item.fileurlFull)"
+                fit="cover"
+              ></el-image>
+            </div>
+          </div>
+        </div>
+      </div>
+
+      <div class="approval-form" v-if="detailInfo.auditStatus === 0">
+        <el-form ref="approvalForm" :model="approvalForm" :rules="approvalRules">
+          <el-form-item label="瀹℃壒缁撴灉" prop="auditStatus">
+            <el-radio-group v-model="approvalForm.auditStatus">
+              <el-radio :label="0">閫氳繃</el-radio>
+              <el-radio :label="1">鎷掔粷</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <el-form-item label="鍙告満璇勭骇" prop="driverLevel">
+            <el-select v-model="approvalForm.driverLevel" placeholder="璇烽�夋嫨鍙告満璇勭骇" style="width: 300px">
+              <el-option label="S" :value="5"></el-option>
+              <el-option label="A" :value="4"></el-option>
+              <el-option label="B" :value="3"></el-option>
+              <el-option label="C" :value="2"></el-option>
+              <el-option label="D" :value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="瀹℃壒鎰忚" prop="auditRemark">
+            <el-input
+              type="textarea"
+              v-model="approvalForm.auditRemark"
+              placeholder="璇疯緭鍏ュ鎵规剰瑙�"
+              :rows="3"
+              style="width: 400px"
+            ></el-input>
+          </el-form-item>
+        </el-form>
+        <div class="approval-buttons">
+          <el-button @click="close">鍙栨秷</el-button>
+          <el-button type="primary" @click="handleConfirm" :loading="isWorking">纭畾</el-button>
+        </div>
+      </div>
+    </div>
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { getById, audit } from '@/api/business/driver'
+
+export default {
+  name: 'OperaDriverApproval',
+  components: { GlobalWindow },
+  data () {
+    return {
+      title: '鍙告満瀹℃牳',
+      visible: false,
+      isWorking: false,
+      detailInfo: {},
+      approvalForm: {
+        id: null,
+        auditStatus: 0,
+        driverLevel: '',
+        auditRemark: ''
+      },
+      approvalRules: {
+        auditStatus: [{ required: true, message: '璇烽�夋嫨瀹℃壒缁撴灉', trigger: 'change' }],
+        driverLevel: [{ required: true, message: '璇烽�夋嫨鍙告満璇勭骇', trigger: 'change' }],
+        auditRemark: [{ required: true, message: '璇疯緭鍏ュ鎵规剰瑙�', trigger: 'blur' }]
+      }
+    }
+  },
+  methods: {
+    open (title, row) {
+      this.title = title
+      this.approvalForm = {
+        id: row.id,
+        auditStatus: 1,
+        driverLevel: '',
+        auditRemark: ''
+      }
+      this.$nextTick(() => {
+        this.$refs.approvalForm && this.$refs.approvalForm.clearValidate()
+      })
+      getById(row.id).then(res => {
+        this.detailInfo = res
+        this.visible = true
+      }).catch(e => {
+        this.$tip.apiFailed(e)
+      })
+    },
+    close () {
+      this.visible = false
+    },
+    handleConfirm () {
+      this.$refs.approvalForm.validate(valid => {
+        if (!valid) return
+        if (this.approvalForm.status === 2 && !this.approvalForm.remark) {
+          this.$message.warning('璇疯緭鍏ュ鎵规剰瑙�')
+          return
+        }
+        this.isWorking = true
+        audit({
+          id: this.approvalForm.id,
+          auditStatus: this.approvalForm.auditStatus,
+          driverLevel: this.approvalForm.driverLevel,
+          auditRemark: this.approvalForm.auditRemark
+        }).then(res => {
+          this.$tip.apiSuccess(res || '瀹℃牳鎴愬姛')
+          this.$emit('success', this.approvalForm)
+          this.visible = false
+        }).catch(e => {
+          this.$tip.apiFailed(e)
+        }).finally(() => {
+          this.isWorking = false
+        })
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.driver-approval {
+  
+}
+.section {
+  margin-bottom: 25px;
+}
+.section-header {
+  display: flex;
+  align-items: center;
+  gap: 10px;
+  margin-bottom: 15px;
+  flex-wrap: wrap;
+}
+.section-title {
+  font-size: 16px;
+  font-weight: bold;
+  color: #303133;
+  padding-left: 10px;
+  border-left: 4px solid #2E68EC;
+}
+.approval-status {
+  margin-left: auto;
+}
+.status-tag {
+  font-size: 14px;
+  padding: 4px 12px;
+}
+.info-grid {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: 15px;
+  padding: 0 10px;
+}
+.info-item {
+  display: flex;
+  font-size: 14px;
+}
+.info-item.full-width {
+  grid-column: span 2;
+}
+.info-item .label {
+  color: #909399;
+  min-width: 110px;
+}
+.info-item .value {
+  color: #606266;
+  word-break: break-all;
+}
+.image-list {
+  display: flex;
+  flex-wrap: wrap;
+}
+.approval-form {
+  padding: 20px;
+  background: #f5f7fa;
+  border-top: 1px solid #eee;
+}
+.approval-form /deep/ .el-form-item {
+  margin-bottom: 15px;
+}
+.approval-form /deep/ .el-form-item:last-child {
+  margin-bottom: 0;
+}
+.approval-buttons {
+  display: flex;
+  justify-content: flex-end;
+  gap: 10px;
+  margin-top: 15px;
+}
+</style>
diff --git a/admin/src/components/business/OperaDriverDetail.vue b/admin/src/components/business/OperaDriverDetail.vue
new file mode 100644
index 0000000..5b25e54
--- /dev/null
+++ b/admin/src/components/business/OperaDriverDetail.vue
@@ -0,0 +1,363 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    width="900px"
+    :withFooter="false"
+  >
+    <div class="driver-detail">
+      <el-tabs v-model="activeTab">
+        <el-tab-pane label="鍩烘湰淇℃伅" name="basic"></el-tab-pane>
+        <el-tab-pane label="鍙告満涓氬姟" name="business"></el-tab-pane>
+      </el-tabs>
+
+      <div v-show="activeTab === 'basic'" class="tab-content">
+        <div class="section">
+          <div class="section-header">
+            <span class="section-title">鍙告満淇℃伅</span>
+            <el-tag type="success" v-if="detailInfo.auditStatus">宸叉巿鏉冩墜鏈哄彿</el-tag>
+            <el-tag type="warning" v-else>鏈巿鏉冩墜鏈哄彿</el-tag>
+          </div>
+          <div class="info-grid">
+            <div class="info-item">
+              <span class="label">鍙告満濮撳悕锛�</span>
+              <span class="value">{{ detailInfo.name || '-' }}</span>
+            </div>
+            <div class="info-item">
+              <span class="label">鎺堟潈鎵嬫満鍙凤細</span>
+              <span class="value">{{ detailInfo.telephone || '-' }}</span>
+            </div>
+            <div class="info-item">
+              <span class="label">韬唤璇佸彿锛�</span>
+              <span class="value">{{ detailInfo.idcard || '-' }}</span>
+            </div>
+            <div class="info-item">
+              <span class="label">濠氬Щ鎯呭喌锛�</span>
+              <span class="value" v-if="detailInfo.maritalStatus === 3">涓у伓</span>
+              <span class="value" v-else-if="detailInfo.maritalStatus === 2">绂诲紓</span>
+              <span class="value" v-else-if="detailInfo.maritalStatus === 1">宸插</span>
+              <span class="value" v-else-if="detailInfo.maritalStatus === 0">鏈</span>
+            </div>
+            <div class="info-item">
+              <span class="label">鎬у埆锛�</span>
+              <span class="value">{{ detailInfo.gender === 1 ? '鐢�' : detailInfo.gender === 2 ? '濂�' : '-' }}</span>
+            </div>
+            <div class="info-item">
+              <span class="label">鐜板眳浣忓湴鍧�锛�</span>
+              <span class="value">{{ detailInfo.livePlace || '-' }}</span>
+            </div>
+            <div class="info-item">
+              <span class="label">璇勭骇锛�</span>
+              <span class="value">{{ detailInfo.driverLevel || '-' }}</span>
+            </div>
+            <div class="info-item">
+              <span class="label">鐘舵�侊細</span>
+              <span class="value">{{ detailInfo.status === 0 ? '鍚敤' : '绂佺敤' }}</span>
+            </div>
+          </div>
+        </div>
+
+        <div class="section">
+          <div class="section-header">
+            <span class="section-title">杞﹁締淇℃伅</span>
+          </div>
+          <div class="info-grid">
+            <div class="info-item">
+              <span class="label">杞︾墝鍙凤細</span>
+              <span class="value">{{ detailInfo.carCode || '-' }}</span>
+            </div>
+            <div class="info-item">
+              <span class="label">杞﹁締绫诲瀷锛�</span>
+              <span class="value">{{ detailInfo.carTypeName || '-' }}</span>
+            </div>
+            <div class="info-item">
+              <span class="label">杞﹁締棰滆壊锛�</span>
+              <span class="value">{{ detailInfo.carColor || '-' }}</span>
+            </div>
+            <div class="info-item">
+              <span class="label">椹鹃┒璇佹湁鏁堟湡锛�</span>
+              <span class="value">{{ detailInfo.cardStartDate || '-' }} 鑷� {{ detailInfo.cardEndDate || '-' }}</span>
+            </div>
+          </div>
+        </div>
+
+        <div class="section">
+          <div class="section-header">
+            <span class="section-title">闄勪欢鏉愭枡</span>
+          </div>
+          <div class="info-grid">
+            <div class="info-item">
+              <span class="label">韬唤璇佹闈細</span>
+              <el-image
+                v-if="detailInfo.idcardImg"
+                style="width: 80px; height: 80px"
+                :src="detailInfo.imgPrefix + detailInfo.idcardImg"
+                :preview-src-list="[detailInfo.imgPrefix + detailInfo.idcardImg]"
+                fit="cover"
+              ></el-image>
+              <span v-else>-</span>
+            </div>
+            <div class="info-item">
+              <span class="label">韬唤璇佸弽闈細</span>
+              <el-image
+                v-if="detailInfo.idcardImgBack"
+                style="width: 80px; height: 80px"
+                :src="detailInfo.imgPrefix + detailInfo.idcardImgBack"
+                :preview-src-list="[detailInfo.imgPrefix + detailInfo.idcardImgBack]"
+                fit="cover"
+              ></el-image>
+              <span v-else>-</span>
+            </div>
+            <div class="info-item full-width">
+              <span class="label">杞﹁締鐓х墖锛�</span>
+              <span v-if="!detailInfo.carImgList">-</span>
+              <div v-else class="image-list">
+                <el-image
+                  v-for="(img, index) in detailInfo.carImgList"
+                  :key="index"
+                  style="width: 80px; height: 80px; margin-right: 10px"
+                  :src="img.fileurlFull"
+                  :preview-src-list="detailInfo.carImgList.map(item => item.fileurlFull)"
+                  fit="cover"
+                ></el-image>
+              </div>
+            </div>
+            <div class="info-item full-width">
+              <span class="label">椹鹃┒璇佺収鐗囷細</span>
+              <span v-if="!detailInfo.licenseImgList">-</span>
+              <div v-else class="image-list">
+                <el-image
+                  v-for="(img, index) in detailInfo.licenseImgList"
+                  :key="index"
+                  style="width: 80px; height: 80px; margin-right: 10px"
+                  :src="img.fileurlFull"
+                  :preview-src-list="detailInfo.licenseImgList.map(item => item.fileurlFull)"
+                  fit="cover"
+                ></el-image>
+              </div>
+            </div>
+            <div class="info-item full-width">
+              <span class="label">鍏跺畠鏉愭枡锛�</span>
+              <span v-if="!detailInfo.otherImgList">-</span>
+              <div v-else class="image-list">
+                <el-image
+                  v-for="(img, index) in detailInfo.otherImgList"
+                  :key="index"
+                  style="width: 80px; height: 80px; margin-right: 10px"
+                  :src="img.fileurlFull"
+                  :preview-src-list="detailInfo.otherImgList.map(item => item.fileurlFull)"
+                  fit="cover"
+                ></el-image>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+
+      <div v-show="activeTab === 'business'" class="tab-content">
+        <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
+          <el-form-item label="璁㈠崟缂栧彿" prop="orderNo">
+            <el-input v-model="searchForm.orderNo" clearable placeholder="璇疯緭鍏ヨ鍗曠紪鍙�"></el-input>
+          </el-form-item>
+          <el-form-item label="鐗╁搧淇℃伅" prop="goodsInfo">
+            <el-input v-model="searchForm.goodsInfo" clearable placeholder="璇疯緭鍏ョ墿鍝佷俊鎭�"></el-input>
+          </el-form-item>
+          <el-form-item label="鍒涘缓鏃堕棿" prop="createTime">
+            <el-date-picker type="daterange" v-model="searchForm.createTime" clearable value-format="yyyy-MM-dd"
+                            range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" @change="handleDateChange" />
+          </el-form-item>
+          <el-form-item label="璁㈠崟鐘舵��" prop="orderStatus">
+            <el-select v-model="searchForm.orderStatus" clearable placeholder="璇烽�夋嫨璁㈠崟鐘舵��">
+              <el-option label="寰呭彇浠�" :value="1"></el-option>
+              <el-option label="閰嶉�佷腑" :value="2"></el-option>
+              <el-option label="宸插畬鎴�" :value="3"></el-option>
+              <el-option label="宸插彇娑�" :value="4"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="缁撶畻鐘舵��" prop="settleStatus">
+            <el-select v-model="searchForm.settleStatus" clearable placeholder="璇烽�夋嫨缁撶畻鐘舵��">
+              <el-option label="鏈粨绠�" :value="0"></el-option>
+              <el-option label="宸茬粨绠�" :value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <section>
+            <el-button type="primary" @click="searchBusiness">鎼滅储</el-button>
+            <el-button @click="resetBusiness">閲嶇疆</el-button>
+          </section>
+        </el-form>
+
+        <div class="statistics">
+          <span>璁㈠崟鏁帮細{{ statistics.orderCount }}</span>
+          <span>璁㈠崟鎬讳环锛毬{ (statistics.orderAmount / 100).toFixed(2) }}</span>
+          <span>缁撶畻鎬讳环锛毬{ (statistics.settleAmount / 100).toFixed(2) }}</span>
+        </div>
+
+        <el-table :data="businessData.list" stripe>
+          <el-table-column prop="orderNo" label="璁㈠崟缂栧彿" min-width="150px"></el-table-column>
+          <el-table-column prop="goodsInfo" label="鐗╁搧淇℃伅" min-width="120px"></el-table-column>
+          <el-table-column prop="type" label="绫诲瀷" min-width="80px"></el-table-column>
+          <el-table-column prop="level" label="璁㈠崟绾у埆" min-width="80px"></el-table-column>
+          <el-table-column label="鐗╁搧淇濊垂锛堝厓锛�" min-width="120px">
+            <template slot-scope="{row}">楼{{ (row.insuranceAmount / 100).toFixed(2) }}</template>
+          </el-table-column>
+          <el-table-column label="鍩虹鏈嶅姟璐癸紙鍏冿級" min-width="120px">
+            <template slot-scope="{row}">楼{{ (row.serviceAmount / 100).toFixed(2) }}</template>
+          </el-table-column>
+          <el-table-column label="璁㈠崟鐘舵��" min-width="100px">
+            <template slot-scope="{row}">
+              <span v-if="row.orderStatus === 1">寰呭彇浠�</span>
+              <span v-else-if="row.orderStatus === 2">閰嶉�佷腑</span>
+              <span v-else-if="row.orderStatus === 3">宸插畬鎴�</span>
+              <span v-else-if="row.orderStatus === 4">宸插彇娑�</span>
+              <span v-else>-</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="缁撶畻鐘舵��" min-width="100px">
+            <template slot-scope="{row}">
+              <span :style="{ color: row.settleStatus === 1 ? '#67c23a' : '#e6a23c' }">
+                {{ row.settleStatus === 1 ? '宸茬粨绠�' : '鏈粨绠�' }}
+              </span>
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination
+          @size-change="handleBusinessSizeChange"
+          @current-change="handleBusinessPageChange"
+          :pagination="businessData.pagination"
+        ></pagination>
+      </div>
+    </div>
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import Pagination from '@/components/common/Pagination'
+import { getById } from '@/api/business/driver'
+
+export default {
+  name: 'OperaDriverDetail',
+  components: { GlobalWindow, Pagination },
+  data () {
+    return {
+      title: '鍙告満璇︽儏',
+      visible: false,
+      activeTab: 'basic',
+      detailInfo: {},
+      searchForm: {
+        orderNo: '',
+        goodsInfo: '',
+        createTime: '',
+        startTime: '',
+        endTime: '',
+        orderStatus: '',
+        settleStatus: ''
+      },
+      statistics: {
+        orderCount: 0,
+        orderAmount: 0,
+        settleAmount: 0
+      },
+      businessData: {
+        list: [],
+        pagination: { page: 1, size: 10, total: 0 }
+      }
+    }
+  },
+  methods: {
+    open (title, row) {
+      this.title = title
+      this.activeTab = 'basic'
+      getById(row.id).then(res => {
+        this.detailInfo = res
+        this.visible = true
+      }).catch(e => {
+        this.$tip.apiFailed(e)
+      })
+    },
+    searchBusiness () {
+    },
+    resetBusiness () {
+      this.searchForm = {
+        orderNo: '',
+        goodsInfo: '',
+        createTime: '',
+        startTime: '',
+        endTime: '',
+        orderStatus: '',
+        settleStatus: ''
+      }
+      this.searchBusiness()
+    },
+    handleDateChange (val) {
+      this.searchForm.startTime = val ? val[0] : ''
+      this.searchForm.endTime = val ? val[1] : ''
+    },
+    handleBusinessSizeChange () {
+    },
+    handleBusinessPageChange () {
+    }
+  }
+}
+</script>
+
+<style scoped>
+.driver-detail {
+  width: 100%;
+}
+.tab-content {
+  margin-top: 20px;
+}
+.section {
+  margin-bottom: 25px;
+}
+.section-header {
+  display: flex;
+  align-items: center;
+  gap: 10px;
+  margin-bottom: 15px;
+}
+.section-title {
+  font-size: 16px;
+  font-weight: bold;
+  color: #303133;
+  padding-left: 10px;
+  border-left: 4px solid #2E68EC;
+}
+.info-grid {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: 15px;
+  padding: 0 10px;
+}
+.info-item {
+  display: flex;
+  font-size: 14px;
+}
+.info-item.full-width {
+  grid-column: span 2;
+}
+.info-item .label {
+  color: #909399;
+  min-width: 110px;
+}
+.info-item .value {
+  color: #606266;
+  word-break: break-all;
+}
+.image-list {
+  display: flex;
+  flex-wrap: wrap;
+}
+.statistics {
+  display: flex;
+  gap: 40px;
+  padding: 15px;
+  background: #f5f7fa;
+  border-radius: 4px;
+  margin-bottom: 15px;
+  font-size: 14px;
+  color: #606266;
+  margin: 20px 0;
+}
+</style>
diff --git a/admin/src/components/business/OperaGoodsCategoryEditWindow.vue b/admin/src/components/business/OperaGoodsCategoryEditWindow.vue
new file mode 100644
index 0000000..6736820
--- /dev/null
+++ b/admin/src/components/business/OperaGoodsCategoryEditWindow.vue
@@ -0,0 +1,204 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    width="500px"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form ref="form" :model="form" :rules="rules">
+      <el-form-item label="绫诲瀷鍚嶇О" prop="name" v-if="form.type === 1">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ョ被鍨嬪悕绉�"></el-input>
+      </el-form-item>
+      <el-form-item label="琛屾潕绫诲瀷" prop="name" v-if="form.type === 4">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ヨ鏉庣被鍨�"></el-input>
+      </el-form-item>
+      <el-form-item label="鐗╁搧鍚嶇О" prop="name" v-if="form.type === 2">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ョ墿鍝佸悕绉�"></el-input>
+      </el-form-item>
+      <el-form-item label="绛夌骇鍚嶇О" prop="name" v-if="form.type === 3">
+        <el-input v-model="form.name" placeholder="璇疯緭鍏ョ瓑绾у悕绉�"></el-input>
+      </el-form-item>
+      <el-form-item label="閫氳鏂瑰紡" prop="detail" v-if="form.type === 1">
+        <el-select v-model="form.detail" placeholder="璇烽�夋嫨閫氳鏂瑰紡">
+          <el-option label="鏈哄姩杞�" value="driving"></el-option>
+          <el-option label="闈炴満鍔ㄨ溅" value="bicycling"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="涓婁紶椹鹃┒璇�" prop="otherField" v-if="form.type === 1">
+        <el-radio-group v-model="form.otherField">
+          <el-radio label="1">闇�瑕�</el-radio>
+          <el-radio label="0">涓嶉渶瑕�</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="鏄惁鐗瑰ぇ灏哄" prop="detail" v-if="form.type === 4">
+        <el-radio-group v-model="form.detail">
+          <el-radio label="0">鍚�</el-radio>
+          <el-radio label="1">鏄�</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="鍥炬爣" prop="iconFull" v-if="form.type === 4">
+        <UploadImages
+          :fileList="form.iconFull ? [{ url: form.iconFull }] : []"
+          :uploadData="{ folder: 'category' }"
+          :maxCount="1"
+          @getFileList="e => { form.icon = e.fileurl; form.iconFull = e.url }"
+          @deleteRow="form.icon = ''; form.iconFull = ''" />
+      </el-form-item>
+      <el-form-item label="鐗╁搧绛夌骇" prop="relationId" v-if="form.type === 2">
+        <el-select v-model="form.relationId" placeholder="璇烽�夋嫨鐗╁搧绛夌骇">
+          <el-option
+            v-for="item in list"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鎵�闇�鍙告満璇勭骇" prop="detail" v-if="form.type === 3">
+        <el-select v-model="form.detail" placeholder="璇烽�夋嫨鍙告満璇勭骇">
+          <el-option label="S" :value="5"></el-option>
+          <el-option label="A" :value="4"></el-option>
+          <el-option label="B" :value="3"></el-option>
+          <el-option label="C" :value="2"></el-option>
+          <el-option label="D" :value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="瀵勫瓨璇存槑" prop="detail" v-if="form.type === 2">
+        <el-input v-model="form.detail" type="textarea" :rows="3" placeholder="璇疯緭鍏ュ瘎瀛樿鏄�"></el-input>
+      </el-form-item>
+      <el-form-item label="澶囨敞璇存槑" prop="remark" v-if="form.type === 3 || form.type === 4">
+        <el-input v-model="form.remark" type="textarea" :rows="3" placeholder="璇疯緭鍏ュ娉ㄨ鏄�"></el-input>
+      </el-form-item>
+      <el-form-item label="鎺掑簭" prop="sortnum">
+        <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴�"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <div style="display: flex; align-items: center;">
+          <el-switch
+            v-model="form.status"
+            active-color="#13ce66"
+            inactive-color="#ff4949"
+            :active-value="0"
+            :inactive-value="1"
+          ></el-switch>
+          <span v-if="form.type === 2" style="margin-left: 5px; font-size: 12px; color: #909399;">寮�鍚悗锛岃鍩庡競涓嬮棬搴楀彲琚細鍛樻煡鐪�</span>
+        </div>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { getById, fetchList } from '@/api/business/goodsCategory'
+import UploadImages from '@/components/common/uploadImages'
+export default {
+  name: 'OperaGoodsCategoryEditWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow, UploadImages },
+  data () {
+    return {
+      form: {
+        id: null,
+        name: '',
+        relationId: '',
+        detail: '',
+        sortnum: '',
+        status: 0,
+        type: '',
+        remark: '',
+        icon: '',
+        iconFull: '',
+        otherField: '1'
+      },
+      rules: {},
+      list: []
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/goodsCategory',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    open (title, row, type) {
+      this.title = title
+      if (type === 2) {
+        fetchList({
+          capacity: 99999,
+          page: 1,
+          model: {
+            type: 3
+          }
+        }).then(res => {
+          this.list = res.records || []
+        })
+      }
+      if (row && row.id) {
+        getById(row.id).then(res => {
+          this.form = {
+            id: res.id,
+            name: res.name || '',
+            relationId: res.relationId || '',
+            detail: res.detail || '',
+            sortnum: res.sortnum || '',
+            status: res.status ?? 0,
+            type: res.type ?? 2,
+            remark: res.remark || '',
+            icon: res.icon || '',
+            iconFull: res.iconFull || '',
+            otherField: res.otherField || ''
+          }
+          this.visible = true
+        }).catch(e => {
+          this.$tip.apiFailed(e)
+        })
+      } else {
+        this.form = {
+          id: null,
+          name: '',
+          relationId: '',
+          detail: '',
+          sortnum: '',
+          status: 0,
+          type: '',
+          remark: '',
+          icon: '',
+          iconFull: '',
+          otherField: '1'
+        }
+        if (type === 4) {
+          this.form.detail = '0'
+        }
+        this.form.type = type
+        this.visible = true
+      }
+      if (this.form.type === 2) {
+        this.rules = {
+          name: [{ required: true, message: '璇疯緭鍏ョ墿鍝佸悕绉�', trigger: 'blur' }],
+          relationId: [{ required: true, message: '璇烽�夋嫨鐗╁搧绛夌骇', trigger: 'blur' }]
+        }
+      } else if (this.form.type === 3) {
+        this.rules = {
+          name: [{ required: true, message: '璇疯緭鍏ョ瓑绾у悕绉�', trigger: 'blur' }],
+          detail: [{ required: true, message: '璇烽�夋嫨鍙告満璇勭骇', trigger: 'blur' }]
+        }
+      } else if (this.form.type === 4) {
+        this.rules = {
+          name: [{ required: true, message: '璇疯緭鍏ヨ鏉庣被鍨�', trigger: 'blur' }],
+          detail: [{ required: true, message: '璇烽�夋嫨鏄惁鐗瑰ぇ灏哄', trigger: 'blur' }],
+          icon: [{ required: true, message: '璇蜂笂浼犲浘鏍�', trigger: 'blur' }]
+        }
+      } else if (this.form.type === 1) {
+        this.rules = {
+          name: [{ required: true, message: '璇疯緭鍏ョ被鍨嬪悕绉�', trigger: 'blur' }],
+          detail: [{ required: true, message: '璇烽�夋嫨閫氳鏂瑰紡', trigger: 'blur' }],
+          otherField: [{ required: true, message: '璇烽�夋嫨閫氳鏂瑰紡', trigger: 'blur' }]
+        }
+      }
+    }
+  }
+}
+</script>
diff --git a/admin/src/components/business/OperaMemberDetail.vue b/admin/src/components/business/OperaMemberDetail.vue
new file mode 100644
index 0000000..6ad3abb
--- /dev/null
+++ b/admin/src/components/business/OperaMemberDetail.vue
@@ -0,0 +1,185 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    width="600px"
+    :withFooter="false"
+  >
+    <div class="detail-container">
+      <div class="section">
+        <div class="section-header">
+          <span class="section-title">鐢ㄦ埛淇℃伅</span>
+          <span class="status-tag">
+            <el-tag type="success" v-if="detailInfo.telephone">宸叉巿鏉冩墜鏈哄彿</el-tag>
+            <el-tag type="warning" v-else>鏈巿鏉冩墜鏈哄彿</el-tag>
+          </span>
+        </div>
+        <div class="info-grid">
+          <div class="info-item">
+            <span class="label">寰俊openid锛�</span>
+            <span class="value">{{ detailInfo.openId }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鐢ㄦ埛鏄电О锛�</span>
+            <span class="value">{{ detailInfo.nickName }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">浼氬憳濮撳悕锛�</span>
+            <span class="value">{{ detailInfo.name }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鎺堟潈鎵嬫満鍙凤細</span>
+            <span class="value">{{ detailInfo.telephone }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鐘舵�侊細</span>
+            <span class="value">{{ detailInfo.status === 0 ? '姝e父' : detailInfo.status === 1 ? '鍋滅敤' : '宸叉敞閿�' }}</span>
+          </div>
+        </div>
+      </div>
+    </div>
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { getById } from '@/api/business/memberManage'
+import BaseOpera from '@/components/base/BaseOpera'
+export default {
+  name: 'OperaMemberDetail',
+  extends: BaseOpera,
+  components: { GlobalWindow, BaseOpera },
+  data () {
+    return {
+      detailInfo: {
+        id: null,
+        openId: '',
+        nickName: '',
+        name: '',
+        phone: '',
+        status: 1
+      }
+    }
+  },
+  methods: {
+    open (title, row) {
+      this.title = title
+      getById(row.id).then(res => {
+        this.detailInfo = {
+          id: res.id,
+          openId: res.openId,
+          nickName: res.nickName,
+          name: res.name,
+          phone: res.phone,
+          status: res.status
+        }
+        this.visible = true
+      }).catch(e => {
+        this.$tip.apiFailed(e)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.detail-container {
+  padding: 20px;
+}
+.section {
+  margin-bottom: 30px;
+}
+.section-header {
+  display: flex;
+  align-items: center;
+  gap: 15px;
+  margin-bottom: 15px;
+}
+.section-title {
+  font-size: 16px;
+  font-weight: bold;
+  color: #303133;
+  padding-left: 10px;
+  border-left: 4px solid #2E68EC;
+}
+.status-tag {
+  padding: 4px 12px;
+  border-radius: 4px;
+  font-size: 12px;
+}
+.status-pending {
+  background: #fdf6ec;
+  color: #E6A23C;
+}
+.status-success {
+  background: #f0f9eb;
+  color: #67C23A;
+}
+.status-reject {
+  background: #fef0f0;
+  color: #F56C6C;
+}
+.info-grid {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: 15px;
+  padding: 0 10px;
+}
+.info-item {
+  display: flex;
+  font-size: 14px;
+}
+.info-item .label {
+  color: #909399;
+  min-width: 90px;
+}
+.info-item .value {
+  color: #606266;
+}
+.info-item .amount {
+  color: #f56c6c;
+  font-weight: bold;
+}
+.info-item.full-width {
+  grid-column: span 2;
+}
+.timeline-content {
+  padding: 10px;
+  background: #f5f7fa;
+  border-radius: 4px;
+}
+.timeline-title {
+  font-size: 14px;
+  font-weight: bold;
+  color: #303133;
+  margin-bottom: 8px;
+}
+.timeline-info {
+  display: flex;
+  gap: 20px;
+  font-size: 13px;
+  color: #606266;
+  margin-bottom: 5px;
+}
+.timeline-remark {
+  font-size: 13px;
+  color: #909399;
+}
+.approval-form {
+  padding: 20px;
+  background: #f5f7fa;
+  border-top: 1px solid #eee;
+}
+.approval-form /deep/ .el-form-item {
+  margin-bottom: 15px;
+}
+.approval-form /deep/ .el-form-item:last-child {
+  margin-bottom: 0;
+}
+.approval-buttons {
+  display: flex;
+  justify-content: flex-end;
+  gap: 10px;
+  margin-top: 15px;
+}
+</style>
diff --git a/admin/src/components/business/OperaOrderDetail.vue b/admin/src/components/business/OperaOrderDetail.vue
new file mode 100644
index 0000000..b150cf9
--- /dev/null
+++ b/admin/src/components/business/OperaOrderDetail.vue
@@ -0,0 +1,399 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    width="900px"
+    :withFooter="false"
+  >
+    <div class="order-detail" v-if="detailInfo">
+      <div class="section">
+        <div class="section-header">
+          <span class="section-title">璁㈠崟璇︽儏</span>
+          <el-tag v-if="detailInfo.status === 1" type="warning">寰呭彇浠�</el-tag>
+          <el-tag v-else-if="detailInfo.status === 2" type="primary">閰嶉�佷腑</el-tag>
+          <el-tag v-else-if="detailInfo.status === 3" type="success">宸插畬鎴�</el-tag>
+          <el-tag v-else-if="detailInfo.status === 4" type="info">宸插彇娑�</el-tag>
+        </div>
+        <div class="info-grid">
+          <div class="info-item">
+            <span class="label">璁㈠崟缂栧彿锛�</span>
+            <span class="value">{{ detailInfo.order.code || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鍒涘缓鏃堕棿锛�</span>
+            <span class="value">{{ detailInfo.order.createTime || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">璁㈠崟绫诲瀷锛�</span>
+            <span class="value">
+              <span v-if="detailInfo.order.type === 0">灏卞湴瀛樺彇</span>
+              <span v-else-if="detailInfo.order.type === 1">寮傚湴瀛樺彇</span>
+              <span v-else>-</span>
+            </span>
+          </div>
+
+          <div class="info-item">
+            <span class="label">鏀粯鏃堕棿锛�</span>
+            <span class="value">{{ detailInfo.order.payTime || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鏀粯鏂瑰紡锛�</span>
+            <span class="value">
+              <span>寰俊鏀粯</span>
+            </span>
+          </div>
+          <div class="info-item">
+            <span class="label">瀹炰粯閲戦锛�</span>
+            <span class="value">
+              <span>楼{{ (detailInfo.order.payAmount / 100).toFixed(2) }}</span>
+            </span>
+          </div>
+
+          <div class="info-item">
+            <span class="label">璁㈠崟绾у埆锛�</span>
+            <span class="value">{{ detailInfo.order.orderLevel || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">棰勮鍒板簵鏃堕棿锛�</span>
+            <span class="value">{{ detailInfo.order.expectedDepositTime || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">棰勮鍙栦欢鏃堕棿锛�</span>
+            <span class="value">{{ detailInfo.order.expectedTakeTime || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">璁㈠崟鎬讳环锛�</span>
+            <span class="value">楼{{ (detailInfo.order.totalAmount / 100).toFixed(2) }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">淇濅环閲戦锛�</span>
+            <span class="value">楼{{ (detailInfo.order.declaredAmount / 100).toFixed(2) }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鐗╁搧淇濊垂锛�</span>
+            <span class="value">楼{{ (detailInfo.order.declaredFee / 100).toFixed(2) }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">棰勮瀵勫瓨澶╂暟/閰嶉�侀噷绋嬶細</span>
+            <span class="value">{{ detailInfo.order.estimatedDepositDays || '-' }}澶�/{{ detailInfo.order.distance || '-' }}鍏噷</span>
+          </div>
+          <div class="info-item full-width">
+            <span class="label">瀹㈡埛澶囨敞锛�</span>
+            <span class="value">{{ detailInfo.order.remark || '-' }}</span>
+          </div>
+          <div class="info-item full-width">
+            <span class="label">鐗╁搧鎷嶇収锛�</span>
+            <div v-if="detailInfo.depositImages && detailInfo.depositImages.length" class="image-list">
+              <el-image
+                v-for="(img, index) in detailInfo.depositImages"
+                :key="index"
+                style="width: 80px; height: 80px; margin-right: 10px"
+                :src="img"
+                :preview-src-list="detailInfo.depositImages"
+                fit="cover"
+              ></el-image>
+            </div>
+            <span v-else>-</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="section">
+        <div class="section-header">
+          <span class="section-title">浼氬憳淇℃伅</span>
+        </div>
+        <div class="info-grid">
+          <div class="info-item">
+            <span class="label">濮撳悕锛�</span>
+            <span class="value">{{ detailInfo.memberName || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鎵嬫満鍙风爜锛�</span>
+            <span class="value">{{ detailInfo.memberPhone || '-' }}</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="section">
+        <div class="section-header">
+          <span class="section-title">閰嶉�佷俊鎭�</span>
+        </div>
+        <div class="info-grid">
+          <div class="info-item">
+            <span class="label">鏀朵欢浜猴細</span>
+            <span class="value">{{ detailInfo.order.takeUser || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鏀朵欢浜虹數璇濓細</span>
+            <span class="value">{{ detailInfo.order.takePhone || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">瀵勪欢鍦板潃锛�</span>
+            <span class="value">{{ detailInfo.order.depositLocation || '' }}{{ detailInfo.order.depositLocationRemark || '' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鏀朵欢鍦板潃锛�</span>
+            <span class="value">{{ detailInfo.order.takeLocation || '' }}{{ detailInfo.order.takeLocationRemark || '' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鏄惁鏀朵欢鏈嶅姟鐐癸細</span>
+            <span class="value">{{ detailInfo.order.takeShopId ? '鏄�' : '鍚�' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">閰嶉�佸徃鏈猴細</span>
+            <span class="value">{{ detailInfo.driverName || '-' }}</span>
+          </div>
+          <div class="info-item full-width">
+            <span class="label">闂ㄥ簵鏀朵欢鎷嶇収锛�</span>
+            <div v-if="detailInfo.storeInImages && detailInfo.storeInImages.length" class="image-list">
+              <el-image
+                v-for="(img, index) in detailInfo.storeInImages"
+                :key="index"
+                style="width: 80px; height: 80px; margin-right: 10px"
+                :src="img"
+                :preview-src-list="detailInfo.storeInImages"
+                fit="cover"
+              ></el-image>
+            </div>
+            <span v-else>-</span>
+          </div>
+          <div class="info-item full-width">
+            <span class="label">鍙告満鍙栦欢鎷嶇収锛�</span>
+            <div v-if="detailInfo.driverTakeImages && detailInfo.driverTakeImages.length" class="image-list">
+              <el-image
+                v-for="(img, index) in detailInfo.driverTakeImages"
+                :key="index"
+                style="width: 80px; height: 80px; margin-right: 10px"
+                :src="img"
+                :preview-src-list="detailInfo.driverTakeImages"
+                fit="cover"
+              ></el-image>
+            </div>
+            <span v-else>-</span>
+          </div>
+          <div class="info-item full-width">
+            <span class="label">鍙告満閫佽揪鎷嶇収/闂ㄥ簵鍏ュ簱鎷嶇収锛�</span>
+            <div v-if="detailInfo.driverDoneImages && detailInfo.driverDoneImages.length" class="image-list">
+              <el-image
+                v-for="(img, index) in detailInfo.driverDoneImages"
+                :key="index"
+                style="width: 80px; height: 80px; margin-right: 10px"
+                :src="img"
+                :preview-src-list="detailInfo.driverDoneImages"
+                fit="cover"
+              ></el-image>
+            </div>
+            <span v-else>-</span>
+          </div>
+          <div class="info-item full-width">
+            <span class="label">闂ㄥ簵鍑哄簱鎷嶇収锛�</span>
+            <div v-if="detailInfo.storeOutImages && detailInfo.storeOutImages.length" class="image-list">
+              <el-image
+                v-for="(img, index) in detailInfo.storeOutImages"
+                :key="index"
+                style="width: 80px; height: 80px; margin-right: 10px"
+                :src="img"
+                :preview-src-list="detailInfo.storeOutImages"
+                fit="cover"
+              ></el-image>
+            </div>
+            <span v-else>-</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="section">
+        <div class="section-header">
+          <span class="section-title">鍙栨秷淇℃伅</span>
+        </div>
+        <div class="info-grid">
+          <div class="info-item">
+            <span class="label">鍙栨秷鎿嶄綔浜猴細</span>
+            <span class="value">{{ detailInfo.platformUserName || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鍙栨秷鏃堕棿锛�</span>
+            <span class="value">{{ detailInfo.order.cancelTime || '-' }}</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="section" v-if="detailInfo.ordersRefund">
+        <div class="section-header">
+          <span class="section-title">閫�娆句俊鎭�</span>
+        </div>
+        <div class="info-grid">
+          <div class="info-item">
+            <span class="label">閫�娆剧悊鐢憋細</span>
+            <span class="value">{{ detailInfo.ordersRefund.cancelInfo || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">閫�娆剧敵璇锋椂闂达細</span>
+            <span class="value">{{ detailInfo.ordersRefund.createTime || '-' }}</span>
+          </div>
+
+
+          <div class="info-item">
+            <span class="label">閫�娆鹃噾棰濓細</span>
+            <span class="value">{{ detailInfo.ordersRefund.createTime || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">閫�娆惧鐞嗘椂闂达細</span>
+            <span class="value">{{ detailInfo.ordersRefund.refundTime || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">閫�娆炬柟寮忥細</span>
+            <span class="value" v-if="detailInfo.ordersRefund.type === 0">鏈瓨浠剁洿鎺ュ彇娑�</span>
+            <span class="value" v-else-if="detailInfo.ordersRefund.type === 1">骞冲彴鐩存帴鍙栨秷</span>
+            <span class="value" v-else-if="detailInfo.ordersRefund.type === 2">宸插瓨浠剁敵璇峰彇娑�</span>
+          </div>
+          <div class="info-item">
+            <span class="label">閫�娆惧娉細</span>
+            <span class="value">{{ detailInfo.ordersRefund.remark || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鎿嶄綔浜猴細</span>
+            <span class="value">{{ detailInfo.platformUserName || '-' }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鎿嶄綔鏃堕棿锛�</span>
+            <span class="value">{{ detailInfo.ordersRefund.updateTime || '-' }}</span>
+          </div>
+          <div class="info-item full-width">
+            <span class="label">闂ㄥ簵閫�娆炬媿鐓э細</span>
+            <div v-if="detailInfo.refundTakeImages && detailInfo.refundTakeImages.length" class="image-list">
+              <el-image
+                v-for="(img, index) in detailInfo.refundTakeImages"
+                :key="index"
+                style="width: 80px; height: 80px; margin-right: 10px"
+                :src="img"
+                :preview-src-list="detailInfo.refundTakeImages"
+                fit="cover"
+              ></el-image>
+            </div>
+            <span v-else>-</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="section">
+        <div class="section-header">
+          <span class="section-title">鐗╁搧淇℃伅</span>
+        </div>
+        <el-table :data="detailInfo.detailList" stripe class="goods-table">
+          <el-table-column prop="typeName" label="鐗╁搧鍚嶇О" min-width="80px"></el-table-column>
+          <el-table-column prop="luggageName" label="鐗╁搧灏哄" min-width="80px"></el-table-column>
+          <el-table-column label="鍗曚环锛堝厓锛�" min-width="100px">
+            <template slot-scope="{row}">
+              楼{{ (row.unitPriceYuan / 100).toFixed(2) }}
+            </template>
+          </el-table-column>
+          <el-table-column prop="num" label="鏁伴噺" min-width="60px"></el-table-column>
+          <el-table-column label="灏忚锛堝厓锛�" min-width="100px">
+            <template slot-scope="{row}">
+              楼{{ (row.subtotal / 100).toFixed(2) }}
+            </template>
+          </el-table-column>
+        </el-table>
+        <div class="price-summary">
+          <span>鍩虹鏈嶅姟璐癸細楼{{ (detailInfo.order.price / 100).toFixed(2) }}</span>
+          <span>鐗╁搧淇濊垂锛毬{ (detailInfo.order.declaredFee / 100).toFixed(2) }}</span>
+          <span>璁㈠崟鎬讳环锛毬{ (detailInfo.order.totalAmount / 100).toFixed(2) }}</span>
+          <span>瀹為檯鏀粯锛毬{ (detailInfo.order.payAmount / 100).toFixed(2) }}</span>
+          <span>閫�娆鹃噾棰濓細楼{{ (detailInfo.order.refundAmount / 100).toFixed(2) }}</span>
+          <span>瓒呮椂閲戦锛毬{ (detailInfo.order.overdueAmount / 100).toFixed(2) }}</span>
+          <span>寮傚父閲戦锛毬{ (detailInfo.order.exceptionAmount / 100).toFixed(2) }}</span>
+        </div>
+      </div>
+    </div>
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { getById } from '@/api/business/orderManagement'
+
+export default {
+  name: 'OperaOrderDetail',
+  components: { GlobalWindow },
+  data () {
+    return {
+      title: '璁㈠崟璇︽儏',
+      visible: false,
+      detailInfo: null
+    }
+  },
+  methods: {
+    open (row) {
+      this.title = '璁㈠崟璇︽儏'
+      getById(row.id).then(res => {
+        console.log(res)
+        this.detailInfo = res
+        this.visible = true
+      }).catch(e => {
+        this.$tip.apiFailed(e)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.order-detail {
+  
+}
+.section {
+  margin-bottom: 25px;
+}
+.section-header {
+  display: flex;
+  align-items: center;
+  gap: 10px;
+  margin-bottom: 15px;
+}
+.section-title {
+  font-size: 16px;
+  font-weight: bold;
+  color: #303133;
+  padding-left: 10px;
+  border-left: 4px solid #2E68EC;
+}
+.info-grid {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: 15px;
+  padding: 0 10px;
+}
+.info-item {
+  display: flex;
+  font-size: 14px;
+}
+.info-item.full-width {
+  grid-column: span 2;
+}
+.info-item .label {
+  color: #909399;
+  min-width: 140px;
+}
+.info-item .value {
+  color: #606266;
+  word-break: break-all;
+}
+.image-list {
+  display: flex;
+  flex-wrap: wrap;
+}
+.goods-table {
+  margin-bottom: 15px;
+}
+.price-summary {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 11px;
+  padding: 15px;
+  background: #f5f7fa;
+  border-radius: 4px;
+  font-size: 14px;
+  color: #606266;
+}
+</style>
diff --git a/admin/src/components/business/OperaShopApprovalWindow.vue b/admin/src/components/business/OperaShopApprovalWindow.vue
new file mode 100644
index 0000000..cf67cd7
--- /dev/null
+++ b/admin/src/components/business/OperaShopApprovalWindow.vue
@@ -0,0 +1,450 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :withFooter="false"
+    :visible.sync="visible"
+    width="80%"
+  >
+    <div class="store-header" v-if="storeInfo">
+      <div class="store-header-left">
+        <el-image :src="storeInfo.payMemberCoverImage ? storeInfo.imgPrefix + storeInfo.payMemberCoverImage : ''" fit="cover" class="store-avatar">
+          <div slot="error" class="image-slot">
+            <i class="el-icon-picture-outline"></i>
+          </div>
+        </el-image>
+      </div>
+      <div class="store-header-right">
+        <div class="store-name">{{ storeInfo.name }}</div>
+        <div class="store-info-row">
+          <span class="info-item">
+            <span class="label">闂ㄥ簵绫诲瀷锛�</span>
+            <span class="value">{{ storeInfo.companyType === 1 ? '浼佷笟' : '涓汉' }}</span>
+          </span>
+          <span class="info-item">
+            <span class="label">鑱旂郴浜猴細</span>
+            <span class="value">{{ storeInfo.linkName }}</span>
+          </span>
+          <span class="info-item">
+            <span class="label">鑱旂郴鐢佃瘽锛�</span>
+            <span class="value">{{ storeInfo.linkPhone }}</span>
+          </span>
+          <span class="info-item">
+            <span class="label">韬唤璇佸彿锛�</span>
+            <span class="value">{{ storeInfo.idcard }}</span>
+          </span>
+        </div>
+      </div>
+    </div>
+
+    <div class="qualification-content" v-if="storeInfo">
+      <div class="qualification-section">
+        <h4 class="section-title">鍩烘湰淇℃伅</h4>
+        <div class="info-grid">
+          <div class="info-row">
+            <span class="label">鎵�鍦ㄧ渷甯傚尯锛�</span>
+            <span class="value">{{ storeInfo.provinceName || '' }} {{ storeInfo.cityName || '' }} {{ storeInfo.areaName || '' }}</span>
+          </div>
+          <div class="info-row">
+            <span class="label">闂ㄥ簵鍦板潃锛�</span>
+            <span class="value">{{ storeInfo.address }}</span>
+          </div>
+          <div class="info-row">
+            <span class="label">闂ㄥ簵鐘舵�侊細</span>
+            <span class="value">{{ storeInfo.auditStatus === 0 ? '寰呭鎵�' : storeInfo.auditStatus === 1 ? '瀹℃壒閫氳繃' : '瀹℃壒鏈�氳繃' }}</span>
+          </div>
+          <div class="info-row">
+            <span class="label">閰嶉�佽寖鍥达細</span>
+            <span class="value">{{ storeInfo.deliveryRange || '鏆傛棤' }}</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="qualification-section">
+        <h4 class="section-title">涓讳綋璧勮川</h4>
+        <template v-if="storeInfo.companyType === 1">
+          <div class="info-grid">
+            <div class="info-row">
+              <span class="label">娉曚汉濮撳悕锛�</span>
+              <span class="value">{{ storeInfo.legalPersonName }}</span>
+            </div>
+            <div class="info-row">
+              <span class="label">娉曚汉鎵嬫満鍙凤細</span>
+              <span class="value">{{ storeInfo.legalPersonPhone }}</span>
+            </div>
+            <div class="info-row">
+              <span class="label">娉曚汉韬唤璇佸彿鐮侊細</span>
+              <span class="value">{{ storeInfo.legalPersonCard }}</span>
+            </div>
+          </div>
+          <div class="image-section">
+            <div class="image-item">
+              <span class="label">娉曚汉韬唤璇佹闈細</span>
+              <el-image :src="storeInfo.idcardImg" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImg]">
+                <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+              </el-image>
+            </div>
+            <div class="image-item">
+              <span class="label">娉曚汉韬唤璇佸弽闈細</span>
+              <el-image :src="storeInfo.idcardImgBack" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImgBack]">
+                <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+              </el-image>
+            </div>
+            <div class="image-item">
+              <span class="label">钀ヤ笟鎵х収锛�</span>
+              <el-image :src="storeInfo.businessImg" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.businessImg]">
+                <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+              </el-image>
+            </div>
+          </div>
+        </template>
+        <template v-else>
+          <div class="image-item-row">
+            <span class="label">韬唤璇佹闈細</span>
+            <el-image :src="storeInfo.idcardImg" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImg]">
+              <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+            </el-image>
+          </div>
+          <div class="image-item-row">
+            <span class="label">韬唤璇佸弽闈細</span>
+            <el-image :src="storeInfo.idcardImgBack" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImgBack]">
+              <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+            </el-image>
+          </div>
+          <div class="image-item-row">
+            <span class="label">鏈夋晥鍔冲姩鍚堝悓锛�</span>
+            <div class="image-list">
+              <el-image v-for="(img, index) in storeInfo.laborContractImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.laborContractImgs">
+                <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+              </el-image>
+            </div>
+          </div>
+          <div class="image-item-row">
+            <span class="label">绀句繚缂寸撼璇佹槑锛�</span>
+            <div class="image-list">
+              <el-image v-for="(img, index) in storeInfo.socialSecurityImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.socialSecurityImgs">
+                <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+              </el-image>
+            </div>
+          </div>
+        </template>
+      </div>
+
+      <div class="qualification-section" v-if="storeInfo.companyType === 1">
+        <h4 class="section-title">闂ㄥ簵鐓х墖鍙婂叾浠栨潗鏂�</h4>
+        <div class="image-item-row">
+          <span class="label">闂ㄥ簵闂ㄥご鐓э細</span>
+          <div class="image-list">
+            <el-image v-for="(img, index) in storeInfo.storeFrontImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.storeFrontImgs">
+              <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+            </el-image>
+          </div>
+        </div>
+        <div class="image-item-row">
+          <span class="label">闂ㄥ簵鍐呴儴鐓х墖锛�</span>
+          <div class="image-list">
+            <el-image v-for="(img, index) in storeInfo.storeInteriorImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.storeInteriorImgs">
+              <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+            </el-image>
+          </div>
+        </div>
+        <div class="image-item-row">
+          <span class="label">鍏跺畠鏉愭枡锛�</span>
+          <div class="image-list">
+            <el-image v-for="(img, index) in storeInfo.otherMaterialImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.otherMaterialImgs">
+              <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+            </el-image>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <div class="approval-section" v-if="storeInfo && storeInfo.auditStatus !== 0">
+      <div class="approval-result" :class="storeInfo.auditStatus === 1 ? 'approval-pass' : 'approval-reject'">
+        <div class="approval-status" v-if="storeInfo.auditStatus === 1">
+          <i class="el-icon-circle-check"></i>
+          <span>瀹℃牳閫氳繃</span>
+        </div>
+        <div class="approval-status" v-else>
+          <i class="el-icon-circle-close"></i>
+          <span>瀹℃牳鎷掔粷</span>
+        </div>
+        <div class="approval-info" v-if="storeInfo.auditStatus === 1">
+          <span class="info-item">瀹℃牳鏃堕棿锛歿{ storeInfo.auditTime }}</span>
+          <span class="info-item">瀹℃牳浜猴細{{ storeInfo.auditName }}</span>
+        </div>
+        <div class="approval-info" v-else>
+          <div class="info-item" v-if="storeInfo.auditRemark">澶囨敞锛歿{ storeInfo.auditRemark }}</div>
+          <div class="info-item">瀹℃牳鏃堕棿锛歿{ storeInfo.auditTime }}</div>
+          <div class="info-item">瀹℃牳浜猴細{{ storeInfo.auditName }}</div>
+        </div>
+      </div>
+    </div>
+
+    <div class="approval-form" v-if="storeInfo && storeInfo.auditStatus === 0">
+      <el-form ref="approvalForm" :model="approvalForm" :rules="approvalRules">
+        <el-form-item label="瀹℃壒缁撴灉" prop="auditStatus">
+          <el-radio-group v-model="approvalForm.auditStatus" @change="handleAuditStatusChange">
+            <el-radio :label="0">閫氳繃</el-radio>
+            <el-radio :label="1">鎷掔粷</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="瀹℃壒鎰忚" prop="auditRemark">
+          <el-input
+            v-model="approvalForm.auditRemark"
+            type="textarea"
+            :rows="2"
+            :placeholder="approvalForm.auditStatus === 2 ? '璇疯緭鍏ユ嫆缁濆師鍥狅紙蹇呭~锛�' : '璇疯緭鍏ュ鎵规剰瑙�'"
+            style="width: 300px"
+          ></el-input>
+        </el-form-item>
+        <section class="approval-buttons">
+          <el-button type="primary" @click="handleSubmit" :loading="isWorking.submit">鎻愪氦</el-button>
+          <el-button @click="handleCancel">鍙栨秷</el-button>
+        </section>
+      </el-form>
+    </div>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { detail, audit } from '@/api/business/shopInfo'
+
+export default {
+  name: 'OperaShopApprovalWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      storeInfo: null,
+      approvalForm: {
+        id: null,
+        auditStatus: 0,
+        auditRemark: ''
+      },
+      approvalRules: {
+        auditRemark: [
+          { required: true, message: '璇疯緭鍏ユ嫆缁濆師鍥�', trigger: 'blur' }
+        ]
+      },
+      isWorking: {
+        submit: false
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/shopInfo',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    open (title, row) {
+      this.title = title
+      this.approvalForm = {
+        id: row.id,
+        auditStatus: 1,
+        auditRemark: ''
+      }
+      detail(row.id)
+        .then(res => {
+          this.storeInfo = res
+          this.visible = true
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+    },
+    handleAuditStatusChange (val) {
+      if (val === 1) {
+        this.approvalRules.auditRemark = []
+      } else {
+        this.approvalRules.auditRemark = [{ required: true, message: '璇疯緭鍏ユ嫆缁濆師鍥�', trigger: 'blur' }]
+      }
+    },
+    handleSubmit () {
+      this.$refs.approvalForm.validate(valid => {
+        if (!valid) return
+        this.isWorking.submit = true
+        audit(this.approvalForm)
+          .then(res => {
+            this.$tip.apiSuccess(res || '鎻愪氦鎴愬姛')
+            this.visible = false
+            this.$emit('success')
+          })
+          .catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking.submit = false
+          })
+      })
+    },
+    handleCancel () {
+      this.visible = false
+    }
+  }
+}
+</script>
+
+<style scoped>
+.store-header {
+  display: flex;
+  background: #f5f7fa;
+  border-radius: 8px;
+  padding: 20px;
+  margin-bottom: 20px;
+}
+.store-header-left {
+  margin-right: 20px;
+}
+.store-avatar {
+  width: 80px;
+  height: 80px;
+  border-radius: 50%;
+}
+.store-header-right {
+  flex: 1;
+}
+.store-name {
+  font-size: 18px;
+  font-weight: bold;
+  color: #303133;
+  margin-bottom: 10px;
+}
+.store-info-row {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 20px;
+}
+.info-item {
+  font-size: 14px;
+  color: #606266;
+}
+.info-item .label {
+  color: #909399;
+}
+.qualification-content {
+  padding: 20px;
+}
+.qualification-section {
+  margin-bottom: 30px;
+}
+.section-title {
+  font-size: 16px;
+  font-weight: bold;
+  color: #303133;
+  margin-bottom: 15px;
+  padding-left: 10px;
+  border-left: 4px solid #2E68EC;
+}
+.info-grid {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: 15px;
+  margin-bottom: 20px;
+}
+.info-row {
+  display: flex;
+  font-size: 14px;
+}
+.info-row .label {
+  color: #909399;
+  min-width: 100px;
+}
+.info-row .value {
+  color: #606266;
+}
+.image-section {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 30px;
+}
+.image-item {
+  display: flex;
+  flex-direction: column;
+}
+.image-item-row {
+  display: flex;
+  align-items: flex-start;
+  margin-bottom: 20px;
+}
+.image-item-row .label {
+  color: #909399;
+  font-size: 14px;
+  min-width: 120px;
+}
+.image-list {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 10px;
+}
+.image-item .label {
+  color: #909399;
+  font-size: 14px;
+  margin-bottom: 8px;
+}
+.qualification-image {
+  width: 150px;
+  height: 100px;
+  border-radius: 4px;
+  border: 1px solid #eee;
+}
+.image-slot {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 100%;
+  height: 100%;
+  background: #f5f7fa;
+  color: #909399;
+  font-size: 20px;
+}
+.approval-section {
+  padding: 20px;
+}
+.approval-result {
+  border-radius: 8px;
+  padding: 20px;
+}
+.approval-pass {
+  background: #f0f9eb;
+  border: 1px solid #67c23a;
+}
+.approval-reject {
+  background: #fef0f0;
+  border: 1px solid #f56c6c;
+}
+.approval-status {
+  font-size: 18px;
+  font-weight: bold;
+  margin-bottom: 15px;
+  display: flex;
+  align-items: center;
+  gap: 10px;
+}
+.approval-pass .approval-status {
+  color: #67c23a;
+}
+.approval-reject .approval-status {
+  color: #f56c6c;
+}
+.approval-info {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 30px;
+  font-size: 14px;
+  color: #606266;
+}
+.approval-form {
+  padding: 20px;
+  border-top: 1px solid #eee;
+  background: #f5f7fa;
+  border-radius: 8px;
+  margin-top: 20px;
+}
+.approval-buttons {
+  margin-top: 20px;
+}
+</style>
diff --git a/admin/src/components/business/OperaShopEditWindow.vue b/admin/src/components/business/OperaShopEditWindow.vue
index f9e942c..7c3855d 100644
--- a/admin/src/components/business/OperaShopEditWindow.vue
+++ b/admin/src/components/business/OperaShopEditWindow.vue
@@ -2,11 +2,11 @@
   <GlobalWindow
     title="缂栬緫闂ㄥ簵"
     :visible.sync="visible"
-    width="60%"
+    width="600px"
     :confirm-working="isWorking.save"
     @confirm="handleConfirm"
   >
-    <el-form ref="form" :model="form" label-width="120px" :rules="rules" class="inline-form">
+    <el-form ref="form" :model="form" :rules="rules">
       <div class="form-section">
         <h4 class="section-title">璐﹀彿淇℃伅</h4>
         <el-form-item label="娉ㄥ唽鎵嬫満鍙�" prop="telephone">
@@ -307,12 +307,17 @@
       this.$refs.form.validate(valid => {
         if (!valid) return
         this.isWorking.save = true
-        const imageFields = ['businessImg', 'idcardImg', 'idcardImgBack', 'laborContractImgs', 'socialSecurityImgs', 'storeFrontImgs', 'storeInteriorImgs', 'otherMaterialImgs']
+        const imageFields = ['laborContractImgs', 'socialSecurityImgs', 'storeFrontImgs', 'storeInteriorImgs', 'otherMaterialImgs']
+        const singleImageFields = ['businessImg', 'idcardImg', 'idcardImgBack']
         const data = { ...this.form }
+        singleImageFields.forEach(field => {
+          if (data[field] && Array.isArray(data[field])) {
+            data[field] = data[field].map(item => typeof item === 'object' ? item.fileurl : item).join(',')
+          }
+        })
         imageFields.forEach(field => {
-          if (data[field]) {
-            const list = Array.isArray(data[field]) ? data[field] : [data[field]]
-            data[field] = list.map(item => typeof item === 'object' ? item.fileurl : item).join(',')
+          if (data[field] && Array.isArray(data[field])) {
+            data[field] = data[field].map(item => typeof item === 'object' ? item.fileurl : item)
           }
         })
         data.provinceId = this.form.areaCode[0] || ''
@@ -352,7 +357,7 @@
 .password-tip {
   color: #909399;
   font-size: 12px;
-  margin: -10px 0 15px 120px;
+  margin: -10px 0 15px 0;
 }
 .longitude-latitude {
   display: flex;
diff --git a/admin/src/components/business/OperaShopInfoSeeWindow.vue b/admin/src/components/business/OperaShopInfoSeeWindow.vue
new file mode 100644
index 0000000..4797669
--- /dev/null
+++ b/admin/src/components/business/OperaShopInfoSeeWindow.vue
@@ -0,0 +1,416 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :withFooter="false"
+    :visible.sync="visible"
+    width="80%"
+  >
+    <div class="store-header" v-if="storeInfo">
+      <div class="store-header-left">
+        <el-image :src="storeInfo.payMemberCoverImage ? storeInfo.imgPrefix + storeInfo.payMemberCoverImage : ''" fit="cover" class="store-avatar">
+          <div slot="error" class="image-slot">
+            <i class="el-icon-picture-outline"></i>
+          </div>
+        </el-image>
+      </div>
+      <div class="store-header-right">
+        <div class="store-name">{{ storeInfo.name }}</div>
+        <div class="store-info-row">
+          <span class="info-item">
+            <span class="label">闂ㄥ簵绫诲瀷锛�</span>
+            <span class="value">{{ storeInfo.companyType === 1 ? '浼佷笟' : '涓汉' }}</span>
+          </span>
+          <span class="info-item">
+            <span class="label">鑱旂郴浜猴細</span>
+            <span class="value">{{ storeInfo.linkName }}</span>
+          </span>
+          <span class="info-item">
+            <span class="label">鑱旂郴鐢佃瘽锛�</span>
+            <span class="value">{{ storeInfo.linkPhone }}</span>
+          </span>
+          <span class="info-item">
+            <span class="label">韬唤璇佸彿锛�</span>
+            <span class="value">{{ storeInfo.idcard }}</span>
+          </span>
+        </div>
+      </div>
+    </div>
+
+    <div class="approval-section" v-if="storeInfo && storeInfo.auditStatus !== 0">
+      <div class="approval-result" :class="storeInfo.auditStatus === 1 ? 'approval-pass' : 'approval-reject'">
+        <div class="approval-status" v-if="storeInfo.auditStatus === 1">
+          <i class="el-icon-circle-check"></i>
+          <span>瀹℃牳閫氳繃</span>
+        </div>
+        <div class="approval-status" v-else>
+          <i class="el-icon-circle-close"></i>
+          <span>瀹℃牳鎷掔粷</span>
+        </div>
+        <div class="approval-info" v-if="storeInfo.auditStatus === 1">
+          <span class="info-item">瀹℃牳鏃堕棿锛歿{ storeInfo.auditTime }}</span>
+          <span class="info-item">瀹℃牳浜猴細{{ storeInfo.auditName }}</span>
+        </div>
+        <div class="approval-info" v-else>
+          <div class="info-item" v-if="storeInfo.auditRemark">澶囨敞锛歿{ storeInfo.auditRemark }}</div>
+          <div class="info-item">瀹℃牳鏃堕棿锛歿{ storeInfo.auditTime }}</div>
+          <div class="info-item">瀹℃牳浜猴細{{ storeInfo.auditName }}</div>
+        </div>
+      </div>
+    </div>
+
+    <div class="qualification-content" v-if="storeInfo">
+      <div class="qualification-section">
+        <h4 class="section-title">鍩烘湰淇℃伅</h4>
+        <div class="info-grid">
+          <div class="info-row">
+            <span class="label">鎵�鍦ㄧ渷甯傚尯锛�</span>
+            <span class="value">{{ storeInfo.provinceName || '' }} {{ storeInfo.cityName || '' }} {{ storeInfo.areaName || '' }}</span>
+          </div>
+          <div class="info-row">
+            <span class="label">闂ㄥ簵鍦板潃锛�</span>
+            <span class="value">{{ storeInfo.address }}</span>
+          </div>
+          <div class="info-row">
+            <span class="label">闂ㄥ簵鐘舵�侊細</span>
+            <span class="value">{{ storeInfo.auditStatus === 0 ? '寰呭鎵�' : storeInfo.auditStatus === 1 ? '瀹℃壒閫氳繃' : '瀹℃壒鏈�氳繃' }}</span>
+          </div>
+          <div class="info-row">
+            <span class="label">閰嶉�佽寖鍥达細</span>
+            <span class="value">{{ storeInfo.deliveryRange || '鏆傛棤' }}</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="qualification-section">
+        <h4 class="section-title">涓讳綋璧勮川</h4>
+        <template v-if="storeInfo.companyType === 1">
+          <div class="info-grid">
+            <div class="info-row">
+              <span class="label">娉曚汉濮撳悕锛�</span>
+              <span class="value">{{ storeInfo.legalPersonName }}</span>
+            </div>
+            <div class="info-row">
+              <span class="label">娉曚汉鎵嬫満鍙凤細</span>
+              <span class="value">{{ storeInfo.legalPersonPhone }}</span>
+            </div>
+            <div class="info-row">
+              <span class="label">娉曚汉韬唤璇佸彿鐮侊細</span>
+              <span class="value">{{ storeInfo.legalPersonCard }}</span>
+            </div>
+          </div>
+          <div class="image-section">
+            <div class="image-item">
+              <span class="label">娉曚汉韬唤璇佹闈細</span>
+              <el-image :src="storeInfo.idcardImg" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImg]">
+                <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+              </el-image>
+            </div>
+            <div class="image-item">
+              <span class="label">娉曚汉韬唤璇佸弽闈細</span>
+              <el-image :src="storeInfo.idcardImgBack" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImgBack]">
+                <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+              </el-image>
+            </div>
+            <div class="image-item">
+              <span class="label">钀ヤ笟鎵х収锛�</span>
+              <el-image :src="storeInfo.businessImg" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.businessImg]">
+                <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+              </el-image>
+            </div>
+          </div>
+        </template>
+        <template v-else>
+          <div class="image-item-row">
+            <span class="label">韬唤璇佹闈細</span>
+            <el-image :src="storeInfo.idcardImg" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImg]">
+              <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+            </el-image>
+          </div>
+          <div class="image-item-row">
+            <span class="label">韬唤璇佸弽闈細</span>
+            <el-image :src="storeInfo.idcardImgBack" fit="cover" class="qualification-image" :preview-src-list="[storeInfo.idcardImgBack]">
+              <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+            </el-image>
+          </div>
+          <div class="image-item-row">
+            <span class="label">鏈夋晥鍔冲姩鍚堝悓锛�</span>
+            <div class="image-list">
+              <el-image v-for="(img, index) in storeInfo.laborContractImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.laborContractImgs">
+                <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+              </el-image>
+            </div>
+          </div>
+          <div class="image-item-row">
+            <span class="label">绀句繚缂寸撼璇佹槑锛�</span>
+            <div class="image-list">
+              <el-image v-for="(img, index) in storeInfo.socialSecurityImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.socialSecurityImgs">
+                <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+              </el-image>
+            </div>
+          </div>
+        </template>
+      </div>
+
+      <div class="qualification-section" v-if="storeInfo.companyType === 1">
+        <h4 class="section-title">闂ㄥ簵鐓х墖鍙婂叾浠栨潗鏂�</h4>
+        <div class="image-item-row">
+          <span class="label">闂ㄥ簵闂ㄥご鐓э細</span>
+          <div class="image-list">
+            <el-image v-for="(img, index) in storeInfo.storeFrontImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.storeFrontImgs">
+              <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+            </el-image>
+          </div>
+        </div>
+        <div class="image-item-row">
+          <span class="label">闂ㄥ簵鍐呴儴鐓х墖锛�</span>
+          <div class="image-list">
+            <el-image v-for="(img, index) in storeInfo.storeInteriorImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.storeInteriorImgs">
+              <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+            </el-image>
+          </div>
+        </div>
+        <div class="image-item-row">
+          <span class="label">鍏跺畠鏉愭枡锛�</span>
+          <div class="image-list">
+            <el-image v-for="(img, index) in storeInfo.otherMaterialImgs" :key="index" :src="img" fit="cover" class="qualification-image" :preview-src-list="storeInfo.otherMaterialImgs">
+              <div slot="error" class="image-slot"><i class="el-icon-picture-outline"></i></div>
+            </el-image>
+          </div>
+        </div>
+      </div>
+    </div>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { detail, audit } from '@/api/business/shopInfo'
+
+export default {
+  name: 'OperaShopInfoSeeWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      storeInfo: null,
+      approvalForm: {
+        id: null,
+        auditStatus: 0,
+        auditRemark: ''
+      },
+      approvalRules: {
+        auditRemark: [
+          { required: true, message: '璇疯緭鍏ユ嫆缁濆師鍥�', trigger: 'blur' }
+        ]
+      },
+      isWorking: {
+        submit: false
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/shopInfo',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    open (title, row) {
+      this.title = title
+      this.approvalForm = {
+        id: row.id,
+        auditStatus: 1,
+        auditRemark: ''
+      }
+      detail(row.id)
+        .then(res => {
+          this.storeInfo = res
+          this.visible = true
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+    },
+    handleAuditStatusChange (val) {
+      if (val === 1) {
+        this.approvalRules.auditRemark = []
+      } else {
+        this.approvalRules.auditRemark = [{ required: true, message: '璇疯緭鍏ユ嫆缁濆師鍥�', trigger: 'blur' }]
+      }
+    },
+    handleSubmit () {
+      this.$refs.approvalForm.validate(valid => {
+        if (!valid) return
+        this.isWorking.submit = true
+        audit(this.approvalForm)
+          .then(res => {
+            this.$tip.apiSuccess(res || '鎻愪氦鎴愬姛')
+            this.visible = false
+            this.$emit('success')
+          })
+          .catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking.submit = false
+          })
+      })
+    },
+    handleCancel () {
+      this.visible = false
+    }
+  }
+}
+</script>
+
+<style scoped>
+.store-header {
+  display: flex;
+  background: #f5f7fa;
+  border-radius: 8px;
+  padding: 20px;
+  margin-bottom: 20px;
+}
+.store-header-left {
+  margin-right: 20px;
+}
+.store-avatar {
+  width: 80px;
+  height: 80px;
+  border-radius: 50%;
+}
+.store-header-right {
+  flex: 1;
+}
+.store-name {
+  font-size: 18px;
+  font-weight: bold;
+  color: #303133;
+  margin-bottom: 10px;
+}
+.store-info-row {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 20px;
+}
+.info-item {
+  font-size: 14px;
+  color: #606266;
+}
+.info-item .label {
+  color: #909399;
+}
+.qualification-content {
+  padding: 20px;
+}
+.qualification-section {
+  margin-bottom: 30px;
+}
+.section-title {
+  font-size: 16px;
+  font-weight: bold;
+  color: #303133;
+  margin-bottom: 15px;
+  padding-left: 10px;
+  border-left: 4px solid #2E68EC;
+}
+.info-grid {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: 15px;
+  margin-bottom: 20px;
+}
+.info-row {
+  display: flex;
+  font-size: 14px;
+}
+.info-row .label {
+  color: #909399;
+  min-width: 100px;
+}
+.info-row .value {
+  color: #606266;
+}
+.image-section {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 30px;
+}
+.image-item {
+  display: flex;
+  flex-direction: column;
+}
+.image-item-row {
+  display: flex;
+  align-items: flex-start;
+  margin-bottom: 20px;
+}
+.image-item-row .label {
+  color: #909399;
+  font-size: 14px;
+  min-width: 120px;
+}
+.image-list {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 10px;
+}
+.image-item .label {
+  color: #909399;
+  font-size: 14px;
+  margin-bottom: 8px;
+}
+.qualification-image {
+  width: 150px;
+  height: 100px;
+  border-radius: 4px;
+  border: 1px solid #eee;
+}
+.image-slot {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 100%;
+  height: 100%;
+  background: #f5f7fa;
+  color: #909399;
+  font-size: 20px;
+}
+.approval-section {
+  padding: 20px;
+}
+.approval-result {
+  border-radius: 8px;
+  padding: 20px;
+}
+.approval-pass {
+  background: #f0f9eb;
+  border: 1px solid #67c23a;
+}
+.approval-reject {
+  background: #fef0f0;
+  border: 1px solid #f56c6c;
+}
+.approval-status {
+  font-size: 18px;
+  font-weight: bold;
+  margin-bottom: 15px;
+  display: flex;
+  align-items: center;
+  gap: 10px;
+}
+.approval-pass .approval-status {
+  color: #67c23a;
+}
+.approval-reject .approval-status {
+  color: #f56c6c;
+}
+.approval-info {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 30px;
+  font-size: 14px;
+  color: #606266;
+}
+</style>
diff --git a/admin/src/components/business/OperaShopInfoWindow.vue b/admin/src/components/business/OperaShopInfoWindow.vue
index 55322fc..98d7223 100644
--- a/admin/src/components/business/OperaShopInfoWindow.vue
+++ b/admin/src/components/business/OperaShopInfoWindow.vue
@@ -1,16 +1,17 @@
 <template>
   <GlobalWindow
     :title="title"
+    :withFooter="false"
     :visible.sync="visible"
     width="80%"
   >
     <div class="store-header" v-if="storeInfo">
       <div class="store-header-left">
-        <!-- <el-image :src="storeInfo.headImage || defaultAvatar" fit="cover" class="store-avatar">
+        <el-image :src="storeInfo.payMemberCoverImage ? storeInfo.imgPrefix + storeInfo.payMemberCoverImage : ''" fit="cover" class="store-avatar">
           <div slot="error" class="image-slot">
             <i class="el-icon-picture-outline"></i>
           </div>
-        </el-image> -->
+        </el-image>
       </div>
       <div class="store-header-right">
         <div class="store-name">{{ storeInfo.name }}</div>
@@ -38,14 +39,14 @@
     <el-tabs v-model="activeTab" class="store-tabs">
       <el-tab-pane label="闂ㄥ簵涓氱哗" name="performance">
         <el-form ref="searchForm" :model="searchForm" inline>
-          <el-form-item label="浜ゆ槗鍙�" prop="transactionId">
-            <el-input v-model="searchForm.transactionId" clearable placeholder="璇疯緭鍏ヤ氦鏄撳彿"></el-input>
+          <el-form-item label="浜ゆ槗鍙�" prop="orderNo">
+            <el-input v-model="searchForm.orderNo" clearable placeholder="璇疯緭鍏ヤ氦鏄撳彿"></el-input>
           </el-form-item>
-          <el-form-item label="鏀舵敮绫诲瀷" prop="type">
-            <el-select v-model="searchForm.type" clearable placeholder="璇烽�夋嫨绫诲瀷">
-              <el-option label="鍏ㄩ儴" :value="0"></el-option>
+          <el-form-item label="鏀舵敮绫诲瀷" prop="optType">
+            <el-select v-model="searchForm.optType" clearable placeholder="璇烽�夋嫨绫诲瀷">
+              <el-option label="鍏ㄩ儴" value=""></el-option>
               <el-option label="鏀跺叆" :value="1"></el-option>
-              <el-option label="鏀嚭" :value="2"></el-option>
+              <el-option label="鏀嚭" :value="-1"></el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="鏀舵敮鏃堕棿" prop="createTime">
@@ -62,26 +63,32 @@
         <el-table :data="tableData.list" border stripe v-loading="isWorking.search" class="performance-table">
           <el-table-column label="鏀跺叆/鏀嚭" min-width="100px">
             <template slot-scope="{row}">
-              <span :class="row.type === 1 ? 'income' : 'expense'">{{ row.type === 1 ? '鏀跺叆' : '鏀嚭' }}</span>
+              <span :class="row.optType === 1 ? 'income' : 'expense'">{{ row.optType === 1 ? '鏀跺叆' : '鏀嚭' }}</span>
             </template>
           </el-table-column>
           <el-table-column prop="amount" label="閲戦锛堝厓锛�" min-width="100px">
             <template slot-scope="{row}">
-              <span :class="row.type === 1 ? 'income' : 'expense'">{{ row.amount }}</span>
+              <span :class="row.optType === 1 ? 'income' : 'expense'">{{ row.amount }}</span>
             </template>
           </el-table-column>
           <el-table-column prop="createTime" label="鏀舵敮鏃堕棿" min-width="160px"></el-table-column>
-          <el-table-column prop="businessType" label="涓氬姟绫诲瀷" min-width="100px"></el-table-column>
-          <el-table-column prop="transactionId" label="浜ゆ槗鍙�" min-width="180px"></el-table-column>
+          <el-table-column label="涓氬姟绫诲瀷" min-width="100px">
+            <template slot-scope="{row}">
+              <span v-if="row.type === 0">瀹屾垚璁㈠崟</span>
+              <span v-if="row.type === 1">鎻愮幇鏀嚭</span>
+              <span v-if="row.type === 2">鎻愮幇閫�鍥�</span>
+              <span v-if="row.type === 3">骞冲彴濂栧姳</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="orderNo" label="浜ゆ槗鍙�" min-width="180px"></el-table-column>
           <el-table-column label="鐘舵��" min-width="100px">
             <template slot-scope="{row}">
-              <span :class="row.status === 1 ? 'status-success' : 'status-pending'">
-                {{ row.status === 1 ? '宸插埌璐�' : '鎻愮幇涓�' }}
+              <span :class="row.vaildStatus === 1 ? 'status-success' : 'status-pending'">
+                {{ row.vaildStatus === 1 ? '宸插埌璐�' : '鎻愮幇涓�' }}
               </span>
             </template>
           </el-table-column>
         </el-table>
-
         <pagination
           @size-change="handleSizeChange"
           @current-change="handlePageChange"
@@ -221,6 +228,7 @@
 import GlobalWindow from '@/components/common/GlobalWindow'
 import Pagination from '@/components/common/Pagination'
 import { detail } from '@/api/business/shopInfo'
+import { fetchList, exportExcel } from '@/api/business/revenue'
 export default {
   name: 'OperaShopInfoWindow',
   extends: BaseOpera,
@@ -230,9 +238,11 @@
       activeTab: 'performance',
       storeInfo: null,
       searchForm: {
-        transactionId: '',
-        type: 0,
-        createTime: ''
+        orderNo: '',
+        optType: 0,
+        createTime: '',
+        memberId: '',
+        memberType: 2
       },
       tableData: {
         list: [],
@@ -257,14 +267,17 @@
   },
   methods: {
     open (title, row) {
+      this.searchForm.memberId = row.id
       detail(row.id)
         .then(res => {
           this.storeInfo = res
           this.activeTab = 'performance'
           this.searchForm = {
-            transactionId: '',
-            type: 0,
-            createTime: ''
+            orderNo: '',
+            optType: '',
+            createTime: '',
+            memberId: '',
+            memberType: 2
           }
           this.title = title
           this.visible = true
@@ -277,15 +290,18 @@
     search () {
       this.isWorking.search = true
       const data = {
-        pageIndex: this.tableData.pagination.pageIndex,
-        pageSize: this.tableData.pagination.pageSize,
-        shopId: this.storeInfo?.id,
-        transactionId: this.searchForm.transactionId,
-        type: this.searchForm.type,
-        startTime: this.searchForm.createTime?.[0] || '',
-        endTime: this.searchForm.createTime?.[1] || ''
+        capacity: this.tableData.pagination.pageSize,
+        page: this.tableData.pagination.pageIndex,
+        model: {
+          orderNo: this.searchForm.orderNo,
+          optType: this.searchForm.optType,
+          startTime: this.searchForm.createTime?.[0] || '',
+          endTime: this.searchForm.createTime?.[1] || '',
+          memberId: this.searchForm.memberId,
+          memberType: this.searchForm.memberType || ''
+        }
       }
-      this.api.fetchPerformance(data)
+      fetchList(data)
         .then(res => {
           this.tableData.list = res.list || []
           this.tableData.pagination.total = res.total || 0
@@ -299,9 +315,11 @@
     },
     reset () {
       this.searchForm = {
-        transactionId: '',
-        type: 0,
-        createTime: ''
+        orderNo: '',
+        optType: '',
+        createTime: '',
+        memberId: '',
+        memberType: 2
       }
       this.search()
     },
@@ -316,14 +334,20 @@
     exportExcel () {
       this.isWorking.export = true
       const data = {
-        shopId: this.storeInfo?.id,
-        transactionId: this.searchForm.transactionId,
-        type: this.searchForm.type,
-        startTime: this.searchForm.createTime?.[0] || '',
-        endTime: this.searchForm.createTime?.[1] || ''
+        capacity: 999999,
+        page: this.tableData.pagination.pageIndex,
+        model: {
+          orderNo: this.searchForm.orderNo,
+          optType: this.searchForm.optType,
+          startTime: this.searchForm.createTime?.[0] || '',
+          endTime: this.searchForm.createTime?.[1] || '',
+          memberId: this.searchForm.memberId,
+          memberType: this.searchForm.memberType || ''
+        }
       }
-      this.api.exportPerformance(data)
+      exportExcel(data)
         .then(res => {
+          this.download(res)
           this.$tip.apiSuccess('瀵煎嚭鎴愬姛')
         })
         .catch(e => {
diff --git a/admin/src/components/business/OperaWithdrawDetailWindow.vue b/admin/src/components/business/OperaWithdrawDetailWindow.vue
new file mode 100644
index 0000000..0d60c66
--- /dev/null
+++ b/admin/src/components/business/OperaWithdrawDetailWindow.vue
@@ -0,0 +1,297 @@
+<template>
+  <GlobalWindow
+    :title="title"
+    :visible.sync="visible"
+    :withFooter="false"
+    width="70%"
+    :confirm-working="isWorking.submit"
+    @confirm="handleConfirm"
+  >
+    <div class="detail-container">
+      <div class="section">
+        <div class="section-header">
+          <span class="section-title">鍩烘湰淇℃伅</span>
+          <span class="status-tag" :class="getStatusClass(detailInfo.status)">
+            {{ getStatusText(detailInfo.status) }}
+          </span>
+        </div>
+        <div class="info-grid">
+          <div class="info-item">
+            <span class="label">闂ㄥ簵鍚嶇О锛�</span>
+            <span class="value">{{ detailInfo.shopName }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">闂ㄥ簵鑱旂郴浜猴細</span>
+            <span class="value">{{ detailInfo.linkName }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鐢宠鏃堕棿锛�</span>
+            <span class="value">{{ detailInfo.createTime }}</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="section">
+        <div class="section-header">
+          <span class="section-title">鎻愮幇淇℃伅</span>
+        </div>
+        <div class="info-grid">
+          <div class="info-item">
+            <span class="label">鎻愮幇閲戦锛�</span>
+            <span class="value amount">楼{{ detailInfo.amount / 100 }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">鎻愮幇璐︽埛锛�</span>
+            <span class="value">{{ detailInfo.aliAccount }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">瀹℃牳浜猴細</span>
+            <span class="value">{{ detailInfo.updateUserName }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">瀹℃牳鏃堕棿锛�</span>
+            <span class="value">{{ detailInfo.updateTime }}</span>
+          </div>
+          <div class="info-item full-width">
+            <span class="label">瀹℃牳澶囨敞锛�</span>
+            <span class="value">{{ detailInfo.approveRemark }}</span>
+          </div>
+        </div>
+      </div>
+
+      <div class="section" v-if="detailInfo.status !== 0">
+        <div class="section-header">
+          <span class="section-title">瀹℃壒淇℃伅</span>
+        </div>
+        <div class="info-grid">
+          <div class="info-item">
+            <span class="label">瀹℃牳浜猴細</span>
+            <span class="value">{{ detailInfo.updateUserName }}</span>
+          </div>
+          <div class="info-item">
+            <span class="label">瀹℃牳鏃堕棿锛�</span>
+            <span class="value">{{ detailInfo.updateTime }}</span>
+          </div>
+          <div class="info-item full-width">
+            <span class="label">瀹℃牳澶囨敞锛�</span>
+            <span class="value">{{ detailInfo.approveRemark }}</span>
+          </div>
+        </div>
+      </div>
+    </div>
+
+    <div class="approval-form" v-if="detailInfo.status === 0">
+      <el-form ref="approvalForm" :model="approvalForm" :rules="approvalRules">
+        <el-form-item label="瀹℃壒缁撴灉" prop="status">
+          <el-radio-group v-model="approvalForm.status">
+            <el-radio :label="1">閫氳繃</el-radio>
+            <el-radio :label="2">椹冲洖</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="澶囨敞" prop="approveRemark">
+          <el-input
+            v-model="approvalForm.approveRemark"
+            type="textarea"
+            :rows="3"
+            placeholder="璇疯緭鍏ュ娉�"
+            style="width: 100%"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <div class="approval-buttons">
+        <el-button @click="visible = false">鍙栨秷</el-button>
+        <el-button type="primary" @click="handleConfirm" :loading="isWorking.submit">纭畾</el-button>
+      </div>
+    </div>
+  </GlobalWindow>
+</template>
+
+<script>
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { getById, approve } from '@/api/business/shopWithdraw'
+
+export default {
+  name: 'OperaWithdrawDetailWindow',
+  components: { GlobalWindow },
+  data () {
+    return {
+      title: '鎻愮幇璇︽儏',
+      visible: false,
+      detailInfo: {
+        status: '',
+        shopName: '',
+        linkName: '',
+        createTime: '',
+        amount: '',
+        bankCardNo: '',
+        auditLogs: []
+      },
+      approvalForm: {
+        id: null,
+        status: 1,
+        approveRemark: ''
+      },
+      approvalRules: {
+        status: [{ required: true, message: '璇烽�夋嫨瀹℃壒缁撴灉', trigger: 'change' }]
+      },
+      isWorking: {
+        submit: false
+      }
+    }
+  },
+  methods: {
+    open (title, row) {
+      this.title = title
+      this.approvalForm.id = row.id
+      this.approvalForm.status = 1
+      this.approvalForm.approveRemark = ''
+      getById(row.id).then(res => {
+        this.detailInfo = {
+          status: res.status,
+          shopName: res.shopName,
+          linkName: res.linkName,
+          createTime: res.createTime,
+          amount: res.amount,
+          bankCardNo: res.bankCardNo,
+          auditLogs: res.auditLogs || [],
+          updateUserName: res.updateUserName,
+          updateTime: res.updateTime,
+          approveRemark: res.approveRemark
+        }
+        this.visible = true
+      }).catch(e => {
+        this.$tip.apiFailed(e)
+      })
+    },
+    getStatusText (status) {
+      const map = { 0: '鎻愮幇鐢宠涓�', 1: '鎻愮幇鎴愬姛', 2: '鎻愮幇澶辫触' }
+      return map[status] || '-'
+    },
+    getStatusClass (status) {
+      const map = { 0: 'status-pending', 1: 'status-success', 2: 'status-reject' }
+      return map[status] || ''
+    },
+    handleConfirm () {
+      if (this.detailInfo.status !== 0) {
+        this.visible = false
+        return
+      }
+      this.$refs.approvalForm.validate(valid => {
+        if (!valid) return
+        this.isWorking.submit = true
+        approve(this.approvalForm).then(res => {
+          this.$tip.apiSuccess(res || '鎻愪氦鎴愬姛')
+          this.visible = false
+          this.$emit('success')
+        }).catch(e => {
+          this.$tip.apiFailed(e)
+        }).finally(() => {
+          this.isWorking.submit = false
+        })
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.detail-container {
+  padding: 20px;
+}
+.section {
+  margin-bottom: 30px;
+}
+.section-header {
+  display: flex;
+  align-items: center;
+  gap: 15px;
+  margin-bottom: 15px;
+}
+.section-title {
+  font-size: 16px;
+  font-weight: bold;
+  color: #303133;
+  padding-left: 10px;
+  border-left: 4px solid #2E68EC;
+}
+.status-tag {
+  padding: 4px 12px;
+  border-radius: 4px;
+  font-size: 12px;
+}
+.status-pending {
+  background: #fdf6ec;
+  color: #E6A23C;
+}
+.status-success {
+  background: #f0f9eb;
+  color: #67C23A;
+}
+.status-reject {
+  background: #fef0f0;
+  color: #F56C6C;
+}
+.info-grid {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: 15px;
+  padding: 0 10px;
+}
+.info-item {
+  display: flex;
+  font-size: 14px;
+}
+.info-item .label {
+  color: #909399;
+  min-width: 90px;
+}
+.info-item .value {
+  color: #606266;
+}
+.info-item .amount {
+  color: #f56c6c;
+  font-weight: bold;
+}
+.info-item.full-width {
+  grid-column: span 2;
+}
+.timeline-content {
+  padding: 10px;
+  background: #f5f7fa;
+  border-radius: 4px;
+}
+.timeline-title {
+  font-size: 14px;
+  font-weight: bold;
+  color: #303133;
+  margin-bottom: 8px;
+}
+.timeline-info {
+  display: flex;
+  gap: 20px;
+  font-size: 13px;
+  color: #606266;
+  margin-bottom: 5px;
+}
+.timeline-remark {
+  font-size: 13px;
+  color: #909399;
+}
+.approval-form {
+  padding: 20px;
+  background: #f5f7fa;
+  border-top: 1px solid #eee;
+}
+.approval-form /deep/ .el-form-item {
+  margin-bottom: 15px;
+}
+.approval-form /deep/ .el-form-item:last-child {
+  margin-bottom: 0;
+}
+.approval-buttons {
+  display: flex;
+  justify-content: flex-end;
+  gap: 10px;
+  margin-top: 15px;
+}
+</style>
diff --git a/admin/src/views/business/baggageType.vue b/admin/src/views/business/baggageType.vue
new file mode 100644
index 0000000..b210bae
--- /dev/null
+++ b/admin/src/views/business/baggageType.vue
@@ -0,0 +1,96 @@
+<template>
+  <TableLayout :permissions="['business:category:query']">
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" clearable placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <template v-slot:table-wrap>
+      <ul class="toolbar">
+        <li><el-button type="primary" @click="$refs.operaGoodsCategoryEditWindow.open('鏂板缓鐗╁搧绛夌骇', null, 4)" icon="el-icon-plus">鏂板缓</el-button></li>
+      </ul>
+      <el-table
+        :height="tableHeightNew"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+      >
+        <el-table-column prop="id" label="ID" min-width="80px"></el-table-column>
+        <el-table-column prop="name" label="琛屾潕绫诲瀷" min-width="120px"></el-table-column>
+        <el-table-column prop="remark" label="澶囨敞璇存槑" min-width="200px"></el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭" min-width="100px"></el-table-column>
+        <el-table-column prop="createTime" label="鎻愪氦鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column label="鐘舵��" min-width="80px">
+          <template slot-scope="{row}">
+            <el-switch
+              @change="handleStatusChange($event, row)"
+              v-model="row.status"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="0"
+              :inactive-value="1"
+            ></el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" min-width="150" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="handleEdit(row)">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row.id)">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      ></pagination>
+    </template>
+    <OperaGoodsCategoryEditWindow ref="operaGoodsCategoryEditWindow" @success="search" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaGoodsCategoryEditWindow from '@/components/business/OperaGoodsCategoryEditWindow'
+import { updateStatus } from '@/api/business/goodsCategory'
+
+export default {
+  name: 'BaggageTypeList',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaGoodsCategoryEditWindow },
+  data () {
+    return {
+      searchForm: {
+        name: '',
+        type: 4
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/goodsCategory',
+      'field.id': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    handleEdit (row) {
+      this.$refs.operaGoodsCategoryEditWindow.open('缂栬緫鐗╁搧绛夌骇', row, 4)
+    },
+    handleStatusChange (val, row) {
+      updateStatus({ id: row.id, status: val }).then(res => {
+        this.$tip.apiSuccess(res || '淇敼鎴愬姛')
+      }).catch(e => {
+        row.status = val === 1 ? 0 : 1
+        this.$tip.apiFailed(e)
+      })
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/business/bannerList.vue b/admin/src/views/business/bannerList.vue
new file mode 100644
index 0000000..3fca071
--- /dev/null
+++ b/admin/src/views/business/bannerList.vue
@@ -0,0 +1,138 @@
+<template>
+  <TableLayout :permissions="['business:banner:query']">
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鏍囬" prop="title">
+        <el-input v-model="searchForm.title" clearable placeholder="璇疯緭鍏ユ爣棰�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <template v-slot:table-wrap>
+      <ul class="toolbar" v-permissions="['business:banner:create']">
+        <li><el-button type="primary" @click="$refs.operaBannerEditWindow.open('鏂板缓杞挱鍥�',null,searchForm.type)" icon="el-icon-plus" v-permissions="['business:banner:create']">鏂板缓</el-button></li>
+      </ul>
+      <el-table
+        :height="tableHeightNew"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+      >
+        <el-table-column prop="title" label="鏍囬" min-width="120px"></el-table-column>
+        <el-table-column prop="position" label="灞曠ず浣嶇疆" min-width="100px">
+          <template slot-scope="{row}">
+            {{ positionOptions[row.position] || '-' }}
+          </template>
+        </el-table-column>
+        <el-table-column label="鍥剧墖" min-width="120px">
+          <template slot-scope="{row}">
+            <el-image
+              v-if="row.imgurlFull"
+              style="width: 80px; height: 40px"
+              :src="row.imgurlFull"
+              fit="contain"
+            ></el-image>
+            <span v-else>-</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="璺宠浆鏂瑰紡" min-width="100px">
+          <template slot-scope="{row}">
+            {{ jumpTypeOptions[row.type] || '-' }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭鐮�" min-width="80px"></el-table-column>
+        <el-table-column label="鐘舵��" min-width="80px">
+          <template slot-scope="{row}">
+            <el-switch
+              @change="handleStatusChange($event, row)"
+              v-model="row.status"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="1"
+              :inactive-value="0"
+            ></el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column prop="updateTime" label="淇敼鏃堕棿" min-width="160px"></el-table-column>
+        <el-table-column label="鎿嶄綔" min-width="150" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="handleEdit(row)">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row.id)">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      ></pagination>
+    </template>
+    <OperaBannerEditWindow ref="operaBannerEditWindow" @success="search" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaBannerEditWindow from '@/components/business/OperaBannerEditWindow'
+import { updateById, deleteById } from '@/api/business/banner'
+
+export default {
+  name: 'BannerList',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaBannerEditWindow },
+  data () {
+    return {
+      positionOptions: {
+        0: '棣栭〉',
+        1: '搴楅摵棣栭〉'
+      },
+      jumpTypeOptions: {
+        0: '鏃�',
+        1: '浼氬憳绔椤佃疆鎾�',
+        2: '鍙告満APP寮曞椤�'
+      },
+      searchForm: {
+        title: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/banner',
+      'field.id': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    loadTableData (resolve) {
+      this.isWorking.search = true
+      list(this.getTableParams())
+        .then(data => {
+          this.tableData.list = data.list || []
+          this.tableData.pagination.total = data.total || 0
+          if (resolve) resolve(data)
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e, '鍔犺浇澶辫触')
+        })
+        .finally(() => {
+          this.isWorking.search = false
+        })
+    },
+    handleEdit (row) {
+      this.$refs.operaBannerEditWindow.open('缂栬緫杞挱鍥�', row)
+    },
+    handleStatusChange (val, row) {
+      updateById({ id: row.id, status: val }).then(res => {
+        this.$tip.apiSuccess(res || '淇敼鎴愬姛')
+      }).catch(e => {
+        row.status = val === 1 ? 0 : 1
+        this.$tip.apiFailed(e)
+      })
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/business/driverList.vue b/admin/src/views/business/driverList.vue
new file mode 100644
index 0000000..4ae814c
--- /dev/null
+++ b/admin/src/views/business/driverList.vue
@@ -0,0 +1,155 @@
+<template>
+  <TableLayout :permissions="['business:driverInfo:query']">
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鍙告満淇℃伅" prop="keyword">
+        <el-input v-model="searchForm.keyword" clearable placeholder="璇疯緭鍏ュ徃鏈哄鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="杞︾墝鍙�" prop="carNo">
+        <el-input v-model="searchForm.carNo" clearable placeholder="璇疯緭鍏ヨ溅鐗屽彿" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨鐘舵��" @change="search">
+          <el-option label="绂佺敤" :value="1"></el-option>
+          <el-option label="鍚敤" :value="0"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鎬у埆" prop="sex">
+        <el-select v-model="searchForm.sex" clearable placeholder="璇烽�夋嫨鎬у埆" @change="search">
+          <el-option label="鐢�" :value="1"></el-option>
+          <el-option label="濂�" :value="2"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createTime">
+        <el-date-picker type="daterange" v-model="searchForm.createTime" clearable value-format="yyyy-MM-dd"
+                        range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" @change="handleDateChange" />
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+        <el-button :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button>
+      </section>
+    </el-form>
+    <template v-slot:table-wrap>
+      <el-table
+        :height="tableHeightNew"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+      >
+        <el-table-column prop="name" label="鍙告満濮撳悕" min-width="100px"></el-table-column>
+        <el-table-column label="鎬у埆" min-width="60px">
+          <template slot-scope="{row}">{{ row.gender === 1 ? '鐢�' : row.gender === 2 ? '濂�' : '-' }}</template>
+        </el-table-column>
+        <el-table-column prop="telephone" label="娉ㄥ唽鎵嬫満鍙�" min-width="120px"></el-table-column>
+        <el-table-column prop="idcard" label="韬唤璇佸彿" min-width="160px"></el-table-column>
+        <el-table-column label="璐︽埛浣欓" min-width="100px">
+          <template slot-scope="{row}">楼{{ (row.memberAmount / 100).toFixed(2) }}</template>
+        </el-table-column>
+        <el-table-column prop="carCode" label="杞︾墝鍙�" min-width="100px"></el-table-column>
+        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="160px"></el-table-column>
+        <el-table-column label="鐘舵��" min-width="80px">
+          <template slot-scope="{row}">
+            <el-switch
+              @change="handleStatusChange($event, row)"
+              v-model="row.status"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="0"
+              :inactive-value="1"
+            ></el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" min-width="100" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="handleDetail(row)">璇︽儏</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      ></pagination>
+    </template>
+    <OperaDriverDetail ref="operaDriverDetail" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaDriverDetail from '@/components/business/OperaDriverDetail'
+import { updateStatus, exportExcel } from '@/api/business/driver'
+
+export default {
+  name: 'DriverList',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaDriverDetail },
+  data () {
+    return {
+      searchForm: {
+        keyword: '',
+        carNo: '',
+        status: '',
+        sex: '',
+        createTime: '',
+        startTime: '',
+        endTime: '',
+        auditStatus: 1
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/driver',
+      'field.id': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    handleDateChange (val) {
+      this.searchForm.startTime = val ? val[0] : ''
+      this.searchForm.endTime = val ? val[1] : ''
+      this.search()
+    },
+    reset () {
+      this.searchForm = {
+        keyword: '',
+        carNo: '',
+        status: '',
+        sex: '',
+        createTime: '',
+        startTime: '',
+        endTime: ''
+      }
+      this.search()
+    },
+    handleDetail (row) {
+      this.$refs.operaDriverDetail.open('鍙告満璇︽儏', row)
+    },
+    handleStatusChange (val, row) {
+      updateStatus({ id: row.id, status: val }).then(res => {
+        this.$tip.apiSuccess(res || '淇敼鎴愬姛')
+      }).catch(e => {
+        row.status = val === 1 ? 0 : 1
+        this.$tip.apiFailed(e)
+      })
+    },
+    handleExport () {
+      this.isWorking.export = true
+      exportExcel(this.getTableParams())
+        .then(res => {
+          this.download(res)
+          this.$tip.apiSuccess('瀵煎嚭鎴愬姛')
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+        .finally(() => {
+          this.isWorking.export = false
+        })
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/business/driverVerification.vue b/admin/src/views/business/driverVerification.vue
new file mode 100644
index 0000000..00678e0
--- /dev/null
+++ b/admin/src/views/business/driverVerification.vue
@@ -0,0 +1,160 @@
+<template>
+  <TableLayout :permissions="['business:driverInfo:query']">
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鍙告満淇℃伅" prop="keyword">
+        <el-input v-model="searchForm.keyword" clearable placeholder="璇疯緭鍏ュ徃鏈哄鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="杞︾墝鍙�" prop="carNo">
+        <el-input v-model="searchForm.carNo" clearable placeholder="璇疯緭鍏ヨ溅鐗屽彿" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="瀹℃牳鐘舵��" prop="auditStatus">
+        <el-select v-model="searchForm.auditStatus" clearable placeholder="璇烽�夋嫨鐘舵��" @change="search">
+          <el-option label="寰呭鎵�" :value="0"></el-option>
+          <el-option label="瀹℃壒閫氳繃" :value="1"></el-option>
+          <el-option label="瀹℃壒椹冲洖" :value="2"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createTime">
+        <el-date-picker type="daterange" v-model="searchForm.createTime" clearable value-format="yyyy-MM-dd"
+                        range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" @change="handleDateChange" />
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+        <el-button :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button>
+      </section>
+    </el-form>
+    <template v-slot:table-wrap>
+      <el-table
+        :height="tableHeightNew"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+      >
+        <el-table-column prop="name" label="鍙告満濮撳悕" min-width="100px"></el-table-column>
+        <el-table-column label="鎬у埆" min-width="60px">
+          <template slot-scope="{row}">{{ row.gender === 1 ? '鐢�' : row.gender === 2 ? '濂�' : '-' }}</template>
+        </el-table-column>
+        <el-table-column prop="telephone" label="娉ㄥ唽鎵嬫満鍙�" min-width="120px"></el-table-column>
+        <el-table-column prop="idcard" label="韬唤璇佸彿" min-width="160px"></el-table-column>
+        <el-table-column label="濠氬Щ鐘跺喌" min-width="100px">
+          <template slot-scope="{row}">{{ row.maritalStatus === 0 ? '鏈' : row.maritalStatus === 1 ? '宸插' : row.maritalStatus === 2 ? '绂诲紓' : '涓у伓' }}</template>
+        </el-table-column>
+        <el-table-column prop="carCode" label="杞︾墝鍙�" min-width="100px"></el-table-column>
+        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="160px"></el-table-column>
+        <el-table-column label="瀹℃牳鐘舵��">
+          <template slot-scope="{row}">
+            <span style="color: #e6a23c;" v-if="row.auditStatus === 0">寰呭鎵�</span>
+            <span style="color: #13ce66;" v-else-if="row.auditStatus === 1">瀹℃壒閫氳繃</span>
+            <span style="color: #ff4949;" v-else>瀹℃壒椹冲洖</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="鐘舵��" min-width="80px">
+          <template slot-scope="{row}">
+            <el-switch
+              @change="handleStatusChange($event, row)"
+              v-model="row.status"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="0"
+              :inactive-value="1"
+            ></el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" min-width="100" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="handleDetail(row)">璇︽儏</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      ></pagination>
+    </template>
+    <OperaDriverApproval ref="operaDriverApproval" @success="handleApprovalSuccess" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaDriverApproval from '@/components/business/OperaDriverApproval'
+import { updateStatus, exportExcel } from '@/api/business/driver'
+
+export default {
+  name: 'DriverVerification',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaDriverApproval },
+  data () {
+    return {
+      searchForm: {
+        keyword: '',
+        carNo: '',
+        auditStatus: '',
+        sex: '',
+        createTime: '',
+        startTime: '',
+        endTime: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/driver',
+      'field.id': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    handleDateChange (val) {
+      this.searchForm.startTime = val ? val[0] : ''
+      this.searchForm.endTime = val ? val[1] : ''
+      this.search()
+    },
+    reset () {
+      this.searchForm = {
+        keyword: '',
+        carNo: '',
+        status: '',
+        sex: '',
+        createTime: '',
+        startTime: '',
+        endTime: ''
+      }
+      this.search()
+    },
+    handleDetail (row) {
+      this.$refs.operaDriverApproval.open('鍙告満瀹℃牳', row)
+    },
+    handleApprovalSuccess (data) {
+      this.$tip.apiSuccess('瀹℃牳鎻愪氦鎴愬姛')
+      this.search()
+    },
+    handleStatusChange (val, row) {
+      updateStatus({ id: row.id, status: val }).then(res => {
+        this.$tip.apiSuccess(res || '淇敼鎴愬姛')
+      }).catch(e => {
+        row.status = val === 1 ? 0 : 1
+        this.$tip.apiFailed(e)
+      })
+    },
+    handleExport () {
+      this.isWorking.export = true
+      exportExcel(this.getTableParams())
+        .then(res => {
+          this.download(res)
+          this.$tip.apiSuccess('瀵煎嚭鎴愬姛')
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+        .finally(() => {
+          this.isWorking.export = false
+        })
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/business/goodsCategoryList.vue b/admin/src/views/business/goodsCategoryList.vue
new file mode 100644
index 0000000..d09308c
--- /dev/null
+++ b/admin/src/views/business/goodsCategoryList.vue
@@ -0,0 +1,96 @@
+<template>
+  <TableLayout :permissions="['business:category:query']">
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" clearable placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <template v-slot:table-wrap>
+      <ul class="toolbar">
+        <li><el-button type="primary" @click="$refs.operaGoodsCategoryEditWindow.open('鏂板缓鐗╁搧鍒嗙被', null, 2)" icon="el-icon-plus">鏂板缓</el-button></li>
+      </ul>
+      <el-table
+        :height="tableHeightNew"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+      >
+        <el-table-column prop="id" label="ID" min-width="80px"></el-table-column>
+        <el-table-column prop="name" label="鐗╁搧鍚嶇О" min-width="120px"></el-table-column>
+        <el-table-column prop="detail" label="瀵勫瓨璇存槑" min-width="200px"></el-table-column>
+        <el-table-column prop="sortnum" label="鍒嗙被鎺掑簭" min-width="100px"></el-table-column>
+        <el-table-column label="鐘舵��" min-width="80px">
+          <template slot-scope="{row}">
+            <el-switch
+              @change="handleStatusChange($event, row)"
+              v-model="row.status"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="0"
+              :inactive-value="1"
+            ></el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" min-width="150" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="handleEdit(row)">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row.id)">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      ></pagination>
+    </template>
+    <OperaGoodsCategoryEditWindow ref="operaGoodsCategoryEditWindow" @success="search" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaGoodsCategoryEditWindow from '@/components/business/OperaGoodsCategoryEditWindow'
+import { fetchList, updateStatus, deleteById } from '@/api/business/goodsCategory'
+
+export default {
+  name: 'GoodsCategoryList',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaGoodsCategoryEditWindow },
+  data () {
+    return {
+      searchForm: {
+        name: '',
+        status: '',
+        type: 2
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/goodsCategory',
+      'field.id': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    handleEdit (row) {
+      this.$refs.operaGoodsCategoryEditWindow.open('缂栬緫鐗╁搧鍒嗙被', row, 2)
+    },
+    handleStatusChange (val, row) {
+      updateStatus({ id: row.id, status: val }).then(res => {
+        this.$tip.apiSuccess(res || '淇敼鎴愬姛')
+      }).catch(e => {
+        row.status = val === 1 ? 0 : 1
+        this.$tip.apiFailed(e)
+      })
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/business/itemLevel.vue b/admin/src/views/business/itemLevel.vue
new file mode 100644
index 0000000..65a47b6
--- /dev/null
+++ b/admin/src/views/business/itemLevel.vue
@@ -0,0 +1,96 @@
+<template>
+  <TableLayout :permissions="['business:category:query']">
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" clearable placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <template v-slot:table-wrap>
+      <ul class="toolbar">
+        <li><el-button type="primary" @click="$refs.operaGoodsCategoryEditWindow.open('鏂板缓鐗╁搧绛夌骇', null, 3)" icon="el-icon-plus">鏂板缓</el-button></li>
+      </ul>
+      <el-table
+        :height="tableHeightNew"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+      >
+        <el-table-column prop="id" label="ID" min-width="80px"></el-table-column>
+        <el-table-column prop="name" label="绛夌骇鍚嶇О" min-width="120px"></el-table-column>
+        <el-table-column prop="detail" label="澶囨敞璇存槑" min-width="200px"></el-table-column>
+        <el-table-column prop="sortnum" label="鎺掑簭" min-width="100px"></el-table-column>
+        <el-table-column prop="createTime" label="鎻愪氦鏃堕棿" min-width="100px"></el-table-column>
+        <el-table-column label="鐘舵��" min-width="80px">
+          <template slot-scope="{row}">
+            <el-switch
+              @change="handleStatusChange($event, row)"
+              v-model="row.status"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="0"
+              :inactive-value="1"
+            ></el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" min-width="150" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="handleEdit(row)">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row.id)">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      ></pagination>
+    </template>
+    <OperaGoodsCategoryEditWindow ref="operaGoodsCategoryEditWindow" @success="search" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaGoodsCategoryEditWindow from '@/components/business/OperaGoodsCategoryEditWindow'
+import { updateStatus } from '@/api/business/goodsCategory'
+
+export default {
+  name: 'ItemLevelList',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaGoodsCategoryEditWindow },
+  data () {
+    return {
+      searchForm: {
+        name: '',
+        type: 3
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/goodsCategory',
+      'field.id': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    handleEdit (row) {
+      this.$refs.operaGoodsCategoryEditWindow.open('缂栬緫鐗╁搧绛夌骇', row, 3)
+    },
+    handleStatusChange (val, row) {
+      updateStatus({ id: row.id, status: val }).then(res => {
+        this.$tip.apiSuccess(res || '淇敼鎴愬姛')
+      }).catch(e => {
+        row.status = val === 1 ? 0 : 1
+        this.$tip.apiFailed(e)
+      })
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/business/memberList.vue b/admin/src/views/business/memberList.vue
new file mode 100644
index 0000000..ea79fa8
--- /dev/null
+++ b/admin/src/views/business/memberList.vue
@@ -0,0 +1,105 @@
+<template>
+  <TableLayout :permissions="['business:member:query']">
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="浼氬憳淇℃伅" prop="keyword">
+        <el-input v-model="searchForm.keyword" clearable placeholder="璇疯緭鍏ュ鍚�/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨鐘舵��" @change="search">
+          <el-option label="姝e父" :value="0"></el-option>
+          <el-option label="鍋滅敤" :value="1"></el-option>
+          <el-option label="宸叉敞閿�" :value="2"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createTime">
+        <el-date-picker type="daterange" v-model="searchForm.createTime" clearable value-format="yyyy-MM-dd"
+                        range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" @change="handleDateChange" />
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+        <el-button :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button>
+      </section>
+    </el-form>
+    <template v-slot:table-wrap>
+      <el-table
+        :height="tableHeightNew"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+      >
+        <el-table-column prop="nickName" label="鐢ㄦ埛鏄电О" min-width="120px"></el-table-column>
+        <el-table-column prop="name" label="浼氬憳濮撳悕" min-width="120px"></el-table-column>
+        <el-table-column prop="telephone" label="鎺堟潈鎵嬫満鍙�" min-width="130px"></el-table-column>
+        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="160px"></el-table-column>
+        <el-table-column label="鐘舵��" min-width="80px">
+          <template slot-scope="{row}">
+            {{ row.status === 0 ? '姝e父' : row.status === 1 ? '鍋滅敤' : '宸叉敞閿�' }}
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" min-width="100" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="handleDetail(row)">璇︽儏</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      ></pagination>
+    </template>
+    <OperaMemberDetailWindow ref="operaMemberDetailWindow" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaMemberDetailWindow from '@/components/business/OperaMemberDetail'
+
+export default {
+  name: 'MemberList',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaMemberDetailWindow },
+  data () {
+    return {
+      searchForm: {
+        keyword: '',
+        status: '',
+        createTime: '',
+        startTime: '',
+        endTime: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/memberManage',
+      'field.id': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    handleDateChange (val) {
+      this.searchForm.startTime = val ? val[0] : ''
+      this.searchForm.endTime = val ? val[1] : ''
+      this.search()
+    },
+    reset () {
+      this.searchForm = {
+        keyword: '',
+        status: '',
+        createTime: '',
+        startTime: '',
+        endTime: ''
+      }
+      this.search()
+    },
+    handleDetail (row) {
+      this.$refs.operaMemberDetailWindow.open('浼氬憳璇︽儏', row)
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/business/memberManage.vue b/admin/src/views/business/memberManage.vue
new file mode 100644
index 0000000..bcb2923
--- /dev/null
+++ b/admin/src/views/business/memberManage.vue
@@ -0,0 +1,149 @@
+<template>
+  <TableLayout :permissions="['business:member:query']">
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="浼氬憳淇℃伅" prop="keyword">
+        <el-input v-model="searchForm.keyword" clearable placeholder="璇疯緭鍏ョ敤鎴锋樀绉�/浼氬憳濮撳悕/鎵嬫満鍙�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨鐘舵��" @change="search">
+          <el-option label="绂佺敤" :value="0"></el-option>
+          <el-option label="鍚敤" :value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createTime">
+        <el-date-picker type="daterange" v-model="searchForm.createTime" clearable value-format="yyyy-MM-dd"
+                        range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" @change="handleDateChange" />
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+        <el-button :loading="isWorking.export" @click="handleExport">瀵煎嚭</el-button>
+      </section>
+    </el-form>
+    <template v-slot:table-wrap>
+      <el-table
+        :height="tableHeightNew"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+      >
+        <el-table-column prop="nickName" label="鐢ㄦ埛鏄电О" min-width="120px"></el-table-column>
+        <el-table-column prop="name" label="浼氬憳濮撳悕" min-width="120px"></el-table-column>
+        <el-table-column prop="phone" label="鎺堟潈鎵嬫満鍙�" min-width="130px"></el-table-column>
+        <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="160px"></el-table-column>
+        <el-table-column label="鐘舵��" min-width="80px">
+          <template slot-scope="{row}">
+            <el-switch
+              @change="handleStatusChange($event, row)"
+              v-model="row.status"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="1"
+              :inactive-value="0"
+            ></el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" min-width="100" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="handleDetail(row)">璇︽儏</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      ></pagination>
+    </template>
+    <OperaMemberDetail ref="operaMemberDetail" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaMemberDetail from '@/components/business/OperaMemberDetail'
+import { fetchList, updateStatus, exportExcel } from '@/api/business/memberManage'
+
+export default {
+  name: 'MemberManage',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaMemberDetail },
+  data () {
+    return {
+      searchForm: {
+        keyword: '',
+        status: '',
+        createTime: '',
+        createStartTime: '',
+        createEndTime: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/member',
+      'field.id': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    loadTableData (resolve) {
+      this.isWorking.search = true
+      fetchList(this.getTableParams())
+        .then(data => {
+          this.tableData.list = data.list || []
+          this.tableData.pagination.total = data.total || 0
+          if (resolve) resolve(data)
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e, '鍔犺浇澶辫触')
+        })
+        .finally(() => {
+          this.isWorking.search = false
+        })
+    },
+    handleDateChange (val) {
+      this.searchForm.createStartTime = val ? val[0] : ''
+      this.searchForm.createEndTime = val ? val[1] : ''
+      this.search()
+    },
+    reset () {
+      this.searchForm = {
+        keyword: '',
+        status: '',
+        createTime: '',
+        createStartTime: '',
+        createEndTime: ''
+      }
+      this.search()
+    },
+    handleDetail (row) {
+      this.$refs.operaMemberDetail.open('浼氬憳璇︽儏', row)
+    },
+    handleStatusChange (val, row) {
+      updateStatus({ id: row.id, status: val }).then(res => {
+        this.$tip.apiSuccess(res || '淇敼鎴愬姛')
+      }).catch(e => {
+        row.status = val === 1 ? 0 : 1
+        this.$tip.apiFailed(e)
+      })
+    },
+    handleExport () {
+      this.isWorking.export = true
+      exportExcel(this.getTableParams())
+        .then(res => {
+          this.download(res)
+          this.$tip.apiSuccess('瀵煎嚭鎴愬姛')
+        })
+        .catch(e => {
+          this.$tip.apiFailed(e)
+        })
+        .finally(() => {
+          this.isWorking.export = false
+        })
+    }
+  }
+}
+</script>
diff --git a/admin/src/views/business/orderManagement.vue b/admin/src/views/business/orderManagement.vue
new file mode 100644
index 0000000..94ecf6f
--- /dev/null
+++ b/admin/src/views/business/orderManagement.vue
@@ -0,0 +1,190 @@
+<template>
+  <TableLayout :permissions="['business:orders:query']">
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="璁㈠崟缂栧彿" prop="code">
+        <el-input v-model="searchForm.code" clearable placeholder="璇疯緭鍏ヨ鍗曠紪鍙�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐗╁搧淇℃伅" prop="goodsInfo">
+        <el-input v-model="searchForm.goodsInfo" clearable placeholder="璇疯緭鍏ョ墿鍝佷俊鎭�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鍒涘缓鏃堕棿" prop="createTime1">
+        <el-date-picker type="daterange" v-model="searchForm.createTime1" clearable value-format="yyyy-MM-dd"
+                        range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" @change="handleDateChange" />
+      </el-form-item>
+      <el-form-item label="瀵勪欢闂ㄥ簵" prop="depositShopName">
+        <el-input v-model="searchForm.depositShopName" clearable placeholder="璇疯緭鍏ュ瘎浠堕棬搴�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鏀朵欢闂ㄥ簵" prop="takeShopName">
+        <el-input v-model="searchForm.takeShopName" clearable placeholder="璇疯緭鍏ユ敹浠堕棬搴�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="绫诲瀷" prop="type">
+        <el-select v-model="searchForm.type" clearable placeholder="璇烽�夋嫨绫诲瀷" @change="search">
+          <el-option label="灏卞湴瀛樺彇" :value="0"></el-option>
+          <el-option label="寮傚湴瀛樺彇" :value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="璁㈠崟鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨璁㈠崟鐘舵��" @change="search">
+          <el-option label="鍏ㄩ儴" value=""></el-option>
+          <el-option label="寰呮敮浠�" :value="0"></el-option>
+          <el-option label="寰呭瘎瀛�" :value="1"></el-option>
+          <el-option label="宸插瘎瀛�" :value="2"></el-option>
+          <el-option label="宸叉帴鍗�" :value="3"></el-option>
+          <el-option label="娲鹃�佷腑" :value="4"></el-option>
+          <el-option label="宸插埌搴�/宸查�佽揪" :value="5"></el-option>
+          <el-option label="瀛樺湪閫炬湡" :value="6"></el-option>
+          <el-option label="宸插畬鎴�" :value="7"></el-option>
+          <el-option label="璁㈠崟鍏抽棴锛堥��娆撅級" :value="96"></el-option>
+          <el-option label="鍙栨秷閫炬湡" :value="97"></el-option>
+          <el-option label="鍙栨秷涓�" :value="98"></el-option>
+          <el-option label="宸插彇娑�" :value="99"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="缁撶畻鐘舵��" prop="settlementStatus">
+        <el-select v-model="searchForm.settlementStatus" clearable placeholder="璇烽�夋嫨缁撶畻鐘舵��" @change="search">
+          <el-option label="寰呯粨绠�" :value="0"></el-option>
+          <el-option label="宸茬粨绠�" :value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+        <el-button :loading="isWorking.export" @click="exportExcel">瀵煎嚭</el-button>
+      </section>
+    </el-form>
+    <template v-slot:table-wrap>
+      <el-table
+        :height="tableHeightNew"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+      >
+        <el-table-column prop="code" label="璁㈠崟缂栧彿" min-width="150px">
+          <template slot-scope="{row}">
+            <span class="order-no" @click="handleOrderDetail(row)">{{ row.code }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="goodsInfo" label="鐗╁搧淇℃伅" min-width="120px"></el-table-column>
+        <el-table-column label="绫诲瀷" min-width="80px">
+          <template slot-scope="{row}">
+            <span v-if="row.type === 0">灏卞湴瀛樺彇</span>
+            <span v-else-if="row.type === 1">寮傚湴瀛樺彇</span>
+            <span v-else>-</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="orderLevel" label="璁㈠崟绾у埆" min-width="80px"></el-table-column>
+        <el-table-column label="鐗╁搧淇濊垂锛堝厓锛�" min-width="120px">
+          <template slot-scope="{row}">楼{{ (row.declaredFee / 100).toFixed(2) }}</template>
+        </el-table-column>
+        <el-table-column label="鍩虹鏈嶅姟璐癸紙鍏冿級" min-width="120px">
+          <template slot-scope="{row}">楼{{ (row.price / 100).toFixed(2) }}</template>
+        </el-table-column>
+        <el-table-column label="璁㈠崟鎬讳环锛堝厓锛�" min-width="120px">
+          <template slot-scope="{row}">楼{{ (row.totalAmount / 100).toFixed(2) }}</template>
+        </el-table-column>
+        <el-table-column label="瀹炰粯鐜伴噾锛堝厓锛�" min-width="120px">
+          <template slot-scope="{row}">楼{{ (row.payAmount / 100).toFixed(2) }}</template>
+        </el-table-column>
+        <el-table-column label="閫�娆鹃噾棰濓紙鍏冿級" min-width="120px">
+          <template slot-scope="{row}">楼{{ (row.refundAmount / 100).toFixed(2) }}</template>
+        </el-table-column>
+        <el-table-column label="瓒呮椂閲戦" min-width="100px">
+          <template slot-scope="{row}">楼{{ (row.overdueAmount / 100).toFixed(2) }}</template>
+        </el-table-column>
+        <el-table-column label="寮傚父閲戦" min-width="100px">
+          <template slot-scope="{row}">楼{{ (row.exceptionAmount / 100).toFixed(2) }}</template>
+        </el-table-column>
+        <el-table-column label="缁撶畻鐘舵��" min-width="100px">
+          <template slot-scope="{row}">
+            <span :style="{ color: row.settlementStatus === 1 ? '#67c23a' : '#e6a23c' }">
+              {{ row.settlementStatus === 1 ? '宸茬粨绠�' : '鏈粨绠�' }}
+            </span>
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" min-width="120" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="handleDispatch(row)">鎵嬪姩娲惧崟</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      ></pagination>
+    </template>
+    <OperaDispatch ref="operaDispatch" />
+    <OperaOrderDetail ref="operaOrderDetail" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaDispatch from '@/components/business/OperaDispatch'
+import OperaOrderDetail from '@/components/business/OperaOrderDetail'
+export default {
+  name: 'OrderManagement',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaDispatch, OperaOrderDetail },
+  data () {
+    return {
+      searchForm: {
+        code: '',
+        goodsInfo: '',
+        createTime1: '',
+        createStartTime: '',
+        createEndTime: '',
+        depositShopName: '',
+        takeShopName: '',
+        type: '',
+        status: '',
+        settlementStatus: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/orderManagement',
+      'field.id': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    handleDateChange (val) {
+      this.searchForm.createStartTime = val ? val[0] : ''
+      this.searchForm.createEndTime = val ? val[1] : ''
+      this.search()
+    },
+    reset () {
+      this.searchForm = {
+        orderNo: '',
+        goodsInfo: '',
+        createTime1: '',
+        createStartTime: '',
+        createEndTime: '',
+        sendShopName: '',
+        receiveShopName: '',
+        type: '',
+        orderStatus: '',
+        settleStatus: ''
+      }
+      this.search()
+    },
+    handleDispatch (row) {
+      this.$refs.operaDispatch.open(row)
+    },
+    handleOrderDetail (row) {
+      this.$refs.operaOrderDetail.open(row)
+    }
+  }
+}
+</script>
+<style scoped>
+.order-no {
+  color: #2E68EC;
+  text-decoration: underline;
+  cursor: pointer;
+}
+</style>
diff --git a/admin/src/views/business/shopQualificationList.vue b/admin/src/views/business/shopQualificationList.vue
new file mode 100644
index 0000000..44c62c9
--- /dev/null
+++ b/admin/src/views/business/shopQualificationList.vue
@@ -0,0 +1,155 @@
+<template>
+  <TableLayout :permissions="['business:shopInfo:query']">
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="闂ㄥ簵鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" clearable placeholder="璇疯緭鍏ラ棬搴楀悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="绫诲瀷" prop="companyType">
+        <el-select v-model="searchForm.companyType" clearable placeholder="璇烽�夋嫨绫诲瀷" @change="search">
+          <el-option label="浼佷笟" :value="1"></el-option>
+          <el-option label="涓汉" :value="0"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="闂ㄥ簵鍦板潃" prop="address">
+        <el-input v-model="searchForm.address" clearable placeholder="璇疯緭鍏ラ棬搴楀湴鍧�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鑱旂郴浜�" prop="linkName">
+        <el-input v-model="searchForm.linkName" clearable placeholder="璇疯緭鍏ヨ仈绯讳汉" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鑱旂郴鐢佃瘽" prop="linkPhone">
+        <el-input v-model="searchForm.linkPhone" clearable placeholder="璇疯緭鍏ヨ仈绯荤數璇�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鎻愪氦鏃堕棿" prop="createTime">
+        <el-date-picker type="daterange" v-model="searchForm.createTime" clearable value-format="yyyy-MM-dd"
+                        range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" @change="handleDateChange" />
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="auditStatus">
+        <el-select v-model="searchForm.auditStatus" clearable placeholder="璇烽�夋嫨鐘舵��" @change="search">
+          <el-option label="寰呭鎵�" :value="0"></el-option>
+          <el-option label="瀹℃壒閫氳繃" :value="1"></el-option>
+          <el-option label="瀹℃壒鏈�氳繃" :value="2"></el-option>
+        </el-select>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <template v-slot:table-wrap>
+      <el-table
+          :height="tableHeightNew"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="name" label="闂ㄥ簵鍚嶇О" min-width="120px">
+          <template slot-scope="{row}">
+            <span class="link-name" @click="openShopInfo(row)">{{ row.name }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="companyType" label="绫诲瀷" min-width="80px">
+          <template slot-scope="{row}">
+            {{row.companyType == 1 ? '浼佷笟' : '涓汉'}}
+          </template>
+        </el-table-column>
+        <el-table-column prop="address" label="闂ㄥ簵鍦板潃" min-width="200px"></el-table-column>
+        <el-table-column prop="linkName" label="鑱旂郴浜�" min-width="100px"></el-table-column>
+        <el-table-column prop="linkPhone" label="鑱旂郴鐢佃瘽" min-width="120px"></el-table-column>
+        <el-table-column prop="createTime" label="鎻愪氦鏃ユ湡" min-width="160px"></el-table-column>
+        <el-table-column label="瀹℃壒鐘舵��" min-width="100px">
+          <template slot-scope="{row}">
+            <span style="color: yellow;" v-if="row.auditStatus == 0">寰呭鎵�</span>
+            <span style="color: #13ce66;" v-else-if="row.auditStatus == 1">瀹℃壒閫氳繃</span>
+            <span style="color: #ff4949;" v-else-if="row.auditStatus == 2">瀹℃壒鏈�氳繃</span>
+            <span style="color: #13ce66;" v-else-if="row.auditStatus == 3">宸叉敮浠樻娂閲�</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" min-width="150" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" v-if="row.auditStatus == 0" @click="handleAudit(row)">瀹℃牳</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+    <!-- 闂ㄥ簵璇︽儏 -->
+    <OperaShopInfoSeeWindow ref="operaShopInfoSeeWindow" />
+    <OperaShopApprovalWindow ref="operaShopApprovalWindow" @success="search" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaShopInfoSeeWindow from '@/components/business/OperaShopInfoSeeWindow'
+import OperaShopApprovalWindow from '@/components/business/OperaShopApprovalWindow'
+
+export default {
+  name: 'ShopQualificationList',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaShopInfoSeeWindow, OperaShopApprovalWindow },
+  data () {
+    return {
+      searchForm: {
+        name: '',
+        companyType: '',
+        address: '',
+        linkName: '',
+        linkPhone: '',
+        createTime: '',
+        createStartTime: '',
+        createEndTime: '',
+        auditStatusList: [0,1,2]
+      }
+    }
+  },
+  created () {
+    this.config({
+      module: '闂ㄥ簵鍒楄〃',
+      api: '/business/shopInfo',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    reset () {
+      this.searchForm = {
+        name: '',
+        companyType: '',
+        address: '',
+        linkName: '',
+        linkPhone: '',
+        createTime: '',
+        status: ''
+      }
+      this.search()
+    },
+    handleDateChange (val) {
+      this.searchForm.createStartTime = val ? val[0] : ''
+      this.searchForm.createEndTime = val ? val[1] : ''
+    },
+    handleAudit (row) {
+      this.$refs.operaShopApprovalWindow.open('闂ㄥ簵瀹℃壒', row)
+    },
+    openShopInfo (row) {
+      this.$refs.operaShopInfoSeeWindow.open('闂ㄥ簵淇℃伅', row)
+    }
+  }
+}
+</script>
+<style scoped>
+.link-name {
+  color: #2E68EC;
+  text-decoration: underline;
+  cursor: pointer;
+}
+</style>
\ No newline at end of file
diff --git a/admin/src/views/business/shopWithdrawList.vue b/admin/src/views/business/shopWithdrawList.vue
new file mode 100644
index 0000000..da28849
--- /dev/null
+++ b/admin/src/views/business/shopWithdrawList.vue
@@ -0,0 +1,156 @@
+<template>
+  <TableLayout :permissions="['business:withdrawalorders:query']">
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="闂ㄥ簵鍚嶇О" prop="shopName">
+        <el-input v-model="searchForm.shopName" clearable placeholder="璇疯緭鍏ラ棬搴楀悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐢宠鏃堕棿" prop="createTime1">
+        <el-date-picker type="daterange" v-model="searchForm.createTime1" clearable value-format="yyyy-MM-dd"
+                        range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" @change="handleDateChange" />
+      </el-form-item>
+      <el-form-item label="瀹℃壒鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨鐘舵��" @change="search">
+          <el-option label="鎻愮幇鐢宠涓�" :value="0"></el-option>
+          <el-option label="鎻愮幇鎴愬姛" :value="1"></el-option>
+          <el-option label="鎻愮幇澶辫触" :value="2"></el-option>
+        </el-select>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <template v-slot:table-wrap>
+      <div class="total-amount">
+        <span>绱鎻愮幇锛毬{ totalAmount }}</span>
+      </div>
+      <el-table
+        :height="tableHeightNew"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+      >
+        <el-table-column prop="shopName" label="闂ㄥ簵鍚嶇О" min-width="120px"></el-table-column>
+        <el-table-column prop="linkName" label="闂ㄥ簵鑱旂郴浜�" min-width="100px"></el-table-column>
+        <el-table-column prop="amount" label="鎻愮幇閲戦锛堝厓锛�" min-width="120px">
+          <template slot-scope="{row}">
+            <span class="amount">楼{{ row.amount / 100 }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="createTime" label="鐢宠鏃堕棿" min-width="160px"></el-table-column>
+        <el-table-column label="瀹℃牳鐘舵��" min-width="100px">
+          <template slot-scope="{row}">
+            <span :style="{ color: getStatusColor(row.status) }">
+              {{ getStatusText(row.status) }}
+            </span>
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" min-width="100" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="handleView(row)">鏌ョ湅</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      ></pagination>
+    </template>
+    <OperaWithdrawDetailWindow ref="operaWithdrawDetailWindow" @success="search" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaWithdrawDetailWindow from '@/components/business/OperaWithdrawDetailWindow'
+import { fetchList, getTotalAmount } from '@/api/business/shopWithdraw'
+
+export default {
+  name: 'ShopWithdrawList',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaWithdrawDetailWindow },
+  data () {
+    return {
+      totalAmount: '0.00',
+      searchForm: {
+        shopName: '',
+        createTime1: '',
+        createStartTime: '',
+        createEndTime: '',
+        status: ''
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/shopWithdraw',
+      'field.id': 'id'
+    })
+    this.loadTotalAmount()
+    this.search()
+  },
+  methods: {
+    loadTotalAmount () {
+      getTotalAmount({
+        capacity: 99999,
+        pageNum: 1,
+        model: {
+          shopName: this.searchForm.shopName,
+          createStartTime: this.searchForm.createStartTime,
+          createEndTime: this.searchForm.createEndTime,
+          status: this.searchForm.status
+        }
+      }).then(res => {
+        this.totalAmount = res / 100 || '0.00'
+      }).catch(e => {
+        this.$tip.apiFailed(e)
+      })
+    },
+    getStatusText (status) {
+      const map = { 0: '鎻愮幇鐢宠涓�', 1: '鎻愮幇鎴愬姛', 2: '鎻愮幇澶辫触' }
+      return map[status] || '-'
+    },
+    getStatusColor (status) {
+      const map = { 0: '#E6A23C', 1: '#67C23A', 2: '#F56C6C' }
+      return map[status] || '#606266'
+    },
+    handleDateChange (val) {
+      this.searchForm.createStartTime = val ? val[0] : ''
+      this.searchForm.createEndTime = val ? val[1] : ''
+      this.search()
+    },
+    reset () {
+      this.searchForm = {
+        shopName: '',
+        createTime1: '',
+        createStartTime: '',
+        createEndTime: '',
+        auditStatus: ''
+      }
+      this.search()
+    },
+    handleView (row) {
+      this.$refs.operaWithdrawDetailWindow.open('鎻愮幇璇︽儏', row)
+    }
+  }
+}
+</script>
+
+<style scoped>
+.total-amount {
+  padding: 15px 20px;
+  background: #f5f7fa;
+  border-radius: 8px;
+  margin-bottom: 15px;
+  font-size: 16px;
+  font-weight: bold;
+  color: #303133;
+}
+.amount {
+  color: #f56c6c;
+  font-weight: bold;
+}
+</style>
diff --git a/admin/src/views/business/storeList.vue b/admin/src/views/business/storeList.vue
index 5d5dd4e..f60485d 100644
--- a/admin/src/views/business/storeList.vue
+++ b/admin/src/views/business/storeList.vue
@@ -108,7 +108,7 @@
         createTime: '',
         createStartTime: '',
         createEndTime: '',
-        auditStatus: ''
+        auditStatus: 3
       }
     }
   },
@@ -130,7 +130,8 @@
         linkName: '',
         linkPhone: '',
         createTime: '',
-        status: ''
+        status: '',
+        auditStatus: 3
       }
       this.search()
     },
diff --git a/admin/src/views/business/sysParams.vue b/admin/src/views/business/sysParams.vue
new file mode 100644
index 0000000..5fbf631
--- /dev/null
+++ b/admin/src/views/business/sysParams.vue
@@ -0,0 +1,169 @@
+<template>
+  <TableLayout>
+    <template v-slot:table-wrap>
+      <div class="params-container">
+      <div class="section">
+        <h3 class="section-title">鍙告満瑙勫垯</h3>
+        <div class="form-item">
+          <span class="label">鍙告満姣忔棩鍙彇娑堣鍗曟鏁颁负</span>
+          <el-input-number v-model="form.driverDailyCancelLimit" :min="0" controls-position="right"></el-input-number>
+          <span class="label">娆★紝瓒呰繃娆℃暟鍚庯紝浠婃棩涓嶅彲鎶㈠崟</span>
+        </div>
+        <div class="form-item">
+          <span class="label">鍙告満鏈�澶у悓鏃惰繘琛屼腑璁㈠崟鏁伴噺涓�</span>
+          <el-input-number v-model="form.orderAcceptLimit" :min="0" controls-position="right"></el-input-number>
+          <span class="label">涓紝瓒呰繃璇ユ暟閲忎笉鍏佽鎶㈠崟<span class="red">锛堝嵆璁㈠崟鐘舵��=寰呭彇浠�/閰嶉�佷腑锛�</span></span>
+        </div>
+        <div class="form-item">
+          <span class="label">瀹㈡埛涓嬪崟鍚庢瘡闅�</span>
+          <el-input-number v-model="form.orderAcceptLimit" :min="0" controls-position="right"></el-input-number>
+          <span class="label">鍒嗛挓鏈湁鍙告満鎶㈠崟锛岀郴缁熸帹閫佸钩鍙扮鐞嗗憳</span>
+          <el-input-number v-model="form.orderAcceptLimit" :min="0" controls-position="right"></el-input-number>
+          <span class="label">鎻愰啋鍔犳�ユ淳鍗曞鐞嗐��</span>
+        </div>
+      </div>
+
+      <div class="section">
+        <h3 class="section-title">璁㈠崟瑙勫垯</h3>
+        <div class="form-item">
+          <span class="label">瓒呮椂</span>
+          <el-input-number v-model="form.autoCancelTime" :min="0" controls-position="right"></el-input-number>
+          <span class="label">鍒嗛挓鏈敮浠橈紝璁㈠崟鑷姩鍙栨秷</span>
+        </div>
+        <div class="form-item">
+          <span class="label">鎬ラ�熻揪璁㈠崟璁′环绯绘暟</span>
+          <el-input-number v-model="form.urgentCoefficient" :min="0" :precision="2" controls-position="right"></el-input-number>
+        </div>
+        <div class="form-item">
+          <span class="label">鐗╁搧淇濊垂姣斾緥</span>
+          <el-input-number v-model="form.insuranceRate" :min="0" :precision="2" controls-position="right"></el-input-number>
+          <span class="desc">%</span>
+        </div>
+        <div class="form-item">
+          <span class="label">寮傚湴瀵勯�佹ā寮忎笅锛岃嫢鐗╁搧宸查�佽揪锛岃�屽鎴峰綋澶╂湭鍙栦欢锛屽垯鍚庣画绯荤粺鎸�</span>
+          <el-input-number v-model="form.unpickedDiscount" :min="0" :precision="2" controls-position="right"></el-input-number>
+          <span class="desc">鎶樻墸绯绘暟璁$畻</span>
+        </div>
+        <div class="form-item">
+          <span class="label">璁㈠崟閫佽揪鍚庨粯璁�</span>
+          <el-input-number v-model="form.autoConfirmReceipt" :min="0" controls-position="right"></el-input-number>
+          <span class="label">澶╁悗鑷姩纭鏀惰揣<span class="red">锛堜粎闄愭敹浠跺湴鍧�涓嶆槸鏈嶅姟鐐圭殑鎯呭喌锛�</span></span>
+        </div>
+        <div class="form-item">
+          <span class="label">璁㈠崟瀹屾垚鍚�</span>
+          <el-input-number v-model="form.settlementDate" :min="0" controls-position="right"></el-input-number>
+          <span class="label">澶╁悗绯荤粺缁撶畻璁㈠崟锛屽苟缁欎笌鍙備笌瑙掕壊鎸夋瘮渚嬪垎鎴�</span>
+        </div>
+      </div>
+
+      <div class="footer">
+        <el-button type="primary" @click="handleSave" :loading="isWorking.save">淇濆瓨</el-button>
+      </div>
+    </div>
+    </template>
+  </TableLayout>
+</template>
+
+<script>
+import TableLayout from '@/layouts/TableLayout'
+import { getParams, saveParams } from '@/api/business/sysParams'
+
+export default {
+  name: 'SysParams',
+  components: { TableLayout },
+  data () {
+    return {
+      form: {
+        autoCancelTime: '',
+        autoConfirmReceipt: '',
+        driverDailyCancelLimit: '',
+        insuranceRate: '',
+        orderAcceptLimit: '',
+        settlementDate: '',
+        unpickedDiscount: '',
+        urgentCoefficient: ''
+      },
+      isWorking: {
+        save: false
+      }
+    }
+  },
+  created () {
+    this.loadData()
+  },
+  methods: {
+    loadData () {
+      getParams().then(res => {
+        this.form = {
+          autoCancelTime: res.autoCancelTime || '',
+          autoConfirmReceipt: res.autoConfirmReceipt || '',
+          driverDailyCancelLimit: res.driverDailyCancelLimit || '',
+          insuranceRate: res.insuranceRate || '',
+          orderAcceptLimit: res.orderAcceptLimit || '',
+          settlementDate: res.settlementDate || '',
+          unpickedDiscount: res.unpickedDiscount || '',
+          urgentCoefficient: res.urgentCoefficient || ''
+        }
+      }).catch(e => {
+        this.$tip.apiFailed(e)
+      })
+    },
+    handleSave () {
+      this.isWorking.save = true
+      saveParams(this.form).then(res => {
+        this.$tip.apiSuccess(res || '淇濆瓨鎴愬姛')
+      }).catch(e => {
+        this.$tip.apiFailed(e)
+      }).finally(() => {
+        this.isWorking.save = false
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.params-container {
+  padding: 20px;
+}
+.section {
+  margin-bottom: 40px;
+}
+.section-title {
+  font-size: 16px;
+  font-weight: bold;
+  color: #303133;
+  margin-bottom: 20px;
+  padding-left: 10px;
+  border-left: 4px solid #2E68EC;
+}
+.form-item {
+  display: flex;
+  align-items: center;
+  margin-bottom: 20px;
+  flex-wrap: wrap;
+}
+.form-item .label {
+  color: #606266;
+  font-size: 14px;
+  white-space: nowrap;
+}
+.form-item .desc {
+  color: #909399;
+  font-size: 14px;
+  margin-left: 10px;
+}
+.form-item .red {
+  color: #f56c6c;
+}
+.form-item /deep/ .el-input-number {
+  margin: 0 10px;
+}
+.form-item /deep/ .el-input-number .el-input__inner {
+  text-align: center;
+}
+.footer {
+  padding-top: 20px;
+  border-top: 1px solid #eee;
+}
+</style>
diff --git a/admin/src/views/business/vehicleType.vue b/admin/src/views/business/vehicleType.vue
new file mode 100644
index 0000000..c28dab4
--- /dev/null
+++ b/admin/src/views/business/vehicleType.vue
@@ -0,0 +1,99 @@
+<template>
+  <TableLayout :permissions="['business:category:query']">
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      <el-form-item label="鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" clearable placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <template v-slot:table-wrap>
+      <ul class="toolbar">
+        <li><el-button type="primary" @click="$refs.operaGoodsCategoryEditWindow.open('鏂板缓鐗╁搧绛夌骇', null, 1)" icon="el-icon-plus">鏂板缓</el-button></li>
+      </ul>
+      <el-table
+        :height="tableHeightNew"
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        stripe
+      >
+        <el-table-column prop="id" label="ID" min-width="80px"></el-table-column>
+        <el-table-column prop="name" label="绫诲瀷鍚嶇О" min-width="120px"></el-table-column>
+        <el-table-column prop="detail" label="閫氳鏂瑰紡" min-width="200px">
+          <template slot-scope="{row}">
+            {{ row.otherField === 'driving' ? '鏈哄姩杞�' : '闈炴満鍔ㄨ溅' }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="sortnum" label="鍒嗙被鎺掑簭" min-width="100px"></el-table-column>
+        <el-table-column label="鐘舵��" min-width="80px">
+          <template slot-scope="{row}">
+            <el-switch
+              @change="handleStatusChange($event, row)"
+              v-model="row.status"
+              active-color="#13ce66"
+              inactive-color="#ff4949"
+              :active-value="0"
+              :inactive-value="1"
+            ></el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" min-width="150" fixed="right">
+          <template slot-scope="{row}">
+            <el-button type="text" @click="handleEdit(row)">缂栬緫</el-button>
+            <el-button type="text" @click="deleteById(row.id)">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      ></pagination>
+    </template>
+    <OperaGoodsCategoryEditWindow ref="operaGoodsCategoryEditWindow" @success="search" />
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import OperaGoodsCategoryEditWindow from '@/components/business/OperaGoodsCategoryEditWindow'
+import { updateStatus } from '@/api/business/goodsCategory'
+
+export default {
+  name: 'VehicleType',
+  extends: BaseTable,
+  components: { TableLayout, Pagination, OperaGoodsCategoryEditWindow },
+  data () {
+    return {
+      searchForm: {
+        name: '',
+        type: 1
+      }
+    }
+  },
+  created () {
+    this.config({
+      api: '/business/goodsCategory',
+      'field.id': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    handleEdit (row) {
+      this.$refs.operaGoodsCategoryEditWindow.open('缂栬緫鐗╁搧绛夌骇', row, 1)
+    },
+    handleStatusChange (val, row) {
+      updateStatus({ id: row.id, status: val }).then(res => {
+        this.$tip.apiSuccess(res || '淇敼鎴愬姛')
+      }).catch(e => {
+        row.status = val === 1 ? 0 : 1
+        this.$tip.apiFailed(e)
+      })
+    }
+  }
+}
+</script>
diff --git a/small-program/main.js b/small-program/main.js
index a7204b7..32f5de1 100644
--- a/small-program/main.js
+++ b/small-program/main.js
@@ -14,13 +14,9 @@
 	Vue.prototype.$isResolve = resolve;
 })
 
-// Vue.prototype.$baseUrl = 'http://192.168.1.54:10011/'
-// Vue.prototype.$baseUrl = 'http://192.168.1.54:10011/'
-
 // Vue.prototype.$baseUrl = 'https://test.doumee.cn/jinkuai_web/'
 Vue.prototype.$baseUrl = 'https://jinkuai.832smartfarm.com/jinkuai_web/'
-import shareMixin from '@/utils/shareMixin'
-Vue.mixin(shareMixin)
+
 const app = new Vue({
 	store,
 	...App
diff --git a/small-program/pages.json b/small-program/pages.json
index 6b9adf1..aa1d901 100644
--- a/small-program/pages.json
+++ b/small-program/pages.json
@@ -11,13 +11,6 @@
 			}
 		},
 		{
-			"path": "pages/demand-hall/demand-hall",
-			"style": {
-				"navigationBarTitleText": "鎴戠殑璁㈠崟",
-				"navigationStyle": "custom"
-			}
-		},
-		{
 			"path": "pages/mine/mine",
 			"style": {
 				"navigationBarTitleText": "鎴戠殑",
@@ -25,137 +18,18 @@
 			}
 		},
 		{
-			"path": "pages/seleCity/seleCity",
+			"path": "pages/itinerary/itinerary",
 			"style": {
-				"navigationBarTitleText": "鍩庡競閫夋嫨"
+				"navigationBarTitleText": ""
 			}
 		},
 		{
-			"path" : "pages/using-workers/using-workers",
-			"style" : 
-			{
-				"navigationBarTitleText" : "閲囨憳宸�"
-			}
-		},
-		{
-			"path" : "pages/sorting/sorting",
-			"style" : 
-			{
-				"navigationBarTitleText" : "鍒嗘嫞宸�"
-			}
-		},
-		{
-			"path" : "pages/packaging-worker/packaging-worker",
-			"style" : 
-			{
-				"navigationBarTitleText" : "鍖呰宸�"
-			}
-		},
-		{
-			"path" : "pages/success/success",
-			"style" : 
-			{
-				"navigationBarTitleText" : "鍙戝崟鎴愬姛"
-			}
-		},
-		{
-			"path" : "pages/freight/freight",
-			"style" : 
-			{
-				"navigationBarTitleText" : "杩愯揣"
-			}
-		},
-		{
-			"path" : "pages/order-details/order-details",
-			"style" : 
-			{
-				"navigationBarTitleText" : "璁㈠崟璇︽儏"
-			}
-		},
-		{
-			"path" : "pages/freight-order/freight-order",
-			"style" : 
-			{
-				"navigationBarTitleText" : "璁㈠崟璇︽儏"
-			}
-		},
-		{
-			"path" : "pages/order-food/order-food",
-			"style" : 
-			{
-				"navigationBarTitleText" : "璁㈠崟璇︽儏"
-			}
-		},
-		{
-			"path" : "pages/login/login",
-			"style" : 
-			{
-				"navigationBarTitleText" : "鐧诲綍椤�"
-			}
-		},
-		{
-			"path" : "pages/balance-details/balance-details",
-			"style" : 
-			{
-				"navigationBarTitleText" : "浣欓鏄庣粏"
-			}
-		}, 
-		
-		{
-			"path" : "pages/rich-text-page/rich-text-page",
-			"style" : 
-			{
-				"navigationBarTitleText" : "瀵屾枃鏈〉闈�"
+			"path": "pages/message/message",
+			"style": {
+				"navigationBarTitleText": "娑堟伅"
 			}
 		}
-	], 
-	"subPackages": [{ 
-		"root": "packageA", // 鍒嗗寘鐨勬牴鐩綍
-		"name": "packageA", // 鍒嗗寘鐨勬牴鐩綍
-	    "pages":[
-			{
-				"path" : "pages/withdrawal/withdrawal",
-				"style" : 
-				{
-					"navigationBarTitleText" : "鎻愮幇"
-				}
-			},
-			{
-				"path" : "pages/withdrawal-successful/withdrawal-successful",
-				"style" : 
-				{
-					"navigationBarTitleText" : "鎻愮幇鎴愬姛"
-				}
-			},  
-			{
-				"path" : "pages/set-up/set-up",
-				"style" : 
-				{
-					"navigationBarTitleText" : "璁剧疆"
-				}
-			},
-			 {
-				"path" : "pages/employment-certification/employment-certification",
-				"style" : 
-				{
-					"navigationBarTitleText" : "鐢ㄥ伐璁よ瘉"
-				}
-			},
-			{
-				"path" : "pages/certification-results/certification-results",
-				"style" : 
-				{
-					"navigationBarTitleText" : "璁よ瘉缁撴灉"
-				}
-			}
-		]
-	}],
-	"preloadRule":{
-		"pages/mine/mine":{
-			"network": "all",
-			"packages": ["packageA"]
-		}
-	},
+	],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
 		"navigationBarTitleText": "",
@@ -170,15 +44,21 @@
 		"list": [
 			{
 				"pagePath": "pages/index/index",
-				"iconPath": "static/icon/nav_home_sel@2x (1).png",
+				"iconPath": "static/icon/nav_home@2x.png",
 				"selectedIconPath": "static/icon/nav_home_sel@2x.png",
 				"text": "棣栭〉"
 			},
 			{
-				"pagePath": "pages/demand-hall/demand-hall",
-				"iconPath": "static/icon/nav_order@2x.png",
-				"selectedIconPath": "static/icon/nav_order_sel@2x.png",
-				"text": "璁㈠崟"
+				"pagePath": "pages/itinerary/itinerary",
+				"iconPath": "static/icon/nav_xingcheng@2x.png",
+				"selectedIconPath": "static/icon/nav_xingcheng_sel@2x.png",
+				"text": "琛岀▼"
+			},
+			{
+				"pagePath": "pages/message/message",
+				"iconPath": "static/icon/nav_xiaoxi@2x.png",
+				"selectedIconPath": "static/icon/nav_xiaoxi_sel@2x.png",
+				"text": "娑堟伅"
 			},
 			{
 				"pagePath": "pages/mine/mine",
diff --git a/small-program/pages/balance-details/balance-details.vue b/small-program/pages/balance-details/balance-details.vue
deleted file mode 100644
index 7cabd71..0000000
--- a/small-program/pages/balance-details/balance-details.vue
+++ /dev/null
@@ -1,218 +0,0 @@
-<template>
-	<view class="mx">
-		<view class="index-search" :style="{ top: (statusbarHeight + navHeight) + 'px' }">
-			<view :class="item.id === type ? 'index-search-item active' : 'index-search-item'" v-for="(item, index) in list" :key="index" @click="changeType(item.id,item.optType)">
-				<text>{{item.name}}</text>
-				<view class="index-search-item-x" v-if="item.id === type"></view>
-			</view>
-		</view>
-		<view class="mx-list">
-			<view v-if="dataList && dataList.length" class="mx-list-item" v-for="(item, index) in dataList" :key="index">
-				<view class="mx-list-item-a">
-					<text>{{item.remark || ''}}</text>
-					<text>{{((item.optType||1) * (item.amount||0)/100).toFixed(2) }}鍏�</text>
-				</view>
-				<view class="mx-list-item-b">
-					<text>浜ゆ槗鍙凤細{{item.transactionNo || '-'}}</text>
-					<text v-if="item.status ==0">宸插埌璐�</text>
-					<text v-if="item.status ==1">浜ゆ槗澶辫触</text>
-					<text v-if="item.status ==2" class="redtxt">澶勭悊涓�</text>
-				</view>
-				<view class="mx-list-item-c">
-					{{item.createTime}}
-				</view>
-			</view>
-			<view class="mx-list-item-d">
-				<text v-if="!hasMore">{{loadTxt}}</text> 
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default { 
-		data() {
-			return {
-				type: 1,
-				list: [
-					{ name: '鍏ㄩ儴', id: 1, optType:null },
-					{ name: '鏀跺叆', id: 2, optType:1 },
-					{ name: '鏀嚭', id: 3 , optType:-1}
-				],
-				searchForm:{
-					optType:null
-				},
-				capacity:10,
-				page:1,
-				hasMore: true,
-				dataList:[],
-				changing1:false,
-				loadTxt:'宸插姞杞藉叏閮�'
-			};
-		},
-		onReachBottom() {
-			if(this.hasMore){
-				this.getPageData(this.page+1)
-			}
-			console.log("鎴戣瑙﹀彂浜�")
-		},
-		onShow(){
-			this.changeType(1,'')  
-		},
-		methods: {
-			changeType(id,optType) {
-				if(this.changing1){
-					return
-				}
-				this.type = id
-				this.searchForm.optType = optType
-				this.getPageData(1)
-			},
-			getPageData(page){
-				this.page = page
-				if(this.page ==1){
-					this.hasMore=true
-					this.dataList=[]
-				}
-				if(this.changing1){
-					return
-				}
-				this.changing1 = true
-				var that = this
-				var param ={
-					capacity:this.capacity,
-					page : this.page,
-					model:{
-						optType:this.searchForm.optType
-					}
-				}
-				that.$u.api.revenuePage(param)
-				.then(res =>{
-					if(res.code ===200) {
-						if(res.data && res.data.records && res.data.records.length && res.data.page == that.page) { 
-							that.dataList = [...that.dataList,...(res.data.records)]
-						} 
-						if(that.dataList.length == (res.data.total||0)){
-							that.hasMore = false
-						}
-						if(res.data.total ==0){
-							that.loadTxt='鏈煡璇㈠埌璁板綍'
-						}else{
-							that.loadTxt='宸插姞杞藉叏閮�'
-						}
-					} 
-				 }).finally(() => {
-					that.changing1 = false
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.mx {
-		width: 100%;
-		.mx-list {
-			width: 100%;
-			padding: 0 30rpx;
-			box-sizing: border-box;
-			.mx-list-item-d{
-				padding: 20px;
-				width: 100%;
-				text-align: center;
-				font-size: 24rpx;
-				color: #999999;
-			}
-			.mx-list-item {
-				width: 100%;
-				height: 208rpx;
-				display: flex;
-				flex-direction: column;
-				justify-content: space-evenly;
-				border-bottom: 1rpx solid #E5E5E5;
-				
-				.mx-list-item-a {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					text {
-						&:nth-child(1) {
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #222222;
-						}
-						&:nth-child(2) {
-							font-weight: 600;
-							font-size: 30rpx;
-							color: #222222;
-						}
-					}
-				}
-				.mx-list-item-b {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					text {
-						font-weight: 400;
-						font-size: 26rpx;
-						color: #999999;
-					}
-				}
-				.mx-list-item-c {
-					font-weight: 400;
-					font-size: 26rpx;
-					color: #999999;
-				}
-			}
-		}
-		.index-search {
-			width: 100%;
-			height: 100rpx;
-			padding: 0 30rpx;
-			position: sticky;
-			left: 0;
-			top: 0;
-			z-index: 9;
-			box-sizing: border-box;
-			background-color: #FFFFFF;
-			display: flex;
-			align-items: center;
-			border-bottom: 1rpx solid #E5E5E5;
-			.active {
-				text {
-					font-weight: 500 !important;
-					font-size: 32rpx !important;
-					color: #222222 !important;
-				}
-			}
-			.index-search-item {
-				flex: 1;
-				height: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				position: relative;
-				text {
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #666666;
-				}
-				.index-search-item-x {
-					position: absolute;
-					bottom: 0;
-					left: 50%;
-					transform: translate(-50%, 0);
-					width: 40rpx;
-					height: 6rpx;
-					background: #00BC12;
-					border-radius: 3rpx;
-				}
-			}
-		}
-	}
-	.redtxt{
-		color: #FF0000 !important;
-	}
-</style>
diff --git a/small-program/pages/demand-hall/demand-hall.vue b/small-program/pages/demand-hall/demand-hall.vue
deleted file mode 100644
index 49f3a7c..0000000
--- a/small-program/pages/demand-hall/demand-hall.vue
+++ /dev/null
@@ -1,867 +0,0 @@
-<template>
-	<view class="index">
-		<view class="index-j-head">
-			<view :style="{ width: '100%', height: statusbarHeight + 'px' }"></view>
-			<view class="index-c-title" :style="{ height: navHeight + 'px' }">
-				<text>鎴戠殑璁㈠崟</text>
-			</view>
-		</view>
-		<!-- 鏈櫥褰� -->
-		<view class="index-wu" v-if="!isLogin">
-			<image src="/static/icon/default_login@2x.png" mode="widthFix"></image>
-			<text>鎮ㄨ繕娌℃湁鐧诲綍锛岃鐧诲綍鍚庢煡鐪嬭鍗�</text>
-			<button @click="toLogin">鐧诲綍</button>
-		</view>
-		
-		<!-- 宸茬櫥闄� -->
-		<template v-else>
-			<!-- 鍙戝崟鏂� -->
-			<view class="index-labs" v-if="typeViewId === 0" :style="{ top: statusbarHeight + navHeight + 'px' }">
-				<scroll-view scroll-x class="scroll-view_H" :scroll-into-view="'view'+status">
-					<view :class=" item.id === status ? 'index-labs-row active' : 'index-labs-row'" v-for="(item, index) in list1" :id="'view'+item.id" :key="item.id" @click="clickOrderType(item.id)">
-						{{item.name}}
-						<view class="index-labs-row-x" v-if=" item.id === status"></view>
-					</view>
-				</scroll-view>
-			</view>
-			<!-- 鎺ュ崟鏂� -->
-			<view class="index-labs" v-if="typeViewId === 1" :style="{ top: statusbarHeight + navHeight + 'px' }">
-				<scroll-view scroll-x class="scroll-view_H" :scroll-into-view="'view'+status">
-					<view :class=" item.id === status ? 'index-labs-row active' : 'index-labs-row'" v-for="(item, index) in list" :id="'view'+item.id" :key="item.id" @click="clickOrderType(item.id)">
-						{{item.name}}
-						<view class="index-labs-row-x" v-if=" item.id === status "></view>
-					</view>
-				</scroll-view>
-			</view>
-			<!-- 鍙戝崟鏂� -->
-			<view class="index-list" v-if="typeViewId === 0">
-				<view class="index-list-wu" v-if="orderList.length === 0">
-					<text>宸插姞杞藉叏閮ㄦ暟鎹�</text>
-				</view>
-				<view class="index-list-item" v-for="(item, index) in orderList" :key="index" @click="jumpDesc(item)" v-else>
-					<view class="index-list-item-head">
-						<view class="index-list-item-head-l">
-							<view class="xoam"></view>
-							<text v-if="item.type === 0 && item.workType === 0">鐢ㄥ伐鍗� - 閲囨憳宸�</text>
-							<text v-else-if="item.type === 0 && item.workType === 1">鐢ㄥ伐鍗� - 鍒嗘嫞宸�</text>
-							<text v-else-if="item.type === 0 && item.workType === 2">鐢ㄥ伐鍗� - 鍖呰宸�</text>
-							<text v-else-if="item.type === 1">杩愯揣鍗� - {{item.categoryName}}</text>
-							<text v-else-if="item.type === 2">璁㈤鍗�</text>
-						</view>
-						<view class="index-list-item-head-r" v-if="item.status === 0 || item.status === 5">寰呮敮浠�</view>
-						<view class="index-list-item-head-r" v-if="item.status === 1">寰呮帴鍗�</view>
-						<view class="index-list-item-head-r" v-if="item.status === 2">宸叉帴鍗�</view>
-						<view class="index-list-item-head-r" v-if="item.status === 3">杩涜涓�</view>
-						<view class="index-list-item-head-r hui" v-if="item.status === 4 && item.commentStatus !== 0">宸插畬鎴�</view>
-						<view class="index-list-item-head-r hui" v-if="item.status === 99">宸插彇娑�</view>
-						<view class="index-list-item-head-r" v-if="item.status === 4 && item.commentStatus === 0">寰呰瘎浠�</view>
-					</view>
-					<view class="index-list-item-info" v-if="item.type === 0 && item.workType === 0">
-						{{item.categoryName}}锝渰{item.priceNum1}}鏂�
-					</view>
-					<view class="index-list-item-info" v-if="item.type === 0 && item.workType === 1">
-						{{item.categoryName}}锝渰{item.priceNum2}}浜�
-					</view>
-					<view class="index-list-item-info" v-if="item.type === 0 && item.workType === 2&& item.carType === 0">
-						{{item.categoryName}}锝渰{item.priceNum1}}澶� | {{item.priceNum2}}浜�
-					</view>
-					<view class="index-list-item-info" v-if="item.type === 0 && item.workType === 2&& item.carType === 1">
-						{{item.categoryName}}锝渰{item.priceNum1}}灏忔椂 | {{item.priceNum2}}浜�
-					</view>
-					<view class="index-list-item-info" v-if="item.type === 0 && item.workType === 2&& item.carType === 2">
-						{{item.categoryName}}锝渰{item.priceNum1}}鏂� | {{item.priceNum2}}浜�
-					</view>
-					<view class="index-list-item-info" v-if="item.type === 1">
-						{{item.carUnit}} | {{item.transportTypeName}} | {{item.transportNum}}{{item.transportUnit}}锝滅敤杞{item.priceNum1}}{{item.carType === 0?"澶�":"娆�"}}
-					</view>
-					<view class="index-list-item-info" v-if="item.type === 2">
-						{{item.wayInfoCopy}}
-					</view>
-					<view class="address" v-if="item.type === 1">
-						<view class="address-xian"></view>
-						<view class="address-row" v-for="(address, i) in item.wayInfo" :key="i">
-							<image src="/static/icon/ic_qidian@2x.png" mode="widthFix" v-if="i === 0"></image>
-							<image src="/static/icon/ic_jingguo@2x.png" mode="widthFix" v-else-if="i !== 0 && i !== item.wayInfo.length - 1"></image>
-							<image src="/static/icon/ic_zhongdian@2x.png" mode="widthFix" v-else-if="i === item.wayInfo.length - 1"></image>
-							<text>{{address.location}}</text>
-						</view>
-					</view>
-					<template v-if="[0, 2].includes(item.type)">
-						<view class="index-list-item-dz">
-							<image src="/static/icon/order_ic_location@2x.png" mode="widthFix"></image>
-							<text>{{item.location}}</text>
-						</view>
-						<view class="index-list-item-dz">
-							<image src="/static/icon/order_ic_time@2x.png" mode="widthFix"></image>
-							<text>{{item.startDate}} 鑷� {{item.endDate}}锛坽{item.totalDays}}澶╋級</text>
-						</view>
-					</template>
-					<view class="index-list-item-price"> 
-						<text v-if="item.status==4 || item.type==2">宸叉敮浠橈細</text>
-						<text v-if="item.status!=4&& item.type!=2">棰勪及锛�</text>
-						<text>楼{{item.payAccount / 100}}</text>
-					</view>
-					<view class="eidt">
-						<view>
-							<view class="eidt-tips" v-if="item.status === 2 && item.isUpdate == 1"><text>宸蹭慨鏀癸紝寰呮帴鍗曟柟纭</text></view>
-							<view class="eidt-tips" v-if="item.status === 5">
-								<image src="/static/icon/ic_tip@2x.png" mode="widthFix"></image>
-								<text>鎺ュ崟鏂瑰凡纭璐圭敤锛岃鏀粯</text>
-							</view>
-					 	</view>
-						<view class="eidt-right">
-							<view class="eidt-close" v-if="[0,1,2].includes(item.status)" @click.stop="orderId = item.id, show = true">鍙栨秷璁㈠崟</view>
-							<view class="eidt-phone" v-if="[2].includes(item.status)">鑱旂郴甯堝倕</view>
-							<view class="eidt-phone" v-if="item.status === 4 && item.commentStatus === 0">璇勪环璁㈠崟</view>
-							<view class="eidt-btn" v-if="[0,1,2].includes(item.status) && item.type !== 2 &&  item.isUpdate!=1" @click.stop="jumpEdit(item)">淇敼璁㈠崟</view>
-							<view class="eidt-btn" v-if="(item.type  == 2 && item.status === 0)" @click.stop="jumpDesc(item,1)">缁х画鏀粯</view>
-							<!-- <view class="eidt-btn" v-if="item.status === 2" @click.stop="startJobs(item.id)">寮�濮嬩綔涓�</view> -->
-							<view class="eidt-btn" v-if="item.type != 2 && item.status === 5" @click.stop="jumpDesc(item,2)">绔嬪嵆鏀粯</view>
-							<view class="eidt-btn" v-if="item.type == 2 && item.status === 3" @click.stop="jumpDesc(item)">瀹屾垚浣滀笟</view>
-						</view>
-					</view>
-				</view>
-			</view>
-			<!-- 鎺ュ崟鏂� -->
-			<view class="index-list" v-if="typeViewId === 1">
-				<view class="index-list-wu" v-if="orderList.length === 0">
-					<text>宸插姞杞藉叏閮ㄦ暟鎹�</text>
-				</view>
-				<view class="index-list-item" v-for="(item, index) in orderList" :key="index" @click="jumpDesc(item)" v-else>
-					<view class="index-list-item-head">
-						<view class="index-list-item-head-l">
-							<view class="xoam"></view>
-							<text v-if="item.type === 0 && item.workType === 0">鐢ㄥ伐鍗� - 閲囨憳宸�</text>
-							<text v-else-if="item.type === 0 && item.workType === 1">鐢ㄥ伐鍗� - 鍒嗘嫞宸�</text>
-							<text v-else-if="item.type === 0 && item.workType === 2">鐢ㄥ伐鍗� - 鍖呰宸�</text>
-							<text v-else-if="item.type === 1">杩愯揣鍗� - {{item.categoryName}}</text>
-							<text v-else-if="item.type === 2">璁㈤鍗�</text>
-							<view class="tips" v-if="item.acceptType === 1">娲惧崟</view>
-							<view class="tips1" v-if="item.acceptType === 0">鎶㈠崟</view>
-						</view>
-						<view class="index-list-item-head-r" v-if="item.status === 0 || item.status === 5">寰呮敮浠�</view>
-						<view class="index-list-item-head-r" v-if="item.status === 2">宸叉帴鍗�</view>
-						<view class="index-list-item-head-r" v-if="item.status === 3">杩涜涓�</view>
-						<view class="index-list-item-head-r hui" v-if="item.status === 4">宸插畬鎴�</view>
-						<view class="index-list-item-head-r hui" v-if="item.status === 99">宸插彇娑�</view>
-					</view>
-					<view class="index-list-item-info" v-if="item.type === 0 && item.workType === 0">
-						{{item.categoryName}}锝渰{item.priceNum1}}鏂�
-					</view>
-					<view class="index-list-item-info" v-if="item.type === 0 && item.workType === 1">
-						{{item.categoryName}}锝渰{item.priceNum2}}浜�
-					</view>
-					<view class="index-list-item-info" v-if="item.type === 0 && item.workType === 2&& item.carType === 0">
-						{{item.categoryName}}锝渰{item.priceNum1}}澶� 锝渰{item.priceNum2}}浜�
-					</view>
-					<view class="index-list-item-info" v-if="item.type === 0 && item.workType === 2&& item.carType === 1">
-						{{item.categoryName}}锝渰{item.priceNum1}}灏忔椂 锝渰{item.priceNum2}}浜�
-					</view>
-					<view class="index-list-item-info" v-if="item.type === 0 && item.workType === 2&& item.carType === 2">
-						{{item.categoryName}}锝渰{item.priceNum1}}鏂� 
-					</view> 
-					<view class="index-list-item-info" v-if="item.type === 1">
-						{{item.carUnit}} | {{item.transportTypeName}} | {{item.transportNum}}{{item.transportUnit}}锝滅敤杞{item.priceNum1}}{{item.carType === 0?"澶�":"娆�"}}
-					</view>
-					<view class="index-list-item-info" v-if="item.type === 2">
-						{{item.wayInfoCopy}}
-					</view>
-					<view class="address" v-if="item.type === 1">
-						<view class="address-xian"></view>
-						<view class="address-row" v-for="(address, i) in item.wayInfo" :key="i">
-							<image src="/static/icon/ic_qidian@2x.png" mode="widthFix" v-if="i === 0"></image>
-							<image src="/static/icon/ic_jingguo@2x.png" mode="widthFix" v-else-if="i !== 0 && i !== item.wayInfo.length - 1"></image>
-							<image src="/static/icon/ic_zhongdian@2x.png" mode="widthFix" v-else-if="i === item.wayInfo.length - 1"></image>
-							<text>{{address.location}}</text>
-						</view>
-					</view>
-					<template v-if="[0, 2].includes(item.type)">
-						<view class="index-list-item-dz">
-							<image src="/static/icon/order_ic_location@2x.png" mode="widthFix"></image>
-							<text>{{item.location}}</text>
-						</view>
-						<view class="index-list-item-dz">
-							<image src="/static/icon/order_ic_time@2x.png" mode="widthFix"></image>
-							<text>{{item.startDate}} 鑷� {{item.endDate}}锛坽{item.priceNum1}}澶╋級</text>
-						</view>
-					</template>
-					<view class="index-list-item-price">
-						<text v-if="item.status==4">宸叉敮浠橈細</text>
-						<text v-if="item.status!=4">棰勪及锛�</text>
-						<text>楼{{item.payAccount / 100}}</text>
-					</view>
-					<view class="eidt">
-						<view class="eidt-tips" v-if="item.isUpdate === 1">
-							<image src="/static/icon/ic_tip@2x.png" mode="widthFix"></image>
-							<text>璁㈠崟宸蹭慨鏀�</text>
-						</view>
-						<view class="eidt-tips" v-else></view>
-						
-						<view class="eidt-right">
-							<view class="eidt-close" v-if="item.status === 2" @click.stop="orderId = item.id, show = true">鍙栨秷璁㈠崟</view>
-							<view class="eidt-phone" v-if="[2,3].includes(item.status)" @click.stop="phoneCall(item.linkPhone)">鑱旂郴涓氫富</view>
-						</view>
-					</view>
-				</view>
-			</view>
-		</template>
-		
-		<u-modal
-			title="娓╅Θ鎻愮ず"
-			:show="show"
-			closeOnClickOverlay
-			showCancelButton
-		>
-			<view class="slot-content">
-				纭鍙栨秷璁㈠崟鍚楋紵
-			</view>
-			<view slot="confirmButton" style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
-				<view class="btn1" @click="show = false">鎴戝啀鎯虫兂</view>
-				<view class="btn2" @click="cancelOrder">纭鍙栨秷</view>
-			</view>
-		</u-modal>
-		
-	</view>
-</template>
-
-<script>
-	import { mapState } from 'vuex'
-	export default {
-		computed: {
-			...mapState(['navHeight', 'statusbarHeight','userInfo','token','openid', 'latitude', 'longitude'])
-		},
-		async onShow(options) {
-			var flag = getApp().globalData.orderStatus
-			console.log(getApp().globalData,"=====================================")
-			// this.status = ''
-			// this.commentStatus=''
-			// status: this.status === 5 ? 4 : this.status,
-			// commentStatus: this.status === 5 ? 0 : '',
-			if(flag =='1'){//鍙戝崟鏂瑰緟鎺ュ崟
-				this.status = 1				
-			}else if(flag =='2'){//鍙戝崟鏂硅繘琛屼腑
-				this.status = 3 
-			}else if(flag =='3'){//鍙戝崟鏂瑰緟璇勪环
-				this.status = 6				
-			}else if(flag =='4'){//鎺ュ崟鏂瑰凡鎺ュ崟
-				this.status =2				
-			}else if(flag =='5'){//鎺ュ崟鏂硅繘琛屼腑
-				this.status =3	
-			}else if(flag =='6'){//鎺ュ崟鏂瑰凡瀹屾垚
-				this.status =4
-			}else if(flag =='0'){
-				this.status = -1
-			}
-			console.log(getApp().globalData,this.status ,"=====================================")
-			// this.typeViewId = 0
-			if(this.token && this.token != '' && this.userInfo && JSON.stringify(this.userInfo) != '{}'){
-				console.log('宸茬櫥闄�')
-				this.isLogin = true
-			/* 	this.getOrderList()
-				if (!this.isOnce) {
-					this.commentStatus = ''
-					this.orderList = []
-					this.next = true
-					this.page = 1
-					this.getOrderList()
-				} */
-			} else {
-				this.isLogin = false
-				this.typeViewId = 0
-				console.log('鏈櫥闄�')
-			}
-			if(this.isLogin){
-				if(this.typeViewId !== this.userInfo.useIdentity || flag !=null){
-					this.typeViewId = this.userInfo.useIdentity || 0
-					//濡傛灉鍙戠敓
-					this.initOrderList()
-				}else{
-					//濡傛灉鏈彂鐢熷彉鍖栦笉鍒锋柊
-					this.typeViewId = this.userInfo.useIdentity || 0
-					if(!this.orderList || !this.orderList.length){
-						this.initOrderList()
-					}else{
-						if( this.tempOrderId){
-							this.getOrderData()
-						}
-					}
-					console.log('this.tempOrderId',this.tempOrderId)
-				}
-			}
-			getApp().globalData.orderStatus =null
-		},
-		data() {
-			return {
-				show: false,
-				isLogin: false,
-				typeViewId: -1,
-				tempOrderId:null,
-				list: [
-					{ name: '鍏ㄩ儴', id: -1 },
-					{ name: '宸叉帴鍗�', id: 2 },
-					{ name: '杩涜涓�', id: 3 },
-					{ name: '寰呮敮浠�', id: 5 },
-					{ name: '宸插畬鎴�', id: 4 },
-					// { name: '宸插彇娑�', id: 99 },
-				],
-				list1: [
-					{ name: '鍏ㄩ儴', id: -1 },
-					{ name: '寰呮敮浠�', id: 0 },
-					{ name: '寰呮帴鍗�', id: 1 },
-					{ name: '宸叉帴鍗�', id: 2 },
-					{ name: '杩涜涓�', id: 3 }, 
-					{ name: '宸插畬鎴�', id: 4 },
-					{ name: '宸插彇娑�', id: 99 },
-					{ name: '寰呰瘎浠�', id: 6 }
-				],
-				orderId: null,
-				status: -1,
-				commentStatus: '', 
-				next: true,
-				page: 1,
-				orderList: [],
-				isOnce: true
-			};
-		},
-		async onLoad() {
-			await this.$onLaunched;
-			/* uni.$on('refresh', (data) => {
-				console.log('鎴戠殑璁㈠崟椤靛埛鏂�');
-				this.status = ''
-				this.commentStatus = ''
-				this.orderList = []
-				this.next = true
-				this.page = 1
-				this.getOrderList()
-			}) */			
-			
-		},
-		onReachBottom() {
-			if(this.isLogin){
-				this.getOrderList()
-			}			
-		},
-		methods: {
-			toLogin() {
-				uni.navigateTo({
-					url: '/pages/login/login'
-				})
-			},
-			initOrderList() {
-				this.commentStatus = ''
-				this.orderList = []
-				this.next = true
-				this.page = 1
-				this.getOrderList()
-			},
-			startJobs(orderId) {
-				this.$u.api.begin({ orderId })
-					.then(res => {
-						if (res.code === 200) {
-							this.status = ''
-							this.commentStatus = ''
-							this.orderList = []
-							this.next = true
-							this.page = 1
-							this.getOrderList()
-						}
-						
-					})
-			},
-			jumpDesc(item,flag) {
-				uni.navigateTo({
-					url: `/pages/order-details/order-details?id=${item.id}&flag=${flag}`
-				})
-				this.tempOrderId = item.id
-			},
-			// 淇敼
-			jumpEdit(item) {
-				this.tempOrderId =item.id
-				if (item.type === 0 && item.workType === 0) {
-					uni.navigateTo({
-						url: `/pages/using-workers/using-workers?id=${item.id}`
-					})
-				} else if (item.type === 0 && item.workType === 1) {
-					uni.navigateTo({
-						url: `/pages/sorting/sorting?id=${item.id}`
-					})
-				} else if (item.type === 0 && item.workType === 2) {
-					uni.navigateTo({
-						url: `/pages/packaging-worker/packaging-worker?id=${item.id}`
-					})
-				} else if (item.type === 1) {
-					uni.navigateTo({
-						url: `/pages/freight/freight?id=${item.id}`
-					})
-				}
-			},
-			cancelOrder() {
-				this.$u.api.cancelOrder({
-					orderId: this.orderId
-				}).then(res => {
-					if (res.code === 200) {
-						this.show = false
-						this.orderList = []
-						this.next = true
-						this.page = 1
-						this.getOrderList()
-					} 
-				})
-			},
-			phoneCall(phoneNumber) {
-				uni.makePhoneCall({
-					phoneNumber
-				});
-			},
-			getOrderData(){
-				var that = this
-				var param ={ orderId:that.tempOrderId}
-				this.$u.api.getDetail(param).then(res =>{
-					if(res.code ===200 && res.data){
-						var isDel = false
-						var tempIndex = -1
-						that.orderList.forEach((item,index) =>{
-							if(item.id == res.data.id){
-								item.status = res.data.status
-								item.isUpdate = res.data.isUpdate
-								item.commentStatus = res.data.commentStatus
-								tempIndex = index
-							}
-							
-						})
-						if(tempIndex > -1 ){
-							console.log(tempIndex,that.status,res.data.status,"===================")
-							if(that.status >=0 ){
-								//濡傛灉鏈夋爣绛鹃〉
-								if(that.status ===6 && res.data.commentStatus == 1){
-									isDel =true
-									console.log(tempIndex,that.status,res.data.status,"==================1")
-								}else if(that.status !=6 && that.status !== res.data.status){
-									isDel =true
-									console.log(tempIndex,that.status,res.data.status,"===================2")
-								}
-							}
-							if(isDel){
-								console.log(tempIndex,that.status,res.data.status,"===================3")
-								that.orderList.splice(tempIndex,1)
-							}
-						}						
-					}
-				 }) 
-			},
-			// 璁㈠崟鍒嗛〉
-			getOrderList() {
-				if (!this.next) return;
-				this.$u.api.orderPage({
-					capacity: 10,
-					page: this.page,
-					model: {
-						queryMyOrderType: this.userInfo.useIdentity,
-						status:  this.status === 6 ? 4 : (this.status ==-1?"":this.status),
-						commentStatus: this.status === 6 ? 0 : '',
-						queryLat: this.latitude,
-						queryLgt: this.longitude
-					}
-				}).then(res => {
-					if (res.code !== 200) return;
-					this.isOnce = false
-					res.data.records.forEach(item => {
-						// 璁㈤鍗�
-						if (item.type === 2) {
-							item.wayInfoCopy = JSON.parse(item.wayInfo).map(item => {
-								return `${item.name}${item.price / 100}鍏�(${item.num}浠�)`
-							}).join(' | ')
-						// 杩愯揣
-						} else if (item.type === 1) {
-							item.wayInfo = JSON.parse(item.wayInfo)
-						}
-					})
-					this.orderList = [...this.orderList, ...res.data.records]					
-					if (this.orderList.length >= res.data.total) {
-						this.next = false
-					} else {
-						this.page += 1
-					}
-				})
-			},
-			clickOrderType(id) {				 
-				this.commentStatus = ''
-				this.status = id
-				this.orderList = []
-				this.next = true
-				this.page = 1
-				this.getOrderList()
-			}
-		}
-	}
-</script>
-
-<style>
-	page {
-		background-color: #F7F7F7;
-	}
-</style>
-
-<style lang="scss" scoped>
-	.index {
-		width: 100%;
-		.slot-content {
-			width: 100%;
-			text-align: center;
-			font-weight: 400;
-			font-size: 30rpx;
-			color: #333333;
-			margin: 30rpx 0;
-		}
-		.btn1 {
-			width: 264rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			text-align: center;
-			font-weight: 400;
-			font-size: 32rpx;
-			color: #666666;
-			border-radius: 44rpx;
-			border: 1rpx solid #B2B2B2;
-		}
-		.btn2 {
-			width: 264rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			text-align: center;
-			font-weight: 500;
-			font-size: 32rpx;
-			color: #FFFFFF;
-			background: #00BC12;
-			border-radius: 44rpx;
-		}
-		.index-j-head {
-			width: 100%;
-			background-color: #ffffff;
-			position: sticky;
-			top: 0;
-			left: 0;
-			z-index: 9;
-			.index-c-title {
-				width: 100%;
-				padding: 0 30rpx;
-				box-sizing: border-box;
-				display: flex;
-				align-items: center;
-				text {
-					font-weight: bold;
-					font-size: 36rpx;
-					color: #111111;
-				}
-			}
-		}
-		.index-list {
-			width: 100%;
-			padding: 20rpx 30rpx;
-			box-sizing: border-box;
-			.index-list-wu {
-				width: 100%;
-				margin-top: 40rpx;
-				text-align: center;
-				text {
-					font-size: 24rpx;
-					color: #666666;
-				}
-			}
-			.index-list-item {
-				width: 100%;
-				padding: 30rpx;
-				box-sizing: border-box;
-				background: #FFFFFF;
-				border-radius: 20rpx;
-				margin-bottom: 20rpx;
-				&:last-child {
-					margin: 0 !important;
-				}
-				.eidt {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					.eidt-tips {
-						flex-shrink: 0;
-						display: flex;
-						align-items: center;
-						image {
-							width: 26rpx;
-							height: 26rpx;
-							margin-right: 12rpx;
-						}
-						text {
-							font-weight: 400;
-							font-size: 26rpx;
-							color: #FF0000;
-						}
-					}
-					.eidt-right {
-						flex: 1;
-						display: flex;
-						align-items: center;
-						justify-content: flex-end;
-						flex-wrap: wrap;
-						.eidt-close {
-							width: 160rpx;
-							height: 64rpx;
-							font-weight: 400;
-							font-size: 28rpx;
-							color: #666666;
-							line-height: 64rpx;
-							text-align: center;
-							border-radius: 34rpx;
-							border: 1rpx solid #B2B2B2;
-							margin-left: 20rpx;
-						}
-						.eidt-phone {
-							width: 160rpx;
-							height: 64rpx;
-							line-height: 64rpx;
-							text-align: center;
-							font-weight: 400;
-							font-size: 28rpx;
-							color: #00BC12;
-							border-radius: 34rpx;
-							border: 1rpx solid #00BC12;
-							margin-left: 20rpx;
-						}
-						.eidt-btn {
-							width: 160rpx;
-							height: 64rpx;
-							line-height: 64rpx;
-							text-align: center;
-							font-weight: 400;
-							font-size: 28rpx;
-							color: #FFFFFF;
-							background: #00BC12;
-							border-radius: 34rpx;
-							margin-left: 20rpx;
-						}
-					}
-				}
-				.index-list-item-price {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					justify-content: flex-end;
-					margin-bottom: 20rpx;
-					text {
-						&:nth-child(1) {
-							font-weight: 400;
-							font-size: 26rpx;
-							color: #333333;
-						}
-						&:nth-child(2) {
-							font-weight: 600;
-							font-size: 36rpx;
-							color: #FF0000;
-						}
-					}
-				}
-				.index-list-item-dz {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					margin-bottom: 20rpx;
-					image {
-						width: 32rpx;
-						height: 32rpx;
-						flex-shrink: 0;
-						margin-right: 16rpx;
-					}
-					text {
-						flex: 1;
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #333333;
-					}
-				}
-				.index-list-item-info {
-					font-weight: 400;
-					font-size: 28rpx;
-					color: #888888;
-					margin-bottom: 20rpx;
-				}
-				.address {
-					width: 100%;
-					background: #F7F7F7;
-					border-radius: 16rpx;
-					padding: 30rpx;
-					box-sizing: border-box;
-					margin-bottom: 24rpx;
-					position: relative;
-					.address-xian {
-						position: absolute;
-						top: 17px;
-						left: 24px;
-						width: 1rpx;
-						height: calc(100% - 60rpx);
-						border-right: 2rpx dashed #B2B2B2;
-					}
-					.address-row {
-						position: relative;
-						z-index: 2;
-						width: 100%;
-						display: flex;
-						align-items: center;
-						margin-bottom: 30rpx;
-						&:last-child {
-							margin: 0 !important;
-						}
-						image {
-							width: 36rpx;
-							height: 36rpx;
-							flex-shrink: 0;
-							margin-right: 24rpx;
-						}
-						text {
-							font-weight: 400;
-							font-size: 28rpx;
-							color: #333333;
-						}
-					}
-				}
-				.index-list-item-date {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					margin-bottom: 20rpx;
-					image {
-						flex-shrink: 0;
-						width: 28rpx;
-						height: 28rpx;
-						margin-right: 18rpx;
-					}
-					text {
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #333333;
-					}
-				}
-				.index-list-item-head {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 20rpx;
-					.index-list-item-head-l {
-						display: flex;
-						align-items: center;
-						.xoam {
-							width: 6rpx;
-							height: 30rpx;
-							background: #00BC12;
-							border-radius: 4rpx;
-							margin-right: 20rpx;
-						}
-						text {
-							font-weight: 600;
-							font-size: 32rpx;
-							color: #222222;
-							margin-right: 12rpx;
-						}
-						.tips {
-							padding: 4rpx 12rpx;
-							border-radius: 8rpx;
-							font-weight: 400;
-							font-size: 24rpx;
-							color: #00BC12;
-							border: 2rpx solid #00BC12;
-						}
-						.tips1 {
-							padding: 4rpx 12rpx;
-							border-radius: 8rpx;
-							font-weight: 400;
-							font-size: 24rpx;
-							color: #FD9E24;
-							border: 2rpx solid #FD9E24;
-						}
-					}
-					.hui {
-						color: #999999 !important;
-					}
-					.index-list-item-head-r {
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #FF0000;
-					}
-				}
-			}
-		}
-		.index-labs {
-			width: 100%;
-			height: 90rpx;
-			padding: 0 30rpx;
-			box-sizing: border-box;
-			display: flex;
-			align-items: center;
-			background: #FFFFFF;
-			position: sticky;
-			left: 0;
-			.scroll-view_H {
-				width: 100%;
-				height: 100%;
-				white-space: nowrap;
-				.active {
-					font-weight: 500 !important;
-					font-size: 32rpx !important;
-					color: #00BC12 !important;
-				}
-				.index-labs-row {
-					display: inline-block;
-					height: 100%;
-					line-height: 90rpx;
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #666666;
-					position: relative;
-					margin-right: 50rpx;
-					&:last-child {
-						margin: 0 !important;
-					}
-					.index-labs-row-x {
-						position: absolute;
-						bottom: 0;
-						left: 50%;
-						width: 40rpx;
-						height: 4rpx;
-						background-color: #00BC12;
-						transform: translate(-50%, 0);
-					}
-				}
-			}
-		}
-		.index-wu {
-			width: 100%;
-			margin-top: 286rpx;
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			justify-content: center;
-			image {
-				width: 300rpx;
-				height: 300rpx;
-			}
-			text {
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #999999;
-				margin-bottom: 40rpx;
-			}
-			button {
-				width: 160rpx;
-				height: 72rpx;
-				line-height: 72rpx;
-				text-align: center;
-				background: #00BC12;
-				border-radius: 36rpx;
-				font-weight: 500;
-				font-size: 32rpx;
-				color: #FFFFFF;
-			}
-		}
-	}
-</style>
diff --git a/small-program/pages/freight-order/freight-order.vue b/small-program/pages/freight-order/freight-order.vue
deleted file mode 100644
index fcde6d6..0000000
--- a/small-program/pages/freight-order/freight-order.vue
+++ /dev/null
@@ -1,824 +0,0 @@
-<template>
-	<view class="order">
-		<!-- <view class="order-quxiaole">
-			宸插彇娑�
-		</view> -->
-		<view class="order-head" :style="{ backgroundImage: 'url(' + bgImg + ')' }">
-			<view class="order-head-status">寰呮帴鍗�</view>
-			<view class="order-head-info">鎮ㄥ凡缁忔垚鍔熷彂璧风敤宸ュ崟锛岃鑰愬績绛夊緟鎺ュ崟</view>
-		</view>
-		<view class="order-quxiao">
-			<view class="order-quxiao-btn">鍙栨秷璁㈠崟</view>
-		</view>
-		<view class="order-user">
-			<view class="order-user-info">
-				<view class="user-info-l">
-					<view class="user-info-l-image">
-						<image src="/static/logo.png" mode="widthFix"></image>
-					</view>
-					<view class="user-info-l-i">
-						<view class="user-info-l-i-top">鑾茶姳鍔冲姟鍏徃</view>
-						<view class="user-info-l-i-bottom">
-							<view class="user-info-l-i-bottom-item">
-								<text>璇勫垎锛�</text>
-								<text>90</text>
-							</view>
-							<view class="user-info-l-i-bottom-item">
-								<text>鍗曟暟锛�</text>
-								<text>100</text>
-							</view>
-						</view>
-					</view>
-				</view>
-				<view class="user-info-r">
-					<image src="/static/icon/ic_call@2x.png" mode="widthFix"></image>
-					<text>鑱旂郴甯堝倕</text>
-				</view>
-			</view>
-		</view>
-		<view class="order-info">
-			<view class="order-info-title">
-				<view class="x"></view>
-				<text>杩愯揣鍗�-灏忚揣杞�-鍘㈠紡</text>
-			</view>
-			<view class="order-info-wz">钁¤悇锝�2000鏂わ綔闇�2杈�</view>
-			<view class="index-list-item-dz">
-				<image src="/static/icon/order_ic_time@2x.png" mode="widthFix"></image>
-				<text>07-26 鑷� 07-27锛�2澶╋級</text>
-			</view>
-			<view class="address">
-				<view class="address-xian"></view>
-				<view class="address-row">
-					<image src="/static/icon/ic_qidian@2x.png" mode="widthFix"></image>
-					<text>闀挎睙瑗胯矾澶ц渶灞辨.鏋楀叕鍥タ闂ㄤ繚瀹夊</text>
-				</view>
-				<view class="address-row">
-					<image src="/static/icon/ic_jingguo@2x.png" mode="widthFix"></image>
-					<text>闀挎睙瑗胯矾澶ц渶灞辨.鏋楀叕鍥笢闂ㄤ繚瀹夊</text>
-				</view>
-				<view class="address-row">
-					<image src="/static/icon/ic_zhongdian@2x.png" mode="widthFix"></image>
-					<text>瀹夊窘鑾茶姳绉戞妧浜т笟鍥眴绫崇鎶�鏈夐檺鍏徃</text>
-				</view>
-			</view>
-			<view class="order-info-x"></view>
-			<view class="order-info-supplement">
-				<view class="order-info-supplement-title">闇�姹傝ˉ鍏咃細</view>
-				<view class="order-info-supplement-val">鐢峰コ閮藉彲锛屽寘鍗堥キ锛屽共娲婚夯鍒╋紝鏃╀笂9鐐瑰埌涓嬪崍4鐐癸紝鍙厤璐瑰甫1鏂よ憽钀勫洖瀹�</view>
-				<view class="order-info-supplement-list">
-					<view class="order-info-supplement-list-item" v-for="(item,index) in 4" :key="index">
-						<image src="/static/logo.png" mode="widthFix"></image>
-					</view>
-					<view style="width: 156rpx; height: 0;"></view>
-					<view style="width: 156rpx; height: 0;"></view>
-				</view>
-			</view>
-			<view class="order-info-price">
-				<view class="price-row">
-					<view class="price-row-label">璐圭敤鏍囧噯</view>
-					<view class="price-row-val">2000鍏�/杈�*澶�</view>
-				</view>
-				<view class="price-row">
-					<view class="price-row-label">棰勪及鎬昏垂鐢�</view>
-					<view class="price-row-val" style="color: #FF0000;">楼1000.00</view>
-				</view>
-			</view>
-		</view>
-		<view class="order-info">
-			<view class="order-info-title">
-				<text>璇勪环</text>
-			</view>
-			<u-rate :count="count" activeColor="#FFC331" size="26" v-model="value"></u-rate>
-			<view class="order-info-remark">
-				骞叉椿鍒╄惤鏁堢巼楂樺共娲诲埄钀芥晥鐜囬珮骞叉椿鍒╄惤鏁堢巼楂樺共娲诲埄钀芥晥鐜囬珮骞叉椿鍒╄惤鏁堢巼楂�
-			</view>
-		</view>
-		<view class="order-ren">
-			<view class="order-ren-left">
-				<view class="order-ren-left-img">
-					<image src="/static/logo.png" mode="widthFix"></image>
-				</view>
-				<text>鍙插ぉ鏁�</text>
-				<view class="order-ren-left-tip">涓氫富</view>
-			</view>
-			<view class="order-ren-x"></view>
-			<view class="order-ren-lx">
-				<image src="/static/icon/ic_call@2x.png" mode="widthFix"></image>
-				<text>鑱旂郴涓氫富</text>
-			</view>
-		</view>
-		<view class="order-info">
-			<view class="order-info-title">
-				<text>璁㈠崟淇℃伅</text>
-			</view>
-			<view class="order-info-list">
-				<view class="order-info-list-item">
-					<text>璁㈠崟缂栧彿锛�</text>
-					<text>202107131742520001</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>涓嬪崟鏃堕棿锛�</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>鎺ュ崟鏃堕棿锛�</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>寮�濮嬫椂闂达細</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>瀹屾垚鏃堕棿锛�</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>鏀粯鏃堕棿锛�</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>鏀粯鏂瑰紡锛�</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>浜ゆ槗鍗曞彿锛�</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-			</view>
-		</view>
-		<view style="width: 100%; height: calc(108rpx + env(safe-area-inset-bottom));"></view>
-		<view class="order-footer">
-			<view class="order-footer-btn">
-				<view class="order-footer-btn-a" @click="show = true">鍙栨秷璁㈠崟</view>
-				<view class="order-footer-btn-b">淇敼璁㈠崟</view>
-			</view>
-			<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
-		</view>
-		
-		<u-modal
-			title="娓╅Θ鎻愮ず"
-			:show="show"
-			closeOnClickOverlay
-			showCancelButton
-		>
-			<view class="slot-content">
-				纭鍙栨秷璁㈠崟鍚楋紵
-			</view>
-			<view slot="confirmButton" style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
-				<view class="btn1" @click="show = false">鎴戝啀鎯虫兂</view>
-				<view class="btn2" @click="show = false">纭鍙栨秷</view>
-			</view>
-		</u-modal>
-		
-		<!-- 鏀粯寮圭獥 -->
-		<u-popup :show="show1" round="15" mode="bottom">
-			<view class="zhifu">
-				<view class="zhifu-head">
-					<view></view>
-					<text>鏀粯璁㈠崟</text>
-					<image @click="show1 = false" src="/static/icon/ic_close@2x.png" mode="widthFix"></image>
-				</view>
-				<view class="zhifu-c">
-					<view class="zhifu-c-info">
-						璇风‘璁ら噾棰濆苟鏀粯璐圭敤缁� <text>鑾茶姳鍔冲姟鍏徃</text>
-					</view>
-					<view class="zhifu-c-info1">鏀粯閲戦锛�</view>
-					<view class="zhifu-c-input">
-						<image src="/static/icon/楼@2x.png" mode="widthFix"></image>
-						<input type="number" placeholder="璇疯緭鍏�" />
-					</view>
-				</view>
-				<view class="zhifu-botton">纭鏀粯</view>
-			</view>
-		</u-popup>
-		
-		<!-- 璇勪环 -->
-		<u-popup :show="show2" round="15" mode="bottom">
-			<view class="zhifu">
-				<view class="zhifu-head">
-					<view></view>
-					<text>璇勪环</text>
-					<image @click="show2 = false" src="/static/icon/ic_close@2x.png" mode="widthFix"></image>
-				</view>
-				<view class="zhifu-pj">
-					<view class="zhifu-pj-label">鏈嶅姟璇勪环</view>
-					<view class="zhifu-pj-val">
-						<u-rate :count="count" activeColor="#FFC331" size="26" v-model="value"></u-rate>
-					</view>
-				</view>
-				<view class="zhifu-textarea">
-					<image src="/static/icon/ic_pingjia@2x.png" mode="widthFix"></image>
-					<u--textarea placeholder="璇疯璇存偍瀵规湰娆′氦鏄撶殑鎰熷彈" border="none" count></u--textarea>
-				</view>
-				<view class="zhifu-botton" style="margin-top: 60rpx;">绔嬪嵆璇勪环</view>
-			</view>
-		</u-popup>
-		
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				show: false,
-				show1: false,
-				show2: false,
-				count: 4,
-				value: 2,
-				bgImg: require('@/static/image/bg_green@2x.png')
-			};
-		}
-	}
-</script>
-
-<style>
-	page {
-		background-color: #F7F7F7;
-	}
-	.u-textarea__count {
-		background-color: rgba(0, 0, 0, 0) !important;
-	}
-	.u-textarea {
-		width: 100% !important;
-		height: 100% !important;
-		padding: 0 !important;
-		background-color: rgba(0, 0, 0, 0) !important;
-	}
-	textarea {
-		width: 100% !important;
-		height: 100% !important;
-	}
-</style>
-
-<style lang="scss" scoped>
-	.order {
-		width: 100%;
-		.zhifu {
-			width: 100%;
-			padding: 40rpx 30rpx;
-			box-sizing: border-box;
-			.zhifu-textarea {
-				width: 100%;
-				height: 364rpx;
-				padding: 30rpx;
-				box-sizing: border-box;
-				background: #F7F7F7;
-				border-radius: 16rpx;
-				border: 1rpx solid #EEEEEE;
-				margin-top: 48rpx;
-				display: flex;
-				align-items: start;
-				image {
-					flex-shrink: 0;
-					width: 29rpx;
-					height: 29rpx;
-					margin-right: 10rpx;
-				}
-			}
-			.zhifu-pj {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				margin-top: 40rpx;
-				.zhifu-pj-label {
-					flex-shrink: 0;
-					margin-right: 40rpx;
-				}
-				.zhifu-pj-val {
-					flex: 1;
-					
-				}
-			}
-			.zhifu-head {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				image {
-					width: 28rpx;
-					height: 28rpx;
-				}
-				text {
-					font-weight: 500;
-					font-size: 32rpx;
-					color: #222222;
-				}
-			}
-			.zhifu-c {
-				width: 100%;
-				margin-top: 46rpx;
-				.zhifu-c-info {
-					display: flex;
-					align-items: center;
-					font-weight: 500;
-					font-size: 30rpx;
-					color: #222222;
-					margin-bottom: 30rpx;
-					text {
-						color: #00BC12;
-						margin-left: 10rpx;
-					}
-				}
-				.zhifu-c-info1 {
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #666666;
-					margin-bottom: 20rpx;
-				}
-				.zhifu-c-input {
-					width: 100%;
-					padding: 0 30rpx;
-					box-sizing: border-box;
-					height: 112rpx;
-					background: #F7F7F7;
-					border-radius: 10rpx;
-					border: 1rpx solid #EEEEEE;
-					display: flex;
-					align-items: center;
-					image {
-						flex-shrink: 0;
-						width: 28rpx;
-						height: 60rpx;
-						margin-right: 24rpx;
-					}
-					input {
-						flex: 1;
-						height: 100%;
-						font-weight: 500;
-						font-size: 50rpx;
-						color: #222222;
-					}
-				}
-			}
-			.zhifu-botton {
-				width: 100%;
-				height: 88rpx;
-				line-height: 88rpx;
-				text-align: center;
-				font-weight: 500;
-				font-size: 32rpx;
-				color: #FFFFFF;
-				background: #00BC12;
-				border-radius: 44rpx;
-				margin-top: 264rpx;
-			}
-		}
-		.slot-content {
-			width: 100%;
-			text-align: center;
-			font-weight: 400;
-			font-size: 30rpx;
-			color: #333333;
-			margin: 30rpx 0;
-		}
-		.btn1 {
-			width: 264rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			text-align: center;
-			font-weight: 400;
-			font-size: 32rpx;
-			color: #666666;
-			border-radius: 44rpx;
-			border: 1rpx solid #B2B2B2;
-		}
-		.btn2 {
-			width: 264rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			text-align: center;
-			font-weight: 500;
-			font-size: 32rpx;
-			color: #FFFFFF;
-			background: #00BC12;
-			border-radius: 44rpx;
-		}
-		.order-footer {
-			width: 100%;
-			position: fixed;
-			bottom: 0;
-			left: 0;
-			background-color: #ffffff;
-			z-index: 9;
-			height: calc(108rpx + env(safe-area-inset-bottom));
-			.order-footer-btn {
-				width: 100%;
-				height: 108rpx;
-				padding: 0 30rpx;
-				box-sizing: border-box;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.order-footer-btn-a {
-					width: 334rpx;
-					height: 88rpx;
-					line-height: 88rpx;
-					text-align: center;
-					font-weight: 500;
-					font-size: 32rpx;
-					color: #666666;
-					border-radius: 44rpx;
-					border: 1rpx solid #B2B2B2;
-				}
-				.order-footer-btn-b {
-					width: 334rpx;
-					height: 88rpx;
-					line-height: 88rpx;
-					text-align: center;
-					font-weight: 500;
-					font-size: 32rpx;
-					color: #FFFFFF;
-					background: #00BC12;
-					border-radius: 44rpx;
-				}
-			}
-		}
-		.order-ren {
-			width: 100%;
-			height: 150rpx;
-			background: #FFFFFF;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-			padding: 0 30rpx;
-			box-sizing: border-box;
-			margin-bottom: 20rpx;
-			.order-ren-left {
-				display: flex;
-				align-items: center;
-				flex: 1;
-				.order-ren-left-img {
-					width: 80rpx;
-					height: 80rpx;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					overflow: hidden;
-					border-radius: 50%;
-					margin-right: 15rpx;
-					image {
-						width: 100%;
-					}
-				}
-				text {
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #222222;
-					margin-right: 15rpx;
-				}
-				.order-ren-left-tip {
-					padding: 4rpx 12rpx;
-					border-radius: 8rpx;
-					border: 2rpx solid #FD9E24;
-					font-weight: 400;
-					font-size: 24rpx;
-					color: #FF7200;
-				}
-			}
-			.order-ren-x {
-				width: 1rpx;
-				height: 90rpx;
-				margin-right: 50rpx;
-				background-color: #E5E5E5;
-			}
-			.order-ren-lx {
-				flex-shrink: 0;
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				justify-content: center;
-				image {
-					width: 34rpx;
-					height: 34rpx;
-				}
-				text {
-					font-weight: 400;
-					font-size: 26rpx;
-					color: #222222;
-				}
-			}
-		}
-		.order-info {
-			width: 100%;
-			padding: 30rpx;
-			box-sizing: border-box;
-			background-color: #ffffff;
-			margin-bottom: 20rpx;
-			&:last-child {
-				margin: 0 !important;
-			}
-			.order-info-list {
-				width: 100%;
-				.order-info-list-item {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 30rpx;
-					&:last-child {
-						margin: 0 !important;
-					}
-					text {
-						font-weight: 400;
-						font-size: 26rpx;
-						color: #777777;
-					}
-				}
-			}
-			.order-info-remark {
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #333333;
-				margin-top: 36rpx;
-			}
-			.order-info-title {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				margin-bottom: 20rpx;
-				.x {
-					width: 6rpx;
-					height: 30rpx;
-					background: #00BC12;
-					border-radius: 4rpx;
-					margin-right: 20rpx;
-				}
-				text {
-					font-weight: 600;
-					font-size: 32rpx;
-					color: #222222;
-				}
-			}
-			.order-info-wz {
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #888888;
-				margin-bottom: 30rpx;
-			}
-			.address {
-				width: 100%;
-				background: #F7F7F7;
-				border-radius: 16rpx;
-				padding: 30rpx;
-				box-sizing: border-box;
-				margin-bottom: 24rpx;
-				position: relative;
-				.address-xian {
-					position: absolute;
-					top: 17px;
-					left: 24px;
-					width: 1rpx;
-					height: calc(100% - 60rpx);
-					border-right: 2rpx dashed #B2B2B2;
-				}
-				.address-row {
-					position: relative;
-					z-index: 2;
-					width: 100%;
-					display: flex;
-					align-items: center;
-					margin-bottom: 30rpx;
-					&:last-child {
-						margin: 0 !important;
-					}
-					image {
-						width: 36rpx;
-						height: 36rpx;
-						flex-shrink: 0;
-						margin-right: 24rpx;
-					}
-					text {
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #333333;
-					}
-				}
-			}
-			.index-list-item-dz {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				margin-bottom: 20rpx;
-				image {
-					width: 32rpx;
-					height: 32rpx;
-					flex-shrink: 0;
-					margin-right: 16rpx;
-				}
-				text {
-					flex: 1;
-					font-weight: 400;
-					font-size: 28rpx;
-					color: #333333;
-				}
-			}
-			.order-info-x {
-				width: 100%;
-				height: 1rpx;
-				margin: 20rpx 0 30rpx 0;
-				background-color: #E5E5E5;
-			}
-			.order-info-price {
-				width: 100%;
-				display: flex;
-				flex-direction: column;
-				.price-row {
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 30rpx;
-					&:last-child {
-						margin: 0 !important;
-					}
-					.price-row-label {
-						font-weight: 400;
-						font-size: 30rpx;
-						color: #777777;
-					}
-					.price-row-val {
-						font-weight: 500;
-						font-size: 30rpx;
-						color: #222222;
-					}
-				}
-			}
-			.order-info-supplement {
-				width: 100%;
-				margin-bottom: 40rpx;
-				.order-info-supplement-title {
-					font-weight: 600;
-					font-size: 30rpx;
-					color: #222222;
-					margin-bottom: 16rpx;
-				}
-				.order-info-supplement-val {
-					font-weight: 400;
-					font-size: 28rpx;
-					color: #333333;
-					margin-bottom: 20rpx;
-				}
-				.order-info-supplement-list {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					flex-wrap: wrap;
-					justify-content: space-between;
-					.order-info-supplement-list-item {
-						width: 156rpx;
-						height: 156rpx;
-						display: flex;
-						align-items: center;
-						justify-content: center;
-						border-radius: 8rpx;
-						overflow: hidden;
-						image {
-							width: 100%;
-						}
-					}
-				}
-			}
-		}
-		.order-quxiaole {
-			padding: 20rpx 0;
-			box-sizing: border-box;
-			width: 100%;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			font-weight: 600;
-			font-size: 40rpx;
-			color: #111111;
-			background-color: #ffffff;
-		}
-		.order-head {
-			width: 100%;
-			height: 172rpx;
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			justify-content: center;
-			background-repeat: no-repeat;
-			background-size: 100% 100%;
-			.order-head-status {
-				font-weight: 600;
-				font-size: 40rpx;
-				color: #111111;
-			}
-			.order-head-info {
-				font-weight: 400;
-				font-size: 26rpx;
-				color: #777777;
-				margin-top: 18rpx;
-			}
-		}
-		.order-user {
-			width: 100%;
-			padding: 30rpx;
-			box-sizing: border-box;
-			background-color: #ffffff;
-			.order-user-info {
-				width: 100%;
-				height: 150rpx;
-				padding: 0 30rpx;
-				box-sizing: border-box;
-				background: #F7F8F5;
-				border-radius: 16rpx;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.user-info-l {
-					flex: 1;
-					display: flex;
-					align-items: center;
-					.user-info-l-image {
-						flex-shrink: 0;
-						width: 80rpx;
-						height: 80rpx;
-						border-radius: 50%;
-						overflow: hidden;
-						display: flex;
-						align-items: center;
-						justify-content: center;
-						margin-right: 20rpx;
-						image {
-							width: 100%;
-						}
-					}
-					.user-info-l-i {
-						flex: 1;
-						height: 100%;
-						display: flex;
-						flex-direction: column;
-						justify-content: space-between;
-						.user-info-l-i-top {
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #222222;
-						}
-						.user-info-l-i-bottom {
-							display: flex;
-							align-items: center;
-							margin-top: 14rpx;
-							.user-info-l-i-bottom-item {
-								display: flex;
-								align-items: center;
-								margin-right: 60rpx;
-								&:last-child {
-									margin: 0 !important;
-								}
-								text {
-									&:nth-child(1) {
-										font-weight: 400;
-										font-size: 24rpx;
-										color: #777777;
-									}
-									&:nth-child(2) {
-										font-weight: 400;
-										font-size: 24rpx;
-										color: #222222;
-									}
-								}
-							}
-						}
-					}
-				}
-				.user-info-r {
-					flex-shrink: 0;
-					display: flex;
-					flex-direction: column;
-					align-items: center;
-					justify-content: center;
-					image {
-						width: 33rpx;
-						height: 33rpx;
-					}
-					text {
-						font-weight: 400;
-						font-size: 26rpx;
-						color: #222222;
-						margin-top: 12rpx;
-					}
-				}
-			}
-		}
-		.order-quxiao {
-			width: 100%;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			background-color: #ffffff;
-			.order-quxiao-btn {
-				width: 160rpx;
-				height: 64rpx;
-				line-height: 64rpx;
-				text-align: center;
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #666666;
-				border-radius: 34rpx;
-				border: 1rpx solid #B2B2B2;
-			}
-		}
-	}
-</style>
diff --git a/small-program/pages/freight/freight.vue b/small-program/pages/freight/freight.vue
deleted file mode 100644
index d0f17e9..0000000
--- a/small-program/pages/freight/freight.vue
+++ /dev/null
@@ -1,1029 +0,0 @@
-<template>
-	<view class="index">
-		<view class="list">
-			<view class="list-item">
-				<view class="list-item-label">
-					<view class="list-item-label-x"></view>
-					<text>杞﹁締鍙婅矾绾�</text>
-				</view>
-				
-				<template v-if="!(info.type !== 2 && info.status === 2)">
-					<view class="list-item-row" @click="show = true">
-						<view class="list-item-row-label">杞﹁締绫诲瀷<b>*</b></view>
-						<view class="list-item-row-val">
-							<text :style="{ color: form.categoryName ? '#111111' : '' }">{{form.categoryName ? form.categoryName : '璇烽�夋嫨'}}</text>
-							<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-						</view>
-					</view>
-					<view class="list-item-row" @click="show3 = true">
-						<view class="list-item-row-label">璐ц溅鍨嬪彿<b>*</b></view>
-						<view class="list-item-row-val">
-							<text :style="{ color: form.carUnit ? '#111111' : '' }">{{form.carUnit ? form.carUnit : '璇烽�夋嫨'}}</text>
-							<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-						</view>
-					</view>
-				</template>
-				
-				<view class="list-item-row" @click="show2 = true">
-					<view class="list-item-row-label">鐢ㄨ溅鏃堕棿<b>*</b></view>
-					<view class="list-item-row-val">
-						<text :style="{ color: form.startDate ? '#111111' : '' }">{{form.startDate ? form.startDate + ' 鑷� ' + form.endDate + ' (' + form.totalDays + '澶�) ' : '璇烽�夋嫨'}}</text>
-						<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-					</view>
-				</view>
-				
-				<template v-if="!(info.type !== 2 && info.status === 2)">
-					<view class="list-item-row">
-						<view class="list-item-row-label">
-							杩愯揣鍦板潃<b>*</b>
-							<view class="list-item-row-label-add" @click="addAddr">+澧炲姞閫旂粡鐐�</view>
-						</view>
-						<view class="address">
-							<view class="address-item" @click="selectAddress(2)">
-								<view class="address-item-img">
-									<image src="/static/icon/ic_qidian@2x.png" mode="widthFix"></image>
-									<text :style="{color: form.location ? '#111111' : ''}">{{form.location ? form.location : '璇烽�夋嫨璧风偣'}}</text>
-								</view>
-								<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-							</view>
-							<view class="address-item" v-for="(item, index) in form.wayInfoDTOList" :key="index" @click="selectAddress(4, index)">
-								<view class="address-item-img">
-									<image src="/static/icon/ic_jingguo@2x.png" mode="widthFix"></image>
-									<text :style="{color: item.location ? '#111111' : ''}">{{item.location ? item.location : '璇烽�夋嫨閫旂粡鍦扮偣'}}</text>
-								</view>
-								<view style="display: flex; align-items: center; flex-shrink: 0;">
-									<image src="/static/icon/ic_delete@2x.png" style="margin-right: 22rpx; width: 32rpx; height: 32rpx;" @click.stop="form.wayInfoDTOList.splice(index, 1)" mode="widthFix"></image>
-									<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-								</view>
-							</view>
-							<view class="address-item" @click="selectAddress(3)">
-								<view class="address-item-img">
-									<image src="/static/icon/ic_zhongdian@2x.png" mode="widthFix"></image>
-									<text :style="{color: form.locationEnd ? '#111111' : ''}">{{form.locationEnd ? form.locationEnd : '璇烽�夋嫨缁堢偣'}}</text>
-								</view>
-								<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-							</view>
-						</view>
-					</view>
-				</template>
-				
-			</view>
-			<template v-if="!(info.type !== 2 && info.status === 2)">
-				<view class="list-item">
-					<view class="list-item-label">
-						<view class="list-item-label-x"></view>
-						<text>闇�姹�</text>
-					</view>
-					<view class="list-item-row" @click="show1 = true">
-						<view class="list-item-row-label">杩愯緭鍝佺<b>*</b></view>
-						<view class="list-item-row-val">
-							<text :style="{ color: form.transportTypeName ? '#111111' : '' }">{{form.transportTypeName ? form.transportTypeName : '璇烽�夋嫨'}}</text>
-							<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鐢ㄨ溅鏁伴噺<b>*</b></view>
-						<view class="list-item-row-val">
-							<input type="number" v-model="form.priceNum2" disabled placeholder="1" />
-							<text>杈�</text>
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">杩愯緭閲嶉噺/鏁伴噺<b>*</b></view>
-						<view class="list-item-row-val">
-							<input type="digit" style="flex: 3;" v-model="form.transportNum" placeholder="璇疯緭鍏�" />
-							<!-- <view @click="show4 = true" style="width: 100rpx; flex-shrink: 0; display: flex; align-items: center; justify-content: flex-end;">
-								<text>{{form.transportUnit}}</text>
-								<u-icon name="arrow-down" color="#111111" size="16"></u-icon>
-							</view> -->
-							<view  style="flex: 1;" :class="form.transportUnit ==='涓�' ? 'val-cate-item val-active' : 'val-cate-item'"   @click="form.transportUnit = '涓�'">涓�</view>
-							<view  style="flex: 1;" :class="form.transportUnit ==='鏂�' ? 'val-cate-item val-active' : 'val-cate-item'"   @click="form.transportUnit = '鏂�'">鏂�</view>
-						</view>
-						 
-					</view>
-					<view class="list-item-row" >
-						<view class="list-item-row-label">闇�姹傝ˉ鍏�</view>
-						<view class="list-item-row-val">
-							<textarea cols="30" v-model="form.supplement" rows="10" placeholder="璇疯緭鍏�" maxlength="200"></textarea>
-						</view>
-					</view>
-					<view class="list-item-row" >
-						<view class="list-item-row-label">鍥剧墖</view>
-						<view class="list-item-row-upload">
-							<view class="upload-item" v-for="(item, index) in form.multifileList" :key="index" @click="preview(index, form.multifileList)">
-								<image :src="item.url || item.fileurlFull" mode="widthFix"></image>
-								<image class="upload-item-dele" @click.stop="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image>
-							</view>
-							<view class="upload-item" @click="uploadImg">
-								<u-icon name="plus" color="#999999" size="24"></u-icon>
-								<text>鐐瑰嚮涓婁紶</text>
-							</view>
-							<view style="width: 215rpx; height: 0;"></view>
-						</view>
-					</view>
-					<!-- <view class="list-item-zk" @click="viewStatus = !viewStatus">
-						<text>{{viewStatus ? '鏀惰捣' : '琛ュ厖闇�姹�'}}</text>
-						<u-icon :name="viewStatus ? 'arrow-up' : 'arrow-down'" color="#00BC12" size="16"></u-icon>
-					</view> -->
-				</view>
-				<view class="list-item">
-					<view class="list-item-label">
-						<view class="list-item-label-x"></view>
-						<text>璐圭敤</text>
-					</view>
-					<view class="list-item-cate">
-						<view :class="item.id === form.carType ? 'list-item-cate-item active' : 'list-item-cate-item'" v-for="(item, index) in ff" :key="index" @click="form.carType = item.id">{{item.name}}</view>
-					</view>
-					<view class="list-item-row" v-if="form.carType==0">
-						<view class="list-item-row-label">鐢ㄨ溅澶╂暟</view>
-						<view class="list-item-row-val">
-							<input type="digit" v-model="form.totalDays" disabled placeholder="" />
-							<text>澶�</text>
-						</view>
-					</view>
-					<view class="list-item-row" v-if="form.carType==1">
-						<view class="list-item-row-label">鐢ㄨ溅娆℃暟<b>*</b></view>
-						<view class="list-item-row-val">
-							<input type="digit" v-model="form.priceNum1"  @input="getPrice"  placeholder="璇疯緭鍏�" />
-							<text>娆�</text>
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">璐圭敤鏍囧噯<b>*</b></view>
-						<view class="list-item-row-val">
-							<input type="digit" @input="getPrice"  v-model="form.price" placeholder="璇疯緭鍏�" />
-							<text>{{form.priceUnit}}</text>
-						</view>
-					</view>
-				</view>
-				<view class="list-item">
-					<view class="list-item-label">
-						<view class="list-item-label-x"></view>
-						<text>鑱旂郴浜轰俊鎭�</text>
-						<text class="list-item-label-info">榛樿鍙戝崟鏂硅仈绯绘柟寮忥紝鍙慨鏀硅仈绯讳汉</text>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鑱旂郴浜哄鍚�</view>
-						<view class="list-item-row-val">
-							<input type="text" v-model="form.linkName" placeholder="璇疯ˉ鍏�" />
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鑱旂郴鐢佃瘽<b>*</b></view>
-						<view class="list-item-row-val">
-							<input type="text" v-model="form.linkPhone" maxlength="11" placeholder="璇疯ˉ鍏�" />
-						</view>
-					</view>
-				</view>
-			</template>
-		</view>
-		<view style="width: 100%; height: calc(214rpx + env(safe-area-inset-bottom));"></view>
-		<view class="footer">
-			<view class="footer-price">
-				<view class="footer-price-info">棰勪及鎬昏垂鐢�</view>
-				<view class="footer-price-num">
-					<text>{{totalPrice || 0}}</text>
-					<text>鍏�</text>
-				</view>
-			</view>
-			<view class="footer-bottom"> 
-				<div class="footer-bottom-btn" @click="submit" >
-					<text>{{form.id?'纭淇敼':'绔嬪嵆涓嬪崟'}}</text>
-					<text v-if="!form.id">锛堟湇鍔″畬鎴愬悗浠樻锛�</text>
-				</div>
-			</view>
-			<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
-		</view>
-		
-		<!-- 閫夋嫨杞﹁締绫诲瀷 -->
-		<u-picker
-			:show="show"
-			:columns="car"
-			confirmColor="#00BC12"
-			keyName="name"
-			@confirm="confirmCategary"
-			@cancel="show = false"/>
-			
-		<!-- 閫夋嫨鍝佺 -->
-		<u-picker
-			:show="show1"
-			:columns="variety"
-			confirmColor="#00BC12"
-			keyName="name"
-			@confirm="confirmVariety"
-			@cancel="show1 = false"/>
-			
-		<!-- 璐ц溅鍨嬪彿 -->
-		<u-picker
-			:show="show3"
-			:columns="carArr"
-			confirmColor="#00BC12"
-			@confirm="confirmCarArr"
-			@cancel="show3 = false"/>
-			
-		<!-- 鍗曚綅 -->
-		<u-picker
-			:show="show4"
-			:columns="dw"
-			confirmColor="#00BC12"
-			@confirm="confirmDw"
-			@cancel="show4 = false"/>
-			
-		<!-- 閫夋嫨鏃ユ湡鑼冨洿 -->
-		<u-calendar
-			:show="show2"
-			color="#00BC12"
-			 :allowSameDay="true"
-			mode="range"
-			@close="show2 = false"
-			@confirm="confirmDate" />
-			
-	</view>
-</template>
-
-<script>
-	import { mapState } from 'vuex'
-	export default {
-		computed: {
-			...mapState(['userInfo']),
-			totalPrice() {
-				return this.form.estimatedAccount / 100
-			}
-		},
-		data() {
-			return {
-				info: {},
-				show: false,
-				show1: false,
-				show2: false,
-				show3: false,
-				show4: false,
-				form: {
-					id: null,
-					startDate: '',
-					endDate: '',
-					lat: '',
-					lgt: '',
-					location: '',
-					latEnd: '',
-					lgtEnd: '',
-					locationEnd: '',
-					carUnit: '',
-					categoryId: '',
-					categoryName: '',
-					wayInfoDTOList: [],
-					priceNum1: '',
-					totalDays:null,
-					priceNum2: 1,
-					transportNum: '',
-					transportTypeId: '',
-					transportTypeName: '',
-					carType: 0,
-					supplement: '',
-					multifileList: [],
-					priceUnit: '鍏�/澶�',
-					linkName: '',
-					linkPhone: '',
-					price: '',
-					type: 1,
-					transportUnit: '涓�',
-					estimatedAccount: ''
-				},
-				car: [],
-				variety: [],
-				ff: [
-					{ name: '鎸夊ぉ浠樿垂', id: 0 },
-					{ name: '鎸夋浠樿垂', id: 1 }
-				],
-				dw: [['涓�', '鏂�']],
-				carArr: [],
-				viewStatus: true
-			};
-		},
-		watch: {
-			'form.carType': {
-				handler(news, olds) {
-					if (news === 0) {
-						this.form.priceUnit = '鍏�/澶�'
-					} else if (news === 1) {
-						this.form.priceUnit = '鍏�/娆�'
-					}
-					this.getPrice()
-				}
-			}
-		},
-		onLoad(option) {
-			if (option.id) {
-				this.form.id = option.id
-				this.$u.api.getDetail({
-					orderId: option.id
-				}).then(res => {
-					if (res.code === 200) {
-						this.info = res.data
-						console.log(res.data.totalDays)
-						for (const key in this.form) {
-							this.form[key] = res.data[key]
-						}
-						this.form.price = Number(this.form.price) / 100
-						if (!this.form.multifileList) {
-							this.form.multifileList = []
-						}
-						if (!this.form.wayInfoDTOList) {
-							this.form.wayInfoDTOList = []
-						}
-					}
-				})
-			} else {
-				const res = uni.getStorageSync('carData');
-				console.log(res)
-				this.form.linkPhone = this.userInfo.telephone
-				this.form.linkName = this.userInfo.name
-				this.form.startDate = res.startDate
-				this.form.endDate = res.endDate
-				this.form.lat = res.lat
-				this.form.lgt = res.lgt
-				this.form.totalDays = res.days
-				this.form.priceNum1=res.days
-				this.form.categoryId = res.categoryId
-				this.form.categoryName = res.categoryName
-				this.form.location = res.location
-				this.form.latEnd = res.latEnd
-				this.form.lgtEnd = res.lgtEnd
-				this.form.locationEnd = res.locationEnd
-				this.form.wayInfoDTOList = res.wayInfoDTOList
-				uni.removeStorageSync('carData');
-			}
-			this.getCategoryLists()
-		},
-		methods: {
-			preview(current, arr) {
-				let urls = arr.map(item => item.url || item.fileurlFull)
-				uni.previewImage({ current, urls })
-			},
-			handleInputPrice(e) {
-				 try{
-					 this.form.price = Number(this.form.price).toFixed(3) 
-				 }catch(e){
-					 this.form.price =null
-				 } 
-			},
-			confirmDw(e) {
-				this.form.transportUnit = e.value[0]
-				this.show4 = false
-			},
-			// 鎻愪氦璁㈠崟
-			submit() {
-				var that = this;
-				if (!this.form.carUnit) {
-					return uni.showToast({ title: '璇烽�夋嫨璐ц溅鍨嬪彿', icon: 'none' })
-				}
-				if (!this.form.transportTypeName) {
-					return uni.showToast({ title: '璇烽�夋嫨杩愯緭鍝佺', icon: 'none' })
-				}
-				if (!this.form.priceNum2) {
-					return uni.showToast({ title: '璇疯緭鍏ョ敤杞︽暟閲�', icon: 'none' })
-				}
-				if (!this.form.transportNum) {
-					return uni.showToast({ title: '璇疯緭鍏ヨ繍杈撻噸閲�/鏁伴噺', icon: 'none' })
-				}
-				if (!this.form.price) {
-					return uni.showToast({ title: '璇疯緭鍏ヨ垂鐢ㄦ爣鍑�', icon: 'none' })
-				}
-				if (!this.form.linkPhone) {
-					return uni.showToast({ title: '璇疯緭鍏ヨ仈绯荤數璇�', icon: 'none' })
-				}
-				if (!that.form.id) {
-					uni.requestSubscribeMessage({
-						tmplIds: ['oVjOBLcHxIlGzOMJsdInmgI5CHGXh-UTvMzQqfFOnIg','AA97cHjvlPiNO4viMkVe4JifCf9TD5b5Eb7s6El3VS8'],
-						success(res) {
-							if(that.form.carType == 0){
-								that.form.priceNum1 = that.form.totalDays
-							}
-							that.$u.api.release({
-								...that.form,
-								price: Number(that.form.price) * 100,
-								wayInfoDTOList: [
-									{
-										lat: that.form.lat,
-										lgt: that.form.lgt,
-										location: that.form.location
-									},
-									...that.form.wayInfoDTOList,
-									{
-										lat: that.form.latEnd,
-										lgt: that.form.lgtEnd,
-										location: that.form.locationEnd
-									}
-								]
-							}).then(res => {
-								if (res.code == 200) {
-									uni.navigateTo({
-										url: `/pages/success/success?orderId=${res.data.id}`
-									})
-								}
-							})
-						}
-					})
-				} else {
-					// uni.requestSubscribeMessage({
-						// tmplIds: ['3YSC7gouRlSjHXz4CrWOGFzPmGwEBtFj4snwdfMvKHk','AA97cHjvlPiNO4viMkVe4JifCf9TD5b5Eb7s6El3VS8'],
-						// success(res) {
-							that.$u.api.updateOrder({
-								...that.form,
-								price: Number(that.form.price) * 100,
-								wayInfoDTOList: [
-									{
-										lat: that.form.lat,
-										lgt: that.form.lgt,
-										location: that.form.location
-									},
-									...that.form.wayInfoDTOList,
-									{
-										lat: that.form.latEnd,
-										lgt: that.form.lgtEnd,
-										location: that.form.locationEnd
-									}
-								]
-							}).then(res => {
-								if (res.code == 200) {
-									uni.showToast({
-										title: '淇敼鎴愬姛',
-										icon: 'success',
-										mask: true,
-										duration: 2000
-									})
-									setTimeout(() => {
-										uni.navigateBack({ delta: 1 });
-										// uni.$emit('refresh')
-									}, 1500)
-								}
-							})
-					// 	}
-					// })
-				}
-			},
-			uploadImg() {
-				var that = this;
-				uni.chooseImage({
-					success: (chooseImageRes) => {
-						for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
-							uni.uploadFile({
-								url: this.$baseUrl + '/web/public/upload',
-								filePath: chooseImageRes.tempFilePaths[i],
-								name: 'file',
-								formData: {
-									'folder': 'orders'
-								},
-								success: (uploadFileRes) => {
-									const res = JSON.parse(uploadFileRes.data)
-									that.form.multifileList.push({
-										fileurl: res.data.imgaddr,
-										name: res.data.originname,
-										url: res.data.url,
-										type: 0
-									})
-								}
-							});
-						}
-					}
-				});
-			},
-			// 璁$畻閲戦
-			getPrice() {
-				if (this.form.price && this.form.priceNum1 && this.form.priceNum2) {
-					this.$u.api.getTotal({
-						price: Number(this.form.price).toFixed(2) * 100,
-						priceUnit: this.form.priceUnit,
-						priceNum1: this.form.carType!=1?this.form.totalDays:this.form.priceNum1,
-						priceNum2: this.form.priceNum2,
-						carType:this.form.carType ,
-						type: 1
-					}).then(res => {
-						if (res.code === 200) {
-							this.form.estimatedAccount = res.data
-						}
-						
-					})
-				}
-			},
-			getCategoryLists() {
-				this.$u.api.getCategoryList({ type: 1 })
-					.then(res => {
-						if (res.code === 200) {
-							this.car = [res.data]
-							res.data.forEach(item => {
-								if (item.id === this.form.categoryId) {
-									this.carArr = [item.detailList]
-								}
-							})
-						}
-						
-					})
-				this.$u.api.getCategoryList({ type: 0 })
-					.then(res => {
-						if (res.code === 200) {
-							this.variety = [res.data]
-						}
-					})
-			},
-			confirmCategary(e) {
-				this.form.categoryId = e.value[0].id
-				this.form.categoryName = e.value[0].name
-				this.carArr = [e.value[0].detailList]
-				this.form.carUnit = ''
-				this.show = false
-			},
-			confirmVariety(e) {
-				this.form.transportTypeId = e.value[0].id
-				this.form.transportTypeName = e.value[0].name
-				this.show1 = false
-			},
-			confirmCarArr(e) {
-				this.form.carUnit = e.value[0]
-				this.show3 = false
-			},
-			confirmDate(e) {
-				this.form.startDate = e[0]
-				this.form.endDate = e[e.length - 1]
-				let time = this.form.startDate == this.form.endDate ? 1 : 0
-				this.form.totalDays = e.length - time;
-				this.show2 = false
-				this.getPrice()
-			},
-			addAddr() {
-				this.form.wayInfoDTOList.push({
-					lat: '',
-					lgt: '',
-					location: ''
-				})
-			},
-			selectAddress(type, index) {
-				uni.chooseLocation({
-					success: (res) => {
-						if ([2].includes(type)) {
-							this.form.latitude = res.latitude
-							this.form.longitude = res.longitude
-							this.form.location = res.name || res.address
-							this.form.address = res.name || res.address
-						} else if (type === 3) {
-							this.form.locationEnd = res.name || res.address
-							this.form.latEnd = res.latitude
-							this.form.lgtEnd = res.longitude
-						} else if (type === 4) { 
-							this.form.wayInfoDTOList[index].lat = res.latitude
-							this.form.wayInfoDTOList[index].lgt = res.longitude
-							this.form.wayInfoDTOList[index].location = res.name || res.address
-						}
-					}
-				});
-			},
-		}
-	}
-</script>
-
-<style>
-	page {
-		background-color: #F7F7F7 !important;
-	}
-</style>
-
-<style lang="scss" scoped>
-	.index {
-		width: 100%;
-		.footer {
-			width: 100%;
-			height: calc(214rpx + env(safe-area-inset-bottom));
-			padding: 20rpx 30rpx;
-			box-sizing: border-box;
-			position: fixed;
-			bottom: 0;
-			left: 0;
-			z-index: 9;
-			display: flex;
-			flex-direction: column;
-			justify-content: space-between;
-			background: #FFFFFF;
-			box-shadow: 0rpx -2rpx 4rpx 0rpx rgba(0,0,0,0.06);
-			.footer-price {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.footer-price-info {
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #222222;
-				}
-				.footer-price-num {
-					display: flex;
-					align-items: center;
-					text {
-						&:nth-child(1) {
-							font-weight: 500;
-							font-size: 40rpx;
-							color: #FF0000;
-							margin-right: 20rpx;
-						}
-						&:nth-child(2) {
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #222222;
-						}
-					}
-				}
-			}
-			.footer-bottom {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.footer-bottom-kf {
-					flex-shrink: 0;
-					margin-right: 40rpx;
-					display: flex;
-					flex-direction: column;
-					align-items: center;
-					justify-content: center;
-					image {
-						width: 36rpx;
-						height: 36rpx;
-					}
-					text {
-						font-weight: 400;
-						font-size: 24rpx;
-						color: #222222;
-						margin-top: 8rpx;
-					}
-				}
-				.footer-bottom-btn {
-					flex: 1;
-					height: 88rpx;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					background: #00BC12;
-					box-shadow: 0rpx 8rpx 12rpx 0rpx rgba(91,190,56,0.16);
-					border-radius: 44rpx;
-					text {
-						&:nth-child(1) {
-							font-weight: 500;
-							font-size: 32rpx;
-							color: #FFFFFF;
-						}
-						&:nth-child(2) {
-							font-weight: 500;
-							font-size: 26rpx;
-							color: #FFFFFF;
-						}
-					}
-				}
-			}
-		}
-		.list {
-			width: 100%;
-			display: flex;
-			flex-direction: column;
-			.list-item {
-				width: 100%;
-				padding: 40rpx 30rpx;
-				box-sizing: border-box;
-				background-color: #ffffff;
-				border-radius: 20rpx;
-				margin-bottom: 20rpx;
-				&:last-child {
-					margin: 0 !important;
-				}
-				textarea {
-					width: 100%;
-					height: 120rpx;
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #111111;
-				}
-				.list-item-cate {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					margin-top: 20rpx;
-					margin-bottom: 40rpx;
-					.active {
-						background: #00BC12 !important;
-						color: #ffffff !important;
-					}
-					.list-item-cate-item {
-						width: 208rpx;
-						height: 72rpx;
-						line-height: 72rpx;
-						text-align: center;
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #333333;
-						background: #EEEEEE;
-						border-radius: 36rpx;
-						margin-right: 24rpx;
-						&:last-child {
-							margin: 0 !important;
-						}
-					}
-				}
-				.list-item-label {
-					display: flex;
-					align-items: center;
-					margin-bottom: 28rpx;
-					text {
-						font-weight: 600;
-						font-size: 32rpx;
-						color: #222222;
-					}
-					.list-item-label-x {
-						width: 6rpx;
-						height: 30rpx;
-						background: #00BC12;
-						border-radius: 4rpx;
-						margin-right: 20rpx;
-					}
-					.list-item-label-info {
-						font-weight: 400;
-						font-size: 26rpx;
-						color: #999999;
-						margin-left: 26rpx;
-					}
-				}
-				.list-item-zk {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					text {
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #00BC12;
-						margin-right: 8rpx;
-					}
-				}
-				.list-item-row {
-					width: 100%;
-					display: flex;
-					flex-direction: column;
-					border-bottom: 1rpx solid #E5E5E5;
-					margin-bottom: 30rpx;
-					&:last-child {
-						margin: 0 !important;
-					}
-					.address {
-						width: 100%;
-						background: #F7F7F7;
-						border-radius: 16rpx;
-						padding: 0 30rpx;
-						box-sizing: border-box;
-						margin-top: 20rpx;
-						.address-item {
-							width: 100%;
-							// height: 100rpx;
-							padding: 30rpx 0;
-							box-sizing: border-box;
-							display: flex;
-							align-items: center;
-							justify-content: space-between;
-							.address-item-img {
-								flex: 1;
-								height: 100%;
-								display: flex;
-								align-items: center;
-								image {
-									flex-shrink: 0;
-									width: 36rpx;
-									height: 36rpx;
-									margin-right: 24rpx;
-								}
-								text {
-									flex: 1;
-									height: 100%;
-									display: flex;
-									align-items: center;
-									font-weight: 400;
-									font-size: 30rpx;
-									color: #999999;
-									border-bottom: 1rpx solid #E5E5E5;
-								}
-							}
-						}
-					}
-					.list-item-row-label {
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #666666;
-						display: flex;
-						align-items: center;
-						position: relative;
-						.list-item-row-label-add {
-							position: absolute;
-							right: 0;
-							top: 0;
-							font-weight: 400;
-							font-size: 26rpx;
-							color: #00BC12;
-						}
-						b {
-							color: red;
-						}
-					}
-					.list-item-row-user {
-						width: 100%;
-						display: flex;
-						flex-direction: column;
-						.user-item {
-							width: 100%;
-							padding: 30rpx 0;
-							box-sizing: border-box;
-							display: flex;
-							align-items: center;
-							margin-bottom: 30rpx;
-							justify-content: space-between;
-							border-bottom: 1rpx solid #E5E5E5;
-							&:last-child {
-								margin: 0 !important;
-							}
-							text {
-								flex-shrink: 0;
-								font-weight: 400;
-								font-size: 30rpx;
-								color: #333333;
-							}
-							input {
-								flex: 1;
-								text-align: center;
-								margin: 0 30rpx;
-								font-weight: 400;
-								font-size: 30rpx;
-								color: #222222;
-							}
-						}
-					}
-					.list-item-row-radio {
-						width: 100%;
-						display: flex;
-						padding: 30rpx 0;
-						box-sizing: border-box;
-						flex-direction: column;
-						border-bottom: 1rpx solid #E5E5E5;
-						.radio-item {
-							width: 100%;
-							display: flex;
-							align-items: center;
-							margin-bottom: 30rpx;
-							&:last-child {
-								margin: 0 !important;
-							}
-							.radio-item-label {
-								width: 200rpx;
-								flex-shrink: 0;
-								font-weight: 400;
-								font-size: 30rpx;
-								color: #111111;
-							}
-							.radio-item-list {
-								flex: 1;
-								display: flex;
-								flex-direction: column;
-								.radio-item-list-l {
-									width: 100%;
-									display: flex;
-									align-items: center;
-									.active {
-										background: #00BC12 !important;
-										color: #ffffff !important;
-									}
-									.radio-item-list-item {
-										width: 124rpx;
-										height: 72rpx;
-										line-height: 72rpx;
-										text-align: center;
-										background: #EEEEEE;
-										border-radius: 36rpx;
-										font-weight: 400;
-										font-size: 28rpx;
-										color: #111111;
-										margin-right: 30rpx;
-										&:last-child {
-											margin: 0 !important;
-										}
-									}
-								}
-								.radio-item-list-data {
-									width: 100%;
-									display: flex;
-									align-items: center;
-									justify-content: flex-end;
-									margin-top: 42rpx;
-									text {
-										font-weight: 400;
-										font-size: 30rpx;
-										color: #333333;
-									}
-									input {
-										width: 100rpx;
-										font-weight: bold;
-										font-size: 30rpx;
-										color: #222222;
-										text-align: right;
-										margin: 0 30rpx;
-									}
-								}
-							}
-						}
-					}
-					.list-item-row-upload {
-						width: 100%;
-						display: flex;
-						align-items: center;
-						justify-content: space-between;
-						flex-wrap: wrap;
-						padding: 30rpx 0;
-						box-sizing: border-box;
-						.upload-item {
-							width: 215rpx;
-							height: 215rpx;
-							display: flex;
-							align-items: center;
-							flex-direction: column;
-							justify-content: center;
-							background: #F8F9FB;
-							border-radius: 8rpx;
-							border: 2rpx solid #EEEEEE;
-							position: relative;
-							margin-bottom: 15rpx;
-							&:last-child {
-								margin: 0 !important;
-							}
-							image {
-								width: 100%;
-							}
-							text {
-								font-weight: 400;
-								font-size: 26rpx;
-								color: #666666;
-								margin-top: 16rpx;
-							}
-							.upload-item-dele {
-								position: absolute;
-								top: -20rpx;
-								right: -20rpx;
-								width: 40rpx;
-								height: 40rpx;
-								z-index: 9;
-							}
-						}
-					}
-					.list-item-row-val {
-						// width: 100%;
-						padding: 30rpx 0;
-						box-sizing: border-box;
-						display: flex;
-						align-items: center;
-						justify-content: space-between;
-						text {
-							// width: 80%;
-							flex-shrink: 0;
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #999999;
-						}
-						input {
-							width: 100%;
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #222222;
-						}
-						textarea {
-							width: 100%;
-							height: 90rpx;
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #111111;
-						}
-						.val-active {
-							background: #00BC12 !important;
-							color: #ffffff !important;
-						}
-						.val-cate-item {
-							width: 208rpx;
-							height: 72rpx;
-							line-height: 72rpx;
-							text-align: center;
-							font-weight: 400;
-							font-size: 28rpx;
-							color: #333333;
-							background: #EEEEEE;
-							border-radius: 36rpx;
-							margin-right: 24rpx;
-							&:last-child {
-								margin: 0 !important;
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-</style>
diff --git a/small-program/pages/itinerary/itinerary.vue b/small-program/pages/itinerary/itinerary.vue
new file mode 100644
index 0000000..94d9b9c
--- /dev/null
+++ b/small-program/pages/itinerary/itinerary.vue
@@ -0,0 +1,19 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style lang="scss">
+
+</style>
\ No newline at end of file
diff --git a/small-program/pages/login/login.vue b/small-program/pages/login/login.vue
deleted file mode 100644
index 972aa1e..0000000
--- a/small-program/pages/login/login.vue
+++ /dev/null
@@ -1,120 +0,0 @@
-<template>
-	<view class="box">
-		<view class="box-title">娆㈣繋浣跨敤杩戝揩</view>
-		<view class="box-tips">璇风櫥褰�</view>
-		<view class="box-btn" >
-			<button  class="box-btn"  v-if="agree" open-type="getPhoneNumber" @getphonenumber="getPhone" >鎵嬫満鍙蜂竴閿櫥褰�</button>
-		    <button  class="box-btn"  v-if="!agree" @click="tipAgree">鎵嬫満鍙蜂竴閿櫥褰�</button> 
-		</view>
-		<view class="box-footer">
-			<image src="/static/icon/ic_notagree@2x.png" mode="widthFix" v-if="!agree" @click="agreeDo"></image>
-			<image src="/static/icon/ic_agree@2x.png" mode="widthFix" v-if="agree" @click="agreeDo"></image> 
-			<text @click="agreeDo">鎴戝凡闃呰骞跺悓鎰�<text class="bluetxt" @click="jumpService(4)">銆婄敤鎴峰崗璁��</text>锛�<text class="bluetxt" @click="jumpService(5)"> 銆婇殣绉佸崗璁斂绛栥��</text></text>
-		</view>
-	</view>
-</template>
-<script>
-import { mapState } from 'vuex'
-	export default {
-		computed: {
-			...mapState(['userInfo','openid'])
-		},
-		data() {
-			return {
-				agree:false
-			}
-		},
-		methods: {
-			jumpService(flag) {
-				uni.navigateTo({
-					url: '/pages/rich-text-page/rich-text-page?flag='+flag
-				})
-			},
-			agreeDo(){
-				this.agree = !this.agree
-			},
-			tipAgree(){
-				uni.showToast({ title: '璇峰厛宸查槄璇诲苟鍚屾剰銆婄敤鎴峰崗璁�嬶紝銆婇殣绉佸崗璁斂绛栥��', icon: 'error', duration: 2000 });
-			},
-			getPhone(e) {
-				console.log(e)
-				if(!this.agree ){
-					return
-				}
-				if (e.detail.errMsg !== 'getPhoneNumber:ok') {
-					uni.showToast({ title: '鑾峰彇鎺堟潈鎵嬫満鍙峰け璐�', icon: 'error', duration: 2000 });
-					return
-				}
-				var that = this;
-				that.$u.api.wxAuthPhone({
-					code: e.detail.code,
-					openid: that.openid||''
-				}).then(result => {
-					if (result.code === 200) {
-						that.$store.commit('setUserInfo', result.data.member)
-						that.$store.commit('setToken', result.data.token)
-						uni.$emit('refresh')
-						uni.navigateBack({ delta: 1 });
-					}
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.box {
-		width: 100%;
-		padding: 0 40rpx;
-		box-sizing: border-box;
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		justify-content: center;
-		.box-title {
-			font-weight: 600;
-			font-size: 48rpx;
-			color: #222222;
-			margin-top: 310rpx;
-			margin-bottom: 20rpx;
-		}
-		.box-tips {
-			font-weight: 400;
-			font-size: 28rpx;
-			color: #999999;
-			margin-bottom: 180rpx;
-		}
-		.box-btn {
-			width: 100%;
-			height: 88rpx;
-			line-height: 88rpx;
-			text-align: center;
-			font-weight: 500;
-			font-size: 32rpx;
-			color: #FFFFFF;
-			background: #00BC12;
-			box-shadow: 0rpx 8rpx 12rpx 0rpx rgba(91,190,56,0.16);
-			border-radius: 44rpx;
-			margin-bottom: 72rpx;
-		}
-		.box-footer {
-			width: 100%;
-			display: flex;
-			align-items: center;
-			image {
-				width: 36rpx;
-				height: 36rpx;
-				flex-shrink: 0;
-				margin-right: 14rpx;
-			}
-			text {
-				font-weight: 400;
-				font-size: 26rpx;
-				color: #888888;
-			}
-		}
-	}
-	.bluetxt{
-		color: royalblue !important;
-	}
-</style>
diff --git a/small-program/pages/message/message.vue b/small-program/pages/message/message.vue
new file mode 100644
index 0000000..94d9b9c
--- /dev/null
+++ b/small-program/pages/message/message.vue
@@ -0,0 +1,19 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style lang="scss">
+
+</style>
\ No newline at end of file
diff --git a/small-program/pages/order-details/order-details.vue b/small-program/pages/order-details/order-details.vue
deleted file mode 100644
index b404b25..0000000
--- a/small-program/pages/order-details/order-details.vue
+++ /dev/null
@@ -1,1702 +0,0 @@
-<template>
-	<view class="order">
-		<!-- <view class="order-quxiaole">
-			宸插彇娑�
-		</view> -->
-		<view class="order-head" :style="{ backgroundImage: 'url(' + bgImg + ')' }">
-			<view class="order-head-status">{{info.statusName || ''}}</view> 			
-			<view class="order-head-info" v-if="isAcceptor && info.isUpdate ==1" style="color: red;">
-				璁㈠崟淇℃伅宸蹭慨鏀癸紝璇峰強鏃剁‘璁わ紝{{timeInfo}}鍚庡皢鑷姩鍚屾剰
-			</view> 
-			<view class="order-head-info" v-if="isPushlishor  && info.type ==2 && info.status ==0" style="color: red;">
-				鍓╀綑鏀粯鏃堕棿锛寋{timeInfo1}}鍚庡皢鑷姩鍙栨秷
-			</view> 
-			<view class="order-head-info" v-else >{{getStatusInfo()}}</view> 
-		</view>
-		<view class="order-quxiao">
-			<view class="order-quxiao-btn" @click="show = true" v-if="(isAcceptor && info.status ===2) || (isPushlishor  &&  info.isUpdate!=1 &&  info.status ===2&&  info.canStart ===1)">鍙栨秷璁㈠崟</view>
-			<view class="order-quxiao-btn1" v-if="isPushlishor && info.type!=2 &&  info.isUpdate!=1 &&   info.status ===2 &&  info.canStart ===1" @click="jumpEdit()">淇敼璁㈠崟</view>
-		</view>
-		<view class="order-user"  v-if="isPushlishor && info.acceptMemberId">
-			<view class="order-user-info">
-				<view class="user-info-l">
-					<view class="user-info-l-image">
-						<image v-if="info.acceptCoverImage" :src="info.acceptCoverImage" mode="widthFix"></image>
-						<image v-else src="/static/icon/img@2x.png" mode="widthFix"></image>
-					</view>
-					<view class="user-info-l-i">
-						<view class="user-info-l-i-top">
-							<text>{{info.acceptName || ''}}</text>
-							<view class="user-info-l-i-top-jdf">鎺ュ崟鏂�</view>
-						</view>
-						<view class="user-info-l-i-bottom">
-							<view class="user-info-l-i-bottom-item">
-								<text>璇勫垎锛�</text>
-								<text>{{info.score || '-'}}</text>
-							</view>
-							<view class="user-info-l-i-bottom-item">
-								<text>鍗曟暟锛�</text>
-								<text>{{info.receiveNum ? info.receiveNum : 0}}</text>
-							</view>
-						</view>
-					</view>
-				</view>
-				<view class="user-info-r" @click="contactPhone(info.acceptPhone)" v-if="info.status ==2||info.status==3||info.status==5">
-					<image src="/static/icon/ic_call@2x.png" mode="widthFix"></image>
-					<text>鑱旂郴甯堝倕</text>
-				</view>
-			</view>
-		</view>
-		<view class="order-info" >
-			<view class="order-info-title">
-				<view class="x"></view>
-				<text v-if="info.type===0">鐢ㄥ伐鍗�-{{(info.workType===0?'閲囨憳宸�':(info.workType===1?'鍒嗘嫞宸�':'鍖呰宸�')) }}</text> 
-				<text v-if="info.type===1">杩愯揣鍗�-{{info.categoryName || ''}}</text>
-				<text v-if="info.type===2">璁㈤鍗�</text>
-				
-			</view>
-			<view v-if="info.type===0" class="order-info-wz">
-			{{info.categoryName || ''}}锝渰{info.priceNum1 || '' }}{{feeFrom.priceParam1.unit}}{{feeFrom.priceParam2.name!=null?(' | '+info.priceNum2+feeFrom.priceParam2.unit):''}}</view>
-			<view v-if="info.type===1" class="order-info-wz">{{info.carUnit || ''}}{{' | '}}{{info.transportTypeName || ''}}{{' | '}}{{info.transportNum || '' }}{{info.transportUnit||''}}{{' | '}}闇�{{info.priceNum2 || '' }}杈�</view> 
-			<view class="order-info-address" v-if="info.type!==1" @click="openAddr({ lat: info.lat, lgt: info.lgt, location: info.location })">
-				<image src="/static/icon/order_ic_location@2x.png" mode="widthFix"></image>
-				<view class="order-info-address-info">
-					<text>{{info.location || '' }}</text>
-					<text>{{info.locationRemark || '' }}</text>
-				</view>
-			</view>
-			<view class="order-info-address" v-if="info.type!==1">
-				<image src="/static/icon/order_ic_time@2x.png" mode="widthFix"></image>
-				<view class="order-info-address-info">
-					<text>{{info.startDate || ''}}{{' 鑷� '}}{{info.endDate || ''}}({{info.totalDays||0}}澶�)</text>
-				</view>
-			</view>
-			<view class="address" v-if="info.type===1 && wayList && wayList.length>0">
-				<view class="address-xian"></view>
-				<view class="address-row"  v-for="(item,index) in wayList" style="display: block;margin: 10px" :key="index" @click="openAddr(item)">
-					<image v-if="index === 0" src="/static/icon/ic_qidian@2x.png" mode="widthFix"></image>
-					<image v-if="index >0 && index < wayList.length-1" src="/static/icon/ic_jingguo@2x.png" mode="widthFix"></image>
-					<image v-if="index === wayList.length-1" src="/static/icon/ic_zhongdian@2x.png" mode="widthFix"></image>
-					<view class="address-row-info">
-						{{item.location || ''}}
-						<image class="address-row-right" src="/static/icon/ar_address@2x.png" mode="widthFix"></image>
-					</view>
-				</view>
-			</view>
-			<view class="order-info-x"></view>
-			<view class="order-info-supplement">
-				<view class="order-info-supplement-title">闇�姹傝ˉ鍏咃細</view>
-				<view class="order-info-supplement-val">{{info.supplement || '' }}</view>
-				<view class="order-info-supplement-list">
-					<view class="order-info-supplement-list-item" v-for="(item,index) in info.multifileList" v-if="info.multifileList && info.multifileList.length>0" :key="item.imgurl" @click="previemImg(index, info.multifileList)">
-						<image v-if="item.fileurlFull"  :src="item.fileurlFull" mode="widthFix"></image>
-					</view>
-					<view style="width: 156rpx; height: 0;"></view>
-					<view style="width: 156rpx; height: 0;"></view>
-				</view>
-			</view>
-			<view class="order-info-price">
-				<view class="price-row" v-if="feeFrom.priceParam1.name">
-					<view class="price-row-label">{{feeFrom.priceParam1.name}}</view>
-					<view class="price-row-val" >  {{(info.originPriceNum1||0) }}{{feeFrom.priceParam1.unit}} </view>
-				</view>
-				<view class="price-row" v-if="feeFrom.priceParam2.name">
-					<view class="price-row-label">{{feeFrom.priceParam2.name}}</view>
-					<view class="price-row-val" >  {{(info.originPriceNum2||0) }}{{feeFrom.priceParam2.unit}} </view>
-				</view>
-				<view class="price-row">
-					<view class="price-row-label">璐圭敤鏍囧噯</view>
-					<view class="price-row-val" v-if="info.type !==2">{{((info.price||0)/100).toFixed(2) }}{{info.priceUnit || '' }}</view>
-					<view class="price-row-val" v-if="info.type ===2">
-						<text  v-for="(item,index) in wayList">
-							 {{item.name || ''}}{{((item.price||0)/100).toFixed(2)}}鍏儃{item.num||0}}浠絳{index != wayList.length-1?'|':''}}
-						</text>
-					</view>
-				</view>
-				<view class="price-row">
-					<view class="price-row-label">棰勪及鎬昏垂鐢�(鍏�)</view>
-					<view class="price-row-val" :style="{color: (!isPushlishor&&info.status!=4&&info.status!=5) || (isPushlishor&&info.type!=2 &&info.status!=4&&info.status!=5) ? '#FF0000' : ''}">
-						楼{{((info.originEstimatedAccount||0)/100).toFixed(2) }}
-					</view>
-				</view> 
-			</view>
-			<template v-if="info.type!=2&&(info.status==5|| info.status==4)">
-				<view class="order-info-x"></view>
-				<view class="order-info-supplement" >
-					<view class="order-info-supplement-title">宸茬‘璁よ垂鐢�</view>
-				</view>
-				<view class="order-info-price">
-					<view class="price-row" v-if="feeFrom.priceParam1.name">
-						<view class="price-row-label">瀹為檯{{feeFrom.priceParam1.name}}</view>
-						<view class="price-row-val" > {{(info.priceNum1||0) }}{{feeFrom.priceParam1.unit}} </view>
-					</view>
-					<view class="price-row" v-if="feeFrom.priceParam2.name">
-						<view class="price-row-label">瀹為檯{{feeFrom.priceParam2.name}}</view> 
-						<view class="price-row-val" > {{(info.priceNum2||0) }}{{feeFrom.priceParam2.unit}} </view>
-					</view>
-					<view class="price-row" >
-						<view class="price-row-label">鍏朵粬璐圭敤</view>
-						<view class="price-row-val" >楼{{((info.confirmOtherFee||0)/100).toFixed(2) }} </view>
-					</view>
-					<view class="price-row">
-						<view class="price-row-label">瀹為檯鎬昏垂鐢�(鍏�)</view>
-						<view class="price-row-val" :style="{color: info.status !=4 ? '#FF0000' : ''}">
-							楼{{((info.estimatedAccount||0)/100).toFixed(2) }}
-						</view>
-					</view>
-					<view class="price-row" >
-						<view class="price-row-label">澶囨敞</view>
-						<view class="price-row-val" >
-							{{ info.confirmFeeRemark ||'' }}
-						</view>
-					</view>
-				</view>
-			</template>
-			<template v-if="info.type==2 || info.status==4">
-				<view class="order-info-x"></view>
-				<view class="order-info-supplement" >
-					<view class="order-info-supplement-title">瀹為檯璐圭敤</view>
-				</view>
-				<view class="order-info-price">
-					<view class="price-row" v-if="isPushlishor">
-						<view class="price-row-label" >瀹為檯鏀粯(鍏�)</view>
-						<view class="price-row-val" style="color: #FF0000;">楼{{((info.payAccount||0)/100).toFixed(2) }} </view>
-					</view>
-					<view class="price-row" v-if="isAcceptor && info.status==4" >
-						<view class="price-row-label">瀹為檯鍒拌处(鍏�)</view>
-						<view class="price-row-val" style="color: #FF0000;">楼{{((info.receiveAccount||0)/100).toFixed(2) }} </view>
-					</view>
-					 
-				</view>
-			</template>
-		</view>
-		<view class="order-info" v-if="info.commentStatus ===1">
-			<view class="order-info-title">
-				<text>璇勪环</text>
-			</view>
-			<u-rate :count="count" readonly activeColor="#FFC331" size="26" v-model="info.commentLevel"></u-rate>
-			<view class="order-info-remark">
-				{{ info.commentInfo || '-'}}
-			</view>
-		</view>
-		<view class="order-ren" v-if="isAcceptor">
-			<view class="order-ren-left">
-				<view class="order-ren-left-img">
-					<image v-if="info.releaseCoverImage" :src="info.releaseCoverImage" mode="widthFix"></image>
-					<image v-else src="/static/icon/img@2x.png" mode="widthFix"></image>
-				</view>
-				<text>{{info.releaseName || ''}}</text>
-				<view class="order-ren-left-tip">涓氫富</view>
-			</view>
-			<view class="order-ren-x"></view>
-			<view class="order-ren-lx"  v-if="info.status ==2||info.status==3||info.status==5"  @click="contactPhone(info.releasePhone)">
-				<image src="/static/icon/ic_call@2x.png" mode="widthFix"></image>
-				<text>鍙戝崟鏂�</text>
-			</view>
-		</view>
-		<view class="order-info">
-			<view class="order-info-title">
-				<text>璁㈠崟淇℃伅</text>
-			</view>
-			<view class="order-info-list">
-				<view class="order-info-list-item" v-if="info.code">
-					<text>璁㈠崟缂栧彿锛�</text>
-					<text>{{info.code || ''}}</text>
-				</view>
-				<view class="order-info-list-item" v-if="info.createTime">
-					<text>涓嬪崟鏃堕棿锛�</text>
-					<text>{{info.createTime||'-'}}</text>
-				</view>
-				<view class="order-info-list-item" v-if="info.acceptTime">
-					<text>鎺ュ崟鏃堕棿锛�</text>
-					<text>{{info.acceptTime||'-'}}</text>
-				</view>
-				<view class="order-info-list-item" v-if="info.workStartTime">
-					<text>寮�濮嬫椂闂达細</text>
-					<text>{{info.workStartTime||'-'}}</text>
-				</view>
-				<view class="order-info-list-item" v-if="info.confirmFeeTime">
-					<text>璐圭敤纭鏃堕棿锛�</text>
-					<text>{{info.confirmFeeTime||'-'}}</text>
-				</view>
-				<view class="order-info-list-item" v-if="info.finishTime">
-					<text>瀹屾垚鏃堕棿锛�</text>
-					<text>{{info.finishTime||'-'}}</text>
-				</view>
-				<view class="order-info-list-item" v-if="info.payTime">
-					<text>鏀粯鏃堕棿锛�</text>
-					<text>{{info.payTime||'-'}}</text>
-				</view>
-				<view class="order-info-list-item" v-if="info.payMethod && info.payMethod >= 0">
-					<text>鏀粯鏂瑰紡锛�</text>
-					<text>{{info.payMethod==0?'寰俊鏀粯':'-'}}</text>
-				</view>
-				<view class="order-info-list-item" v-if="info.wxExternalNo">
-					<text>浜ゆ槗鍗曞彿锛�</text>
-					<text>{{info.wxExternalNo || '-'}}</text>
-				</view>
-			</view>
-		</view>
-		<view style="width: 100%; height: calc(108rpx + env(safe-area-inset-bottom));" v-if="![99].includes(info.status)"></view>
-		<view class="order-footer" v-if="![99].includes(info.status)">
-			<template v-if="isPushlishor && info.isUpdate != 1 && info.status === 2 && info.canStart===1">
-				<sunui-mverify v-if="1==2" hint="寮�濮嬩綔涓�" @change="getaccept($event)"></sunui-mverify>
-				<view class="order-footer-btn" v-if="comparisonTime(info.startDate)"> 
-					<view class="order-footer-btn-b" @click="show8 = true">寮�濮嬩綔涓�</view>
-				</view>
-			</template>
-			<view class="order-footer-btn" v-else > 
-				<view class="order-footer-btn-a" @click="show = true" v-if="1==2&& isAcceptor && info.status ===2">鍙栨秷璁㈠崟</view>
-				<view class="order-footer-btn-a" @click="show = true" v-if="isPushlishor && (info.status ===0 ||  info.status ===1|| info.status ===2)">鍙栨秷璁㈠崟</view>
-				<view class="order-footer-btn-b" @click="show2=true" v-if="isPushlishor && (info.status ===4 && info.commentStatus!=1)">鍘昏瘎浠�</view>
-				<view class="order-footer-btn-b" v-if="isPushlishor&&((info.status ===5 && info.type !==2)|| (info.status ===0 && info.type===2))" @click="show1 = true">{{info.type === 2 ? '缁х画鏀粯' : '瀹屾垚骞舵敮浠�'}}</view>
-				<view class="order-footer-btn-b" @click="show7 = true" v-if=" info.type!==2 &&isAcceptor && info.status ===3">纭璐圭敤</view>
-				<view class="order-footer-btn-b" v-if="isPushlishor && ((info.status ===3 && info.type===2))" @click="payment1">瀹屾垚浣滀笟</view>
-				<view class="order-footer-btn-b" v-if="info.type !=2 && info.isUpdate!=1&& isPushlishor && (info.status ===0 ||  info.status ===1|| info.status ===2)" @click="jumpEdit()">淇敼璁㈠崟</view>
-				<view class="order-footer-btn-b" @click="show5 =true" v-if="isAcceptor&& (info.isUpdate==1 && info.status ===2)">淇敼纭</view>
-				<view class="order-footer-btn-b"  @click="show6 =true" v-if="!isPushlishor && (info.status ===1)">鎶㈠崟</view>
-			</view>
-			<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
-		</view>
-		<u-modal
-			title="娓╅Θ鎻愮ず"
-			:show="show"
-			closeOnClickOverlay
-			showCancelButton
-		>
-			<view class="slot-content">
-				纭鍙栨秷璁㈠崟鍚楋紵
-			</view>
-			<view slot="confirmButton" style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
-				<view class="btn1" @click="show = false">鎴戝啀鎯虫兂</view>
-				<view class="btn2" @click="cancelDo">纭鍙栨秷</view>
-			</view>
-		</u-modal>
-		<u-modal
-			title="娓╅Θ鎻愮ず"
-			:show="show4"
-			closeOnClickOverlay
-			showCancelButton
-		>
-			<view class="slot-content">
-				纭鍙栨秷璁㈠崟鍚楋紵
-			</view>
-			<view slot="confirmButton" style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
-				<view class="btn1" @click="show = false">鎴戝啀鎯虫兂</view>
-				<view class="btn2" @click="cancelDo">纭鍙栨秷</view>
-			</view>
-		</u-modal>
-		<u-modal
-			title="娓╅Θ鎻愮ず"
-			:show="show6"
-			closeOnClickOverlay
-			showCancelButton
-		>
-			<view class="slot-content">
-				纭鎶㈠崟鍚楋紵
-			</view>
-			<view slot="confirmButton" style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
-				<view class="btn1" @click="show6 = false">鎴戝啀鎯虫兂</view>
-				<view class="btn2" @click="acceptDo()">纭鎺ュ崟</view>
-			</view>
-		</u-modal>
-		<u-modal
-			title="娓╅Θ鎻愮ず"
-			:show="show8"
-			closeOnClickOverlay
-			showCancelButton
-		>
-			<view class="slot-content">
-				寮�濮嬩綔涓氬悧锛�
-			</view>
-			<view slot="confirmButton" style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
-				<view class="btn1" @click="show8 = false">鎴戝啀鎯虫兂</view>
-				<view class="btn2" @click="beginDo()">纭寮�濮�</view>
-			</view>
-		</u-modal>
-		<u-modal
-			title="娓╅Θ鎻愮ず"
-			:show="show5"
-			closeOnClickOverlay
-			showCancelButton
-		>
-			<view class="slot-content">
-				鏄惁鍚屾剰璁㈠崟淇敼鍐呭锛�
-			</view>
-			<view slot="confirmButton" style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
-				<view class="btn1" @click="show5=false">鎴戝啀鎯虫兂</view>
-				<view style="width: 20rpx; height: 100%;"></view>
-				<view class="btn2" style="background-color: #f56c6c; color: #ffffff;" @click="confirmUpdDo(1)">涓嶅悓鎰�</view>
-				<view style="width: 20rpx; height: 100%;"></view>
-				<view class="btn2" @click="confirmUpdDo(0)">鍚屾剰</view>
-			</view>
-		</u-modal>
-		<!-- 鏀粯寮圭獥 -->
-		<u-popup :show="show1" round="15" mode="bottom">
-			<view class="zhifu">
-				<view class="zhifu-head">
-					<view></view>
-					<text>鏀粯璁㈠崟</text>
-					<image @click="show1 = false" src="/static/icon/ic_close@2x.png" mode="widthFix"></image>
-				</view>
-				<view class="zhifu-c">
-					<view class="zhifu-c-info" v-if="info.type !== 2">
-						璇风‘璁ら噾棰濆苟鏀粯璐圭敤缁� <text>{{info.acceptName}}</text>
-					</view>
-					<view class="zhifu-c-info1">鏀粯閲戦锛�</view>
-					<view class="zhifu-c-input">
-						<image src="/static/icon/ic_money@2x.png" mode="widthFix"></image>
-						<input type="number" v-model="amount" :disabled="info.type === 2" placeholder="璇疯緭鍏�" />
-					</view>
-				</view>
-				<view class="zhifu-botton" @click="payment">纭鏀粯</view>
-			</view>
-		</u-popup>
-		<!-- 鏀粯寮圭獥 -->
-		<u-popup :show="show7" round="15" mode="bottom">
-			<view class="querenfee">
-				<view class="querenfee-head">
-					<view></view>
-					<text>璐圭敤纭</text>
-					<image @click="show7 = false" src="/static/icon/ic_close@2x.png" mode="widthFix"></image>
-				</view>
-				<view class="querenfee-c">
-					<view class="querenfee-c-info1">璐圭敤鏍囧噯锛�</view>
-					<viem class="money">{{((info.price||0)/100).toFixed(2) }}{{info.priceUnit || '' }}</viem>
-				</view>
-				<view class="querenfee-c" >					 
-					<view class="querenfee-c-info1"><text style="color: red;">*</text>瀹為檯{{feeFrom.priceParam1.name}}:</view>
-					<view class="querenfee-c-input"> 
-						<input type="number" placeholder-style="color: #999999; font-size: 50rpx; font-weight: 500;" @input="getTotal" v-model="feeFrom.priceNum1"   placeholder="0" />
-					</view>
-					<text class="querenfee-c-danw">{{feeFrom.priceParam1.unit}}</text>
-				</view>
-				<view class="querenfee-c" v-if="feeFrom.priceParam2.name !=null">
-					<view class="querenfee-c-info1"><text style="color: red;">*</text>瀹為檯{{feeFrom.priceParam2.name}}锛�</view>
-					<view class="querenfee-c-input"> 
-						<input type="number" v-model="feeFrom.priceNum2" placeholder-style="color: #999999; font-size: 50rpx; font-weight: 500;" @input="getTotal" placeholder="0" />
-					</view>
-					<text class="querenfee-c-danw" >{{feeFrom.priceParam2.unit}}</text>
-				</view>
-				<view class="querenfee-c">
-					<view class="querenfee-c-info1">鍏朵粬璐圭敤锛�</view>
-					<view class="querenfee-c-input">
-						<input type="digit" v-model="feeFrom.confirmOtherFee" placeholder-style="color: #999999; font-size: 50rpx; font-weight: 500;"  @input="getTotal" placeholder="0" />
-					</view>
-					<text class="querenfee-c-danw">鍏�</text>
-				</view>
-				<view class="querenfee-c" style="flex-direction: column;">
-					<view class="querenfee-c-info1" style="margin-bottom: 30rpx;">澶囨敞淇℃伅锛�</view>
-					<view class="querenfee-c-input" style="width: 100%; height: 200rpx; padding: 30rpx; box-sizing: border-box;">
-						<u--textarea placeholder="濡傞渶澶囨敞锛岃杈撳叆" border="none" v-model="feeFrom.confirmFeeRemark"  ></u--textarea>
-					</view>
-				</view>
-				<view class="querenfee-c">
-					<view class="querenfee-c-info1">瀹為檯鎬昏垂鐢細</view>
-					<view class="querenfee-c-price">
-						锟{confirmPayFee}}
-					</view>
-					<!-- <view class="querenfee-c-input">
-						<image src="/static/icon/ic_money@2x.png" mode="widthFix"></image>
-						<text class="querenfee-c-input money">{{confirmPayFee}}</text>
-					</view> -->
-				</view>
-				<view class="querenfee-c" style="margin-top: 12rpx;">
-					<view class="querenfee-tips">鏈�缁堣垂鐢ㄧ敱鍙戝崟鏂规敮浠橈紝鎺ュ崟鏂规敹鍒扮殑閲戦灏嗘墸闄ゅ钩鍙版墜缁垂鐢�</view>
-				</view>
-				<view class="querenfee-botton" @click="confirmFee">纭璐圭敤</view>
-			</view>
-		</u-popup>
-		<!-- 璇勪环 -->
-		<u-popup :show="show2" round="15" mode="bottom">
-			<view class="zhifu">
-				<view class="zhifu-head">
-					<view></view>
-					<text>璇勪环</text>
-					<image @click="show2 = false" src="/static/icon/ic_close@2x.png" mode="widthFix"></image>
-				</view>
-				<view class="zhifu-pj">
-					<view class="zhifu-pj-label">鏈嶅姟璇勪环</view>
-					<view class="zhifu-pj-val">
-						<u-rate :count="count" activeColor="#FFC331" size="26" v-model="value" @click=""></u-rate>
-					</view>
-				</view>
-				<view class="zhifu-textarea">
-					<image src="/static/icon/ic_pingjia@2x.png" mode="widthFix"></image>
-					<u--textarea placeholder="璇疯璇存偍瀵规湰娆′氦鏄撶殑鎰熷彈" border="none" v-model="commentInfo" count></u--textarea>
-				</view>
-				<view class="zhifu-botton" style="margin-top: 60rpx;" @click="commentDo">绔嬪嵆璇勪环</view>
-			</view>
-		</u-popup>
-	</view>
-</template>
-
-<script>
-	import { mapState } from 'vuex'
-	import sunuiMverify from '@/components/sunui-mverify/sunui-mverify.vue';
-	export default {
-		computed: {
-			...mapState( ['userInfo'])
-		},
-		data() {
-			return {
-				isPushlishor:false,//鏄惁鍙戝崟鏂�
-				isAcceptor:false,//鏄惁鎺ュ崟鏂�
-				show: false,
-				show1: false,
-				show2: false,
-				count: 5, 
-				show3:false,
-				timer:null,
-				timer1:null,
-				show4:false,
-				show5:false,
-				show6:false,
-				show7:false,
-				show8:false,
-				actionFlag:null,
-				timeInfo:'00:00:00',
-				timeInfo1:'00:00:00',
-				lessTime:null,
-				lessTime1:null,
-				value:0,
-				wayList:[],
-				bgImg: require('@/static/image/bg_green@2x.png'),
-				id: null,
-				loading:false,
-				commentInfo:'',
-				info: {},
-				amount: '',
-				confirmPayFee:0.00,
-				feeFrom:{
-					priceParam1:{
-						name:null,
-						unit:null
-					},
-					priceParam2:{
-						name:null,
-						unit:null
-					},
-					priceNum1:null,
-					priceNum2:null,
-					confirmFeeRemark:null,
-					confirmOtherFee:null,
-				}
-			};
-		},
-		onLoad(options) {
-			console.log(options)
-			var id = options.id
-			this.id = id 
-			this.actionFla=options.flag
-		},
-		onShow(options) { 
-			this.getOrderData()
-			console.log(this.comparisonTime('2025-09-13'))
-		},
-		methods:{ 
-			comparisonTime(start) {
-				let startDate = new Date().getTime();
-				let endDate = new Date(start).getTime();
-
-				return startDate >= endDate;
-			},
-			openAddr(e) {
-				uni.openLocation({
-					latitude: e.lat,
-					longitude: e.lgt,
-					name: e.location
-				})
-			},
-			beginDo(e) {
-				var that = this
-				uni.requestSubscribeMessage({
-					tmplIds: ['3rOz7DAnawrkKDM8b5_XW4FLivISWYov6d7QSC4ORsg'],
-					success(res) {
-						that.startJobs()
-					},
-					fail(err) {
-						that.startJobs()
-					}
-				}) 
-			},
-			startJobs(e) {
-				var that = this
-				this.$u.api.begin({ orderId: this.info.id })
-					.then(res => {
-						if (res.code === 200) {
-							that.show8=false
-							that.getOrderData()							
-						}
-					})
-			},
-			 
-			// 淇敼
-			jumpEdit() {
-				if (this.info.type === 0 && this.info.workType === 0) {
-					uni.navigateTo({
-						url: `/pages/using-workers/using-workers?id=${this.info.id}`
-					})
-				} else if (this.info.type === 0 && this.info.workType === 1) {
-					uni.navigateTo({
-						url: `/pages/sorting/sorting?id=${this.info.id}`
-					})
-				} else if (this.info.type === 0 && this.info.workType === 2) {
-					uni.navigateTo({
-						url: `/pages/packaging-worker/packaging-worker?id=${this.info.id}`
-					})
-				} else if (this.info.type === 1) {
-					uni.navigateTo({
-						url: `/pages/freight/freight?id=${this.info.id}`
-					})
-				}
-			},
-			payment1() {
-				var that = this
-				this.$u.api.doneOrder({
-					orderId: this.info.id
-				}).then(res => {
-					if (res.code === 200) {
-						that.getOrderData()
-					}
-				})
-			},
-			getTotal() {
-				this.$u.api.getTotal({
-					price: this.info.price,
-					priceUnit: this.feeFrom.priceParam1.unit,
-					priceNum1: this.feeFrom.priceNum1 || 0,
-					priceNum2: this.feeFrom.priceNum2 || 0,					
-					confirmOtherFee:(this.feeFrom.confirmOtherFee||0)*100,
-					type: this.info.type,
-					carType:this.info.carType ,
-					workType: this.info.workType
-				}).then(res => {
-					if (res.code === 200) {
-						this.confirmPayFee = (res.data / 100) || '0'
-					}
-				})
-			},
-			confirmFee(){
-				var that =this
-				if (!this.feeFrom.priceNum1) {
-					return uni.showToast({
-						title: '瀹為檯' + this.feeFrom.priceParam1.name + '涓嶈兘涓虹┖',
-						icon: 'none'
-					})
-				}
-				if (this.feeFrom.priceParam2.name && !this.feeFrom.priceNum2) {
-					return uni.showToast({
-						title: '瀹為檯' + this.feeFrom.priceParam2.name + '涓嶈兘涓虹┖',
-						icon: 'none'
-					})
-				}
-				this.$u.api.confirmFee({
-					confirmFeeRemark: this.feeFrom.confirmFeeRemark,
-					confirmOtherFee: (this.feeFrom.confirmOtherFee||0)*100,
-					orderId: this.info.id,
-					priceNum1: this.feeFrom.priceNum1,
-					priceNum2: this.feeFrom.priceNum2
-				}).then(res => {
-					if (res.code === 200) {
-						that.show7 = false
-						uni.showToast({ title: '鎿嶄綔鎴愬姛', icon: 'success', duration: 2000 });
-						that.getOrderData()
-					}
-				})
-			},
-			payment() {
-				var that = this
-				// 璁㈤
-				if (this.info.type === 2) {
-					this.$u.api.reusePay({
-						orderId: this.info.id
-					}).then(res => {
-						if (res.code === 200) {
-							wx.requestPayment({
-								timeStamp: res.data.object.timeStamp,
-								nonceStr: res.data.object.nonceStr,
-								package: res.data.object.packageVal,
-								signType: res.data.object.signType,
-								paySign: res.data.object.paySign,
-								success (res1) {
-									if (res1.errMsg = 'requestPayment:ok') {
-										that.show1 = false
-										uni.showToast({ title: '鏀粯鎴愬姛', icon: 'success', duration: 2000 });
-										that.getOrderData()
-									}
-								},
-								fail(err) {
-									console.log(err)
-								}
-							})
-						}
-					})
-				} else {
-					this.$u.api.doneOrder({
-						orderId: this.info.id,
-						amount: Number(this.amount) * 100
-					}).then(res => {
-						if (res.code === 200) {
-							wx.requestPayment({
-								timeStamp: res.data.object.timeStamp,
-								nonceStr: res.data.object.nonceStr,
-								package: res.data.object.packageVal,
-								signType: res.data.object.signType,
-								paySign: res.data.object.paySign,
-								success (res1) {
-									if (res1.errMsg = 'requestPayment:ok') {
-										that.show1 = false
-										uni.showToast({ title: '鏀粯鎴愬姛', icon: 'success', duration: 2000 });
-										that.getOrderData()
-									}
-								},
-								fail(err) {
-									console.log(err)
-								}
-							})
-						}
-					})
-				}
-			},
-			commentDo(){
-				var that = this
-				var param = { info: that.commentInfo,level:that.value||0,orderId: this.id}
-				this.$u.api.comment(param).then(res =>{
-					if(res.code ===200){
-						that.show2=false
-						uni.showToast({ title: '璇勪环鎴愬姛', icon: 'error', duration: 2000 });
-						that.getOrderData()
-					}
-				}) 
-			},
-			confirmUpdDo(status){
-				var that = this
-				var param = {orderId: this.id,status:status}
-				this.$u.api.confirmUpd(param).then(res =>{
-					if(res.code ===200){
-						that.show5=false
-						uni.showToast({ title: '纭鎴愬姛', icon: 'error', duration: 2000 });
-						if(status==1){
-							uni.navigateBack({ delta: 1 })
-						}else{
-							that.getOrderData()
-						} 
-					}
-				}) 
-			},
-			acceptDoBiz(){
-				var that = this
-				var param = {orderId: this.id}
-				this.$u.api.accept(param).then(res =>{
-					if(res.code ===200){
-						that.show6=false
-						uni.showToast({ title: '鎶㈠崟鎴愬姛', icon: 'error', duration: 2000 });
-						that.getOrderData()
-					}
-				}) 
-			},
-			acceptDo() {
-				var that = this; 
-				uni.requestSubscribeMessage({
-					tmplIds: ['AA97cHjvlPiNO4viMkVe4JifCf9TD5b5Eb7s6El3VS8','3YSC7gouRlSjHXz4CrWOGFzPmGwEBtFj4snwdfMvKHk','tDpYImlrdv-0d3euTrHbYZ1cEZvjVHTNlqHvV0tpLHg'],
-					success(res) {
-						that.acceptDoBiz()
-					},
-					fail(err) {
-						that.acceptDoBiz()
-					}
-				})
-			},
-			cancelDo(){
-				var that = this
-				uni.requestSubscribeMessage({
-					tmplIds: ['AA97cHjvlPiNO4viMkVe4JifCf9TD5b5Eb7s6El3VS8'],
-					success(res) {
-						var param ={ orderId:that.id}
-						that.$u.api.cancelOrder(param).then(res =>{
-							if(res.code ===200){
-								that.show=false
-								uni.showToast({ title: '璁㈠崟鍙栨秷鎴愬姛', icon: 'error', duration: 2000 });
-								if(that.userInfo.id !== that.info.releaseMemberId){
-									uni.navigateBack({ delta: 1 })
-								}else{
-									that.getOrderData()
-								} 
-							}
-						 }) 
-					},
-					fail(err) {
-						console.log(err)
-					}
-				})
-				
-			},
-			previemImg(current, arr) {
-				let urls = arr.map(item => item.fileurlFull)
-				uni.previewImage({ current, urls });
-			},
-			contactPhone(phone){
-				if(phone !=null && phone!=''){
-					uni.makePhoneCall({
-					   phoneNumber: phone  
-					})
-				}
-			},
-			//璁㈠崟鐘舵��:0=寰呮敮浠� 1=寰呮帴鍗曪紱2=宸叉帴鍗曪紱3=杩涜涓紱4=宸插畬鎴愶紱99=宸插彇娑�
-			getStatusInfo(){
-				if(this.isPushlishor){
-					//濡傛灉鏄彂甯冩柟
-					if(this.info.status === 0){
-						return '璇峰敖蹇畬鎴愭敮浠橈紝鍙戝竷璁㈠崟'
-					}else if(this.info.status === 1){
-						return '鎮ㄨ鍗曞凡缁忔垚鍔熷彂璧凤紝璇疯�愬績绛夊緟鎺ュ崟'
-					}else if(this.info.status === 5){
-						return '鎺ュ崟鏂瑰凡纭璐圭敤锛岃鏀粯'
-					}else if(this.info.status === 2){
-						if(this.info.isUpdate==1){
-							return '璁㈠崟宸蹭慨鏀癸紝璇风瓑寰呮帴鍗曟柟纭'
-						}
-						return '璁㈠崟宸叉帴鍗曪紝璇风偣鍑讳笅鏂光�滃紑濮嬩綔涓氣�濇寜閽�'
-					}else if(this.info.status === 3){
-						if(this.info.type ==2){
-							return '璁㈠崟浣滀笟杩涜涓紝璇风偣鍑讳笅鏂光�滃畬鎴愨�濇寜閽畬鎴愪綔涓�'
-						}
-						return  '璁㈠崟姝e湪杩涜涓紝绛夊緟浣滀笟瀹屾垚鎺ュ崟鏂圭‘璁よ垂鐢�'
-					}else if(this.info.status === 5){
-						return  '鎺ュ崟鏂瑰凡纭璐圭敤锛岃鐐瑰嚮涓嬫柟鈥滃畬鎴愬苟鏀粯鈥濇寜閽�'
-					}else if(this.info.status === 4){
-						return this.info.commentStatus==1?'鎮ㄧ殑璁㈠崟宸插畬鎴愶紝娆㈣繋鍐嶆浣跨敤': '鎮ㄧ殑璁㈠崟宸插畬鎴愶紝璇峰強鏃惰瘎浠�'
-					}else if(this.info.status === 99){
-						return '璁㈠崟宸插彇娑�'
-					}
-					//濡傛灉鏄帴鍗曟柟
-					
-				}else{
-					if(this.info.status === 0){
-						return ''
-					}else if(this.info.status === 1){
-						return '鍙戝崟鏂瑰凡鎴愬姛鍙戣捣璁㈠崟锛屾偍鍙互杩涜鎺ュ崟'
-					}else if(this.info.status === 2){
-						if(this.info.isUpdate==1){
-							return ''
-						}
-						return '鎮ㄥ凡鎺ュ崟锛岃鎸夋椂瀹屾垚璁㈠崟浠诲姟'
-					}else if(this.info.status === 5){
-						return '鎮ㄥ凡纭璐圭敤锛岀瓑寰呭彂鍗曟柟鏀粯'
-					}else if(this.info.status === 3){
-						return '璁㈠崟杩涜涓紝璇锋寜鏃跺畬鎴愯鍗曚换鍔�'
-					}else if(this.info.status === 4){
-						return '鎮ㄧ殑璁㈠崟宸插畬鎴�'
-					}else if(this.info.status === 99){
-						return '璁㈠崟宸插彇娑�'
-					}
-				}
-			},
-			updateTimeInfo1(){
-				if(this.timer1){
-					clearInterval(this.timer1)
-				} 
-				var that =this
-				this.lessTime1 = Math.floor( Number(that.info.cancelCountdown || 0)/1000) ;
-				if(this.lessTime1>0){
-					this.timer1 =  setInterval(function(){
-						   let h = Math.floor(that.lessTime1/60/60) ;
-						   let m = Math.floor((that.lessTime1 - h*60*60)/60); 
-						   let s=  Math.floor(that.lessTime1- h*60*60 -m*60);
-						   that.timeInfo1 =(h<10?'0':'')+ h+":"+(m<10?'0':'')+m+":"+(s<10?'0':'')+s;
-						   that.lessTime1 =that.lessTime1-1;
-						   if(that.lessTime1 <=0){
-							    that.timeInfo1 ="00:00:00"
-								clearInterval(that.timer1)
-						   }
-						   // console.log( that.timeInfo)
-					},1000) 
-				} 
-			
-			},
-			updateTimeInfo(){
-				if(this.timer){
-					clearInterval(this.timer)
-				} 
-				var that =this
-				this.lessTime = Math.floor( Number(that.info.confirmCountdown || 0)/1000) ;
-				if(this.lessTime>0){
-					this.timer =  setInterval(function(){
-						   let h = Math.floor(that.lessTime/60/60) ;
-						   let m = Math.floor((that.lessTime - h*60*60)/60); 
-						   let s=  Math.floor(that.lessTime- h*60*60 -m*60);
-						   that.timeInfo =(h<10?'0':'')+ h+":"+(m<10?'0':'')+m+":"+(s<10?'0':'')+s;
-						   that.lessTime =that.lessTime-1;
-						   // console.log( that.timeInfo)
-						   if(that.lessTime<=0){
-								that.timeInfo ="00:00:00"
-								clearInterval(that.timer)
-						   }
-					},1000) 
-				}
-			
-			},
-			getOrderData(){
-				var that = this
-				var param ={ orderId:that.id}
-				this.isPushlishor =false
-				this.isAcceptor =false
-				this.$u.api.getDetail(param).then(res =>{
-					if(res.code ===200){
-						if(that.userInfo.id === res.data.releaseMemberId ){
-							//濡傛灉鏄彂鍗曟柟
-							that.isPushlishor =true
-						}else if(that.userInfo.id ===res.data.acceptMemberId ){
-							//濡傛灉鏄帴鍗曟柟
-							that.isAcceptor =true
-						}
-						// if(that.isAcceptor ||that.isPushlishor ){
-							that.info = res.data
-							that.amount = ((that.info.estimatedAccount || 0) / 100).toFixed(2)
-							if(that.info.wayInfo){
-								that.wayList = JSON.parse(that.info.wayInfo)
-							}
-							if(res.data.isUpdate == 1){
-								that.updateTimeInfo()
-							}
-							if(res.data.status == 0){
-								that.updateTimeInfo1()
-							}
-							that.initPriceNumParam()
-						// }else{
-						// 	uni.showToast({ title: '璁㈠崟淇℃伅涓嶅瓨鍦�', icon: 'error', duration: 2000 });
-						// }
-					}
-				 }) 
-			},
-			initPriceNumParam(){
-				this.feeFrom.priceParam1.name =null
-				this.feeFrom.priceParam1.unit =null
-				this.feeFrom.priceParam2.name =null
-				this.feeFrom.priceParam2.unit =null
-				if(this.info.type==0 && this.info.workType==1){
-					//鍒嗘嫞宸�
-					this.feeFrom.priceParam1.name ='鐢ㄥ伐澶╂暟'
-					this.feeFrom.priceParam1.unit ='澶�'
-					this.feeFrom.priceParam2.name ='鐢ㄥ伐浜烘暟'
-					this.feeFrom.priceParam2.unit ='浜�'
-				}else if(this.info.type==0 && this.info.workType==0){
-					//閲囨憳宸�
-					this.feeFrom.priceParam1.name ='閲囨憳閲嶉噺'
-					this.feeFrom.priceParam1.unit ='鏂�'
-					this.feeFrom.priceParam2.name =null
-					this.feeFrom.priceParam2.unit =null
-				}else if(this.info.type==0 && this.info.workType==2){
-					//鍖呰宸�
-					if(this.info.carType==0){
-						//鎸夊ぉ
-						this.feeFrom.priceParam1.name ='鐢ㄥ伐澶╂暟'
-						this.feeFrom.priceParam1.unit ='澶�'
-						this.feeFrom.priceParam2.name ='鐢ㄥ伐浜烘暟'
-						this.feeFrom.priceParam2.unit ='浜�'
-					}else if(this.info.carType==1){
-						//鎸夊皬鏃�
-						this.feeFrom.priceParam1.name ='宸ヤ綔鏃堕暱'
-						this.feeFrom.priceParam1.unit ='灏忔椂'
-						this.feeFrom.priceParam2.name ='鐢ㄥ伐浜烘暟'
-						this.feeFrom.priceParam2.unit ='浜�'
-					}else if(this.info.carType==2){
-						//鎸夐噸閲�
-						this.feeFrom.priceParam1.name ='鍖呰閲嶉噺'
-						this.feeFrom.priceParam1.unit ='鏂�'
-						this.feeFrom.priceParam2.name ='鐢ㄥ伐浜烘暟'
-						this.feeFrom.priceParam2.unit ='浜�'
-					}					 
-				}else if(this.info.type==1 && this.info.carType==0){
-					//杩愯揣鍗� 鎸夊ぉ鏁�
-					this.feeFrom.priceParam1.name ='鐢ㄨ溅澶╂暟'
-					this.feeFrom.priceParam1.unit ='澶�' 
-				}else if(this.info.type==1 && this.info.carType==1){
-					//杩愯揣鍗� 鎸夋鏁�
-					this.feeFrom.priceParam1.name ='鐢ㄨ溅娆℃暟'
-					this.feeFrom.priceParam1.unit ='娆�' 
-				}
-			}
-		}
-	}
-</script>
-
-<style>
-	page {
-		background-color: #F7F7F7;
-	}
-	.u-textarea__count {
-		background-color: rgba(0, 0, 0, 0) !important;
-	}
-	.u-textarea {
-		width: 100% !important;
-		height: 100% !important;
-		padding: 0 !important;
-		background-color: rgba(0, 0, 0, 0) !important;
-	}
-	textarea {
-		width: 100% !important;
-		height: 100% !important;
-	}
-</style>
-
-<style lang="scss" scoped>
-	.order {
-		width: 100%;
-		.querenfee {
-			width: 100%;
-			padding: 40rpx 30rpx;
-			box-sizing: border-box;
-			
-			.querenfee-textarea {
-				width: 100%;
-				height: 364rpx;
-				padding: 30rpx;
-				box-sizing: border-box;
-				background: #F7F7F7;
-				border-radius: 16rpx;
-				border: 1rpx solid #EEEEEE;
-				margin-top: 48rpx;
-				display: flex;
-				align-items: start;
-				image {
-					flex-shrink: 0;
-					width: 29rpx;
-					height: 29rpx;
-					margin-right: 10rpx;
-				}
-			}
-			 
-			.querenfee-head {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				image {
-					width: 28rpx;
-					height: 28rpx;
-				}
-				text {
-					font-weight: 500;
-					font-size: 32rpx;
-					color: #222222;
-				}
-			}
-			.querenfee-c {
-				width: 100%;
-				margin-top: 46rpx;
-				display: flex;
-				justify-content: space-between;
-				.querenfee-c-info {					
-					align-items: center;
-					font-weight: 500;
-					font-size: 30rpx;
-					color: #222222;
-					margin-bottom: 30rpx;
-					text {
-						color: #00BC12;
-						margin-left: 10rpx;
-					}
-				}
-				.querenfee-c-danw {
-					display: flex;
-					align-items: center;
-					flex-shrink: 0;
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #333333;
-					margin-left: 10rpx;
-				}
-				.querenfee-c-price {
-					font-weight: 600;
-					font-size: 44rpx;
-					color: #FF0000;
-				}
-				.querenfee-c-info1 {
-					width: 50%;
-					display: flex;
-					align-items: center;
-					font-weight: 600;
-					font-size: 32rpx;
-					color: #222222;
-				}
-				.querenfee-tips{
-					width: 100%;
-					font-weight: 400;
-					font-size: 26rpx;
-					color: #999999;
-					line-height: 36rpx; 
-				}
-				.money{
-					width: 50%;
-					text-align: right;
-					font-weight: 600;
-					font-size: 34rpx;
-					color: #FF0000 !important;
-				}
-				.querenfee-c-input {
-					width: 260rpx;
-					height: 100rpx;
-					padding: 10rpx 30rpx;
-					box-sizing: border-box;
-					background: #F7F7F7;
-					border-radius: 10rpx;
-					border: 1rpx solid #EEEEEE;
-					display: flex;
-					align-items: center;
-					image {
-						flex-shrink: 0;
-						width: 28rpx;
-						height: 60rpx;
-						margin-right: 24rpx;
-					}
-					input {
-						flex: 1;
-						height: 100%;
-						font-weight: 500;
-						font-size: 56rpx;
-						color: #222222;
-						text-align: right;
-						.querenfee-c-input-placeholder {
-							font-size: 32rpx !important;
-						}
-					}
-				}
-			}
-			.querenfee-botton {
-				width: 100%;
-				height: 88rpx;
-				line-height: 88rpx;
-				text-align: center;
-				font-weight: 500;
-				font-size: 32rpx;
-				color: #FFFFFF;
-				background: #00BC12;
-				border-radius: 44rpx;
-				margin-top: 40rpx;
-			}
-		}
-		.zhifu {
-			width: 100%;
-			padding: 40rpx 30rpx;
-			box-sizing: border-box;
-			.zhifu-textarea {
-				width: 100%;
-				height: 364rpx;
-				padding: 30rpx;
-				box-sizing: border-box;
-				background: #F7F7F7;
-				border-radius: 16rpx;
-				border: 1rpx solid #EEEEEE;
-				margin-top: 48rpx;
-				display: flex;
-				align-items: start;
-				image {
-					flex-shrink: 0;
-					width: 29rpx;
-					height: 29rpx;
-					margin-right: 10rpx;
-				}
-			}
-			.zhifu-pj {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				margin-top: 40rpx;
-				.zhifu-pj-label {
-					flex-shrink: 0;
-					margin-right: 40rpx;
-				}
-				.zhifu-pj-val {
-					flex: 1;
-					
-				}
-			}
-			.zhifu-head {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				image {
-					width: 28rpx;
-					height: 28rpx;
-				}
-				text {
-					font-weight: 500;
-					font-size: 32rpx;
-					color: #222222;
-				}
-			}
-			.zhifu-c {
-				width: 100%;
-				margin-top: 46rpx;
-				.zhifu-c-info {
-					display: flex;
-					align-items: center;
-					font-weight: 500;
-					font-size: 30rpx;
-					color: #222222;
-					margin-bottom: 30rpx;
-					text {
-						color: #00BC12;
-						margin-left: 10rpx;
-					}
-				}
-				.zhifu-c-info1 {
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #666666;
-					margin-bottom: 20rpx;
-				}
-				.money{
-					color: red !important; 
-				}
-				.zhifu-c-input {
-					width: 100%;
-					padding: 0 30rpx;
-					box-sizing: border-box;
-					height: 112rpx;
-					background: #F7F7F7;
-					border-radius: 10rpx;
-					border: 1rpx solid #EEEEEE;
-					display: flex;
-					align-items: center;
-					image {
-						flex-shrink: 0;
-						width: 28rpx;
-						height: 60rpx;
-						margin-right: 24rpx;
-					}
-					input {
-						flex: 1;
-						height: 100%;
-						font-weight: 500;
-						font-size: 50rpx;
-						color: #222222;
-					}
-				}
-			}
-			.zhifu-botton {
-				width: 100%;
-				height: 88rpx;
-				line-height: 88rpx;
-				text-align: center;
-				font-weight: 500;
-				font-size: 32rpx;
-				color: #FFFFFF;
-				background: #00BC12;
-				border-radius: 44rpx;
-				margin-top: 264rpx;
-			}
-		}
-		.slot-content {
-			width: 100%;
-			text-align: center;
-			font-weight: 400;
-			font-size: 30rpx;
-			color: #333333;
-			margin: 30rpx 0;
-		}
-		.btn1 {
-			width: 264rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			text-align: center;
-			font-weight: 400;
-			font-size: 32rpx;
-			color: #666666;
-			border-radius: 44rpx;
-			border: 1rpx solid #B2B2B2;
-		}
-		.btn2 {
-			width: 264rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			text-align: center;
-			font-weight: 500;
-			font-size: 32rpx;
-			color: #FFFFFF;
-			background: #00BC12;
-			border-radius: 44rpx;
-		}
-		.order-footer {
-			width: 100%;
-			position: fixed;
-			bottom: 0;
-			left: 0;
-			background-color: #ffffff;
-			z-index: 9;
-			height: calc(108rpx + env(safe-area-inset-bottom));
-			.order-footer-btn {
-				width: 100%;
-				height: 108rpx;
-				padding: 0 30rpx;
-				box-sizing: border-box;
-				display: flex;
-				align-items: center;
-				justify-content: space-between; 
-				.order-footer-btn-a {
-					flex: 1;
-					height: 88rpx;
-					line-height: 88rpx;
-					text-align: center;
-					font-weight: 500;
-					font-size: 32rpx;
-					color: #666666;
-					margin-right: 2rpx;
-					border-radius: 44rpx;
-					border: 1rpx solid #B2B2B2;
-				}
-				.order-footer-btn-b {
-					flex: 1;
-					height: 88rpx;
-					line-height: 88rpx;
-					text-align: center;
-					font-weight: 500;
-					font-size: 32rpx;
-					color: #FFFFFF;
-					background: #00BC12;
-					border-radius: 44rpx;
-				}
-			}
-		}
-		.order-ren {
-			width: 100%;
-			height: 150rpx;
-			background: #FFFFFF;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-			padding: 0 30rpx;
-			box-sizing: border-box;
-			margin-bottom: 20rpx;
-			.order-ren-left {
-				display: flex;
-				align-items: center;
-				flex: 1;
-				.order-ren-left-img {
-					width: 80rpx;
-					height: 80rpx;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					overflow: hidden;
-					border-radius: 50%;
-					margin-right: 15rpx;
-					image {
-						width: 100%;
-					}
-				}
-				text {
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #222222;
-					margin-right: 15rpx;
-				}
-				.order-ren-left-tip {
-					padding: 4rpx 12rpx;
-					border-radius: 8rpx;
-					border: 2rpx solid #FD9E24;
-					font-weight: 400;
-					font-size: 24rpx;
-					color: #FF7200;
-				}
-			}
-			.order-ren-x {
-				width: 1rpx;
-				height: 90rpx;
-				margin-right: 50rpx;
-				background-color: #E5E5E5;
-			}
-			.order-ren-lx {
-				flex-shrink: 0;
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				justify-content: center;
-				image {
-					width: 34rpx;
-					height: 34rpx;
-				}
-				text {
-					font-weight: 400;
-					font-size: 26rpx;
-					color: #222222;
-				}
-			}
-		}
-		.order-info {
-			width: 100%;
-			padding: 30rpx;
-			box-sizing: border-box;
-			background-color: #ffffff;
-			margin-bottom: 20rpx;
-			&:last-child {
-				margin: 0 !important;
-			}
-			.order-info-list {
-				width: 100%;
-				.order-info-list-item {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 30rpx;
-					&:last-child {
-						margin: 0 !important;
-					}
-					text {
-						font-weight: 400;
-						font-size: 26rpx;
-						color: #777777;
-					}
-				}
-			}
-			.order-info-remark {
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #333333;
-				margin-top: 36rpx;
-			}
-			.order-info-title {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				margin-bottom: 20rpx;
-				.x {
-					width: 6rpx;
-					height: 30rpx;
-					background: #00BC12;
-					border-radius: 4rpx;
-					margin-right: 20rpx;
-				}
-				text {
-					font-weight: 600;
-					font-size: 32rpx;
-					color: #222222;
-				}
-			}
-			.order-info-wz {
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #888888;
-				margin-bottom: 30rpx;
-			}
-			.order-info-x {
-				width: 100%;
-				height: 1rpx;
-				margin: 20rpx 0 30rpx 0;
-				background-color: #E5E5E5;
-			}
-			.order-info-price {
-				width: 100%;
-				display: flex;
-				flex-direction: column;
-				.price-row {
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 30rpx;
-					&:last-child {
-						margin: 0 !important;
-					}
-					.price-row-label { 
-						flex-shrink: 0;
-						margin-right: 30rpx;
-						font-weight: 400;
-						font-size: 30rpx;
-						color: #777777;
-					}
-					.price-row-val {
-						font-weight: 500;
-						font-size: 30rpx;
-						color: #222222;
-					}
-				}
-			}
-			.order-info-supplement {
-				width: 100%;
-				margin-bottom: 40rpx;
-				.order-info-supplement-title {
-					font-weight: 600;
-					font-size: 30rpx;
-					color: #222222;
-					margin-bottom: 16rpx;
-				}
-				.order-info-supplement-val {
-					font-weight: 400;
-					font-size: 28rpx;
-					color: #333333;
-					margin-bottom: 20rpx;
-				}
-				.order-info-supplement-list {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					flex-wrap: wrap;
-					justify-content: space-between;
-					.order-info-supplement-list-item {
-						width: 156rpx;
-						height: 156rpx;
-						display: flex;
-						align-items: center;
-						justify-content: center;
-						border-radius: 8rpx;
-						overflow: hidden;
-						image {
-							width: 100%;
-						}
-					}
-				}
-			}
-			.order-info-address {
-				width: 100%;
-				display: flex;
-				align-items: start;
-				margin-bottom: 20rpx;
-				image {
-					width: 28rpx;
-					height: 28rpx;
-					flex-shrink: 0;
-					margin-right: 18rpx;
-				}
-				.order-info-address-info {
-					flex: 1;
-					display: flex;
-					flex-direction: column;
-					text {
-						&:nth-child(1) {
-							font-weight: 400;
-							font-size: 28rpx;
-							color: #222222;
-						}
-						&:nth-child(2) {
-							font-weight: 400;
-							font-size: 26rpx;
-							color: #999999;
-							margin-top: 16rpx;
-						}
-					}
-				}
-			}
-		}
-		.order-quxiaole {
-			padding: 20rpx 0;
-			box-sizing: border-box;
-			width: 100%;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			font-weight: 600;
-			font-size: 40rpx;
-			color: #111111;
-			background-color: #ffffff;
-		}
-		.order-head {
-			width: 100%;
-			height: 172rpx;
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			justify-content: center;
-			background-repeat: no-repeat;
-			background-size: 100% 100%;
-			.order-head-status {
-				font-weight: 600;
-				font-size: 40rpx;
-				color: #111111;
-			}
-			.order-head-info {
-				font-weight: 400;
-				font-size: 26rpx;
-				color: #777777;
-				margin-top: 18rpx;
-			}
-		}
-		.order-user {
-			width: 100%;
-			padding: 30rpx;
-			box-sizing: border-box;
-			background-color: #ffffff;
-			.order-user-info {
-				width: 100%;
-				height: 150rpx;
-				padding: 0 30rpx;
-				box-sizing: border-box;
-				background: #F7F8F5;
-				border-radius: 16rpx;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.user-info-l {
-					flex: 1;
-					display: flex;
-					align-items: center;
-					.user-info-l-image {
-						flex-shrink: 0;
-						width: 80rpx;
-						height: 80rpx;
-						border-radius: 50%;
-						overflow: hidden;
-						display: flex;
-						align-items: center;
-						justify-content: center;
-						margin-right: 20rpx;
-						image {
-							width: 100%;
-						}
-					}
-					.user-info-l-i {
-						flex: 1;
-						height: 100%;
-						display: flex;
-						flex-direction: column;
-						justify-content: space-between;
-						.user-info-l-i-top {
-							width: 100%;
-							display: flex;
-							align-items: center;
-							text {
-								font-weight: 400;
-								font-size: 30rpx;
-								color: #222222;
-							}
-							.user-info-l-i-top-jdf {
-								width: 96rpx;
-								height: 42rpx;
-								line-height: 42rpx;
-								text-align: center;
-								font-weight: 400;
-								font-size: 24rpx;
-								color: #FF7200;
-								border-radius: 8rpx;
-								border: 2rpx solid #FD9E24;
-								margin-left: 10rpx;
-							}
-						}
-						.user-info-l-i-bottom {
-							display: flex;
-							align-items: center;
-							margin-top: 14rpx;
-							.user-info-l-i-bottom-item {
-								display: flex;
-								align-items: center;
-								margin-right: 60rpx;
-								&:last-child {
-									margin: 0 !important;
-								}
-								text {
-									&:nth-child(1) {
-										font-weight: 400;
-										font-size: 24rpx;
-										color: #777777;
-									}
-									&:nth-child(2) {
-										font-weight: 400;
-										font-size: 24rpx;
-										color: #222222;
-									}
-								}
-							}
-						}
-					}
-				}
-				.user-info-r {
-					flex-shrink: 0;
-					display: flex;
-					flex-direction: column;
-					align-items: center;
-					justify-content: center;
-					image {
-						width: 33rpx;
-						height: 33rpx;
-					}
-					text {
-						font-weight: 400;
-						font-size: 26rpx;
-						color: #222222;
-						margin-top: 12rpx;
-					}
-				}
-			}
-		}
-		.order-quxiao {
-			width: 100%;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			background-color: #ffffff;
-			.order-quxiao-btn {
-				width: 160rpx;
-				height: 64rpx;
-				line-height: 64rpx;
-				text-align: center;
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #666666;
-				border-radius: 34rpx;
-				border: 1rpx solid #B2B2B2;
-			}
-			.order-quxiao-btn1 {
-				width: 160rpx;
-				height: 64rpx;
-				line-height: 64rpx;
-				text-align: center;
-				border-radius: 34rpx;
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #00BC12;
-				margin-left: 20rpx;
-				border: 1rpx solid #00BC12;
-			}
-		}
-	}
-	.address {
-		width: 100%;
-		background: #F7F7F7;
-		border-radius: 16rpx;
-		padding: 30rpx;
-		box-sizing: border-box;
-		margin-bottom: 24rpx;
-		position: relative;
-		.address-xian {
-			position: absolute;
-			top: 17px;
-			left: 24px;
-			width: 1rpx;
-			height: calc(100% - 60rpx);
-			border-right: 2rpx dashed #B2B2B2;
-		}
-		.address-row {
-			position: relative;
-			z-index: 2;
-			width: 100%;
-			display: flex !important; 
-			margin-bottom: 32rpx ;
-			margin-left: 0rpx !important;
-			margin-top: 0rpx !important;
-			&:last-child { 
-				margin-bottom: 0 !important;
-			}
-			image {
-				width: 36rpx;
-				height: 36rpx;
-				flex-shrink: 0;
-				margin-right: 24rpx;
-			}
-			.address-row-info {
-				width: 100%;
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #333333;
-				.address-row-right {
-					width: 8rpx;
-					height: 16rpx;
-					margin-left: 12rpx;
-					margin-top: 15rpx;
-				}
-			}
-		}
-	}
-</style>
diff --git a/small-program/pages/order-food/order-food.vue b/small-program/pages/order-food/order-food.vue
deleted file mode 100644
index 9e62cc0..0000000
--- a/small-program/pages/order-food/order-food.vue
+++ /dev/null
@@ -1,791 +0,0 @@
-<template>
-	<view class="order">
-		<!-- <view class="order-quxiaole">
-			宸插彇娑�
-		</view> -->
-		<view class="order-head" :style="{ backgroundImage: 'url(' + bgImg + ')' }">
-			<view class="order-head-status">寰呮帴鍗�</view>
-			<view class="order-head-info">鎮ㄥ凡缁忔垚鍔熷彂璧风敤宸ュ崟锛岃鑰愬績绛夊緟鎺ュ崟</view>
-		</view>
-		<view class="order-quxiao">
-			<view class="order-quxiao-btn">鍙栨秷璁㈠崟</view>
-		</view>
-		<view class="order-user">
-			<view class="order-user-info">
-				<view class="user-info-l">
-					<view class="user-info-l-image">
-						<image src="/static/logo.png" mode="widthFix"></image>
-					</view>
-					<view class="user-info-l-i">
-						<view class="user-info-l-i-top">鑾茶姳鍔冲姟鍏徃</view>
-						<view class="user-info-l-i-bottom">
-							<view class="user-info-l-i-bottom-item">
-								<text>璇勫垎锛�</text>
-								<text>90</text>
-							</view>
-							<view class="user-info-l-i-bottom-item">
-								<text>鍗曟暟锛�</text>
-								<text>100</text>
-							</view>
-						</view>
-					</view>
-				</view>
-				<view class="user-info-r">
-					<image src="/static/icon/ic_call@2x.png" mode="widthFix"></image>
-					<text>鑱旂郴甯堝倕</text>
-				</view>
-			</view>
-		</view>
-		<view class="order-info">
-			<view class="order-info-title">
-				<view class="x"></view>
-				<text>鐢ㄥ伐鍗�-閲囨憳宸�</text>
-			</view>
-			<view class="order-info-wz">钁¤悇锝�2000鏂�</view>
-			<view class="order-info-address">
-				<image src="/static/icon/order_ic_location@2x.png" mode="widthFix"></image>
-				<view class="order-info-address-info">
-					<text>闀挎睙瑗胯矾澶ц渶灞辨.鏋楀叕鍥タ闂ㄤ繚瀹夊</text>
-					<text>鍦扮偣鎻忚堪鏂囧瓧鍦扮偣鎻忚堪鍦扮偣鎻忚堪鏂囧瓧</text>
-				</view>
-			</view>
-			<view class="order-info-address">
-				<image src="/static/icon/order_ic_time@2x.png" mode="widthFix"></image>
-				<view class="order-info-address-info">
-					<text>闀挎睙瑗胯矾澶ц渶灞辨.鏋楀叕鍥タ闂ㄤ繚瀹夊</text>
-				</view>
-			</view>
-			<view class="order-info-x"></view>
-			<view class="order-info-supplement">
-				<view class="order-info-supplement-title">闇�姹傝ˉ鍏咃細</view>
-				<view class="order-info-supplement-val">鐢峰コ閮藉彲锛屽寘鍗堥キ锛屽共娲婚夯鍒╋紝鏃╀笂9鐐瑰埌涓嬪崍4鐐癸紝鍙厤璐瑰甫1鏂よ憽钀勫洖瀹�</view>
-				<view class="order-info-supplement-list">
-					<view class="order-info-supplement-list-item" v-for="(item,index) in 4" :key="index">
-						<image src="/static/logo.png" mode="widthFix"></image>
-					</view>
-					<view style="width: 156rpx; height: 0;"></view>
-					<view style="width: 156rpx; height: 0;"></view>
-				</view>
-			</view>
-			<view class="order-info-price">
-				<view class="price-row">
-					<view class="price-row-label">璐圭敤鏍囧噯</view>
-					<view class="price-row-val">0.5鍏�/鏂�</view>
-				</view>
-				<view class="price-row">
-					<view class="price-row-label">棰勪及鎬昏垂鐢�</view>
-					<view class="price-row-val" style="color: #FF0000;">楼1000.00</view>
-				</view>
-			</view>
-		</view>
-		<view class="order-info">
-			<view class="order-info-title">
-				<text>璇勪环</text>
-			</view>
-			<u-rate :count="count" activeColor="#FFC331" size="26" v-model="value"></u-rate>
-			<view class="order-info-remark">
-				骞叉椿鍒╄惤鏁堢巼楂樺共娲诲埄钀芥晥鐜囬珮骞叉椿鍒╄惤鏁堢巼楂樺共娲诲埄钀芥晥鐜囬珮骞叉椿鍒╄惤鏁堢巼楂�
-			</view>
-		</view>
-		<view class="order-ren">
-			<view class="order-ren-left">
-				<view class="order-ren-left-img">
-					<image src="/static/logo.png" mode="widthFix"></image>
-				</view>
-				<text>鍙插ぉ鏁�</text>
-				<view class="order-ren-left-tip">涓氫富</view>
-			</view>
-			<view class="order-ren-x"></view>
-			<view class="order-ren-lx">
-				<image src="/static/icon/ic_call@2x.png" mode="widthFix"></image>
-				<text>鑱旂郴涓氫富</text>
-			</view>
-		</view>
-		<view class="order-info">
-			<view class="order-info-title">
-				<text>璁㈠崟淇℃伅</text>
-			</view>
-			<view class="order-info-list">
-				<view class="order-info-list-item">
-					<text>璁㈠崟缂栧彿锛�</text>
-					<text>202107131742520001</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>涓嬪崟鏃堕棿锛�</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>鎺ュ崟鏃堕棿锛�</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>寮�濮嬫椂闂达細</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>瀹屾垚鏃堕棿锛�</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>鏀粯鏃堕棿锛�</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>鏀粯鏂瑰紡锛�</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-				<view class="order-info-list-item">
-					<text>浜ゆ槗鍗曞彿锛�</text>
-					<text>2025-07-26 09:32:11</text>
-				</view>
-			</view>
-		</view>
-		<view style="width: 100%; height: calc(108rpx + env(safe-area-inset-bottom));"></view>
-		<view class="order-footer">
-			<view class="order-footer-btn">
-				<view class="order-footer-btn-a" @click="show = true">鍙栨秷璁㈠崟</view>
-				<view class="order-footer-btn-b">淇敼璁㈠崟</view>
-			</view>
-			<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
-		</view>
-		
-		<u-modal
-			title="娓╅Θ鎻愮ず"
-			:show="show"
-			closeOnClickOverlay
-			showCancelButton
-		>
-			<view class="slot-content">
-				纭鍙栨秷璁㈠崟鍚楋紵
-			</view>
-			<view slot="confirmButton" style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
-				<view class="btn1" @click="show = false">鎴戝啀鎯虫兂</view>
-				<view class="btn2" @click="show = false">纭鍙栨秷</view>
-			</view>
-		</u-modal>
-		
-		<!-- 鏀粯寮圭獥 -->
-		<u-popup :show="show1" round="15" mode="bottom">
-			<view class="zhifu">
-				<view class="zhifu-head">
-					<view></view>
-					<text>鏀粯璁㈠崟</text>
-					<image @click="show1 = false" src="/static/icon/ic_close@2x.png" mode="widthFix"></image>
-				</view>
-				<view class="zhifu-c">
-					<view class="zhifu-c-info">
-						璇风‘璁ら噾棰濆苟鏀粯璐圭敤缁� <text>鑾茶姳鍔冲姟鍏徃</text>
-					</view>
-					<view class="zhifu-c-info1">鏀粯閲戦锛�</view>
-					<view class="zhifu-c-input">
-						<image src="/static/icon/楼@2x.png" mode="widthFix"></image>
-						<input type="number" placeholder="璇疯緭鍏�" />
-					</view>
-				</view>
-				<view class="zhifu-botton">纭鏀粯</view>
-			</view>
-		</u-popup>
-		
-		<!-- 璇勪环 -->
-		<u-popup :show="show2" round="15" mode="bottom">
-			<view class="zhifu">
-				<view class="zhifu-head">
-					<view></view>
-					<text>璇勪环</text>
-					<image @click="show2 = false" src="/static/icon/ic_close@2x.png" mode="widthFix"></image>
-				</view>
-				<view class="zhifu-pj">
-					<view class="zhifu-pj-label">鏈嶅姟璇勪环</view>
-					<view class="zhifu-pj-val">
-						<u-rate :count="count" activeColor="#FFC331" size="26" v-model="value"></u-rate>
-					</view>
-				</view>
-				<view class="zhifu-textarea">
-					<image src="/static/icon/ic_pingjia@2x.png" mode="widthFix"></image>
-					<u--textarea placeholder="璇疯璇存偍瀵规湰娆′氦鏄撶殑鎰熷彈" border="none" count></u--textarea>
-				</view>
-				<view class="zhifu-botton" style="margin-top: 60rpx;">绔嬪嵆璇勪环</view>
-			</view>
-		</u-popup>
-		
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				show: false,
-				show1: false,
-				show2: false,
-				count: 4,
-				value: 2,
-				bgImg: require('@/static/image/bg_green@2x.png')
-			};
-		}
-	}
-</script>
-
-<style>
-	page {
-		background-color: #F7F7F7;
-	}
-	.u-textarea__count {
-		background-color: rgba(0, 0, 0, 0) !important;
-	}
-	.u-textarea {
-		width: 100% !important;
-		height: 100% !important;
-		padding: 0 !important;
-		background-color: rgba(0, 0, 0, 0) !important;
-	}
-	textarea {
-		width: 100% !important;
-		height: 100% !important;
-	}
-</style>
-
-<style lang="scss" scoped>
-	.order {
-		width: 100%;
-		.zhifu {
-			width: 100%;
-			padding: 40rpx 30rpx;
-			box-sizing: border-box;
-			.zhifu-textarea {
-				width: 100%;
-				height: 364rpx;
-				padding: 30rpx;
-				box-sizing: border-box;
-				background: #F7F7F7;
-				border-radius: 16rpx;
-				border: 1rpx solid #EEEEEE;
-				margin-top: 48rpx;
-				display: flex;
-				align-items: start;
-				image {
-					flex-shrink: 0;
-					width: 29rpx;
-					height: 29rpx;
-					margin-right: 10rpx;
-				}
-			}
-			.zhifu-pj {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				margin-top: 40rpx;
-				.zhifu-pj-label {
-					flex-shrink: 0;
-					margin-right: 40rpx;
-				}
-				.zhifu-pj-val {
-					flex: 1;
-					
-				}
-			}
-			.zhifu-head {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				image {
-					width: 28rpx;
-					height: 28rpx;
-				}
-				text {
-					font-weight: 500;
-					font-size: 32rpx;
-					color: #222222;
-				}
-			}
-			.zhifu-c {
-				width: 100%;
-				margin-top: 46rpx;
-				.zhifu-c-info {
-					display: flex;
-					align-items: center;
-					font-weight: 500;
-					font-size: 30rpx;
-					color: #222222;
-					margin-bottom: 30rpx;
-					text {
-						color: #00BC12;
-						margin-left: 10rpx;
-					}
-				}
-				.zhifu-c-info1 {
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #666666;
-					margin-bottom: 20rpx;
-				}
-				.zhifu-c-input {
-					width: 100%;
-					padding: 0 30rpx;
-					box-sizing: border-box;
-					height: 112rpx;
-					background: #F7F7F7;
-					border-radius: 10rpx;
-					border: 1rpx solid #EEEEEE;
-					display: flex;
-					align-items: center;
-					image {
-						flex-shrink: 0;
-						width: 28rpx;
-						height: 60rpx;
-						margin-right: 24rpx;
-					}
-					input {
-						flex: 1;
-						height: 100%;
-						font-weight: 500;
-						font-size: 50rpx;
-						color: #222222;
-					}
-				}
-			}
-			.zhifu-botton {
-				width: 100%;
-				height: 88rpx;
-				line-height: 88rpx;
-				text-align: center;
-				font-weight: 500;
-				font-size: 32rpx;
-				color: #FFFFFF;
-				background: #00BC12;
-				border-radius: 44rpx;
-				margin-top: 264rpx;
-			}
-		}
-		.slot-content {
-			width: 100%;
-			text-align: center;
-			font-weight: 400;
-			font-size: 30rpx;
-			color: #333333;
-			margin: 30rpx 0;
-		}
-		.btn1 {
-			width: 264rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			text-align: center;
-			font-weight: 400;
-			font-size: 32rpx;
-			color: #666666;
-			border-radius: 44rpx;
-			border: 1rpx solid #B2B2B2;
-		}
-		.btn2 {
-			width: 264rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			text-align: center;
-			font-weight: 500;
-			font-size: 32rpx;
-			color: #FFFFFF;
-			background: #00BC12;
-			border-radius: 44rpx;
-		}
-		.order-footer {
-			width: 100%;
-			position: fixed;
-			bottom: 0;
-			left: 0;
-			background-color: #ffffff;
-			z-index: 9;
-			height: calc(108rpx + env(safe-area-inset-bottom));
-			.order-footer-btn {
-				width: 100%;
-				height: 108rpx;
-				padding: 0 30rpx;
-				box-sizing: border-box;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.order-footer-btn-a {
-					width: 334rpx;
-					height: 88rpx;
-					line-height: 88rpx;
-					text-align: center;
-					font-weight: 500;
-					font-size: 32rpx;
-					color: #666666;
-					border-radius: 44rpx;
-					border: 1rpx solid #B2B2B2;
-				}
-				.order-footer-btn-b {
-					width: 334rpx;
-					height: 88rpx;
-					line-height: 88rpx;
-					text-align: center;
-					font-weight: 500;
-					font-size: 32rpx;
-					color: #FFFFFF;
-					background: #00BC12;
-					border-radius: 44rpx;
-				}
-			}
-		}
-		.order-ren {
-			width: 100%;
-			height: 150rpx;
-			background: #FFFFFF;
-			display: flex;
-			align-items: center;
-			justify-content: space-between;
-			padding: 0 30rpx;
-			box-sizing: border-box;
-			margin-bottom: 20rpx;
-			.order-ren-left {
-				display: flex;
-				align-items: center;
-				flex: 1;
-				.order-ren-left-img {
-					width: 80rpx;
-					height: 80rpx;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					overflow: hidden;
-					border-radius: 50%;
-					margin-right: 15rpx;
-					image {
-						width: 100%;
-					}
-				}
-				text {
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #222222;
-					margin-right: 15rpx;
-				}
-				.order-ren-left-tip {
-					padding: 4rpx 12rpx;
-					border-radius: 8rpx;
-					border: 2rpx solid #FD9E24;
-					font-weight: 400;
-					font-size: 24rpx;
-					color: #FF7200;
-				}
-			}
-			.order-ren-x {
-				width: 1rpx;
-				height: 90rpx;
-				margin-right: 50rpx;
-				background-color: #E5E5E5;
-			}
-			.order-ren-lx {
-				flex-shrink: 0;
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				justify-content: center;
-				image {
-					width: 34rpx;
-					height: 34rpx;
-				}
-				text {
-					font-weight: 400;
-					font-size: 26rpx;
-					color: #222222;
-				}
-			}
-		}
-		.order-info {
-			width: 100%;
-			padding: 30rpx;
-			box-sizing: border-box;
-			background-color: #ffffff;
-			margin-bottom: 20rpx;
-			&:last-child {
-				margin: 0 !important;
-			}
-			.order-info-list {
-				width: 100%;
-				.order-info-list-item {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 30rpx;
-					&:last-child {
-						margin: 0 !important;
-					}
-					text {
-						font-weight: 400;
-						font-size: 26rpx;
-						color: #777777;
-					}
-				}
-			}
-			.order-info-remark {
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #333333;
-				margin-top: 36rpx;
-			}
-			.order-info-title {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				margin-bottom: 20rpx;
-				.x {
-					width: 6rpx;
-					height: 30rpx;
-					background: #00BC12;
-					border-radius: 4rpx;
-					margin-right: 20rpx;
-				}
-				text {
-					font-weight: 600;
-					font-size: 32rpx;
-					color: #222222;
-				}
-			}
-			.order-info-wz {
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #888888;
-				margin-bottom: 30rpx;
-			}
-			.order-info-x {
-				width: 100%;
-				height: 1rpx;
-				margin: 20rpx 0 30rpx 0;
-				background-color: #E5E5E5;
-			}
-			.order-info-price {
-				width: 100%;
-				display: flex;
-				flex-direction: column;
-				.price-row {
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 30rpx;
-					&:last-child {
-						margin: 0 !important;
-					}
-					.price-row-label {
-						font-weight: 400;
-						font-size: 30rpx;
-						color: #777777;
-					}
-					.price-row-val {
-						font-weight: 500;
-						font-size: 30rpx;
-						color: #222222;
-					}
-				}
-			}
-			.order-info-supplement {
-				width: 100%;
-				margin-bottom: 40rpx;
-				.order-info-supplement-title {
-					font-weight: 600;
-					font-size: 30rpx;
-					color: #222222;
-					margin-bottom: 16rpx;
-				}
-				.order-info-supplement-val {
-					font-weight: 400;
-					font-size: 28rpx;
-					color: #333333;
-					margin-bottom: 20rpx;
-				}
-				.order-info-supplement-list {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					flex-wrap: wrap;
-					justify-content: space-between;
-					.order-info-supplement-list-item {
-						width: 156rpx;
-						height: 156rpx;
-						display: flex;
-						align-items: center;
-						justify-content: center;
-						border-radius: 8rpx;
-						overflow: hidden;
-						image {
-							width: 100%;
-						}
-					}
-				}
-			}
-			.order-info-address {
-				width: 100%;
-				display: flex;
-				align-items: start;
-				margin-bottom: 20rpx;
-				image {
-					width: 28rpx;
-					height: 28rpx;
-					flex-shrink: 0;
-					margin-right: 18rpx;
-				}
-				.order-info-address-info {
-					flex: 1;
-					display: flex;
-					flex-direction: column;
-					text {
-						&:nth-child(1) {
-							font-weight: 400;
-							font-size: 28rpx;
-							color: #222222;
-						}
-						&:nth-child(2) {
-							font-weight: 400;
-							font-size: 26rpx;
-							color: #999999;
-							margin-top: 16rpx;
-						}
-					}
-				}
-			}
-		}
-		.order-quxiaole {
-			padding: 20rpx 0;
-			box-sizing: border-box;
-			width: 100%;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			font-weight: 600;
-			font-size: 40rpx;
-			color: #111111;
-			background-color: #ffffff;
-		}
-		.order-head {
-			width: 100%;
-			height: 172rpx;
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			justify-content: center;
-			background-repeat: no-repeat;
-			background-size: 100% 100%;
-			.order-head-status {
-				font-weight: 600;
-				font-size: 40rpx;
-				color: #111111;
-			}
-			.order-head-info {
-				font-weight: 400;
-				font-size: 26rpx;
-				color: #777777;
-				margin-top: 18rpx;
-			}
-		}
-		.order-user {
-			width: 100%;
-			padding: 30rpx;
-			box-sizing: border-box;
-			background-color: #ffffff;
-			.order-user-info {
-				width: 100%;
-				height: 150rpx;
-				padding: 0 30rpx;
-				box-sizing: border-box;
-				background: #F7F8F5;
-				border-radius: 16rpx;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.user-info-l {
-					flex: 1;
-					display: flex;
-					align-items: center;
-					.user-info-l-image {
-						flex-shrink: 0;
-						width: 80rpx;
-						height: 80rpx;
-						border-radius: 50%;
-						overflow: hidden;
-						display: flex;
-						align-items: center;
-						justify-content: center;
-						margin-right: 20rpx;
-						image {
-							width: 100%;
-						}
-					}
-					.user-info-l-i {
-						flex: 1;
-						height: 100%;
-						display: flex;
-						flex-direction: column;
-						justify-content: space-between;
-						.user-info-l-i-top {
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #222222;
-						}
-						.user-info-l-i-bottom {
-							display: flex;
-							align-items: center;
-							margin-top: 14rpx;
-							.user-info-l-i-bottom-item {
-								display: flex;
-								align-items: center;
-								margin-right: 60rpx;
-								&:last-child {
-									margin: 0 !important;
-								}
-								text {
-									&:nth-child(1) {
-										font-weight: 400;
-										font-size: 24rpx;
-										color: #777777;
-									}
-									&:nth-child(2) {
-										font-weight: 400;
-										font-size: 24rpx;
-										color: #222222;
-									}
-								}
-							}
-						}
-					}
-				}
-				.user-info-r {
-					flex-shrink: 0;
-					display: flex;
-					flex-direction: column;
-					align-items: center;
-					justify-content: center;
-					image {
-						width: 33rpx;
-						height: 33rpx;
-					}
-					text {
-						font-weight: 400;
-						font-size: 26rpx;
-						color: #222222;
-						margin-top: 12rpx;
-					}
-				}
-			}
-		}
-		.order-quxiao {
-			width: 100%;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			background-color: #ffffff;
-			.order-quxiao-btn {
-				width: 160rpx;
-				height: 64rpx;
-				line-height: 64rpx;
-				text-align: center;
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #666666;
-				border-radius: 34rpx;
-				border: 1rpx solid #B2B2B2;
-			}
-		}
-	}
-</style>
diff --git a/small-program/pages/packaging-worker/packaging-worker.vue b/small-program/pages/packaging-worker/packaging-worker.vue
deleted file mode 100644
index 75139ff..0000000
--- a/small-program/pages/packaging-worker/packaging-worker.vue
+++ /dev/null
@@ -1,751 +0,0 @@
-<template>
-	<view class="index">
-		<view class="list">
-			<view class="list-item">
-				<view class="list-item-label">
-					<view class="list-item-label-x"></view>
-					<text>鏃堕棿鍦扮偣</text>
-				</view>
-				<view class="list-item-row" @click="show = true">
-					<view class="list-item-row-label">鐢ㄥ伐鏃堕棿<b>*</b></view>
-					<view class="list-item-row-val">
-						<text>{{form.startDate ? form.startDate + ' 鑷� ' + form.endDate + ' (' + workDays + '澶�) ' : '璇烽�夋嫨'}}</text>
-						<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-					</view>
-				</view>
-				
-				<template v-if="!(info.type !== 2 && info.status === 2)">
-					<view class="list-item-row" @click="selectAddress()">
-						<view class="list-item-row-label">鐢ㄥ伐鍦扮偣<b>*</b></view>
-						<view class="list-item-row-val">
-							<text style="width:80%;">{{form.location ? form.location : '璇烽�夋嫨'}}</text>
-							<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鍦扮偣鎻忚堪</view>
-						<view class="list-item-row-val">
-							<input type="text" v-model="form.locationRemark" placeholder="璇疯緭鍏�" />
-						</view>
-					</view>
-				</template>
-				
-			</view>
-			<template v-if="!(info.type !== 2 && info.status === 2)">
-				<view class="list-item">
-					<view class="list-item-label">
-						<view class="list-item-label-x"></view>
-						<text>闇�姹�</text>
-					</view>
-					<view class="list-item-row" @click="show1 = true">
-						<view class="list-item-row-label">鍖呰鍝佺<b>*</b></view>
-						<view class="list-item-row-val">
-							<text>{{form.categoryName ? form.categoryName : '璇烽�夋嫨'}}</text>
-							<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-						</view>
-					</view>
-					<view class="list-item-row"  >
-						<view class="list-item-row-label">闇�姹傝ˉ鍏�</view>
-						<view class="list-item-row-val">
-							<textarea v-model="form.supplement" cols="30" rows="10" placeholder="濡傛灉鏈夌壒娈婅姹傦紝璇峰湪姝ゅ璇存槑" maxlength="200"></textarea>
-						</view>
-					</view>
-					<view class="list-item-row"  >
-						<view class="list-item-row-label">鍥剧墖</view>
-						<view class="list-item-row-upload">
-							<view class="upload-item" v-for="(item, index) in form.multifileList" :key="index">
-								<image :src="item.url || item.fileurlFull" mode="widthFix"></image>
-								<image class="upload-item-dele" @click="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image>
-							</view>
-							<view class="upload-item" @click="uploadImg">
-								<u-icon name="plus" color="#999999" size="24"></u-icon>
-								<text>鐐瑰嚮涓婁紶</text>
-							</view>
-						</view>
-					</view>
-				<!-- 	<view class="list-item-zk" @click="viewStatus = !viewStatus">
-						<text>{{viewStatus ? '鏀惰捣' : '琛ュ厖闇�姹�'}}</text>
-						<u-icon :name="viewStatus ? 'arrow-up' : 'arrow-down'" color="#00BC12" size="16"></u-icon>
-					</view> -->
-				</view>
-				<view class="list-item">
-					<view class="list-item-label">
-						<view class="list-item-label-x"></view>
-						<text>璐圭敤</text>
-					</view>
-					<view class="list-item-cate">
-						<view :class="form.carType === item.id ? 'list-item-cate-item active' : 'list-item-cate-item'" v-for="(item, index) in settlementType" :key="index" @click="clickType(item.id)">{{item.name}}</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label" v-if="form.carType === 0">鐢ㄥ伐澶╂暟</view>
-						<view class="list-item-row-label" v-if="form.carType === 1">宸ヤ綔鏃堕暱<b>*</b></view>
-						<view class="list-item-row-label" v-if="form.carType === 2">鍖呰閲嶉噺<b>*</b></view>
-						<view class="list-item-row-val">
-							<input v-model="form.priceNum1" :disabled="form.carType === 0" @blur="getPrice" type="digit" placeholder="璇疯緭鍏�" />
-							<text v-if="form.carType === 0">澶�</text>
-							<text v-if="form.carType === 1">灏忔椂</text>
-							<text v-if="form.carType === 2">鏂�</text>
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鐢ㄥ伐鏁伴噺<b>*</b></view>
-						<view class="list-item-row-val">
-							<input type="digit" v-model="form.priceNum2" @blur="getPrice" placeholder="璇疯緭鍏�" />
-							<text>浜�</text>
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">璐圭敤鏍囧噯<b>*</b></view>
-						<view class="list-item-row-val">
-							<input v-model="form.price" type="digit" @blur="getPrice" placeholder="璇疯緭鍏�" />
-							<text>{{form.priceUnit}}</text>
-						</view>
-					</view>
-				</view>
-				<view class="list-item">
-					<view class="list-item-label">
-						<view class="list-item-label-x"></view>
-						<text>鑱旂郴浜轰俊鎭�</text>
-						<text class="list-item-label-info">榛樿鍙戝崟鏂硅仈绯绘柟寮忥紝鍙慨鏀硅仈绯讳汉</text>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鑱旂郴浜哄鍚�</view>
-						<view class="list-item-row-val">
-							<input type="text" v-model="form.linkName" placeholder="璇疯ˉ鍏�" />
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鑱旂郴鐢佃瘽<b>*</b></view>
-						<view class="list-item-row-val">
-							<input type="text" v-model="form.linkPhone" maxlength="11" placeholder="璇疯ˉ鍏�" />
-						</view>
-					</view>
-				</view>
-			</template>
-			
-		</view>
-		<view style="width: 100%; height: calc(214rpx + env(safe-area-inset-bottom));"></view>
-		<view class="footer">
-			<view class="footer-price">
-				<view class="footer-price-info">棰勪及鎬昏垂鐢�</view>
-				<view class="footer-price-num">
-					<text>{{totalPrice}}</text>
-					<text>鍏�</text>
-				</view>
-			</view>
-			<view class="footer-bottom">
-				<div class="footer-bottom-btn" @click="submit" >
-					<text>{{form.id?'纭淇敼':'绔嬪嵆涓嬪崟'}}</text>
-					<text v-if="!form.id">锛堟湇鍔″畬鎴愬悗浠樻锛�</text>
-				</div>
-			</view>
-			<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
-		</view>
-		
-		<!-- 閫夋嫨鏃ユ湡鑼冨洿 -->
-		<u-calendar
-			:show="show"
-			color="#00BC12"
-			mode="range"
-			 :allowSameDay="true"
-			@close="show = false"
-			@confirm="confirmDate" />
-		
-		<!-- 閫夋嫨鍝佺 -->
-		<u-picker
-			:show="show1"
-			:immediateChange="true"
-			:columns="cateList"
-			confirmColor="#00BC12"
-			@confirm="confirmCategary"
-			@cancel="show1 = false"
-			keyName="name" />
-	</view>
-</template>
-
-<script>
-	import { mapState } from 'vuex'
-	export default {
-		computed: {
-			...mapState(['userInfo']),
-			totalPrice() {
-				return this.form.estimatedAccount / 100
-			}
-		},
-		data() {
-			return {
-				info: {},
-				show: false,
-				show1: false,
-				form: {
-					id: null,
-					days: '',
-					startDate: '',
-					endDate: '',
-					lat: '',
-					lgt: '',
-					location: '',
-					workType: 0,
-					locationRemark: '',
-					categoryId: '',
-					categoryName: '',
-					priceNum1: '',
-					priceNum2: '',
-					price: '',
-					supplement: '',
-					multifileList: [],
-					linkName: '',
-					linkPhone: '',
-					priceUnit: '鍏�/浜�/澶�',
-					estimatedAccount: '',
-					carType: 0,
-					type: 0
-				},
-				settlementType: [
-					{ name: '鎸夊ぉ浠樿垂', id: 0 },
-					{ name: '鎸夊皬鏃朵粯璐�', id: 1 },
-					{ name: '鎸夐噸閲忎粯璐�', id: 2 }
-				],
-				cateList: [],
-				viewStatus: true,
-				workDays: 0
-			};
-		},
-		onLoad(option) {
-			if (option.id) {
-				this.form.id = option.id
-				this.$u.api.getDetail({
-					orderId: option.id
-				}).then(res => {
-					if (res.code === 200) {
-						this.info = res.data
-						for (const key in this.form) {
-							this.form[key] = res.data[key]
-						}
-						this.form.days = res.data.totalDays
-						this.form.price = Number(this.form.price) / 100
-						if (!this.form.multifileList) {
-							this.form.multifileList = []
-						}
-						this.workDays = res.data.totalDays
-						// this.clickType()
-					}
-					
-				})
-			} else {
-				this.form.linkName = this.userInfo.name
-				this.form.linkPhone = this.userInfo.telephone
-				this.form.priceNum1 = option.days
-				this.form.startDate = option.startDate
-				this.form.endDate = option.endDate
-				this.form.lat = option.latitude
-				this.form.lgt = option.longitude
-				this.form.location = option.address
-				this.form.workType = option.workType
-				this.form.days = option.days
-				this.workDays = option.days
-			}
-			this.getCateList()
-		},
-		methods: {
-			// 鎻愪氦璁㈠崟
-			submit() {
-				if (!this.form.categoryId) {
-					return uni.showToast({ title: '璇烽�夋嫨鍒嗘嫞鍝佺', icon: 'none' })
-				}
-				if (this.form.carType !=0 && !this.form.priceNum1) {
-					var t = this.form.carType ==1?"宸ヤ綔鏃堕暱":"鍖呰閲嶉噺"
-					return uni.showToast({ title: '璇疯緭鍏�'+t, icon: 'none' })
-				}
-				if (!this.form.priceNum2) {
-					return uni.showToast({ title: '璇疯緭鍏ョ敤宸ユ暟閲�', icon: 'none' })
-				}
-				if (!this.form.price) {
-					return uni.showToast({ title: '璇疯緭鍏ヨ垂鐢ㄦ爣鍑�', icon: 'none' })
-				} 
-				if (!this.form.linkPhone) {
-					return uni.showToast({ title: '璇疯緭鍏ヨ仈绯荤數璇�', icon: 'none' })
-				}
-				if (!this.form.id) {
-					this.$u.api.release({ ...this.form, price: Number(this.form.price) * 100 })
-						.then(res => {
-							if (res.code == 200) {
-								uni.navigateTo({
-									url: `/pages/success/success?orderId=${res.data.id}`
-								})
-							}
-						})
-				} else {
-					this.$u.api.updateOrder({ ...this.form, price: Number(this.form.price) * 100 })
-						.then(res => {
-							if (res.code == 200) {
-								if (res.code == 200) {
-									uni.showToast({ title: '缂栬緫鎴愬姛', icon: 'success', mask: true, duration: 2000 })
-									setTimeout(() => {
-										uni.navigateBack({ delta: 1 });
-										// uni.$emit('refresh')
-									}, 1500)
-								}
-							}
-						})
-				}
-			},
-			// 璁$畻閲戦
-			getPrice() {
-				if (this.form.price && this.form.priceNum1 && this.form.priceNum2) {
-					this.$u.api.getTotal({
-						price: Number(this.form.price) * 100,
-						priceNum1: this.form.priceNum1,
-						priceNum2:  this.form.priceNum2,
-						type: this.form.type,
-						carType:this.form.carType ,
-						workType: this.form.workType
-					}).then(res => {
-						if (res.code === 200) {
-							this.form.estimatedAccount = res.data
-						}
-						
-					})
-				}
-			},
-			confirmDate(e) {
-				this.form.startDate = e[0]
-				this.form.endDate = e[e.length - 1]
-				let time = this.form.startDate == this.form.endDate ? 1 : 0
-				this.workDays = e.length - time;
-				if (this.form.carType === 0) {
-					this.form.priceNum1 = e.length - time;
-				}
-				this.show = false
-				this.getPrice()
-			},
-			selectAddress() {
-				uni.chooseLocation({
-					success: (res) => {
-						this.form.lat = res.latitude
-						this.form.lgt = res.longitude
-						this.form.address =res.name ||  res.address
-					}
-				});
-			},
-			clickType(id) {
-				this.form.carType = id
-				if (id === 0) {
-					this.form.priceUnit = '鍏�/浜�/澶�'
-					this.form.priceNum1 = this.workDays
-				} else if (id === 1) {
-					this.form.priceUnit = '鍏�/浜�/灏忔椂'
-					this.form.priceNum1 = ''
-				} else {
-					this.form.priceUnit = '鍏�/鏂�'
-					this.form.priceNum1 = ''
-				}
-			},
-			confirmCategary(e) {
-				this.form.categoryId = e.value[0].id
-				this.form.categoryName = e.value[0].name
-				this.show1 = false
-			},
-			getCateList() {
-				this.$u.api.getCategoryList({
-					type: 0
-				}).then(res => {
-					if (res.code === 200) {
-						this.cateList = [res.data]
-					}
-				})
-			},
-			uploadImg() {
-				uni.chooseImage({
-					success: (chooseImageRes) => {
-						const tempFilePaths = chooseImageRes.tempFilePaths;
-						uni.uploadFile({
-							url: this.$baseUrl + '/web/public/upload',
-							filePath: tempFilePaths[0],
-							name: 'file',
-							formData: {
-								'folder': 'orders'
-							},
-							success: (uploadFileRes) => {
-								const res = JSON.parse(uploadFileRes.data)
-								this.form.multifileList.push({
-									fileurl: res.data.imgaddr,
-									name: res.data.originname,
-									url: res.data.url,
-									type: 0
-								})
-							}
-						});
-					}
-				});
-			}
-		}
-	}
-</script>
-
-<style>
-	page {
-		background-color: #F7F7F7 !important;
-	}
-</style>
-
-<style lang="scss" scoped>
-	.index {
-		width: 100%;
-		.footer {
-			width: 100%;
-			height: calc(214rpx + env(safe-area-inset-bottom));
-			padding: 20rpx 30rpx;
-			box-sizing: border-box;
-			position: fixed;
-			bottom: 0;
-			left: 0;
-			z-index: 9;
-			display: flex;
-			flex-direction: column;
-			justify-content: space-between;
-			background: #FFFFFF;
-			box-shadow: 0rpx -2rpx 4rpx 0rpx rgba(0,0,0,0.06);
-			.footer-price {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.footer-price-info {
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #222222;
-				}
-				.footer-price-num {
-					display: flex;
-					align-items: center;
-					text {
-						&:nth-child(1) {
-							font-weight: 500;
-							font-size: 40rpx;
-							color: #FF0000;
-							margin-right: 20rpx;
-						}
-						&:nth-child(2) {
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #222222;
-						}
-					}
-				}
-			}
-			.footer-bottom {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.footer-bottom-kf {
-					flex-shrink: 0;
-					margin-right: 40rpx;
-					display: flex;
-					flex-direction: column;
-					align-items: center;
-					justify-content: center;
-					image {
-						width: 36rpx;
-						height: 36rpx;
-					}
-					text {
-						font-weight: 400;
-						font-size: 24rpx;
-						color: #222222;
-						margin-top: 8rpx;
-					}
-				}
-				.footer-bottom-btn {
-					flex: 1;
-					height: 88rpx;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					background: #00BC12;
-					box-shadow: 0rpx 8rpx 12rpx 0rpx rgba(91,190,56,0.16);
-					border-radius: 44rpx;
-					text {
-						&:nth-child(1) {
-							font-weight: 500;
-							font-size: 32rpx;
-							color: #FFFFFF;
-						}
-						&:nth-child(2) {
-							font-weight: 500;
-							font-size: 26rpx;
-							color: #FFFFFF;
-						}
-					}
-				}
-			}
-		}
-		.list {
-			width: 100%;
-			display: flex;
-			flex-direction: column;
-			.list-item {
-				width: 100%;
-				padding: 40rpx 30rpx;
-				box-sizing: border-box;
-				background-color: #ffffff;
-				border-radius: 20rpx;
-				margin-bottom: 20rpx;
-				&:last-child {
-					margin: 0 !important;
-				}
-				.list-item-cate {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					justify-content: space-between;
-					margin-bottom: 30rpx;
-					.active {
-						background: #00BC12 !important;
-						color: #ffffff !important;
-					}
-					.list-item-cate-item {
-						width: 208rpx;
-						height: 72rpx;
-						line-height: 72rpx;
-						text-align: center;
-						background: #EEEEEE;
-						border-radius: 36rpx;
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #333333;
-					}
-				}
-				.list-item-label {
-					display: flex;
-					align-items: center;
-					margin-bottom: 28rpx;
-					text {
-						font-weight: 600;
-						font-size: 32rpx;
-						color: #222222;
-					}
-					.list-item-label-info {
-						font-weight: 400;
-						font-size: 26rpx;
-						color: #999999;
-						margin-left: 26rpx;
-					}
-					.list-item-label-x {
-						width: 6rpx;
-						height: 30rpx;
-						background: #00BC12;
-						border-radius: 4rpx;
-						margin-right: 20rpx;
-					}
-				}
-				.list-item-zk {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					text {
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #00BC12;
-						margin-right: 8rpx;
-					}
-				}
-				.list-item-row {
-					width: 100%;
-					display: flex;
-					flex-direction: column;
-					border-bottom: 1rpx solid #E5E5E5;
-					margin-bottom: 30rpx;
-					&:last-child {
-						margin: 0 !important;
-					}
-					.list-item-row-label {
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #666666;
-						display: flex;
-						align-items: center;
-						b {
-							color: red;
-						}
-					}
-					.list-item-row-user {
-						width: 100%;
-						display: flex;
-						flex-direction: column;
-						.user-item {
-							width: 100%;
-							padding: 30rpx 0;
-							box-sizing: border-box;
-							display: flex;
-							align-items: center;
-							margin-bottom: 30rpx;
-							justify-content: space-between;
-							border-bottom: 1rpx solid #E5E5E5;
-							&:last-child {
-								margin: 0 !important;
-							}
-							text {
-								flex-shrink: 0;
-								font-weight: 400;
-								font-size: 30rpx;
-								color: #333333;
-							}
-							input {
-								flex: 1;
-								text-align: center;
-								margin: 0 30rpx;
-								font-weight: 400;
-								font-size: 30rpx;
-								color: #222222;
-							}
-						}
-					}
-					.list-item-row-radio {
-						width: 100%;
-						display: flex;
-						padding: 30rpx 0;
-						box-sizing: border-box;
-						flex-direction: column;
-						border-bottom: 1rpx solid #E5E5E5;
-						.radio-item {
-							width: 100%;
-							display: flex;
-							align-items: center;
-							margin-bottom: 30rpx;
-							&:last-child {
-								margin: 0 !important;
-							}
-							.radio-item-label {
-								width: 200rpx;
-								flex-shrink: 0;
-								font-weight: 400;
-								font-size: 30rpx;
-								color: #111111;
-							}
-							.radio-item-list {
-								flex: 1;
-								display: flex;
-								flex-direction: column;
-								.radio-item-list-l {
-									width: 100%;
-									display: flex;
-									align-items: center;
-									.active {
-										background: #00BC12 !important;
-										color: #ffffff !important;
-									}
-									.radio-item-list-item {
-										width: 124rpx;
-										height: 72rpx;
-										line-height: 72rpx;
-										text-align: center;
-										background: #EEEEEE;
-										border-radius: 36rpx;
-										font-weight: 400;
-										font-size: 28rpx;
-										color: #111111;
-										margin-right: 30rpx;
-										&:last-child {
-											margin: 0 !important;
-										}
-									}
-								}
-								.radio-item-list-data {
-									width: 100%;
-									display: flex;
-									align-items: center;
-									justify-content: flex-end;
-									margin-top: 42rpx;
-									text {
-										font-weight: 400;
-										font-size: 30rpx;
-										color: #333333;
-									}
-									input {
-										width: 100rpx;
-										font-weight: bold;
-										font-size: 30rpx;
-										color: #222222;
-										text-align: right;
-										margin: 0 30rpx;
-									}
-								}
-							}
-						}
-					}
-					.list-item-row-upload {
-						width: 100%;
-						display: flex;
-						align-items: center;
-						flex-wrap: wrap;
-						padding: 30rpx 0;
-						box-sizing: border-box;
-						.upload-item {
-							width: 156rpx;
-							height: 156rpx;
-							display: flex;
-							align-items: center;
-							flex-direction: column;
-							justify-content: center;
-							background: #F8F9FB;
-							border-radius: 8rpx;
-							margin-right: 20rpx;
-							border: 2rpx solid #EEEEEE;
-							position: relative;
-							&:last-child {
-								margin: 0 !important;
-							}
-							image {
-								width: 100%;
-							}
-							text {
-								font-weight: 400;
-								font-size: 26rpx;
-								color: #666666;
-								margin-top: 16rpx;
-							}
-							.upload-item-dele {
-								position: absolute;
-								top: -20rpx;
-								right: -20rpx;
-								width: 40rpx;
-								height: 40rpx;
-								z-index: 9;
-							}
-						}
-					}
-					.list-item-row-val {
-						width: 100%;
-						padding: 30rpx 0;
-						box-sizing: border-box;
-						display: flex;
-						align-items: center;
-						justify-content: space-between;
-						text {
-							flex-shrink: 0;
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #111111;
-						}
-						input {
-							width: 100%;
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #222222;
-						}
-						textarea {
-							width: 100%;
-							height: 90rpx;
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #111111;
-						}
-					}
-				}
-			}
-		}
-	}
-</style>
diff --git a/small-program/pages/rich-text-page/rich-text-page.vue b/small-program/pages/rich-text-page/rich-text-page.vue
deleted file mode 100644
index 6f45dfb..0000000
--- a/small-program/pages/rich-text-page/rich-text-page.vue
+++ /dev/null
@@ -1,73 +0,0 @@
-<template>
-	<view class="u-content">
-	    <u-parse :content="content"></u-parse>
-	</view>
-</template>
-<script>
-	export default {
-		data() {
-			return {
-				flag:1,
-				title:'',
-				content: ''
-			};
-		},
-		onLoad(options) {
-			console.log(options)
-			var flag = options.flag
-			this.flag = flag
-			this.content =''
-			switch(flag){
-				case '1':
-					this.title = '鏈嶅姟浠嬬粛'
-					break;
-				case '2':
-					this.title = '鏀惰垂鏍囧噯'
-					break;
-				case '3':
-					this.title = '鍏充簬鎴戜滑'
-					break;
-				case '4':
-					this.title = '鐢ㄦ埛鍗忚'
-					break;
-				case '5':
-					this.title = '闅愮鍗忚鏀跨瓥'
-					break; 
-				default:
-					this.flag= 3
-					this.title = '鍏充簬鎴戜滑'
-					break; 
-			}
-			uni.setNavigationBarTitle({
-				title:this.title
-			})
-			this.getContnet()
-		},
-		methods:{
-			getContnet() {
-				var that = this;
-				this.$u.api.getPlatformAboutUs({}).then(res =>{ 
-					if (res&&res.code ===200) { 
-						if(this.flag == 1){
-							that.content = res.data.serverIntroduce||''
-						}else if(this.flag == 2){
-							that.content = res.data.feeStandards||''
-						}  else if(this.flag == 4){
-							that.content = res.data.userAgreement||''
-						} else if(this.flag == 5){
-							that.content = res.data.privacyAgreement||''
-						} else{
-							that.content = res.data.aboutUs||''
-						}
-					} 
-				})
-			},
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.u-content {
-		padding: 30rpx;
-	}
-</style>
diff --git a/small-program/pages/seleCity/seleCity.vue b/small-program/pages/seleCity/seleCity.vue
deleted file mode 100644
index e3d72b4..0000000
--- a/small-program/pages/seleCity/seleCity.vue
+++ /dev/null
@@ -1,88 +0,0 @@
-<template>
-	<view class="box">
-		<view class="city-serach">
-			<view class="city-serach-box">
-				<image src="/static/icon/ic_search@2x.png" mode="widthFix"></image>
-				<input placeholder="杈撳叆鍩庡競鍚嶇О" @confirm="search" />
-			</view>
-			<view class="city-serach-info">
-				<text>褰撳墠鍩庡競锛�</text>
-				<text>鍚堣偉</text>
-			</view>
-		</view>
-		<tIndexAddress @select="select" ref="city"></tIndexAddress>
-	</view>
-</template>
-
-<script>
-	import tIndexAddress from '@/components/t-index-address/components/t-index-address/t-index-address.vue'
-	export default {
-		components: { tIndexAddress },
-		data() {
-			return {
-				
-			};
-		},
-		methods: {
-			select(data) {
-				console.log(data)
-			},
-			search() {
-				this.$refs.city.search('闃�')
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.box {
-		width: 100%;
-		background-color: #ffffff;
-		.city-serach {
-			width: 100%;
-			padding: 30rpx;
-			box-sizing: border-box;
-			background: #ffffff;
-			.city-serach-box {
-				width: 100%;
-				height: 72rpx;
-				background: #F9F9FB;
-				border-radius: 36rpx;
-				border: 1rpx solid #EEEEEE;
-				display: flex;
-				align-items: center;
-				padding: 0 30rpx;
-				box-sizing: border-box;
-				justify-content: space-between;
-				image {
-					flex-shrink: 0;
-					width: 32rpx;
-					height: 32rpx;
-					margin-right: 20rpx;
-				}
-				input {
-					flex: 1;
-					height: 100%;
-				}
-			}
-			.city-serach-info {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				margin-top: 30rpx;
-				text {
-					&:nth-child(1) {
-						font-weight: 400;
-						font-size: 30rpx;
-						color: #222222;
-					}
-					&:nth-child(2) {
-						font-weight: 400;
-						font-size: 30rpx;
-						color: #00BC12;
-					}
-				}
-			}
-		}
-	}
-</style>
\ No newline at end of file
diff --git a/small-program/pages/sorting/sorting.vue b/small-program/pages/sorting/sorting.vue
deleted file mode 100644
index 590cce0..0000000
--- a/small-program/pages/sorting/sorting.vue
+++ /dev/null
@@ -1,688 +0,0 @@
-<template>
-	<view class="index">
-		<view class="list">
-			<view class="list-item">
-				<view class="list-item-label">
-					<view class="list-item-label-x"></view>
-					<text>鏃堕棿鍦扮偣</text>
-				</view>
-				<view class="list-item-row" @click="show = true">
-					<view class="list-item-row-label">鐢ㄥ伐鏃堕棿<b>*</b></view>
-					<view class="list-item-row-val">
-						<text>{{form.startDate ? form.startDate + ' 鑷� ' + form.endDate + ' (' + form.priceNum1 + '澶�) ' : '璇烽�夋嫨'}}</text>
-						<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-					</view>
-				</view>
-				<template v-if="!(info.type !== 2 && info.status === 2)">
-					<view class="list-item-row" @click="selectAddress()">
-						<view class="list-item-row-label">鐢ㄥ伐鍦扮偣<b>*</b></view>
-						<view class="list-item-row-val">
-							<text style="width:80%;">{{form.location ? form.location : '璇烽�夋嫨'}}</text>
-							<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鍦扮偣鎻忚堪</view>
-						<view class="list-item-row-val">
-							<input type="text" v-model="form.locationRemark" placeholder="璇疯緭鍏�" />
-						</view>
-					</view>
-				</template>
-				
-			</view>
-			<template v-if="!(info.type !== 2 && info.status === 2)">
-				<view class="list-item">
-					<view class="list-item-label">
-						<view class="list-item-label-x"></view>
-						<text>闇�姹�</text>
-					</view>
-					<view class="list-item-row" @click="show1 = true">
-						<view class="list-item-row-label">鍒嗘嫞鍝佺<b>*</b></view>
-						<view class="list-item-row-val">
-							<text>{{form.categoryName ? form.categoryName : '璇烽�夋嫨'}}</text>
-							<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鐢ㄥ伐鏁伴噺<b>*</b></view>
-						<view class="list-item-row-val">
-							<input type="number" v-model="form.priceNum2" @blur="getPrice" placeholder="璇疯緭鍏�" />
-							<text>浜�</text>
-						</view>
-					</view>
-					<view class="list-item-row"  >
-						<view class="list-item-row-label">闇�姹傝ˉ鍏�</view>
-						<view class="list-item-row-val">
-							<textarea v-model="form.supplement" cols="30" rows="10" placeholder="濡傛灉鏈夌壒娈婅姹傦紝璇峰湪姝ゅ璇存槑" maxlength="200"></textarea>
-						</view>
-					</view>
-					<view class="list-item-row" >
-						<view class="list-item-row-label">鍥剧墖</view>
-						<view class="list-item-row-upload">
-							<view class="upload-item" v-for="(item, index) in form.multifileList" :key="index">
-								<image :src="item.url || item.fileurlFull" mode="widthFix"></image>
-								<image class="upload-item-dele" @click="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image>
-							</view>
-							<view class="upload-item" @click="uploadImg">
-								<u-icon name="plus" color="#999999" size="24"></u-icon>
-								<text>鐐瑰嚮涓婁紶</text>
-							</view>
-						</view>
-					</view>
-				<!-- 	<view class="list-item-zk" @click="viewStatus = !viewStatus">
-						<text>{{viewStatus ? '鏀惰捣' : '琛ュ厖闇�姹�'}}</text>
-						<u-icon :name="viewStatus ? 'arrow-up' : 'arrow-down'" color="#00BC12" size="16"></u-icon>
-					</view> -->
-				</view>
-				<view class="list-item">
-					<view class="list-item-label">
-						<view class="list-item-label-x"></view>
-						<text>璐圭敤</text>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">澶╂暟</view>
-						<view class="list-item-row-val">
-							<input v-model="form.priceNum1" disabled @blur="getPrice" type="number" placeholder="璇疯緭鍏�" />
-							<text>澶�</text>
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">璐圭敤鏍囧噯<b>*</b></view>
-						<view class="list-item-row-val">
-							<input v-model="form.price" type="number" @blur="getPrice" placeholder="璇疯緭鍏�" />
-							<text>鍏�/浜�/澶�</text>
-						</view>
-					</view>
-				</view>
-				<view class="list-item">
-					<view class="list-item-label">
-						<view class="list-item-label-x"></view>
-						<text>鑱旂郴浜轰俊鎭�</text>
-						<text class="list-item-label-info">榛樿鍙戝崟鏂硅仈绯绘柟寮忥紝鍙慨鏀硅仈绯讳汉</text>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鑱旂郴浜哄鍚�</view>
-						<view class="list-item-row-val">
-							<input type="text" v-model="form.linkName" placeholder="璇疯ˉ鍏�" />
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鑱旂郴鐢佃瘽<b>*</b></view>
-						<view class="list-item-row-val">
-							<input type="text" v-model="form.linkPhone" maxlength="11" placeholder="璇疯ˉ鍏�" />
-						</view>
-					</view>
-				</view>
-			</template>
-			
-		</view>
-		<view style="width: 100%; height: calc(214rpx + env(safe-area-inset-bottom));"></view>
-		<view class="footer">
-			<view class="footer-price">
-				<view class="footer-price-info">棰勪及鎬昏垂鐢�</view>
-				<view class="footer-price-num">
-					<text>{{totalPrice}}</text>
-					<text>鍏�</text>
-				</view>
-			</view>
-			<view class="footer-bottom">
-				<div class="footer-bottom-btn" @click="submit" >
-					<text>{{form.id?'纭淇敼':'绔嬪嵆涓嬪崟'}}</text>
-					<text v-if="!form.id">锛堟湇鍔″畬鎴愬悗浠樻锛�</text>
-				</div>
-			</view>
-			<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
-		</view>
-		
-		<!-- 閫夋嫨鏃ユ湡鑼冨洿 -->
-		<u-calendar
-			:show="show"
-			color="#00BC12"
-			mode="range"
-			 :allowSameDay="true"
-			@close="show = false"
-			@confirm="confirmDate" />
-		
-		<!-- 閫夋嫨鍝佺 -->
-		<u-picker
-			:show="show1"
-			:immediateChange="true"
-			:columns="cateList"
-			confirmColor="#00BC12"
-			@confirm="confirmCategary"
-			@cancel="show1 = false"
-			keyName="name" />
-	</view>
-</template>
-
-<script>
-	import { mapState } from 'vuex'
-	export default {
-		computed: {
-			...mapState(['userInfo']),
-			totalPrice() {
-				return this.form.estimatedAccount / 100
-			}
-		},
-		data() {
-			return {
-				info: {},
-				show: false,
-				show1: false,
-				form: {
-					id: null,
-					days: '',
-					startDate: '',
-					endDate: '',
-					lat: '',
-					lgt: '',
-					location: '',
-					workType: 0,
-					locationRemark: '',
-					categoryId: '',
-					categoryName: '',
-					priceNum1: '',
-					priceNum2: '',
-					price: '',
-					supplement: '',
-					multifileList: [],
-					linkName: '',
-					linkPhone: '',
-					priceUnit: '鍏�/浜�/澶�',
-					estimatedAccount: '',
-					type: 0
-				},
-				cateList: [],
-				viewStatus: true
-			};
-		},
-		onLoad(option) {
-			if (option.id) {
-				this.form.id = option.id
-				this.$u.api.getDetail({
-					orderId: option.id
-				}).then(res => {
-					if (res.code === 200) {
-						this.info = res.data
-						for (const key in this.form) {
-							this.form[key] = res.data[key]
-						}
-						this.form.days = res.data.totalDays
-						this.form.price = Number(this.form.price) / 100
-						if (!this.form.multifileList) {
-							this.form.multifileList = []
-						}
-					}
-					
-				})
-			} else {
-				this.form.linkName = this.userInfo.name
-				this.form.linkPhone = this.userInfo.telephone
-				this.form.priceNum1 = option.days
-				this.form.startDate = option.startDate
-				this.form.endDate = option.endDate
-				this.form.lat = option.latitude
-				this.form.lgt = option.longitude
-				this.form.location = option.address
-				this.form.workType = option.workType
-			}
-			this.getCateList()
-		},
-		methods: {
-			// 鎻愪氦璁㈠崟
-			submit() {
-				if (!this.form.categoryId) {
-					return uni.showToast({ title: '璇烽�夋嫨鍒嗘嫞鍝佺', icon: 'none' })
-				}
-				if (!this.form.priceNum2) {
-					return uni.showToast({ title: '璇疯緭鍏ョ敤宸ユ暟閲�', icon: 'none' })
-				}
-				if (!this.form.price) {
-					return uni.showToast({ title: '璇疯緭鍏ヨ垂鐢ㄦ爣鍑�', icon: 'none' })
-				}
-				if (!this.form.linkPhone) {
-					return uni.showToast({ title: '璇疯緭鍏ヨ仈绯荤數璇�', icon: 'none' })
-				}
-				if (!this.form.id) {
-					this.$u.api.release({ ...this.form, price: Number(this.form.price) * 100 })
-						.then(res => {
-							if (res.code == 200) {
-								uni.navigateTo({
-									url: `/pages/success/success?orderId=${res.data.id}`
-								})
-							}
-						})
-				} else {
-					this.$u.api.updateOrder({ ...this.form, price: Number(this.form.price) * 100 })
-						.then(res => {
-							if (res.code == 200) {
-								uni.showToast({ title: '缂栬緫鎴愬姛', icon: 'success', mask: true, duration: 2000 })
-								setTimeout(() => {
-									uni.navigateBack({ delta: 1 });
-									// uni.$emit('refresh')
-								}, 1500)
-							}
-						})
-				}
-			},
-			// 璁$畻閲戦
-			getPrice() {
-				if (this.form.price && this.form.priceNum1 && this.form.priceNum2) {
-					this.$u.api.getTotal({
-						price: Number(this.form.price) * 100,
-						priceUnit: this.form.priceUnit,
-						priceNum1: this.form.priceNum1,
-						priceNum2: this.form.priceNum2,
-						type: this.form.type, 
-						workType: this.form.workType
-					}).then(res => {
-						if (res.code === 200) {
-							this.form.estimatedAccount = res.data
-						}
-						
-					})
-				}
-			},
-			confirmDate(e) {
-				this.form.startDate = e[0]
-				this.form.endDate = e[e.length - 1]
-				this.form.priceNum1 = e.length;
-				this.show = false
-				this.getPrice()
-			},
-			selectAddress() {
-				uni.chooseLocation({
-					success: (res) => {
-						this.form.lat = res.latitude
-						this.form.lgt = res.longitude
-						this.form.address = res.name || res.address
-					}
-				});
-			},
-			confirmCategary(e) {
-				this.form.categoryId = e.value[0].id
-				this.form.categoryName = e.value[0].name
-				this.show1 = false
-			},
-			getCateList() {
-				this.$u.api.getCategoryList({
-					type: 0
-				}).then(res => {
-					if (res.code === 200) {
-						this.cateList = [res.data]
-					}
-					
-				})
-			},
-			uploadImg() {
-				uni.chooseImage({
-					success: (chooseImageRes) => {
-						const tempFilePaths = chooseImageRes.tempFilePaths;
-						uni.uploadFile({
-							url: this.$baseUrl + '/web/public/upload',
-							filePath: tempFilePaths[0],
-							name: 'file',
-							formData: {
-								'folder': 'orders'
-							},
-							success: (uploadFileRes) => {
-								const res = JSON.parse(uploadFileRes.data)
-								this.form.multifileList.push({
-									fileurl: res.data.imgaddr,
-									name: res.data.originname,
-									url: res.data.url,
-									type: 0
-								})
-							}
-						});
-					}
-				});
-			}
-		}
-	}
-</script>
-
-<style>
-	page {
-		background-color: #F7F7F7 !important;
-	}
-</style>
-
-<style lang="scss" scoped>
-	.index {
-		width: 100%;
-		.footer {
-			width: 100%;
-			height: calc(214rpx + env(safe-area-inset-bottom));
-			padding: 20rpx 30rpx;
-			box-sizing: border-box;
-			position: fixed;
-			bottom: 0;
-			left: 0;
-			z-index: 9;
-			display: flex;
-			flex-direction: column;
-			justify-content: space-between;
-			background: #FFFFFF;
-			box-shadow: 0rpx -2rpx 4rpx 0rpx rgba(0,0,0,0.06);
-			.footer-price {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.footer-price-info {
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #222222;
-				}
-				.footer-price-num {
-					display: flex;
-					align-items: center;
-					text {
-						&:nth-child(1) {
-							font-weight: 500;
-							font-size: 40rpx;
-							color: #FF0000;
-							margin-right: 20rpx;
-						}
-						&:nth-child(2) {
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #222222;
-						}
-					}
-				}
-			}
-			.footer-bottom {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.footer-bottom-kf {
-					flex-shrink: 0;
-					margin-right: 40rpx;
-					display: flex;
-					flex-direction: column;
-					align-items: center;
-					justify-content: center;
-					image {
-						width: 36rpx;
-						height: 36rpx;
-					}
-					text {
-						font-weight: 400;
-						font-size: 24rpx;
-						color: #222222;
-						margin-top: 8rpx;
-					}
-				}
-				.footer-bottom-btn {
-					flex: 1;
-					height: 88rpx;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					background: #00BC12;
-					box-shadow: 0rpx 8rpx 12rpx 0rpx rgba(91,190,56,0.16);
-					border-radius: 44rpx;
-					text {
-						&:nth-child(1) {
-							font-weight: 500;
-							font-size: 32rpx;
-							color: #FFFFFF;
-						}
-						&:nth-child(2) {
-							font-weight: 500;
-							font-size: 26rpx;
-							color: #FFFFFF;
-						}
-					}
-				}
-			}
-		}
-		.list {
-			width: 100%;
-			display: flex;
-			flex-direction: column;
-			.list-item {
-				width: 100%;
-				padding: 40rpx 30rpx;
-				box-sizing: border-box;
-				background-color: #ffffff;
-				border-radius: 20rpx;
-				margin-bottom: 20rpx;
-				&:last-child {
-					margin: 0 !important;
-				}
-				.list-item-label {
-					display: flex;
-					align-items: center;
-					margin-bottom: 28rpx;
-					text {
-						font-weight: 600;
-						font-size: 32rpx;
-						color: #222222;
-					}
-					.list-item-label-info {
-						font-weight: 400;
-						font-size: 26rpx;
-						color: #999999;
-						margin-left: 26rpx;
-					}
-					.list-item-label-x {
-						width: 6rpx;
-						height: 30rpx;
-						background: #00BC12;
-						border-radius: 4rpx;
-						margin-right: 20rpx;
-					}
-				}
-				.list-item-zk {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					text {
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #00BC12;
-						margin-right: 8rpx;
-					}
-				}
-				.list-item-row {
-					width: 100%;
-					display: flex;
-					flex-direction: column;
-					border-bottom: 1rpx solid #E5E5E5;
-					margin-bottom: 30rpx;
-					&:last-child {
-						margin: 0 !important;
-					}
-					.list-item-row-label {
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #666666;
-						display: flex;
-						align-items: center;
-						b {
-							color: red;
-						}
-					}
-					.list-item-row-user {
-						width: 100%;
-						display: flex;
-						flex-direction: column;
-						.user-item {
-							width: 100%;
-							padding: 30rpx 0;
-							box-sizing: border-box;
-							display: flex;
-							align-items: center;
-							margin-bottom: 30rpx;
-							justify-content: space-between;
-							border-bottom: 1rpx solid #E5E5E5;
-							&:last-child {
-								margin: 0 !important;
-							}
-							text {
-								flex-shrink: 0;
-								font-weight: 400;
-								font-size: 30rpx;
-								color: #333333;
-							}
-							input {
-								flex: 1;
-								text-align: center;
-								margin: 0 30rpx;
-								font-weight: 400;
-								font-size: 30rpx;
-								color: #222222;
-							}
-						}
-					}
-					.list-item-row-radio {
-						width: 100%;
-						display: flex;
-						padding: 30rpx 0;
-						box-sizing: border-box;
-						flex-direction: column;
-						border-bottom: 1rpx solid #E5E5E5;
-						.radio-item {
-							width: 100%;
-							display: flex;
-							align-items: center;
-							margin-bottom: 30rpx;
-							&:last-child {
-								margin: 0 !important;
-							}
-							.radio-item-label {
-								width: 200rpx;
-								flex-shrink: 0;
-								font-weight: 400;
-								font-size: 30rpx;
-								color: #111111;
-							}
-							.radio-item-list {
-								flex: 1;
-								display: flex;
-								flex-direction: column;
-								.radio-item-list-l {
-									width: 100%;
-									display: flex;
-									align-items: center;
-									.active {
-										background: #00BC12 !important;
-										color: #ffffff !important;
-									}
-									.radio-item-list-item {
-										width: 124rpx;
-										height: 72rpx;
-										line-height: 72rpx;
-										text-align: center;
-										background: #EEEEEE;
-										border-radius: 36rpx;
-										font-weight: 400;
-										font-size: 28rpx;
-										color: #111111;
-										margin-right: 30rpx;
-										&:last-child {
-											margin: 0 !important;
-										}
-									}
-								}
-								.radio-item-list-data {
-									width: 100%;
-									display: flex;
-									align-items: center;
-									justify-content: flex-end;
-									margin-top: 42rpx;
-									text {
-										font-weight: 400;
-										font-size: 30rpx;
-										color: #333333;
-									}
-									input {
-										width: 100rpx;
-										font-weight: bold;
-										font-size: 30rpx;
-										color: #222222;
-										text-align: right;
-										margin: 0 30rpx;
-									}
-								}
-							}
-						}
-					}
-					.list-item-row-upload {
-						width: 100%;
-						display: flex;
-						align-items: center;
-						flex-wrap: wrap;
-						padding: 30rpx 0;
-						box-sizing: border-box;
-						.upload-item {
-							width: 156rpx;
-							height: 156rpx;
-							display: flex;
-							align-items: center;
-							flex-direction: column;
-							justify-content: center;
-							background: #F8F9FB;
-							border-radius: 8rpx;
-							margin-right: 20rpx;
-							border: 2rpx solid #EEEEEE;
-							position: relative;
-							&:last-child {
-								margin: 0 !important;
-							}
-							image {
-								width: 100%;
-							}
-							text {
-								font-weight: 400;
-								font-size: 26rpx;
-								color: #666666;
-								margin-top: 16rpx;
-							}
-							.upload-item-dele {
-								position: absolute;
-								top: -20rpx;
-								right: -20rpx;
-								width: 40rpx;
-								height: 40rpx;
-								z-index: 9;
-							}
-						}
-					}
-					.list-item-row-val {
-						width: 100%;
-						padding: 30rpx 0;
-						box-sizing: border-box;
-						display: flex;
-						align-items: center;
-						justify-content: space-between;
-						text {
-							flex-shrink: 0;
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #111111;
-						}
-						input {
-							width: 100%;
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #222222;
-						}
-						textarea {
-							width: 100%;
-							height: 90rpx;
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #111111;
-						}
-					}
-				}
-			}
-		}
-	}
-</style>
diff --git a/small-program/pages/success/success.vue b/small-program/pages/success/success.vue
deleted file mode 100644
index 4b954d3..0000000
--- a/small-program/pages/success/success.vue
+++ /dev/null
@@ -1,92 +0,0 @@
-<template>
-	<view class="success">
-		<image src="/static/icon/ic_success@2x.png" mode="widthFix"></image>
-		<text class="success-a">鍙戝崟鎴愬姛</text>
-		<text class="success-b">璇风瓑寰呮帴鍗�</text>
-		<view class="success-footer">
-			<view class="success-footer-btn" @click="toIndex">鍥炲埌棣栭〉</view>
-			<view style="width: 20rpx; height: 100%;"></view>
-			<view class="success-footer-btn1" @click="toDesc">鏌ョ湅璇︽儏</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				orderId: null
-			};
-		},
-		onLoad(option) {
-			this.orderId = option.orderId
-		},
-		methods: {
-			toIndex() {
-				uni.$emit('clear')
-				uni.switchTab({
-					url: '/pages/index/index'
-				});
-			},
-			toDesc() {
-				uni.navigateTo({
-					url: `/pages/order-details/order-details?id=${this.orderId}`
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.success {
-		width: 100%;
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		justify-content: center;
-		image {
-			width: 180rpx;
-			height: 180rpx;
-			margin-top: 180rpx;
-			margin-bottom: 40rpx;
-		}
-		.success-a {
-			font-weight: 500;
-			font-size: 36rpx;
-			color: #111111;
-			margin-bottom: 20rpx;
-		}
-		.success-b {
-			font-weight: 400;
-			font-size: 26rpx;
-			color: #999999;
-			margin-bottom: 94rpx;
-		}
-		.success-footer {
-			display: flex;
-			align-items: center;
-			.success-footer-btn {
-				width: 200rpx;
-				height: 72rpx;
-				line-height: 72rpx;
-				text-align: center;
-				border-radius: 36rpx;
-				border: 1rpx solid #00BC12;
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #00BC12;
-			}
-			.success-footer-btn1 {
-				width: 200rpx;
-				height: 72rpx;
-				line-height: 72rpx;
-				text-align: center;
-				background: #00BC12;
-				border-radius: 36rpx;
-				font-weight: 400;
-				font-size: 28rpx;
-				color: #FFFFFF;
-			}
-		}
-	}
-</style>
diff --git a/small-program/pages/using-workers/using-workers.vue b/small-program/pages/using-workers/using-workers.vue
deleted file mode 100644
index e87979b..0000000
--- a/small-program/pages/using-workers/using-workers.vue
+++ /dev/null
@@ -1,706 +0,0 @@
-<template>
-	<view class="index">
-		<view class="list">
-			<view class="list-item">
-				<view class="list-item-label">
-					<view class="list-item-label-x"></view>
-					<text>鏃堕棿鍦扮偣</text>
-				</view>
-				<view class="list-item-row" @click="show = true">
-					<view class="list-item-row-label">鐢ㄥ伐鏃堕棿<b>*</b></view>
-					<view class="list-item-row-val">
-						<text>{{form.startDate ? form.startDate + ' 鑷� ' + form.endDate + ' (' + form.days + '澶�) ' : '璇烽�夋嫨'}}</text>
-						<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-					</view>
-				</view>
-				<template v-if="!(info.type !== 2 && info.status === 2)">
-					<view class="list-item-row" @click="selectAddress()">
-						<view class="list-item-row-label">鐢ㄥ伐鍦扮偣<b>*</b></view>
-						<view class="list-item-row-val">
-							<text style="width:80%;">{{form.location ? form.location : '璇烽�夋嫨'}}</text>
-							<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鍦扮偣鎻忚堪</view>
-						<!-- <view class="list-item-row-val">
-							<input type="text" v-model="form.locationRemark" placeholder="璇疯緭鍏�" />
-						</view> -->
-						<view class="list-item-row-val">
-							<textarea v-model="form.locationRemark" cols="30" rows="10" placeholder="璇疯緭鍏�" maxlength="200"></textarea>
-						</view>
-					</view>
-				</template>
-				
-			</view>
-			<template v-if="!(info.type !== 2 && info.status === 2)">
-				<view class="list-item">
-					<view class="list-item-label">
-						<view class="list-item-label-x"></view>
-						<text>闇�姹�</text>
-					</view>
-					<view class="list-item-row" @click="show1 = true">
-						<view class="list-item-row-label">閲囨憳鍝佺<b>*</b></view>
-						<view class="list-item-row-val">
-							<text>{{form.categoryName ? form.categoryName : '璇烽�夋嫨'}}</text>
-							<u-icon name="arrow-right" color="#111111" size="16"></u-icon>
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">閲囨憳閲嶉噺<b>*</b></view>
-						<view class="list-item-row-val">
-							<input type="digit" v-model="form.priceNum1" @blur="getPrice" placeholder="璇疯緭鍏�" />
-							<text>鏂�</text>
-						</view>
-					</view>
-					<view class="list-item-row"  >
-						<view class="list-item-row-label">闇�姹傝ˉ鍏�</view>
-						<view class="list-item-row-val">
-							<textarea v-model="form.supplement" cols="30" rows="10" placeholder="璇疯緭鍏�" maxlength="200"></textarea>
-						</view>
-					</view>
-					<view class="list-item-row" >
-						<view class="list-item-row-label">鍥剧墖</view>
-						<view class="list-item-row-upload">
-							<view class="upload-item" v-for="(item, index) in form.multifileList" :key="index" @click="preview(index, form.multifileList)">
-								<image :src="item.url || item.fileurlFull" mode="widthFix"></image>
-								<image class="upload-item-dele" @click.stop="form.multifileList.splice(index, 1)" src="/static/icon/ic_delete1@2x.png" mode="widthFix"></image>
-							</view>
-							<view class="upload-item" @click="uploadImg">
-								<u-icon name="plus" color="#999999" size="24"></u-icon>
-								<text>鐐瑰嚮涓婁紶</text>
-							</view>
-							<view style="width: 215rpx; height: 0;"></view>
-						</view>
-					</view>
-					<!-- <view class="list-item-zk" @click="viewStatus = !viewStatus">
-						<text>{{viewStatus ? '鏀惰捣' : '琛ュ厖闇�姹�'}}</text>
-						<u-icon :name="viewStatus ? 'arrow-up' : 'arrow-down'" color="#00BC12" size="16"></u-icon>
-					</view> -->
-				</view>
-				<view class="list-item">
-					<view class="list-item-label">
-						<view class="list-item-label-x"></view>
-						<text>璐圭敤</text>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">璐圭敤鏍囧噯<b>*</b></view>
-						<view class="list-item-row-val">
-							<input v-model="form.price" type="digit" @blur="getPrice" placeholder="璇疯緭鍏�" />
-							<text>鍏�/鏂�</text>
-						</view>
-					</view>
-				</view>
-				<view class="list-item">
-					<view class="list-item-label">
-						<view class="list-item-label-x"></view>
-						<text>鑱旂郴浜轰俊鎭�</text>
-						<text class="list-item-label-info">榛樿鍙戝崟鏂硅仈绯绘柟寮忥紝鍙慨鏀硅仈绯讳汉</text>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鑱旂郴浜哄鍚�</view>
-						<view class="list-item-row-val">
-							<input type="text" v-model="form.linkName" placeholder="璇疯ˉ鍏�" />
-						</view>
-					</view>
-					<view class="list-item-row">
-						<view class="list-item-row-label">鑱旂郴鐢佃瘽<b>*</b></view>
-						<view class="list-item-row-val">
-							<input type="text" v-model="form.linkPhone" maxlength="11" placeholder="璇疯ˉ鍏�" />
-						</view>
-					</view>
-				</view>
-			</template>
-			
-		</view>
-		<view style="width: 100%; height: calc(214rpx + env(safe-area-inset-bottom));"></view>
-		<view class="footer">
-			<view class="footer-price">
-				<view class="footer-price-info">棰勪及鎬昏垂鐢�</view>
-				<view class="footer-price-num">
-					<text>{{totalPrice}}</text>
-					<text>鍏�</text>
-				</view>
-			</view>
-			<view class="footer-bottom">
-				<div class="footer-bottom-btn" @click="submit" >
-					<text>{{form.id?'纭淇敼':'绔嬪嵆涓嬪崟'}}</text>
-					<text v-if="!form.id">锛堟湇鍔″畬鎴愬悗浠樻锛�</text>
-				</div>
-			</view>
-			<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
-		</view>
-		
-		<!-- 閫夋嫨鏃ユ湡鑼冨洿 -->
-		<u-calendar
-			:show="show"
-			color="#00BC12"
-			mode="range"
-			 :allowSameDay="true"
-			@close="show = false"
-			@confirm="confirmDate" />
-		
-		<!-- 閫夋嫨鍝佺 -->
-		<u-picker
-			:show="show1"
-			:immediateChange="true"
-			:columns="cateList"
-			confirmColor="#00BC12"
-			@confirm="confirmCategary"
-			@cancel="show1 = false"
-			keyName="name" />
-	</view>
-</template>
-
-<script>
-	import { mapState } from 'vuex'
-	export default {
-		computed: {
-			...mapState(['userInfo']),
-			totalPrice() {
-				return this.form.estimatedAccount / 100
-			}
-		},
-		data() {
-			return {
-				info: {},
-				show: false,
-				show1: false,
-				form: {
-					id: null,
-					days: '',
-					startDate: '',
-					endDate: '',
-					lat: '',
-					lgt: '',
-					location: '',
-					workType: 0,
-					locationRemark: '',
-					categoryId: '',
-					categoryName: '',
-					priceNum1: '',
-					price: '',
-					supplement: '',
-					multifileList: [],
-					linkName: '',
-					linkPhone: '',
-					priceUnit: '鏂�',
-					estimatedAccount: '',
-					type: 0
-				},
-				modify: false,
-				cateList: [],
-				viewStatus: true
-			};
-		},
-		onLoad(option) {
-			// 缂栬緫
-			if (option.id) {
-				this.form.id = option.id
-				this.$u.api.getDetail({
-					orderId: option.id
-				}).then(res => {
-					if (res.code === 200) {
-						this.info = res.data
-						for (const key in this.form) {
-							this.form[key] = res.data[key]
-						}
-						this.form.days = res.data.totalDays
-						this.form.price = Number(this.form.price) / 100
-						if (!this.form.multifileList) {
-							this.form.multifileList = []
-						}
-					}
-					
-				})
-			} else {
-				this.form.linkPhone = this.userInfo.telephone
-				this.form.linkName = this.userInfo.name
-				this.form.days = option.days
-				this.form.startDate = option.startDate
-				this.form.endDate = option.endDate
-				this.form.lat = option.latitude
-				this.form.lgt = option.longitude
-				this.form.location = option.address
-				this.form.workType = option.workType
-			}
-			this.getCateList()
-		},
-		methods: {
-			preview(current, arr) {
-				let urls = arr.map(item => item.url || item.fileurlFull)
-				uni.previewImage({ current, urls })
-			},
-			// 鎻愪氦璁㈠崟
-			submit() {
-				var that = this;
-				if (!this.form.categoryId) {
-					return uni.showToast({ title: '璇烽�夋嫨閲囨憳鍝佺', icon: 'none' })
-				}
-				if (!this.form.priceNum1) {
-					return uni.showToast({ title: '璇疯緭鍏ラ噰鎽橀噸閲�', icon: 'none' })
-				}
-				if (!this.form.price) {
-					return uni.showToast({ title: '璇疯緭鍏ヨ垂鐢ㄦ爣鍑�', icon: 'none' })
-				}
-				if (!this.form.linkPhone) {
-					return uni.showToast({ title: '璇疯緭鍏ヨ仈绯荤數璇�', icon: 'none' })
-				}
-				if (!that.form.id) {
-					uni.requestSubscribeMessage({
-						tmplIds: ['oVjOBLcHxIlGzOMJsdInmgI5CHGXh-UTvMzQqfFOnIg','AA97cHjvlPiNO4viMkVe4JifCf9TD5b5Eb7s6El3VS8'],
-						success(res) {
-							that.$u.api.release({ ...that.form, price: Number(that.form.price) * 100 })
-								.then(res => {
-									if (res.code == 200) {
-										uni.navigateTo({
-											url: `/pages/success/success?orderId=${res.data.id}`
-										})
-									}
-								})
-						}
-					})
-				} else {
-					// uni.requestSubscribeMessage({
-					// 	tmplIds: ['3YSC7gouRlSjHXz4CrWOGFzPmGwEBtFj4snwdfMvKHk'],
-					// 	success(res) {
-							that.$u.api.updateOrder({ ...that.form, price: Number(that.form.price) * 100  })
-								.then(res => {
-									if (res.code == 200) {
-										uni.showToast({
-											title: '缂栬緫鎴愬姛',
-											icon: 'success',
-											mask: true,
-											duration: 2000
-										})
-										setTimeout(() => {
-											uni.navigateBack({ delta: 1 });
-											// uni.$emit('refresh')
-										}, 1500)
-									}
-								})
-					// 	}
-					// })
-				}
-			},
-			// 璁$畻閲戦
-			getPrice() {
-				if (this.form.price && this.form.priceNum1) {
-					this.$u.api.getTotal({
-						price: Number(this.form.price) * 100,
-						priceUnit: this.form.priceUnit,
-						priceNum1: this.form.priceNum1,
-						priceNum2: 1,
-						type: this.form.type,
-						workType: this.form.workType
-					}).then(res => {
-						if (res.code === 200) {
-							this.modify = true
-							this.form.estimatedAccount = res.data
-						}
-					})
-				}
-			},
-			confirmDate(e) {
-				this.form.startDate = e[0]
-				this.form.endDate = e[e.length - 1]
-				this.form.days = e.length;
-				this.show = false
-			},
-			selectAddress() {
-				uni.chooseLocation({
-					success: (res) => {
-						this.form.lat = res.latitude
-						this.form.lgt = res.longitude
-						this.form.address = res.name || res.address
-					}
-				});
-			},
-			confirmCategary(e) {
-				this.form.categoryId = e.value[0].id
-				this.form.categoryName = e.value[0].name
-				this.show1 = false
-			},
-			getCateList() {
-				this.$u.api.getCategoryList({
-					type: 0
-				}).then(res => {
-					if (res.code === 200) {
-						this.cateList = [res.data]
-					}
-				})
-			},
-			uploadImg() {
-				uni.chooseImage({
-					success: (chooseImageRes) => {
-						for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
-							uni.uploadFile({
-								url: this.$baseUrl + '/web/public/upload',
-								filePath: chooseImageRes.tempFilePaths[i],
-								name: 'file',
-								formData: {
-									'folder': 'orders'
-								},
-								success: (uploadFileRes) => {
-									const res = JSON.parse(uploadFileRes.data)
-									this.form.multifileList.push({
-										fileurl: res.data.imgaddr,
-										name: res.data.originname,
-										url: res.data.url,
-										type: 0
-									})
-								}
-							});
-						}
-					}
-				});
-			}
-		}
-	}
-</script>
-
-<style>
-	page {
-		background-color: #F7F7F7 !important;
-	}
-</style>
-
-<style lang="scss" scoped>
-	.index {
-		width: 100%;
-		.footer {
-			width: 100%;
-			height: calc(214rpx + env(safe-area-inset-bottom));
-			padding: 20rpx 30rpx;
-			box-sizing: border-box;
-			position: fixed;
-			bottom: 0;
-			left: 0;
-			z-index: 9;
-			display: flex;
-			flex-direction: column;
-			justify-content: space-between;
-			background: #FFFFFF;
-			box-shadow: 0rpx -2rpx 4rpx 0rpx rgba(0,0,0,0.06);
-			.footer-price {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.footer-price-info {
-					font-weight: 400;
-					font-size: 30rpx;
-					color: #222222;
-				}
-				.footer-price-num {
-					display: flex;
-					align-items: center;
-					text {
-						&:nth-child(1) {
-							font-weight: 500;
-							font-size: 40rpx;
-							color: #FF0000;
-							margin-right: 20rpx;
-						}
-						&:nth-child(2) {
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #222222;
-						}
-					}
-				}
-			}
-			.footer-bottom {
-				width: 100%;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.footer-bottom-kf {
-					flex-shrink: 0;
-					margin-right: 40rpx;
-					display: flex;
-					flex-direction: column;
-					align-items: center;
-					justify-content: center;
-					image {
-						width: 36rpx;
-						height: 36rpx;
-					}
-					text {
-						font-weight: 400;
-						font-size: 24rpx;
-						color: #222222;
-						margin-top: 8rpx;
-					}
-				}
-				.footer-bottom-btn {
-					flex: 1;
-					height: 88rpx;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					background: #00BC12;
-					box-shadow: 0rpx 8rpx 12rpx 0rpx rgba(91,190,56,0.16);
-					border-radius: 44rpx;
-					text {
-						&:nth-child(1) {
-							font-weight: 500;
-							font-size: 32rpx;
-							color: #FFFFFF;
-						}
-						&:nth-child(2) {
-							font-weight: 500;
-							font-size: 26rpx;
-							color: #FFFFFF;
-						}
-					}
-				}
-			}
-		}
-		.list {
-			width: 100%;
-			display: flex;
-			flex-direction: column;
-			.list-item {
-				width: 100%;
-				padding: 40rpx 30rpx;
-				box-sizing: border-box;
-				background-color: #ffffff;
-				border-radius: 20rpx;
-				margin-bottom: 20rpx;
-				&:last-child {
-					margin: 0 !important;
-				}
-				.list-item-label {
-					display: flex;
-					align-items: center;
-					margin-bottom: 28rpx;
-					text {
-						font-weight: 600;
-						font-size: 32rpx;
-						color: #222222;
-					}
-					.list-item-label-info {
-						font-weight: 400;
-						font-size: 26rpx;
-						color: #999999;
-						margin-left: 26rpx;
-					}
-					.list-item-label-x {
-						width: 6rpx;
-						height: 30rpx;
-						background: #00BC12;
-						border-radius: 4rpx;
-						margin-right: 20rpx;
-					}
-				}
-				.list-item-zk {
-					width: 100%;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					text {
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #00BC12;
-						margin-right: 8rpx;
-					}
-				}
-				.list-item-row {
-					width: 100%;
-					display: flex;
-					flex-direction: column;
-					border-bottom: 1rpx solid #E5E5E5;
-					margin-bottom: 30rpx;
-					&:last-child {
-						margin: 0 !important;
-					}
-					.list-item-row-label {
-						font-weight: 400;
-						font-size: 28rpx;
-						color: #666666;
-						display: flex;
-						align-items: center;
-						b {
-							color: red;
-						}
-					}
-					.list-item-row-user {
-						width: 100%;
-						display: flex;
-						flex-direction: column;
-						.user-item {
-							width: 100%;
-							padding: 30rpx 0;
-							box-sizing: border-box;
-							display: flex;
-							align-items: center;
-							margin-bottom: 30rpx;
-							justify-content: space-between;
-							border-bottom: 1rpx solid #E5E5E5;
-							&:last-child {
-								margin: 0 !important;
-							}
-							text {
-								flex-shrink: 0;
-								font-weight: 400;
-								font-size: 30rpx;
-								color: #333333;
-							}
-							input {
-								flex: 1;
-								text-align: center;
-								margin: 0 30rpx;
-								font-weight: 400;
-								font-size: 30rpx;
-								color: #222222;
-							}
-						}
-					}
-					.list-item-row-radio {
-						width: 100%;
-						display: flex;
-						padding: 30rpx 0;
-						box-sizing: border-box;
-						flex-direction: column;
-						border-bottom: 1rpx solid #E5E5E5;
-						.radio-item {
-							width: 100%;
-							display: flex;
-							align-items: center;
-							margin-bottom: 30rpx;
-							&:last-child {
-								margin: 0 !important;
-							}
-							.radio-item-label {
-								width: 200rpx;
-								flex-shrink: 0;
-								font-weight: 400;
-								font-size: 30rpx;
-								color: #111111;
-							}
-							.radio-item-list {
-								flex: 1;
-								display: flex;
-								flex-direction: column;
-								.radio-item-list-l {
-									width: 100%;
-									display: flex;
-									align-items: center;
-									.active {
-										background: #00BC12 !important;
-										color: #ffffff !important;
-									}
-									.radio-item-list-item {
-										width: 124rpx;
-										height: 72rpx;
-										line-height: 72rpx;
-										text-align: center;
-										background: #EEEEEE;
-										border-radius: 36rpx;
-										font-weight: 400;
-										font-size: 28rpx;
-										color: #111111;
-										margin-right: 30rpx;
-										&:last-child {
-											margin: 0 !important;
-										}
-									}
-								}
-								.radio-item-list-data {
-									width: 100%;
-									display: flex;
-									align-items: center;
-									justify-content: flex-end;
-									margin-top: 42rpx;
-									text {
-										font-weight: 400;
-										font-size: 30rpx;
-										color: #333333;
-									}
-									input {
-										width: 100rpx;
-										font-weight: bold;
-										font-size: 30rpx;
-										color: #222222;
-										text-align: right;
-										margin: 0 30rpx;
-									}
-								}
-							}
-						}
-					}
-					.list-item-row-upload {
-						width: 100%;
-						display: flex;
-						align-items: center;
-						justify-content: space-between;
-						flex-wrap: wrap;
-						padding: 30rpx 0;
-						box-sizing: border-box;
-						.upload-item {
-							width: 215rpx;
-							height: 215rpx;
-							display: flex;
-							align-items: center;
-							flex-direction: column;
-							justify-content: center;
-							background: #F8F9FB;
-							border-radius: 8rpx;
-							border: 2rpx solid #EEEEEE;
-							position: relative;
-							margin-bottom: 15rpx;
-							&:last-child {
-								margin: 0 !important;
-							}
-							image {
-								width: 100%;
-							}
-							text {
-								font-weight: 400;
-								font-size: 26rpx;
-								color: #666666;
-								margin-top: 16rpx;
-							}
-							.upload-item-dele {
-								position: absolute;
-								top: -20rpx;
-								right: -20rpx;
-								width: 40rpx;
-								height: 40rpx;
-								z-index: 9;
-							}
-						}
-					}
-					.list-item-row-val {
-						width: 100%;
-						padding: 30rpx 0;
-						box-sizing: border-box;
-						display: flex;
-						align-items: center;
-						justify-content: space-between;
-						text {
-							flex-shrink: 0;
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #111111;
-						}
-						input {
-							width: 100%;
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #222222;
-						}
-						textarea {
-							width: 100%;
-							height: 90rpx;
-							font-weight: 400;
-							font-size: 30rpx;
-							color: #111111;
-						}
-					}
-				}
-			}
-		}
-	}
-</style>
diff --git a/small-program/static/icon/ar_address@2x.png b/small-program/static/icon/ar_address@2x.png
deleted file mode 100644
index dafc78e..0000000
--- a/small-program/static/icon/ar_address@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/default_login@2x.png b/small-program/static/icon/default_login@2x.png
deleted file mode 100644
index be12541..0000000
--- a/small-program/static/icon/default_login@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/home_ar_next@2x.png b/small-program/static/icon/home_ar_next@2x.png
deleted file mode 100644
index d991cbf..0000000
--- a/small-program/static/icon/home_ar_next@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/home_ic_location@2x.png b/small-program/static/icon/home_ic_location@2x.png
deleted file mode 100644
index 525bf81..0000000
--- a/small-program/static/icon/home_ic_location@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_agree@2x.png b/small-program/static/icon/ic_agree@2x.png
deleted file mode 100644
index 2c9c027..0000000
--- a/small-program/static/icon/ic_agree@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_call@2x.png b/small-program/static/icon/ic_call@2x.png
deleted file mode 100644
index 6a64ff7..0000000
--- a/small-program/static/icon/ic_call@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_camera@2x.png b/small-program/static/icon/ic_camera@2x.png
deleted file mode 100644
index 088671a..0000000
--- a/small-program/static/icon/ic_camera@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_change@2x.png b/small-program/static/icon/ic_change@2x.png
deleted file mode 100644
index 76f8c32..0000000
--- a/small-program/static/icon/ic_change@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_close@2x.png b/small-program/static/icon/ic_close@2x.png
deleted file mode 100644
index 29468f1..0000000
--- a/small-program/static/icon/ic_close@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_delete1@2x.png b/small-program/static/icon/ic_delete1@2x.png
deleted file mode 100644
index 4ebc8fe..0000000
--- a/small-program/static/icon/ic_delete1@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_delete@2x.png b/small-program/static/icon/ic_delete@2x.png
deleted file mode 100644
index cd74219..0000000
--- a/small-program/static/icon/ic_delete@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_fail@2x.png b/small-program/static/icon/ic_fail@2x.png
deleted file mode 100644
index 122d69a..0000000
--- a/small-program/static/icon/ic_fail@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_huakuai@2x.png b/small-program/static/icon/ic_huakuai@2x.png
deleted file mode 100644
index 9cedfde..0000000
--- a/small-program/static/icon/ic_huakuai@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_jingguo@2x.png b/small-program/static/icon/ic_jingguo@2x.png
deleted file mode 100644
index 3b9d302..0000000
--- a/small-program/static/icon/ic_jingguo@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_kefu.png b/small-program/static/icon/ic_kefu.png
deleted file mode 100644
index ef1a9ea..0000000
--- a/small-program/static/icon/ic_kefu.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_location@2x.png b/small-program/static/icon/ic_location@2x.png
deleted file mode 100644
index 8a7c81b..0000000
--- a/small-program/static/icon/ic_location@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_money@2x.png b/small-program/static/icon/ic_money@2x.png
deleted file mode 100644
index d0c28a3..0000000
--- a/small-program/static/icon/ic_money@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_notagree@2x.png b/small-program/static/icon/ic_notagree@2x.png
deleted file mode 100644
index 6d65b97..0000000
--- a/small-program/static/icon/ic_notagree@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_pass@2x.png b/small-program/static/icon/ic_pass@2x.png
deleted file mode 100644
index 2367d43..0000000
--- a/small-program/static/icon/ic_pass@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_pingjia@2x.png b/small-program/static/icon/ic_pingjia@2x.png
deleted file mode 100644
index 91a27ec..0000000
--- a/small-program/static/icon/ic_pingjia@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_qidian@2x.png b/small-program/static/icon/ic_qidian@2x.png
deleted file mode 100644
index 424e47d..0000000
--- a/small-program/static/icon/ic_qidian@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_renzhengzhong@2x.png b/small-program/static/icon/ic_renzhengzhong@2x.png
deleted file mode 100644
index 14adb81..0000000
--- a/small-program/static/icon/ic_renzhengzhong@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_search@2x.png b/small-program/static/icon/ic_search@2x.png
deleted file mode 100644
index 5ed9fc5..0000000
--- a/small-program/static/icon/ic_search@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_success@2x.png b/small-program/static/icon/ic_success@2x.png
deleted file mode 100644
index 28c715d..0000000
--- a/small-program/static/icon/ic_success@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_time@2x.png b/small-program/static/icon/ic_time@2x.png
deleted file mode 100644
index b0a1a61..0000000
--- a/small-program/static/icon/ic_time@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_tip@2x.png b/small-program/static/icon/ic_tip@2x.png
deleted file mode 100644
index 2dd1a9f..0000000
--- a/small-program/static/icon/ic_tip@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/ic_zhongdian@2x.png b/small-program/static/icon/ic_zhongdian@2x.png
deleted file mode 100644
index 5753757..0000000
--- a/small-program/static/icon/ic_zhongdian@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/img@2x.png b/small-program/static/icon/img@2x.png
deleted file mode 100644
index 52909a1..0000000
--- a/small-program/static/icon/img@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/nav_home@2x.png b/small-program/static/icon/nav_home@2x.png
new file mode 100644
index 0000000..d0a4c6d
--- /dev/null
+++ b/small-program/static/icon/nav_home@2x.png
Binary files differ
diff --git "a/small-program/static/icon/nav_home_sel@2x \0501\051.png" "b/small-program/static/icon/nav_home_sel@2x \0501\051.png"
deleted file mode 100644
index a6e909e..0000000
--- "a/small-program/static/icon/nav_home_sel@2x \0501\051.png"
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/nav_home_sel@2x.png b/small-program/static/icon/nav_home_sel@2x.png
index 488eed0..5e306dc 100644
--- a/small-program/static/icon/nav_home_sel@2x.png
+++ b/small-program/static/icon/nav_home_sel@2x.png
Binary files differ
diff --git a/small-program/static/icon/nav_mine@2x.png b/small-program/static/icon/nav_mine@2x.png
deleted file mode 100644
index 7df9bf5..0000000
--- a/small-program/static/icon/nav_mine@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/nav_mine_sel@2x.png b/small-program/static/icon/nav_mine_sel@2x.png
deleted file mode 100644
index 9220656..0000000
--- a/small-program/static/icon/nav_mine_sel@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/nav_order@2x.png b/small-program/static/icon/nav_order@2x.png
deleted file mode 100644
index 6a292c9..0000000
--- a/small-program/static/icon/nav_order@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/nav_order_sel@2x.png b/small-program/static/icon/nav_order_sel@2x.png
deleted file mode 100644
index 6357216..0000000
--- a/small-program/static/icon/nav_order_sel@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/nav_wode@2x.png b/small-program/static/icon/nav_wode@2x.png
new file mode 100644
index 0000000..d8afffd
--- /dev/null
+++ b/small-program/static/icon/nav_wode@2x.png
Binary files differ
diff --git a/small-program/static/icon/nav_wode_sel@2x.png b/small-program/static/icon/nav_wode_sel@2x.png
new file mode 100644
index 0000000..6f84696
--- /dev/null
+++ b/small-program/static/icon/nav_wode_sel@2x.png
Binary files differ
diff --git a/small-program/static/icon/nav_xiaoxi@2x.png b/small-program/static/icon/nav_xiaoxi@2x.png
new file mode 100644
index 0000000..668e3f1
--- /dev/null
+++ b/small-program/static/icon/nav_xiaoxi@2x.png
Binary files differ
diff --git a/small-program/static/icon/nav_xiaoxi_sel@2x.png b/small-program/static/icon/nav_xiaoxi_sel@2x.png
new file mode 100644
index 0000000..3d1c086
--- /dev/null
+++ b/small-program/static/icon/nav_xiaoxi_sel@2x.png
Binary files differ
diff --git a/small-program/static/icon/nav_xingcheng@2x.png b/small-program/static/icon/nav_xingcheng@2x.png
new file mode 100644
index 0000000..516eba5
--- /dev/null
+++ b/small-program/static/icon/nav_xingcheng@2x.png
Binary files differ
diff --git a/small-program/static/icon/nav_xingcheng_sel@2x.png b/small-program/static/icon/nav_xingcheng_sel@2x.png
new file mode 100644
index 0000000..e592817
--- /dev/null
+++ b/small-program/static/icon/nav_xingcheng_sel@2x.png
Binary files differ
diff --git a/small-program/static/icon/order_ic_location@2x.png b/small-program/static/icon/order_ic_location@2x.png
deleted file mode 100644
index e7a569c..0000000
--- a/small-program/static/icon/order_ic_location@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/icon/order_ic_time@2x.png b/small-program/static/icon/order_ic_time@2x.png
deleted file mode 100644
index fd7c818..0000000
--- a/small-program/static/icon/order_ic_time@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/image/bg_green@2x.png b/small-program/static/image/bg_green@2x.png
deleted file mode 100644
index 3903c70..0000000
--- a/small-program/static/image/bg_green@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/image/bg_renzheng_gongcan@2x.png b/small-program/static/image/bg_renzheng_gongcan@2x.png
deleted file mode 100644
index 89b996a..0000000
--- a/small-program/static/image/bg_renzheng_gongcan@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/image/bg_renzheng_huoyun@2x.png b/small-program/static/image/bg_renzheng_huoyun@2x.png
deleted file mode 100644
index 2261f41..0000000
--- a/small-program/static/image/bg_renzheng_huoyun@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/image/bg_renzheng_yonggong@2x.png b/small-program/static/image/bg_renzheng_yonggong@2x.png
deleted file mode 100644
index 36e75e6..0000000
--- a/small-program/static/image/bg_renzheng_yonggong@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/image/btn.png b/small-program/static/image/btn.png
deleted file mode 100644
index c3dcb3b..0000000
--- a/small-program/static/image/btn.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/image/btn_guohui@2x.png b/small-program/static/image/btn_guohui@2x.png
deleted file mode 100644
index bfe1caf..0000000
--- a/small-program/static/image/btn_guohui@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/image/btn_renxiang@2x.png b/small-program/static/image/btn_renxiang@2x.png
deleted file mode 100644
index 4364042..0000000
--- a/small-program/static/image/btn_renxiang@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/image/share@2x.png b/small-program/static/image/share@2x.png
deleted file mode 100644
index f5a6f9d..0000000
--- a/small-program/static/image/share@2x.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/logo.png b/small-program/static/logo.png
deleted file mode 100644
index b5771e2..0000000
--- a/small-program/static/logo.png
+++ /dev/null
Binary files differ
diff --git a/small-program/static/share.png b/small-program/static/share.png
deleted file mode 100644
index 6f91df1..0000000
--- a/small-program/static/share.png
+++ /dev/null
Binary files differ
diff --git a/small-program/utils/shareMixin.js b/small-program/utils/shareMixin.js
deleted file mode 100644
index d3fecdd..0000000
--- a/small-program/utils/shareMixin.js
+++ /dev/null
@@ -1,26 +0,0 @@
-export default {
-  data() {
-    return {
-      // 鍙叏灞�瑕嗙洊鐨勯粯璁ゅ弬鏁�
-      shareConfig: {
-        title: '閲囨灉涓婅繎蹇紝鐢ㄥ伐鏉ュ緱蹇�',
-        path: '/pages/index/index',
-        imageUrl: '/static/share.png'
-      }
-    }
-  },
-  onShareAppMessage() {
-    return { 
-      title: this.shareConfig.title,
-      path: `${this.shareConfig.path}?ref=${Date.now()}`,
-      imageUrl: this.shareConfig.imageUrl
-    }
-  },
-  onShareTimeline() {
-    return { 
-      title: this.shareConfig.title,
-      query: `ref=${Date.now()}`,
-      imageUrl: this.shareConfig.imageUrl
-    }
-  }
-}
\ No newline at end of file

--
Gitblit v1.9.3