wushaodong пре 4 година
родитељ
комит
35c4a18ee0

+ 1 - 1
apps/customer/views.py

@@ -357,7 +357,7 @@ class NewCustomerViewSet(CustomModelViewSet):
                 instance.save()
                 #  把原跟踪人提醒更新为新的跟踪人
                 NewCustomerRemind.objects.filter(customer=instance, remind_user=old_track_user).update(
-                                            next_time=next_time,track_user_id=track_user_id)
+                                            next_time=next_time,remind_user_id=track_user_id)
                 BizLog.objects.addnew(request.user, BizLog.INSERT,
                                       u'重新分配客户经理[%s]为%s,id=%d' % (instance.name,track_user_id, instance.id), track_user_id)
 

+ 1 - 0
apps/option/urls.py

@@ -5,6 +5,7 @@ from .views import *
 
 urlpatterns = [
     url(r'dict/$', DictView.as_view()),
+    url(r'get_option/$', GetOptionView.as_view()),
 ]
 
 router = SimpleRouter()

+ 11 - 0
apps/option/views.py

@@ -16,6 +16,17 @@ class DictView(APIView):
         }
         return response_ok(ret)
 
+class GetOptionView(APIView):
+    permission_classes = [isLogin, ]
+
+    def get(self, request):
+        types = request.GET.get('types')
+        rows = Option.objects.filter(type=types, enable=True).order_by('sort').values('id','name')
+        # data = OptionSerializer(queryset, many=True).data
+        # for row in rows
+        data = [{'value':row['id'],'label':row['name']} for row in rows]
+        return response_ok(data)
+
 class OptionViewSet(CustomModelViewSet):
     queryset = Option.objects.filter()
     serializer_class = OptionSerializer

+ 2 - 2
apps/order/views.py

@@ -90,7 +90,7 @@ class OrderViewSet(CustomModelViewSet):
     def dispatch_service(self, request, pk):
         # 订单分配服务人员
         check_permission(request, 'order.order_process_dispatch')
-        stage_progress = request.POST.get('stage_progress')
+        stage_progress = request.POST.get('next_process')
         service = request.POST.get('service')
 
         try:
@@ -114,7 +114,7 @@ class OrderViewSet(CustomModelViewSet):
                 )
                 if not stage_progress.end_stage:
                     NewCustomerRemind.objects.create(customer=order.customer, store=order.customer.store, remind_user_id=service, next_time=next_time)
-                operation = u'分配服务人员为:{}'.format(order.service_user.name)
+                operation = u'{} 分配服务人员为:{}'.format(stage_progress.name, order.service_user.name)
                 ProgressDetails.objects.create(order=order, user=request.user, operation=operation,)
         except CustomError as e:
             return response_error(e.get_error_msg())

+ 102 - 102
uis/layuiadmin/lib/index.js

@@ -8,111 +8,111 @@
  */
 
 layui.extend({
-  setter: 'config' //配置模块
-  ,admin: 'lib/admin' //核心模块
-  ,view: 'lib/view' //视图渲染模块
-}).define(['setter', 'admin'], function(exports){
-  var setter = layui.setter
-  ,element = layui.element
-  ,admin = layui.admin
-  ,tabsPage = admin.tabsPage
-  ,view = layui.view
-  //打开标签页
-  ,openTabsPage = function(url, text){
-    //遍历页签选项卡
-    var matchTo
-    ,tabs = $('#LAY_app_tabsheader>li')
-    ,path = url.replace(/(^http(s*):)|(\?[\s\S]*$)/g, '');
-
-    tabs.each(function(index){
-      var li = $(this)
-      ,layid = li.attr('lay-id');
-
-      if(layid === url){
-        matchTo = true;
-        tabsPage.index = index;
-      }
-    });
-
-    text = text || '新标签页';
-
-    if(setter.pageTabs){
-      //如果未在选项卡中匹配到,则追加选项卡
-      if(!matchTo){
-        $(APP_BODY).append([
-          '<div class="layadmin-tabsbody-item layui-show">'
-            ,'<iframe src="'+ url +'" frameborder="0" class="layadmin-iframe"></iframe>'
-          ,'</div>'
-        ].join(''));
-        tabsPage.index = tabs.length;
-        element.tabAdd(FILTER_TAB_TBAS, {
-          title: '<span>'+ text +'</span>'
-          ,id: url
-          ,attr: path
-        });
-      }
-    } else {
-      var iframe = admin.tabsBody(admin.tabsPage.index).find('.layadmin-iframe');
-      iframe[0].contentWindow.location.href = url;
-    }
+    setter: 'config' //配置模块
+    , admin: 'lib/admin' //核心模块
+    , view: 'lib/view' //视图渲染模块
+}).define(['setter', 'admin'], function (exports) {
+    var setter = layui.setter
+        , element = layui.element
+        , admin = layui.admin
+        , tabsPage = admin.tabsPage
+        , view = layui.view
+        //打开标签页
+        , openTabsPage = function (url, text) {
+            //遍历页签选项卡
+            var matchTo
+                , tabs = $('#LAY_app_tabsheader>li')
+                , path = url.replace(/(^http(s*):)|(\?[\s\S]*$)/g, '');
+
+            tabs.each(function (index) {
+                var li = $(this)
+                    , layid = li.attr('lay-id');
+
+                if (layid === url) {
+                    matchTo = true;
+                    tabsPage.index = index;
+                }
+            });
+
+            text = text || '新标签页';
+
+            if (setter.pageTabs) {
+                //如果未在选项卡中匹配到,则追加选项卡
+                if (!matchTo) {
+                    $(APP_BODY).append([
+                        '<div class="layadmin-tabsbody-item layui-show">'
+                        , '<iframe src="' + url + '" frameborder="0" class="layadmin-iframe"></iframe>'
+                        , '</div>'
+                    ].join(''));
+                    tabsPage.index = tabs.length;
+                    element.tabAdd(FILTER_TAB_TBAS, {
+                        title: '<span>' + text + '</span>'
+                        , id: url
+                        , attr: path
+                    });
+                }
+            } else {
+                var iframe = admin.tabsBody(admin.tabsPage.index).find('.layadmin-iframe');
+                iframe[0].contentWindow.location.href = url;
+            }
+
+            //定位当前tabs
+            element.tabChange(FILTER_TAB_TBAS, url);
+            admin.tabsBodyChange(tabsPage.index, {
+                url: url
+                , text: text
+            });
+        }
 
-    //定位当前tabs
-    element.tabChange(FILTER_TAB_TBAS, url);
-    admin.tabsBodyChange(tabsPage.index, {
-      url: url
-      ,text: text
-    });
-  }
-
-  //权限处理
-  ,removeNoPermButtons = function(){
-      var permissions = layui.data(layui.setter.tableName)['permissions'];
-      $('.layui-btn').each(function () {
-        var perm = $(this).data("permission");
-        var is_has = judgePermissions(permissions, perm);
-        if (!is_has) {
-          $(this).remove();
+        //权限处理
+        , removeNoPermButtons = function () {
+            var permissions = layui.data(layui.setter.tableName)['permissions'];
+            $('.layui-btn').each(function () {
+                var perm = $(this).data("permission");
+                var is_has = judgePermissions(permissions, perm);
+                if (!is_has) {
+                    $(this).remove();
+                }
+            });
+
+            $('.LAY-btns .layui-nav').each(function () {
+                var perm = $(this).data("permission");
+
+                var is_has = judgePermissions(permissions, perm);
+                if (!is_has) {
+                    $(this).remove();
+                }
+            });
         }
-      });
 
-      $('.LAY-btns .layui-nav').each(function () {
-        var perm = $(this).data("permission");
+        , APP_BODY = '#LAY_app_body', FILTER_TAB_TBAS = 'layadmin-layout-tabs'
+        , $ = layui.$, $win = $(window);
 
-        var is_has = judgePermissions(permissions, perm);
-        if (!is_has) {
-          $(this).remove();
+    function judgePermissions(permissions, perm) {
+        if (!perm) {
+            return true;
         }
-      });
-  }
-
-  ,APP_BODY = '#LAY_app_body', FILTER_TAB_TBAS = 'layadmin-layout-tabs'
-  ,$ = layui.$, $win = $(window);
 
-  function judgePermissions(permissions, perm) {
-    if (!perm) {
-      return true;
-    }
+        var perms = perm.split('|');
+        var is_has = false;
 
-    var perms = perm.split('|');
-    var is_has = false;
+        for (var i in perms) {
+            if (permissions.indexOf(perms[i]) != -1) {
+                is_has = true;
+                break;
+            }
+        }
 
-    for (var i in perms){
-      if(permissions.indexOf(perms[i]) != -1){
-          is_has = true;
-          break;
-      }
+        return is_has;
     }
 
-    return is_has;
-  }
-
-  //初始
-  if(admin.screen() < 2) admin.sideFlexible();
+    //初始
+    if (admin.screen() < 2) admin.sideFlexible();
 
-  //将模块根路径设置为 controller 目录
-  layui.config({
-    base: setter.base + 'modules/'
-  });
+    //将模块根路径设置为 controller 目录
+    layui.config({
+        base: setter.base + 'modules/'
+    });
 
   //扩展 lib 目录下的其它模块
   layui.each(setter.extend, function(index, item){
@@ -123,14 +123,14 @@ layui.extend({
 
   removeNoPermButtons();
 
-  view().autoRender();
+    view().autoRender();
 
-  //加载公共模块
-  layui.use('common');
+    //加载公共模块
+    layui.use('common');
 
-  //对外输出
-  exports('index', {
-    openTabsPage: openTabsPage
-    ,removeNoPermButtons: removeNoPermButtons
-  });
+    //对外输出
+    exports('index', {
+        openTabsPage: openTabsPage
+        , removeNoPermButtons: removeNoPermButtons
+    });
 });

+ 0 - 161
uis/views/order/dispatch_process_back.html

@@ -1,161 +0,0 @@
-<!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>
-        .input {
-            border-radius: 2px;
-            height: 38px;
-            border-width: 1px;
-            border-color: lightgray;
-            border-style: solid;
-            background-color: white;
-            padding-left: 3px;
-        }
-
-        .processText {
-            margin-top: 6px;
-        }
-
-        .layui-upload-drag {
-            padding: 10px;
-            margin-right: 15px;
-        }
-
-        .imgsContent {
-            display: flex;
-            justify-content: flex-start;
-            flex-direction: row;
-            flex-wrap: wrap;
-        }
-
-        .image {
-            width: 150px;
-            height: auto;
-        }
-
-        .imgItem {
-            margin: 0 10px;
-        }
-
-        .option {
-            display: flex;
-            justify-content: space-between;
-            flex-direction: row;
-        }
-
-        .optionItem {
-            padding: 0 13px;
-            margin: 10px;
-            border: 1px solid rgba(0, 0, 0, 0.1);
-            background: #009688;
-            color: #ffffff;
-        }
-
-    </style>
-</head>
-<body>
-
-<div class="layui-fluid">
-    <div class="layui-row layui-col-space15">
-        <div class="layui-card">
-
-            <div class="layui-card-body" pad15>
-                <form class="layui-form" action="" lay-filter="component-form-element">
-                    <div class="layui-row layui-col-space10 layui-form-item">
-                        <div>
-                            <label class="layui-form-label">撤回进度:</label>
-                            <div class="layui-input-block processText" id="current_process"></div>
-                        </div>
-                         <div>
-                            <label class="layui-form-label"><font color='red' size="4">*</font>撤回原因:</label>
-                            <div class="layui-input-block">
-                                <input type="text" name="reason" placeholder="请输入撤回原因"
-                                       autocomplete="off" class="layui-input" lay-verify="required">
-                            </div>
-                        </div>
-
-                        <button id="id_save" class="layui-btn" lay-submit lay-filter="component-form-element"
-                                style="display: none">保存
-                        </button>
-                    </div>
-                </form>
-            </div>
-        </div>
-    </div>
-</div>
-<script src="../../layuiadmin/layui/layui.js"></script>
-<script>
-    layui.link('../../../layuiadmin/style/autocomplete.css');
-    layui.config({
-        base: '../../../layuiadmin/' //静态资源所在路径
-        , autocomplete: 'autocomplete'
-    }).extend({
-        index: 'lib/index',
-    }).use(['index', 'form', 'autocomplete', 'upload'], function () {
-        var $ = layui.$
-            , admin = layui.admin
-            , form = layui.form;
-
-        var customer_id = layui.view.getParameterByName('customer_id');
-        var order_id = layui.view.getParameterByName('order_id');
-        var back_process_id = '';
-        admin.req({
-            url: '/order/get_process/?customer_id=' + customer_id + '&back=1&dispatch=1'
-            , type: 'get'
-            , done: function (res) {
-                if (res.data.error) {
-                    layer.open({
-                        type: 1
-                        , offset: 'auto' //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset
-                        , id: 'layerDemo' + customer_id //防止重复弹出
-                        , content: '<div style="padding: 20px 100px;">' + res.data.error_message + '</div>'
-                        , btn: '关闭'
-                        , btnAlign: 'c' //按钮居中
-                        , shade: 0 //不显示遮罩
-                        , yes: function () {
-                            parent.layer.closeAll();
-                        }
-                    });
-                }
-
-                //撤回进度
-                $('#current_process').append(res.data.now_process_text)
-                back_process_id = res.data.next_process_id;
-            }
-        });
-
-        form.on('submit(component-form-element)', function (data) {
-            var submitData = data.field;
-            if (!back_process_id) {
-                layer.msg("撤回进度有误,请刷新重试!", {icon: 2});
-                return false
-            }
-            submitData['stage_progress'] = back_process_id
-            var url = '/order/' + order_id + '/uncheck/';
-            admin.req({
-                url: url
-                , data: submitData
-                , type: 'post'
-                , done: function (res) {
-                    parent.layui.onSubmitChild(res);
-                }
-            });
-
-            return false;
-        });
-
-        parent.layui.submitChild = function () {
-            $("#id_save").click();
-        };
-    });
-</script>
-</body>
-</html>

+ 36 - 25
uis/views/order/dispatch_process_edit.html

@@ -76,12 +76,16 @@
                         </div>
                         <div>
                             <label class="layui-form-label">下一进度:</label>
-                            <div class="layui-input-block processText" id="next_process"></div>
+                            <div class="layui-input-block">
+                                <select id="id_next_process" name="next_process" lay-search="" lay-verify="required">
+                                    <option value="">请选择下一进度</option>
+                                </select>
+                            </div>
                         </div>
                         <div>
                             <label class="layui-form-label">服务人员:</label>
                             <div class="layui-input-block">
-                                <select id="id_service" name="service" lay-search="">
+                                <select id="id_service" name="service" lay-verify="required">
                                     <option value="">请选择服务人员</option>
                                 </select>
                             </div>
@@ -132,37 +136,44 @@
                 }
                 //当前进度
                 $('#current_process').append(res.data.now_process_text)
-                //下一进度
-                $('#next_process').append(res.data.next_process_text);
-                next_process_id = res.data.next_process_id;
+                next_process_id = res.data.next_process_id
+                admin.req({
+                    url: '/customer/get_user/',
+                    done: function (res) {
+                        var data_user = res.data;
+                        var user_node = $('#id_service');
+                        for (var i in data_user) {
+                            var pid = data_user[i].value;
+                            var name = data_user[i].lable;
+                            user_node.append("<option value='" + pid + "'>" + name + "</option>");
+                        }
+                        form.render()
+                    }
+                });
+
+                admin.req({
+                    url: '/option/get_option/?types=4',
+                    done: function (res) {
+                        var data_user = res.data;
+                        var user_node = $('#id_next_process');
+                        for (var i in data_user) {
+                            var pid = data_user[i].value;
+                            var name = data_user[i].label;
+                            user_node.append("<option value='" + pid + "'>" + name + "</option>");
+                        }
+                        $('#id_next_process').val(next_process_id);
+                        form.render()
+                    }
+                });
             }
         });
 
-        admin.req({
-            url: '/customer/get_user/',
-            done: function (res) {
-                var data_user = res.data;
-                var user_node = $('#id_service');
-                for (var i in data_user) {
-                    var pid = data_user[i].value;
-                    var name = data_user[i].lable;
-                    user_node.append("<option value='" + pid + "'>" + name + "</option>");
-                }
-                form.render()
-            }
-        });
 
         form.on('submit(component-form-element)', function (data) {
-            var submitData = data.field;
-            if (!next_process_id) {
-                layer.msg("下个进度阶段有误,请刷新重试!", {icon: 2});
-                return false
-            }
-            submitData['stage_progress'] = next_process_id
             var url = '/order/' + order_id + '/dispatch_service/';
             admin.req({
                 url: url
-                , data: submitData
+                , data: data.field
                 , type: 'post'
                 , done: function (res) {
                     parent.layui.onSubmitChild(res);

+ 1 - 22
uis/views/order/dispatch_process_index.html

@@ -162,7 +162,7 @@
                 layer.open({
                     type: 2,
                     title: '分配',
-                    area: ['40%', '55%'],
+                    area: ['40%', '60%'],
                     btn: ['保存','取消'],
                     yes: function (index, dom) {
                         layui.onSubmitChild = function (res) {
@@ -178,27 +178,6 @@
                     },
                     content: 'dispatch_process_edit.html?customer_id=' + data.customer +'&order_id=' + data.id
                 });
-            }else if(obj.event === "uncheck"){
-                // 更新进度
-                layer.open({
-                    type: 2,
-                    title: '撤回进度',
-                    area: ['40%', '55%'],
-                    btn: ['保存','取消'],
-                    yes: function (index, dom) {
-                        layui.onSubmitChild = function (res) {
-                            // 刷新父级页面的菜单数量
-                            parent.layui.getData();
-                            layer.close(index);
-                            table.reload('dispatch_process_datagrid', {});
-                        };
-                        layui.submitChild();
-                    },
-                    btn2: function (index, layero) {
-                        layer.close(index);//关闭当前按钮
-                    },
-                    content: 'dispatch_process_back.html?customer_id=' + data.customer +'&order_id=' + data.id
-                });
             }
         });
     });