diff --git a/client/src/api/content.js b/client/src/api/content.js
new file mode 100644
index 0000000..495e86d
--- /dev/null
+++ b/client/src/api/content.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+
+
+
+export function getContentList(query) {
+ return request({
+ url: '/supervision/content/',
+ method: 'get',
+ params: query
+ })
+}
+
+export function getContent(id) {
+ return request({
+ url: `/supervision/content/${id}/`,
+ method: 'get'
+ })
+}
+
+export function createContent(data) {
+ return request({
+ url: '/supervision/content/',
+ method: 'post',
+ data
+ })
+}
+
+export function updateContent(id, data) {
+ return request({
+ url: `/supervision/content/${id}/`,
+ method: 'put',
+ data
+ })
+}
+
+export function deleteContent(id, data) {
+ return request({
+ url: `/supervision/content/${id}/`,
+ method: 'delete',
+ data
+ })
+}
+
diff --git a/client/src/api/task.js b/client/src/api/task.js
new file mode 100644
index 0000000..dc8eec0
--- /dev/null
+++ b/client/src/api/task.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+
+
+
+export function getTaskList(query) {
+ return request({
+ url: '/supervision/task/',
+ method: 'get',
+ params: query
+ })
+}
+
+export function getTask(id) {
+ return request({
+ url: `/supervision/task/${id}/`,
+ method: 'get'
+ })
+}
+
+export function createTask(data) {
+ return request({
+ url: '/supervision/task/',
+ method: 'post',
+ data
+ })
+}
+
+export function updateTask(id, data) {
+ return request({
+ url: `/supervision/task/${id}/`,
+ method: 'put',
+ data
+ })
+}
+
+export function deleteTask(id, data) {
+ return request({
+ url: `/supervision/task/${id}/`,
+ method: 'delete',
+ data
+ })
+}
+
diff --git a/client/src/router/index.js b/client/src/router/index.js
index 4fe1687..a6d8836 100644
--- a/client/src/router/index.js
+++ b/client/src/router/index.js
@@ -106,6 +106,27 @@ export const asyncRoutes = [
meta: { title: '检验能力', icon: 'table', perms: ['inspection_view'] }
}]
},
+
+{
+ path: '/supervision',
+ component: Layout,
+ redirect: '/supervision/content',
+ name:'Supervision',
+ meta: { title: '日常监督', icon: 'table', perms: ['supervision_manage'] },
+ children: [
+ {
+ path: 'content',
+ name: 'Content',
+ component: () => import('@/views/supervision/content.vue'),
+ meta: { title: '资料清单', icon: 'documentation', perms: ['content_manage'] }
+ },
+ {
+ path: 'organization',
+ name: 'Organization',
+ component: () => import('@/views/system/organization'),
+ meta: { title: '上报计划', icon: 'tree', perms: ['org_manage'] }
+ }]
+},
{
path: '/system',
diff --git a/client/src/views/supervision/content.vue b/client/src/views/supervision/content.vue
new file mode 100644
index 0000000..54d513c
--- /dev/null
+++ b/client/src/views/supervision/content.vue
@@ -0,0 +1,267 @@
+
+
+
+
+ 新增
+
+
+
+
+ {{ scope.row.name }}
+
+
+ {{ scope.row.desc }}
+
+
+
+ {{ scope.row.type_ }}
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确认
+
+
+
+
+
+
diff --git a/server/apps/supervision/migrations/0003_auto_20210311_1658.py b/server/apps/supervision/migrations/0003_auto_20210311_1658.py
new file mode 100644
index 0000000..9e2d490
--- /dev/null
+++ b/server/apps/supervision/migrations/0003_auto_20210311_1658.py
@@ -0,0 +1,56 @@
+# Generated by Django 3.0.5 on 2021-03-11 08:58
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('system', '0008_auto_20210311_0919'),
+ ('supervision', '0002_remove_content_belong_to'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='record',
+ name='files',
+ field=models.ManyToManyField(to='system.File', verbose_name='关联文件'),
+ ),
+ migrations.AddField(
+ model_name='record',
+ name='updepart',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='system.Organization', verbose_name='上传部门'),
+ ),
+ migrations.AddField(
+ model_name='record',
+ name='upuser',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL, verbose_name='上传人'),
+ ),
+ migrations.CreateModel(
+ name='Task',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
+ ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
+ ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
+ ('name', models.CharField(max_length=100, verbose_name='名称')),
+ ('is_do', models.BooleanField(default=False, verbose_name='是否自创任务')),
+ ('complete_rate', models.IntegerField(default=0, verbose_name='完成度')),
+ ('belong_to', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='task_belong_to', to='system.Organization', verbose_name='所属部门')),
+ ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='task_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
+ ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='task_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
+ ],
+ options={
+ 'abstract': False,
+ },
+ ),
+ migrations.AddField(
+ model_name='record',
+ name='task',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='supervision.Task', verbose_name='关联任务'),
+ ),
+ ]
diff --git a/server/apps/supervision/models.py b/server/apps/supervision/models.py
index f7006c2..02dc8bb 100644
--- a/server/apps/supervision/models.py
+++ b/server/apps/supervision/models.py
@@ -1,6 +1,6 @@
from django.db import models
from utils.model import BaseModel
-from apps.system.models import CommonAModel, CommonBModel, Organization, User, Dict
+from apps.system.models import CommonAModel, CommonBModel, Organization, User, Dict, File
# Create your models here.
class Content(CommonAModel):
@@ -17,9 +17,11 @@ class Content(CommonAModel):
verbose_name_plural = verbose_name
-# class Task(CommonBModel):
-# name = models.CharField('名称', max_length=100)
-# pass
+class Task(CommonBModel):
+ name = models.CharField('名称', max_length=100)
+ is_do = models.BooleanField('是否自创任务', default=False)
+ complete_rate = models.IntegerField('完成度', default=0)
+
class Record(BaseModel):
@@ -27,10 +29,13 @@ class Record(BaseModel):
上报记录
"""
content = models.ForeignKey(Content, verbose_name='材料内容', on_delete=models.DO_NOTHING)
- # task = models.ForeignKey(Task, verbose_name='关联任务', null=True, blank=True, on_delete=models.SET_NULL)
+ task = models.ForeignKey(Task, verbose_name='关联任务', null=True, blank=True, on_delete=models.SET_NULL)
+ updepart = models.ForeignKey(Organization, verbose_name='上传部门', null=True, blank=True,on_delete=models.DO_NOTHING)
+ upuser = models.ForeignKey(User,verbose_name='上传人', null=True, blank=True,on_delete=models.DO_NOTHING)
is_lock = models.BooleanField('是否锁住', default=False)
is_yes = models.BooleanField('是否适用', default=True)
note = models.TextField('说明')
+ files = models.ManyToManyField(File, verbose_name="关联文件")
class Meta:
verbose_name = '上报记录'
verbose_name_plural = verbose_name
diff --git a/server/apps/supervision/serializers.py b/server/apps/supervision/serializers.py
index 40ed624..cf31580 100644
--- a/server/apps/supervision/serializers.py
+++ b/server/apps/supervision/serializers.py
@@ -18,4 +18,4 @@ class ContentSerializer(serializers.ModelSerializer):
data = obj.type.name
if obj.type.pid:
data = obj.type.pid.name + '/' + data
- return data
+ return data
\ No newline at end of file
diff --git a/server/apps/supervision/views.py b/server/apps/supervision/views.py
index c354aa8..431a30e 100644
--- a/server/apps/supervision/views.py
+++ b/server/apps/supervision/views.py
@@ -25,4 +25,7 @@ class ContentViewSet(CreateModelAMixin, ModelViewSet):
serializer_class = ContentSerializer
search_fields = ['name', 'desc']
filterset_fields = ['type']
- ordering = ['type__sort', 'create_time']
\ No newline at end of file
+ ordering = ['type__sort', 'create_time']
+ def paginate_queryset(self, queryset):
+ return None
+
\ No newline at end of file