优化个人中心我协作的文集页面及功能
This commit is contained in:
parent
1adc56195f
commit
57d7217dc6
@ -1,5 +1,11 @@
|
||||
## 版本更新记录
|
||||
|
||||
### v0.6.9 2021-07
|
||||
|
||||
- [新增]后台管理中心的图片管理和附件管理功能;
|
||||
- [修复]vditor编辑器粘贴多图片文本时图片只有一张图的问题
|
||||
- [优化]个人中心我协作的文集页面及功能;
|
||||
|
||||
### v0.6.8 2021-06-27
|
||||
|
||||
- [新增]文档页面支持OGP协议;
|
||||
|
||||
@ -25,6 +25,31 @@ class ProjectSerializer(ModelSerializer):
|
||||
model = Project
|
||||
fields = ('__all__')
|
||||
|
||||
# 协作文集序列化器
|
||||
class ProjectCollaSerializer(ModelSerializer):
|
||||
project_id = serializers.SerializerMethodField(label="文集ID")
|
||||
project_name = serializers.SerializerMethodField(label="文集名称")
|
||||
username = serializers.SerializerMethodField(label='文集创建人')
|
||||
top_doc = serializers.SerializerMethodField(label="上级")
|
||||
|
||||
class Meta:
|
||||
model = ProjectCollaborator
|
||||
fields = ('__all__')
|
||||
|
||||
def get_project_name(self,obj):
|
||||
return obj.project.name
|
||||
|
||||
def get_project_id(self,obj):
|
||||
return obj.project.id
|
||||
|
||||
def get_username(self,obj):
|
||||
username = obj.project.create_user.username
|
||||
return username
|
||||
|
||||
def get_top_doc(self,obj):
|
||||
return 0
|
||||
|
||||
|
||||
# 文档序列化器
|
||||
class DocSerializer(ModelSerializer):
|
||||
|
||||
|
||||
@ -23,6 +23,7 @@ urlpatterns = [
|
||||
path('manage_project_doc_sort/',views_import.project_doc_sort,name='project_doc_sort'), # 导入文集文档排序
|
||||
path('manage_project_transfer/<int:pro_id>/',views.manage_project_transfer,name='manage_pro_transfer'), # 文集转让
|
||||
path('manage_pro_doc_sort/<int:pro_id>/',views.manage_project_doc_sort,name='manage_pro_doc_sort'), # 文集排序
|
||||
path('api/my_colla_list/', views.MyCollaList.as_view(), name="my_colla_list"), # 我的协作文集列表
|
||||
#################文档相关
|
||||
path('project-<int:pro_id>/doc-<int:doc_id>/', views.doc, name='doc'), # 文档浏览页
|
||||
path('create_doc/', views.create_doc, name="create_doc"), # 新建文档
|
||||
|
||||
@ -20,6 +20,7 @@ from django.db import transaction
|
||||
from django.utils.html import strip_tags
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from loguru import logger
|
||||
from app_api.serializers_app import *
|
||||
from app_doc.report_utils import *
|
||||
from app_admin.models import UserOptions,SysSetting
|
||||
from app_admin.decorators import check_headers,allow_report_file
|
||||
@ -849,6 +850,64 @@ def manage_pro_colla_self(request):
|
||||
return render(request,'app_doc/manage/manage_project_self_colla.html',locals())
|
||||
|
||||
|
||||
# 我协作的文集文档列表接口
|
||||
class MyCollaList(APIView):
|
||||
authentication_classes = (AppAuth, SessionAuthentication)
|
||||
|
||||
# 获取列表
|
||||
def get(self,request):
|
||||
pid = request.query_params.get('pid','')
|
||||
page_num = request.query_params.get('page', 1)
|
||||
limit = request.query_params.get('limit', 10)
|
||||
if pid == '':
|
||||
doc_data = ProjectCollaborator.objects.filter(user=request.user).order_by('-create_time')
|
||||
else:
|
||||
project = Project.objects.get(id=pid)
|
||||
doc_data = ProjectCollaborator.objects.filter(user=request.user,project=project).order_by('-create_time')
|
||||
page = PageNumberPagination() # 实例化一个分页器
|
||||
page.page_size = limit
|
||||
page_docs = page.paginate_queryset(doc_data, request, view=self) # 进行分页查询
|
||||
serializer = ProjectCollaSerializer(page_docs, many=True) # 对分页后的结果进行序列化处理
|
||||
colla_doc_list = []
|
||||
for s in serializer.data:
|
||||
item = {
|
||||
"project_id": s['project_id'],
|
||||
"project_name": s['project_name'],
|
||||
'role':s['role'],
|
||||
"top_doc": 0,
|
||||
'type':'project',
|
||||
'create_time':s['create_time'],
|
||||
'username':s['username'],
|
||||
# "checkArr": "0"
|
||||
}
|
||||
colla_doc_list.append(item)
|
||||
for doc in doc_data:
|
||||
doc_list = Doc.objects.filter(
|
||||
top_doc=doc.project.id,
|
||||
create_user=request.user
|
||||
).defer('content','pre_content')
|
||||
if doc_list.exists():
|
||||
for d in doc_list:
|
||||
item = {
|
||||
"project_id": d.id,
|
||||
"project_name": d.name,
|
||||
"top_doc": d.top_doc,
|
||||
'role':None,
|
||||
'type':'doc',
|
||||
'create_time':d.create_time,
|
||||
'username':d.create_user.username,
|
||||
}
|
||||
colla_doc_list.append(item)
|
||||
resp = {
|
||||
'code': 0,
|
||||
'data': colla_doc_list,
|
||||
# 'data':a,
|
||||
'count': doc_data.count()
|
||||
}
|
||||
|
||||
return Response(resp)
|
||||
|
||||
|
||||
# 转让文集
|
||||
@login_required()
|
||||
@require_http_methods(['GET',"POST"])
|
||||
|
||||
@ -12,58 +12,89 @@
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
{% if colla_pros.count != 0 %}
|
||||
|
||||
<div class="layui-row">
|
||||
<table class="layui-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% trans "文集名称" %}</th>
|
||||
<th>{% trans "作者" %}</th>
|
||||
<th>{% trans "权限" %}</th>
|
||||
<th>{% trans "操作" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for colla in colla_pros %}
|
||||
<tr>
|
||||
<td>{{ colla.project }}</td>
|
||||
<td>{{ colla.project.create_user }}</td>
|
||||
<td>
|
||||
{% if colla.role == 0 %}
|
||||
{% trans "初级 - 可新建文档、修改和删除自己创建的文档" %}
|
||||
{% else %}
|
||||
{% trans "高级 - 可新建文档、修改所有文档、删除自己创建的文档" %}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<a href="{% url 'pro_index' colla.project.id %}" target="_blank" class="layui-btn layui-btn-normal layui-btn-xs">{% trans "查看" %}</a>
|
||||
{% if colla.role == 1 %}
|
||||
<a href="{% url 'manage_pro_doc_sort' colla.project.id %}" class="layui-btn layui-btn-normal layui-btn-xs">{% trans "排序" %}</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="layui-row">
|
||||
{% trans "你还没有成为任何文集的协作者" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<table id="mycolla-table" lay-filter="mycolla-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block custom_script %}
|
||||
<!-- 文档名称 -->
|
||||
<script type="text/html" id="colla-name">
|
||||
{% verbatim %}
|
||||
{{# if (d.type == 'doc'){ }}
|
||||
文档
|
||||
{{# }else{ }}
|
||||
文集
|
||||
{{# } }}
|
||||
{% endverbatim %}
|
||||
</script>
|
||||
|
||||
<!-- 协作权限 -->
|
||||
<script type="text/html" id="colla-role">
|
||||
{% verbatim %}
|
||||
{{# if (d.role == 0){ }}
|
||||
<span>初级权限</span><i class="layui-icon layui-icon-about" title="可新建文档,修改、删除自己创建的文档"></i>
|
||||
{{# }else if(d.role == 1){ }}
|
||||
<span>高级权限</span><i class="layui-icon layui-icon-about" title="可操作所有文档"></i>
|
||||
{{# } }}
|
||||
{% endverbatim %}
|
||||
</script>
|
||||
|
||||
<!-- 创建时间 -->
|
||||
<script type="text/html" id="create-time">
|
||||
{% verbatim %}
|
||||
{{layui.util.toDateString(d.create_time, "yyyy-MM-dd HH:mm:ss")}}
|
||||
{% endverbatim %}
|
||||
</script>
|
||||
|
||||
<!-- 操作栏 -->
|
||||
<script type="text/html" id="colla-bar">
|
||||
{% verbatim %}
|
||||
{{# if (d.type == 'doc'){ }}
|
||||
<a class="pear-btn pear-btn-primary pear-btn-sm" href="/modify_doc/{{d.project_id}}/" target="_blank"><i class="layui-icon layui-icon-edit"></i></button>
|
||||
{{# }else{ }}
|
||||
<a class="pear-btn pear-btn-primary pear-btn-sm" href="/create_doc/?pid={{d.project_id}}" target="_blank"><i class="layui-icon layui-icon-add-1"></i></button>
|
||||
{{# } }}
|
||||
{% endverbatim %}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
layui.use(['table','jquery','form','layer','element'], function() {
|
||||
layui.use(['table','jquery','form','layer','element','treetable'], function() {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.jquery;
|
||||
let layer = layui.layer;
|
||||
let element = layui.element;
|
||||
let treetable = layui.treetable;
|
||||
$.ajaxSetup({
|
||||
data: {csrfmiddlewaretoken: '{{ csrf_token }}' },
|
||||
headers: {"X-CSRFToken":'{{ csrf_token }}'},
|
||||
});
|
||||
let cols =
|
||||
// 渲染表格
|
||||
treetable.render({
|
||||
treeColIndex: 0,
|
||||
treeSpid: 0,
|
||||
treeIdName: 'project_id',
|
||||
treePidName: 'top_doc',
|
||||
skin:'line',
|
||||
method:'get',
|
||||
treeDefaultClose: true,
|
||||
elem: '#mycolla-table',
|
||||
url: "{% url 'my_colla_list' %}",
|
||||
page: true,
|
||||
cols: [
|
||||
[
|
||||
// {type: 'checkbox',width:20},
|
||||
{title: '{% trans "名称" %}',field: 'project_name',align: 'left',minWidth:200},
|
||||
{title: '类型',field: 'type',align: 'left',templet:"#colla-name"},
|
||||
{title: '权限',field: 'role',align: 'left',templet:"#colla-role"},
|
||||
{title: '创建人',field: 'username',align: 'left'},
|
||||
{title: '{% trans "创建时间" %}',field: 'create_time',align: 'left',templet:"#create-time"},
|
||||
{title: '{% trans "操作" %}',toolbar: '#colla-bar',align: 'left',}
|
||||
]
|
||||
],
|
||||
});
|
||||
})
|
||||
</script>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user