xialagengxin

This commit is contained in:
shilixia 2021-03-16 08:32:16 +08:00
parent 46fccd75b4
commit 9198ee1f2b
4 changed files with 120 additions and 140 deletions

View File

@ -5,7 +5,7 @@ import request from '@/utils/request'
export function getRecordList(query) {
return request({
url: '/supervision/content/',
url: '/supervision/record/',
method: 'get',
params: query
})

View File

@ -2,20 +2,35 @@
<div class="app-container">
<div>
<el-input
v-model="listQuery.content__name"
placeholder="材料名称"
style="width: 200px"
class="filter-item"
@keyup.enter.native="handleFilter"
/>
<el-input
placeholder="上报时间"
style="width: 200px"
class="filter-item"
/>
<el-input
<el-date-picker
v-model="listQuery.up_date"
align="right"
type="date"
placeholder="上报时间"
:picker-options="pickerOptions1"
@change="handleFilter">
</el-date-picker>
<el-select
v-model="listQuery.state"
placeholder="记录状态"
style="width: 200px"
clearable
style="width:140px"
class="filter-item"
/>
@change="handleFilter"
>
<el-option
v-for="item in stateOptions"
:key="item.key"
:label="item.name"
:value="item.key"
/>
</el-select>
<el-input
placeholder="所属部门"
style="width: 200px"
@ -40,7 +55,7 @@
>
<el-table
v-loading="listLoading"
:data="contentList"
:data="recordList.results"
border
fit
stripe
@ -49,176 +64,138 @@
>
<el-table-column type="index" width="50" />
<el-table-column label="任务标题">
<template slot-scope="scope">{{ scope.row.name }}</template>
<template slot-scope="scope">{{ scope.row.task_.name }}</template>
</el-table-column>
<el-table-column label="材料内容">
<template slot-scope="scope">{{ scope.row.name }}</template>
<el-table-column label="材料名称">
<template slot-scope="scope">{{ scope.row.content_.name }}</template>
</el-table-column>
<el-table-column label="上报时间">
<template slot-scope="scope">{{ scope.row.name }}</template>
<template slot-scope="scope">{{ scope.row.up_date }}</template>
</el-table-column>
<el-table-column label="上报人">
<template slot-scope="scope">{{ scope.row.name }}</template>
<template slot-scope="scope">{{ scope.row.up_user }}</template>
</el-table-column>
<el-table-column label="截止时间">
<template slot-scope="scope">{{ scope.row.name }}</template>
<template slot-scope="scope">{{ scope.row.end_date }}</template>
</el-table-column>
<el-table-column label="记录状态">
<template slot-scope="scope">{{ scope.row.name }}</template>
<template slot-scope="scope">{{ scope.row.state }}</template>
</el-table-column>
<el-table-column label="是否适用">
<template slot-scope="scope">{{ scope.row.name }}</template>
<template slot-scope="scope">
<el-tag type="success" v-if="scope.row.is_yes"></el-tag>
<el-tag type="danger" v-else></el-tag></template>
</el-table-column>
<el-table-column label="上报备注">
<template slot-scope="scope">{{ scope.row.name }}</template>
<template slot-scope="scope">{{ scope.row.note }}</template>
</el-table-column>
<el-table-column label="上报说明">
<template slot-scope="scope">{{ scope.row.name }}</template>
<template slot-scope="scope">{{ scope.row.noteb }}</template>
</el-table-column>
<el-table-column label="上报文件">
<template slot-scope="scope">{{ scope.row.name }}</template>
<template slot-scope="scope">{{ scope.row.files }}</template>
</el-table-column>
</el-table-column>
<el-table-column label="上报单位">
<template slot-scope="scope">{{ scope.row.dept_.name }}</template>
</el-table-column>
</el-table>
<pagination
v-show="recordList.count > 0"
:total="recordList.count"
:page.sync="listQuery.page"
:limit.sync="listQuery.page_size"
@pagination="getList"
/>
</el-card>
<el-dialog
:visible.sync="dialogVisible"
:title="dialogType === 'edit' ? '编辑资料' : '新增资料'"
>
<el-form
ref="Form"
:model="Content"
label-width="80px"
label-position="right"
:rules="rule1"
>
<el-form-item label="名称" prop="name">
<el-input v-model="Content.name" placeholder="名称" />
</el-form-item>
<el-form-item label="材料类型" prop="type" >
<el-cascader
v-model = "Content.type"
:options="typeOptions"
:props="{ emitPath : false , }"
clearable
style="width:100%"
></el-cascader>
</el-form-item>
<el-form-item label="详情" prop="desc">
<el-input
type="textarea"
:rows="4"
v-model="Content.desc"
placeholder="详情"
/>
</el-form-item>
<el-form-item label="是否可主动报送" prop="can_doself" label-width="120px">
<el-switch v-model="Content.can_doself" ></el-switch>
</el-form-item>
</el-form>
<div style="text-align: right">
<el-button type="danger" @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="confirm('Form')">确认</el-button>
</div>
</el-dialog>
</div>
</template>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 100px;
height: 100px;
line-height: 100px;
text-align: center;
}
.avatar {
width: 100px;
height: 100px;
display: block;
}
</style>
<script>
import {
getContentList,
createContent,
deleteContent,
updateContent,
} from "@/api/content";
import getRecordList
from "@/api/record";
import { genTree } from "@/utils";
import {getRecordList} from "@/api/record";
import checkPermission from "@/utils/permission";
import Pagination from "@/components/Pagination"; // secondary package based on el-pagination
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { getDictList, getDictTypeList } from "@/api/dict";
const defaultContent = {
name: "",
desc: "",
type: null,
can_doself: false,
const defaultrecord = {
name: ""
};
export default {
components: { Pagination, Treeselect },
components: { Pagination },
data() {
return {
Content: defaultContent,
contentList: [],
typeOptions: [],
listLoading: true,
record: defaultrecord,
recordList: {
count: 0,
},
stateOptions: [
{ key: "待上报", name: "待上报" },
{ key: "已上报", name: "已上报" },
{ key: "已确认", name: "已确认" },
{ key: "待整改", name: "待整改" },
],
pickerOptions1: {
disabledDate(time) {
return time.getTime() > Date.now();
},
shortcuts: [{
text: '今天',
onClick(picker) {
picker.$emit('pick', new Date());
}
}, {
text: '昨天',
onClick(picker) {
const date = new Date();
date.setTime(date.getTime() - 3600 * 1000 * 24);
picker.$emit('pick', date);
}
}, {
text: '一周前',
onClick(picker) {
const date = new Date();
date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit('pick', date);
}
}]
},
listQuery: {
page: 1,
page_size: 20,
},
listLoading: false,
dialogVisible: false,
dialogType: "new",
rule1: {
name: [{ required: true, message: "请输入名称", trigger: "blur" }],
name: [{ required: true, message: "请输入", trigger: "blur" }]
},
filterOrgText: "",
treeLoding: false,
};
},
computed: {},
watch: {
filterOrgText(val) {
this.$refs.tree.filter(val);
},
},
created() {
this.getList();
},
methods: {
checkPermission,
getList(){
getRecordList(this.listQuery).then((response)=>{
this.recordList=response.data
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
getList() {
this.listLoading = true;
getContentList().then((response) => {
if (response.data) {
this.contentList = response.data;
}
this.listLoading = false;
});
},
handleFilter() {
})
}
,
handleFilter() {
this.listQuery.page = 1;
this.getList();
},
resetFilter() {
this.listQuery = {
page: 1,
page_size: 20,
}
this.getList();
},

View File

@ -36,13 +36,13 @@ class TaskListSerializer(serializers.ModelSerializer):
model = Task
fields = ['name', 'is_self', 'end_date', 'note', 'complete_rate', 'state', 'id']
class RecordSerializer(serializers.ModelSerializer):
files_ = FileListSerializer(source='files', many=True, read_only=True)
task_ = TaskListSerializer(source='task')
content_=ContentListSerializer(source='content')
dept_ = OrganizationSimpleSerializer(source='belong_dept', read_only=True)
class Meta:
model = Record
fields = ('id', 'up_date', 'up_user', 'end_date', 'state',
'is_yes', 'note', 'noteb','content','content_','task_','task', 'files', 'files_')
'is_yes', 'note', 'noteb','content','content_','task_','task','dept_')
class TaksDetailSerializer(serializers.ModelSerializer):
create_by_ = UserSimpleSerializer(source='create_by', read_only = True)

View File

@ -75,11 +75,14 @@ class TaskViewSet(CreateUpdateCustomMixin, ModelViewSet):
return Response(status=status.HTTP_200_OK)
return Response('单位或清单不能为空', status=status.HTTP_400_BAD_REQUEST)
class RecordViewSet(CreateUpdateCustomMixin,ModelViewSet):
perms_map = {'get': '*', 'post': 'record_create',
'put': 'record_update', 'delete': 'record_delete'}
perms_map = {'get': '*'}
queryset = Record.objects.all()
serializer_class = RecordSerializer
search_fields = ['name']
search_fields = ['content','task','up_date','state']
ordering = ['-create_time']
def get_queryset(self):
queryset = self.queryset
if hasattr(self.get_serializer_class(), 'setup_eager_loading'):
queryset = self.get_serializer_class().setup_eager_loading(queryset) # 性能优化
return queryset