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_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