diff --git a/test_client/src/api/crm.js b/test_client/src/api/crm.js
index 2928e23..8e19519 100644
--- a/test_client/src/api/crm.js
+++ b/test_client/src/api/crm.js
@@ -94,6 +94,13 @@ export function unbindConsumer(id) {
})
}
+export function claimConsumer(id) {
+ return request({
+ url: `/crm/consumer/${id}/claim/`,
+ method: 'put',
+ })
+}
+
export function getConsumerRoleAll(query) {
return request({
url: '/crm/consumerrole/',
diff --git a/test_client/src/router/index.js b/test_client/src/router/index.js
index 805bc94..b5c6636 100644
--- a/test_client/src/router/index.js
+++ b/test_client/src/router/index.js
@@ -116,6 +116,12 @@ export const asyncRoutes = [
component: () => import('@/views/crm/consumer.vue'),
meta: { title: '学员列表', icon: '', perms: ['consumer_view'] }
},
+ {
+ path: 'claim',
+ name: 'Claim',
+ component: () => import('@/views/crm/claim.vue'),
+ meta: { title: '认领学员', icon: '', perms: ['consumer_view'] }
+ },
{
path: 'consumerrule',
name: 'ConsumerRule',
diff --git a/test_client/src/store/getters.js b/test_client/src/store/getters.js
index 1854b88..389dde4 100644
--- a/test_client/src/store/getters.js
+++ b/test_client/src/store/getters.js
@@ -4,6 +4,7 @@ const getters = {
token: state => state.user.token,
avatar: state => state.user.avatar,
name: state => state.user.name,
+ username: state=> state.user.username,
perms: state => state.user.perms,
permission_routes: state => state.permission.routes
}
diff --git a/test_client/src/views/crm/claim.vue b/test_client/src/views/crm/claim.vue
new file mode 100644
index 0000000..f99e89e
--- /dev/null
+++ b/test_client/src/views/crm/claim.vue
@@ -0,0 +1,177 @@
+
+
+
+
+ 搜索
+ 刷新重置
+
+
+
+
+ {{ scope.row.name }}
+
+
+ {{ scope.row.username }}
+
+
+ {{ scope.row.openid }}
+
+
+ {{ scope.row.role_name }}
+
+
+ {{ scope.row.company_name }}
+
+
+
+ {{ item }}
+
+
+
+
+ {{ scope.row.workscope_name }}
+
+
+
+
+ {{ scope.row.create_admin_.username }}/
+ {{ scope.row.create_time.substring(0,10) }}
+
+
+
+
+
+ 认领
+
+
+
+
+
+
+
+
+
+
diff --git a/test_client/src/views/crm/consumer.vue b/test_client/src/views/crm/consumer.vue
index 21c1180..c927b6c 100644
--- a/test_client/src/views/crm/consumer.vue
+++ b/test_client/src/views/crm/consumer.vue
@@ -182,11 +182,11 @@
- {{ scope.row.create_admin_.username }}/
+ {{ scope.row.create_admin_.username }}/
{{ scope.row.create_time.substring(0,10) }}
-
+
{
// res.data.content = res.data.content.replace(/"media/g, '"'+getApp().globalData.mediahost + '/media').replace(/\
{},
+ })
+ }).catch(res=>{
+ wx.hideLoading({
+ complete: (res) => {},
+ })
})
},
diff --git a/test_mini/pages/article/detail.wxss b/test_mini/pages/article/detail.wxss
index bda2f6d..ac30404 100644
--- a/test_mini/pages/article/detail.wxss
+++ b/test_mini/pages/article/detail.wxss
@@ -1 +1,7 @@
-/* pages/article/detail.wxss */
\ No newline at end of file
+/* pages/article/detail.wxss */
+.weui-article {
+padding: 0px 12px;
+}
+.page__title {
+ font-size: 18px;
+}
\ No newline at end of file
diff --git a/test_mini/pages/article/index.wxml b/test_mini/pages/article/index.wxml
index ae9acb4..c830c0f 100644
--- a/test_mini/pages/article/index.wxml
+++ b/test_mini/pages/article/index.wxml
@@ -14,7 +14,7 @@
- 查看详情
+
diff --git a/test_mini/project.config.json b/test_mini/project.config.json
index 631541b..ab52b0f 100644
--- a/test_mini/project.config.json
+++ b/test_mini/project.config.json
@@ -23,7 +23,7 @@
"disablePlugins": [],
"outputPath": ""
},
- "useCompilerModule": false,
+ "useCompilerModule": true,
"userConfirmedUseCompilerModuleSwitch": false,
"compileHotReLoad": false,
"useIsolateContext": true
diff --git a/test_server/crm/filters.py b/test_server/crm/filters.py
index eb5c305..9ca0535 100644
--- a/test_server/crm/filters.py
+++ b/test_server/crm/filters.py
@@ -8,4 +8,4 @@ class ConsumerFilter(filters.FilterSet):
class Meta:
model = Consumer
- fields = ['company', 'role', 'min_create', 'max_create', 'create_admin']
\ No newline at end of file
+ fields = ['company', 'role', 'min_create', 'max_create', 'create_admin', 'username']
\ No newline at end of file
diff --git a/test_server/crm/migrations/0023_auto_20200826_1444.py b/test_server/crm/migrations/0023_auto_20200826_1444.py
new file mode 100644
index 0000000..90222dd
--- /dev/null
+++ b/test_server/crm/migrations/0023_auto_20200826_1444.py
@@ -0,0 +1,21 @@
+# Generated by Django 3.0.4 on 2020-08-26 06:44
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('crm', '0022_consumer_exceed_date'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='consumer',
+ name='create_admin',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL),
+ ),
+ ]
diff --git a/test_server/crm/models.py b/test_server/crm/models.py
index 37a0c45..d6980b0 100644
--- a/test_server/crm/models.py
+++ b/test_server/crm/models.py
@@ -72,7 +72,7 @@ class Consumer(CommonModel):
ID_number = models.CharField('身份证号', max_length=100, null=True, blank=True)
realname = models.CharField('真实姓名', max_length=100, null=True, blank=True)
- create_admin = models.ForeignKey(UserProfile, default=1, on_delete=models.DO_NOTHING)
+ create_admin = models.ForeignKey(UserProfile, on_delete=models.SET_NULL, null=True, blank=True)
exceed_date = models.DateField('账号过期', null=True, blank=True)
diff --git a/test_server/crm/views.py b/test_server/crm/views.py
index 5b61523..34a707f 100644
--- a/test_server/crm/views.py
+++ b/test_server/crm/views.py
@@ -149,6 +149,8 @@ class ConsumerViewSet(ModelViewSet):
def get_queryset(self):
queryset = self.queryset
queryset = self.get_serializer_class().setup_eager_loading(queryset)
+ if self.request.query_params.get('adminoff', None):
+ return queryset.filter(create_admin=None)
if not self.request.user.is_superuser:
queryset = queryset.filter(create_admin = self.request.user)
return queryset
@@ -277,6 +279,7 @@ class ConsumerViewSet(ModelViewSet):
request.user.realname = request.data['realname']
request.user.save()
return Response(status=status.HTTP_200_OK)
+
@action(methods=['get'], detail=False,
url_path='candidate', url_name='consumer_candidate', perms_map=[{'*':'*'}])
@@ -419,6 +422,22 @@ class ConsumerViewSet(ModelViewSet):
def correctexceed(self, request):
Consumer.objects.exclude(exceed_date=None).update(exceed_date = datetime(2020,12,31))
return Response(status=status.HTTP_200_OK)
+
+ @action(methods=['get'], detail=False,
+ url_path='correctadmin', url_name='correct_admin', perms_map=[{'*':'correct_admin'}])
+ def correctadmin(self, request):
+ Consumer.objects.filter(name='').update(create_admin=None)
+ return Response(status=status.HTTP_200_OK)
+
+ @action(methods=['put'], detail=True, url_name='consumer_claim', perms_map=[{'*':'consumer_claim'}])
+ def claim(self, request, *args, **kwargs):
+ obj = self.get_object()
+ if obj.role.username and obj.create_admin is None:
+ obj.create_admin = request.user
+ obj.save()
+ return Response(status=status.HTTP_200_OK)
+ else:
+ return Response({"error":"认领失败!"})
class ConsumerMPLoginView(APIView):
"""
diff --git a/test_server/examtest/views.py b/test_server/examtest/views.py
index dc1236d..d0fb076 100644
--- a/test_server/examtest/views.py
+++ b/test_server/examtest/views.py
@@ -302,9 +302,12 @@ class ExamTestViewSet(ModelViewSet):
def export(self, request):
queryset = self.filter_queryset(self.get_queryset())
queryset = ExamTestListSerializer.setup_eager_loading(queryset) # 性能优化
+ if queryset.count()>1000:
+ return Response({'error':'数据量超过1000,请筛选后导出!'})
serializer = ExamTestListSerializer(instance=queryset, many=True)
path = export_test(serializer.data)
return Response({'path': path})
+
class PaperViewSet(ModelViewSet):
"""
押题卷增删改查