Browse Source

员工管理访问,升级layui 2.6.5

wushaodong 4 years ago
parent
commit
83fb731645

+ 0 - 1
apps/account/serializers.py

@@ -160,7 +160,6 @@ class GroupSerializer(serializers.ModelSerializer):
 
 class GroupDictSerializer(serializers.ModelSerializer):
     value = serializers.CharField(source='id', read_only=True)
-    # name = serializers.CharField(source='name', read_only=True)
 
     class Meta:
         model = Group

+ 1 - 0
apps/account/urls.py

@@ -7,6 +7,7 @@ urlpatterns = [
     url(r'^token_refresh/$', RefreshTokenView.as_view()),
     url(r'^permission/dict/$', PermissionDictView.as_view()),
     url(r'^permission/all/$', PermissionsListView.as_view()),
+    url(r'^store/tree/$', StoreTreeView.as_view()),
 ]
 
 router = SimpleRouter()

+ 37 - 0
apps/account/views.py

@@ -18,6 +18,7 @@ from apps.account.models import ManageStoreUser
 from apps.log.models import BizLog
 from apps.account.consts import PermissionMenu
 from collections import OrderedDict
+from apps.agent.models import Store, Agent
 
 class LoginView(ObtainJSONWebToken):
     serializer_class = JWTSerializer
@@ -170,3 +171,39 @@ class PermissionDictView(APIView):
             rows =rows.filter(id__in=[g.id for g in groups])
         serializer = GroupDictSerializer(rows, many=True)
         return response_ok(serializer.data)
+
+
+class StoreTreeView(APIView):
+    permission_classes = [isLogin, ]
+
+    def get(self, request):
+        id = request.GET.get('id')
+        store_data = []
+
+        # 查询当前用户的代理商和管理的门店
+        agents = Agent.objects.filter()
+        if not request.user.is_superuser:
+            agents = agents.filter(id=request.user.agent_id)
+        agents = agents.values('id','name')
+        for agent in agents:
+            item = {
+                'title':agent['name'],
+                'id':agent['id'],
+                'field':'agent',
+                'children': [],
+            }
+            stores = Store.objects.filter(agent=agent, enable=True).values('id','name')
+            for store in stores:
+                manage_store = ManageStoreUser.objects.filter(manage_user_id=id, store=store).first()
+                checked = True and manage_store or False
+                store_item = {
+                    'title': store['name'],
+                    'id': store['id'],
+                    'checked': checked,
+                    'field': 'store_{}'.format(store['id']),
+                }
+                item['checked'] = checked
+                item['children'].append(store_item)
+            store_data.append(item)
+
+        return response_ok(store_data)

+ 0 - 5
apps/customer/views.py

@@ -1,12 +1,7 @@
 # coding=utf-8
-from rest_framework.decorators import action
-from rest_framework import permissions
-
 from rest_framework.views import APIView
 
 from utils.custom_modelviewset import CustomModelViewSet
-from utils.permission import IsAdministratorUser,IsTenantUser
-from utils.exceptions import CustomError
 from utils import response_ok, response_error
 from apps.option.models import Option
 from apps.option.serializers import OptionComboboxSerializer

+ 1 - 4
apps/option/serializers.py

@@ -33,17 +33,14 @@ class OptionSerializer(serializers.ModelSerializer):
         return instance
 
     def update(self, instance, validated_data):
-        if instance.delete:
-            raise CustomError(u'自定义项[%s]已经被删除,禁止操作' % instance.name)
         is_exist = Option.is_exist(validated_data['type'], validated_data['name'], instance.id)
         if is_exist:
             raise CustomError(u'自定义项[%s]已存在!' % validated_data['name'])
         instance = super(OptionSerializer, self).update(instance, validated_data)
         return instance
 
-
 class OptionComboboxSerializer(serializers.ModelSerializer):
 
     class Meta:
         model = Option
-        fields = ('id','name')
+        fields = ('id','name')

File diff suppressed because it is too large
+ 0 - 1
uis/layuiadmin/layui/css/layui.css


+ 1 - 2
uis/layuiadmin/layui/css/modules/code.css

@@ -1,2 +1 @@
-/** layui-v2.4.5 MIT License By https://www.layui.com */
- html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}
+html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #eee;border-left-width:6px;background-color:#FAFAFA;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:40px;line-height:40px;border-bottom:1px solid #eee}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 10px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view .layui-code-ol li:first-child{padding-top:10px}.layui-code-view .layui-code-ol li:last-child{padding-bottom:10px}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}.layui-code-demo .layui-code{visibility:visible!important;margin:-15px;border-top:none;border-right:none;border-bottom:none}.layui-code-demo .layui-tab-content{padding:15px;border-top:none}

File diff suppressed because it is too large
+ 0 - 1
uis/layuiadmin/layui/css/modules/laydate/default/laydate.css


File diff suppressed because it is too large
+ 0 - 1
uis/layuiadmin/layui/css/modules/layer/default/layer.css


BIN
uis/layuiadmin/layui/font/iconfont.eot


File diff suppressed because it is too large
+ 0 - 0
uis/layuiadmin/layui/font/iconfont.svg


BIN
uis/layuiadmin/layui/font/iconfont.ttf


BIN
uis/layuiadmin/layui/font/iconfont.woff


File diff suppressed because it is too large
+ 0 - 1
uis/layuiadmin/layui/layui.js


+ 2 - 2
uis/views/agent/edit.html

@@ -109,10 +109,10 @@
                 data.field.enable = false
             }
             if (id) {
-                var url = '/new_customer/customer/' + id + '/';
+                var url = '/agent/agent/' + id + '/';
                 var type = 'post';
             } else {
-                url = '/new_customer/customer/';
+                url = '/agent/agent/';
                 type = 'post'
             }
 

+ 1 - 1
uis/views/agent/index.html

@@ -119,7 +119,7 @@
 
         table.render({
             elem: '#customer_datagrid'
-            , url: '/api/agent.json'
+            , url: '/agent/agent/'
             , cols: [[
                 {field: 'name', title: '名称', width: 150}
                 , {field: 'relation_user', title: "联系人", width: 100}

+ 3 - 10
uis/views/employee/edit.html

@@ -37,7 +37,7 @@
                             <div class="layui-col-lg6">
                                 <label class="layui-form-label"><font color='red' size="4">*</font>电话:</label>
                                 <div class="layui-input-block">
-                                    <input type="text" name="tel" placeholder="请输入电话"  lay-verify="required"
+                                    <input type="text" name="tel" placeholder="请输入电话" lay-verify="required"
                                            autocomplete="off" class="layui-input">
                                 </div>
                             </div>
@@ -59,7 +59,7 @@
                                 </div>
                             </div>
 
-                            <div class="layui-col-sm6">
+                            <div class="layui-col-lg6">
                                 <label class="layui-form-label">性别:</label>
                                 <div class="layui-input-block">
                                     <select name="gender" lay-verify="required">
@@ -68,7 +68,7 @@
                                     </select>
                                 </div>
                             </div>
-                            <div class="layui-col-sm6">
+                            <div class="layui-col-lg6">
                                 <div class="layui-col-lg6">
                                     <label class="layui-form-label"><font color='red' size="4">*</font>代理商:</label>
                                     <div class="layui-input-block">
@@ -138,7 +138,6 @@
         admin.req({
             url: '/agent/dict/',
             done: function (res) {
-                console.log(3333333333,res)
                 var agents = res.data.agents;
                 var agents_node = $('#id_agents');
                 for (var i in agents) {
@@ -172,12 +171,6 @@
             var submitData = data.field;
             var groups = formSelects.value('selectGroup', 'val');
             submitData.groups = JSON.stringify(groups);
-            data.field.type = 1
-
-            if (data.field.is_head && data.field.agent) {
-                layer.msg('代理商和是否总部,只能选择一个')
-                return false
-            }
 
             if (id) {
                 var url = '/account/employee/' + id + '/';

+ 3 - 3
uis/views/employee/index.html

@@ -68,7 +68,7 @@
                         <div class="layui-btn-group">
                             <a class="layui-btn layui-btn-xs layui-btn-warm"
                                data-permission="employee.add_employee"
-                               lay-event="manage_range">管理网点</a>
+                               lay-event="manage_range">管理门店</a>
                         </div>
                     </script>
                 </div>
@@ -100,7 +100,7 @@
                 , {field: 'store_text', title: '门店', width: 150}
                 , {field: 'enable_text', title: '是否在用', width: 100}
                 , {field: 'groups', title: '权限组', width: 200}
-                , {field: 'manager_barnchs', title: '管理网点', width: 200}
+                , {field: 'manager_barnchs', title: '管理门店', width: 200}
                 , {width: 200, align: 'center', fixed: 'right', toolbar: '#datagrid-operate-bar'}
             ]]
             , page: true
@@ -152,7 +152,7 @@
             else if (obj.event === 'manage_range') {
                 layer.open({
                     type: 2,
-                    title: '管理网点',
+                    title: '管理门店',
                     shadeClose: true,
                     area: ['650px', '80%'],
                     btn: ['保存', '取消'],

+ 12 - 28
uis/views/employee/manage_range.html

@@ -20,20 +20,10 @@
 
                 <div class="layui-card-body">
                     <form class="layui-form" action="" lay-filter="component-form-element">
-                        <div class="layui-row layui-col-space10 layui-form-item">
-
-                            <div class="layui-col-lg6">
-                                <label class="layui-form-label">网点:</label>
-                                <div class="layui-input-block">
-                                    <select name="managers" xm-select="manager_range">
-                                    </select>
-                                </div>
-                            </div>
-                            <button class="layui-btn" id="id_save" lay-submit lay-filter="component-form-element"
-                                    style="display: none">保存
-                            </button>
-
-                        </div>
+                        <div id="id_store" class="demo-tree"></div>
+                        <button class="layui-btn" id="id_save" lay-submit lay-filter="component-form-element"
+                                style="display: none">保存
+                        </button>
                     </form>
                 </div>
             </div>
@@ -48,29 +38,23 @@
     }).extend({
         index: 'lib/index' //主入口模块
         , formSelects: 'formSelects-v4'
-    }).use(['index', 'form', 'formSelects'], function () {
+    }).use(['index', 'form', 'tree', 'formSelects'], function () {
         var $ = layui.$
             , admin = layui.admin
             , form = layui.form
+            , tree = layui.tree
             , formSelects = layui.formSelects;
 
         var id = layui.view.getParameterByName('id');
-        formSelects.value('manager_range', []);
         admin.req({
-            url: '/account/branch/tree/?id=' + id
+            url: '/account/store/tree/?id=' + id
             , done: function (res) {
                 var _nodes = res.data.branchs;
-                var manages = res.data.manages;
-                formSelects.data('manager_range', 'local', {
-                    arr: _nodes,
-                    tree: {
-                        //在点击节点的时候, 如果没有子级数据, 会触发此事件
-                        nextClick: function (id, item, callback) {
-                            return false;
-                        },
-                    }
+                tree.render({
+                    elem: '#id_store'
+                    , data: res.data
+                    , showCheckbox: true
                 });
-                formSelects.value('manager_range', manages);
             }
         });
 
@@ -78,7 +62,7 @@
             admin.req({
                 url: '/account/employee/' + id + '/branch/'
                 , data: data.field
-                , type:  'post'
+                , type: 'post'
                 , done: function (res) {
                     parent.layer.closeAll('iframe');
                     parent.layui.table.reload('datagrid', {});

Some files were not shown because too many files changed in this diff