From 598d7ae998dbbb6afdc128ca2ec6154275aec5ba Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 18 Aug 2020 07:14:48 +0800 Subject: [PATCH 1/2] cuoti limit 100 --- test_mini/pages/lianxi/main.js | 4 ++-- test_mini/pages/login/login.js | 2 +- test_mini/pages/moni/note.wxml | 5 ++--- test_mini/pages/quota/quota.wxml | 6 +++--- test_mini/project.config.json | 8 ++++---- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/test_mini/pages/lianxi/main.js b/test_mini/pages/lianxi/main.js index 71e1b16..7b8999c 100644 --- a/test_mini/pages/lianxi/main.js +++ b/test_mini/pages/lianxi/main.js @@ -175,8 +175,8 @@ Page({ if (isright == false && tm_current.user_answer != undefined) { tm_current.dtime = util.formatTime(new Date()) that.data.ctms.unshift(tm_current) - if (that.data.ctms.length > 40) { - that.data.ctms.length = 40 + if (that.data.ctms.length > 100) { + that.data.ctms.length = 100 } } return isright diff --git a/test_mini/pages/login/login.js b/test_mini/pages/login/login.js index 8491569..56b237e 100644 --- a/test_mini/pages/login/login.js +++ b/test_mini/pages/login/login.js @@ -130,7 +130,7 @@ Page({ } }, isPhone: function(phone){ - var phoneReg = /^[1][3,4,5,7,8,9][0-9]{9}$/; + var phoneReg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/; if (phoneReg.test(phone)) { return true; } else { diff --git a/test_mini/pages/moni/note.wxml b/test_mini/pages/moni/note.wxml index 3f34242..29121dd 100644 --- a/test_mini/pages/moni/note.wxml +++ b/test_mini/pages/moni/note.wxml @@ -10,14 +10,13 @@ {{panduan_count}}道判断题,每题{{panduan_score}}分 多选题漏选每个正确选项得1分,错选0分 满分{{total_score}};{{pass_score}}以上通过 - - 2.答题须知 进入答题后请不要后退或返回桌面 用户可点击上一题/下一题进行切换答题 可点击答题卡复查 请合理安排时间答题,可提前交卷,超时会自动提交 + 开始考试 - 开始考试 + \ No newline at end of file diff --git a/test_mini/pages/quota/quota.wxml b/test_mini/pages/quota/quota.wxml index b328913..9dce566 100644 --- a/test_mini/pages/quota/quota.wxml +++ b/test_mini/pages/quota/quota.wxml @@ -11,17 +11,17 @@ {{item.cityName}} {{item.examDate}} - + 考试时间: {{item.examTime}} - 截止报名: {{item.endSignDate}} - + 联系电话:{{item.linkContact}} - + {{item.planName}} diff --git a/test_mini/project.config.json b/test_mini/project.config.json index ab52b0f..51718bc 100644 --- a/test_mini/project.config.json +++ b/test_mini/project.config.json @@ -18,15 +18,15 @@ "checkInvalidKey": true, "checkSiteMap": true, "uploadWithSourceMap": true, + "compileHotReLoad": false, "babelSetting": { "ignore": [], "disablePlugins": [], "outputPath": "" }, - "useCompilerModule": true, - "userConfirmedUseCompilerModuleSwitch": false, - "compileHotReLoad": false, - "useIsolateContext": true + "useIsolateContext": true, + "useCompilerModule": false, + "userConfirmedUseCompilerModuleSwitch": false }, "compileType": "miniprogram", "libVersion": "2.10.3", From 2715e99450f3cdae3acc84bf5a9ae900bab0b84b Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 23 Aug 2020 22:21:55 +0800 Subject: [PATCH 2/2] admin perm --- test_client/src/App.vue | 9 +- test_client/src/api/crm.js | 9 ++ .../src/components/Pagination/index.vue | 6 +- test_client/src/router/index.js | 2 +- test_client/src/views/crm/company.vue | 33 +++- test_client/src/views/crm/companychose.vue | 147 ++++++++++++++++++ test_client/src/views/crm/consumer.vue | 47 +++++- test_server/crm/serializers.py | 2 + test_server/crm/views.py | 29 +++- 9 files changed, 271 insertions(+), 13 deletions(-) create mode 100644 test_client/src/views/crm/companychose.vue diff --git a/test_client/src/App.vue b/test_client/src/App.vue index ec9032c..01e47fe 100644 --- a/test_client/src/App.vue +++ b/test_client/src/App.vue @@ -3,7 +3,14 @@ - + diff --git a/test_client/src/views/crm/companychose.vue b/test_client/src/views/crm/companychose.vue new file mode 100644 index 0000000..6c8f72b --- /dev/null +++ b/test_client/src/views/crm/companychose.vue @@ -0,0 +1,147 @@ + + + diff --git a/test_client/src/views/crm/consumer.vue b/test_client/src/views/crm/consumer.vue index e546fc9..0b22314 100644 --- a/test_client/src/views/crm/consumer.vue +++ b/test_client/src/views/crm/consumer.vue @@ -228,14 +228,25 @@ - + + + @@ -281,6 +292,15 @@ 确认 + + + @@ -305,12 +325,14 @@ import { upUrl } from "@/api/file"; import { getUserList } from "@/api/user" import { getToken } from "@/utils/auth"; import Pagination from "@/components/Pagination"; // secondary package based on el-pagination +import Companychose from "@/views/crm/companychose" const defaultConsumer = { id: "", name: "", username: "", company: null, + company_:{}, subjects: [], workscope: null, role:3 @@ -321,7 +343,7 @@ const listQuery = { search: "" }; export default { - components: { Pagination }, + components: { Pagination, Companychose }, watch: { filterOrgText(val) { this.$refs.tree.filter(val); @@ -329,6 +351,7 @@ export default { }, data() { return { + dgVisiable:false, tableKey: 0, showCreate: true, upUrl: upUrl(), @@ -470,7 +493,7 @@ export default { }, searchCompany(val) { this.treeLoding = true; - getCompanyList({search:val}).then(response => { + getCompanyList({search:val, perm:'all'}).then(response => { this.companyData = genTree(response.data.results); this.treeLoding = false; }); @@ -512,6 +535,9 @@ export default { }, handleEdit(scope) { this.consumer = Object.assign({}, scope.row); // copy obj + if(this.consumer.company_ == null){ + this.consumer.company_ = {} + } this.dialogType = "edit"; this.dialogVisible = true; this.$nextTick(() => { @@ -659,7 +685,18 @@ export default { this.adminOptions = genTree(res.data.results) }) } - } + }, + choose() { + this.dgVisiable = true; + }, + chooseComplete(val) { + this.dgVisiable = false; + if (val) { + this.consumer.company_ = val + this.consumer.company = val.id + + } + }, } }; diff --git a/test_server/crm/serializers.py b/test_server/crm/serializers.py index ff0e668..f49f286 100644 --- a/test_server/crm/serializers.py +++ b/test_server/crm/serializers.py @@ -21,6 +21,7 @@ class CompanySerializer(serializers.ModelSerializer): """ create_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True) update_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True) + create_admin_name = serializers.StringRelatedField(source='create_admin', read_only=True) class Meta: model = Company fields = '__all__' @@ -33,6 +34,7 @@ class ConsumerSerializer(serializers.ModelSerializer): create_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True) update_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True) company_name = serializers.StringRelatedField(source='company', read_only=True) + company_ = CompanySerializer(source='company', read_only=True) subjects_name = serializers.StringRelatedField(source='subjects', many=True, read_only=True) workscope_name = serializers.StringRelatedField(source='workscope', read_only=True) role_name = serializers.StringRelatedField(source='role', read_only=True) diff --git a/test_server/crm/views.py b/test_server/crm/views.py index 100d8b4..2d22e86 100644 --- a/test_server/crm/views.py +++ b/test_server/crm/views.py @@ -32,6 +32,7 @@ from .models import Company, Consumer, PaySubject, SendCode, ConsumerPerm, Consu from .serializers import CompanySerializer, ConsumerSerializer, ConsumerPermSerializer, ConsumerRoleSerializer, ConsumerDetailSerializer import requests from lxml import etree +from rbac.models import UserProfile appid = 'wxf1e9471c93f05ad6' secret = '4bf7f9bd6c52634586bbe792a1f0a834' @@ -95,7 +96,7 @@ class CompanyViewSet(ModelViewSet): 客户企业:增删改查 """ perms_map = [ - {'get': 'company_list'}, {'post': 'company_create'}, + {'get': 'company_view'}, {'post': 'company_create'}, {'put': 'company_update'}, {'delete': 'company_delete'}] queryset = Company.objects.filter(is_delete=0).all() serializer_class = CompanySerializer @@ -105,12 +106,36 @@ class CompanyViewSet(ModelViewSet): ordering_fields = ('id',) ordering = ['-id'] + def get_queryset(self): + queryset = self.queryset + if self.request.query_params.get('perm', None): + return queryset + if not self.request.user.is_superuser: + queryset = queryset.filter(create_admin = self.request.user) + return queryset + + @action(methods=['put'], detail=True, url_name='company_transfer',perms_map=[{'*':'company_transfer'}]) + def transfer(self, request, *args, **kwargs): + """ + 转交 + """ + obj = self.get_object() + adminname = request.data.get('admin', None) + if adminname and UserProfile.objects.filter(username=adminname).exists(): + adminobj = UserProfile.objects.get(username=adminname) + obj.create_admin = adminobj + obj.save() + Consumer.objects.filter(company=obj).update(create_admin=adminobj) + return Response(status=status.HTTP_200_OK) + else: + return Response({"error":"账号错误"}) + class ConsumerViewSet(ModelViewSet): """ 学员:增删改查 """ perms_map = [ - {'get': 'consumer_list'}, {'post': 'consumer_create'}, + {'get': 'consumer_view'}, {'post': 'consumer_create'}, {'put': 'consumer_update'}, {'delete': 'consumer_delete'}] queryset = Consumer.objects.all() serializer_class = ConsumerSerializer