|
@@ -157,6 +157,57 @@ const OrderCard: React.FC<OrderCardProps> = ({ order, onViewDetail }) => {
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// 状态标签和样式辅助函数(移到组件外部以提高性能)
|
|
|
|
|
+const getStatusLabel = (status: string): string => {
|
|
|
|
|
+ switch (status) {
|
|
|
|
|
+ case 'draft': return '草稿'
|
|
|
|
|
+ case 'confirmed': return '已确认'
|
|
|
|
|
+ case 'in_progress': return '进行中'
|
|
|
|
|
+ case 'completed': return '已完成'
|
|
|
|
|
+ case 'cancelled': return '已取消'
|
|
|
|
|
+ default: return status
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const getStatusClass = (status: string): string => {
|
|
|
|
|
+ switch (status) {
|
|
|
|
|
+ case 'draft': return 'bg-gray-100 text-gray-800'
|
|
|
|
|
+ case 'confirmed': return 'bg-blue-100 text-blue-800'
|
|
|
|
|
+ case 'in_progress': return 'bg-green-100 text-green-800'
|
|
|
|
|
+ case 'completed': return 'bg-purple-100 text-purple-800'
|
|
|
|
|
+ case 'cancelled': return 'bg-red-100 text-red-800'
|
|
|
|
|
+ default: return 'bg-gray-100 text-gray-800'
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 获取企业用户信息的辅助函数(移到组件外部以提高性能)
|
|
|
|
|
+const getEnterpriseUserInfo = () => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ const userInfoStr = Taro.getStorageSync('enterpriseUserInfo')
|
|
|
|
|
+ if (!userInfoStr) return null
|
|
|
|
|
+
|
|
|
|
|
+ // 尝试解析JSON字符串
|
|
|
|
|
+ let userInfo = userInfoStr
|
|
|
|
|
+ if (typeof userInfoStr === 'string') {
|
|
|
|
|
+ userInfo = JSON.parse(userInfoStr)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 处理双重编码情况:{"data": "{\"id\":2,...}"}
|
|
|
|
|
+ if (userInfo && typeof userInfo === 'object' && userInfo.data) {
|
|
|
|
|
+ if (typeof userInfo.data === 'string') {
|
|
|
|
|
+ userInfo = JSON.parse(userInfo.data)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ userInfo = userInfo.data
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return userInfo || null
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.debug('获取企业用户信息失败:', error)
|
|
|
|
|
+ return null
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
const OrderList: React.FC = () => {
|
|
const OrderList: React.FC = () => {
|
|
|
const [activeStatus, setActiveStatus] = useState<OrderStatus>('all')
|
|
const [activeStatus, setActiveStatus] = useState<OrderStatus>('all')
|
|
|
const [searchKeyword, setSearchKeyword] = useState('')
|
|
const [searchKeyword, setSearchKeyword] = useState('')
|
|
@@ -257,60 +308,9 @@ const OrderList: React.FC = () => {
|
|
|
{ key: 'cancelled', label: '已取消', activeClass: 'bg-gray-100 text-gray-800', inactiveClass: 'bg-gray-100 text-gray-800' },
|
|
{ key: 'cancelled', label: '已取消', activeClass: 'bg-gray-100 text-gray-800', inactiveClass: 'bg-gray-100 text-gray-800' },
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
- // 状态标签和样式辅助函数
|
|
|
|
|
- const getStatusLabel = (status: string) => {
|
|
|
|
|
- switch (status) {
|
|
|
|
|
- case 'draft': return '草稿'
|
|
|
|
|
- case 'confirmed': return '已确认'
|
|
|
|
|
- case 'in_progress': return '进行中'
|
|
|
|
|
- case 'completed': return '已完成'
|
|
|
|
|
- case 'cancelled': return '已取消'
|
|
|
|
|
- default: return status
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- const getStatusClass = (status: string) => {
|
|
|
|
|
- switch (status) {
|
|
|
|
|
- case 'draft': return 'bg-gray-100 text-gray-800'
|
|
|
|
|
- case 'confirmed': return 'bg-blue-100 text-blue-800'
|
|
|
|
|
- case 'in_progress': return 'bg-green-100 text-green-800'
|
|
|
|
|
- case 'completed': return 'bg-purple-100 text-purple-800'
|
|
|
|
|
- case 'cancelled': return 'bg-red-100 text-red-800'
|
|
|
|
|
- default: return 'bg-gray-100 text-gray-800'
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 获取企业用户信息
|
|
|
|
|
- const getEnterpriseUserInfo = () => {
|
|
|
|
|
- try {
|
|
|
|
|
- const userInfoStr = Taro.getStorageSync('enterpriseUserInfo')
|
|
|
|
|
- if (!userInfoStr) return null
|
|
|
|
|
-
|
|
|
|
|
- // 尝试解析JSON字符串
|
|
|
|
|
- let userInfo = userInfoStr
|
|
|
|
|
- if (typeof userInfoStr === 'string') {
|
|
|
|
|
- userInfo = JSON.parse(userInfoStr)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 处理双重编码情况:{"data": "{\"id\":2,...}"}
|
|
|
|
|
- if (userInfo && typeof userInfo === 'object' && userInfo.data) {
|
|
|
|
|
- if (typeof userInfo.data === 'string') {
|
|
|
|
|
- userInfo = JSON.parse(userInfo.data)
|
|
|
|
|
- } else {
|
|
|
|
|
- userInfo = userInfo.data
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return userInfo || null
|
|
|
|
|
- } catch (error) {
|
|
|
|
|
- console.error('获取企业用户信息失败:', error)
|
|
|
|
|
- return null
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
// 页面显示时自动刷新(从详情页返回时触发)
|
|
// 页面显示时自动刷新(从详情页返回时触发)
|
|
|
useDidShow(() => {
|
|
useDidShow(() => {
|
|
|
- console.log('订单列表页显示,自动刷新数据')
|
|
|
|
|
|
|
+ console.debug('订单列表页显示,自动刷新数据')
|
|
|
// 使用 invalidateQueries 触发重新获取数据
|
|
// 使用 invalidateQueries 触发重新获取数据
|
|
|
// refetch() 会使用缓存数据,而 invalidateQueries 会强制重新获取
|
|
// refetch() 会使用缓存数据,而 invalidateQueries 会强制重新获取
|
|
|
refetch()
|
|
refetch()
|
|
@@ -327,7 +327,7 @@ const OrderList: React.FC = () => {
|
|
|
|
|
|
|
|
|
|
|
|
|
const handleSearch = () => {
|
|
const handleSearch = () => {
|
|
|
- console.log('搜索关键词:', searchKeyword)
|
|
|
|
|
|
|
+ console.debug('搜索关键词:', searchKeyword)
|
|
|
// 使用refetch重新获取数据,queryKey变化会自动触发重新查询
|
|
// 使用refetch重新获取数据,queryKey变化会自动触发重新查询
|
|
|
refetch()
|
|
refetch()
|
|
|
}
|
|
}
|
|
@@ -345,7 +345,7 @@ const OrderList: React.FC = () => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const handleViewDetail = (orderId: number) => {
|
|
const handleViewDetail = (orderId: number) => {
|
|
|
- console.log('查看订单详情:', orderId)
|
|
|
|
|
|
|
+ console.debug('查看订单详情:', orderId)
|
|
|
// 跳转到订单详情页
|
|
// 跳转到订单详情页
|
|
|
Taro.navigateTo({
|
|
Taro.navigateTo({
|
|
|
url: `/pages/yongren/order/detail/index?id=${orderId}`
|
|
url: `/pages/yongren/order/detail/index?id=${orderId}`
|