diff --git a/config/env.ts b/config/env.ts index c92883b..6870eff 100644 --- a/config/env.ts +++ b/config/env.ts @@ -2,7 +2,7 @@ export const ENV_CONFIG = { // 开发环境 development: { - API_BASE_URL: 'https://cms-api.websoft.top/api', + API_BASE_URL: 'http://127.0.0.1/api', APP_NAME: '开发环境', DEBUG: 'true', }, diff --git a/src/hjm/violation/add.config.ts b/src/hjm/violation/add.config.ts index 0663d14..473a3a6 100644 --- a/src/hjm/violation/add.config.ts +++ b/src/hjm/violation/add.config.ts @@ -1,3 +1,3 @@ export default definePageConfig({ - navigationBarTitleText: '添加违章记录' + navigationBarTitleText: '违章记录' }) diff --git a/src/hjm/violation/add.tsx b/src/hjm/violation/add.tsx index 54cfe13..0c7f047 100644 --- a/src/hjm/violation/add.tsx +++ b/src/hjm/violation/add.tsx @@ -1,20 +1,22 @@ import {useEffect, useState} from "react"; -import Taro from '@tarojs/taro' +import Taro, {useRouter} from '@tarojs/taro' import { Button, TextArea, Cell, Input, } from '@nutui/nutui-react-taro' -import {addHjmViolation} from "@/api/hjm/hjmViolation"; +import {addHjmViolation, getHjmViolation, updateHjmViolation} from "@/api/hjm/hjmViolation"; import {HjmViolation} from "@/api/hjm/hjmViolation/model"; /** - * 添加违章记录页面 + * 添加/编辑违章记录页面 */ function Add() { + const {params} = useRouter(); const [loading, setLoading] = useState(false) const [lastSubmitTime, setLastSubmitTime] = useState(0) // 最后提交时间 + const [isEditMode, setIsEditMode] = useState(false) // 是否为编辑模式 const [formData, setFormData] = useState({ code: '', title: '', @@ -26,6 +28,28 @@ function Add() { // 初始化页面数据 const initPageData = async () => { try { + // 检查是否为编辑模式 + if (params.id) { + setIsEditMode(true) + // 获取违章记录详情 + try { + const violation = await getHjmViolation(Number(params.id)); + if (violation) { + setFormData(violation); + } else { + Taro.showToast({ + title: '未找到该违章记录', + icon: 'none' + }) + } + } catch (error) { + console.error('获取违章记录详情失败:', error) + Taro.showToast({ + title: '获取违章记录详情失败', + icon: 'none' + }) + } + } setLoading(false) } catch (error) { console.error('初始化失败:', error) @@ -36,7 +60,6 @@ function Add() { } } - // 提交表单 const handleSubmit = async () => { // 防止重复提交 - 检查loading状态 @@ -76,52 +99,53 @@ function Add() { return } - // if (!formData.money?.trim()) { - // Taro.showToast({ - // title: '请输入处罚金额', - // icon: 'none' - // }) - // return - // } - // - // if (!formData.score?.trim()) { - // Taro.showToast({ - // title: '请输入扣分', - // icon: 'none' - // }) - // return - // } - setLoading(true) - // 构建提交数据 - const submitData: HjmViolation = { - ...formData, - status: 0 // 0未处理, 1已处理 - } - - addHjmViolation(submitData).then((res) => { - console.log(res) - Taro.showToast({ - title: '提交成功', - icon: 'success' - }) - // 清空表单 - setFormData({ - code: '', - title: '', - money: '', - score: '', - comments: '' - }) + try { + if (isEditMode) { + // 编辑模式 - 更新违章记录 + await updateHjmViolation(formData); + Taro.showToast({ + title: '更新成功', + icon: 'success' + }) + // 通知列表页面刷新 + Taro.eventCenter.trigger('violationListRefresh') + } else { + // 新增模式 - 添加违章记录 + // 构建提交数据 + const submitData: HjmViolation = { + ...formData, + status: 0 // 0未处理, 1已处理 + } + await addHjmViolation(submitData); + Taro.showToast({ + title: '提交成功', + icon: 'success' + }) + // 通知列表页面刷新 + Taro.eventCenter.trigger('violationListRefresh') + // 清空表单 + setFormData({ + code: '', + title: '', + money: '', + score: '', + comments: '' + }) + } setTimeout(() => { Taro.navigateBack() }, 2000) - }).finally(() => { + } catch (error) { + Taro.showToast({ + title: isEditMode ? '更新失败' : '提交失败', + icon: 'none' + }) + } finally { setLoading(false) - }) - + } } useEffect(() => { @@ -151,7 +175,9 @@ function Add() { {/* marginBottom: '12px'*/} {/* }}>*/} {/* */} - {/* 添加违章记录*/} + {/* */} + {/* {isEditMode ? '编辑违章记录' : '添加违章记录'}*/} + {/* */} {/* */} {/**/} @@ -167,7 +193,9 @@ function Add() { padding: '16px', borderBottom: '1px solid #f0f0f0' }}> - 违章信息 + + {isEditMode ? '编辑违章记录' : '添加违章记录'} + @@ -176,6 +204,7 @@ function Add() { value={formData.code} onChange={(value) => setFormData({...formData, code: value})} style={{backgroundColor: '#ffffff', borderRadius: '8px'}} + disabled={isEditMode} // 编辑模式下禁用车辆编号输入 /> @@ -234,7 +263,7 @@ function Add() { disabled={loading} onClick={handleSubmit} > - {loading ? '提交中...' : '提交违章记录'} + {loading ? (isEditMode ? '更新中...' : '提交中...') : (isEditMode ? '更新违章记录' : '提交违章记录')} diff --git a/src/hjm/violation/list.tsx b/src/hjm/violation/list.tsx index fea5eb2..2320336 100644 --- a/src/hjm/violation/list.tsx +++ b/src/hjm/violation/list.tsx @@ -9,8 +9,8 @@ import { Pagination } from '@nutui/nutui-react-taro' import {Search, Calendar, Truck, File, AddCircle} from '@nutui/icons-react-taro' -import Taro from '@tarojs/taro' -import {pageHjmViolation} from "@/api/hjm/hjmViolation"; +import Taro, {useDidShow} from '@tarojs/taro' +import {pageHjmViolation, removeHjmViolation} from "@/api/hjm/hjmViolation"; import {HjmViolation} from "@/api/hjm/hjmViolation/model"; @@ -25,6 +25,7 @@ const List: React.FC = () => { const [page, setPage] = useState(1) const [limit, setLimit] = useState(10) const [total, setTotal] = useState(0) + const [needRefresh, setNeedRefresh] = useState(true) console.log(refreshing) // 获取状态显示 @@ -54,11 +55,11 @@ const List: React.FC = () => { } const roleCode = Taro.getStorageSync('RoleCode'); - if(roleCode == 'kuaidi'){ - if(Taro.getStorageSync('OrganizationParentId') == 0){ + if (roleCode == 'kuaidi') { + if (Taro.getStorageSync('OrganizationParentId') == 0) { // @ts-ignore where.organizationParentId = Taro.getStorageSync('OrganizationId'); - }else { + } else { // @ts-ignore where.organizationId = Taro.getStorageSync('OrganizationId'); } @@ -93,9 +94,30 @@ const List: React.FC = () => { }) } + // 页面显示时触发,包括从其他页面返回 + useDidShow(() => { + if (needRefresh) { + reload(false); + setNeedRefresh(false); + } + }); + useEffect(() => { - reload().then() - }, [page, limit]) + // 监听刷新事件 + const handleRefresh = () => { + setNeedRefresh(true); + }; + + Taro.eventCenter.on('violationListRefresh', handleRefresh); + + // 初始加载数据 + reload().then(); + + // 清理事件监听器 + return () => { + Taro.eventCenter.off('violationListRefresh', handleRefresh); + }; + }, [page, limit]); const onPageChange = (current: number) => { setPage(current) @@ -180,10 +202,10 @@ const List: React.FC = () => { border: '1px solid #f0f0f0' }} onClick={() => { - Taro.navigateTo({ - url: `/hjm/violation/detail?id=${item.code}` - }) - }} + Taro.navigateTo({ + url: `/hjm/violation/detail?id=${item.code}` + }) + }} >
{ }
)} + {item.userId == Taro.getStorageSync('UserId') && ( +
+ + + + +
+ )} ) })} @@ -281,7 +331,7 @@ const List: React.FC = () => { overflow: "hidden", backgroundColor: '#ff0000', }}> - + ) } diff --git a/src/utils/request.ts b/src/utils/request.ts index 7bbba37..af6703d 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -4,7 +4,7 @@ import {BaseUrl, TenantId} from "@/utils/config"; let baseUrl = BaseUrl if(process.env.NODE_ENV === 'development'){ - // baseUrl = 'http://localhost:9000/api' + baseUrl = 'http://localhost:9200/api' } export function request(options:any) { const token = Taro.getStorageSync('access_token');