diff --git a/src/backend/items/serializers.py b/src/backend/items/serializers.py index 5e5bbd2..8c91cc6 100644 --- a/src/backend/items/serializers.py +++ b/src/backend/items/serializers.py @@ -32,38 +32,25 @@ class ItemSerializer(serializers.ModelSerializer): item=obj, is_returned=False ).first() if current_usage: - return UserSerializer(current_usage.user).data + return { + 'username': current_usage.user, + 'contact': current_usage.borrower_contact + } return None class ItemUsageSerializer(serializers.ModelSerializer): - user = UserSerializer(read_only=True) - user_id = serializers.IntegerField(write_only=True) - item = ItemSerializer(read_only=True) - item_id = serializers.IntegerField(write_only=True) + item_name = serializers.CharField(source='item.name', read_only=True) + item_serial = serializers.CharField(source='item.serial_number', read_only=True) class Meta: model = ItemUsage fields = [ - 'id', 'item', 'item_id', 'user', 'user_id', 'start_time', 'end_time', - 'purpose', 'notes', 'is_returned', 'condition_before', 'condition_after', - 'created_at' + 'id', 'item', 'item_name', 'item_serial', 'user', 'borrower_contact', + 'start_time', 'end_time', 'purpose', 'notes', 'is_returned', + 'condition_before', 'condition_after', 'expected_return_time', 'created_at' ] - - def create(self, validated_data): - # 当创建新的使用记录时,更新物品状态为使用中 - item = Item.objects.get(id=validated_data['item_id']) - item.status = 'in_use' - item.save() - return super().create(validated_data) - - def update(self, instance, validated_data): - # 当归还物品时,更新物品状态为可用 - if validated_data.get('is_returned', False) and not instance.is_returned: - item = instance.item - item.status = 'available' - item.save() - return super().update(instance, validated_data) + read_only_fields = ['created_at'] class ItemDetailSerializer(ItemSerializer): diff --git a/src/backend/items/views.py b/src/backend/items/views.py index 9e9388b..88f0220 100644 --- a/src/backend/items/views.py +++ b/src/backend/items/views.py @@ -32,29 +32,23 @@ class ItemViewSet(viewsets.ModelViewSet): status=status.HTTP_400_BAD_REQUEST ) - user_id = request.data.get('user_id') + user_name = request.data.get('user_name') + user_contact = request.data.get('user_contact', '') purpose = request.data.get('purpose', '') notes = request.data.get('notes', '') condition_before = request.data.get('condition_before', '') - if not user_id: + if not user_name: return Response( - {'error': '请指定使用者'}, - status=status.HTTP_400_BAD_REQUEST - ) - - try: - user = User.objects.get(id=user_id) - except User.DoesNotExist: - return Response( - {'error': '用户不存在'}, + {'error': '请输入使用者姓名'}, status=status.HTTP_400_BAD_REQUEST ) # 创建使用记录 usage = ItemUsage.objects.create( item=item, - user=user, + user=user_name, + borrower_contact=user_contact, start_time=timezone.now(), purpose=purpose, notes=notes, @@ -125,13 +119,13 @@ class ItemUsageViewSet(viewsets.ModelViewSet): @action(detail=False) def by_user(self, request): - """根据用户ID获取使用记录""" - user_id = request.query_params.get('user_id') - if user_id: - usages = self.queryset.filter(user_id=user_id) + """根据用户姓名获取使用记录""" + user_name = request.query_params.get('user_name') + if user_name: + usages = self.queryset.filter(user__icontains=user_name) serializer = self.get_serializer(usages, many=True) return Response(serializer.data) - return Response({'error': '请提供用户ID'}, status=status.HTTP_400_BAD_REQUEST) + return Response({'error': '请提供用户姓名'}, status=status.HTTP_400_BAD_REQUEST) class CategoryViewSet(viewsets.ModelViewSet): diff --git a/src/fronted/src/views/Dashboard.vue b/src/fronted/src/views/Dashboard.vue index f28c775..515f55a 100644 --- a/src/fronted/src/views/Dashboard.vue +++ b/src/fronted/src/views/Dashboard.vue @@ -115,14 +115,18 @@ 当前使用中的物品 - - + + - + + + diff --git a/src/fronted/src/views/ItemDetail.vue b/src/fronted/src/views/ItemDetail.vue index 6febca8..953620b 100644 --- a/src/fronted/src/views/ItemDetail.vue +++ b/src/fronted/src/views/ItemDetail.vue @@ -80,9 +80,8 @@ 当前使用者 - {{ item.current_user.username }} - {{ item.current_user.first_name }} {{ item.current_user.last_name }} - {{ item.current_user.email }} + {{ item.current_user.username }} + {{ item.current_user.contact }} @@ -125,14 +124,15 @@
- {{ selectedUsage.user.username }} - {{ selectedUsage.purpose }} + {{ selectedUsage.user }} + {{ selectedUsage.borrower_contact }} {{ formatDate(selectedUsage.start_time) }} {{ selectedUsage.end_time ? formatDate(selectedUsage.end_time) : '使用中' }} {{ selectedUsage.condition_before || '无' }} {{ selectedUsage.condition_after || '无' }} + {{ selectedUsage.notes || '无' }} {{ selectedUsage.notes || '无' }}
diff --git a/src/fronted/src/views/ItemList.vue b/src/fronted/src/views/ItemList.vue index f458eb4..9a123f6 100644 --- a/src/fronted/src/views/ItemList.vue +++ b/src/fronted/src/views/ItemList.vue @@ -124,14 +124,10 @@ - - - + + + + @@ -245,7 +241,8 @@ export default { owner: '' }, borrowForm: { - user_id: null, + user_name: '', + user_contact: '', purpose: '', condition_before: '', notes: '' @@ -333,7 +330,8 @@ export default { borrowItem(item) { this.currentItem = item this.borrowForm = { - user_id: null, + user_name: '', + user_contact: '', purpose: '', condition_before: '', notes: '' @@ -382,8 +380,8 @@ export default { } }, async confirmBorrow() { - if (!this.borrowForm.user_id) { - ElMessage.error('请选择使用者') + if (!this.borrowForm.user_name) { + ElMessage.error('请输入使用者姓名') return } diff --git a/src/fronted/src/views/ItemUsage.vue b/src/fronted/src/views/ItemUsage.vue index ca01d2b..eea5432 100644 --- a/src/fronted/src/views/ItemUsage.vue +++ b/src/fronted/src/views/ItemUsage.vue @@ -30,9 +30,9 @@ - - - + + +