优化调整个人中心文档管理界面
This commit is contained in:
parent
29ab693804
commit
d3b31d0952
322
app_doc/views.py
322
app_doc/views.py
@ -522,38 +522,19 @@ def del_project(request):
|
||||
@require_http_methods(['GET','POST'])
|
||||
def manage_project(request):
|
||||
if request.method == 'GET':
|
||||
try:
|
||||
search_kw = request.GET.get('kw', None)
|
||||
if search_kw:
|
||||
pro_list = Project.objects.filter(create_user=request.user,intro__icontains=search_kw).order_by('-create_time')
|
||||
paginator = Paginator(pro_list, 15)
|
||||
page = request.GET.get('page', 1)
|
||||
try:
|
||||
pros = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
pros = paginator.page(1)
|
||||
except EmptyPage:
|
||||
pros = paginator.page(paginator.num_pages)
|
||||
pros.kw = search_kw
|
||||
else:
|
||||
pro_list = Project.objects.filter(create_user=request.user).order_by('-create_time')
|
||||
paginator = Paginator(pro_list, 15)
|
||||
page = request.GET.get('page', 1)
|
||||
try:
|
||||
pros = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
pros = paginator.page(1)
|
||||
except EmptyPage:
|
||||
pros = paginator.page(paginator.num_pages)
|
||||
return render(request,'app_doc/manage/manage_project.html',locals())
|
||||
except Exception as e:
|
||||
logger.exception("管理文集出错")
|
||||
return render(request,'404.html')
|
||||
return render(request,'app_doc/manage/manage_project.html',locals())
|
||||
else:
|
||||
kw = request.POST.get('kw','')
|
||||
page = request.POST.get('page', 1)
|
||||
limit = request.POST.get('limit', 10)
|
||||
# 获取文集列表
|
||||
project_list = Project.objects.filter(create_user=request.user).order_by('-create_time')
|
||||
if kw == '':
|
||||
project_list = Project.objects.filter(create_user=request.user).order_by('-create_time')
|
||||
else:
|
||||
project_list = Project.objects.filter(
|
||||
Q(intro__icontains=kw) | Q(name__icontains=kw),
|
||||
create_user=request.user,
|
||||
).order_by('-create_time')
|
||||
paginator = Paginator(project_list, limit)
|
||||
try:
|
||||
pros = paginator.page(page)
|
||||
@ -662,7 +643,8 @@ def manage_project_doc_sort(request,pro_id):
|
||||
n = 10
|
||||
# 第一级文档
|
||||
for data in sort_data:
|
||||
Doc.objects.filter(id=data['id']).update(sort=n)
|
||||
print(data)
|
||||
Doc.objects.filter(id=data['id']).update(sort=n,parent_doc=0)
|
||||
n += 10
|
||||
# 存在第二级文档
|
||||
if 'children' in data.keys():
|
||||
@ -1123,41 +1105,54 @@ def del_doc(request):
|
||||
try:
|
||||
# 获取文档ID
|
||||
doc_id = request.POST.get('doc_id',None)
|
||||
range = request.POST.get('range', 'single')
|
||||
if doc_id:
|
||||
# 查询文档
|
||||
try:
|
||||
doc = Doc.objects.get(id=doc_id)
|
||||
if range == 'single':
|
||||
# 查询文档
|
||||
try:
|
||||
project = Project.objects.get(id=doc.top_doc) # 查询文档所属的文集
|
||||
doc = Doc.objects.get(id=doc_id)
|
||||
try:
|
||||
project = Project.objects.get(id=doc.top_doc) # 查询文档所属的文集
|
||||
except ObjectDoesNotExist:
|
||||
logger.error("文档{}的所属文集不存在。".format(doc_id))
|
||||
project = 0
|
||||
# 获取文档所属文集的协作信息
|
||||
pro_colla = ProjectCollaborator.objects.filter(project=project,user=request.user)
|
||||
if pro_colla.exists():
|
||||
colla_user_role = pro_colla[0].role
|
||||
else:
|
||||
colla_user_role = 0
|
||||
except ObjectDoesNotExist:
|
||||
logger.error("文档{}的所属文集不存在。".format(doc_id))
|
||||
project = 0
|
||||
# 获取文档所属文集的协作信息
|
||||
pro_colla = ProjectCollaborator.objects.filter(project=project,user=request.user)
|
||||
if pro_colla.exists():
|
||||
colla_user_role = pro_colla[0].role
|
||||
else:
|
||||
colla_user_role = 0
|
||||
except ObjectDoesNotExist:
|
||||
return JsonResponse({'status': False, 'data': '文档不存在'})
|
||||
# 如果请求用户为站点管理员、文档创建者、高级权限的协作者、文集的创建者,可以删除
|
||||
if (request.user == doc.create_user) \
|
||||
or (colla_user_role == 1) \
|
||||
or (request.user == project.create_user)\
|
||||
or (request.user.is_superuser):
|
||||
# 修改状态为删除
|
||||
doc.status = 3
|
||||
doc.modify_time = datetime.datetime.now()
|
||||
doc.save()
|
||||
# 修改其下级所有文档状态为删除
|
||||
chr_doc = Doc.objects.filter(parent_doc=doc_id) # 获取下级文档
|
||||
chr_doc_ids = chr_doc.values_list('id',flat=True) # 提取下级文档的ID
|
||||
chr_doc.update(status=3,modify_time=datetime.datetime.now()) # 修改下级文档的状态为删除
|
||||
Doc.objects.filter(parent_doc__in=chr_doc_ids).update(status=3,modify_time=datetime.datetime.now()) # 修改下级文档的下级文档状态
|
||||
return JsonResponse({'status': False, 'data': '文档不存在'})
|
||||
# 如果请求用户为站点管理员、文档创建者、高级权限的协作者、文集的创建者,可以删除
|
||||
if (request.user == doc.create_user) \
|
||||
or (colla_user_role == 1) \
|
||||
or (request.user == project.create_user)\
|
||||
or (request.user.is_superuser):
|
||||
# 修改状态为删除
|
||||
doc.status = 3
|
||||
doc.modify_time = datetime.datetime.now()
|
||||
doc.save()
|
||||
# 修改其下级所有文档状态为删除
|
||||
chr_doc = Doc.objects.filter(parent_doc=doc_id) # 获取下级文档
|
||||
chr_doc_ids = chr_doc.values_list('id',flat=True) # 提取下级文档的ID
|
||||
chr_doc.update(status=3,modify_time=datetime.datetime.now()) # 修改下级文档的状态为删除
|
||||
Doc.objects.filter(parent_doc__in=chr_doc_ids).update(status=3,modify_time=datetime.datetime.now()) # 修改下级文档的下级文档状态
|
||||
|
||||
return JsonResponse({'status': True, 'data': '删除完成'})
|
||||
return JsonResponse({'status': True, 'data': '删除完成'})
|
||||
else:
|
||||
return JsonResponse({'status': False, 'data': '非法请求'})
|
||||
elif range == 'multi':
|
||||
docs = doc_id.split(",")
|
||||
try:
|
||||
Doc.objects.filter(id__in=docs,create_user=request.user).update(status=3,modify_time=datetime.datetime.now())
|
||||
Doc.objects.filter(parent_doc__in=docs).update(status=3,modify_time=datetime.datetime.now())
|
||||
return JsonResponse({'status': True, 'data': '删除完成'})
|
||||
except:
|
||||
return JsonResponse({'status': False, 'data': '非法请求'})
|
||||
else:
|
||||
return JsonResponse({'status': False, 'data': '非法请求'})
|
||||
return JsonResponse({'status': False, 'data': '类型错误'})
|
||||
|
||||
else:
|
||||
return JsonResponse({'status':False,'data':'参数错误'})
|
||||
except Exception as e:
|
||||
@ -1167,149 +1162,98 @@ def del_doc(request):
|
||||
|
||||
# 管理文档
|
||||
@login_required()
|
||||
@require_http_methods(['GET'])
|
||||
# @logger.catch()
|
||||
@require_http_methods(['GET','POST'])
|
||||
def manage_doc(request):
|
||||
# 文档内容搜索参数
|
||||
search_kw = request.GET.get('kw','')
|
||||
# 文档状态筛选参数
|
||||
doc_status = request.GET.get('status', 'all')
|
||||
# 文档文集筛选参数
|
||||
doc_pro_id = request.GET.get('pid','')
|
||||
|
||||
is_search = True if search_kw != '' else False
|
||||
is_status = doc_status
|
||||
is_project = True if doc_pro_id != '' else False
|
||||
|
||||
# 无搜索 - 无状态 - 无文集
|
||||
if (is_search is False) and (is_status == 'all') and (is_project is False):
|
||||
doc_list = Doc.objects.filter(create_user=request.user,status__in=[0,1]).order_by('-modify_time')
|
||||
|
||||
# 无搜索 - 无状态 - 有文集
|
||||
elif (is_search is False) and (is_status == 'all') and (is_project):
|
||||
doc_list = Doc.objects.filter(
|
||||
create_user=request.user,
|
||||
top_doc=int(doc_pro_id),
|
||||
status__in=[0,1]
|
||||
).order_by('-modify_time')
|
||||
|
||||
# 无搜索 - 有状态 - 无文集
|
||||
elif (is_search is False) and (is_status != 'all') and (is_project is False):
|
||||
# 返回已发布文档
|
||||
if doc_status == 'published':
|
||||
doc_list = Doc.objects.filter(create_user=request.user, status=1).order_by('-modify_time')
|
||||
# 返回草稿文档
|
||||
elif doc_status == 'draft':
|
||||
doc_list = Doc.objects.filter(create_user=request.user, status=0).order_by('-modify_time')
|
||||
if request.method == 'GET':
|
||||
# 文集列表
|
||||
project_list = Project.objects.filter(create_user=request.user) # 自己创建的文集列表
|
||||
colla_project_list = ProjectCollaborator.objects.filter(user=request.user) # 协作的文集列表
|
||||
# 文档数量
|
||||
# 已发布文档数量
|
||||
published_doc_cnt = Doc.objects.filter(create_user=request.user, status=1).count()
|
||||
# 草稿文档数量
|
||||
draft_doc_cnt = Doc.objects.filter(create_user=request.user, status=0).count()
|
||||
# 所有文档数量
|
||||
all_cnt = published_doc_cnt + draft_doc_cnt
|
||||
return render(request,'app_doc/manage/manage_doc.html',locals())
|
||||
else:
|
||||
kw = request.POST.get('kw', '')
|
||||
project = request.POST.get('project','')
|
||||
status = request.POST.get('status','')
|
||||
if status == '-1': # 全部文档
|
||||
q_status = [0,1]
|
||||
elif status in ['0','1']:
|
||||
q_status = [int(status)]
|
||||
else:
|
||||
doc_list = Doc.objects.filter(create_user=request.user, status__in=[0,1]).order_by('-modify_time')
|
||||
q_status = [0, 1]
|
||||
|
||||
# 无搜索 - 有状态 - 有文集
|
||||
elif (is_search is False) and (is_status != 'all') and (is_project):
|
||||
# 返回已发布文档
|
||||
if doc_status == 'published':
|
||||
if project == '':
|
||||
project_list = Project.objects.filter(create_user=request.user).values_list('id',flat=True) # 自己创建的文集列表
|
||||
colla_project_list = ProjectCollaborator.objects.filter(user=request.user).values_list('id',flat=True) # 协作的文集列表
|
||||
q_project = list(project_list) + list(colla_project_list)
|
||||
else:
|
||||
q_project = [project]
|
||||
|
||||
page = request.POST.get('page', 1)
|
||||
limit = request.POST.get('limit', 10)
|
||||
# 没有搜索
|
||||
if kw == '':
|
||||
doc_list = Doc.objects.filter(
|
||||
create_user=request.user,
|
||||
status=1,
|
||||
top_doc=int(doc_pro_id)
|
||||
).order_by('-modify_time')
|
||||
# 返回草稿文档
|
||||
elif doc_status == 'draft':
|
||||
doc_list = Doc.objects.filter(
|
||||
create_user=request.user,
|
||||
status=0,
|
||||
top_doc = int(doc_pro_id)
|
||||
status__in=q_status,
|
||||
top_doc__in=q_project
|
||||
).order_by('-modify_time')
|
||||
# 有搜索
|
||||
else:
|
||||
doc_list = Doc.objects.filter(
|
||||
create_user=request.user,
|
||||
top_doc=int(doc_pro_id),
|
||||
status__in=[0,1]
|
||||
Q(content__icontains=kw) | Q(name__icontains=kw),
|
||||
create_user=request.user,status__in=q_status,top_doc__in=q_project
|
||||
).order_by('-modify_time')
|
||||
|
||||
# 有搜索 - 无状态 - 无文集
|
||||
elif (is_search) and (is_status == 'all') and (is_project is False):
|
||||
doc_list = Doc.objects.filter(
|
||||
Q(content__icontains=search_kw) | Q(name__icontains=search_kw), # 文本或文档标题包含搜索词
|
||||
create_user=request.user,
|
||||
status__in=[0,1]
|
||||
).order_by('-modify_time')
|
||||
# 文集列表
|
||||
project_list = Project.objects.filter(create_user=request.user) # 自己创建的文集列表
|
||||
colla_project_list = ProjectCollaborator.objects.filter(user=request.user) # 协作的文集列表
|
||||
|
||||
# 有搜索 - 无状态 - 有文集
|
||||
elif (is_search) and (is_status == 'all') and (is_project):
|
||||
doc_list = Doc.objects.filter(
|
||||
Q(content__icontains=search_kw) | Q(name__icontains=search_kw), # 文本或文档标题包含搜索词
|
||||
create_user=request.user,top_doc=int(doc_pro_id),status__in=[0,1]
|
||||
).order_by('-modify_time')
|
||||
# 文档数量
|
||||
# 已发布文档数量
|
||||
published_doc_cnt = Doc.objects.filter(create_user=request.user, status=1).count()
|
||||
# 草稿文档数量
|
||||
draft_doc_cnt = Doc.objects.filter(create_user=request.user, status=0).count()
|
||||
# 所有文档数量
|
||||
all_cnt = published_doc_cnt + draft_doc_cnt
|
||||
|
||||
# 有搜索 - 有状态 - 无文集
|
||||
elif (is_search) and (is_status != 'all') and (is_project is False):
|
||||
if doc_status == 'published':
|
||||
doc_list = Doc.objects.filter(
|
||||
Q(content__icontains=search_kw) | Q(name__icontains=search_kw),
|
||||
create_user=request.user,
|
||||
status = 1
|
||||
).order_by('-modify_time')
|
||||
elif doc_status == 'draft':
|
||||
doc_list = Doc.objects.filter(
|
||||
Q(content__icontains=search_kw) | Q(name__icontains=search_kw), # 文本或文档标题包含搜索词
|
||||
create_user=request.user,
|
||||
status = 0
|
||||
).order_by('-modify_time')
|
||||
else:
|
||||
doc_list = Doc.objects.filter(
|
||||
Q(content__icontains=search_kw) | Q(name__icontains=search_kw), # 文本或文档标题包含搜索词
|
||||
create_user=request.user,status__in=[0,1]
|
||||
).order_by('-modify_time')
|
||||
# 分页处理
|
||||
paginator = Paginator(doc_list, limit)
|
||||
page = request.GET.get('page', page)
|
||||
try:
|
||||
docs = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
docs = paginator.page(1)
|
||||
except EmptyPage:
|
||||
docs = paginator.page(paginator.num_pages)
|
||||
|
||||
# 有搜索 - 有状态 - 有文集
|
||||
elif (is_search) and (is_status != 'all') and (is_project):
|
||||
if doc_status == 'published':
|
||||
doc_list = Doc.objects.filter(
|
||||
Q(content__icontains=search_kw) | Q(name__icontains=search_kw),
|
||||
create_user=request.user,
|
||||
status = 1,
|
||||
top_doc=int(doc_pro_id)
|
||||
).order_by('-modify_time')
|
||||
elif doc_status == 'draft':
|
||||
doc_list = Doc.objects.filter(
|
||||
Q(content__icontains=search_kw) | Q(name__icontains=search_kw), # 文本或文档标题包含搜索词
|
||||
create_user=request.user,
|
||||
status = 0,
|
||||
top_doc=int(doc_pro_id)
|
||||
).order_by('-modify_time')
|
||||
else:
|
||||
doc_list = Doc.objects.filter(
|
||||
Q(content__icontains=search_kw) | Q(name__icontains=search_kw), # 文本或文档标题包含搜索词
|
||||
create_user=request.user,
|
||||
top_doc=int(doc_pro_id),status__in=[0,1]
|
||||
).order_by('-modify_time')
|
||||
|
||||
# 文集列表
|
||||
project_list = Project.objects.filter(create_user=request.user) # 自己创建的文集列表
|
||||
colla_project_list = ProjectCollaborator.objects.filter(user=request.user) # 协作的文集列表
|
||||
|
||||
# 文档数量
|
||||
# 已发布文档数量
|
||||
published_doc_cnt = Doc.objects.filter(create_user=request.user, status=1).count()
|
||||
# 草稿文档数量
|
||||
draft_doc_cnt = Doc.objects.filter(create_user=request.user, status=0).count()
|
||||
# 所有文档数量
|
||||
all_cnt = published_doc_cnt + draft_doc_cnt
|
||||
|
||||
# 分页处理
|
||||
paginator = Paginator(doc_list, 15)
|
||||
page = request.GET.get('page', 1)
|
||||
try:
|
||||
docs = paginator.page(page)
|
||||
except PageNotAnInteger:
|
||||
docs = paginator.page(1)
|
||||
except EmptyPage:
|
||||
docs = paginator.page(paginator.num_pages)
|
||||
docs.status = doc_status
|
||||
docs.pid = doc_pro_id
|
||||
docs.kw = search_kw
|
||||
return render(request,'app_doc/manage/manage_doc.html',locals())
|
||||
table_data = []
|
||||
for doc in docs:
|
||||
item = {
|
||||
'id': doc.id,
|
||||
'name': doc.name,
|
||||
'parent':Doc.objects.get(id=doc.parent_doc).name if doc.parent_doc != 0 else '无',
|
||||
'project_id': Project.objects.get(id=doc.top_doc).id,
|
||||
'project_name':Project.objects.get(id=doc.top_doc).name,
|
||||
'status':doc.status,
|
||||
'editor_mode':doc.editor_mode,
|
||||
'open_children':doc.open_children,
|
||||
'create_time': doc.create_time,
|
||||
'modify_time': doc.modify_time
|
||||
}
|
||||
table_data.append(item)
|
||||
resp_data = {
|
||||
"code": 0,
|
||||
"msg": "ok",
|
||||
"count": doc_list.count(),
|
||||
"data": table_data
|
||||
}
|
||||
return JsonResponse(resp_data)
|
||||
|
||||
|
||||
# 移动文档
|
||||
|
||||
@ -124,6 +124,13 @@
|
||||
border-color: #2176ff;
|
||||
background-color: #2176ff;
|
||||
}
|
||||
/* 多选框样式 */
|
||||
.layui-form-checked[lay-skin=primary] i {
|
||||
border-color: #2176ff!important;
|
||||
background-color: #2176ff;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
/* 选项卡样式 */
|
||||
.layui-tab-brief>.layui-tab-title .layui-this{
|
||||
color: #2176ff;
|
||||
|
||||
@ -3,33 +3,19 @@
|
||||
{% block title %}文档管理{% endblock %}
|
||||
{% block content %}
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">高级筛选</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-row">
|
||||
<form action="{% url 'manage_doc' %}" method="get">
|
||||
<input name="pid" value="{{docs.pid}}" hidden>
|
||||
<div class="layui-form-item">
|
||||
<span class="doc_status_condition" lay-separator="|">
|
||||
<a href="{% url 'manage_doc' %}?status=all" class="{% if doc_status == 'all' %}current{% endif %}">全部({{all_cnt}})</a>
|
||||
<a href="{% url 'manage_doc' %}?status=published" class="{% if doc_status == 'published' %}current{% endif %}">已发布({{published_doc_cnt}})</a>
|
||||
<a href="{% url 'manage_doc' %}?status=draft" class="{% if doc_status == 'draft' %}current{% endif %}">草稿({{draft_doc_cnt}})</a>
|
||||
<input name="status" value="{% if doc_status == 'all' %}all{% elif doc_status == 'published' %}published{% elif doc_status == 'draft' %}draft{% endif %}" hidden>
|
||||
</span>
|
||||
<div class="layui-input-inline" style="float:inherit;">
|
||||
<input type="text" name="kw" id="kw" placeholder="输入文档标题或内容" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<button class="layui-btn layui-btn-normal layui-btn-xs" type="submit"><i class="layui-icon layui-icon-search"></i>搜索</button>
|
||||
<a href="{% url 'create_doc' %}" target="_blank" class="layui-btn layui-btn-primary layui-btn-xs"><i class="layui-icon layui-icon-addition"></i>新建</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<div class="">
|
||||
<div class="layui-form">
|
||||
<div class="layui-input-inline">
|
||||
<div class="layui-form">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">关键词</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="kw" placeholder="请输入标题" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
<button class="layui-btn layui-btn-normal layui-btn-sm" id="search">搜索</button>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">文集</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="pro_id" lay-verify="required" lay-filter="project" id="project">
|
||||
<option value="">按文集筛选</option>
|
||||
<!-- 自己的文集 -->
|
||||
@ -55,7 +41,15 @@
|
||||
</optgroup>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">文档状态</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="status" title="全部({{all_cnt}})" value="-1" lay-skin="primary" checked lay-filter="doc_status">
|
||||
<input type="radio" name="status" title="草稿({{draft_doc_cnt}})" value="0" lay-skin="primary" lay-filter="doc_status">
|
||||
<input type="radio" name="status" title="已发布({{published_doc_cnt}})" value="1" lay-skin="primary" lay-filter="doc_status">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -63,82 +57,84 @@
|
||||
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-row" lay-skin="">
|
||||
<table class="layui-table" id="doctemp-list" lay-skin="nob" lay-even>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>文档名称</th>
|
||||
<th>上级文档</th>
|
||||
<th>展开下级</th>
|
||||
<th>所属文集</th>
|
||||
<th>创建时间</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% load doc_filter %}
|
||||
{% for doc in docs %}
|
||||
<tr>
|
||||
{% if doc.status == 1 %}
|
||||
<td>
|
||||
<img src="{% static 'icon_img/manage-doc-icon.svg' %}" height="20px" width="20px" />
|
||||
<a href="{% url 'doc' doc.top_doc doc.id %}" target="_blank" title="查看文档:{{doc.name}}">{{ doc.name }}
|
||||
</a>
|
||||
</td>
|
||||
{% else %}
|
||||
<td>
|
||||
<img src="{% static 'icon_img/manage-doc-pre-icon.svg' %}" height="20px" width="20px" />
|
||||
<a href="{% url 'modify_doc' doc.id %}" target="_blank" title="修改文档:{{doc.name}}">{{ doc.name }}
|
||||
</a>
|
||||
<button class="layui-btn layui-btn-xs layui-btn-normal" onclick="fastPubDoc('{{doc.id}}')">一键发布</button>
|
||||
</td>
|
||||
{% endif %}
|
||||
<td>{{ doc.parent_doc|get_doc_parent }}</td>
|
||||
<td>{{ doc.open_children }}</td>
|
||||
<td>
|
||||
{{ doc.top_doc|is_colla_pro:doc.create_user }}{{ doc.top_doc|get_doc_top }}
|
||||
</td>
|
||||
<td>{{ doc.create_time }}</td>
|
||||
<td>
|
||||
<a href="{% url 'manage_doc_history' doc.id %}" title="查看文档历史" class="layui-btn layui-btn-xs layui-btn-normal">
|
||||
<i class="layui-icon layui-icon-log"></i>
|
||||
</a>
|
||||
<a href="{% url 'modify_doc' doc_id=doc.id %}" title="修改文档" target="_blank" class="layui-btn layui-btn-xs layui-btn-normal">
|
||||
<i class="layui-icon layui-icon-edit"></i>
|
||||
</a>
|
||||
<a href="javascript:void(0);" title="删除文档" onclick="delDoc('{{doc.id}}');" class="layui-btn layui-btn-xs layui-btn-warm">
|
||||
<i class="layui-icon layui-icon-delete"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- 分页 -->
|
||||
<div class="layui-row">
|
||||
<div class="layui-box layui-laypage layui-laypage-default">
|
||||
<!-- 上一页 -->
|
||||
{% if docs.has_previous %}
|
||||
<a href="?page={{ docs.previous_page_number }}&kw={{docs.kw}}&status={{docs.status}}&pid={{docs.pid}}" class="layui-btn layui-btn-xs layui-btn-normal">上一页</a>
|
||||
{% else %}
|
||||
<a href="javascript:;" class="layui-btn layui-btn-xs layui-btn-disabled">上一页</a>
|
||||
{% endif %}
|
||||
<!-- 当前页 -->
|
||||
<span class="layui-laypage-curr">
|
||||
<em class="layui-laypage-em"></em>
|
||||
<em>{{ docs.number }}/{{ docs.paginator.num_pages }}</em>
|
||||
</span>
|
||||
<!-- 下一页 -->
|
||||
{% if docs.has_next %}
|
||||
<a href="?page={{ docs.next_page_number }}&kw={{docs.kw}}&status={{docs.status}}&pid={{docs.pid}}" class="layui-btn layui-btn-xs layui-btn-normal">下一页</a>
|
||||
{% else %}
|
||||
<a class="layui-btn layui-btn-xs layui-btn-disabled">下一页</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<table id="doc-table" lay-filter="doc-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 表格工具栏 -->
|
||||
<script type="text/html" id="doc-toolbar">
|
||||
<button class="layui-btn layui-btn-normal pear-btn-sm" lay-event="add">
|
||||
<i class="layui-icon layui-icon-add-1"></i>新增
|
||||
</button>
|
||||
<button class="layui-btn layui-btn-warm pear-btn-sm" lay-event="batchRemove">
|
||||
<i class="layui-icon layui-icon-delete"></i>删除
|
||||
</button>
|
||||
</script>
|
||||
|
||||
<!-- 文档名称 -->
|
||||
<script type="text/html" id="doc-name">
|
||||
{% verbatim %}
|
||||
{{#if (d.status == 1) { }}
|
||||
<span class="layui-badge-dot layui-bg-blue"></span>
|
||||
<a href="/project-{{d.project_id}}/doc-{{d.id}}" target="_blank">{{d.name}}</a>
|
||||
{{# }else if(d.status == 0){ }}
|
||||
<!-- <i class="layui-icon layui-icon-release" style="cursor: pointer;" onclick="fastPubDoc('{{d.id}}')" title="草稿状态,点击一键发布"></i> -->
|
||||
<span class="layui-badge-dot layui-bg-orange"></span>
|
||||
<a href="/modify_doc/{{d.id}}/" target="_blank" title="修改文档:{{d.name}}">{{ d.name }} </a>
|
||||
{{# } }}
|
||||
{% endverbatim %}
|
||||
</script>
|
||||
|
||||
<!-- 文档状态 -->
|
||||
<script type="text/html" id="doc-status">
|
||||
{% verbatim %}
|
||||
{{#if (d.status == 1) { }}
|
||||
<span class="layui-badge-rim">已发布</span>
|
||||
{{# }else if(d.status == 0){ }}
|
||||
<!-- <i class="layui-icon layui-icon-release" style="cursor: pointer;" onclick="fastPubDoc('{{d.id}}')" title="草稿状态,点击一键发布"></i> -->
|
||||
<span class="layui-badge-rim" style="cursor: pointer;" onclick="fastPubDoc('{{d.id}}')" title="点击一键发布">草稿</span>
|
||||
{{# } }}
|
||||
{% endverbatim %}
|
||||
</script>
|
||||
|
||||
<!-- 修改时间 -->
|
||||
<script type="text/html" id="doc-modify-time">
|
||||
{% verbatim %}
|
||||
{{layui.util.toDateString(d.modify_time, "yyyy-MM-dd HH:mm:ss")}}
|
||||
{% endverbatim %}
|
||||
</script>
|
||||
|
||||
<!-- 编辑模式 -->
|
||||
<script type="text/html" id="editor-mode">
|
||||
{% verbatim %}
|
||||
{{#if (d.editor_mode == 1) { }}
|
||||
Editor.MD
|
||||
{{# }else if(d.editor_mode == 2){ }}
|
||||
Vditor
|
||||
{{# } }}
|
||||
{% endverbatim %}
|
||||
</script>
|
||||
|
||||
<!-- 展开下级 -->
|
||||
<script type="text/html" id="open_children">
|
||||
{% verbatim %}
|
||||
{{#if (d.open_children == true) { }}
|
||||
展开
|
||||
{{# }{ }}
|
||||
收起
|
||||
{{# } }}
|
||||
{% endverbatim %}
|
||||
</script>
|
||||
|
||||
<!-- 单个文档操作 -->
|
||||
<script type="text/html" id="doc-bar">
|
||||
{% verbatim %}
|
||||
<a href="/manage_doc_history/{{d.id}}/" class="layui-btn layui-btn-primary pear-btn-sm"><i class="layui-icon layui-icon-log"></i></a>
|
||||
<a href="/modify_doc/{{d.id}}/" title="修改文档" class="layui-btn layui-btn-primary pear-btn-sm" target="_blank"><i class="layui-icon layui-icon-edit"></i></a>
|
||||
<button class="layui-btn layui-btn-warm pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
|
||||
{% endverbatim %}
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
{% block custom_script %}
|
||||
<script>
|
||||
@ -151,6 +147,32 @@
|
||||
$.ajaxSetup({
|
||||
data: {csrfmiddlewaretoken: '{{ csrf_token }}' },
|
||||
});
|
||||
let cols = [
|
||||
[
|
||||
{type: 'checkbox',width:20},
|
||||
{title: '文档名称',field: 'name',align: 'left',templet:"#doc-name",minWidth:280},
|
||||
{title: '状态',field: 'status',align: 'left',templet:"#doc-status",width:90},
|
||||
{title: '上级',field: 'parent',align: 'left',},
|
||||
{title: '文集',field: 'project_name',align: 'left',templet:"#project-role"},
|
||||
{title: '编辑模式',field: 'editor_mode',align: 'left',templet:"#editor-mode",width:90},
|
||||
{title: '展开下级',field: 'open_children',align: 'left',width:90, templet:"#open_children"},
|
||||
{title: '最后编辑',field: 'modify_time',align: 'left',templet:"#doc-modify-time"},
|
||||
{title: '操作',toolbar: '#doc-bar',align: 'left',} ]
|
||||
]
|
||||
// 渲染表格
|
||||
table.render({
|
||||
elem: '#doc-table',
|
||||
method:'post',
|
||||
where:{
|
||||
'type':1,
|
||||
},
|
||||
url: "{% url 'manage_doc' %}",
|
||||
page: true,
|
||||
cols: cols,
|
||||
skin: 'line',
|
||||
toolbar: '#doc-toolbar',
|
||||
defaultToolbar: ['filter']
|
||||
});
|
||||
// 删除文档
|
||||
delDoc = function(doc_id){
|
||||
layer.open({
|
||||
@ -198,11 +220,92 @@
|
||||
}
|
||||
})
|
||||
};
|
||||
//筛选文集
|
||||
// 批量删除文档
|
||||
batchRemoveDoc = function(obj) {
|
||||
let data = table.checkStatus(obj.config.id).data;
|
||||
if (data.length === 0) {
|
||||
layer.msg("未选中任何文档", {
|
||||
icon: 3,
|
||||
time: 1000
|
||||
});
|
||||
return false;
|
||||
}
|
||||
let doc_id = "";
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
doc_id += data[i].id + ",";
|
||||
}
|
||||
doc_id = doc_id.substr(0, doc_id.length - 1);
|
||||
// console.log(pro_id)
|
||||
layer.confirm('确定要删除这些文档?', {
|
||||
icon: 3,
|
||||
title: '提示'
|
||||
}, function(index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: "{% url 'del_doc' %}",
|
||||
dataType: 'json',
|
||||
type: 'post',
|
||||
data:{'doc_id':doc_id,'range':'multi'},
|
||||
success: function(r) {
|
||||
layer.close(loading);
|
||||
if (r.status) {
|
||||
layer.msg("删除成功", {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, function() {
|
||||
table.reload('doc-table');
|
||||
});
|
||||
} else {
|
||||
layer.msg(r.data, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
// 监听文集筛选
|
||||
form.on('select(project)', function(data){
|
||||
console.log('选择文集:',data.value); //得到被选中的值
|
||||
if(data.value != -1){//
|
||||
window.location.href = '?kw={{docs.kw}}&status={{docs.status}}&pid='+data.value;
|
||||
table.reload('doc-table',{
|
||||
where:{
|
||||
'type':1,'project':data.value,
|
||||
},
|
||||
})
|
||||
});
|
||||
// 监听状态筛选
|
||||
form.on('radio(doc_status)', function(data){
|
||||
console.log(data.value); //被点击的radio的value值
|
||||
table.reload('doc-table',{
|
||||
where:{
|
||||
'type':1,'status':data.value,
|
||||
},
|
||||
})
|
||||
});
|
||||
// 监听搜索按钮
|
||||
$("#search").click(function(){
|
||||
table.reload('doc-table',{
|
||||
where:{
|
||||
'type':1,'kw':$("input[name=kw]").val(),
|
||||
},
|
||||
})
|
||||
});
|
||||
|
||||
// 侦听文档删除按钮
|
||||
table.on("tool(doc-table)",function(obj){
|
||||
if (obj.event === 'remove') {
|
||||
// console.log(obj)
|
||||
delDoc(obj.data.id)
|
||||
}
|
||||
});
|
||||
// 侦听表格工具栏
|
||||
table.on("toolbar(doc-table)",function(obj){
|
||||
if (obj.event === 'add') { // 新增文集
|
||||
createProject();
|
||||
}else if(obj.event === 'batchRemove'){ // 批量删除文集
|
||||
batchRemoveDoc(obj)
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
<!-- 表格工具栏 -->
|
||||
<script type="text/html" id="project-toolbar">
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="project-search-kw" placeholder="" class="layui-input">
|
||||
<input type="text" name="project-search-kw" placeholder="" class="layui-input" >
|
||||
</div>
|
||||
<button class="layui-btn layui-btn-primary pear-btn-sm" lay-event="search">
|
||||
<i class="layui-icon layui-icon-search"></i>搜索
|
||||
@ -106,7 +106,9 @@
|
||||
table.render({
|
||||
elem: '#project-table',
|
||||
method:'post',
|
||||
where:{'type':1},
|
||||
where:{
|
||||
'type':1
|
||||
},
|
||||
url: "{% url 'manage_project' %}",
|
||||
page: true,
|
||||
cols: cols,
|
||||
@ -120,15 +122,22 @@
|
||||
// console.log(obj)
|
||||
delProject(obj.data.id)
|
||||
}
|
||||
})
|
||||
});
|
||||
// 侦听表格工具栏
|
||||
table.on("toolbar(project-table)",function(obj){
|
||||
if (obj.event === 'add') { // 新增文集
|
||||
createProject();
|
||||
}else if(obj.event === 'batchRemove'){ // 批量删除文集
|
||||
batchRemove(obj)
|
||||
}else if(obj.event === 'search'){ // 搜索文集
|
||||
console.log('搜索文集')
|
||||
table.reload('project-table',{
|
||||
where:{
|
||||
'type':1,'kw':$('input[name="project-search-kw"]').val()
|
||||
},
|
||||
})
|
||||
}
|
||||
})
|
||||
});
|
||||
//创建文集
|
||||
createProject = function(){
|
||||
layer.open({
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user