chenjunkai 5 yıl önce
ebeveyn
işleme
c8dda20768
6 değiştirilmiş dosya ile 114 ekleme ve 15 silme
  1. 47 3
      controller/User.py
  2. 1 0
      langer/urls.py
  3. 15 1
      model/models.py
  4. 28 4
      web/index.html
  5. 2 0
      web/js/jqhttpsdk.js
  6. 21 7
      web/userTab.html

+ 47 - 3
controller/User.py

@@ -19,7 +19,7 @@ from django.views.decorators.csrf import csrf_exempt
 from django.utils.decorators import method_decorator
 from object.ResponseObject import ResponseObject
 from django.contrib.auth.hashers import make_password, check_password
-from model.models import UserModel, LangSetModel, LangAreaModel
+from model.models import UserModel, LangSetModel, LangAreaModel, LangPermModel
 import time
 from object.TokenObject import TokenObject
 
@@ -46,7 +46,7 @@ class registerView(TemplateView):
             create_dict = {
                 'username': username,
                 'password': make_password(password),
-                'role_id':role_id,
+                'role_id': role_id,
                 'addTime': nowTime,
                 'updTime': nowTime}
             try:
@@ -111,9 +111,10 @@ class queryView(TemplateView):
             user_qs = UserModel.objects.filter(id=userID, username='admin')
             if not user_qs.exists():
                 return response.json(403)
-            um_qs = UserModel.objects.filter().values('id', 'username','role_id')
+            um_qs = UserModel.objects.filter().values('id', 'username', 'role_id')
 
             ls_qs = LangSetModel.objects.filter().values('user__id', 'lang__lang')
+            lp_qs = LangPermModel.objects.filter().values('user__id', 'lang__lang')
             res = []
             for um in um_qs:
                 for ls in ls_qs:
@@ -121,6 +122,11 @@ class queryView(TemplateView):
                         if 'lang_arr' not in um:
                             um['lang_arr'] = []
                         um['lang_arr'].append(ls['lang__lang'])
+                for lp in lp_qs:
+                    if um['id'] == lp['user__id']:
+                        if 'lp_arr' not in um:
+                            um['lp_arr'] = []
+                        um['lp_arr'].append(lp['lang__lang'])
                 res.append(um)
             return response.json(0, res)
         else:
@@ -143,6 +149,7 @@ class updateView(TemplateView):
         token = request_dict.get('token', None)
         id = request_dict.get('id', None)
         langSetArr = request_dict.get('langSetArr', None)
+        langPermArr = request_dict.get('langPermArr', None)
         username = request_dict.get('username', None)
         role_id = request_dict.get('role_id', None)
         nowTime = int(time.time())
@@ -155,9 +162,13 @@ class updateView(TemplateView):
             user.save()
             if id and langSetArr:
                 LangSetModel.objects.filter(user__id=id).delete()
+                LangPermModel.objects.filter(user__id=id).delete()
                 for ls in langSetArr:
                     LangSetModel.objects.create(lang=LangAreaModel.objects.get(id=ls),
                                                 user=UserModel.objects.get(id=id), addTime=nowTime, updTime=nowTime)
+                for lp in langPermArr:
+                    LangPermModel.objects.create(lang=LangAreaModel.objects.get(id=lp),
+                                                 user=UserModel.objects.get(id=id), addTime=nowTime, updTime=nowTime)
                 return response.json(0)
             else:
                 return response.json(0)
@@ -189,3 +200,36 @@ class deleteView(TemplateView):
                 return response.json(0)
         else:
             return response.json(tko.code)
+
+
+class initView(TemplateView):
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = json.loads(request.body.decode('utf-8'))
+        return self.validate(request_dict)
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        request_dict = request.GET
+        return self.validate(request_dict)
+
+    def validate(self, request_dict):
+        response = ResponseObject()
+        token = request_dict.get('token', None)
+        tko = TokenObject(token)
+        if tko.code == 0:
+            userID = tko.userID
+            user_qs = UserModel.objects.filter(id=userID, username='admin')
+            if user_qs.exists():
+                is_admin = 1
+            else:
+                is_admin = 0
+            lang_perm_ql = LangPermModel.objects.filter(user__id=userID).values_list('lang__lang', flat=True)
+            lang_perm_ls = list(lang_perm_ql)
+            res = {
+                'user_perm':is_admin,
+                'lang_perm_ls': lang_perm_ls
+            }
+            return response.json(0, res)
+        else:
+            return response.json(tko.code)

+ 1 - 0
langer/urls.py

@@ -9,6 +9,7 @@ urlpatterns = [
     path('user/query', User.queryView.as_view()),
     path('user/delete', User.deleteView.as_view()),
     path('user/update', User.updateView.as_view()),
+    path('user/init', User.initView.as_view()),
     re_path('langSet/(?P<operation>.*)', LangSet.LangSetView.as_view()),
     re_path('langWord/(?P<operation>.*)', LangWord.LangWordView.as_view()),
     re_path('langArea/(?P<operation>.*)', LangArea.LangAreaView.as_view()),

+ 15 - 1
model/models.py

@@ -148,4 +148,18 @@ class skuConditionModel(models.Model):
     class Meta:
         ordering = ('-id',)
         verbose_name = 'sku条件表'
-        db_table = 'sku_condition_name'
+        db_table = 'sku_condition_name'
+
+
+# 用户关联可编辑语种配置
+class LangPermModel(models.Model):
+    id = models.AutoField(primary_key=True)
+    user = models.ForeignKey(UserModel, verbose_name='用户表id', to_field='id', on_delete=models.CASCADE)
+    lang = models.ForeignKey(LangAreaModel, verbose_name='关联语种id', to_field='id', on_delete=models.CASCADE)
+    addTime = models.IntegerField(verbose_name='添加时间', default=0)
+    updTime = models.IntegerField(verbose_name='更新时间', default=0)
+
+    class Meta:
+        ordering = ('-addTime',)
+        verbose_name = '用户关联语种配置'
+        db_table = 'lang_perm'

+ 28 - 4
web/index.html

@@ -185,7 +185,7 @@
     var orderByupdate = 0
     var page = 1
     var line = 10
-
+    var initData
     $(function () {
         toastr.options = {
             "closeButton": true,
@@ -282,6 +282,21 @@
                 }
             }
         );
+
+        $.postJSON(
+            http_ip_prot + 'user/init', JSON.stringify(post_data),
+            function (data) {
+                if (data['code'] == 0) {
+                    console.log('initData__start')
+                    console.log(data)
+                    console.log('initData__end')
+                    initData = data['res']
+                } else {
+                    window.location.href = "http://" + domain + ":7724/web/login.html";
+                    alert(data['msg'])
+                }
+            }
+        );
     }
 
     let la_list
@@ -442,12 +457,21 @@
 
         let langKey = $($this).parent().parent().children().eq(1).text()
         $('#modal-container-593541').modal('show')
+        let user_perm = initData['user_perm']
+        console.log(initData)
         // let post_data = {'token': $.cookie('access_token')};
-        let html_per = '<label for="lang_key_edit">KEY</label><input class="form-control" type="text" id="lang_key_edit" oldkey="' + langKey + '" value="' + langKey + '"> '
+        let html_per = '<label for="lang_key_edit">KEY</label><input class="form-control" '+(user_perm==1?'':'disabled="disabled"')+' type="text" id="lang_key_edit" oldkey="' + langKey + '" value="' + langKey + '"> '
         $.each(la_list, function (idx, obj) {
-            console.log(obj);
+            let lang_perm_ls = initData['lang_perm_ls']
+            let check_perm_flag = $.inArray(obj['lang'], lang_perm_ls)
+            if (check_perm_flag >= 0) {
+                var inputAttr = ''
+            } else {
+                var inputAttr = 'disabled="disabled"'
+            }
+            //console.log(obj);
             html_per += ('<label for="InputLangArea">' + obj['lang'] + ':</label>' +
-                '<input type="text" class="form-control" lang="' + obj['lang'] + '" value="' + (lw_data[langKey][obj['lang']] ? lw_data[langKey][obj['lang']] : '') + '"/>')
+                '<input type="text" ' + inputAttr + ' class="form-control disabled" lang="' + obj['lang'] + '" value="' + (lw_data[langKey][obj['lang']] ? lw_data[langKey][obj['lang']] : '') + '"/>')
         });
         // console.log(html_per)
         $('#edit_model_form').html(html_per)

+ 2 - 0
web/js/jqhttpsdk.js

@@ -13,6 +13,8 @@ var http_ip_prot = convertTemp()+ "/";
 	if( http_ip_prot.indexOf("zositech")==-1){
 		http_ip_prot="http://192.168.136.39:8000/";
     	http_ip_prot = 'http://47.107.129.126:7724/';
+    	// http_ip_prot = 'http://192.168.136.40:7724/';
+    	// let http_ip_prot = 'http://192.168.136.40:7724/';
 		console.log(http_ip_prot);
 	}else{
 		console.log(http_ip_prot);

+ 21 - 7
web/userTab.html

@@ -256,10 +256,11 @@
         $('#modal-container-edit').modal('show')
         let user_lang_arr
         let html_edit = '<label for="editDataInput" class="form-group">用户名:</label>'
-
+        let user_lang_perm
         $.each(index_data, function (idx, obj) {
             if (id == obj['id']) {
                 user_lang_arr = obj['lang_arr']
+                user_lang_perm = obj['lp_arr']
                 html_edit += '<input type="text" class="form-control" id="editDataInput" value="' + obj['username'] + '" lid="' + id + '">'
                 html_edit += '<label for="editDataRole" class="form-group">角色:</label>'
                 html_edit += '<input type="text" class="form-control" id="editDataRole" value="' + obj['role_id'] + '" lid="' + id + '">'
@@ -268,9 +269,10 @@
 
 
 
-        html_edit += '<hr><span class="form-group">显示语言:</span>';
+        html_edit += '<hr><span class="form-group">显示语言:</span><span class="float-right">可否编辑</span>';
         $.each(lang_data, function (idx, obj) {
             let checkbox_val=''
+            let check_perm_val=''
             if(user_lang_arr){
                 let check_flag = $.inArray(obj['lang'],user_lang_arr)
                 console.log(check_flag)
@@ -278,27 +280,39 @@
                     checkbox_val+='checked="checked"'
                 }
             }
-            html_edit += ('<label class="form-control"><input type="checkbox" '+checkbox_val+' aria-label="Checkbox for following text input" value="' + obj['id'] + '">' + obj['lang'] + '</label>')
+            if(user_lang_perm){
+                let check_perm_flag = $.inArray(obj['lang'],user_lang_perm)
+                console.log(check_perm_flag)
+                if(check_perm_flag>=0){
+                    check_perm_val+='checked="checked"'
+                }
+            }
+            html_edit += ('<label class="form-control"><input name="langsetname" type="checkbox" '+checkbox_val+' aria-label="Checkbox for following text input" value="' + obj['id'] + '">' + obj['lang'] + '<input name="langpermname" type="checkbox" '+check_perm_val+' aria-label="Checkbox for following text input" class="float-right" value="' + obj['id'] + '"></label>')
         })
-        console.log(user_lang_arr)
+        //console.log(user_lang_arr)
 
         $('#edit_model_form').html(html_edit)
     }
 
     function editRow() {
         let sub_lang_arr = []
-        $.each($('input:checkbox:checked'), function () {
+        let sub_perm_arr = []
+        $.each($('input[name="langsetname"]:checked'), function () {
             sub_lang_arr.push($(this).val())
         });
+        $.each($('input[name="langpermname"]:checked'), function () {
+            sub_perm_arr.push($(this).val())
+        });
         console.log('--------')
-        console.log(sub_lang_arr)
+        console.log(sub_perm_arr)
         console.log('--------')
         let post_data = {
             'token': $.cookie('access_token'),
             'id': $('#editDataInput').attr('lid'),
             'username': $('#editDataInput').val(),
             'role_id': $('#editDataRole').val(),
-            'langSetArr': sub_lang_arr
+            'langSetArr': sub_lang_arr,
+            'langPermArr':sub_perm_arr,
         }
         console.log(post_data)
         $.postJSON(