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 | 1623 ---------------------------------------------------------
1 files changed, 27 insertions(+), 1,596 deletions(-)
diff --git a/ui/car_wx_app/pages/examine/index.vue b/ui/car_wx_app/pages/examine/index.vue
index d282e89..56949a4 100644
--- a/ui/car_wx_app/pages/examine/index.vue
+++ b/ui/car_wx_app/pages/examine/index.vue
@@ -1,1616 +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" v-if="uploadAreas.length > 0">
- <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 :loading="loading" 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 :loading="loading" 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>
-
- <view v-if="form.tripType == '5'" style="display: flex; align-items: center; width: 100%; margin-top: 15px">
- <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>
-
- <u-radio-group
- v-model="form.iscc" iconPlacement="right"
- placement="row">
- <u-radio label="鏄�" name="0" style="margin-right: 20px"></u-radio>
- <u-radio label="鍚�" name="1"></u-radio>
- </u-radio-group>
-
-
-
- </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>
-import {uploadImage} from "@/common/upload";
-
-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: {},
- isHk:false,
- loading: false
- };
- },
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
- });
+ const { id, name, ...rest } = options
- // 鑾峰彇 URL 鍙傛暟
- if (options.id) {
- //this.getList();
- this.getDispatch();
- this.getDictList();
- this.form.tripTime = this.getCurrentDateTime();
+ // 鏋勫缓鏌ヨ鍙傛暟
+ const query = Object.entries({ id, ...rest })
+ .filter(([_, v]) => v !== undefined && v !== null)
+ .map(([k, v]) => `${k}=${encodeURIComponent(v)}`)
+ .join('&')
+ // 鏍规嵁 name 鍙傛暟鍒ゆ柇璺宠浆鐩爣
+ let targetPage = '/pages/examine/detail'
+
+ if (name === '涓婁紶琛岀▼') {
+ targetPage = '/pages/examine/operate'
+ } else if (name === '鏌ョ湅琛岀▼鍘嗗彶' || name === '璋冨害璇︽儏' || !name) {
+ targetPage = '/pages/examine/detail'
}
- this.getLocation();
- },
- 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;
-
- },
- 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;
-
- },
-
- 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.form.longitude =longitude;
- this.form.latitude =latitude;
- 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) => {
- let datum = data[0];
- if (datum.regeocodeData){
- if (datum.regeocodeData.addressComponent){
- let province = datum.regeocodeData.addressComponent.province;
- this.isHk = province.indexOf("棣欐腐") != -1;
- }
- }
- this.form.address = datum.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 if (type == '8'){
- this.uploadAreas = [
- { name: '杞﹀ご', imageUrl: '',required: true },
- { name: '浠〃鐩�', imageUrl: '',required: true },
-
- { name: '杞﹀熬', imageUrl: '',required: true },
- { 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;
- this.form.iscc = "1";
- }else{
- this.form.odometer = 0
- }
-
-
- this.$nextTick(() => {
- this.showPopup = true;
- });
- }
- // wx.showToast({
- // title: `宸查�夋嫨${type}`,
- // icon: 'none'
- // });
- },
- maskClick() {
-
- },
- // 鏂板鍥剧墖
- async afterRead(event) {
- // 褰撹缃� multiple 涓� true 鏃�, file 涓烘暟缁勬牸寮忥紝鍚﹀垯涓哄璞℃牸寮�
- uploadImage(event.file[0].url,this.isHk).then(res=>{
- console.log(res)
- this.fileList.push(res);
- })
-
- // 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 tempFilePaths = res.tempFilePaths;
- const imgUrl = tempFilePaths[0];
- uploadImage(imgUrl,this.isHk).then(res2=>{
- this.uploadAreas[index].imageUrl = res2.url;
- // 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.loading){
- return;
- }
-
- // 鏍规嵁褰撳墠婵�娲荤殑鏍囩椤垫墽琛屼笉鍚岀殑鎻愪氦閫昏緫
- 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 {
- // 楠岃瘉鏄惁鑷冲皯涓婁紶浜嗕竴寮犲浘鐗�
- // 鏀堕泦鎵�鏈変笂浼犵殑鍥剧墖鍦板潃锛堢敤閫楀彿鍒嗛殧锛�
- this.loading = true;
- const voucherUrls = this.uploadAreas.filter(item => item.imageUrl!=='').map(item => 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);
- setTimeout(()=>{
- this.loading = false
- },2000)
- uni.setStorageSync("signContractForm", this.form);
- setTimeout(() => {
- uni.$u.route('/pages/signContract/index');
- }, 1000);
- } else {
- /* 涓婁紶琛岀▼鍙戣溅 */
- carUploadTrip(this.form).then((res) => {
- if (res == 1) {
- setTimeout(()=>{
- this.loading = false
- },2000)
- 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('鎻愪氦澶辫触')
- setTimeout(()=>{
- this.loading = false
- },2000)
- })
- }
-
- }
- }).catch(errors => {
- uni.$u.toast('鏍¢獙澶辫触')
- setTimeout(()=>{
- this.loading = false
- },2000)
- })
-
-
-
- // 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.url).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) {
- setTimeout(()=>{
- this.loading = false
- },2000)
- uni.$u.toast('鎿嶄綔鎴愬姛')
- // 閲嶇疆琛ㄥ崟
- this.form = {
- address: '',
- tripTime: '',
- odometer: 0,
- tripType: ''
- }
- this.cleanedForm = {}
- this.fileList = []
- this.selectedAction = ''
- }
- }).catch(err => {
- uni.$u.toast('鎻愪氦澶辫触')
- setTimeout(()=>{
- this.loading = false
- },2000)
- })
- }
- }).catch(errors => {
- uni.$u.toast('鏍¢獙澶辫触')
- setTimeout(()=>{
- this.loading = false
- },2000)
- })
- }
-
- // this.$forceUpdate();
- },
-
-
-
- handleSubmit() {
- // 绠�鍗曟牎楠岋細閲岀▼涓嶈兘涓鸿礋鏁�
- if (this.form.odometer < 0) {
- uni.$u.toast('浠〃閲岀▼涓嶈兘涓鸿礋鏁�');
- return;
- }
- this.getLocation()
- this.form.tripTime = this.getCurrentDateTime();
- this.showPopup = false;
- }
-
+ // 浣跨敤 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>
-<style lang="scss" scoped>
-::v-deep .u-radio{
- margin-right: 20px;
-}
-::v-deep .u-radio__icon-wrap{
- margin-left: 10px;
-}
-</style>
\ No newline at end of file
--
Gitblit v1.8.0