lyh 3 ani în urmă
părinte
comite
2c7b3a6528

+ 2 - 0
apps/foundation/models.py

@@ -17,6 +17,7 @@ class Option(models.Model):
     GOODS_MODE = 3
     QUALITY_REQUEST = 4
     PAYMENT_ACCOUNT = 5
+    SALE_MESSAGE = 6
 
     TYPE_CHOICES = (
         (PAYMENT_MODE, u'付款方式'),
@@ -25,6 +26,7 @@ class Option(models.Model):
         (GOODS_MODE, u'成品类别'),
         (QUALITY_REQUEST, u'质量要求'),
         (PAYMENT_ACCOUNT, u'银行账户'),
+        (SALE_MESSAGE, u'发货信息'),
     )
 
     type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"类别")

+ 11 - 0
apps/order/models.py

@@ -122,6 +122,17 @@ class SaleOrderDetail(models.Model):
             ("print_goods_godownentry_query", u"打印"),
         )
 
+class SaleOrderMessage(models.Model):
+    main = models.ForeignKey(SaleOrder, verbose_name=u'销售单', on_delete=models.PROTECT)
+    item = models.ForeignKey(Option, verbose_name=u"自定义项", on_delete=models.PROTECT)
+    content = models.CharField(max_length=200, verbose_name=u"内容", blank=True, null=True)
+
+    class Meta:
+        db_table = "sale_order_message"
+        verbose_name = u"发货信息"
+        ordering = ('-id',)
+        default_permissions = ()
+
 class GoodsDeliver(models.Model):
     no = models.CharField(max_length=20, verbose_name=u"出库单号", editable=False)
     create_time = models.DateTimeField(verbose_name=u"创建时间", default=timezone.now)

+ 2 - 0
apps/order/urls.py

@@ -15,6 +15,8 @@ urlpatterns = (
     url(r'^sale_order/pay/$', sale_order_pay),
     url(r'^sale_order/fare_save/$', sale_order_fare_save),
     url(r'^sale_order/clear/$', sale_order_clear),
+    url(r'^sale_order/msg_save/$', sale_order_msg_save),
+    url(r'^sale_order/msg/$', sale_order_msg),
     url(r'^sale_order/export_detail/$', sale_order_export_detail),
 
     url(r'^sale_order/select/$', sale_order_select),

+ 48 - 1
apps/order/views.py

@@ -6,7 +6,7 @@ from django.views.decorators.csrf import csrf_exempt
 from django.db import transaction
 from apps.account.decorators import token_required, permission_required, valid_permission, isHasPermissions
 from apps.account.models import User
-from apps.order.models import SaleOrder, SaleOrderDetail, GoodsDeliver, GoodsDeliverDetail, GoodsDeliverReturn,GoodsDeliverReturnDetail
+from apps.order.models import SaleOrder, SaleOrderDetail, GoodsDeliver, GoodsDeliverDetail, GoodsDeliverReturn,GoodsDeliverReturnDetail, SaleOrderMessage
 from django.db.models import Q, F, Sum
 from django.utils import timezone
 
@@ -426,6 +426,53 @@ def sale_order_clear(request):
         return JSONError(u'结清失败')
     return JSONResponse({})
 
+
+@csrf_exempt
+@permission_required('order.view_sale_order')
+def sale_order_msg_save(request):
+    id = request.GET.get('id')
+    data = json.loads(request.body)
+
+    try:
+        with transaction.atomic():
+            order = SaleOrder.getById(id)
+            SaleOrderMessage.objects.filter(main=order).delete()
+            options = Option.objects.filter(type=Option.SALE_MESSAGE, enabled=True)
+            for option in options:
+                content = data[str(int(option.id))]
+                if content:
+                    SaleOrderMessage.objects.create(main=order, item_id=option.id, content=content)
+
+    except CustomError, e:
+        return JSONError(e.get_error_msg())
+    except Exception, e:
+        traceback.print_exc()
+        return JSONError(u'完善失败')
+    return JSONResponse({})
+
+
+@csrf_exempt
+@permission_required('order.view_sale_order')
+def sale_order_msg(request):
+    id = request.GET.get('id')
+
+    rows = Option.objects.filter(type=Option.SALE_MESSAGE, enabled=True)
+    data = []
+    for row in rows:
+        item = {
+            'id': row.id,
+            'name': row.name,
+            'content': ''
+        }
+
+        msg_row = SaleOrderMessage.objects.filter(main_id=id, item_id=row.id).first()
+        if msg_row:
+            item['content'] = msg_row.content
+
+        data.append(item)
+
+    return JSONResponse(data)
+
 @csrf_exempt
 @permission_required('order.export_sale_order')
 def sale_order_export_detail(request):

+ 35 - 1
uis/views/order/sale_order.html

@@ -106,7 +106,7 @@
                     <div class="layui-input-block">
                         <input type="text" autocomplete="off" name="customer_name" class="layui-input">
                     </div>
-                </div>
+                </div> 
                 <div class="layui-col-xs12 layui-col-sm12">
                     <label class="layui-form-label">客户电话:</label>
                     <div class="layui-input-block">
@@ -495,6 +495,40 @@
         });
     });
 
+
+    $('#btn_receive').on('click', function(){
+        var data = utils.getSelectedRow('datagrid');
+         if(data == false){
+             return;
+         }
+
+         if (data.status == 0) {
+             layer.msg('该订单未审核');
+             return;
+         }
+
+         table.editdata = data;
+
+         layer.open({
+          type: 2,
+          title: '完善发货信息['+ data.no +']',
+          shadeClose: false,
+          area: ['40%', '80%'],
+          btn: ['保存', '取消'],
+          yes: function(index, dom){
+              layui.onSubmitChild = function (data) {
+                  layer.close(index);
+                  table.reload('datagrid',{});
+              };
+              layui.submitChild();
+          },
+          btn2: function(index, layero){
+            layer.close(index);//关闭当前按钮
+          },
+          content: 'sale_order_message.html?order_id='+data.id
+        });
+    });
+
     $('#btn_clear').on('click', function(){
         var data = utils.getSelectedRow('datagrid');
          if(data == false){

+ 100 - 0
uis/views/order/sale_order_message.html

@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8">
+  <title>配件出库</title>
+  <meta name="renderer" content="webkit">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
+  <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all">
+  <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all">
+      <style type="text/css">
+        .table-overlay .layui-table-view,
+        .table-overlay .layui-table-header,
+        .table-overlay .layui-table-box,
+        .table-overlay .layui-table-body{overflow: visible;}
+        .table-overlay .layui-table-cell{height: auto; overflow: visible;}
+        .layui-form-select dl{max-height: 150px;}
+    </style>
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body" pad15>
+            <div class="layui-row layui-col-space15">
+                <div class="layui-col-md12">
+
+                    <form class="layui-form" action="" lay-filter="component-form-element">
+                        <div class="layui-row layui-col-space10" >
+                            <div class="layui-col-xs12 layui-col-sm4 layui-col-md4" id="id_div">
+                            </div>
+                        </div>
+                        <button class="layui-btn" id="purchase-order-submit" lay-submit lay-filter="component-form-element" style="display: none">保存</button>
+                    </form>
+
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+  <script src="../../layuiadmin/layui/layui.js"></script>
+  <script>
+
+  layui.link('../../../layuiadmin/style/autocomplete.css');
+  layui.config({
+    base: '../../../layuiadmin/' //静态资源所在路径
+  }).extend({
+    index: 'lib/index',
+    autocomplete: 'autocomplete'
+  }).use(['index', 'utils','form', 'element'], function(){
+    var $ = layui.$
+    ,admin = layui.admin
+    ,element = layui.element
+    ,form = layui.form;
+
+    var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata));
+    var html = '';
+
+     admin.req({
+        url: '/order/sale_order/msg/?id=' + editdata.id,
+        done: function(res){
+            for (var i in res.data) {
+                 html += '<label class="layui-form-label" style="margin-top:5px;">'+ res.data[i].name +':</label>\n' +
+                '         <div class="layui-input-block" style="margin-top:5px;">\n' +
+                '         <input type="text" id="'+ res.data[i].id + ' " name="'+ res.data[i].id + '" value= " '+res.data[i].content+' "  autocomplete="off" class="layui-input">\n' +
+                '         </div>'
+            }
+            $('#id_div').html(html);
+            form.render();
+
+        }
+    });
+
+
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    form.on('submit(component-form-element)', function(data){
+        admin.req({
+            url: '/order/sale_order/msg_save/?id='+editdata.id
+            ,data: JSON.stringify(data.field)
+            ,type: 'post'
+            , done: function (res) {
+                parent.layui.onSubmitChild();
+            }
+        });
+
+        return false;
+    });
+
+    parent.layui.submitChild = function () {
+      $("#purchase-order-submit").click();
+    };
+
+  });
+
+  </script>
+</body>
+</html>