清单模板

This commit is contained in:
caoqianming 2021-06-17 17:25:26 +08:00
parent ba8c71e056
commit ad395c2649
4 changed files with 50 additions and 2 deletions

View File

@ -63,6 +63,7 @@
</el-table>
</el-card>
<el-dialog
v-if="dialogVisible"
:visible.sync="dialogVisible"
:title="dialogType === 'edit' ? '编辑资料' : '新增资料'"
>
@ -94,6 +95,21 @@
placeholder="详情"
/>
</el-form-item>
<el-form-item label="模板" prop="template">
<el-upload
ref="upload"
:action="upUrl"
:on-preview="handlePreview"
:on-success="handleUpSuccess"
:on-remove="handleRemove"
:headers="upHeaders"
:file-list="fileList"
:limit="1"
accept=".doc,.docx,.xls,.xlsx,.ppt,.pptx"
>
<el-button size="small" type="primary">上传文件</el-button>
</el-upload>
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input-number
v-model="Content.sortnum"
@ -129,16 +145,22 @@ import Pagination from "@/components/Pagination"; // secondary package based on
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import { getDictList, getDictTypeList } from "@/api/dict";
import { upUrl, upHeaders } from "@/api/file";
const defaultContent = {
name: "",
desc: "",
sortnum:1,
type: null,
can_doself: false,
template: null
};
export default {
components: { Pagination, Treeselect },
data() {
return {
upHeaders: upHeaders(),
upUrl: upUrl(),
fileList:[],
Content: defaultContent,
contentList: [],
typeOptions: [],
@ -163,6 +185,19 @@ export default {
this.getTypeAll();
},
methods: {
handlePreview(file) {
if ("url" in file) {
window.open(file.url);
} else {
window.open(file.response.data.path);
}
},
handleUpSuccess(res, file, filelist) {
this.Content.template = res.data.path;
},
handleRemove(file, filelist){
this.Content.template = null;
},
checkPermission,
filterNode(value, data) {
@ -193,6 +228,7 @@ export default {
this.Content = Object.assign({}, defaultContent);
this.dialogType = "new";
this.dialogVisible = true;
this.fileList=[]
this.$nextTick(() => {
this.$refs["Form"].clearValidate();
});
@ -201,6 +237,14 @@ export default {
this.Content = Object.assign({}, scope.row); // copy obj
this.dialogType = "edit";
this.dialogVisible = true;
if (this.Content.template) {
this.fileList = [
{
name:'清单模板',
url: this.Content.template,
},
];
}
this.$nextTick(() => {
this.$refs["Form"].clearValidate();
});

View File

@ -15,6 +15,9 @@
<el-form-item label="所属任务" v-if="record.task_">
{{ record.task_.name }}/{{ record.task_.end_date }}
</el-form-item>
<el-form-item label="清单模板" v-if="record.content_.template">
<el-link :href="record.content_.template" type="primary">模板下载</el-link>
</el-form-item>
<el-form-item label="报送要求/备注" v-if="record.task_">
<span v-if="data.action != 'update'">{{
record.note

View File

@ -25,7 +25,7 @@ class ContentSerializer(serializers.ModelSerializer):
class ContentListSerializer(serializers.ModelSerializer):
class Meta:
model = Content
fields = ['name', 'desc', 'id']
fields = ['name', 'desc', 'id', 'template']
class TaskCreateUpdateSerializer(serializers.ModelSerializer):
class Meta:
@ -38,6 +38,7 @@ class TaskListSerializer(serializers.ModelSerializer):
fields = ['name', 'end_date', 'note', 'state', 'id']
class RecordSerializer(serializers.ModelSerializer):
content_ = ContentListSerializer(source='content', read_only=True)
task_ = TaskListSerializer(source='task', read_only=True)
belong_dept_ = OrganizationSimpleSerializer(source='belong_dept', read_only=True)
files_ = FileSimpleSerializer(source='files', many=True, read_only=True)

View File

@ -307,7 +307,7 @@ class UserViewSet(PageOrNot, ModelViewSet):
'id': user.id,
'username': user.username,
'name': user.name,
'dept': user.dept.pk,
'dept': user.dept.pk if user.dept else '',
'dept_name':user.dept.name if user.dept else '',
'roles': user.roles.all().values_list('name', flat=True),
# 'avatar': request._request._current_scheme_host + '/media/' + str(user.image),