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