From 60326ca516e443ba2e62e8b44fe616415a3ed7e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Thu, 29 May 2025 19:41:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B7=B2=E7=9F=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project.config.json | 2 +- src/hjm/query.tsx | 391 +++++++++++++++++++++++++++++++++++------ src/user/car/index.tsx | 2 +- src/utils/server.ts | 1 + 4 files changed, 342 insertions(+), 54 deletions(-) diff --git a/project.config.json b/project.config.json index 4fe8680..b6b92f3 100644 --- a/project.config.json +++ b/project.config.json @@ -2,7 +2,7 @@ "miniprogramRoot": "dist/", "projectname": "websoft", "description": "网宿软件", - "appid": "wx541db955e7a62709", + "appid": "wxd2723d1afd9c4553", "setting": { "urlCheck": true, "es6": false, diff --git a/src/hjm/query.tsx b/src/hjm/query.tsx index 3391d49..263f4a3 100644 --- a/src/hjm/query.tsx +++ b/src/hjm/query.tsx @@ -1,10 +1,22 @@ import {useEffect, useState} from "react"; -import {useRouter} from '@tarojs/taro' -import {getHjmCar, pageHjmCar} from "@/api/hjm/hjmCar"; +import Taro, {useRouter} from '@tarojs/taro' +import {getHjmCar, pageHjmCar, updateHjmCar} from "@/api/hjm/hjmCar"; import {HjmCar} from "@/api/hjm/hjmCar/model"; -import {Image,Cell} from '@nutui/nutui-react-taro' import './location.scss' import {copyText} from "@/utils/common"; +import {View} from '@tarojs/components' +import { + Form, + Button, + Input, + Radio, + Cell, + Image +} from '@nutui/nutui-react-taro' +import {Scan} from '@nutui/icons-react-taro' +import {pageDictData} from "@/api/system/dict-data"; +import {DictData} from "@/api/system/dict-data/model"; +import {TenantId} from "@/utils/config"; /** * 文章终极列表 @@ -14,6 +26,166 @@ const Query = () => { const {params} = useRouter(); const [keywords, setKeywords] = useState() const [item, setItem] = useState() + const [dict, setDict] = useState([]) + + const [FormData, setFormData] = useState( + { + // 自增ID + id: undefined, + // 车辆名称 + name: undefined, + // 车辆图片 + image: undefined, + // 类型 0汽车 1其他车 + type: undefined, + // 快递公司 + kuaidi: undefined, + // 管理负责人 + kuaidiAdmin: undefined, + organization: undefined, + organizationParentId: undefined, + parentOrganization: undefined, + parentOrganizationAdmin: undefined, + // 车辆编号 + code: undefined, + // 操作员 + driver: undefined, + // 保险状态 + insuranceStatus: undefined, + // GPS设备编号 + gpsNo: undefined, + // 电子围栏 + fence: undefined, + // 位置 + location: undefined, + // 经度 + longitude: undefined, + // 纬度 + latitude: undefined, + // 地址 + address: undefined, + // 用户ID + userId: undefined, + // 排序(数字越小越靠前) + sortNumber: undefined, + // 备注 + comments: undefined, + // 状态, 0正常, 1冻结 + status: undefined, + // 是否删除, 0否, 1是 + deleted: undefined, + // 租户id + tenantId: undefined, + // 创建时间 + createTime: undefined, + // 更新时间 + updateTime: undefined, + } + ) + + // 提交表单 + const submitSucceed = (values: any) => { + updateHjmCar({...values, ...FormData, status: 1}).then(() => { + Taro.showToast({title: `保存成功`, icon: 'success'}) + setTimeout(() => { + return Taro.navigateBack() + }, 1000) + }).catch(() => { + Taro.showToast({ + title: '保存失败', + icon: 'error' + }); + }) + } + + const submitFailed = (error: any) => { + console.log(error, 'err...') + } + + const saveGpsNo = () => { + Taro.scanCode({ + onlyFromCamera: true, + scanType: ['barCode', 'qrCode'], + success: (res) => { + // 更新表单数据 + setFormData({ + ...FormData, + gpsNo: res.result + }); + Taro.showToast({ + title: '扫码成功' + res.result, + icon: 'success', + duration: 2000 + }); + }, + fail: (err) => { + console.log('扫码失败', err); + Taro.showToast({ + title: '扫码失败', + icon: 'error', + duration: 2000 + }); + } + }); + } + + // 拍照上传功能 + const takePhoto = () => { + Taro.chooseImage({ + count: 1, + sizeType: ['compressed'], + sourceType: ['camera'], // 只允许拍照 + success: async (res) => { + const tempFilePath = res.tempFilePaths[0]; + console.log(tempFilePath, 'tempFilePath') + // 上传图片到OSS + Taro.uploadFile({ + url: 'https://server.gxwebsoft.com/api/oss/upload', + filePath: tempFilePath, + name: 'file', + header: { + 'content-type': 'application/json', + TenantId + }, + success: (res) => { + const data = JSON.parse(res.data); + if (data && data.code === 0) { + console.log(data.data.url, '1url.....') + updateHjmCar({ + id: FormData.id, + image: data.data.downloadUrl + '?x-oss-process=image/resize,w_750/quality,Q_90' + }).then(() => { + Taro.showToast({ + title: '上传成功', + icon: 'success', + duration: 2000 + }); + setFormData({...FormData,image: data.data.downloadUrl + '?x-oss-process=image/resize,w_750/quality,Q_90'}) + }) + } + } + }) + }, + fail: (err) => { + console.log('拍照失败', err); + Taro.showToast({ + title: '拍照失败', + icon: 'error', + duration: 2000 + }); + } + }); + } + + // 删除图片 + // const removeImage = (index: number) => { + // const newImages = uploadedImages.filter((_, i) => i !== index); + // setUploadedImages(newImages); + // setFormData({ + // ...FormData, + // image: newImages.join(',') + // }); + // } // 打开地图选择位置 // const chooseLocation = async () => { @@ -29,6 +201,10 @@ const Query = () => { // } const reload = () => { const id = Number(params.id); + // 获取数据字典 + pageDictData({dictCode: 'InsuranceStatus'}).then(res => { + setDict(res?.list || []) + }) // 执行搜索 if (keywords) { pageHjmCar({keywords}).then(res => { @@ -45,6 +221,21 @@ const Query = () => { getHjmCar(id).then(data => { setItem(data) setKeywords(data.code) + setFormData(data) + + // 初始化已上传的图片 + // if (data.image) { + // const images = data.image.split(',').filter(img => img.trim()); + // setUploadedImages(images); + // } + + console.log(data.status, '1213') + if (data.status == 0) { + Taro.setNavigationBarTitle({ + title: '安装设备' + }) + setFormData({...data, driver: Taro.getStorageSync('RealName')}) + } }) } } @@ -56,62 +247,158 @@ const Query = () => { return ( <> - {/*
*/} - {/*
*/} - {/* */} - {/* */} - {/* */} - {/* */} - {/* */} - {/*
*/} - {/*
*/} - {/* */} - {/**/} - {item ? ( + + {/* 未安装 */} + {item?.status == 0 ? ( +
+
+
submitSucceed(values)} + onFinishFailed={(errors) => submitFailed(errors)} + footer={ +
+ +
+ } + > + + copyText(`${item?.code}`)}>{item?.code} + + + + + + + + + + + + + { + dict?.map((item, index) => ( + + {item.dictDataName} + + )) + } + + + +
+ setFormData({...FormData, gpsNo: value})} + /> +
+ +
+
+
+ +
+ +
+
+ + + +
+
+
+ ) : ''} + + {/* 已安装 */} + {item?.status == 1 ? (
- copyText(`${item?.code}`)}> - 车辆编号:{item?.code} - - - 快递公司:{item?.parentOrganization} - - - 管理负责人:{item?.parentOrganizationAdmin} - - - 操作员:{item?.driver} - - - 保险状态:{item?.insuranceStatus} - - - GPS编号:{item?.gpsNo} - - - 电子围栏:{item?.fence} - + copyText(`${item?.code}`)}> + 车辆编号:{item?.code} + + + 快递公司品牌:{item?.parentOrganization} + + + 管理责任人:{item?.parentOrganizationAdmin} + + + 操作员:{item?.driver} + + + 保险状态:{item?.insuranceStatus} + + + GPS编号:{item?.gpsNo} + + + 电子围栏:{item?.fence} + + {/**/} + {/* 状态:{item?.status == 1 ? '已安装' : '未安装'}*/} + {/**/}
) : ''} ) } +// @ts-ignore export default Query diff --git a/src/user/car/index.tsx b/src/user/car/index.tsx index 2a9e327..b8ac55f 100644 --- a/src/user/car/index.tsx +++ b/src/user/car/index.tsx @@ -16,7 +16,7 @@ const Index = () => { const reload = () => { // 获取车辆列表 - pageHjmCar({userId: Taro.getStorageSync('UserId')}).then(res => { + pageHjmCar({}).then(res => { setList(res?.list || []) }) } diff --git a/src/utils/server.ts b/src/utils/server.ts index fe8f4de..501d8ab 100644 --- a/src/utils/server.ts +++ b/src/utils/server.ts @@ -15,5 +15,6 @@ export function saveStorageByLoginUser(token: string, user: User) { Taro.setStorageSync('access_token', token) Taro.setStorageSync('UserId', user.userId) Taro.setStorageSync('Phone', user.phone) + Taro.setStorageSync('RealName', user.realName) Taro.setStorageSync('User', user) }