清单模板
This commit is contained in:
parent
ba8c71e056
commit
ad395c2649
|
|
@ -63,6 +63,7 @@
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
|
v-if="dialogVisible"
|
||||||
:visible.sync="dialogVisible"
|
:visible.sync="dialogVisible"
|
||||||
:title="dialogType === 'edit' ? '编辑资料' : '新增资料'"
|
:title="dialogType === 'edit' ? '编辑资料' : '新增资料'"
|
||||||
>
|
>
|
||||||
|
|
@ -94,6 +95,21 @@
|
||||||
placeholder="详情"
|
placeholder="详情"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</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-form-item label="排序" prop="sort">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="Content.sortnum"
|
v-model="Content.sortnum"
|
||||||
|
|
@ -129,16 +145,22 @@ import Pagination from "@/components/Pagination"; // secondary package based on
|
||||||
import Treeselect from "@riophae/vue-treeselect";
|
import Treeselect from "@riophae/vue-treeselect";
|
||||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||||
import { getDictList, getDictTypeList } from "@/api/dict";
|
import { getDictList, getDictTypeList } from "@/api/dict";
|
||||||
|
import { upUrl, upHeaders } from "@/api/file";
|
||||||
const defaultContent = {
|
const defaultContent = {
|
||||||
name: "",
|
name: "",
|
||||||
desc: "",
|
desc: "",
|
||||||
|
sortnum:1,
|
||||||
type: null,
|
type: null,
|
||||||
can_doself: false,
|
can_doself: false,
|
||||||
|
template: null
|
||||||
};
|
};
|
||||||
export default {
|
export default {
|
||||||
components: { Pagination, Treeselect },
|
components: { Pagination, Treeselect },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
upHeaders: upHeaders(),
|
||||||
|
upUrl: upUrl(),
|
||||||
|
fileList:[],
|
||||||
Content: defaultContent,
|
Content: defaultContent,
|
||||||
contentList: [],
|
contentList: [],
|
||||||
typeOptions: [],
|
typeOptions: [],
|
||||||
|
|
@ -163,6 +185,19 @@ export default {
|
||||||
this.getTypeAll();
|
this.getTypeAll();
|
||||||
},
|
},
|
||||||
methods: {
|
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,
|
checkPermission,
|
||||||
|
|
||||||
filterNode(value, data) {
|
filterNode(value, data) {
|
||||||
|
|
@ -193,6 +228,7 @@ export default {
|
||||||
this.Content = Object.assign({}, defaultContent);
|
this.Content = Object.assign({}, defaultContent);
|
||||||
this.dialogType = "new";
|
this.dialogType = "new";
|
||||||
this.dialogVisible = true;
|
this.dialogVisible = true;
|
||||||
|
this.fileList=[]
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs["Form"].clearValidate();
|
this.$refs["Form"].clearValidate();
|
||||||
});
|
});
|
||||||
|
|
@ -201,6 +237,14 @@ export default {
|
||||||
this.Content = Object.assign({}, scope.row); // copy obj
|
this.Content = Object.assign({}, scope.row); // copy obj
|
||||||
this.dialogType = "edit";
|
this.dialogType = "edit";
|
||||||
this.dialogVisible = true;
|
this.dialogVisible = true;
|
||||||
|
if (this.Content.template) {
|
||||||
|
this.fileList = [
|
||||||
|
{
|
||||||
|
name:'清单模板',
|
||||||
|
url: this.Content.template,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs["Form"].clearValidate();
|
this.$refs["Form"].clearValidate();
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,9 @@
|
||||||
<el-form-item label="所属任务" v-if="record.task_">
|
<el-form-item label="所属任务" v-if="record.task_">
|
||||||
{{ record.task_.name }}/{{ record.task_.end_date }}
|
{{ record.task_.name }}/{{ record.task_.end_date }}
|
||||||
</el-form-item>
|
</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_">
|
<el-form-item label="报送要求/备注" v-if="record.task_">
|
||||||
<span v-if="data.action != 'update'">{{
|
<span v-if="data.action != 'update'">{{
|
||||||
record.note
|
record.note
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ class ContentSerializer(serializers.ModelSerializer):
|
||||||
class ContentListSerializer(serializers.ModelSerializer):
|
class ContentListSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Content
|
model = Content
|
||||||
fields = ['name', 'desc', 'id']
|
fields = ['name', 'desc', 'id', 'template']
|
||||||
|
|
||||||
class TaskCreateUpdateSerializer(serializers.ModelSerializer):
|
class TaskCreateUpdateSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -38,6 +38,7 @@ class TaskListSerializer(serializers.ModelSerializer):
|
||||||
fields = ['name', 'end_date', 'note', 'state', 'id']
|
fields = ['name', 'end_date', 'note', 'state', 'id']
|
||||||
|
|
||||||
class RecordSerializer(serializers.ModelSerializer):
|
class RecordSerializer(serializers.ModelSerializer):
|
||||||
|
content_ = ContentListSerializer(source='content', read_only=True)
|
||||||
task_ = TaskListSerializer(source='task', read_only=True)
|
task_ = TaskListSerializer(source='task', read_only=True)
|
||||||
belong_dept_ = OrganizationSimpleSerializer(source='belong_dept', read_only=True)
|
belong_dept_ = OrganizationSimpleSerializer(source='belong_dept', read_only=True)
|
||||||
files_ = FileSimpleSerializer(source='files', many=True, read_only=True)
|
files_ = FileSimpleSerializer(source='files', many=True, read_only=True)
|
||||||
|
|
|
||||||
|
|
@ -307,7 +307,7 @@ class UserViewSet(PageOrNot, ModelViewSet):
|
||||||
'id': user.id,
|
'id': user.id,
|
||||||
'username': user.username,
|
'username': user.username,
|
||||||
'name': user.name,
|
'name': user.name,
|
||||||
'dept': user.dept.pk,
|
'dept': user.dept.pk if user.dept else '',
|
||||||
'dept_name':user.dept.name if user.dept else '',
|
'dept_name':user.dept.name if user.dept else '',
|
||||||
'roles': user.roles.all().values_list('name', flat=True),
|
'roles': user.roles.all().values_list('name', flat=True),
|
||||||
# 'avatar': request._request._current_scheme_host + '/media/' + str(user.image),
|
# 'avatar': request._request._current_scheme_host + '/media/' + str(user.image),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue