吉安感知网项目-前端
chenyao
2026-01-15 2146fcbbab14adb938ffe3066c075be191624c43
feat:更新小程序
13 files modified
7 files deleted
628 ■■■■ changed files
uniapps/work-wx/src/api/index.js 2 ●●● patch | view | raw | blame | history
uniapps/work-wx/src/api/user/index.js 8 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/src/pages/equipmentManagement/index.vue 60 ●●●● patch | view | raw | blame | history
uniapps/work-wx/src/pages/legalPolicy/index.vue 79 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/src/pages/login/index.vue 4 ●●●● patch | view | raw | blame | history
uniapps/work-wx/src/pages/register/index.vue 16 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/src/pages/user/index.vue 89 ●●●● patch | view | raw | blame | history
uniapps/work-wx/src/static/images/user/default-header.png patch | view | raw | blame | history
uniapps/work-wx/src/static/images/user/default-header.svg 17 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/src/static/images/user/department.svg 10 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/src/static/images/user/droneLogo.svg 11 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/src/static/images/user/info.svg 21 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/src/static/images/user/password.svg 26 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/src/static/images/user/rightBtn.svg 9 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/src/static/images/user/userbg.svg 38 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/src/subPackages/deviceRegistration/add.vue 106 ●●●● patch | view | raw | blame | history
uniapps/work-wx/src/subPackages/flightApplication/index.vue 118 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/src/subPackages/regulationsDetail/details.vue 2 ●●● patch | view | raw | blame | history
uniapps/work-wx/src/subPackages/userDetail/infos/index.vue 5 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/src/subPackages/userDetail/password/index.vue 7 ●●●●● patch | view | raw | blame | history
uniapps/work-wx/src/api/index.js
@@ -106,4 +106,4 @@
    url: `/system/sys/SysRegionCode/allTree`,
    method: 'get'
  })
}
}
uniapps/work-wx/src/api/user/index.js
@@ -137,3 +137,11 @@
    data: data,
  });
};
// 验证码
export const registerSendCodeApi = (phone) => {
  return request({
    url: `/system/verificationCode/registerSendCode/${phone}`,
    method: 'get'
  })
}
uniapps/work-wx/src/pages/equipmentManagement/index.vue
@@ -1,19 +1,21 @@
<template>
  <view class="equipmentManagement">
    <u-search :bgColor="'white'" v-model="noticeTitle" :show-action="true" actionText="搜索" :animation="true" @custom="getEquipmentList"></u-search>
    <u-search :bgColor="'white'" v-model="noticeTitle" :show-action="true" actionText="搜索" :animation="true" @custom="handleSearch"></u-search>
    <view class="content">
      <view class="title">飞行设备</view>
      <view class="card" v-for="(item, index) in equipmentList" :key="index">
        <view class="left">
          <u-image :src="droneSvg" mode="aspectFill" :width="70" :height="90"></u-image>
      <u-list :style="{ height: 'calc(100vh - 160rpx)' }" @scrolltolower="scrolltolower" :lower-threshold="50">
        <view class="card" v-for="(item, index) in equipmentList" :key="index">
          <view class="left">
            <u-image :src="droneSvg" mode="aspectFill" :width="70" :height="90"></u-image>
          </view>
          <view class="right">
            <view class="name">设备名称:{{ item.name }}</view>
            <view class="txt">设备类型:{{ item.type }}</view>
            <view class="txt">设备型号:{{ item.type }}</view>
          <view class="txt">设备sn:{{ item.sn }}</view>
          </view>
        </view>
        <view class="right">
          <view class="name">设备名称:{{ item.name }}</view>
          <view class="txt">设备类型:{{ item.type }}</view>
          <view class="txt">设备型号:{{ item.type }}</view>
        <view class="txt">设备sn:{{ item.sn }}</view>
        </view>
      </view>
      </u-list>
    </view>
    <view class="add-btn" @click="addEquipment">
      <u-image :src="addSvg" mode="aspectFill" :width="60" :height="68"></u-image>
@@ -29,17 +31,31 @@
import { myDevicePageInfoApi, aircraftInfoPageInfoOfMyApi } from '@/api/index.js'
const equipmentList = ref([])
const noticeTitle = ref('')
const formParams = ref({
  current: 1,
  size: 10,
  model:'',
  name: '',
})
// 搜索处理
const handleSearch = () => {
  // 搜索时重置为第一页
  formParams.value.current = 1
  formParams.value.name = noticeTitle.value
  getEquipmentList()
}
// 设备列表
const getEquipmentList = async () => {
  try {
    const res = await aircraftInfoPageInfoOfMyApi({
      current: 1,
      size: 99,
      model:'',
      name: '',
    })
    equipmentList.value = res.data.data.records || []
    const res = await aircraftInfoPageInfoOfMyApi(formParams.value)
    const newData = res.data.data.records || []
    // 如果是第一页,直接替换数据;否则追加数据
    if (formParams.value.current === 1) {
      equipmentList.value = newData
    } else {
      equipmentList.value = equipmentList.value.concat(newData)
    }
  } catch (error) {
    console.error('获取设备列表失败:', error)
  }
@@ -61,6 +77,14 @@
    url: '/subPackages/deviceRegistration/add',
  })
}
function scrolltolower() {
  formParams.value.current++
  // 停止不刷新
  if (equipmentList.value.length < formParams.value.size) {
    return
  }
  getEquipmentList()
}
onMounted(() => {
  getEquipmentList()
})
uniapps/work-wx/src/pages/legalPolicy/index.vue
@@ -1,21 +1,23 @@
<template>
  <view class="legalPolicy">
    <!-- <u-navbar title="法律政策" @rightClick="rightClick" :autoBack="true"></u-navbar> -->
    <u-search :bgColor="'white'" v-model="noticeTitle" :show-action="true" actionText="搜索" :animation="true" @custom="getSysNoticeList"></u-search>
    <u-search :bgColor="'white'" v-model="noticeTitle" :show-action="true" actionText="搜索" :animation="true" @custom="handleSearch"></u-search>
    <view class="tabs-container">
      <u-tabs :list="tabs" @click="tabClick"></u-tabs>
    </view>
    <view class="content">
      <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>
      <u-list :style="{ height: 'calc(100vh - 160rpx)' }" @scrolltolower="scrolltolower" :lower-threshold="50">
        <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>
          <view class="right">
            <view class="r-top">{{ item.title }}</view>
            <view class="r-middle">{{ item.description || '暂无描述' }}</view>
            <view class="r-bottom">{{ item.time || '暂无' }}</view>
          </view>
        </view>
        <view class="right">
          <view class="r-top">{{ item.title }}</view>
          <view class="r-middle">{{ item.description || '暂无描述' }}</view>
          <view class="r-bottom">{{ item.time || '暂无' }}</view>
        </view>
      </view>
      </u-list>
    </view>
  </view>
</template>
@@ -36,30 +38,51 @@
  },
])
const currentTab = ref(2)
const formParams = ref({
  current: 1,
  size: 10,
  noticeType: 2,
  noticeTitle: noticeTitle.value,
})
const tabClick = (val) => {
  if (val.index === 0) {
     currentTab.value = 2
    getSysNoticeList()
     formParams.value.noticeType = 2
  } else {
    currentTab.value = 1
    getSysNoticeList()
  }
    formParams.value.noticeType = 1
  }
  formParams.value.current = 1
  announcementList.value = []
  getSysNoticeList()
}
const announcementList = ref()
// 搜索处理
const handleSearch = () => {
  // 搜索时重置为第一页
  formParams.value.current = 1
  formParams.value.noticeTitle = formParams.value.noticeTitle.trim()
  getSysNoticeList()
}
// 触底加载
function scrolltolower() {
  formParams.value.current++
  // 停止不刷新
  if (formParams.value.current > formParams.value.totalPages) {
    uni.showToast({
      title: '没有更多了',
      icon: 'none',
      duration: 2000,
    })
    return
  }
  getSysNoticeList()
}
// 获取通知公告列表
async function getSysNoticeList() {
  try {
    const res = await sysNoticePageInfoApi({
      current: 1,
      size: 10,
      noticeType: currentTab.value,
      noticeTitle: noticeTitle.value,
    })
    announcementList.value = res.data.data.records.map(item => ({
    const res = await sysNoticePageInfoApi(formParams.value)
    const newData = res.data.data.records.map(item => ({
      ...item,
      title: item.noticeTitle,
      description: item.remark,
@@ -67,6 +90,12 @@
      num: item.num,
      like: item.like,
    }))
    // 如果是第一页,直接替换数据;否则追加数据
    if (formParams.value.current === 1) {
        announcementList.value = newData
    } else {
        announcementList.value = announcementList.value.concat(newData)
    }
  } catch (error) {
    uni.showToast({
      title: error.message,
@@ -81,8 +110,6 @@
    url: '/subPackages/regulationsDetail/details?id=' + item.noticeId+'&type=2',
  })
}
onMounted(() => {
  getSysNoticeList()
uniapps/work-wx/src/pages/login/index.vue
@@ -6,10 +6,10 @@
    <div class="title">低空经济服务一体化平台系统</div>
    <view class="user-password">
      <div class="user-name">
        <input v-model="loginForm.username" placeholder="请输入用户名" />
        <u-input border="none" v-model="loginForm.username" placeholder="请输入用户名"></u-input>
      </div>
      <div class="pass-word">
        <u-input type="password" border="bottom" v-model="loginForm.password" placeholder="请输入密码"></u-input>
        <u-input border="none" type="password" v-model="loginForm.password" placeholder="请输入密码"></u-input>
        <!-- <input v-model="loginForm.password" :type="isShowPassword ? 'text' : 'password'" placeholder="请输入密码"/>
        <image v-if="!isShowPassword" :src="showPasswordSvg" @click="isShowPassword = !isShowPassword" />
        <image v-else :src="showPsdSvg"  @click="isShowPassword = !isShowPassword" /> -->
uniapps/work-wx/src/pages/register/index.vue
@@ -10,7 +10,7 @@
             </view>
           </view>
           <view class="row">
            <view class="label">昵称</view>
            <view class="label"><span class="nike"></span>昵称</view>
             <view class="input">
                <u-input input-align="right" border="bottom" v-model="formParams.nikeName" placeholder="昵称"></u-input>
             </view>
@@ -44,7 +44,7 @@
</template>
<script setup>
import { sendResetCode, registerUser } from '@/api/user/index.js';
import { sendResetCode, registerSendCodeApi, registerUser } from '@/api/user/index.js';
const formParams = ref({
    userName: '',
    nikeName: '',
@@ -115,8 +115,7 @@
    }
    // 这里假设账号就是手机号,实际项目中可能需要验证格式
    sendResetCode(formParams.value.userName).then(res => {
        console.log('4444',res)
  registerSendCodeApi(formParams.value.userName).then(res => {
        if (res.data.code === 200) {
            uni.showToast({
                title: '验证码发送成功',
@@ -190,6 +189,10 @@
                title: '注册成功',
                icon: 'success',
            });
            // 跳转登录页面
            uni.navigateTo({
                url: '/pages/login/index'
            })
        } else {
            uni.showToast({
                title: res.data.msg || '注册失败',
@@ -214,7 +217,7 @@
        left: 0;
        width: 100%;
        height: 100%;
        background-image: url("../../static/images/user/userbg.svg")  no-repeat ;
        background-image: url("https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ja-app-wx/images/user/user-bg.png")  no-repeat ;
        background-size: 100%;
    }
    .content {
@@ -238,6 +241,9 @@
            font-weight: 400;
            font-size: 15px;
            color: #222324;
            .nike {
                margin-right: 16rpx;
            }
            .required {
                color: #FF4444;
            }
uniapps/work-wx/src/pages/user/index.vue
@@ -1,48 +1,45 @@
<!-- 我的 -->
<template>
  <view class="page-wrap">
<view class="pageUser">
    <view class="userBox">
      <view class="flex items-center pb-30rpx pl-30rpx pr-20rpx">
        <view class="mr-20rpx">
          <u-avatar @click="uploadAvatar" :src="user.avatar || showDefaultHeader" size="70" />
        </view>
        <view class="flex-1">
          <view class="userName">{{user.nickName }}</view>
          <view class="departs">
            <image
              src="@/static/images/user/department.svg"
              alt=""
            />
            <span>{{ user?.sysDept?.deptName }}</span>
          </view>
        </view>
      </view>
      <view class="personalInformation">
        <div class="message">
          <div class="messagebox">个人资料</div>
          <div class="editInfo" @click="handelEdit(1)">
            点击编辑
            <image :src="rightImage" alt="" />
          </div>
        </div>
        <div class="passwordBox">
          <div class="messagebox">修改密码</div>
          <div class="editInfo" @click="handelEdit(2)">
            点击编辑
            <image :src="rightImage" alt="" />
          </div>
        </div>
      </view>
      <view class="goOutBtn">
        <div class="goOutStyle" @click="logOut">退出登录</div>
      </view>
    </view>
</view>
    <view class="pageUser">
      <view class="userBox">
        <view class="flex items-center pb-30rpx pl-30rpx pr-20rpx">
          <view class="mr-20rpx">
            <u-avatar @click="uploadAvatar" :src="user.avatar || showDefaultHeader" size="70" />
          </view>
          <view class="flex-1">
            <view class="userName">{{user.nickName }}</view>
            <view class="departs">
              <image
                src="@/static/images/user/department.png"
                alt=""
              />
              <span>{{ user?.sysDept?.deptName }}</span>
            </view>
          </view>
        </view>
        <view class="personalInformation">
          <div class="message">
            <div class="messagebox">个人资料</div>
            <div class="editInfo" @click="handelEdit(1)">
              点击编辑
              <image :src="rightImage" alt="" />
            </div>
          </div>
          <div class="passwordBox">
            <div class="messagebox">修改密码</div>
            <div class="editInfo" @click="handelEdit(2)">
              点击编辑
              <image :src="rightImage" alt="" />
            </div>
          </div>
        </view>
        <view class="goOutBtn">
          <div class="goOutStyle" @click="logOut">退出登录</div>
        </view>
      </view>
    </view>
  </view>
</template>
@@ -54,7 +51,7 @@
import { onShow } from "@dcloudio/uni-app";
import { getDeviceRegionApi } from "@/api/map.js";
import defaultAvatar  from '/static/images/defaultAvatar.svg'
import rightImage from '@/static/images/user/rightBtn.svg';
import rightImage from '@/static/images/user/rightBtn.png';
import showDefaultHeader from "@/static/images/user/default-header.png";
const { setClipboardData, getClipboardData } = useClipboard();
//
@@ -100,7 +97,7 @@
  height: 100%;
}
.pageUser {
  background-image: url("../../static/images/user/userbg.svg")  no-repeat;
  background: url("https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ja-app-wx/images/user/user-bg.png")  no-repeat ;
  background-size: 100%;
}
.userBox {
@@ -213,13 +210,13 @@
  }
  .message {
    background: url('@/static/images/user/info.svg')
    background: url('@/static/images/user/info.png')
      no-repeat center;
    background-size: 100% 100%;
  }
  .passwordBox {
    background: url('@/static/images/user/password.svg')
    background: url('@/static/images/user/password.png')
      no-repeat center;
    background-size: 100% 100%;
  }
uniapps/work-wx/src/static/images/user/default-header.png

uniapps/work-wx/src/static/images/user/default-header.svg
File was deleted
uniapps/work-wx/src/static/images/user/department.svg
File was deleted
uniapps/work-wx/src/static/images/user/droneLogo.svg
File was deleted
uniapps/work-wx/src/static/images/user/info.svg
File was deleted
uniapps/work-wx/src/static/images/user/password.svg
File was deleted
uniapps/work-wx/src/static/images/user/rightBtn.svg
File was deleted
uniapps/work-wx/src/static/images/user/userbg.svg
File was deleted
uniapps/work-wx/src/subPackages/deviceRegistration/add.vue
@@ -144,19 +144,21 @@
        <u-form-item
                label="所属区域"
                labelWidth="230rpx"
                prop="serialNumber"
                prop="regionCode"
                :borderBottom="true"
                ref="item2"
                @click="isShowRegion = true"
        >
            <view class="select-wrapper">
                <u-input
                        v-model="formParams.serialNumber"
                        border="none"
                        placeholder="请选择"
                        readonly
                ></u-input>
                <view class="select-icon">▼</view>
            </view>
            <u-input
                v-model="formParams.regionText"
                disabled
                disabledColor="#ffffff"
                placeholder="请选择所属区域"
                border="none"
            ></u-input>
            <template #right>
                <up-icon name="arrow-down"></up-icon>
            </template>
        </u-form-item>
        <u-form-item
                label="民用航空器登记证书"
@@ -259,9 +261,16 @@
        />
        <!-- 所属区域 -->
        <u-cascader 
            show="show"
            v-model="value"
            :show="isShowRegion"
            v-model="formParams.regionCode"
            :data="areaData"
            value-key="code"
            label-key="name"
            children-key="children"
            :auto-close="true"
            @confirm="onRegionConfirm"
            @close="isShowRegion = false"
            @cancel="isShowRegion = false"
        ></u-cascader>
    </u-form>
    <u-button @click="submitForm" color="#1D6FE9">提交</u-button>
@@ -293,6 +302,8 @@
    hasInsurance: '', // 是否有保险
    hasInsuranceText: '', // 是否有保险文本
    region: '', // 所属区域
    regionCode: '', // 所属区域
    regionText: '', // 所属区域文本
    caacRegistrationCode: '', // 民用航空器登记证书
    caacRegistrationCodeText: '', // 民用航空器登记证书文本
    deviceImage: '', // 飞行器照片
@@ -341,6 +352,38 @@
const onPurchaseDate = (e) => {
    formParams.value.purchaseDate = dayjs(e.value).format('YYYY-MM-DD')
    showPurchaseDate.value = false
}
const findRegionNamesByCodes = (codes, areaData) => {
  const result = []
  let currentData = areaData
  for (const code of codes) {
    // 转换为字符串比较(因为code可能是字符串类型)
    const codeStr = code.toString()
    const item = currentData.find(item => item.code === codeStr)
    if (!item) {
      console.warn(`未找到code为 ${codeStr} 的行政区划`)
      break
    }
    result.push(item.name)
    currentData = item.children || []
  }
  return result
}
// 所属区域确认
const onRegionConfirm = (e) => {
    console.log(e,'888')
    formParams.value.region = e?.join(',')[2] || '' // 用逗号分隔的区域码
    // 通过arrRegion的数组值为[36,3608,360824] 从areaData里面反查出名称
    const regionNames = findRegionNamesByCodes(e, areaData.value)
    console.log(regionNames, '77777')
    formParams.value.regionText = regionNames.join('-') || '' // 用连字符连接的区域名称
    isShowRegion.value = false
}
// 是否有保险
const actionsHasInsurance = ref([
@@ -455,13 +498,13 @@
// 获取所属单位
const isShowRegion = ref(false)
const areaData = ref([])
function getAreaData() {
    areaDataApi().then(res => {
        if (res.data.code === 200) {
            areaData.value = res.data.data
        }
    })
}
// function getAreaData() {
//     areaDataApi().then(res => {
//         if (res.data.code === 200) {
//             areaData.value = res.data.data
//         }
//     })
// }
// 提交图片
function afterReadImage(event) {
    // 获取上传的文件对象
@@ -543,8 +586,29 @@
        // 这里可以添加额外的失败处理逻辑
    }
}
onMounted(() => {
    getAreaData()
onMounted(async () => {
    // 动态导入xzqhData,确保在使用前已初始化
    const { xzqhData } = await import('@/static/xzqh/index')
    // console.log(xzqhData,'9999')
    // xzqhData.map 循环三层
    // 第一层:省份
    // 第二层:城市
    // 第三层:区县
    areaData.value = xzqhData
    // xzqhData.map(item => ({
    //     label: item.name,
    //     value: item.code,
    //     children: item.children.map(child => ({
    //         label: child.name,
    //         value: child.code,
    //         children: child.children?.map(district => ({
    //             label: district.name,
    //             value: district.code
    //         })) || []
    //     }))
    // }))
    // console.log(areaData.value, '8888')
})
</script>
<style scoped lang="scss">
uniapps/work-wx/src/subPackages/flightApplication/index.vue
@@ -12,23 +12,25 @@
            </view>
        </view>
    </view>
    <u-search :bgColor="'white'" :show-action="true" actionText="搜索" :animation="true"></u-search>
    <u-search v-model="formParams.flightPlanName" :bgColor="'white'" :show-action="true" actionText="搜索" :animation="true" @custom="handleSearch"></u-search>
    <view class="content">
        <view class="sp-title">
            审批记录
        </view>
        <view class="approvalRecord" v-for="(approvalRecord,approvalRecordIndex) in approvalRecords" :key="approvalRecordIndex">
            <view class="name-status">
                <view class="name-image">
                    <u-image :src="spSvg" class="icon" width="16" height="16"></u-image>
                    <view class="name">{{approvalRecord.flightPlanName}}</view>
        <u-list :style="{ height: 'calc(100vh - 240rpx)' }" @scrolltolower="scrolltolower" :lower-threshold="50">
            <view class="approvalRecord" v-for="(approvalRecord,approvalRecordIndex) in approvalRecords" :key="approvalRecordIndex">
                <view class="name-status">
                    <view class="name-image">
                        <u-image :src="spSvg" class="icon" width="16" height="16"></u-image>
                        <view class="name">{{approvalRecord.flightPlanName}}</view>
                    </view>
                    <view class="status">{{approvalRecord.planStatus || '无状态'}}</view>
                </view>
                <view class="status">{{approvalRecord.planStatus || '无状态'}}</view>
                <view class="txt">飞行设备:{{approvalRecord.device || '无设备'}}</view>
                <view class="txt">行政区划:{{approvalRecord.area || '无行政区划'}}</view>
                <view class="txt">飞行时间:{{approvalRecord.time || '无飞行时间'}}</view>
            </view>
            <view class="txt">飞行设备:{{approvalRecord.device || '无设备'}}</view>
            <view class="txt">行政区划:{{approvalRecord.area || '无行政区划'}}</view>
            <view class="txt">飞行时间:{{approvalRecord.time || '无飞行时间'}}</view>
        </view>
        </u-list>
    </view>
</view>
</template>
@@ -54,65 +56,23 @@
}
// 审批记录是很多条
const approvalRecords = ref([
    {
        flightPlanName: '飞行需求名称',
        planStatus: '申请中',
        device: '大疆无人机',
        area: '吉州区',
        time: '2026/01/07至2026/01/08',
    },
    {
        flightPlanName: '飞行需求名称',
        planStatus: '申请中',
        device: '大疆无人机',
        area: '吉州区',
        time: '2026/01/07至2026/01/08',
    },
    {
        flightPlanName: '飞行需求名称',
        planStatus: '申请中',
        device: '大疆无人机',
        area: '吉州区',
        time: '2026/01/07至2026/01/08',
    },
    {
        flightPlanName: '飞行需求名称',
        planStatus: '申请中',
        device: '大疆无人机',
        area: '吉州区',
        time: '2026/01/07至2026/01/08',
    },
    {
        flightPlanName: '飞行需求名称',
        planStatus: '申请中',
        device: '大疆无人机',
        area: '吉州区',
        time: '2026/01/07至2026/01/08',
    },
    {
        flightPlanName: '飞行需求名称',
        planStatus: '申请中',
        device: '大疆无人机',
        area: '吉州区',
        time: '2026/01/07至2026/01/08',
    },
    {
        flightPlanName: '飞行需求名称',
        planStatus: '申请中',
        device: '大疆无人机',
        area: '吉州区',
        time: '2026/01/07至2026/01/08',
    },
])
const approvalRecords = ref([])
const formParams = ref({
    current: 1,
    size: 10,
    flightPlanName: '',
})
// 申请审批列表
const getApprovalRecords = async () => {
    try {
        const res = await flightPlanPageInfoApi({
            current: 1,
            size: 10,
        })
        approvalRecords.value = res.data.data.records || []
        const res = await flightPlanPageInfoApi(formParams.value)
        const newData = res.data.data.records || []
        // 如果是第一页,直接替换数据;否则追加数据
        if (formParams.value.current === 1) {
            approvalRecords.value = newData
        } else {
            approvalRecords.value = approvalRecords.value.concat(newData)
        }
    } catch (error) {
        uni.showToast({
            title: error.message,
@@ -120,6 +80,22 @@
            duration: 2000,
        })
    }
}
// 搜索处理
const handleSearch = () => {
  // 搜索时重置为第一页
  formParams.value.current = 1
  formParams.value.flightPlanName = formParams.value.flightPlanName.trim()
  getApprovalRecords()
}
// 触底加载
function scrolltolower() {
    formParams.value.current++
    // 停止不刷新
    if (approvalRecords.value.length < formParams.value.size) {
        return
    }
    getApprovalRecords()
}
onMounted(() => {
    getApprovalRecords()
@@ -129,9 +105,9 @@
.flightApplication {
    .header-top {
        width: 100%;
        height: 350rpx;
        background: url('@/static/images/fxsq-bg.png') no-repeat center;
        background-size: 100% 100%;
        height: 280rpx;
        background: url("https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ja-app-wx/images/fxsq-bg.png")  no-repeat ;
          background-size: 100%;
        position: fixed;
        top: 0;
        .ht-content {
@@ -175,7 +151,7 @@
        width: 90%;
        left: 50%;
        transform: translateX(-50%);
        top: 340rpx !important;
        top: 350rpx !important;
        height: 68rpx;
        flex: 0;
    }
uniapps/work-wx/src/subPackages/regulationsDetail/details.vue
@@ -177,7 +177,7 @@
        }
    }
    .fj-list {
        margin-top: 40rpx;
        // margin-top: 20rpx;
    }
    .fj-item {
        display: flex;
uniapps/work-wx/src/subPackages/userDetail/infos/index.vue
@@ -252,8 +252,9 @@
        left: 0;
        width: 100%;
        height: 100%;
        background-image: url("../../../static/images/user/userbg.svg")  no-repeat ;
        background-size: 100%;
        background: url("https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ja-app-wx/images/user/user-bg.png")  no-repeat ;
          background-size: 100%;
        z-index: -1;
    }
    .avatarBox {
        width: 228rpx;
uniapps/work-wx/src/subPackages/userDetail/password/index.vue
@@ -34,7 +34,7 @@
</template>
<script setup>
    import userbgSvg from "@/static/images/user/userbg.svg";
    import userBgPng from "@/static/images/user/user-bg.png";
    import {
        useUserStore
    } from "@/store/index.js";
@@ -260,8 +260,8 @@
            left: 0;
            width: 100%;
            height: 100%;
            background-image: url("https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ztzf_app_assets/images/user/bg.png");
            background-size: 100%;
            background: url("https://wrj.shuixiongit.com/aiskyminio/cloud-bucket/ja-app-wx/images/user/user-bg.png")  no-repeat ;
              background-size: 100%;
        }
        .detailBox {
@@ -293,7 +293,6 @@
                    font-weight: 400;
                    font-size: 30rpx;
                    color: #222324;
                    white-space: nowrap;
                }
                input.input-item {