From 0bafa6aa253c9ef6f5cb24e9a24c5282860e4c59 Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期一, 30 三月 2026 11:44:37 +0800
Subject: [PATCH] 新增线上配置

---
 ui/car_wx_app/pages/examine/index.vue | 1540 +----------------------------------------------------------
 1 files changed, 27 insertions(+), 1,513 deletions(-)

diff --git a/ui/car_wx_app/pages/examine/index.vue b/ui/car_wx_app/pages/examine/index.vue
index 26af185..56949a4 100644
--- a/ui/car_wx_app/pages/examine/index.vue
+++ b/ui/car_wx_app/pages/examine/index.vue
@@ -1,1533 +1,47 @@
 <template>
-  <view class="container">
-    <!-- 鏍囬鏍� -->
-    <Nav :title="formData.name" :customBack="formData.router"></Nav>
-
-    <!-- 鍩虹淇℃伅鍖哄煙 -->
-    <view class="info-section">
-      <view class="info-item" v-for="(item, index) in infoList" :key="index">
-        <view class="item-label">{{ item.label }}</view>
-        <view class="item-value" :class="{ status: item.status }">{{ item.value }}</view>
-      </view>
-    </view>
-
-    <!-- 琛ㄥ崟鍒囨崲鏍囩 -->
-    <view class="tab-bar" v-if="ishowDisplay">
-      <view class="tab-item" :class="{ active: activeTab === 'upload' }" @tap="switchTab('upload')">
-        涓婁紶琛岀▼
-      </view>
-      <view class="tab-item" :class="{ active: activeTab === 'advance' }" @tap="switchTab('advance')">
-        涓婃姤鍨粯
-      </view>
-    </view>
-
-
-    <!-- 涓婁紶琛岀▼琛ㄥ崟 -->
-    <view class="form-section" v-if="activeTab === 'upload' && ishowDisplay">
-      <!-- 鍗曢�夋搷浣滄寜閽粍锛堥亶鍘嗕紭鍖栵級 -->
-      <view class="action-buttons-container">
-        <view class="action-buttons-row" >
-          <view v-for="(row, rowIndex) in actionButtonRows" :key="rowIndex" style="position: relative">
-            <text class="badge" v-if="!['0','1','4','5','8','100'].includes(row.dictValue) && row.count > 0">{{ row.count }}</text>
-            <button class="action-btn"
-                    :class="{ selected: selectedAction == row.dictValue, disabled: getBtnDisabled(row) , success: getBtnSuccess(row) }"
-                    @tap="selectAction(row)">
-              {{ row.dictLabel }}
-
-            </button>
-          </view>
-        </view>
-      </view>
-
-      <u--form ref="uForm" :rules="rules" :model="form" labelPosition="left">
-        <u-form-item ref="item1" borderBottom label=" " labelWidth="0" prop="address">
-          <!-- <view style="display: flex; align-items: center; width: 100%;">
-            <view style="display: flex; align-items: center; flex-shrink: 0; margin-right: 10px;">
-              <u--image :showLoading="true" src="/static/bt.png" width="20px" height="20px"></u--image>
-              <text>鍦板潃:</text>
-            </view>
-            <view @click="getLocation" style="width: 100%;">
-              <u--input placeholder="璇疯幏鍙栧湴鍧�" readonly v-model="form.address" suffixIcon="map-fill"
-                suffixIconStyle="color: #909399"></u--input>
-            </view>
-
-            
-          </view> -->
-          <view style="display: flex; align-items: flex-start; width: 100%;">
-            <!-- 宸︿晶鏍囩锛堝甫蹇呭~鏄熷彿锛� -->
-            <view style="display: flex; align-items: center; flex-shrink: 0; margin-right: 10px; padding-top: 12rpx;">
-              <u--image :showLoading="true" src="/static/bt.png" width="20px" height="20px"></u--image>
-              <text style="display: flex; align-items: center;">
-                <span style="color: #ff4d4f; margin-right: 4rpx;">*</span> <!-- 绾㈣壊蹇呭~鏄熷彿 -->
-                鍦板潃:
-              </text>
-            </view>
-
-            <!-- 鍙充晶鏂囨湰妗�+鍥炬爣锛堝甫杈规锛屽浘鏍囧湪妗嗗唴锛� -->
-            <view style="position: relative; width: 100%; margin-top: 6rpx;" @click="getLocation">
-              <view class="custom-textarea" style="border: 1px solid #e5e5e5;">
-                <u--text :lines="2" :text="form.address"></u--text>
-                <view style="position: absolute; top: 50%; right: 10rpx; transform: translateY(-50%);">
-                  <u-icon name="map-fill" color="#909399" size="24" @click="getLocation"></u-icon>
-                </view>
-              </view>
-
-            </view>
-          </view>
-        </u-form-item>
-
-
-
-        <u-form-item ref="item1" borderBottom label=" " labelWidth="0" prop="tripTime">
-          <view style="display: flex; align-items: center; width: 100%;">
-            <view style="display: flex; align-items: center; flex-shrink: 0; margin-right: 10px;">
-              <u--image :showLoading="true" src="/static/bt.png" width="20px" height="20px"></u--image>
-              <text>鏃堕棿:</text>
-            </view>
-            <uni-datetime-picker type="datetime" v-model="form.tripTime" style="flex: 1;" @change="onDateTimeChange">
-            </uni-datetime-picker>
-          </view>
-        </u-form-item>
-
-        <!-- <u-form-item ref="item1" v-if="selectedAction !=='1'" borderBottom label=" " labelWidth="0" prop="odometer">
-          <view style="display: flex; align-items: center; width: 100%;">
-            <view style="display: flex; align-items: center; flex-shrink: 0; margin-right: 10px;">
-              <u--image :showLoading="true" src="/static/bt.png" width="20px" height="20px"></u--image>
-              <text>浠〃閲岀▼锛坘m锛�:</text>
-            </view>
-
-            <u-number-box v-model="form.odometer" style="width: 45%;margin-left: 2%;" :min="0" :step="1"
-              button-size="28" color="#1e1e1e" bg-color="#ebecee" integer>
-              <view slot="minus" class="minus">
-                <div
-                  style="width: 30rpx;height: 28rpx;background-color: #ebecee;display: flex;justify-content: center;align-items: center;border-radius: 4rpx;">
-                  <u-icon name="minus" color="#1e1e1e" size="12"></u-icon>
-                </div>
-              </view>
-              <div style="margin-left: 5rpx;margin-right: 5rpx;width: 70%;" slot="input" class="input">
-                <u--input placeholder="璇疯緭鍏ヤ华琛ㄩ噷绋�" type="number"
-                  style="background-color: #ebecee;border-radius: 4rpx;height: 28rpx;font-size: 14px;" border="surround"
-                  inputAlign="center" v-model="form.odometer"></u--input>
-              </div>
-              <view slot="plus" class="plus">
-                <div
-                  style="width: 30rpx;height: 28rpx;background-color: #ebecee;display: flex;justify-content: center;align-items: center;border-radius: 4rpx;">
-                  <u-icon name="plus" color="#1e1e1e" size="12"></u-icon>
-                </div>
-              </view>
-            </u-number-box>
-
-
-          </view>
-
-
-        </u-form-item> -->
-
-
-        <u-form-item ref="item1" borderBottom label=" " labelWidth="0" prop="" :borderBottom="false">
-          <view style="display: flex;align-items: center;"><u--image :showLoading="true" src="/static/bt.png"
-              width="20px" height="20px"></u--image>鍑瘉<span
-              style="color: #c6c0ba;margin-left: 10px;display: inline-block;"></span></view>
-        </u-form-item>
-        <!-- 琛岀▼鍑瘉涓婁紶鍖哄煙锛�5涓寚瀹氫綅缃級 -->
-        <u-form-item ref="item1" borderBottom label=" " labelWidth="0" prop="voucher" :borderBottom="false">
-          <view style="margin: 20rpx 0;">
-            <!-- 涓婁紶鍖哄煙缃戞牸瀹瑰櫒 -->
-            <view class="upload-grid">
-              <!-- 閬嶅巻5涓笂浼犲尯鍩� -->
-              <view class="upload-item" v-for="(area, index) in uploadAreas" :key="index">
-                <!-- 宸蹭笂浼犲浘鐗囨椂鏄剧ず棰勮 -->
-                <view class="upload-img-preview" v-if="area.imageUrl">
-                  <image :src="area.imageUrl" mode="aspectFill"></image>
-                  <view class="delete-btn" @click.stop="deleteAreaPic(index)">
-                    <u-icon name="close-circle" color="#fff" size="36rpx"></u-icon>
-                  </view>
-                </view>
-
-                <!-- 鏈笂浼犳椂鏄剧ず鍗犱綅妗� -->
-                <view class="upload-placeholder" v-else @click="chooseAreaPic(index)">
-                  <u-icon name="plus" color="#ccc" size="48rpx"></u-icon>
-                  <text class="area-name">{{ area.name }}</text>
-                </view>
-              </view>
-            </view>
-          </view>
-        </u-form-item>
-
-
-
-
-      </u--form>
-      <view class="bottom-btn-group">
-        <u-button class="btn-list" @click="goThistory" text="琛岀▼鍘嗗彶"></u-button>
-        <u-button class="btn-list" @click="goToAdvanceList" text="鍨粯鍒楄〃"></u-button>
-        <!-- <u-button class="btn-budget" @click="goToAdvanceBudget" type="success" text="鍨粯棰勭畻"></u-button> -->
-        <u-button class="btn-submit" @click="submitForm" type="primary" text="鎻愪氦"></u-button>
-      </view>
-
-    </view>
-
-
-
-
-    <!-- 涓婃姤鍨粯琛ㄥ崟 -->
-    <view class="form-section" v-if="activeTab === 'advance' && ishowDisplay">
-
-      <u--form ref="uForm" :rules="rules" :model="form" labelPosition="left">
-
-        <u-form-item ref="item1" borderBottom label=" " labelWidth="0" prop="feeType">
-          <view style="display: flex; align-items: center; width: 100%;">
-            <view style="display: flex; align-items: center; flex-shrink: 0; margin-right: 10px;">
-              <u--image :showLoading="true" src="/static/bt.png" width="20px" height="20px"></u--image>
-              <text>璐圭敤绫诲瀷</text>
-            </view>
-
-            <!-- <uni-number-box v-model="form.odometer" @change="changeValue" /> -->
-            <uni-data-select v-model="form.feeType" :localdata="range" ></uni-data-select>
-          </view>
-        </u-form-item>
-        <u-form-item ref="item1" borderBottom label=" " labelWidth="0" prop="currency">
-          <view style="display: flex; align-items: center; width: 100%;">
-            <view style="display: flex; align-items: center; flex-shrink: 0; margin-right: 20px;">
-              <u--image :showLoading="true" src="/static/bt.png" width="20px" height="20px"></u--image>
-              <text>甯佸埗</text>
-            </view>
-
-            <!-- <uni-number-box v-model="form.odometer" @change="changeValue" /> -->
-            <uni-data-select v-model="form.currency" :localdata="currencyRange"></uni-data-select>
-          </view>
-        </u-form-item>
-
-        <u-form-item ref="item1" borderBottom label=" " labelWidth="0" prop="actualFeeAmount">
-          <view style="display: flex; align-items: center; width: 100%;">
-            <view style="display: flex; align-items: center; flex-shrink: 0; margin-right: 10px;">
-              <u--image :showLoading="true" src="/static/bt.png" width="20px" height="20px"></u--image>
-              <text>鍨粯閲戦:</text>
-            </view>
-
-            <!-- <uni-number-box v-model="form.actualFeeAmount" @change="changeValue" :max="9999999" :min="0" /> -->
-
-            <u-number-box v-model="form.actualFeeAmount" style="width: 45%;margin-left: 2%;" :min="0" :step="1"
-              button-size="28" color="#1e1e1e" bg-color="#ebecee" integer>
-              <view slot="minus" class="minus">
-                <div
-                  style="width: 30rpx;height: 28rpx;background-color: #ebecee;display: flex;justify-content: center;align-items: center;border-radius: 4rpx;">
-                  <u-icon name="minus" color="#1e1e1e" size="12"></u-icon>
-                </div>
-              </view>
-              <div style="margin-left: 5rpx;margin-right: 5rpx;width: 70%;" slot="input" class="input">
-                <u--input placeholder="璇疯緭鍏ュ灚浠橀噾棰�" type="number"
-                  style="background-color: #ebecee;border-radius: 4rpx;height: 28rpx;font-size: 14px;" border="surround"
-                  inputAlign="center" v-model="form.actualFeeAmount"></u--input>
-              </div>
-              <view slot="plus" class="plus">
-                <div
-                  style="width: 30rpx;height: 28rpx;background-color: #ebecee;display: flex;justify-content: center;align-items: center;border-radius: 4rpx;">
-                  <u-icon name="plus" color="#1e1e1e" size="12"></u-icon>
-                </div>
-              </view>
-            </u-number-box>
-
-          </view>
-        </u-form-item>
-
-
-        <u-form-item ref="item1" borderBottom label=" " labelWidth="0" prop="" :borderBottom="false">
-          <view style="display: flex;align-items: center;"><u--image :showLoading="true" src="/static/bt.png"
-              width="20px" height="20px"></u--image>鍨粯鍑瘉<span
-              style="color: #c6c0ba;margin-left: 10px;display: inline-block;"></span></view>
-        </u-form-item>
-        <u-form-item ref="item1" borderBottom label=" " labelWidth="0" prop="fileList" :borderBottom="false">
-          <view style="margin-right: 10px;"></view>
-          <u-upload :fileList="fileList" name="file" multiple :maxCount="6" :maxSize="2 * 1024 * 1024"
-            @afterRead="afterRead" :previewFullImage="true" @delete="deletePic" @oversize="overSize">
-          </u-upload>
-
-        </u-form-item>
-
-
-
-
-
-
-      </u--form>
-      <view class="bottom-btn-group">
-        <u-button class="btn-list" @click="goThistory" text="琛岀▼鍘嗗彶"></u-button>
-        <u-button class="btn-list" @click="goToAdvanceList" text="鍨粯鍒楄〃"></u-button>
-        <!-- <u-button class="btn-budget" @click="goToAdvanceBudget" type="success" text="鍨粯棰勭畻"></u-button> -->
-        <u-button class="btn-submit" @click="submitForm" type="primary" text="鎻愪氦"></u-button>
-      </view>
-
-
-    </view>
-
-
-    <view class="bottom-btn-group" v-if="!ishowDisplay">
-      <u-button class="btn-list" @click="goThistory" text="琛岀▼鍘嗗彶"></u-button>
-      <!-- <u-button class="btn-budget" @click="goToAdvanceBudget" type="success" text="鍨粯棰勭畻"></u-button> -->
-      <u-button class="btn-list" @click="goToAdvanceList" text="鍨粯鍒楄〃"></u-button>
-
-    </view>
-
-
-    <view class="popup-mask" v-if="showPopup" @click="showPopup = false"></view>
-    <view class="popup-container" v-if="showPopup"  :class="{ 'popup-show': showPopup }">
-      <view class="popup-title">浠〃閲岀▼濉啓</view>
-      <u--form ref="uForm" :rules="rules" :model="form" labelPosition="left">
-        <u-form-item ref="item1" borderBottom label=" " labelWidth="0" prop="odometer">
-          <view style="display: flex; align-items: center; width: 100%;">
-            <view style="display: flex; align-items: center; flex-shrink: 0; margin-right: 10px;">
-              <u--image :showLoading="true" src="/static/bt.png" width="20px" height="20px"></u--image>
-              <text>浠〃閲岀▼锛坘m锛�:</text>
-            </view>
-
-            <u-number-box v-model="form.odometer" style="width: 45%;margin-left: 2%;" :min="0" :step="1"
-              button-size="28" color="#1e1e1e" bg-color="#ebecee" integer>
-              <view slot="minus" class="minus">
-                <div
-                  style="width: 30rpx;height: 28rpx;background-color: #ebecee;display: flex;justify-content: center;align-items: center;border-radius: 4rpx;">
-                  <u-icon name="minus" color="#1e1e1e" size="12"></u-icon>
-                </div>
-              </view>
-              <div style="margin-left: 5rpx;margin-right: 5rpx;width: 70%;" slot="input" class="input">
-                <u--input placeholder="璇疯緭鍏ヤ华琛ㄩ噷绋�" type="number"
-                  style="background-color: #ebecee;border-radius: 4rpx;height: 28rpx;font-size: 14px;" border="surround"
-                  inputAlign="center" v-model="form.odometer"></u--input>
-              </div>
-              <view slot="plus" class="plus">
-                <div
-                  style="width: 30rpx;height: 28rpx;background-color: #ebecee;display: flex;justify-content: center;align-items: center;border-radius: 4rpx;">
-                  <u-icon name="plus" color="#1e1e1e" size="12"></u-icon>
-                </div>
-              </view>
-            </u-number-box>
-
-
-          </view>
-
-
-        </u-form-item>
-      </u--form>
-
-
-      <!-- 搴曢儴鎸夐挳 -->
-      <view class="btn-group">
-        <u-button class="cancel-btn" @click="showPopup = false" type="info" plain>
-          鍙栨秷
-        </u-button>
-        <u-button class="submit-btn" @click="handleSubmit" type="primary">
-          鎻愪氦
-        </u-button>
-      </view>
-    </view>
-    <u-popup :show="show" round="10" mode="center" :closeable="true" @close="closeAction" ref="popup">
-      <view class="popup-const">
-        <text class="popup-const-title">璇ヨ妭鐐瑰凡鎻愪氦杩囨暟鎹紝鏃犳硶閲嶅娣诲姞</text>
-        <view class="df">
-            <text class="label-left">鎻愪氦鏃堕棿: </text>
-            <text>{{ activeActive.createTime }}</text>
-
-          </view>
-        <view  class="df">
-            <text class="label-left">鎻愪氦鍦板潃</text>
-            <text>{{ activeActive.address }}</text>
-          </view>
-        <view  class="df">
-            <text class="label-left">鎻愪氦鍑瘉</text>
-          <view class="voucher-grid">
-            <view class="voucher-item" v-for="(img, imgIndex) in activeActive.feeVoucherUrl" :key="imgIndex">
-              <image class="voucher-img" :src="img" mode="aspectFill"></image>
-            </view>
-            <!-- 褰撴病鏈夊浘鐗囨椂鏄剧ず鎻愮ず -->
-            <view v-if="!activeActive.feeVoucherUrl || activeActive.feeVoucherUrl.length === 0" class="no-voucher">
-              鏆傛棤鍑瘉
-            </view>
-          </view>
-          </view>
-
-      </view>
-
-    </u-popup>
+  <view class="redirect-container">
+    <u-loading-icon text="鍔犺浇涓�..." />
   </view>
 </template>
 
 <script>
-function groupBy(array, key){
-  return array.reduce((acc, item) => {
-    const groupKey = String(item[key]);
-    (acc[groupKey] ||= []).push(item);
-    return acc;
-  }, {});
-}
-
-import { getcarDispatch, getcarType, carUploadTrip, carUploadFinance,getAssignedItineraryLogList,tmsTripList } from "@/common/examine";
-import config from '@/config'
-import amap from '@/common/amap-wx.130.js'
-import store from '@/store'
+/**
+ * 璺敱鍒嗗彂椤甸潰
+ * 鏍规嵁鍙傛暟鑷姩璺宠浆鍒� detail锛堣鎯呴〉锛夋垨 operate锛堟搷浣滈〉锛�
+ * 淇濇寔鍚戝悗鍏煎
+ */
 export default {
-  data() {
-    return {
-      show: false,
-      showOdometerPopup: false,
-      showPopup: false,
-      activeTab: 'upload',
-      formData: {
-        name: '',
-        router: '',
-        id: '',
-        tripTime: '',
-      },
-      uploadAreas: [
-        { name: '琛�鍘嬮厭绮�', imageUrl: '' ,required: true},
-        { name: '鐧昏琛�', imageUrl: '' ,required: true},
-      ],
-      mapApiKey: 'fdb2d2e64ffc9254045935d3227d5cd9', // <-- 鏇挎崲鎴愪綘鐨� API Key
-      amapPlugin: null,
-      fileList: [],
-      range: [
-
-      ],
-      historyList:[],
-      currencyRange: [],
-      feeTypeList: [],
-      currencyList: [],
-      ishowDisplay: false,
-      emptyNameStr: '',
-      cleanedForm: {},
-      newForm: {},
-      selectedAction: '',
-      infoList: [
-        { label: '璋冨害鍗曞彿', value: '' },
-        { label: '杩愯緭宸ュ叿鍙风爜', value: '' },
-        { label: '璺嚎', value: '' },
-        { label: '瀹㈡埛', value: '' },
-        { label: '褰撳墠鐘舵��', value: '寰呭彂杞�', status: true },
-        { label: '瑕佹眰鏈�鏅氬彂杞︽椂闂�', value: '' }
-      ],
-
-      actionButtonRows: [
-
-      ],
-      actionButtonArray: [
-
-      ],
-      tmsTripTables:[],
-      form: {
-        address: '',
-        tripTime: '',
-        odometer: 0,
-        tripType: '',
-      },
-      rules: {
-
-        address: [{ required: true, message: '璇疯緭鍏ュ湴鍧�', trigger: 'blur' }],
-        tripTime: [{ required: true, message: '璇烽�夋嫨鏃堕棿', trigger: 'change' }], // 淇敼杩欓噷
-        feeType: [{ required: true, message: '璇烽�夋嫨璐圭敤绫诲瀷', trigger: 'change' }],
-        currency: [{ required: true, message: '璇烽�夋嫨甯佸埗', trigger: 'change' }],
-
-
-        // voucher: [{ required: true, message: '璇蜂笂浼犲嚟璇�', trigger: 'blur' }]
-      },
-      mapList: {},
-      activeActive: {},
-
-
-    };
-  },
   onLoad(options) {
-    this.formData = options;
-    //"鏌ョ湅琛岀▼鍘嗗彶"   "涓婁紶琛岀▼"
-    if (options.name == '鏌ョ湅琛岀▼鍘嗗彶') {
-      this.ishowDisplay = false;
-    } else if (options.name == '涓婁紶琛岀▼') {
-      this.ishowDisplay = true;
-    }
-    this.amapPlugin = new amap.AMapWX({
-      key: this.mapApiKey
-    });
-    // 鑾峰彇 URL 鍙傛暟
-    if (options.id) {
-      //this.getList();
-      this.getDispatch();
-      this.getDictList();
-      this.form.tripTime = this.getCurrentDateTime();
+    const { id, name, ...rest } = options
 
-    }
-  },
-  created() {
-    // this.getList();
-  },
-  methods: {
-    getBtnDisabled(row){
-      // 韬綋妫�鏌�
-      if (row.dictValue == 1 && row.count > 0){
-        return true;
-      }else if (row.dictValue == 0 ){
-        // 鍙戣溅
-        if (this.mapList['1']&& this.mapList['1'].length == 0){
-          return true;
-        }else if (row.count > 0){
-          return true;
-        }
-      }else {
-        if (this.mapList['0']&& this.mapList['0'].length == 0){
-          return  true
-        }
-      }
-      return false;
+    // 鏋勫缓鏌ヨ鍙傛暟
+    const query = Object.entries({ id, ...rest })
+      .filter(([_, v]) => v !== undefined && v !== null)
+      .map(([k, v]) => `${k}=${encodeURIComponent(v)}`)
+      .join('&')
 
-    },
-    getBtnSuccess(row){
-      // 韬綋妫�鏌�
-      if (row.dictValue == 1 && row.count > 0){
-        return true;
-      }else if (row.dictValue == 0 && row.count > 0){
-        // 鍙戣溅
-          return true;
-      }else if (row.dictValue == 4 && row.count > 0) {
-        //鍒拌揪娓呭叧鍦哄湴
-        return true;
-      }else if (row.dictValue == 5 && row.count > 0) {
-        //绂诲紑娓呭叧鍦哄湴
-        return true;
-      }else if (row.dictValue == 8 && row.count > 0) {
-        //鍥炲満
-        return true;
-      }else if (row.dictValue == 100 && row.count > 0) {
-        //鏀剧┖
-        return true;
-      }
-      return false;
+    // 鏍规嵁 name 鍙傛暟鍒ゆ柇璺宠浆鐩爣
+    let targetPage = '/pages/examine/detail'
 
-    },
-
-    async getDictList(){
-
-      const fee_type_res = await getcarType('fee_type');
-      this.range = fee_type_res.map(item => ({
-        value: item.dictValue,
-        text: item.dictLabel
-      }));
-      const sys_currency_res = await getcarType('sys_currency');
-      this.currencyRange = sys_currency_res.map(item => ({
-        value: item.dictValue,
-        text: item.dictLabel
-      }));
-
-      const trip_type_res = await getcarType('trip_type');
-      this.actionButtonRows = trip_type_res || [];
-
-      const tmsTripListRes =  await tmsTripList(this.formData.id) || [];
-      let tripTypeGropList = groupBy(tmsTripListRes, 'tripType');
-
-      this.actionButtonRows.forEach(item =>{
-        item.count = tripTypeGropList[item.dictValue] ? tripTypeGropList[item.dictValue].length : 0;
-      })
-      this.$forceUpdate();
-      this.mapList = tripTypeGropList;
-      this.tmsTripTables = tmsTripListRes;
-    },
-    getDispatch(){
-      let fieldMap = []
-      // 瀹氫箟瀛楁鏄犲皠鍏崇郴
-      if (this.ishowDisplay) {
-        this.infoList = [
-          { label: '璋冨害鍗曞彿', value: '' },
-          { label: '杩愯緭宸ュ叿鍙风爜', value: '' },
-          { label: '璺嚎', value: '' },
-          { label: '瀹㈡埛', value: '' },
-          { label: '褰撳墠鐘舵��', value: '寰呭彂杞�', status: true },
-          { label: '瑕佹眰鏈�鏅氬彂杞︽椂闂�', value: '' },
-          { label: '瑁呰揣鍦�', value: '' },
-          { label: '鍗歌揣鍦�', value: '' },
-        ],
-
-            fieldMap = {
-              dispatchNo: '璋冨害鍗曞彿',
-              licensePlate: '杩愯緭宸ュ叿鍙风爜',
-              transportLine: '璺嚎',
-              customerName: '瀹㈡埛',
-              statusStr: '褰撳墠鐘舵��',
-              latestDeparture: '瑕佹眰鏈�鏅氬彂杞︽椂闂�',
-              shipperAddress: '瑁呰揣鍦�',
-              receiverAddress: '鍗歌揣鍦�',
-            };
-
-
-      } else {
-        this.infoList = [
-          { label: '璋冨害鍗曞彿', value: '' },
-          { label: '杩愯緭宸ュ叿鍙风爜', value: '' },
-          { label: '璺嚎', value: '' },
-          { label: '瀹㈡埛', value: '' },
-          { label: '瀹屾垚鏃堕棿', value: '' },
-          { label: '瑁呰揣鍦�', value: '' },
-          { label: '鍗歌揣鍦�', value: '' },
-        ],
-            fieldMap = {
-              dispatchNo: '璋冨害鍗曞彿',
-              licensePlate: '杩愯緭宸ュ叿鍙风爜',
-              transportLine: '璺嚎',
-              customerName: '瀹㈡埛',
-              okTime: '瀹屾垚鏃堕棿',
-              shipperAddress: '瑁呰揣鍦�',
-              receiverAddress: '鍗歌揣鍦�',
-            };
-
-      }
-      getcarDispatch(this.formData.id).then((res) => {
-        this.newForm = res;
-
-        // 閬嶅巻 infoList锛岃嚜鍔ㄦ洿鏂� value
-        this.infoList = this.infoList.map(item => {
-          const key = Object.keys(fieldMap).find(k => fieldMap[k] === item.label);
-          if (key && res[key] !== undefined) {
-            return { ...item, value: res[key] };
-          }
-          return item;
-        });
-      }).catch(err => {
-        console.error('鑾峰彇璋冨害淇℃伅澶辫触:', err);
-      });
-
-
-    },
-    getCurrentDateTime() {
-      var now = new Date();
-      var year = now.getFullYear();
-      var month = (now.getMonth() + 1).toString().padStart(2, '0');
-      var day = now.getDate().toString().padStart(2, '0');
-      var hour = now.getHours().toString().padStart(2, '0');
-      var minute = now.getMinutes().toString().padStart(2, '0');
-      var second = now.getSeconds().toString().padStart(2, '0');
-      return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
-    },
-    goThistory() {
-      setTimeout(() => {
-        uni.$u.route('/pages/travelItinerary/index?id=' + this.formData.id + '&name=' + '琛岀▼鍘嗗彶' + '&statusStr=' + this.formData.statusStr + '&router=' + '/pages/examine/index');
-      }, 1000);
-
-    },
-    getList() {
-
-       getcarType('trip_type').then((res) => {
-        this.actionButtonRows = res;
-        if (res.length > 0) {
-          tmsTripList(this.formData.id).then((res1) => {
-            this.historyList = res1;
-            console.log( this.historyList,'this.historyList');
-            this.historyList.forEach(item => {
-              // 鏌ユ壘鍖归厤鐨刣ictLabel
-              const matchedDict = this.actionButtonArray.find(dictItem => dictItem.dictValue == item.tripType);
-              item.statusStr = matchedDict ? matchedDict.dictLabel : '';
-            });
-
-          }).catch(err => {
-            console.error('鑾峰彇璋冨害淇℃伅澶辫触:', err);
-          });
-        }
-
-
-      }).catch(err => {
-      });
-      getcarType('fee_type').then((res) => {
-        this.feeTypeList = res
-        this.range = res.map(item => ({
-          value: item.dictValue,
-          text: item.dictLabel
-        }));
-
-      }).catch(err => {
-      });
-      getcarType('sys_currency').then((res) => {
-        this.currencyList = res
-        this.currencyRange = res.map(item => ({
-          value: item.dictValue,
-          text: item.dictLabel
-        }));
-
-      }).catch(err => {
-      });
-    },
-    // 鑾峰彇缁忕含搴�
-    getLocation() {
-      wx.getLocation({
-        type: 'gcj02',
-        success: (res) => {
-          const latitude = res.latitude;
-          const longitude = res.longitude;
-          this.getAddress(latitude, longitude);
-        },
-        fail: (err) => {
-          console.error('鑾峰彇浣嶇疆澶辫触:', err);
-          wx.showToast({ title: '鑾峰彇浣嶇疆澶辫触'+err, icon: 'none' });
-        }
-      });
-    },
-
-    getAddress(latitude, longitude) {
-      this.amapPlugin.getRegeo({
-        location:`${longitude},${latitude}`,
-        success: (data) => {
-          this.form.address  = data[0].name;
-        },
-        fail: (err) => {
-          console.error("SDK璋冪敤澶辫触:", err);
-          wx.showToast({ title: '鍦板潃瑙f瀽澶辫触'+JSON.stringify(err) + latitude+ longitude, icon: 'none' });
-        }
-      });
-
-    },
-    switchTab(tab) {
-      this.activeTab = tab;
-      this.form = {
-        address: '',
-        tripTime: '',
-        odometer: 0,
-        tripType: '',
-        actualFeeAmount: 0
-      }
-      this.fileList = []
-      this.selectedAction = ''
-
-    },
-    closeAction(){
-      this.show = false;
-
-    },
-    selectAction(row) {
-
-      if (this.getBtnSuccess(row)){
-        this.activeActive = this.mapList[row.dictValue][0];
-        if (this.activeActive.voucherUrl) {
-          this.activeActive.feeVoucherUrl = this.activeActive.voucherUrl.split(',').filter(url => url.trim() !== '');
-        } else {
-          this.activeActive.feeVoucherUrl = [];
-        }
-        // 宸茬粡瀹屾垚
-       this.show = true;
-        return;
-      }
-      if(this.getBtnDisabled(row)){
-        return;
-      }
-      const type = row.dictValue;
-      // 璁剧疆閫変腑鐨勬搷浣滅被鍨�
-      this.selectedAction = type;
-      console.log(type);
-      
-      if (type == '0') {
-        this.uploadAreas = [
-          { name: '浠〃鐩�', imageUrl: '' ,required: true},
-          { name: '宸﹀墠鏂�', imageUrl: '' ,required: true},
-          { name: '鍙冲墠鏂�', imageUrl: '' ,required: true},
-          { name: '鍚庢柟', imageUrl: '' ,required: true},
-          { name: '寮�绠辨鏌�', imageUrl: '' ,required: true},
-
-        ]
-      } else if (type == '1') {
-        this.uploadAreas = [
-          { name: '琛�鍘嬮厭绮�', imageUrl: '' ,required: true},
-          { name: '鐧昏琛�', imageUrl: '',required: true },
-        ]
-      }
-
-      else if (type == '2'||type == '6'){ // 鍒拌揪瑁呰揣鐐� 鍒拌揪鍗歌揣鐐�
-        this.uploadAreas = [
-          { name: '杞﹀ご', imageUrl: '',required: true },
-          { name: '杞﹀熬(闈炲繀濉�)', imageUrl: '',required: false },
-          { name: '浠〃鐩�(闈炲繀濉�)', imageUrl: '',required: false },
-
-
-        ]
-      }
-      else if (type == '3'||type == '7'){// 瑁呰揣绂诲満 鍗歌揣绂诲満
-        this.uploadAreas = [
-          { name: '杞﹀ご', imageUrl: '',required: true },
-          { name: '杞﹀熬', imageUrl: '',required: true },
-          { name: '浠〃鐩�(闈炲繀濉�)', imageUrl: '',required: false },
-        ]
-      }else if (type == '4'||type == '5'){// 鍒拌揪娓呭叧鍦哄湴 绂诲紑娓呭叧鍦哄湴
-        this.uploadAreas = [
-          { name: '浠〃鐩�(闈炲繀濉�)', imageUrl: '',required: false },
-          { name: '杞﹀ご(闈炲繀濉�)', imageUrl: '',required: false },
-          { name: '杞﹀熬(闈炲繀濉�)', imageUrl: '',required: false },
-        ]
-      }else{
-        this.uploadAreas = [
-          { name: '杞﹀ご', imageUrl: '',required: true },
-          { name: '浠〃鐩�', imageUrl: '',required: true },
-
-          { name: '杞﹀熬', imageUrl: '',required: true },
-        ]
-      }
-      // 鍚屾椂鏇存柊琛ㄥ崟涓殑 tripType 瀛楁
-      this.form.tripType = type;
-
-      if(type !== '1'){
-        if (['3','5','7'].includes(type)){
-          let item = this.tmsTripTables[0] || {};
-          this.form.odometer = item.odometer;
-        }else{
-          this.form.odometer = 0
-        }
-
-
-        this.$nextTick(() => {
-          this.showPopup = true;
-        });
-      }
-      // wx.showToast({
-      //   title: `宸查�夋嫨${type}`,
-      //   icon: 'none'
-      // });
-    },
-    maskClick() {
-
-    },
-    // 鏂板鍥剧墖
-    async afterRead(event) {
-      // 褰撹缃� multiple 涓� true 鏃�, file 涓烘暟缁勬牸寮忥紝鍚﹀垯涓哄璞℃牸寮�
-      let lists = [].concat(event.file)
-      let fileListLen = this.fileList.length
-      lists.map((item) => {
-        this.fileList.push({
-          ...item,
-          status: 'success',
-          message: '涓婁紶涓�'
-        })
-      })
-      for (let i = 0; i < lists.length; i++) {
-
-        const result = await this.uploadFilePromise(lists[i].url)
-        let item = this.fileList[fileListLen]
-        this.fileList.splice(fileListLen, 1, Object.assign(item, {
-          status: result.status,
-          message: result.status == 'success' ? '涓婁紶鎴愬姛' : '涓婁紶澶辫触',
-          urls: result.url
-        }))
-        fileListLen++
-      }
-    },
-
-    uploadFilePromise(url) {
-      const param = {
-        filePath: url,
-        type: 'images'
-      }
-      return new Promise((resolve, reject) => {
-        uni.uploadFile({
-          url: config.host + `app/car/uploadImg`, // 浠呬负绀轰緥锛岄潪鐪熷疄鐨勬帴鍙e湴鍧�
-          filePath: url,
-          name: 'file',
-          header: {
-            "Authorization": store.state.sso_user_token
-          },
-          success: (res) => {
-            console.log(res)
-            if (res.statusCode == 200) {
-              const dataObject = JSON.parse(res.data);
-              // 淇杩斿洖鐨刄RL璺緞
-              let imageUrl = '';
-              if (dataObject.fileName.startsWith('http')) {
-                imageUrl = dataObject.fileName;
-              } else if (dataObject.url) {
-                imageUrl = dataObject.url; // 濡傛灉杩斿洖鐨勬暟鎹腑鏈塽rl瀛楁鐩存帴浣跨敤
-              } else {
-                imageUrl = config.host.replace('/cwgltest-api/', '') + dataObject.fileName;
-              }
-
-              resolve({
-                url: imageUrl,
-                status: 'success'
-              })
-            } else {
-              resolve({
-                status: 'failed',msg: JSON.stringify(res)
-              })
-            }
-          },
-          fail: (err) => {
-            reject({ status: 'failed',msg: JSON.stringify(err) });
-          }
-        });
-      })
-    },
-    // 鍥剧墖澶у皬瓒呭嚭鏈�澶у厑璁稿ぇ灏�
-    overSize(e) {
-      uni.$u.toast('涓婁紶鍥剧墖澶у皬涓嶈兘瓒呰繃2MB!')
-    },
-    // 鍒犻櫎鍥剧墖
-    deletePic(event) {
-      this.fileList.splice(event.index, 1)
-    },
-    onDateTimeChange(event) {
-      // this.form.workTime = event.detail.value;
-    },
-
-    changeValue(e) {
-      this.form.odometer = e
-    },
-    cleanFormData(formData) {
-      const cleanedData = {};
-      for (const key in formData) {
-        if (formData[key] !== '' && formData[key] !== null && formData[key] !== undefined) {
-          cleanedData[key] = formData[key];
-        }
-      }
-      return cleanedData;
-    },
-    goToAdvanceList() {
-      // 浣跨敤绠ご鍑芥暟淇濇寔 this 涓婁笅鏂�
-      setTimeout(() => {
-        uni.$u.route('/pages/paymentList/index?name=' + '鍨粯鍒楄〃' + '&router=' + '/pages/examine/index' + '&id=' + this.formData.id);
-      }, 1000);
-    },
-
-
-    /* 涓婁紶 */
-    chooseAreaPic(index) {
-      // 璋冪敤uview鐨勪笂浼犵粍浠舵柟娉曪紙鎴栧師鐢焨ni.chooseImage锛�
-      uni.chooseImage({
-        count: 1, // 姣忔鍙兘閫�1寮�
-        sizeType: ['original', 'compressed'],
-        sourceType: ['album', 'camera'],
-        success: (res) => {
-
-          const tempFilePath = res.tempFilePaths[0];
-          // 涓婁紶鍥剧墖鍒版湇鍔″櫒
-          this.uploadAreaPic(tempFilePath, index);
-        }
-      });
-    },
-
-    // 涓婁紶鍥剧墖鍒版湇鍔″櫒骞舵洿鏂板搴斿尯鍩�
-    async uploadAreaPic(tempFilePath, index) {
-      try {
-        const result = await this.uploadFilePromise(tempFilePath);
-        if (result.status === 'success') {
-          // 淇杩欎竴琛岋紝绉婚櫎瀵箁esult.tempFilePaths鐨勫紩鐢�
-          this.uploadAreas[index].imageUrl = result.url;
-        } else {
-          uni.showToast({ title: '涓婁紶澶辫触'+result.msg, icon: 'none' });
-        }
-      } catch (err) {
-
-        uni.showToast({ title: '涓婁紶澶辫触'+err.msg, icon: 'none' });
-      }
-    },
-
-    // 鍒犻櫎鎸囧畾鍖哄煙鐨勫浘鐗�
-    deleteAreaPic(index) {
-      uni.showModal({
-        title: '鎻愮ず',
-        content: '纭畾瑕佸垹闄よ繖寮犲浘鐗囧悧锛�',
-        success: (res) => {
-          if (res.confirm) {
-            this.uploadAreas[index].imageUrl = '';
-          }
-        }
-      });
-    },
-
-    // 琛ㄥ崟鎻愪氦鏃堕獙璇佸浘鐗囨槸鍚﹀畬鏁达紙鏍规嵁闇�姹傝皟鏁村繀濉」锛�
-    submitForm() {
-
-
-      // 鏍规嵁褰撳墠婵�娲荤殑鏍囩椤垫墽琛屼笉鍚岀殑鎻愪氦閫昏緫
-      if (this.activeTab == 'upload') {
-        // 妫�鏌ヨ绋嬩笂浼犺〃鍗�
-        if (this.form.tripType == '') {
-          uni.$u.toast('璇烽�夋嫨琛岀▼绫诲瀷')
-          return
-        }
-
-        this.emptyNameStr = this.uploadAreas
-          .filter(item => item.imageUrl === '' && item.required) // 鍙瓫閫� imageUrl 涓虹┖鐨勯」
-          .map(item => item.name) // 鎻愬彇 name
-          .join(','); // 閫楀彿鎷兼帴
-
-        if (this.emptyNameStr) {
-          wx.showToast({
-            title: `鏈笂浼狅細${this.emptyNameStr}`,
-            icon: 'none',
-            duration: 3000
-          });
-        } else {
-          // 楠岃瘉鏄惁鑷冲皯涓婁紶浜嗕竴寮犲浘鐗�
-          // 鏀堕泦鎵�鏈変笂浼犵殑鍥剧墖鍦板潃锛堢敤閫楀彿鍒嗛殧锛�
-
-          const voucherUrls = this.uploadAreas.map(item => item.imageUrl && item.imageUrl !== '').join(',');
-          this.form.voucherUrl = voucherUrls;
-
-          this.$refs.uForm.validate().then(res => {
-            if (res) {
-              this.form.dispatchOrderId = this.newForm.dispatchId
-              this.form.driverId = this.newForm.driverId
-              /* 璺宠浆 */
-              if (this.form.tripType == 1) {
-                /*璁剧疆 */
-                // console.log(this.form);
-
-                uni.setStorageSync("signContractForm", this.form);
-                setTimeout(() => {
-                  uni.$u.route('/pages/signContract/index');
-                }, 1000);
-              } else {
-                /* 涓婁紶琛岀▼鍙戣溅 */
-                carUploadTrip(this.form).then((res) => {
-                  if (res == 1) {
-                    uni.$u.toast('鎿嶄綔鎴愬姛')
-                    // 閲嶇疆琛ㄥ崟
-                    this.form = {
-                      address: '',
-                      tripTime: '',
-                      odometer: 0,
-                      tripType: ''
-                    }
-                    // 閲嶇疆涓婁紶鍖哄煙
-                    this.uploadAreas = this.uploadAreas.map(area => ({
-                      ...area,
-                      imageUrl: ''
-                    }))
-                    this.selectedAction = '';
-                    this.getDictList()
-                  }
-                }).catch(err => {
-                  uni.$u.toast('鎻愪氦澶辫触')
-                })
-              }
-
-            }
-          }).catch(errors => {
-            uni.$u.toast('鏍¢獙澶辫触')
-          })
-
-
-
-          // wx.showToast({ title: '鎵�鏈夊尯鍩熷潎宸蹭笂浼�', icon: 'success' });
-        }
-
-
-
-
-      } else if (this.activeTab == 'advance') {
-        // 妫�鏌ュ灚浠樹笂浼犺〃鍗�
-        if (this.fileList.length == 0) {
-          uni.$u.toast('鍥剧墖涓婁紶涓嶈兘涓虹┖')
-          return
-        }
-
-        this.$refs.uForm.validate().then(res => {
-          if (res) {
-            var urls = this.fileList.map(item => item.urls).join(',');
-            this.form.feeVoucherUrl = urls
-            this.form.dispatchOrderId = this.newForm.dispatchId
-            this.form.driverId = this.newForm.driverId
-            this.form.dispatchNo = this.newForm.dispatchNo
-            this.form.licensePlate = this.newForm.licensePlate
-            this.form.transportLine = this.newForm.transportLine
-            this.form.customerName = this.newForm.customerName
-
-            this.cleanedForm = this.cleanFormData({ ...this.form })
-            carUploadFinance(this.cleanedForm).then((res) => {
-              if (res == 1) {
-                uni.$u.toast('鎿嶄綔鎴愬姛')
-                // 閲嶇疆琛ㄥ崟
-                this.form = {
-                  address: '',
-                  tripTime: '',
-                  odometer: 0,
-                  tripType: ''
-                }
-                this.cleanedForm = {}
-                this.fileList = []
-                this.selectedAction = ''
-              }
-            }).catch(err => {
-              uni.$u.toast('鎻愪氦澶辫触')
-            })
-          }
-        }).catch(errors => {
-          uni.$u.toast('鏍¢獙澶辫触')
-        })
-      }
-
-      // this.$forceUpdate();
-    },
-
-
-
-    handleSubmit() {
-      // 绠�鍗曟牎楠岋細閲岀▼涓嶈兘涓鸿礋鏁�
-      if (this.form.odometer < 0) {
-        uni.$u.toast('浠〃閲岀▼涓嶈兘涓鸿礋鏁�');
-        return;
-      }
-      this.getLocation()
-       this.form.tripTime = this.getCurrentDateTime();
-      this.showPopup = false;
+    if (name === '涓婁紶琛岀▼') {
+      targetPage = '/pages/examine/operate'
+    } else if (name === '鏌ョ湅琛岀▼鍘嗗彶' || name === '璋冨害璇︽儏' || !name) {
+      targetPage = '/pages/examine/detail'
     }
 
+    // 浣跨敤 redirectTo 鏇挎崲褰撳墠椤甸潰锛岄伩鍏嶈繑鍥炲埌杩欎釜涓浆椤�
+    const url = query ? `${targetPage}?${query}` : targetPage
+    uni.redirectTo({ url })
   }
-};
+}
 </script>
 
 <style scoped>
-.container {
+.redirect-container {
   display: flex;
-  flex-direction: column;
+  justify-content: center;
+  align-items: center;
   height: 100vh;
   background-color: #f7f7f7;
 }
-
-.info-section {
-  background-color: #fff;
-  margin: 20rpx;
-  border-radius: 12rpx;
-  //overflow: hidden;
-}
-
-.info-item {
-  display: flex;
-  padding: 20rpx;
-  border-bottom: 1rpx solid #eee;
-}
-
-.info-item:last-child {
-  border-bottom: none;
-}
-
-.item-label {
-  width: 180rpx;
-  color: #666;
-  font-size: 28rpx;
-}
-
-.item-value {
-  flex: 1;
-  color: #333;
-  font-size: 28rpx;
-}
-
-.item-value.status {
-  color: #ff6b6b;
-  font-weight: 500;
-}
-
-.tab-bar {
-  display: flex;
-  height: 80rpx;
-  background-color: #fff;
-  border-bottom: 1rpx solid #eee;
-}
-
-.tab-item {
-  flex: 1;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  font-size: 28rpx;
-  color: #666;
-  position: relative;
-  height: 80rpx;
-  /* 纭繚楂樺害 */
-  z-index: 1;
-  /* 纭繚灞傜骇 */
-}
-
-.tab-item.active {
-  color: #4285f4;
-  font-weight: 500;
-}
-
-.tab-item.active::after {
-  content: '';
-  position: absolute;
-  bottom: 0;
-  left: 50%;
-  transform: translateX(-50%);
-  width: 60rpx;
-  height: 6rpx;
-  background-color: #4285f4;
-  border-radius: 3rpx;
-}
-
-.form-section {
-  padding: 20rpx;
-  background-color: #fff;
-  border-radius: 12rpx;
-  box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
-  overflow-y: auto;
-}
-
-/* 涓婁紶琛岀▼-鍗曢�夋搷浣滄寜閽粍锛堣嚜閫傚簲鎹㈣鏍峰紡锛� */
-.action-buttons-container {
-  margin-bottom: 30rpx;
-}
-
-.action-buttons-row {
-  gap: 20rpx;
-  /* margin-bottom: 20rpx; */
-  display: grid;
-  grid-template-columns: repeat(auto-fill, 150rpx);
-  grid-gap: 20rpx;
-  min-width: 100%;
-}
-
-.action-btn {
-  width: 150rpx;
-  height: 80rpx;
-  line-height: 80rpx;
-  text-align: center;
-  font-size: 25rpx;
-  border-radius: 8rpx;
-  background-color: #fff;
-  border: 1rpx solid #eee;
-  color: #333;
-  transition: all 0.2s ease;
-  /* 浣跨敤 flex 甯冨眬纭繚涓�鑷存�� */
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  /* 鍏抽敭锛氳缃枃鏈孩鍑哄鐞� */
-  overflow: hidden;
-  white-space: nowrap;
-  text-overflow: ellipsis;
-}
-
-/* 閫変腑鐘舵�佹牱寮� */
-.action-btn.selected {
-  background-color: #e8f4f8;
-  border-color: #4285f4;
-  color: #4285f4;
-  font-weight: 500;
-}
-
-.action-btn::after {
-  border: none;
-}
-
-/* 閫変腑鎸夐挳鎸夊帇鍙嶉 */
-.action-btn.selected:active {
-  background-color: #d1e7fd;
-}
-
-/* 鏈�変腑鎸夐挳鎸夊帇鍙嶉 */
-.action-btn:not(.selected):active {
-  background-color: #f5f5f5;
-}
-
-.form-item {
-  margin-bottom: 30rpx;
-}
-
-.form-label {
-  font-size: 28rpx;
-  color: #333;
-  margin-bottom: 16rpx;
-  display: flex;
-  align-items: center;
-}
-
-.required-tag {
-  display: inline-block;
-  width: 24rpx;
-  height: 24rpx;
-  line-height: 24rpx;
-  text-align: center;
-  background-color: #e53e3e;
-  color: #fff;
-  font-size: 20rpx;
-  border-radius: 50%;
-  margin-left: 8rpx;
-}
-
-.form-control {
-  display: flex;
-  align-items: center;
-  border: 1rpx solid #eee;
-  border-radius: 8rpx;
-  padding: 16rpx;
-  background-color: #f9f9f9;
-}
-
-.form-control input {
-  flex: 1;
-  font-size: 28rpx;
-}
-
-.icon {
-  width: 32rpx;
-  height: 32rpx;
-  margin-left: 16rpx;
-}
-
-.form-control input[disabled] {
-  background-color: #f9f9f9;
-  color: #999;
-}
-
-.picker-value {
-  flex: 1;
-  font-size: 28rpx;
-  color: #333;
-}
-
-.bottom-buttons {
-  display: flex;
-  gap: 20rpx;
-  margin-top: 40rpx;
-}
-
-.bottom-btn {
-  flex: 1;
-  height: 80rpx;
-  line-height: 80rpx;
-  text-align: center;
-  font-size: 28rpx;
-  border-radius: 8rpx;
-  background-color: #fff;
-  border: 1rpx solid #eee;
-  color: #333;
-}
-
-.bottom-btn.primary {
-  background-color: #4285f4;
-  color: #fff;
-  border: none;
-}
-
-.bottom-btn::after {
-  border: none;
-}
-
-/* 鎸夐挳 */
-.bottom-btn-group {
-  display: flex;
-  gap: 20rpx;
-  padding: 30rpx;
-}
-
-
-/* 涓婁紶鍖哄煙缃戞牸瀹瑰櫒 */
-.upload-grid {
-  display: grid;
-  grid-template-columns: repeat(3, 1fr);
-  /* 3鍒楀竷灞� */
-  gap: 20rpx;
-  /* 闂磋窛 */
-  padding: 10rpx 0;
-}
-
-/* 鍗曚釜涓婁紶椤� */
-.upload-item {
-  width: 100%;
-  height: 200rpx;
-  /* 鍥哄畾楂樺害 */
-  position: relative;
-}
-
-/* 鏈笂浼犳椂鐨勫崰浣嶆 */
-.upload-placeholder {
-  width: 100%;
-  height: 100%;
-  border: 2rpx dashed #ddd;
-  /* 铏氱嚎杈规 */
-  border-radius: 8rpx;
-  display: flex;
-  flex-direction: column;
-  justify-content: center;
-  align-items: center;
-  background-color: #f9f9f9;
-  cursor: pointer;
-}
-
-/* 鍖哄煙鍚嶇О鏂囨湰 */
-.area-name {
-  font-size: 24rpx;
-  color: #666;
-  margin-top: 16rpx;
-}
-
-/* 宸蹭笂浼犲浘鐗囩殑棰勮 */
-.upload-img-preview {
-  width: 100%;
-  height: 100%;
-  border-radius: 8rpx;
-  overflow: hidden;
-  position: relative;
-}
-
-.upload-img-preview image {
-  width: 100%;
-  height: 100%;
-  object-fit: cover;
-  /* 淇濇寔姣斾緥濉厖 */
-}
-
-/* 鍒犻櫎鎸夐挳 */
-.delete-btn {
-  position: absolute;
-  top: -10rpx;
-  right: -10rpx;
-  width: 40rpx;
-  height: 40rpx;
-  border-radius: 50%;
-  background-color: rgba(0, 0, 0, 0.5);
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  z-index: 10;
-}
-
-/* 鏂囨湰妗嗘牱寮忎紭鍖栵細鍐呰竟璺�+鍗犱綅绗� */
-::v-deep .custom-textarea {
-  padding: 16rpx 50rpx 16rpx 16rpx !important;
-  /* 涓婁笅鍐呰竟璺濈◢澶э紝鍙充晶鐣欏浘鏍囦綅缃� */
-  min-height: 80rpx;
-}
-
-/* 鍗犱綅绗︽牱寮忥細鐏拌壊锛屽拰鍥剧墖涓�鑷� */
-::v-deep .custom-textarea textarea::placeholder {
-  color: #c6c0ba !important;
-  /* 娴呯伆鑹插崰浣嶇 */
-  font-size: 28rpx;
-}
-
-/* 纭繚鏂囨湰妗嗚竟妗嗕笉琚鐩� */
-::v-deep .custom-textarea .uni-textarea {
-  border: none !important;
-  /* 鍘绘帀缁勪欢鑷甫杈规锛岀敤澶栧眰鑷畾涔夎竟妗� */
-}
-/* ========== 鏂板锛氶噷绋嬪脊绐楁牱寮� ========== */
-.popup-mask {
-  position: fixed;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  background-color: rgba(0, 0, 0, 0.5);
-  z-index: 998;
-  transition: opacity 0.3s;
-}
-
-.popup-container {
-  position: fixed;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%) scale(0.8);
-  background-color: #ffffff;
-  border-radius: 20rpx;
-  z-index: 999;
-  padding: 30rpx;
-  box-sizing: border-box;
-  width: 90%;
-  max-width: 500px;
-  transition: transform 0.3s ease-out, opacity 0.3s ease-out;
-  opacity: 0;
-}
-
-.popup-show {
-  transform: translate(-50%, -50%) scale(1);
-  opacity: 1;
-}
-
-.popup-title {
-  font-size: 34rpx;
-  color: #333333;
-  font-weight: 600;
-  text-align: center;
-  margin-bottom: 40rpx;
-  padding-bottom: 20rpx;
-  border-bottom: 1rpx solid #f0f0f0;
-}
-
-/* 搴曢儴鎸夐挳 */
-.btn-group {
-  display: flex;
-  gap: 20rpx;
-  margin-top: 40rpx;
-}
-
-.cancel-btn,
-.submit-btn {
-  flex: 1;
-  height: 90rpx;
-  line-height: 90rpx;
-  font-size: 32rpx;
-}
-
-.disabled{
-  background-color: #f7f7f7;
-  color: rgba(0,0,0,.3);
-}
-.success{
-  background-color: rgba(202, 249, 130, 0.52);
-  color: rgba(0,0,0,.3);
-}
-.popup-const{
-  width: 80%;
-  background-color: #ffffff;
-  margin: 0 auto;
-  border-radius: 5px;
-  box-sizing:border-box;
-
-
-}
-.popup-const-title{
-  font-weight: bold;
-  line-height: 58px;
-  text-align: center;
-}
-.df{
-  display: flex;
-  margin-bottom: 10px;
-
-}
-.label-left{
-  width: 80px;
-  flex:  0 0 80px;
-}
-/* 鍑瘉缃戞牸 */
-.voucher-grid {
-  display: flex;
-  flex-wrap: wrap; /* 鍏佽鎹㈣ */
-  gap: 10rpx;
-}
-
-/* 鍑瘉椤� */
-.voucher-item {
-  width: 120rpx;
-  height: 120rpx;
-  position: relative;
-  border: 1rpx solid #eee;
-  border-radius: 6rpx;
-  overflow: hidden;
-  flex-shrink: 0; /* 闃叉鍘嬬缉 */
-}
-
-/* 鍑瘉鍥剧墖 */
-.voucher-img {
-  width: 100%;
-  height: 100%;
-  position: absolute;
-  top: 0;
-  left: 0;
-}
-/* 娣诲姞鏃犲嚟璇佹彁绀烘牱寮� */
-.no-voucher {
-  color: #999;
-  font-size: 28rpx;
-}
-.badge{
-  position: absolute;
-  right: 0;
-  top: -5px;
-  font-size: 10px;
-  background: blue;
-  color: #fff;
-  padding: 2px;
-  z-index: 999;
-}
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.8.0