|
@@ -16,6 +16,7 @@ from rest_framework.decorators import action
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth import get_user_model
|
|
|
|
|
|
User = get_user_model()
|
|
User = get_user_model()
|
|
|
|
+from utils.format import strftime
|
|
|
|
|
|
|
|
|
|
class ProductView(APIView):
|
|
class ProductView(APIView):
|
|
@@ -25,9 +26,9 @@ class ProductView(APIView):
|
|
queryset = Product.objects.filter(enable=True)
|
|
queryset = Product.objects.filter(enable=True)
|
|
for row in queryset:
|
|
for row in queryset:
|
|
item = {
|
|
item = {
|
|
- 'id':row.id,
|
|
|
|
- 'name':row.name,
|
|
|
|
- 'month':row.month,
|
|
|
|
|
|
+ 'id': row.id,
|
|
|
|
+ 'name': row.name,
|
|
|
|
+ 'month': row.month,
|
|
}
|
|
}
|
|
data.append(item)
|
|
data.append(item)
|
|
return response_ok(data)
|
|
return response_ok(data)
|
|
@@ -50,6 +51,7 @@ class DeleteProductImageView(APIView):
|
|
return response_error(str(e))
|
|
return response_error(str(e))
|
|
return response_ok()
|
|
return response_ok()
|
|
|
|
|
|
|
|
+
|
|
class ProductViewSet(CustomModelViewSet):
|
|
class ProductViewSet(CustomModelViewSet):
|
|
permission_classes = [isLogin, ]
|
|
permission_classes = [isLogin, ]
|
|
queryset = Product.objects.filter()
|
|
queryset = Product.objects.filter()
|
|
@@ -90,7 +92,7 @@ class ProductViewSet(CustomModelViewSet):
|
|
if file:
|
|
if file:
|
|
upload = Upload.objects._addnew(file, 'commodity_image')
|
|
upload = Upload.objects._addnew(file, 'commodity_image')
|
|
ProductImages.objects.create(product_id=instance.id,
|
|
ProductImages.objects.create(product_id=instance.id,
|
|
- image_id=upload.id)
|
|
|
|
|
|
+ image_id=upload.id)
|
|
|
|
|
|
if not upload:
|
|
if not upload:
|
|
return response_error('上传失败,请重新上传!')
|
|
return response_error('上传失败,请重新上传!')
|
|
@@ -118,24 +120,27 @@ class ProductViewSet(CustomModelViewSet):
|
|
data.append(commodity_image_item)
|
|
data.append(commodity_image_item)
|
|
return response_ok(data)
|
|
return response_ok(data)
|
|
|
|
|
|
|
|
+
|
|
class ProductListView(ListAPIView):
|
|
class ProductListView(ListAPIView):
|
|
queryset = Product.objects.filter()
|
|
queryset = Product.objects.filter()
|
|
serializer_class = ProductListSerializer
|
|
serializer_class = ProductListSerializer
|
|
|
|
|
|
- def filter_queryset(self, queryset,):
|
|
|
|
|
|
+ def filter_queryset(self, queryset, ):
|
|
f = ProductFilter(self.request.GET, queryset=queryset)
|
|
f = ProductFilter(self.request.GET, queryset=queryset)
|
|
return f.qs
|
|
return f.qs
|
|
|
|
|
|
|
|
+
|
|
class OrderListView(ListAPIView):
|
|
class OrderListView(ListAPIView):
|
|
permission_classes = [isLogin, ]
|
|
permission_classes = [isLogin, ]
|
|
queryset = Order.objects.filter()
|
|
queryset = Order.objects.filter()
|
|
serializer_class = OrderListSerializer
|
|
serializer_class = OrderListSerializer
|
|
|
|
|
|
- def filter_queryset(self, queryset,):
|
|
|
|
|
|
+ def filter_queryset(self, queryset, ):
|
|
queryset = queryset.filter(Q(create_user=self.request.user) | Q(seller=self.request.user))
|
|
queryset = queryset.filter(Q(create_user=self.request.user) | Q(seller=self.request.user))
|
|
f = OrderFilter(self.request.GET, queryset=queryset)
|
|
f = OrderFilter(self.request.GET, queryset=queryset)
|
|
return f.qs
|
|
return f.qs
|
|
|
|
|
|
|
|
+
|
|
class OrderViewSet(CustomModelViewSet):
|
|
class OrderViewSet(CustomModelViewSet):
|
|
permission_classes = [isLogin, ]
|
|
permission_classes = [isLogin, ]
|
|
queryset = Order.objects.filter()
|
|
queryset = Order.objects.filter()
|
|
@@ -146,6 +151,28 @@ class OrderViewSet(CustomModelViewSet):
|
|
f = OrderFilter(self.request.GET, queryset=queryset)
|
|
f = OrderFilter(self.request.GET, queryset=queryset)
|
|
return f.qs
|
|
return f.qs
|
|
|
|
|
|
|
|
+ def retrieve(self, request, *args, **kwargs):
|
|
|
|
+ # 小程序草稿箱、已上报修改,调用明细
|
|
|
|
+ instance = self.get_object()
|
|
|
|
+ serializer = self.get_serializer(instance)
|
|
|
|
+ if instance.category == order.ZERO:
|
|
|
|
+ return response_ok(serializer.data)
|
|
|
|
+ else:
|
|
|
|
+ # y已上报修改,返回需要修改的字段列表
|
|
|
|
+ edit_data = []
|
|
|
|
+ edit_values = OrderDetailEdit.objects.filter(order=instance, type=OrderDetailEdit.ZERO).values('value')
|
|
|
|
+ for r in edit_values:
|
|
|
|
+ item = {
|
|
|
|
+ 'name': r['value'],
|
|
|
|
+ 'reason': '填错了,请修改',
|
|
|
|
+ }
|
|
|
|
+ edit_data.append(item)
|
|
|
|
+ result = {
|
|
|
|
+ 'data': serializer.data,
|
|
|
|
+ 'edit_values': edit_data,
|
|
|
|
+ }
|
|
|
|
+ return response_ok(result)
|
|
|
|
+
|
|
def create(self, request, *args, **kwargs):
|
|
def create(self, request, *args, **kwargs):
|
|
try:
|
|
try:
|
|
with transaction.atomic():
|
|
with transaction.atomic():
|
|
@@ -165,14 +192,17 @@ class OrderViewSet(CustomModelViewSet):
|
|
try:
|
|
try:
|
|
instance = self.get_object()
|
|
instance = self.get_object()
|
|
with transaction.atomic():
|
|
with transaction.atomic():
|
|
- serializer = self.get_serializer(instance,data=request.data)
|
|
|
|
|
|
+ serializer = self.get_serializer(instance, data=request.data)
|
|
if serializer.is_valid(raise_exception=True):
|
|
if serializer.is_valid(raise_exception=True):
|
|
instance = serializer.save()
|
|
instance = serializer.save()
|
|
- for key in data:
|
|
|
|
- edit, create = OrderDetailEdit.objects.get_or_create(type=OrderDetailEdit.ZERO, order=instance, value=key)
|
|
|
|
- if not create:
|
|
|
|
- edit.edit_time = datetime.datetime.now()
|
|
|
|
- edit.save()
|
|
|
|
|
|
+ # 已上报的,修改,记录修改时间
|
|
|
|
+ if instance.category == order.ONE:
|
|
|
|
+ for key in data:
|
|
|
|
+ edit = OrderDetailEdit.objects.filter(type=OrderDetailEdit.ZERO, order=instance,
|
|
|
|
+ value=key).first()
|
|
|
|
+ if edit:
|
|
|
|
+ edit.edit_time = datetime.datetime.now()
|
|
|
|
+ edit.save()
|
|
|
|
|
|
BizLog.objects.addnew(self.request.user, BizLog.INSERT,
|
|
BizLog.objects.addnew(self.request.user, BizLog.INSERT,
|
|
u'修改订单[%s],id=%d' % (instance.name, instance.id), request.data)
|
|
u'修改订单[%s],id=%d' % (instance.name, instance.id), request.data)
|
|
@@ -182,6 +212,36 @@ class OrderViewSet(CustomModelViewSet):
|
|
except Exception as e:
|
|
except Exception as e:
|
|
return response_error(str(e))
|
|
return response_error(str(e))
|
|
|
|
|
|
|
|
+ @action(methods=['post'], detail=True)
|
|
|
|
+ def checkEdit(self, request, pk):
|
|
|
|
+ data = request.POST.get('items')
|
|
|
|
+ status = request.GET.get('statu')
|
|
|
|
+ try:
|
|
|
|
+ instance = self.get_object()
|
|
|
|
+ with transaction.atomic():
|
|
|
|
+ if status == '1':
|
|
|
|
+ # 通过
|
|
|
|
+ instance.status = order.ONE
|
|
|
|
+ elif status == '3':
|
|
|
|
+ # 拒绝审批
|
|
|
|
+ instance.status = order.THREE
|
|
|
|
+ else:
|
|
|
|
+ OrderDetailEdit.objects.filter(order=instance).delete()
|
|
|
|
+ if not len(data):
|
|
|
|
+ raise CustomError('请填写返回修改原因')
|
|
|
|
+ for item in json.loads(data):
|
|
|
|
+ OrderDetailEdit.objects.create(order=instance, value=item['name'], reason=item['reason'],
|
|
|
|
+ type=item['type'])
|
|
|
|
+ instance.status = order.TOW
|
|
|
|
+ instance.save()
|
|
|
|
+ BizLog.objects.addnew(self.request.user, BizLog.INSERT,
|
|
|
|
+ u'审批订单[%s],id=%d' % (instance.name, instance.id), request.data)
|
|
|
|
+ return response_ok()
|
|
|
|
+ except CustomError as e:
|
|
|
|
+ return response_error(e.get_error_msg())
|
|
|
|
+ except Exception as e:
|
|
|
|
+ return response_error(str(e))
|
|
|
|
+
|
|
@action(methods=['post'], detail=False)
|
|
@action(methods=['post'], detail=False)
|
|
def upload_image(self, request):
|
|
def upload_image(self, request):
|
|
file = self.request.FILES.get('file')
|
|
file = self.request.FILES.get('file')
|
|
@@ -193,6 +253,44 @@ class OrderViewSet(CustomModelViewSet):
|
|
return response_ok(upload.id)
|
|
return response_ok(upload.id)
|
|
return response_error('上传失败,请重新上传!')
|
|
return response_error('上传失败,请重新上传!')
|
|
|
|
|
|
|
|
+ @action(methods=['get'], detail=True)
|
|
|
|
+ def get_detail(self, request, pk):
|
|
|
|
+ # 后端审核业务,获取客户信息和部分字段修改时间
|
|
|
|
+ instance = self.get_object()
|
|
|
|
+ serializer = self.get_serializer(instance)
|
|
|
|
+ # y已上报修改,返回需要修改的字段列表
|
|
|
|
+ # 不显示字段
|
|
|
|
+ show = [
|
|
|
|
+ 'vmodel', 'invioce', 'ptax', 'insurance', 'boutique', 'wextension', 'upkeep', 'dpratio', 'lamount',
|
|
|
|
+ 'laompany_text', 'name', 'sex_text', 'bdate', 'rpr_text', 'nationality_text', 'ntype_text', 'inumber',
|
|
|
|
+ 'dincome', 'mstatus_text',
|
|
|
|
+ 'elevel_text', 'naddress', 'hptype_text', 'maddress_text', 'email', 'wx', 'phone', 'tel', 'wname', 'wphone',
|
|
|
|
+ 'waddress', 'itype_text', 'otype_text', 'position', 'wbst_text', 'bstname', 'bstcode', 'bsttel',
|
|
|
|
+ 'bstaddress',
|
|
|
|
+ 'cname', 'ctel', 'relation_text', 'caddress', 'ctname', 'cttel', 'thesame_text', 'tsname', 'tsbdate',
|
|
|
|
+ 'tsitype_text', 'tsinumber', 'tstel', 'tsrelation_text', 'tsnaddress', 'tsmaddress', 'tsemail', 'tswx',
|
|
|
|
+ 'tswname', 'tswphone', 'tswaddress', 'tsmincome',
|
|
|
|
+ ]
|
|
|
|
+ result = []
|
|
|
|
+ for s in show:
|
|
|
|
+ key = serializer[s]
|
|
|
|
+ edit_values = OrderDetailEdit.objects.filter(order=instance, type=OrderDetailEdit.ZERO,
|
|
|
|
+ value=key.name).first()
|
|
|
|
+ edit_time = reason = ''
|
|
|
|
+ if edit_values:
|
|
|
|
+ edit_time = edit_values.edit_time and strftime(edit_values.edit_time) or ''
|
|
|
|
+ reason = edit_values.reason
|
|
|
|
+ item = {
|
|
|
|
+ 'name': key.name, # tel
|
|
|
|
+ 'label': key.label, # 电话
|
|
|
|
+ 'value': key.value, # 13566
|
|
|
|
+ 'edit_time': edit_time,
|
|
|
|
+ 'reason': reason,
|
|
|
|
+ 'type': '0',
|
|
|
|
+ }
|
|
|
|
+ result.append(item)
|
|
|
|
+ return response_ok(result)
|
|
|
|
+
|
|
@action(methods=['post'], detail=True)
|
|
@action(methods=['post'], detail=True)
|
|
def update_image(self, request):
|
|
def update_image(self, request):
|
|
file = self.request.FILES.get('file')
|
|
file = self.request.FILES.get('file')
|
|
@@ -222,4 +320,3 @@ class OrderViewSet(CustomModelViewSet):
|
|
except Exception as e:
|
|
except Exception as e:
|
|
return response_error(str(e))
|
|
return response_error(str(e))
|
|
return response_ok()
|
|
return response_ok()
|
|
-
|
|
|