From 3b29fb2c44c88a7caadf0e3d410fa16ed0abc804 Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Mon, 12 Jan 2026 15:12:52 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 uniapps/work-wx/src/pages.json                             |   19 +
 uniapps/work-wx/src/store/modules/app/index.js             |    1 
 uniapps/work-wx/src/subPackages/deviceRegistration/add.vue |  177 ++++++++++++++++-
 uniapps/work-wx/src/subPackages/flightApplication/add.vue  |  189 ++++++++++--------
 uniapps/work-wx/src/pages/page/index.vue                   |  164 ++++++++++------
 uniapps/work-wx/src/pages/legalPolicy/index.vue            |   10 
 6 files changed, 402 insertions(+), 158 deletions(-)

diff --git a/uniapps/work-wx/src/pages.json b/uniapps/work-wx/src/pages.json
index 0a81c22..ee421ad 100644
--- a/uniapps/work-wx/src/pages.json
+++ b/uniapps/work-wx/src/pages.json
@@ -56,6 +56,7 @@
 						"navigationStyle": "custom"
 					}
 				},
+				
 				{
 					"path": "airspaceInformation/index",
 					"style": {
@@ -69,6 +70,24 @@
 					}
 				},
 				{
+					"path": "flightApplication/add",
+					"style": {
+						"navigationBarTitleText": "飞行申请"
+					}
+				},
+				{
+					"path": "deviceRegistration/add",
+					"style": {
+						"navigationBarTitleText": "飞行器注册"
+					}
+				},
+				{
+					"path": "regulationsDetail/details",
+					"style": {
+						"navigationBarTitleText": "法律政策详情"
+					}
+				},
+				{
 					"path": "workDetail/mapWork/index",
 					"style": {
 						"navigationBarTitleText": "地图展示",
diff --git a/uniapps/work-wx/src/pages/legalPolicy/index.vue b/uniapps/work-wx/src/pages/legalPolicy/index.vue
index fbea60a..486ee56 100644
--- a/uniapps/work-wx/src/pages/legalPolicy/index.vue
+++ b/uniapps/work-wx/src/pages/legalPolicy/index.vue
@@ -6,7 +6,7 @@
       <u-tabs :list="tabs" @click="tabClick"></u-tabs>
     </view>
     <view class="content">
-      <view class="card" v-for="(item, index) in announcementList" :key="index">
+      <view class="card" v-for="(item, index) in announcementList" :key="index" @click="toRegulationsDetail(item)">
         <view class="left">
           <u-image :src="docSvg" mode="aspectFill" :width="30" :height="36"></u-image>
         </view>
@@ -75,6 +75,14 @@
     })
   }
 }
+// 跳转到法律政策详情页
+function toRegulationsDetail(item) {
+  uni.navigateTo({
+    url: '/subPackages/regulationsDetail/details?id=' + item.noticeId+'&type=2',
+  })
+}
+
+
 
 onMounted(() => {
   getSysNoticeList()
diff --git a/uniapps/work-wx/src/pages/page/index.vue b/uniapps/work-wx/src/pages/page/index.vue
index f714ca4..29b4624 100644
--- a/uniapps/work-wx/src/pages/page/index.vue
+++ b/uniapps/work-wx/src/pages/page/index.vue
@@ -5,7 +5,6 @@
             :keyName="'image'"
             :height="200"
             :indicator="true"
-            @change="change"
     ></u-swiper>
     <u-grid :col="4" :border="false" class="grid" @click="gridClick">
         <u-grid-item v-for="(baseListItem,baseListIndex) in baseList" :key="baseListIndex">
@@ -13,30 +12,55 @@
             <text class="grid-text">{{baseListItem.title}}</text>
         </u-grid-item>
     </u-grid>
-    <view class="tabs-container">
-      <u-tabs :list="tabs" @click="tabClick">
-        <template #right>
-              <view
-                  style="padding-left: 4px;"
-                  @tap="$u.toast('插槽被点击')"
-              >
-                  更多
-              </view>
-          </template>
-      </u-tabs>
-    </view>
     <view class="content">
-      <view class="card" v-for="(item,index) in announcementList" :key="index">
-        <view class="left">
-          <u-image :src="docSvg" :width="30" :height="36"></u-image>
+      <view>
+        <view class="title">空域信息</view>
+        <view class="card" v-for="(item,index) in announcementList" :key="index">
+          <view class="left">
+            <u-image :src="docSvg" :width="30" :height="36"></u-image>
+          </view>
+          <view class="right" @click.stop="airspaceClick(item)">
+            <view class="r-top">{{ item.title }}</view>
+            <view class="r-middle">{{ item.description || '暂无' }}</view>
+            <view class="r-bottom">
+              <view>{{ item.time }}</view>
+              <!-- <view>{{ item.num || 0 }}</view>
+              <view>{{ item.like || 0 }}</view> -->
+            </view>
+          </view>
         </view>
-        <view class="right">
-          <view class="r-top">{{ item.title }}</view>
-          <view class="r-middle">{{ item.description || '暂无' }}</view>
-          <view class="r-bottom">
-            <view>{{ item.time }}</view>
-            <!-- <view>{{ item.num || 0 }}</view>
-            <view>{{ item.like || 0 }}</view> -->
+      </view>
+      <view>
+        <view class="title">法律法规</view>
+        <view class="card" v-for="(item,index) in regulationsList" :key="index">
+          <view class="left">
+            <u-image :src="docSvg" :width="30" :height="36"></u-image>
+          </view>
+          <view class="right" @click.stop="toRegulationsDetail(item)">
+            <view class="r-top">{{ item.title }}</view>
+            <view class="r-middle">{{ item.description || '暂无' }}</view>
+            <view class="r-bottom">
+              <view>{{ item.time }}</view>
+              <!-- <view>{{ item.num || 0 }}</view>
+              <view>{{ item.like || 0 }}</view> -->
+            </view>
+          </view>
+        </view>
+      </view>
+      <view>
+        <view class="title">政策制度</view>
+        <view class="card" v-for="(item,index) in policyList" :key="index">
+          <view class="left">
+            <u-image :src="docSvg" :width="30" :height="36"></u-image>
+          </view>
+          <view class="right" @click.stop="policiesClick(item)">
+            <view class="r-top">{{ item.title }}</view>
+            <view class="r-middle">{{ item.description || '暂无' }}</view>
+            <view class="r-bottom">
+              <view>{{ item.time }}</view>
+              <!-- <view>{{ item.num || 0 }}</view>
+              <view>{{ item.like || 0 }}</view> -->
+            </view>
           </view>
         </view>
       </view>
@@ -63,22 +87,9 @@
   })
 }
 
-const change = (index) => {
-  console.log('轮播图切换到第', index + 1, '张');
-}
-
-const click = (...args) => {
-  // 处理轮播图点击事件
-  if (args.length >= 2) {
-    const [item, index] = args;
-    console.log('点击了轮播图第', index + 1, '张', item);
-  }
-  // 处理网格组件点击事件
-  else if (args.length === 1 && typeof args[0] === 'object') {
-    const { index, item } = args[0];
-    console.log('点击了网格第', index + 1, '项', item);
-  }
-}
+// const change = (index) => {
+//   console.log('轮播图切换到第', index + 1, '张');
+// }
 
 const baseList = ref([
     {
@@ -99,11 +110,6 @@
     },
 ]);
 
-const tabs = ref([
-    { name: '空域信息' },
-    { name: '法律法规' },
-    { name: '政策制度' },
-]);
 
 const announcementList = ref([]);
 function gridClick(index) {
@@ -132,7 +138,7 @@
       current: 1,
       size: 10,
     })
-    announcementList.value = res.data.data.records.map(item => ({
+    announcementList.value = res.data.data.records.slice(0, 3).map(item => ({
       ...item,
       title: item.airspaceName,
       description: item.remark,
@@ -150,6 +156,8 @@
 }
 
   // 获取通知公告列表
+  const policyList = ref([]); // 政策制度
+  const regulationsList = ref([]); // 法律法规
   async function getSysNoticeList(val) {
     try {
       const res = await sysNoticePageInfoApi({
@@ -157,14 +165,26 @@
         size: 10,
         noticeType: val,
       })
-      announcementList.value = res.data.data.records.map(item => ({
-        ...item,
-        title: item.noticeTitle,
-        description: item.remark,
-        time: item.pubDate,
-        num: item.num,
-        like: item.like,
-      }))
+      // 只需要取前3条 公告
+      if (val === 1) {
+        regulationsList.value = res.data.data.records.slice(0, 3).map(item => ({
+          ...item,
+          title: item.noticeTitle,
+          description: item.remark,
+          time: item.pubDate,
+          num: item.num,
+          like: item.like,
+        }))
+      } else if (val === 2) {
+        policyList.value = res.data.data.records.slice(0, 3).map(item => ({
+          ...item,
+          title: item.noticeTitle,
+          description: item.remark,
+          time: item.pubDate,
+          num: item.num,
+          like: item.like,
+        }))
+      }
     } catch (error) {
       uni.showToast({
         title: error.message,
@@ -173,20 +193,29 @@
       })
     }
   }
-
-function tabClick(value) {
-  announcementList.value = []
-  if (value.index === 0) {
-    getFlightAirspaceList()
-  } else if (value.index === 1) {
-    getSysNoticeList(2)
-  } else if (value.index === 2) {
-    getSysNoticeList(1)
+  // 跳转到空域信息详情页
+  function airspaceClick(item) {
+    uni.navigateTo({
+      url: '/subPackages/regulationsDetail/details?id=' + item.id,
+    })
   }
-}
+  // 跳转到法律政策详情页
+  function toRegulationsDetail(item) {
+    uni.navigateTo({
+      url: '/subPackages/regulationsDetail/details?id=' + item.noticeId,
+    })
+  }
+  // 跳转到政策制度详情页
+  function policiesClick(item) {
+    uni.navigateTo({
+      url: '/subPackages/regulationsDetail/details?id=' + item.noticeId,
+    })
+  }
 
 onMounted(() => {
   getFlightAirspaceList()
+  getSysNoticeList(2)
+  getSysNoticeList(1)
 })
 </script>
 
@@ -217,6 +246,7 @@
     margin-top: 10px;
   }
   .content {
+    margin-top: 10px;
     width: 100%;
     height: 0;
     flex-grow: 1;
@@ -224,8 +254,16 @@
     flex-direction: column;
     background: #FFFFFF;
     padding: 0 40rpx 40rpx 40rpx;
+    border-radius: 12px 12px 6px 6px;
     overflow-y: auto;
     box-sizing: border-box;
+    .title {
+      padding: 40rpx 40rpx 0rpx 20rpx;
+      font-family: Source Han Sans CN, Source Han Sans CN;
+      font-weight: 500;
+      font-size: 14px;
+      color: #222324;
+    }
   }
   .card {
     font-family: Source Han Sans CN, Source Han Sans CN;
diff --git a/uniapps/work-wx/src/store/modules/app/index.js b/uniapps/work-wx/src/store/modules/app/index.js
index b77db8d..064366a 100644
--- a/uniapps/work-wx/src/store/modules/app/index.js
+++ b/uniapps/work-wx/src/store/modules/app/index.js
@@ -10,6 +10,7 @@
     theme: storage.get(THEME_KEY) || 'light',
     deviceUpdateKey: 0, //设备刷新key
     jobUpdateKey: 0, //任务刷新key
+    
   }),
   getters: {
     getSystemInfo (state) {
diff --git a/uniapps/work-wx/src/subPackages/deviceRegistration/add.vue b/uniapps/work-wx/src/subPackages/deviceRegistration/add.vue
index 00b50bb..a70969b 100644
--- a/uniapps/work-wx/src/subPackages/deviceRegistration/add.vue
+++ b/uniapps/work-wx/src/subPackages/deviceRegistration/add.vue
@@ -161,28 +161,51 @@
         <u-form-item
                 label="民用航空器登记证书"
                 labelWidth="300rpx"
-                prop="aircraftName"
+                prop="caacRegistrationCodeText"
                 :borderBottom="true"
                 ref="item1"
         >
             <u-input
-                    v-model="formParams.aircraftName"
+                    v-model="formParams.caacRegistrationCodeText"
                     border="none"
                     placeholder="请输入"
             ></u-input>
+            <template #right>
+                <u-upload
+                    @afterRead="afterReadFile"
+                    @delete="deletePic"
+                    name="6"
+                    multiple
+                    :maxCount="1"
+                >
+                    <view class="upload">上传文件</view>
+                </u-upload>
+            </template>
         </u-form-item>
         <u-form-item
                 label="飞行器照片"
                 labelWidth="200rpx"
-                prop="aircraftName"
+                prop="deviceImageText"
                 :borderBottom="true"
                 ref="item1"
         >
             <u-input
-                    v-model="formParams.aircraftName"
+                    v-model="formParams.deviceImageText"
                     border="none"
                     placeholder="请输入"
             ></u-input>
+            <template #right>
+                <u-upload
+                    @afterRead="afterReadImage"
+                    @delete="deletePic"
+                    name="6"
+                    multiple
+                    :maxCount="1"
+                    accept="image"
+                >
+                    <view class="upload">上传图片</view>
+                </u-upload>
+            </template>
         </u-form-item>
         <u-form-item
                 label="备注"
@@ -198,14 +221,14 @@
             ></u-input>
         </u-form-item>
         <u-button
+        class="submit-button-wrapper"
                 type="primary"
                 size="small"
                 @click="submitForm"
             >
                 提交
             </u-button>
-    </u-form>
-    <!-- 飞行器型号 -->
+            <!-- 飞行器型号 -->
     <u-picker
         :show="showType"
         :columns="[typeList]"
@@ -242,12 +265,11 @@
       @confirm="onPurchaseDate"
       @cancel="showPurchaseDate = false"
     />
-
-
+    </u-form>
 </view>
 </template>
 <script setup>
-import { aircraftInfoSaveApi } from '@/api/index'
+import { aircraftInfoSaveApi,uploadFileApi } from '@/api/index'
 import { ref, computed } from 'vue'
 import dayjs from 'dayjs'
 
@@ -270,7 +292,9 @@
     hasInsuranceText: '', // 是否有保险文本
     region: '', // 所属区域
     caacRegistrationCode: '', // 民用航空器登记证书
+    caacRegistrationCodeText: '', // 民用航空器登记证书文本
     deviceImage: '', // 飞行器照片
+    deviceImageText: '', // 飞行器照片文本
     remarks: '', // 备注
 })
 
@@ -372,6 +396,114 @@
   formParams.value.typeText = selected.label
   showType.value = false
 }
+// 提交文件
+function afterReadFile(event) {
+    // 获取上传的文件对象
+    const file = event.file;
+    console.log('上传的文件:', file);
+    
+    // 显示加载提示
+    uni.showLoading({
+        title: '上传中...'
+    });
+    
+    // 准备上传参数
+    const uploadParams = {
+        name: 'file', // 服务器端接收文件的字段名
+        file: file, // 传入文件对象
+        filePath: file.path || file.url, // 文件路径
+    };
+    
+    // 调用上传文件接口
+    uploadFileApi(uploadParams).then(res => {
+        uni.hideLoading();
+        
+        console.log('上传成功结果:', res);
+        
+        // 根据接口返回的数据结构处理结果
+        if (res.data && res.data.code === 200) {
+            // 假设接口返回的数据结构是 { url, fileName } 等
+            const uploadResult = res.data.data;
+            
+            // 更新表单数据,将上传结果展示在input内
+            formParams.value.caacRegistrationCodeText = uploadResult.fileName || uploadResult.url || '文件上传成功';
+            
+            // 可以将完整的上传信息保存到表单中,以便提交时使用
+            formParams.value.caacRegistrationCode= uploadResult.fileUrl || '文件上传成功';
+            
+            uni.showToast({
+                title: '上传成功',
+                icon: 'success'
+            });
+        } else {
+            uni.showToast({
+                title: res.msg || '上传失败',
+                icon: 'none'
+            });
+        }
+    }).catch(err => {
+        uni.hideLoading();
+        console.error('上传失败:', err);
+        uni.showToast({
+            title: '上传失败',
+            icon: 'none'
+        });
+    });
+}
+// 提交图片
+function afterReadImage(event) {
+    // 获取上传的文件对象
+    const file = event.file;
+    console.log('上传的文件:', file);
+    
+    // 显示加载提示
+    uni.showLoading({
+        title: '上传中...'
+    });
+    
+    // 准备上传参数
+    const uploadParams = {
+        name: 'file', // 服务器端接收文件的字段名
+        file: file, // 传入文件对象
+        filePath: file.path || file.url, // 文件路径
+    };
+    
+    // 调用上传文件接口
+    uploadFileApi(uploadParams).then(res => {
+        uni.hideLoading();
+        
+        console.log('上传成功结果:', res);
+        
+        // 根据接口返回的数据结构处理结果
+        if (res.data && res.data.code === 200) {
+            // 假设接口返回的数据结构是 { url, fileName } 等
+            const uploadResult = res.data.data;
+            
+            // 更新表单数据,将上传结果展示在input内
+            formParams.value.deviceImageText = uploadResult.fileName || uploadResult.url || '文件上传成功';
+            
+            // 可以将完整的上传信息保存到表单中,以便提交时使用
+            formParams.value.deviceImage= uploadResult.fileUrl || '文件上传成功';
+            
+            uni.showToast({
+                title: '上传成功',
+                icon: 'success'
+            });
+        } else {
+            uni.showToast({
+                title: res.msg || '上传失败',
+                icon: 'none'
+            });
+        }
+    }).catch(err => {
+        uni.hideLoading();
+        console.error('上传失败:', err);
+        uni.showToast({
+            title: '上传失败',
+            icon: 'none'
+        });
+    });
+}
 // 提交表单
 const submitForm = async () => {
     try {
@@ -402,7 +534,12 @@
 </script>
 <style scoped lang="scss">
 .deviceRegistration {
-    padding: 24rpx;
+    width: 100%;
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+    // padding: 24rpx;
+    
     .select-wrapper {
         position: relative;
         width: 100%;
@@ -417,6 +554,26 @@
             pointer-events: none;
         }
     }
+
+    .upload {
+        font-family: Source Han Sans CN, Source Han Sans CN;
+        font-weight: 400;
+        font-size: 15px;
+        color: #1D6FE9;
+    }
+
+    :deep(.u-form) {
+        flex: 1;
+        display: flex;
+        flex-direction: column;
+        overflow-y: auto;
+        box-sizing: border-box;
+        padding: 24rpx;
+    }
+
+    .submit-button-wrapper {
+        padding: 28rpx;
+    }
     
     :deep(.u-form-item) {
         margin-bottom: 40rpx;
diff --git a/uniapps/work-wx/src/subPackages/flightApplication/add.vue b/uniapps/work-wx/src/subPackages/flightApplication/add.vue
index eaf89a0..2512e98 100644
--- a/uniapps/work-wx/src/subPackages/flightApplication/add.vue
+++ b/uniapps/work-wx/src/subPackages/flightApplication/add.vue
@@ -81,15 +81,26 @@
             </template>
         </u-form-item>
         <u-form-item
-                label="飞行活动日期"
-                labelWidth="200rpx"
-                prop="timeRange"
+                label="飞行活动开始日期"
+                labelWidth="260rpx"
+                prop="flightStartTime"
                 :borderBottom="true"
                 ref="item1"
-                @click="isShowTimeRange = true"
+                @click="isShowStartTime = true"
                 required
         >
-            <u-input v-model="formParams.timeRange" border="none" placeholder="请选择日期" suffixIcon="calendar"></u-input>
+            <u-input v-model="formParams.flightStartTime" border="none" placeholder="请选择日期" suffixIcon="calendar"></u-input>
+        </u-form-item>
+         <u-form-item
+                label="飞行活动结束日期"
+                labelWidth="260rpx"
+                prop="flightEndTime"
+                :borderBottom="true"
+                ref="item1"
+                @click="isShowEndTime = true"
+                required
+        >
+            <u-input v-model="formParams.flightEndTime" border="none" placeholder="请选择日期" suffixIcon="calendar"></u-input>
         </u-form-item>
         
         <u-form-item
@@ -161,7 +172,7 @@
                 :borderBottom="true"
                 ref="item1"
         >
-            <u-input v-model="formParams.tempAirspaceApproval" border="none" readonly placeholder="(建议文件大小100M内,仅支持pdf、jpg、jpeg、png等格式)"></u-input>
+            <u-input v-model="formParams.tempAirspaceApprovalText" border="none" readonly placeholder="(建议文件大小100M内,仅支持pdf、jpg、jpeg、png等格式)"></u-input>
             <template #right>
                 <u-upload
                     @afterRead="afterRead"
@@ -189,7 +200,7 @@
                     placeholder="请输入"
             ></u-input>
         </u-form-item>
-         <view>飞行器/飞手</view>
+         <view class="title form-title">飞行器/飞手</view>
         <u-form-item
                 label="飞行器"
                 labelWidth="230rpx"
@@ -234,7 +245,7 @@
                 ></up-icon>
             </template>
         </u-form-item>
-        <view>空域/航线/场点</view>
+        <view class="title form-title">空域/航线/场点</view>
         <u-form-item
                 label="空域"
                 labelWidth="230rpx"
@@ -264,7 +275,7 @@
                 :borderBottom="true"
                 ref="item2"
                 required
-                @click="isShowRouteInfo = true"
+                @click="isShowFlightRouteInfo = true"
         >
             <u-input
                 v-model="formParams.routeText"
@@ -279,15 +290,14 @@
                 ></up-icon>
             </template>
         </u-form-item>
-        <u-button
+        <u-button class="submit-button-wrapper"
                 type="primary"
                 size="small"
                 @click="submitForm"
             >
                 提交
             </u-button>
-    </u-form>
-    <!-- 飞任务类型 -->
+            <!-- 飞任务类型 -->
     <u-picker
         :show="isShowFlightTaskType"
         :columns="[actionsFlightTaskType]"
@@ -319,7 +329,22 @@
         @confirm="onPickerPlanType"
         @cancel="isShowPlanType = false"
     />
-    <u-calendar :show="isShowTimeRange" mode="range" @confirm="onConfirmTimeRange" @close="isShowTimeRange = false" :close-on-click-overlay="true"></u-calendar>
+    <up-datetime-picker
+            :show="isShowStartTime"
+            v-model="startTime"
+            mode="datetime"
+            @confirm="onConfirmStartTime"
+             @cancel="isShowStartTime = false"
+        ></up-datetime-picker>
+        <up-datetime-picker
+            :show="isShowEndTime"
+            v-model="endTime"
+            mode="datetime"
+            @confirm="onConfirmEndTime"
+            @cancel="isShowEndTime = false"
+        ></up-datetime-picker>
+    <!-- <u-calendar :show="isShowTimeRange" mode="date" @confirm="onConfirmTimeRange" @close="isShowTimeRange = false" :close-on-click-overlay="true"></u-calendar> -->
+    <!-- <u-calendar :show="isShowTimeRange" mode="range" @confirm="onConfirmTimeRange" @close="isShowTimeRange = false" :close-on-click-overlay="true" :allow-same-day="true" :show-time="true" time-format="HH:mm:ss"></u-calendar> -->
     <!-- 飞行器 -->
      <u-picker
         :show="isShowAircraftInfo"
@@ -352,6 +377,8 @@
         @confirm="onPickerFlightRouteInfo"
         @cancel="isShowFlightRouteInfo = false"
     />
+    </u-form>
+    
 </view>
 </template>
 <script setup>
@@ -370,6 +397,7 @@
     flightMode: '', // 飞行方式
     flightModeText: '', // 飞行方式文本
     tempAirspaceApproval: '', // 临时空域批件
+    tempAirspaceApprovalText: '', // 临时空域批件文本
     planType: '', // 计划类型
     planTypeText: '', // 计划类型文本
     contactPerson: '', // 联系人
@@ -414,8 +442,11 @@
     undertakerPhone: [
         { required: true, message: '请输入承办人联系电话', trigger: 'blur' }
     ],
-    timeRange: [
-        { required: true, message: '请选择时间范围', trigger: 'change' }
+    startTime: [
+        { required: true, message: '请选择飞行活动开始时间', trigger: 'change' }
+    ],
+    endTime: [
+        { required: true, message: '请选择飞行活动结束时间', trigger: 'change' }
     ],
     spacecraftId: [
         { required: true, message: '请选择飞行器', trigger: 'change' }
@@ -519,60 +550,23 @@
   formParams.value.planTypeText = selected.label
   isShowPlanType.value = false
 }
-// 是否显示日期
-const isShowTimeRange = ref(false)
-// 确认时间范围
-const onConfirmTimeRange = (e) => {
-    // 尝试各种可能的 u-calendar range 模式返回格式
-    let startDate, endDate
-    
-    // 模式1:uView Plus 1.0+ u-calendar range 模式返回 { startDate, endDate }
-    if (e && e.startDate && e.endDate) {
-        startDate = e.startDate
-        endDate = e.endDate
-        console.log('Using format 1: { startDate, endDate }')
-    }
-    // 模式2:uView 2.x u-calendar range 模式返回 { value: [start, end] }
-    else if (e && e.value && Array.isArray(e.value) && e.value.length >= 2) {
-        startDate = e.value[0]
-        endDate = e.value[1]
-        console.log('Using format 2: { value: [start, end] }')
-    }
-    // 模式3:直接返回数组 [start, end]
-    else if (Array.isArray(e) && e.length >= 2) {
-        startDate = e[0]
-        endDate = e[1]
-        console.log('Using format 3: [start, end]')
-    }
-    // 模式4:其他可能的嵌套格式
-    else if (e && e.start && e.end) {
-        startDate = e.start
-        endDate = e.end
-        console.log('Using format 4: { start, end }')
-    }
-    // 模式5:检查是否有其他可能的日期字段
-    else if (e) {
-        console.log('Trying to find date fields in e:', e)
-        // 尝试提取任何可能的日期字段
-        const dateFields = ['start', 'end', 'startTime', 'endTime', 'begin', 'finish']
-        for (const field of dateFields) {
-            if (e[field]) {
-                console.log(`Found date field ${field}:`, e[field])
-            }
-        }
-    }
-    
-    if (startDate && endDate) {
-        // 格式化显示时间范围
-        formParams.value.timeRange = `${startDate} 至 ${endDate}`
-        formParams.value.flightStartTime = startDate
-        formParams.value.flightEndTime = endDate
-    } else {
-        console.error('Unable to extract valid date range from:', e)
-    }
-    
-    isShowTimeRange.value = false
+// 是否显示开始时间选择器
+const isShowStartTime = ref(false)
+// 是否显示结束时间选择器
+const isShowEndTime = ref(false)
+const startTime = ref(Date.now()); // 设置默认值为当前时间戳
+const endTime = ref(Date.now()); // 设置默认值为当前时间戳
+
+const onConfirmStartTime = (e) => {
+    formParams.value.flightStartTime = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss')
+    isShowStartTime.value = false
 }
+const onConfirmEndTime = (e) => {
+    formParams.value.flightEndTime = dayjs(e.value).format('YYYY-MM-DD HH:mm:ss')
+    isShowEndTime.value = false
+}
+
+
 
 // 获取飞行器信息
 const isShowAircraftInfo = ref(false)
@@ -642,6 +636,7 @@
         current: 1,
         size: 1000,
     }).then(res => {
+        console.log(res.data.data, '0000')
         flightRouteInfoList.value = res.data.data.records.map(item => ({
             label: item.name,
             value: item.id,
@@ -650,7 +645,7 @@
 }
 const onPickerFlightRouteInfo = (e) => {
   const selected = e.value[0]
-  formParams.value.routeIdouteId = selected.value
+  formParams.value.routeId = selected.value
   formParams.value.routeText = selected.label
   isShowFlightRouteInfo.value = false
 }
@@ -666,12 +661,15 @@
         title: '上传中...'
     });
     
-    // 调用上传文件接口
-    uploadFileApi({
+    // 准备上传参数
+    const uploadParams = {
+        name: 'file', // 服务器端接收文件的字段名
         file: file, // 传入文件对象
-        // 可以根据接口需要添加其他参数
-        type: 'tempAirspaceApproval' // 示例参数,表示上传的是临时空域批件
-    }).then(res => {
+        filePath: file.path || file.url, // 文件路径
+    };
+    
+    // 调用上传文件接口
+    uploadFileApi(uploadParams).then(res => {
         uni.hideLoading();
         
         console.log('上传成功结果:', res);
@@ -682,10 +680,10 @@
             const uploadResult = res.data.data;
             
             // 更新表单数据,将上传结果展示在input内
-            formParams.value.tempAirspaceApproval = uploadResult.fileName || uploadResult.url || '文件上传成功';
+            formParams.value.tempAirspaceApprovalText = uploadResult.fileName || uploadResult.url || '文件上传成功';
             
             // 可以将完整的上传信息保存到表单中,以便提交时使用
-            formParams.value.tempAirspaceApprovalFile = uploadResult;
+            formParams.value.tempAirspaceApproval = uploadResult.fileUrl || '文件上传成功';
             
             uni.showToast({
                 title: '上传成功',
@@ -709,9 +707,7 @@
 // 提交表单
 const submitForm = async () => {
   await formRef.value.validate()
-  if (!formRef.value.isValid) {
-    return
-  }
+  
   flightPlanSaveApi(formParams.value).then(res => {
     if (res.data.code === 200) {
       uni.showToast({
@@ -719,9 +715,10 @@
         icon: 'success',
         duration: 2000
       })
-      uni.navigateBack({
-        delta: 1
-      })
+      // 跳转申请列表页
+        uni.navigateTo({
+            url: '/subPackages/flightApplication/index',
+        })
     } else {
       uni.showToast({
         title: res.msg || '提交失败',
@@ -740,7 +737,21 @@
 </script>
 <style scoped lang="scss">
 .flightApplication-add {
-    padding: 24rpx;
+    width: 100%;
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+    .title {
+        font-family: Source Han Sans CN, Source Han Sans CN;
+        font-weight: 400;
+        font-size: 17px;
+        color: #222324;
+        padding-left: 24rpx;
+    }
+    .form-title {
+        margin-bottom: 24rpx;
+        padding-left: 0rpx !important;
+    }
     .select-wrapper {
         position: relative;
         width: 100%;
@@ -762,7 +773,17 @@
         font-size: 15px;
         color: #1D6FE9;
     }
-    
+     :deep(.u-form) {
+        flex: 1;
+        display: flex;
+        flex-direction: column;
+        overflow-y: auto;
+        box-sizing: border-box;
+        padding: 24rpx;
+    }
+     .submit-button-wrapper {
+        padding: 28rpx;
+    }
     :deep(.u-form-item) {
         margin-bottom: 40rpx;
         padding: 16rpx 24rpx 18rpx 24rpx;

--
Gitblit v1.9.3