From 552ec6b7d8ccc56c379da195fc6c9c74312b1070 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期五, 22 五月 2026 17:57:46 +0800
Subject: [PATCH] OA部分查询条件变更

---
 src/pages/cooperativeOffice/collaborativeApproval/detail.vue | 1515 +++++++++++++++++++++++++++-------------------------------
 1 files changed, 703 insertions(+), 812 deletions(-)

diff --git a/src/pages/cooperativeOffice/collaborativeApproval/detail.vue b/src/pages/cooperativeOffice/collaborativeApproval/detail.vue
index 7dbf5b2..16f9923 100644
--- a/src/pages/cooperativeOffice/collaborativeApproval/detail.vue
+++ b/src/pages/cooperativeOffice/collaborativeApproval/detail.vue
@@ -1,849 +1,740 @@
 <template>
   <view class="account-detail">
-    <PageHeader title="瀹℃壒娴佺▼" @back="goBack" />
-
+    <PageHeader :title="operationType === 'detail' ? '璇︽儏' : '瀹℃壒娴佺▼'"
+                @back="goBack" />
     <!-- 琛ㄥ崟鍖哄煙 -->
-    <u-form ref="formRef" @submit="submitForm" :rules="rules" :model="form" label-width="140rpx">
-      <u-form-item prop="approveReason" label="鐢宠浜嬬敱" required>
-        <u-input
-          v-model="form.approveReason"
-          type="textarea"
-          rows="2"
-          auto-height
-          maxlength="200"
-          placeholder="璇疯緭鍏ョ敵璇蜂簨鐢�"
-          show-word-limit
-        />
-      </u-form-item>
-      <u-form-item prop="approveDeptName" label="鐢宠閮ㄩ棬" required>
-        <u-input
-          v-model="form.approveDeptName"
-          readonly
-          placeholder="璇烽�夋嫨鐢宠閮ㄩ棬"
-          @click="showPicker = true"
-        />
-        <template #right>
-					<up-icon
-						name="arrow-right"
-						@click="showPicker = true"
-					></up-icon>
-				</template>
-      </u-form-item>
-      <u-form-item prop="approveUser" label="鐢宠浜�" required>
-        <u-input
-          v-model="form.approveUserName"
-          placeholder="璇疯緭鍏ョ敵璇蜂汉"
-          readonly
-        />
-      </u-form-item>
-      <u-form-item prop="approveTime" label="鐢宠鏃ユ湡" required>
-        <u-input
-          v-model="form.approveTime"
-          readonly
-          placeholder="璇烽�夋嫨"
-          @click="showDatePicker"
-        />
-      </u-form-item>
-      
-      <!-- approveType=2 璇峰亣鐩稿叧瀛楁 -->
-      <template v-if="approveType === 2">
-        <u-form-item prop="startDate" label="璇峰亣寮�濮嬫椂闂�" required>
-          <u-input
-            v-model="form.startDate"
-            readonly
-            placeholder="璇烽�夋嫨寮�濮嬫椂闂�"
-            @click="showStartDatePicker"
-          />
+    <u-form ref="formRef"
+            @submit="submitForm"
+            :rules="rules"
+            :model="form"
+            label-width="140rpx">
+      <template v-if="operationType !== 'detail'">
+        <u-form-item prop="approveReason"
+                     label="娴佺▼缂栧彿">
+          <u-input v-model="form.approveId"
+                   disabled
+                   placeholder="鑷姩缂栧彿" />
         </u-form-item>
-        <u-form-item prop="endDate" label="璇峰亣缁撴潫鏃堕棿" required>
-          <u-input
-            v-model="form.endDate"
-            readonly
-            placeholder="璇烽�夋嫨缁撴潫鏃堕棿"
-            @click="showEndDatePicker"
-          />
+        <u-form-item prop="approveReason"
+                     :label="approveType === 5 ? '閲囪喘浜嬬敱' : '鐢宠浜嬬敱'"
+                     required>
+          <u-input v-model="form.approveReason"
+                   type="textarea"
+                   rows="2"
+                   auto-height
+                   maxlength="200"
+                   :placeholder="approveType === 5 ? '璇疯緭鍏ラ噰璐簨鐢�' : '璇疯緭鍏ョ敵璇蜂簨鐢�'"
+                   show-word-limit />
+        </u-form-item>
+        <u-form-item prop="approveDeptName"
+                     label="鐢宠閮ㄩ棬"
+                     required>
+          <!-- <u-input v-model="form.approveDeptName"
+                 placeholder="璇烽�夋嫨鐢宠閮ㄩ棬" /> -->
+          <u-input v-model="form.approveDeptName"
+                   readonly
+                   placeholder="璇烽�夋嫨鐢宠閮ㄩ棬"
+                   @click="showPicker = true" />
+          <template #right>
+            <up-icon name="arrow-right"
+                     @click="showPicker = true"></up-icon>
+          </template>
+        </u-form-item>
+        <!-- <u-form-item prop="approveUser"
+                   label="鐢宠浜�"
+                   required>
+        <u-input v-model="form.approveUserName"
+                 placeholder="璇疯緭鍏ョ敵璇蜂汉"
+                 readonly />
+      </u-form-item>
+      <u-form-item prop="approveTime"
+                   label="鐢宠鏃ユ湡"
+                   required>
+        <u-input v-model="form.approveTime"
+                 readonly
+                 placeholder="璇烽�夋嫨"
+                 @click="showDatePicker" />
+        <template #right>
+          <up-icon name="arrow-right"
+                   @click="showDatePicker"></up-icon>
+        </template>
+      </u-form-item> -->
+        <!-- approveType=2 璇峰亣鐩稿叧瀛楁 -->
+        <template v-if="approveType === 2">
+          <u-form-item prop="startDate"
+                       label="寮�濮嬫椂闂�"
+                       required>
+            <u-input v-model="form.startDate"
+                     readonly
+                     placeholder="璇峰亣寮�濮嬫椂闂�"
+                     @click="showStartDatePicker" />
+            <template #right>
+              <up-icon name="arrow-right"
+                       @click="showStartDatePicker"></up-icon>
+            </template>
+          </u-form-item>
+          <u-form-item prop="endDate"
+                       label="缁撴潫鏃堕棿"
+                       required>
+            <u-input v-model="form.endDate"
+                     readonly
+                     placeholder="璇峰亣缁撴潫鏃堕棿"
+                     @click="showEndDatePicker" />
+            <template #right>
+              <up-icon name="arrow-right"
+                       @click="showEndDatePicker"></up-icon>
+            </template>
+          </u-form-item>
+        </template>
+        <!-- approveType=3 鍑哄樊鐩稿叧瀛楁 -->
+        <u-form-item v-if="approveType === 3"
+                     prop="location"
+                     label="鍑哄樊鍦扮偣"
+                     required>
+          <u-input v-model="form.location"
+                   placeholder="璇疯緭鍏ュ嚭宸湴鐐�"
+                   clearable />
+        </u-form-item>
+        <!-- approveType=4 鎶ラ攢鐩稿叧瀛楁 -->
+        <u-form-item v-if="approveType === 4"
+                     prop="price"
+                     label="鎶ラ攢閲戦"
+                     required>
+          <u-input v-model="form.price"
+                   type="number"
+                   placeholder="璇疯緭鍏ユ姤閿�閲戦"
+                   clearable />
         </u-form-item>
       </template>
-      
-      <!-- approveType=3 鍑哄樊鐩稿叧瀛楁 -->
-      <u-form-item v-if="approveType === 3" prop="location" label="鍑哄樊鍦扮偣" required>
-        <u-input
-          v-model="form.location"
-          placeholder="璇疯緭鍏ュ嚭宸湴鐐�"
-          clearable
-        />
-      </u-form-item>
-      
-      <!-- approveType=4 鎶ラ攢鐩稿叧瀛楁 -->
-      <u-form-item v-if="approveType === 4" prop="price" label="鎶ラ攢閲戦" required>
-        <u-input
-          v-model="form.price"
-          type="number"
-          placeholder="璇疯緭鍏ユ姤閿�閲戦"
-          clearable
-        />
+      <!-- 鎶ヤ环瀹℃壒璇︽儏 -->
+      <view v-if="isQuotationApproval"
+            style="margin: 20rpx 0;">
+        <u-divider text="鎶ヤ环璇︽儏"
+                   text-size="28rpx"
+                   color="#2979ff"></u-divider>
+        <u-skeleton :loading="quotationLoading"
+                    rows="3"
+                    animated>
+          <view v-if="!currentQuotation || !currentQuotation.quotationNo"
+                style="padding: 40rpx; text-align: center; color: #999;">
+            鏈煡璇㈠埌瀵瑰簲鎶ヤ环璇︽儏
+          </view>
+          <view v-else>
+            <u-cell-group :border="false">
+              <u-cell title="鎶ヤ环鍗曞彿"
+                      :value="currentQuotation.quotationNo"></u-cell>
+              <u-cell title="瀹㈡埛鍚嶇О"
+                      :value="currentQuotation.customer"></u-cell>
+              <u-cell title="涓氬姟鍛�"
+                      :value="currentQuotation.salesperson"></u-cell>
+              <u-cell title="鎶ヤ环鏃ユ湡"
+                      :value="currentQuotation.quotationDate"></u-cell>
+              <u-cell title="鏈夋晥鏈熻嚦"
+                      :value="currentQuotation.validDate"></u-cell>
+              <u-cell title="浠樻鏂瑰紡"
+                      :value="currentQuotation.paymentMethod"></u-cell>
+              <u-cell title="鎶ヤ环鎬婚">
+                <template #value>
+                  <text style="font-size: 32rpx; color: #e6a23c; font-weight: bold;">
+                    楼{{ Number(currentQuotation.totalAmount ?? 0).toFixed(2) }}
+                  </text>
+                </template>
+              </u-cell>
+            </u-cell-group>
+            <view style="margin-top: 20rpx; padding: 0 30rpx;">
+              <view style="font-size: 28rpx; font-weight: bold; margin-bottom: 10rpx;">浜у搧鏄庣粏</view>
+              <view v-for="(item, index) in (currentQuotation.products || [])"
+                    :key="index"
+                    style="background: #f8f8f8; border-radius: 8rpx; padding: 20rpx; margin-bottom: 10rpx;">
+                <view style="display: flex; justify-content: space-between;">
+                  <text style="font-weight: bold;">{{ item.product }}</text>
+                  <text style="color: #e6a23c;">楼{{ Number(item.unitPrice ?? 0).toFixed(2) }}</text>
+                </view>
+                <view style="font-size: 24rpx; color: #666; margin-top: 10rpx;">
+                  瑙勬牸: {{ item.specification }} | 鍗曚綅: {{ item.unit }}
+                </view>
+              </view>
+            </view>
+            <view v-if="currentQuotation.remark"
+                  style="margin-top: 20rpx; padding: 0 30rpx;">
+              <view style="font-size: 28rpx; font-weight: bold;">澶囨敞</view>
+              <view style="font-size: 26rpx; color: #666; margin-top: 10rpx;">{{ currentQuotation.remark }}</view>
+            </view>
+          </view>
+        </u-skeleton>
+      </view>
+      <!-- 閲囪喘瀹℃壒璇︽儏 -->
+      <view v-if="isPurchaseApproval"
+            style="margin: 20rpx 0;">
+        <u-divider text="閲囪喘璇︽儏"
+                   text-size="28rpx"
+                   color="#2979ff"></u-divider>
+        <u-skeleton :loading="purchaseLoading"
+                    rows="3"
+                    animated>
+          <view v-if="!currentPurchase || !currentPurchase.purchaseContractNumber"
+                style="padding: 40rpx; text-align: center; color: #999;">
+            鏈煡璇㈠埌瀵瑰簲閲囪喘璇︽儏
+          </view>
+          <view v-else>
+            <u-cell-group :border="false">
+              <u-cell title="閲囪喘鍚堝悓鍙�"
+                      :value="currentPurchase.purchaseContractNumber"></u-cell>
+              <u-cell title="渚涘簲鍟嗗悕绉�"
+                      :value="currentPurchase.supplierName"></u-cell>
+              <u-cell title="椤圭洰鍚嶇О"
+                      :value="currentPurchase.projectName"></u-cell>
+              <u-cell title="閿�鍞悎鍚屽彿"
+                      :value="currentPurchase.salesContractNo"></u-cell>
+              <u-cell title="绛捐鏃ユ湡"
+                      :value="currentPurchase.executionDate"></u-cell>
+              <u-cell title="褰曞叆鏃ユ湡"
+                      :value="currentPurchase.entryDate"></u-cell>
+              <u-cell title="浠樻鏂瑰紡"
+                      :value="currentPurchase.paymentMethod"></u-cell>
+              <u-cell title="鍚堝悓閲戦">
+                <template #value>
+                  <text style="font-size: 32rpx; color: #e6a23c; font-weight: bold;">
+                    楼{{ Number(currentPurchase.contractAmount ?? 0).toFixed(2) }}
+                  </text>
+                </template>
+              </u-cell>
+            </u-cell-group>
+            <view style="margin-top: 20rpx; padding: 0 30rpx;">
+              <view style="font-size: 28rpx; font-weight: bold; margin-bottom: 10rpx;">浜у搧鏄庣粏</view>
+              <view v-for="(item, index) in (currentPurchase.productData || [])"
+                    :key="index"
+                    style="background: #f8f8f8; border-radius: 8rpx; padding: 20rpx; margin-bottom: 10rpx;">
+                <view style="display: flex; justify-content: space-between;">
+                  <text style="font-weight: bold;">{{ item.productCategory }}</text>
+                  <text style="color: #e6a23c;">楼{{ Number(item.taxInclusiveTotalPrice ?? 0).toFixed(2) }}</text>
+                </view>
+                <view style="font-size: 24rpx; color: #666; margin-top: 10rpx;">
+                  瑙勬牸: {{ item.specificationModel }} | 鏁伴噺: {{ item.quantity }} {{ item.unit }}
+                </view>
+                <view style="font-size: 24rpx; color: #999; margin-top: 4rpx;">
+                  鍚◣鍗曚环: 楼{{ Number(item.taxInclusiveUnitPrice ?? 0).toFixed(2) }}
+                </view>
+              </view>
+            </view>
+          </view>
+        </u-skeleton>
+      </view>
+      <!-- 鍙戣揣瀹℃壒璇︽儏 -->
+      <view v-if="isDeliveryApproval"
+            style="margin: 20rpx 0;">
+        <u-divider text="鍙戣揣璇︽儏"
+                   text-size="28rpx"
+                   color="#2979ff"></u-divider>
+        <u-skeleton :loading="deliveryLoading"
+                    rows="3"
+                    animated>
+          <view v-if="!currentDelivery || !currentDelivery.shippingInfo"
+                style="padding: 40rpx; text-align: center; color: #999;">
+            鏈煡璇㈠埌瀵瑰簲鍙戣揣璇︽儏
+          </view>
+          <view v-else>
+            <u-cell-group :border="false">
+              <u-cell title="閿�鍞鍗�"
+                      :value="currentDelivery.shippingInfo.salesContractNo || '--'"></u-cell>
+              <u-cell title="鍙戣揣璁㈠崟鍙�"
+                      :value="currentDelivery.shippingInfo.shippingNo || '--'"></u-cell>
+              <u-cell title="瀹㈡埛鍚嶇О"
+                      :value="currentDelivery.shippingInfo.customerName || '--'"></u-cell>
+              <u-cell title="鍙戣揣绫诲瀷"
+                      :value="currentDelivery.shippingInfo.type || '--'"></u-cell>
+              <u-cell title="鍙戣揣鏃ユ湡"
+                      :value="currentDelivery.shippingInfo.shippingDate || '--'"></u-cell>
+              <u-cell title="瀹℃牳鐘舵��"
+                      :value="currentDelivery.shippingInfo.status || '--'"></u-cell>
+              <u-cell title="鍙戣揣杞︾墝鍙�"
+                      :value="currentDelivery.shippingInfo.shippingCarNumber || '--'"></u-cell>
+              <u-cell title="蹇�掑叕鍙�"
+                      :value="currentDelivery.shippingInfo.expressCompany || '--'"></u-cell>
+              <u-cell title="蹇�掑崟鍙�"
+                      :value="currentDelivery.shippingInfo.expressNumber || '--'"></u-cell>
+            </u-cell-group>
+            <view style="margin-top: 20rpx; padding: 0 30rpx;">
+              <view style="font-size: 28rpx; font-weight: bold; margin-bottom: 10rpx;">浜у搧鏄庣粏</view>
+              <view v-for="(item, index) in deliveryProductList"
+                    :key="index"
+                    style="background: #f8f8f8; border-radius: 8rpx; padding: 20rpx; margin-bottom: 10rpx;">
+                <view style="display: flex; justify-content: space-between;">
+                  <text style="font-weight: bold;">{{ item.productName }}</text>
+                  <text style="color: #2979ff;">鏁伴噺: {{ item.deliveryQuantity }}</text>
+                </view>
+                <view style="font-size: 24rpx; color: #666; margin-top: 10rpx;">
+                  瑙勬牸: {{ item.specificationModel }}
+                </view>
+                <view v-if="item.batchNo"
+                      style="font-size: 24rpx; color: #999; margin-top: 4rpx;">
+                  鎵瑰彿: {{ item.batchNo }}
+                </view>
+              </view>
+            </view>
+            <view v-if="currentDelivery.shippingInfo.storageBlobVOs && currentDelivery.shippingInfo.storageBlobVOs.length"
+                  style="margin-top: 20rpx; padding: 0 30rpx;">
+              <view style="font-size: 28rpx; font-weight: bold; margin-bottom: 10rpx;">鍙戣揣鍥剧墖</view>
+              <CommonUpload :model-value="currentDelivery.shippingInfo.storageBlobVOs"
+                            disabled />
+            </view>
+          </view>
+        </u-skeleton>
+      </view>
+      <u-form-item v-if="operationType !== 'detail'"
+                   label="鍥剧墖闄勪欢"
+                   prop="storageBlobDTOS"
+                   border-bottom>
+        <CommonUpload v-model="form.storageBlobDTOS" />
       </u-form-item>
     </u-form>
-
     <!-- 閫夋嫨鍣ㄥ脊绐� -->
-    <up-action-sheet
-      :show="showPicker"
-      :actions="productOptions"
-      title="閫夋嫨閮ㄩ棬"
-      @select="onConfirm"
-      @close="showPicker = false"
-    />
-
-    <!-- 鏃ユ湡閫夋嫨鍣� -->
-    <up-popup :show="showDate" mode="bottom" @close="showDate = false">
-      <up-datetime-picker
-        :show="true"
-        v-model="currentDate"
-        @confirm="onDateConfirm"
-        @cancel="showDate = false"
-        mode="date"
-      />
-    </up-popup>
-    
-    <!-- 璇峰亣寮�濮嬫椂闂撮�夋嫨鍣� -->
-    <up-popup :show="showStartDate" mode="bottom" @close="showStartDate = false">
-      <up-datetime-picker
-        :show="true"
-        v-model="startDateValue"
-        @confirm="onStartDateConfirm"
-        @cancel="showStartDate = false"
-        mode="date"
-      />
-    </up-popup>
-    
-    <!-- 璇峰亣缁撴潫鏃堕棿閫夋嫨鍣� -->
-    <up-popup :show="showEndDate" mode="bottom" @close="showEndDate = false">
-      <up-datetime-picker
-        :show="true"
-        v-model="endDateValue"
-        @confirm="onEndDateConfirm"
-        @cancel="showEndDate = false"
-        mode="date"
-      />
-    </up-popup>
-    <!-- 瀹℃牳娴佺▼鍖哄煙 -->
-    <view class="approval-process">
-      <view class="approval-header">
-        <text class="approval-title">瀹℃牳娴佺▼</text>
-        <text class="approval-desc">姣忎釜姝ラ鍙兘閫夋嫨涓�涓鎵逛汉</text>
-      </view>
-
-      <view class="approval-steps">
-        <view v-for="(step, stepIndex) in approverNodes" :key="stepIndex" class="approval-step">
-          <view class="step-dot"></view>
-          <view class="step-title">
-            <text>瀹℃壒浜�</text>
-          </view>
-          <view class="approver-container">
-            <view v-if="step.nickName" class="approver-item">
-              <view class="approver-avatar">
-                <text class="avatar-text">{{ step.nickName.charAt(0) }}</text>
-                <view class="status-dot"></view>
-              </view>
-              <view class="approver-info">
-                <text class="approver-name">{{ step.nickName }}</text>
-              </view>
-              <view class="delete-approver-btn" @click="removeApprover(stepIndex)">脳</view>
-            </view>
-            <view v-else class="add-approver-btn" @click="addApprover(stepIndex)">
-              <view class="add-circle">+</view>
-              <text class="add-label">閫夋嫨瀹℃壒浜�</text>
-            </view>
-          </view>
-          <view class="step-line" v-if="stepIndex < approverNodes.length - 1"></view>
-          <view class="delete-step-btn" v-if="approverNodes.length > 1" @click="removeApprovalStep(stepIndex)">鍒犻櫎鑺傜偣</view>
-        </view>
-      </view>
-
-      <view class="add-step-btn">
-			<u-button icon="plus" plain type="primary" style="width: 100%" @click="addApprovalStep">鏂板鑺傜偣</u-button>
-      </view>
-    </view>
-
+    <template v-if="operationType !== 'detail'">
+      <up-action-sheet :show="showPicker"
+                       :actions="productOptions"
+                       title="閫夋嫨閮ㄩ棬"
+                       @select="onConfirm"
+                       @close="showPicker = false" />
+      <!-- 鏃ユ湡閫夋嫨鍣� -->
+      <up-popup :show="showDate"
+                mode="bottom"
+                @close="showDate = false">
+        <up-datetime-picker :show="true"
+                            v-model="currentDate"
+                            @confirm="onDateConfirm"
+                            @cancel="showDate = false"
+                            mode="date" />
+      </up-popup>
+      <!-- 璇峰亣寮�濮嬫椂闂撮�夋嫨鍣� -->
+      <up-popup :show="showStartDate"
+                mode="bottom"
+                @close="showStartDate = false">
+        <up-datetime-picker :show="true"
+                            v-model="startDateValue"
+                            @confirm="onStartDateConfirm"
+                            @cancel="showStartDate = false"
+                            mode="date" />
+      </up-popup>
+      <!-- 璇峰亣缁撴潫鏃堕棿閫夋嫨鍣� -->
+      <up-popup :show="showEndDate"
+                mode="bottom"
+                @close="showEndDate = false">
+        <up-datetime-picker :show="true"
+                            v-model="endDateValue"
+                            @confirm="onEndDateConfirm"
+                            @cancel="showEndDate = false"
+                            mode="date" />
+      </up-popup>
+    </template>
     <!-- 搴曢儴鎸夐挳 -->
-    <view class="footer-btns">
-      <u-button class="cancel-btn" @click="goBack">鍙栨秷</u-button>
-      <u-button class="save-btn" @click="submitForm">淇濆瓨</u-button>
+    <view class="footer-btns"
+          v-if="operationType !== 'detail'">
+      <u-button class="cancel-btn"
+                @click="goBack">鍙栨秷</u-button>
+      <u-button class="save-btn"
+                @click="submitForm">淇濆瓨</u-button>
     </view>
   </view>
 </template>
 
 <script setup>
-import { ref, onMounted, onUnmounted, reactive, toRefs } from "vue";
-import PageHeader from "@/components/PageHeader.vue";
-import useUserStore from "@/store/modules/user";
-import { formatDateToYMD } from '@/utils/ruoyi'
-import {getDept, approveProcessGetInfo, approveProcessAdd, approveProcessUpdate} from "@/api/collaborativeApproval/approvalProcess";
-const showToast = (message) => {
-	uni.showToast({
-		title: message,
-		icon: 'none'
-	})
-}
-import {userListNoPageByTenantId} from "@/api/system/user";
+  import {
+    ref,
+    onMounted,
+    onUnmounted,
+    reactive,
+    toRefs,
+    computed,
+    watch,
+  } from "vue";
+  import PageHeader from "@/components/PageHeader.vue";
+  import CommonUpload from "@/components/CommonUpload.vue";
+  import useUserStore from "@/store/modules/user";
+  import { formatDateToYMD } from "@/utils/ruoyi";
+  import {
+    getDept,
+    approveProcessGetInfo,
+    approveProcessAdd,
+    approveProcessUpdate,
+    getDeliveryDetailByShippingNo,
+  } from "@/api/collaborativeApproval/approvalProcess";
+  import { getQuotationList } from "@/api/salesManagement/salesQuotation";
+  import { getPurchaseByCode } from "@/api/procurementManagement/procurementLedger";
+  const showToast = message => {
+    uni.showToast({
+      title: message,
+      icon: "none",
+    });
+  };
 
-const data = reactive({
-	form: {
-		approveTime: "",
-		approveId: "",
-		approveUser: "",
-		approveUserName: "",
-		approveDeptName: "",
-		approveDeptId: "",
-		approveReason: "",
-		checkResult: "",
-		tempFileIds: [],
-		approverList: [], // 鏂板瀛楁锛屽瓨鍌ㄦ墍鏈夎妭鐐圭殑瀹℃壒浜篿d
-		startDate: "",
-		endDate: "",
-		location: "",
-		price: ""
-	},
-	rules: {
-		approveTime: [{ required: false, message: "璇疯緭鍏�", trigger: "change" },],
-		approveId: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-		approveDeptId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-		approveReason: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-		checkResult: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-		startDate: [{ required: false, message: "璇烽�夋嫨寮�濮嬫椂闂�", trigger: "change" }],
-		endDate: [{ required: false, message: "璇烽�夋嫨缁撴潫鏃堕棿", trigger: "change" }],
-		location: [{ required: false, message: "璇疯緭鍏ュ嚭宸湴鐐�", trigger: "blur" }],
-		price: [{ required: false, message: "璇疯緭鍏ユ姤閿�閲戦", trigger: "blur" }],
-	},
-});
-const { form, rules } = toRefs(data);
-const result = ref("");
-const showPicker = ref(false);
-const productOptions = ref([]);
-const operationType = ref("");
-const currentApproveStatus = ref("");
-const approverNodes = ref([]);
-const userList = ref([]);
-const formRef = ref(null);
-const message = ref("");
-const showDate = ref(false)
-const currentDate = ref(Date.now())
-const showStartDate = ref(false)
-const startDateValue = ref(Date.now())
-const showEndDate = ref(false)
-const endDateValue = ref(Date.now())
-const userStore = useUserStore()
-const approveType = ref(0)
-
-const getProductOptions = () => {
-	getDept().then((res) => {
-		productOptions.value = res.data.map(item => ({
-			value: item.deptId,
-			name: item.deptName
-		}))
-	});
-};
-const fileList = ref([]);
-let nextApproverId = 2;
-
-onMounted(async () => {
-  try {
-		getProductOptions()
-		userListNoPageByTenantId().then((res) => {
-			userList.value = res.data
-		})
-		form.value.approveUser = userStore.id
-		form.value.approveUserName = userStore.nickName
-		form.value.approveTime = getCurrentDate();
-		
-		// 浠庢湰鍦板瓨鍌ㄨ幏鍙栧弬鏁�
-		operationType.value = uni.getStorageSync('operationType') || 'add';
-		approveType.value = uni.getStorageSync('approveType') || 0;
-		
-		// 濡傛灉鏄紪杈戞ā寮忥紝浠庢湰鍦板瓨鍌ㄨ幏鍙栨暟鎹�
-		if (operationType.value === 'edit') {
-			const storedData = uni.getStorageSync('invoiceLedgerEditRow');
-			if (storedData) {
-				const row = JSON.parse(storedData);
-				fileList.value = row.commonFileList || [];
-				form.value.tempFileIds = fileList.value.map(file => file.id);
-				currentApproveStatus.value = row.approveStatus;
-				
-				approveProcessGetInfo({id: row.approveId, approveReason: '1'}).then(res => {
-					form.value = {...res.data};
-					// 鍙嶆樉瀹℃壒浜�
-					if (res.data && res.data.approveUserIds) {
-						const userIds = res.data.approveUserIds.split(',');
-						approverNodes.value = userIds.map((userId, idx) => {
-							const userIdNum = parseInt(userId.trim());
-							// 浠巙serList涓壘鍒板搴旂殑鐢ㄦ埛淇℃伅
-							const userInfo = userList.value.find(user => user.userId === userIdNum);
-							return {
-								id: idx + 1,
-								userId: userIdNum,
-								nickName: userInfo ? userInfo.nickName : null
-							};
-						});
-						nextApproverId = userIds.length + 1;
-					} else {
-						// 鏂板妯″紡锛屽垵濮嬪寲涓�涓┖鐨勫鎵硅妭鐐�
-						approverNodes.value = [{ id: 1, userId: null, nickName: null }];
-						nextApproverId = 2;
-					}
-				});
-			}
-		} else {
-			// 鏂板妯″紡锛屽垵濮嬪寲涓�涓┖鐨勫鎵硅妭鐐�
-			approverNodes.value = [{ id: 1, userId: null }];
-		}
-		
-    // 鐩戝惉鑱旂郴浜洪�夋嫨浜嬩欢
-    uni.$on('selectContact', handleSelectContact);
-  } catch (error) {
-    console.error("鑾峰彇閮ㄩ棬鏁版嵁澶辫触:", error);
-  }
-});
-
-onUnmounted(() => {
-  // 绉婚櫎浜嬩欢鐩戝惉
-  uni.$off('selectContact', handleSelectContact);
-});
-
-const onConfirm = (item) => {
-  // 璁剧疆閫変腑鐨勯儴闂�
-  form.value.approveDeptName = item.name;
-  // 纭繚璁剧疆鐨勬槸瀛楃涓茬被鍨嬬殑閮ㄩ棬ID
-  form.value.approveDeptId = String(item.value || '');
-  console.log('閮ㄩ棬閫夋嫨鍚庣殑鍊�:', {
-    approveDeptId: form.value.approveDeptId,
-    approveDeptName: form.value.approveDeptName
+  const data = reactive({
+    form: {
+      approveTime: "",
+      approveId: "",
+      approveUser: "",
+      approveUserName: "",
+      approveDeptName: "",
+      approveDeptId: "",
+      approveReason: "",
+      checkResult: "",
+      storageBlobDTOS: [],
+      startDate: "",
+      endDate: "",
+      location: "",
+      price: "",
+    },
+    rules: {
+      approveTime: [{ required: false, message: "璇疯緭鍏�", trigger: "change" }],
+      approveId: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+      approveDeptId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      approveReason: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      checkResult: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+      startDate: [
+        { required: false, message: "璇烽�夋嫨寮�濮嬫椂闂�", trigger: "change" },
+      ],
+      endDate: [
+        { required: false, message: "璇烽�夋嫨缁撴潫鏃堕棿", trigger: "change" },
+      ],
+      location: [{ required: false, message: "璇疯緭鍏ュ嚭宸湴鐐�", trigger: "blur" }],
+      price: [{ required: false, message: "璇疯緭鍏ユ姤閿�閲戦", trigger: "blur" }],
+    },
   });
-  showPicker.value = false;
-};
+  const { form, rules } = toRefs(data);
+  const result = ref("");
+  const showPicker = ref(false);
+  const productOptions = ref([]);
+  const operationType = ref("");
+  const currentApproveStatus = ref("");
+  const formRef = ref(null);
+  const message = ref("");
+  const showDate = ref(false);
+  const currentDate = ref(Date.now());
+  const showStartDate = ref(false);
+  const startDateValue = ref(Date.now());
+  const showEndDate = ref(false);
+  const endDateValue = ref(Date.now());
+  const userStore = useUserStore();
+  const approveType = ref(0);
+  const isInitialLoading = ref(false);
 
-const goBack = () => {
-	// 娓呴櫎鏈湴瀛樺偍鐨勬暟鎹�
-  uni.removeStorageSync('operationType');
-	uni.removeStorageSync('invoiceLedgerEditRow');
-	uni.removeStorageSync('approveType');
-  uni.navigateBack();
-};
+  const quotationLoading = ref(false);
+  const currentQuotation = ref({});
+  const purchaseLoading = ref(false);
+  const currentPurchase = ref({});
+  const deliveryLoading = ref(false);
+  const currentDelivery = ref({});
+  const deliveryProductList = ref([]);
 
-const submitForm = () => {
-  // 妫�鏌ユ瘡涓鎵规楠ゆ槸鍚﹂兘鏈夊鎵逛汉
-  const hasEmptyStep = approverNodes.value.some(step => !step.nickName);
-  if (hasEmptyStep) {
-		showToast('璇蜂负姣忎釜瀹℃壒姝ラ閫夋嫨瀹℃壒浜�');
-    return;
-  }
-  
-  // 鎵嬪姩妫�鏌ュ繀濉瓧娈碉紝闃叉鍥犳暟鎹被鍨嬮棶棰樺鑷寸殑鏍¢獙澶辫触
-  if (!form.value.approveReason || !form.value.approveReason.trim()) {
-    showToast('璇疯緭鍏ョ敵璇蜂簨鐢�');
-    return;
-  }
-  
-  if (!form.value.approveDeptId || String(form.value.approveDeptId).trim() === '') {
-    showToast('璇烽�夋嫨鐢宠閮ㄩ棬');
-    return;
-  }
-  
-  if (!form.value.approveTime) {
-    showToast('璇烽�夋嫨鐢宠鏃ユ湡');
-    return;
-  }
-  
-  formRef.value.validate().then((valid) => {
-    if (valid) {
-      // 琛ㄥ崟鏍¢獙閫氳繃锛屽彲浠ユ彁浜ゆ暟鎹�
-	  // 鏀堕泦鎵�鏈夎妭鐐圭殑瀹℃壒浜篿d
-	  console.log('approverNodes---', approverNodes.value)
-	  form.value.approveUserIds = approverNodes.value.map(node => node.userId).join(',')
-	  form.value.approveType = approveType.value
-	  if (operationType.value === "add" || currentApproveStatus.value == 3) {
-		approveProcessAdd(form.value).then(res => {
-		  showToast("鎻愪氦鎴愬姛");
-		  goBack()
-		})
-	  } else {
-		approveProcessUpdate(form.value).then(res => {
-		  showToast("鎻愪氦鎴愬姛");
-		  goBack()
-		})
-	  }
-    }
-  }).catch((error) => {
-    console.error("琛ㄥ崟鏍¢獙澶辫触:", error);
-    // 灏濊瘯鑾峰彇鍏蜂綋鐨勯敊璇瓧娈�
-    if (error && error.errors) {
-      const firstError = error.errors[0];
-      if (firstError) {
-        uni.showToast({
-          title: firstError.message || '琛ㄥ崟鏍¢獙澶辫触锛岃妫�鏌ュ繀濉」',
-          icon: 'none'
-        });
-        return;
+  const isQuotationApproval = computed(() => Number(approveType.value) === 6);
+  const isPurchaseApproval = computed(() => Number(approveType.value) === 5);
+  const isDeliveryApproval = computed(() => Number(approveType.value) === 7);
+
+  const getProductOptions = () => {
+    getDept().then(res => {
+      productOptions.value = res.data.map(item => ({
+        value: item.deptId,
+        name: item.deptName,
+      }));
+    });
+  };
+  const getCurrentinfo = () => {
+    userStore.getInfo().then(res => {
+      form.value.approveDeptId = res.user.tenantId;
+      console.log(res.user.tenantId, "res.user.tenantId");
+    });
+  };
+
+  // 鏄剧ず鏃ユ湡閫夋嫨鍣�
+  const showDatePicker = () => {
+    showDate.value = true;
+  };
+
+  // 纭鏃ユ湡閫夋嫨
+  const onDateConfirm = e => {
+    form.value.approveTime = formatDateToYMD(e.value);
+    currentDate.value = formatDateToYMD(e.value);
+    showDate.value = false;
+  };
+
+  // 鏄剧ず璇峰亣寮�濮嬫椂闂撮�夋嫨鍣�
+  const showStartDatePicker = () => {
+    showStartDate.value = true;
+  };
+
+  // 纭璇峰亣寮�濮嬫椂闂撮�夋嫨
+  const onStartDateConfirm = e => {
+    form.value.startDate = formatDateToYMD(e.value);
+    showStartDate.value = false;
+  };
+
+  const showEndDatePicker = () => {
+    showEndDate.value = true;
+  };
+
+  // 纭璇峰亣缁撴潫鏃堕棿閫夋嫨
+  const onEndDateConfirm = e => {
+    form.value.endDate = formatDateToYMD(e.value);
+    showEndDate.value = false;
+  };
+
+  const fetchDetailData = async row => {
+    // 鎶ヤ环瀹℃壒
+    if (isQuotationApproval.value) {
+      const quotationNo = row?.approveReason;
+      if (quotationNo) {
+        quotationLoading.value = true;
+        getQuotationList({ quotationNo })
+          .then(res => {
+            const records = res?.data?.records || [];
+            currentQuotation.value = records[0] || {};
+          })
+          .finally(() => {
+            quotationLoading.value = false;
+          });
       }
     }
-    // 鏄剧ず閫氱敤閿欒淇℃伅
-    uni.showToast({
-      title: '琛ㄥ崟鏍¢獙澶辫触锛岃妫�鏌ュ繀濉」',
-      icon: 'none'
-    });
+
+    // 閲囪喘瀹℃壒
+    if (isPurchaseApproval.value) {
+      const purchaseContractNumber = row?.approveReason;
+      if (purchaseContractNumber) {
+        purchaseLoading.value = true;
+        getPurchaseByCode({ purchaseContractNumber })
+          .then(res => {
+            currentPurchase.value = res;
+          })
+          .catch(err => {
+            console.error("鏌ヨ閲囪喘璇︽儏澶辫触:", err);
+          })
+          .finally(() => {
+            purchaseLoading.value = false;
+          });
+      }
+    }
+
+    // 鍙戣揣瀹℃壒
+    if (isDeliveryApproval.value) {
+      const deliveryNo = row?.approveReason;
+      if (deliveryNo) {
+        deliveryLoading.value = true;
+        currentDelivery.value = {};
+        deliveryProductList.value = [];
+        getDeliveryDetailByShippingNo({ shippingNo: deliveryNo })
+          .then(res => {
+            const detailData = res?.data || res || {};
+            currentDelivery.value = detailData;
+            deliveryProductList.value =
+              detailData.shippingProductDetailDtoList || [];
+          })
+          .catch(err => {
+            console.error("鏌ヨ鍙戣揣璇︽儏澶辫触:", err);
+          })
+          .finally(() => {
+            deliveryLoading.value = false;
+          });
+      }
+    }
+  };
+
+  // 鐩戝惉瀹℃壒浜嬬敱鍙樺寲锛屽鏋滄槸鐗瑰畾瀹℃壒绫诲瀷鍒欏皾璇曡幏鍙栬鎯�
+  watch(
+    () => form.value.approveReason,
+    newVal => {
+      if (isInitialLoading.value) return;
+      if (
+        newVal &&
+        (isQuotationApproval.value ||
+          isPurchaseApproval.value ||
+          isDeliveryApproval.value)
+      ) {
+        // 寤惰繜涓�浼氬啀璇锋眰锛岄伩鍏嶈緭鍏ヨ繃绋嬩腑棰戠箒瑙﹀彂
+        debounceFetchDetail();
+      }
+    }
+  );
+
+  let timer = null;
+  const debounceFetchDetail = () => {
+    if (timer) clearTimeout(timer);
+    timer = setTimeout(() => {
+      fetchDetailData(form.value);
+    }, 800);
+  };
+
+  onMounted(async () => {
+    try {
+      getProductOptions();
+      form.value.approveUser = userStore.id;
+      form.value.approveUserName = userStore.nickName;
+      form.value.approveTime = getCurrentDate();
+      getCurrentinfo();
+      // 浠庢湰鍦板瓨鍌ㄨ幏鍙栧弬鏁�
+      operationType.value = uni.getStorageSync("operationType") || "add";
+      approveType.value = uni.getStorageSync("approveType") || 0;
+
+      // 濡傛灉鏄紪杈戞ā寮忥紝浠庢湰鍦板瓨鍌ㄨ幏鍙栨暟鎹�
+      if (operationType.value === "edit" || operationType.value === "detail") {
+        const storedData = uni.getStorageSync("invoiceLedgerEditRow");
+        if (storedData) {
+          const row = JSON.parse(storedData);
+          currentApproveStatus.value = row.approveStatus;
+
+          isInitialLoading.value = true;
+          approveProcessGetInfo({ id: row.approveId, approveReason: "1" })
+            .then(res => {
+              form.value = { ...res.data };
+              // 璁剧疆鍥剧墖鍒楄〃鏄剧ず
+              const fileData =
+                res.data.storageBlobVOS || res.data.commonFileList || [];
+              if (fileData.length > 0) {
+                form.value.storageBlobDTOS = fileData;
+              }
+              // 鑾峰彇棰濆璇︽儏
+              fetchDetailData(res.data);
+            })
+            .finally(() => {
+              // 寤惰繜涓�浼氶噸缃紝纭繚 watch 涓嶄細琚Е鍙�
+              setTimeout(() => {
+                isInitialLoading.value = false;
+              }, 100);
+            });
+        }
+      }
+    } catch (error) {
+      console.error("鑾峰彇鏁版嵁澶辫触:", error);
+    }
   });
-};
 
-// 澶勭悊鑱旂郴浜洪�夋嫨缁撴灉
-const handleSelectContact = (data) => {
-  const { stepIndex, contact } = data;
-  // 灏嗛�変腑鐨勮仈绯讳汉璁剧疆涓哄搴斿鎵规楠ょ殑瀹℃壒浜�
-  approverNodes.value[stepIndex].userId = contact.userId;
-  approverNodes.value[stepIndex].nickName = contact.nickName;
-};
+  onUnmounted(() => {});
 
-const addApprover = (stepIndex) => {
-  // 璺宠浆鍒拌仈绯讳汉閫夋嫨椤甸潰
-  uni.setStorageSync('stepIndex', stepIndex);
-  uni.navigateTo({
-    url: "/pages/cooperativeOffice/collaborativeApproval/contactSelect"
-  });
-};
-
-const addApprovalStep = () => {
-  // 娣诲姞鏂扮殑瀹℃壒姝ラ
-  approverNodes.value.push({ userId: null, nickName: null });
-};
-
-const removeApprover = (stepIndex) => {
-  // 绉婚櫎瀹℃壒浜�
-  approverNodes.value[stepIndex].userId = null;
-  approverNodes.value[stepIndex].nickName = null;
-};
-
-const removeApprovalStep = (stepIndex) => {
-  // 纭繚鑷冲皯淇濈暀涓�涓鎵规楠�
-  if (approverNodes.value.length > 1) {
-    approverNodes.value.splice(stepIndex, 1);
-  } else {
-    uni.showToast({
-      title: '鑷冲皯闇�瑕佷竴涓鎵规楠�',
-      icon: 'none'
+  const onConfirm = item => {
+    // 璁剧疆閫変腑鐨勯儴闂�
+    form.value.approveDeptName = item.name;
+    // 纭繚璁剧疆鐨勬槸瀛楃涓茬被鍨嬬殑閮ㄩ棬ID
+    form.value.approveDeptId = String(item.value || "");
+    console.log("閮ㄩ棬閫夋嫨鍚庣殑鍊�:", {
+      approveDeptId: form.value.approveDeptId,
+      approveDeptName: form.value.approveDeptName,
     });
+    showPicker.value = false;
+  };
+
+  const goBack = () => {
+    // 娓呴櫎鏈湴瀛樺偍鐨勬暟鎹�
+    uni.removeStorageSync("operationType");
+    uni.removeStorageSync("invoiceLedgerEditRow");
+    uni.removeStorageSync("approveType");
+    uni.navigateBack();
+  };
+
+  const submitForm = () => {
+    // 鎵嬪姩妫�鏌ュ繀濉瓧娈碉紝闃叉鍥犳暟鎹被鍨嬮棶棰樺鑷寸殑鏍¢獙澶辫触
+    if (!form.value.approveReason || !form.value.approveReason.trim()) {
+      showToast("璇疯緭鍏ョ敵璇蜂簨鐢�");
+      return;
+    }
+
+    if (
+      !form.value.approveDeptId ||
+      String(form.value.approveDeptId).trim() === ""
+    ) {
+      showToast("璇烽�夋嫨鐢宠閮ㄩ棬");
+      return;
+    }
+
+    if (!form.value.approveTime) {
+      showToast("璇烽�夋嫨鐢宠鏃ユ湡");
+      return;
+    }
+
+    formRef.value
+      .validate()
+      .then(valid => {
+        if (valid) {
+          // 琛ㄥ崟鏍¢獙閫氳繃锛屽彲浠ユ彁浜ゆ暟鎹�
+          form.value.approveType = approveType.value;
+          form.value.approveDeptId = Number(form.value.approveDeptId);
+
+          if (operationType.value === "add" || currentApproveStatus.value == 3) {
+            approveProcessAdd(form.value).then(res => {
+              showToast("鎻愪氦鎴愬姛");
+              goBack();
+            });
+          } else {
+            approveProcessUpdate(form.value).then(res => {
+              showToast("鎻愪氦鎴愬姛");
+              goBack();
+            });
+          }
+        }
+      })
+      .catch(error => {
+        console.error("琛ㄥ崟鏍¢獙澶辫触:", error);
+        // 灏濊瘯鑾峰彇鍏蜂綋鐨勯敊璇瓧娈�
+        if (error && error.errors) {
+          const firstError = error.errors[0];
+          if (firstError) {
+            uni.showToast({
+              title: firstError.message || "琛ㄥ崟鏍¢獙澶辫触锛岃妫�鏌ュ繀濉」",
+              icon: "none",
+            });
+            return;
+          }
+        }
+        // 鏄剧ず閫氱敤閿欒淇℃伅
+        uni.showToast({
+          title: "琛ㄥ崟鏍¢獙澶辫触锛岃妫�鏌ュ繀濉」",
+          icon: "none",
+        });
+      });
+  };
+
+  // 鑾峰彇褰撳墠鏃ユ湡骞舵牸寮忓寲涓� YYYY-MM-DD
+  function getCurrentDate() {
+    const today = new Date();
+    const year = today.getFullYear();
+    const month = String(today.getMonth() + 1).padStart(2, "0"); // 鏈堜唤浠�0寮�濮�
+    const day = String(today.getDate()).padStart(2, "0");
+    return `${year}-${month}-${day}`;
   }
-};
-// 鏄剧ず鏃ユ湡閫夋嫨鍣�
-const showDatePicker = () => {
-	showDate.value = true
-}
-
-// 纭鏃ユ湡閫夋嫨
-const onDateConfirm = (e) => {
-  form.value.approveTime = formatDateToYMD(e.value)
-	currentDate.value = formatDateToYMD(e.value)
-	showDate.value = false;
-}
-
-// 鏄剧ず璇峰亣寮�濮嬫椂闂撮�夋嫨鍣�
-const showStartDatePicker = () => {
-	showStartDate.value = true
-}
-
-// 纭璇峰亣寮�濮嬫椂闂撮�夋嫨
-const onStartDateConfirm = (e) => {
-  form.value.startDate = formatDateToYMD(e.value)
-	showStartDate.value = false
-}
-
-const showEndDatePicker = () => {
-	showEndDate.value = true
-}
-
-// 纭璇峰亣缁撴潫鏃堕棿閫夋嫨
-const onEndDateConfirm = (e) => {
-  form.value.endDate = formatDateToYMD(e.value)
-	showEndDate.value = false
-}
-
-// 鑾峰彇褰撳墠鏃ユ湡骞舵牸寮忓寲涓� YYYY-MM-DD
-function getCurrentDate() {
-	const today = new Date();
-	const year = today.getFullYear();
-	const month = String(today.getMonth() + 1).padStart(2, "0"); // 鏈堜唤浠�0寮�濮�
-	const day = String(today.getDate()).padStart(2, "0");
-	return `${year}-${month}-${day}`;
-}
-
 </script>
 
 <style scoped lang="scss">
-@import '@/static/scss/form-common.scss';
-
-.approval-process {
-  background: #fff;
-  margin: 16px;
-  border-radius: 16px;
-  padding: 16px;
-  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
-}
-
-.approval-header {
-  margin-bottom: 16px;
-}
-
-.approval-title {
-  font-size: 16px;
-  font-weight: 600;
-  color: #333;
-  display: block;
-  margin-bottom: 4px;
-}
-
-.approval-desc {
-  font-size: 12px;
-  color: #999;
-}
-
-/* 鏍峰紡澧炲己涓衡�滅畝娲佸皬鍦嗗湀椋庢牸鈥� */
-.approval-steps {
-  padding-left: 22px;
-  position: relative;
-  
-  &::before {
-    content: '';
-    position: absolute;
-    left: 11px;
-    top: 40px;
-    bottom: 40px;
-    width: 2px;
-    background: linear-gradient(to bottom, #e6f7ff 0%, #bae7ff 50%, #91d5ff 100%);
-    border-radius: 1px;
+  @import "@/static/scss/form-common.scss";
+  .account-detail {
+    background-color: #fff;
   }
-}
-
-.approval-step {
-  position: relative;
-  margin-bottom: 24px;
-  
-  &::before {
-    content: '';
-    position: absolute;
-    left: -18px;
-    top: 14px; // 浠� 8px 璋冩暣涓� 14px锛屼笌鏂囧瓧涓績瀵归綈
-    width: 12px;
-    height: 12px;
+  .footer-btns {
+    position: fixed;
+    left: 0;
+    right: 0;
+    bottom: 0;
     background: #fff;
-    border: 3px solid #006cfb;
-    border-radius: 50%;
-    z-index: 2;
-    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
+    padding: 0.75rem 0;
+    box-shadow: 0 -0.125rem 0.5rem rgba(0, 0, 0, 0.05);
+    z-index: 1000;
   }
-}
 
-.step-title {
-	top: 12px;
-  margin-bottom: 12px;
-  position: relative;
-	margin-left: 6px;
-}
-
-.step-title text {
-  font-size: 14px;
-  color: #666;
-  background: #f0f0f0;
-  padding: 4px 12px;
-  border-radius: 12px;
-  position: relative;
-  line-height: 1.4; // 纭繚鏂囧瓧琛岄珮涓�鑷�
-}
-
-.approver-item {
-  display: flex;
-  align-items: center;
-  background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
-  border-radius: 16px;
-  padding: 16px;
-  gap: 12px;
-  position: relative;
-  border: 1px solid #e6f7ff;
-  box-shadow: 0 4px 12px rgba(0, 108, 251, 0.08);
-  transition: all 0.3s ease;
-}
-
-.approver-avatar {
-  width: 48px;
-  height: 48px;
-  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-  border-radius: 50%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  position: relative;
-  box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
-}
-
-.avatar-text {
-  color: #fff;
-  font-size: 18px;
-  font-weight: 600;
-  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
-}
-
-.approver-info {
-  flex: 1;
-  position: relative;
-}
-
-.approver-name {
-  display: block;
-  font-size: 16px;
-  color: #333;
-  font-weight: 500;
-  position: relative;
-}
-
-.approver-dept {
-  font-size: 12px;
-  color: #999;
-  background: rgba(0, 108, 251, 0.05);
-  padding: 2px 8px;
-  border-radius: 8px;
-  display: inline-block;
-  position: relative;
-  
-  &::before {
-    content: '';
-    position: absolute;
-    left: 4px;
-    top: 50%;
-    transform: translateY(-50%);
-    width: 2px;
-    height: 2px;
-    background: #006cfb;
-    border-radius: 50%;
+  .cancel-btn {
+    font-weight: 400;
+    font-size: 1rem;
+    color: #ffffff;
+    width: 6.375rem;
+    background: #c7c9cc;
+    box-shadow: 0 0.25rem 0.625rem 0 rgba(3, 88, 185, 0.2);
+    border-radius: 2.5rem 2.5rem 2.5rem 2.5rem;
   }
-}
 
-.delete-approver-btn {
-  font-size: 16px;
-  color: #ff4d4f;
-  background: linear-gradient(135deg, rgba(255, 77, 79, 0.1) 0%, rgba(255, 77, 79, 0.05) 100%);
-  width: 28px;
-  height: 28px;
-  border-radius: 50%;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  transition: all 0.3s ease;
-  position: relative;
-}
-
-.add-approver-btn {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  background: linear-gradient(135deg, #f0f8ff 0%, #e6f7ff 100%);
-  border: 2px dashed #006cfb;
-  border-radius: 16px;
-  padding: 20px;
-  color: #006cfb;
-  font-size: 14px;
-  position: relative;
-  transition: all 0.3s ease;
-  
-  &::before {
-    content: '';
-    position: absolute;
-    left: 50%;
-    top: 50%;
-    transform: translate(-50%, -50%);
-    width: 32px;
-    height: 32px;
-    border: 2px solid #006cfb;
-    border-radius: 50%;
-    opacity: 0;
-    transition: all 0.3s ease;
+  .save-btn {
+    font-weight: 400;
+    font-size: 1rem;
+    color: #ffffff;
+    width: 14rem;
+    background: linear-gradient(140deg, #00baff 0%, #006cfb 100%);
+    box-shadow: 0 0.25rem 0.625rem 0 rgba(3, 88, 185, 0.2);
+    border-radius: 2.5rem 2.5rem 2.5rem 2.5rem;
   }
-}
-
-.delete-step-btn {
-  color: #ff4d4f;
-  font-size: 12px;
-  background: linear-gradient(135deg, rgba(255, 77, 79, 0.1) 0%, rgba(255, 77, 79, 0.05) 100%);
-  padding: 6px 12px;
-  border-radius: 12px;
-  display: inline-block;
-  position: relative;
-  transition: all 0.3s ease;
-  
-  &::before {
-    content: '';
-    position: absolute;
-    left: 6px;
-    top: 50%;
-    transform: translateY(-50%);
-    width: 4px;
-    height: 4px;
-    background: #ff4d4f;
-    border-radius: 50%;
-  }
-}
-
-.step-line {
-  display: none; // 闅愯棌鍘熸潵鐨勭嚎鏉★紝浣跨敤浼厓绱犱唬鏇�
-}
-
-.add-step-btn {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-.footer-btns {
-	position: fixed;
-	left: 0;
-	right: 0;
-	bottom: 0;
-	background: #fff;
-	display: flex;
-	justify-content: space-around;
-	align-items: center;
-	padding: 0.75rem 0;
-	box-shadow: 0 -0.125rem 0.5rem rgba(0,0,0,0.05);
-	z-index: 1000;
-}
-
-.cancel-btn {
-	font-weight: 400;
-	font-size: 1rem;
-	color: #FFFFFF;
-	width: 6.375rem;
-	background: #C7C9CC;
-	box-shadow: 0 0.25rem 0.625rem 0 rgba(3,88,185,0.2);
-	border-radius: 2.5rem 2.5rem 2.5rem 2.5rem;
-}
-
-.save-btn {
-	font-weight: 400;
-	font-size: 1rem;
-	color: #FFFFFF;
-	width: 14rem;
-	background: linear-gradient( 140deg, #00BAFF 0%, #006CFB 100%);
-	box-shadow: 0 0.25rem 0.625rem 0 rgba(3,88,185,0.2);
-	border-radius: 2.5rem 2.5rem 2.5rem 2.5rem;
-}
-
-// 鍔ㄧ敾瀹氫箟
-@keyframes pulse {
-  0% {
-    transform: scale(1);
-    opacity: 1;
-  }
-  50% {
-    transform: scale(1.2);
-    opacity: 0.7;
-  }
-  100% {
-    transform: scale(1);
-    opacity: 1;
-  }
-}
-
-@keyframes rotate {
-  0% {
-    transform: rotate(0deg);
-  }
-  100% {
-    transform: rotate(360deg);
-  }
-}
-
-@keyframes ripple {
-  0% {
-    transform: translate(-50%, -50%) scale(0.8);
-    opacity: 1;
-  }
-  100% {
-    transform: translate(-50%, -50%) scale(1.6);
-    opacity: 0;
-  }
-}
-
-/* 濡傛灉宸叉湁 .step-line锛岃繖閲屾洿绮惧噯瀹氫綅鍒板乏渚т笌灏忓渾鐐瑰榻� */
-.step-line {
-  position: absolute;
-  left: 4px;
-  top: 48px;
-  width: 2px;
-  height: calc(100% - 48px);
-  background: #E5E7EB;
-}
-
-.approver-container {
-  display: flex;
-  align-items: center;
-  background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
-  border-radius: 16px;
-  gap: 12px;
-  padding: 10px 0;
-  background: transparent;
-  border: none;
-  box-shadow: none;
-}
-
-.approver-item {
-  display: flex;
-  align-items: center;
-  gap: 12px;
-  padding: 8px 10px;
-  background: transparent;
-  border: none;
-  box-shadow: none;
-  border-radius: 0;
-}
-
-.approver-avatar {
-  position: relative;
-  width: 40px;
-  height: 40px;
-  border-radius: 50%;
-  background: #F3F4F6;
-  border: 2px solid #E5E7EB;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  animation: none; /* 绂佺敤鏃嬭浆绛夊姩鐢伙紝鍥炲綊绠�娲� */
-}
-
-.avatar-text {
-  font-size: 14px;
-  color: #374151;
-  font-weight: 600;
-}
-
-.add-approver-btn {
-  display: flex;
-  align-items: center;
-  gap: 8px;
-  background: transparent;
-  border: none;
-  box-shadow: none;
-  padding: 0;
-}
-
-.add-approver-btn .add-circle {
-  width: 40px;
-  height: 40px;
-  border: 2px dashed #A0AEC0;
-  border-radius: 50%;
-  color: #6B7280;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  font-size: 22px;
-  line-height: 1;
-}
-
-.add-approver-btn .add-label {
-  color: #3B82F6;
-  font-size: 14px;
-}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3