소스 검색

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	apps/knowledge/models.py
wushaodong 3 년 전
부모
커밋
5b3400e9cf

+ 1 - 0
apps/api/admin/department/urls.py

@@ -6,6 +6,7 @@ from rest_framework.routers import SimpleRouter
 from .views import *
 
 urlpatterns = [
+    url(r'^tree/$', DepartmentTreeView.as_view()),
 ]
 
 router = SimpleRouter()

+ 25 - 0
apps/api/admin/department/views.py

@@ -2,6 +2,7 @@
 
 from django.db import transaction, IntegrityError
 from django.db.models import F, ProtectedError
+from rest_framework.views import APIView
 from utils.permission import IsAdministrator
 from utils import response_error, response_ok
 from utils.custom_modelviewset import CustomModelViewSet
@@ -54,3 +55,27 @@ class DepartmentViewSet(CustomModelViewSet):
         instance = serializer.instance
         validated_data = serializer.validated_data
         SysLog.objects.addnew(self.request.user, SysLog.UPDATE, u'修改部门[%s],id=%d' % (instance.name, instance.id), validated_data)
+
+
+def child_department_tree(parent_id,children):
+    rows = Department.objects.filter(parent_id=parent_id)
+    for row in rows:
+        item = {
+            'id': row.id,
+            'value': row.id,
+            'name': row.name,
+            'notes': row.notes,
+            'parent_id': row.parent_id,
+            'children': []
+        }
+        child_department_tree(row.id, item['children'])
+        children.append(item)
+
+
+class DepartmentTreeView(APIView):
+    permission_classes = [IsAdministrator, ]
+
+    def get(self, request):
+        result = []
+        child_department_tree(None, result)
+        return response_ok(result)

+ 1 - 0
apps/api/admin/urls.py

@@ -11,6 +11,7 @@ urlpatterns = [
     url(r'^token_verify/$', AdminUserVerifyTokenView.as_view()),
 
     url(r'^department/', include('apps.api.admin.department.urls')),
+    url(r'^user/', include('apps.api.admin.user.urls')),
     url(r'^subject/', include('apps.api.admin.subject.urls')),
 
     url(r'^examquestion/', include('apps.api.admin.examquestion.urls')),

+ 14 - 0
apps/api/admin/user/urls.py

@@ -0,0 +1,14 @@
+# coding=utf-8
+
+from django.conf.urls import url, include
+from rest_framework.routers import SimpleRouter
+
+from .views import *
+
+urlpatterns = [
+
+]
+
+router = SimpleRouter()
+router.register(r'', UserViewSet)
+urlpatterns += router.urls

+ 33 - 0
apps/api/admin/user/views.py

@@ -0,0 +1,33 @@
+# coding=utf-8
+
+from django.db import transaction
+from django.contrib.auth import get_user_model
+from utils.permission import IsAdministrator
+from utils import response_error, response_ok
+from utils.custom_modelviewset import CustomModelViewSet
+from utils.exceptions import CustomError
+from apps.staff.serializers import UserSerializer
+from apps.staff.filters import UserFilter
+from apps.system.models import SysLog
+User = get_user_model()
+
+class UserViewSet(CustomModelViewSet):
+    permission_classes = [IsAdministrator, ]
+    queryset = User.objects.filter()
+    serializer_class = UserSerializer
+
+    def filter_queryset(self, queryset):
+        f = UserFilter(self.request.GET, queryset=queryset)
+        return f.qs
+
+    def perform_create(self, serializer):
+        super(UserViewSet, self).perform_create(serializer)
+        instance = serializer.instance
+        validated_data = serializer.validated_data
+        SysLog.objects.addnew(self.request.user, SysLog.INSERT, u'添加账户[%s],id=%d' % (instance.username, instance.id), validated_data)
+
+    def perform_update(self, serializer):
+        super(UserViewSet, self).perform_update(serializer)
+        instance = serializer.instance
+        validated_data = serializer.validated_data
+        SysLog.objects.addnew(self.request.user, SysLog.UPDATE, u'修改账户[%s],id=%d' % (instance.username, instance.id), validated_data)

+ 1 - 1
apps/examination/exampaper/models.py

@@ -71,6 +71,6 @@ class ExamPaperDetail(models.Model):
 
     class Meta:
         db_table = "exam_paper_detail"
-        ordering = ['id']
+        ordering = ['order']
         verbose_name = u"试卷明细"
         default_permissions = ()

+ 1 - 1
apps/examination/examquestion/models.py

@@ -37,7 +37,7 @@ class ExamQuestion(models.Model):
     judgment = models.BooleanField(verbose_name=u'判断题答案', default=False)
     analysis = models.TextField(verbose_name=u"解析", null=True, blank=True)
     create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'录入人',related_name='exam_question_user', editable=False, on_delete=models.PROTECT)
-    create_time = models.DateTimeField(verbose_name=u"录入时间", auto_now_add=True, editable=False)
+    create_time = models.DateTimeField(verbose_name=u"录入时间", default=timezone.now, editable=False)
     delete = models.BooleanField(verbose_name=u'删除', default=False, editable=False)
 
     class Meta:

+ 2 - 2
apps/knowledge/models.py

@@ -45,10 +45,10 @@ class KnowledgeBaseFeedback(models.Model):
     main = models.ForeignKey(KnowledgeBase, verbose_name=u"知识", on_delete=models.PROTECT)
     type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"错误类型")
     desc = models.TextField(verbose_name=u"错误描述", null=True, blank=True)
-    create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'反馈人', related_name='knowledge_base_feedback_user', editable=False, on_delete=models.PROTECT)
+    create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'反馈人', editable=False, on_delete=models.PROTECT, related_name='knowledge_base_feedback_create_usr_id')
     create_time = models.DateTimeField(verbose_name=u"反馈时间", default=timezone.now, editable=False)
     status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u'处理状态', default=UNTREATED)
-    process_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"处理人", on_delete=models.PROTECT, null=True)
+    process_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"处理人", on_delete=models.PROTECT, null=True, related_name='knowledge_base_feedback_process_usr_id')
     process_time = models.DateTimeField(verbose_name=u'处理时间', null=True)
 
     class Meta:

+ 11 - 0
apps/practise/errorbook/models.py

@@ -1,8 +1,19 @@
 # coding=utf-8
 
 from django.db import models
+from django.utils import timezone
+from django.conf import settings
+
+from apps.examination.exam.models import ExamAnswerLog
+from apps.examination.examquestion.models import ExamQuestion
 
 class ErrorBook(models.Model):
+    question = models.ForeignKey(ExamQuestion, verbose_name=u"试题", on_delete=models.PROTECT)
+    create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'答题人', editable=False, on_delete=models.PROTECT)
+    last_answer_log = models.ForeignKey(ExamAnswerLog, verbose_name=u"最后答题记录", on_delete=models.PROTECT)
+    last_time = models.DateTimeField(verbose_name=u"最后出错时间", default=timezone.now)
+    wrong_count = models.IntegerField(verbose_name=u'出错次数', default=0, editable=False)
+
     class Meta:
         db_table = "practise_error_book"
         ordering = ['-id']

+ 63 - 0
apps/practise/practiselog/models.py

@@ -1,10 +1,73 @@
 # coding=utf-8
 
 from django.db import models
+from django.utils import timezone
+from django.conf import settings
+
+from apps.examination.examquestion.models import ExamQuestion, ExamQuestionOption
 
 class PractiseLog(models.Model):
+    SUBJECT = 1
+    CHAPTER = 2
+    TYPE_CHOICES = (
+        (SUBJECT, u'科目'),
+        (CHAPTER, u'章节'),
+    )
+    TYPE_JSON = [{'id': item[0], 'value': item[1]} for item in TYPE_CHOICES]
+
+    type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"类型")
+    create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'练习人', editable=False, on_delete=models.PROTECT)
+    create_time = models.DateTimeField(verbose_name=u"开始时间", default=timezone.now, editable=False)
+    submit_time = models.DateTimeField(verbose_name=u"结束时间", null=True, blank=True)
+
+    begin_answer = models.ForeignKey('PractiseAnswerLog', verbose_name=u"开始习题", null=True, editable=False, on_delete=models.PROTECT)
+    end_answer = models.ForeignKey('PractiseAnswerLog', verbose_name=u"结束习题", null=True, editable=False, on_delete=models.PROTECT)
+    right_count = models.IntegerField(verbose_name=u'正确数量', default=0, editable=False)
+    wrong_count = models.IntegerField(verbose_name=u'错误数量', default=0, editable=False)
+    total_count = models.IntegerField(verbose_name=u'总数量', default=0, editable=False)
+
     class Meta:
         db_table = "practise_log"
         ordering = ['-id']
         verbose_name = u"练习记录"
+        default_permissions = ()
+
+class PractiseAnswerLog(models.Model):
+    RIGHT = 1
+    WRONG = 2
+    STATUS_CHOICES = (
+        (RIGHT, u'正确'),
+        (WRONG, u'错误'),
+    )
+    STATUS_JSON = [{'id': item[0], 'value': item[1]} for item in STATUS_CHOICES]
+
+    main = models.ForeignKey(PractiseLog, verbose_name=u"练习记录", on_delete=models.PROTECT)
+    question = models.ForeignKey(ExamQuestion, verbose_name=u"试题", on_delete=models.PROTECT)
+    status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u'回答状态')
+
+    class Meta:
+        db_table = "practise_answer_log"
+        ordering = ['id']
+        verbose_name = u"练习答题记录"
+        default_permissions = ()
+
+class PractiseAnswerOptionLog(models.Model):
+    main = models.ForeignKey(PractiseLog, verbose_name=u"练习答题记录", on_delete=models.PROTECT)
+    option = models.ForeignKey(ExamQuestionOption, verbose_name=u"选项", on_delete=models.PROTECT)
+
+    class Meta:
+        db_table = "practise_answer_option_log"
+        ordering = ['id']
+        verbose_name = u"选择题回答"
+        default_permissions = ()
+
+class PractiseAnswerFillLog(models.Model):
+    main = models.ForeignKey(PractiseLog, verbose_name=u"练习答题记录", on_delete=models.PROTECT)
+    content = models.TextField(verbose_name=u"内容")
+    order = models.IntegerField(verbose_name=u'排序')
+
+    class Meta:
+        db_table = "practise_answer_fill_log"
+        ordering = ['order', 'id']
+        verbose_name = u"填空题回答"
         default_permissions = ()

+ 1 - 1
apps/staff/filters.py

@@ -12,7 +12,7 @@ class UserFilter(django_filters.FilterSet):
 
     class Meta:
         model = User
-        fields = ['username', 'is_active']
+        fields = ['username', 'is_active', 'type', ]
 
 class DepartmentFilter(django_filters.FilterSet):
     name = django_filters.CharFilter(field_name='name', lookup_expr='icontains')

+ 2 - 2
apps/staff/models.py

@@ -63,7 +63,7 @@ class UserManager(BaseUserManager):
         return self.create_user(User.ADMINSTRATOR, username, password, **extra_fields)
 
     def create_staff(self, username, password=None, **extra_fields):
-        return self.create_user(User.STUDENT, username, password, **extra_fields)
+        return self.create_user(User.STAFF, username, password, **extra_fields)
 
     def create_superuser(self, username, password, **extra_fields):
         u = self.create_administrator(username, password, **extra_fields)
@@ -134,7 +134,7 @@ class User(AbstractBaseUser, PermissionsMixin):
     ADMINSTRATOR = 1
     STAFF = 2
 
-    type = models.PositiveSmallIntegerField(verbose_name=u"类型", editable=False)
+    type = models.PositiveSmallIntegerField(verbose_name=u"类型")
     department = models.ForeignKey(Department, verbose_name=u"所属部门", null=True, blank=True, on_delete=models.PROTECT)
     username = models.CharField(verbose_name=u'帐号', max_length=30, unique=True, db_index=True)
     is_active = models.BooleanField(verbose_name=u'激活', default=True)

+ 36 - 0
apps/staff/serializers.py

@@ -134,3 +134,39 @@ class DepartmentSerializer(serializers.ModelSerializer):
             raise CustomError(u'名称为[%s]的部门已存在!' % name)
         instance = super(DepartmentSerializer, self).update(instance, validated_data)
         return instance
+
+
+class UserSerializer(serializers.ModelSerializer):
+    password = serializers.CharField(write_only=True, allow_blank=True)
+    status_text = serializers.SerializerMethodField()
+    department_text = serializers.CharField(source='department.name', read_only=True)
+    type_text = serializers.SerializerMethodField()
+
+    class Meta:
+        model = User
+        fields = '__all__'
+
+    def get_status_text(self, obj):
+        if obj.is_active:
+            return u'是'
+        return u'否'
+
+    def get_type_text(self, obj):
+        if obj.type == User.ADMINSTRATOR:
+            return u'管理员'
+        elif obj.type == User.STAFF:
+            return u'员工'
+        return ''
+
+    def create(self, validated_data):
+        if validated_data['password'].strip() == '':
+            raise CustomError(u'密码不能为空!')
+        if 'type' in validated_data and validated_data['type'] == User.STAFF:
+            user = User.objects.create_staff(validated_data['username'], validated_data['password'], is_active=validated_data['is_active'], department=validated_data['department'])
+        else:
+            user = User.objects.create_administrator(validated_data['username'], validated_data['password'], is_active=validated_data['is_active'], department=validated_data['department'])
+        return user
+
+    def update(self, instance, validated_data):
+        instance.update_item(validated_data)
+        return instance

+ 3 - 3
uis/admin/index.html

@@ -119,11 +119,11 @@
                   <a lay-href="department/index.html">部门管理</a>
                 </dd>
                 <dd data-name="nav">
-                  <a lay-href="tenant/index.html">账户管理</a>
+                  <a lay-href="user/index.html">账户管理</a>
                 </dd>
-                <dd data-name="nav">
+                <!--<dd data-name="nav">
                   <a lay-href="applet/index.html">权限管理</a>
-                </dd>
+                </dd>-->
                 <dd data-name="nav">
                   <a lay-href="third_party/index.html">系统日志</a>
                 </dd>

+ 159 - 0
uis/admin/user/edit.html

@@ -0,0 +1,159 @@
+<!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">
+  <link rel="stylesheet" type="text/css" href="../../layuiadmin/style/formSelects-v4.css"/>
+  <style type="text/css">
+        #department_selecter dl{max-height: 250px;}
+    </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 layui-form-item">
+
+                  <div class="layui-col-lg6">
+                  <label class="layui-form-label"><font color='red' size="4">*</font>类型:</label>
+                  <div class="layui-input-block">
+                    <select  name="type" id="id_type">
+                        <option value="1">管理员</option>
+                        <option value="2">员工</option>
+                    </select>
+                  </div>
+                </div>
+
+                  <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="username" lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
+                  </div>
+                </div>
+
+                  <div class="layui-col-lg6">
+                    <label class="layui-form-label"><font color='red' size="4">*</font>密码:</label>
+                    <div class="layui-input-block">
+                      <input type="password" name="password" placeholder="请输入密码" autocomplete="off" class="layui-input">
+                        <div class="layui-word-aux">默认密码:1111;<br>修改信息时如果留空,则不修改密码。</div>
+                    </div>
+                  </div>
+
+                <div class="layui-col-lg6">
+                    <label class="layui-form-label"><font color='red' size="4">*</font>所属部门:</label>
+                    <div class="layui-input-block" id="department_selecter">
+                      <select name="department" xm-select="selectDepartment" xm-select-radio lay-verify="required">
+                      </select>
+                    </div>
+                  </div>
+
+                <div class="layui-col-lg6">
+                  <label class="layui-form-label">是否在职:</label>
+                  <div class="layui-input-block">
+                    <input type="checkbox" name="is_active" lay-skin="switch" lay-text="是|否" checked="" value="1">
+                  </div>
+                </div>
+
+                <button class="layui-btn" id="submit_btn" lay-submit lay-filter="component-form-element" style="display: none">保存</button>
+
+              </div>
+            </form>
+          </div>
+        </div>
+        </div>
+    </div>
+</div>
+
+  <script src="../../layuiadmin/layui/layui.js"></script>
+  <script>
+  layui.config({
+    base: '../../../layuiadmin/' //静态资源所在路径
+  }).extend({
+    index: 'lib/index',
+    utils:'utils',
+    formSelects: 'formSelects-v4'
+  }).use(['index','utils', 'form', 'formSelects'], function(){
+    var $ = layui.$
+    ,admin = layui.admin
+    ,element = layui.element
+    ,form = layui.form
+    ,formSelects = layui.formSelects
+    ,dep_formSelects = layui.formSelects;
+
+    var editdata = null;
+    var department = '';
+    var id = layui.view.getParameterByName('id');
+
+    form.render(null, 'component-form-element');
+    element.render('breadcrumb', 'breadcrumb');
+
+    if(id){
+      $('#id_type').attr('disabled', 'disabled');
+      department = parent.layui.table.editdata.department;
+      editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
+      editdata.password = '';
+      var url = '/admin/user/' + id + '/';
+      var type = 'put';
+      if (editdata.is_active == 1) {
+        editdata.status = true;
+      } else {
+        editdata.status = false;
+      }
+    }else{
+        url = '/admin/user/';
+        type = 'post';
+    }
+
+    form.val("component-form-element", {'password':'1111'});
+    if(editdata){
+        form.val("component-form-element", editdata);
+    }
+
+    dep_formSelects.value('selectDepartment', []);
+    admin.req({
+        url: '/admin/department/tree/'
+        ,done: function(res){
+            dep_formSelects.data('selectDepartment', 'local', {
+            arr: res.data,
+            tree: {
+                //在点击节点的时候, 如果没有子级数据, 会触发此事件
+                nextClick: function(id, item, callback){
+                    return false;
+                    },
+                }
+            });
+            dep_formSelects.value('selectDepartment', [department]);
+        }
+    });
+
+    form.on('submit(component-form-element)', function(data){
+      var submitData = data.field;
+
+      admin.req({
+        url: url
+            ,type: type
+        ,data: submitData
+        ,done: function(res){
+            parent.layui.onSubmitChild(res.data);
+        }
+      });
+
+      return false;
+    });
+    parent.layui.submitChild = function () {
+      $("#submit_btn").click();
+    };
+
+  });
+  </script>
+</body>
+</html>

+ 147 - 80
uis/admin/user/index.html

@@ -2,117 +2,184 @@
 <html>
 <head>
   <meta charset="utf-8">
-  <title>修改密码</title>
+  <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">
-        .input {
-            width: 70%;
-            border-radius: 2px;
-            height: 30px;
-            border-width: 1px;
-            border-color: lightgray;
-            border-style: solid;
-            background-color: white;
-            padding-left: 3px;
-            margin-top: 20px;
-        }
-    </style>
 </head>
 <body>
 
   <div class="layui-fluid">
     <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><font color='red' size="4">*</font>商品提成比例:</label>
-                  <input type="text" name="package_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
-                  <label><font color='red' size="4" style="font-size: small;">佣金=商品优惠价*提成比例</font></label>
+        <div class="layui-row layui-col-space15">
+          <div class="layui-col-md12">
+
+            <div class="LAY-btns" style="margin-bottom: 10px;">
+              <button class="layui-btn layui-btn-sm" id="btn_add"><i class="layui-icon layui-icon-add-circle"></i>添加</button>
+              <button class="layui-btn layui-btn-sm" id="btn_query"><i class="layui-icon layui-icon-search"></i>查询</button>
+            </div>
+
+            <table class="layui-hide" id="datagrid" lay-filter="datagrid-operate"></table>
+
+            <script type="text/html" id="datagrid-operate-bar">
+                <div class="layui-btn-group">
+                  <a class="layui-btn layui-btn-xs" lay-event="edit">修改</a>
+                </div>
+            </script>
+          </div>
+        </div>
+        </div>
+    </div>
+  </div>
+
+  <div id="dlg_query" style="display: none">
+    <div class="layui-card-body" pad15>
+        <form class="layui-form" lay-filter="query-form-element">
+          <div class="layui-row layui-col-space10 layui-form-item">
+              <div class="layui-col-xs12 layui-col-sm12">
+                <label class="layui-form-label">在职:</label>
+                <div class="layui-input-block">
+                    <select  name="is_active">
+                        <option value="" selected></option>
+                        <option value="1">是</option>
+                        <option value="0">否</option>
+                    </select>
                 </div>
-                <div>
-                    <label ><font color='red' size="4">*</font>整车提成比例:</label>
-                    <input type="text" name="vehicle_percentage" lay-verify="required|numberGtZ" autocomplete="off" class="input">
-                    <label><font color='red' style="font-size: small;">佣金=车型定金*提成比例</font></label>
+            </div>
+              <div class="layui-col-xs12 layui-col-sm12">
+                <label class="layui-form-label">类型:</label>
+                <div class="layui-input-block">
+                    <select  name="type">
+                        <option value="" selected></option>
+                        <option value="1">管理员</option>
+                        <option value="2">员工</option>
+                    </select>
                 </div>
-              <div class="layui-form-item">
+            </div>
+
+            <div class="layui-col-xs12 layui-col-sm12">
+                <label class="layui-form-label">员工账号:</label>
                 <div class="layui-input-block">
-                  <button class="layui-btn" lay-submit lay-filter="component-form-element">保存</button>
+                    <input type="text" name="username" autocomplete="off" class="layui-input">
                 </div>
-              </div>
-              </div>
-            </form>
-          </div>
-        </div>
-      </div>
+            </div>
 
 
-  <script src="../../layuiadmin/layui/layui.js"></script>
+          </div>
+          <div class="layui-form-item" style="display: none">
+                <button id="query_search" class="layui-btn" lay-submit lay-filter="query-form-element">查询</button>
+          </div>
+        </form>
+    </div>
+   </div>
+
+  <script src="../../layuiadmin/layui/layui.js?t=1"></script>
   <script>
+  var _params = '';
   layui.config({
     base: '../../../layuiadmin/' //静态资源所在路径
   }).extend({
     index: 'lib/index' //主入口模块
-  }).use(['index', 'form', 'utils'], function(){
+  }).use(['index', 'table'], function(){
     var $ = layui.$
-    ,admin = layui.admin
-    ,element = layui.element
     ,form = layui.form;
-    form.render(null, 'component-form-element');
-    element.render('breadcrumb', 'breadcrumb');
-
-    admin.req({
-        url: '/tenant/config/',
-        done: function (res) {
-            var data = res.data;
-            var edit_data = {};
-            for(var i in data) {
-                if (data[i].property === 'package_percentage'){
-                    edit_data['package_percentage'] = data[i].value;
-                }else if (data[i].property === 'vehicle_percentage') {
-                    edit_data['vehicle_percentage'] = data[i].value;
-                }
-            }
-            form.val("component-form-element", edit_data);
-            form.render();
-        }
-    });
+    var table = layui.table;
 
-    form.on('submit(component-form-element)', function(data){
-      var save_data = [];
-      if (data.field['package_percentage']){
-          save_data.push({key: 'package_percentage', value: data.field['package_percentage']})
+    table.render({
+      elem: '#datagrid'
+      ,url: '/admin/user/'
+      ,cols: [[
+        {field:'username', title:'登录账号',width: 200}
+        ,{field:'department_text', title:'所属部门', width:300}
+        ,{field:'type_text', title:'类型', width:90}
+        ,{field:'status_text', title:'状态', width:90}
+        ,{width:80, align:'left',title: '操作', fixed: 'right', toolbar: '#datagrid-operate-bar'}
+      ]]
+      ,page: true
+      ,height: 'full-104'
+      ,done: function () {
+        //layui.index.removeNoPermButtons();
+        layer.closeAll('loading');
       }
-      if (data.field['vehicle_percentage']){
-          save_data.push({key: 'vehicle_percentage', value: data.field['vehicle_percentage']})
+    });
+
+    //监听工具条
+    table.on('tool(datagrid-operate)', function(obj){
+      var data = obj.data;
+        if(obj.event === 'edit'){
+        table.editdata = data;
+        layer.open({
+          type: 2,
+          title: '修改',
+          shadeClose: false,
+          area: ['550px', '85%'],
+          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: 'edit.html?id='+data.id
+        });
       }
-      admin.req({
-        url: '/tenant/config/'
-        ,data: {data: JSON.stringify(save_data)}
-        ,type: 'post'
-        ,done: function(res){
-            layer.open({
-                 type: 1
-                ,content: '<div style="padding: 20px 100px;">保存成功</div>'
-                ,btn: '关闭'
-                ,btnAlign: 'c' //按钮居中
-                ,shade: 0 //不显示遮罩
-                ,yes: function(){
-                  layer.closeAll();
-                  //admin.exit();
-                }
-            });
-        }
-      });
+    });
 
+    $('#btn_add').on('click', function(){
+        layer.open({
+          type: 2,
+          title: '添加',
+          shadeClose: false,
+          area: ['550px', '85%'],
+          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: 'edit.html'
+        });
+    });
+
+    $('#btn_query').on('click', function(){
+        layer.open({
+          type: 1,
+          shadeClose: true,
+          area: ['500px', '370px'],
+          title: '查询',
+          btn: ['查询'],
+          yes: function(index, dom){
+             $('#query_search').click();
+          },
+          content: $('#dlg_query')
+        });
+    });
+
+    form.on('submit(query-form-element)', function(data){
+      //layer.msg(JSON.stringify(data.field));
+      _params = data.field;
+      table.reload('datagrid', {
+          where: data.field,
+          page:{curr:1}
+      });
+      layer.closeAll();
       return false;
     });
 
   });
   </script>
 </body>
-</html>
+</html>
+