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 @@
+
+
+
+
+ 刷新重置
+
+
+
+
+ {{ scope.row.name }}
+
+
+
+ {{ scope.row.create_time }}
+
+
+
+
+ 选择
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确认
+
+
+
+
+
+
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_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 631541b..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": ""
},
+ "useIsolateContext": true,
"useCompilerModule": false,
- "userConfirmedUseCompilerModuleSwitch": false,
- "compileHotReLoad": false,
- "useIsolateContext": true
+ "userConfirmedUseCompilerModuleSwitch": false
},
"compileType": "miniprogram",
"libVersion": "2.10.3",
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