Commit 0ca51a08 by zhaopanyu

zpy 12.8 教师电子档案

parent 2487251e
<template> <template>
<el-dialog <el-dialog :visible.sync="open" :title="title" width="300px">
:visible.sync="open"
:title="title"
width="300px"
>
<el-radio-group v-model="exportType"> <el-radio-group v-model="exportType">
<el-radio <el-radio v-for="item in ExportOptions" :key="item.type" :label="item.type"
v-for="item in ExportOptions" style="display: block; margin-bottom: 10px">{{ item.label }}
:key="item.type"
:label="item.type"
style="display: block; margin-bottom: 10px"
>{{ item.label }}
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
<div slot="footer"> <div slot="footer">
<el-button <el-button type="primary" @click="exportFile">导 出
type="primary"
@click="exportFile"
>导 出
</el-button> </el-button>
<el-button <el-button plain @click="closeExport">取 消
plain
@click="closeExport"
>取 消
</el-button> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import {ExportType, ExportTypes} from "@/enums/common"; import { ExportType, ExportTypes } from "@/enums/common";
export default { export default {
name: "ExportTable", name: "ExportTable",
...@@ -80,10 +66,11 @@ export default { ...@@ -80,10 +66,11 @@ export default {
exportFile() { exportFile() {
this.$emit('export', (exportOptions = [], fileName) => { this.$emit('export', (exportOptions = [], fileName) => {
const result = exportOptions.find(item => item.type === this.exportType); const result = exportOptions.find(item => item.type === this.exportType);
console.log('result', result);
if (result) { if (result) {
// 添加校验 // 添加校验
if (result.path && this.isSelectedData(result.path)) { if (result.path && this.isSelectedData(result.path)) {
this.download(result.path, {...result.params}, fileName); this.download(result.path, { ...result.params }, fileName);
} }
this.open = false; this.open = false;
} }
...@@ -109,6 +96,4 @@ export default { ...@@ -109,6 +96,4 @@ export default {
} }
</script> </script>
<style scoped> <style scoped></style>
</style>
...@@ -2,28 +2,25 @@ ...@@ -2,28 +2,25 @@
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="学科" prop="sub"> <el-form-item label="学科" prop="sub">
<el-select v-model="form.teachingSubject" placeholder="请选择" style="width: 100%;"> <el-select v-model="queryParams.teachingSubject" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.teaching_subjects" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.teaching_subjects" :key="dict.value" :label="dict.label"
:value="dict.value"> :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="获奖类别" prop="awardType"> <el-form-item label="获奖类别" prop="awardType">
<el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;"> <el-input v-model="queryParams.awardType" placeholder="请输入获奖类别" clearable
<el-option v-for="dict in dict.type.award_categories" :key="dict.value" :label="dict.label" @keyup.enter.native="handleQuery" />
:value="dict.value">
</el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="获奖级别" prop="awardRank"> <el-form-item label="获奖级别" prop="awardRank">
<el-select v-model="form.awardRank" placeholder="请选择" style="width: 100%;"> <el-select v-model="queryParams.awardRank" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.awards_level" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.awards_level" :key="dict.value" :label="dict.label"
:value="dict.value"> :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="获奖等级" prop="awardLevel"> <el-form-item label="获奖等级" prop="awardLevel">
<el-select v-model="form.awardLevel" placeholder="请选择" style="width: 100%;"> <el-select v-model="queryParams.awardLevel" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.award_rank" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.award_rank" :key="dict.value" :label="dict.label"
:value="dict.value"> :value="dict.value">
</el-option> </el-option>
...@@ -108,11 +105,8 @@ ...@@ -108,11 +105,8 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="获奖类别" prop="awardType"> <el-form-item label="获奖类别" prop="awardType">
<el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;"> <el-input v-model="queryParams.awardType" placeholder="请输入获奖类别" clearable
<el-option v-for="dict in dict.type.award_categories" :key="dict.value" :label="dict.label" @keyup.enter.native="handleQuery" />
:value="dict.value">
</el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -168,9 +162,17 @@ ...@@ -168,9 +162,17 @@
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> </el-row>
<el-form-item label="证书图片" prop="pictureName"> <el-row>
<el-input v-model="form.pictureName" placeholder="请输入证书图片名称" /> <el-col :span="12" class="custom-margin">
<el-form-item label="证书图片" prop="photo">
<el-upload v-loading="uploadLoading" class="avatar-uploader" action="#" accept="image/*"
:show-file-list="false" :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload" :http-request="uploadImage">
<img v-if="form.photoUrl" :src="baseUrl + form.photoUrl"
style="max-width: 100%; max-height: 100%" class="avatar" alt="" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -185,12 +187,15 @@ ...@@ -185,12 +187,15 @@
<script> <script>
// import { listHonors, getHonors, delHonors, addHonors, updateHonors } from "@/api/system/honors"; // import { listHonors, getHonors, delHonors, addHonors, updateHonors } from "@/api/system/honors";
import { uploadImage as commonUpload } from "@/api/common";
export default { export default {
name: "Honors", name: "Honors",
dicts: ["teaching_subjects", 'award_categories', 'awards_level', 'award_rank'], dicts: ["teaching_subjects", 'award_categories', 'awards_level', 'award_rank'],
data() { data() {
return { return {
// 图片上传遮罩层
uploadLoading: false,
baseUrl: [process.env.VUE_APP_BASE_API],
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 选中数组 // 选中数组
...@@ -303,6 +308,45 @@ export default { ...@@ -303,6 +308,45 @@ export default {
handleExamine() { handleExamine() {
}, },
// 上传成功回调
handleAvatarSuccess(res, file) {
this.photoUrl = res.data.url;
this.commonUpload(file);
},
// 上传前格式和图片大小限制
beforeAvatarUpload(file) {
const type =
file.type === "image/jpeg" ||
"image/jpg" ||
"image/webp" ||
"image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!type) {
this.$message.error("图片格式不正确!(只能包含jpg,png,webp,JPEG)");
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
}
return type && isLt2M;
},
// 上传图片
uploadImage(file) {
const fileData = file.file;
const formData = new FormData();
formData.append("file", fileData);
this.uploadLoading = true;
commonUpload(formData)
.then((response) => {
this.uploadLoading = false;
this.$modal.msgSuccess("上传成功");
this.photoUrl = this.pev + response.url;
this.form.photoUrl = response.url;
})
.catch((error) => {
this.uploadLoading = false;
});
},
// 取消按钮 // 取消按钮
cancel() { cancel() {
this.open = false; this.open = false;
......
...@@ -170,9 +170,17 @@ ...@@ -170,9 +170,17 @@
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> </el-row>
<el-form-item label="证书图片" prop="pictureName"> <el-row>
<el-input v-model="form.pictureName" placeholder="请输入证书图片名称" /> <el-col :span="12" class="custom-margin">
<el-form-item label="证书图片" prop="photo">
<el-upload v-loading="uploadLoading" class="avatar-uploader" action="#" accept="image/*"
:show-file-list="false" :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload" :http-request="uploadImage">
<img v-if="form.photoUrl" :src="baseUrl + form.photoUrl"
style="max-width: 100%; max-height: 100%" class="avatar" alt="" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -187,7 +195,7 @@ ...@@ -187,7 +195,7 @@
<script> <script>
// import { listWorks, getWorks, delWorks, addWorks, updateWorks } from "@/api/system/works"; // import { listWorks, getWorks, delWorks, addWorks, updateWorks } from "@/api/system/works";
import { uploadImage as commonUpload } from "@/api/common";
export default { export default {
name: "Works", name: "Works",
dicts: ["teaching_subjects", 'award_categories', 'awards_level', 'award_rank'], dicts: ["teaching_subjects", 'award_categories', 'awards_level', 'award_rank'],
...@@ -205,6 +213,8 @@ export default { ...@@ -205,6 +213,8 @@ export default {
showSearch: true, showSearch: true,
// 总条数 // 总条数
total: 0, total: 0,
// 图片上传遮罩层
uploadLoading: false,
// 论文著作表格数据 // 论文著作表格数据
worksList: [{ worksList: [{
id: 1, id: 1,
...@@ -246,6 +256,8 @@ export default { ...@@ -246,6 +256,8 @@ export default {
pictureName: null, pictureName: null,
pictureUrl: null, pictureUrl: null,
}, },
baseUrl: [process.env.VUE_APP_BASE_API],
uploadFileLoading: false,
// 表单参数 // 表单参数
form: {}, form: {},
// 表单校验 // 表单校验
...@@ -310,6 +322,45 @@ export default { ...@@ -310,6 +322,45 @@ export default {
this.open = false; this.open = false;
this.reset(); this.reset();
}, },
// 上传成功回调
handleAvatarSuccess(res, file) {
this.photoUrl = res.data.url;
this.commonUpload(file);
},
// 上传前格式和图片大小限制
beforeAvatarUpload(file) {
const type =
file.type === "image/jpeg" ||
"image/jpg" ||
"image/webp" ||
"image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!type) {
this.$message.error("图片格式不正确!(只能包含jpg,png,webp,JPEG)");
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
}
return type && isLt2M;
},
// 上传图片
uploadImage(file) {
const fileData = file.file;
const formData = new FormData();
formData.append("file", fileData);
this.uploadLoading = true;
commonUpload(formData)
.then((response) => {
this.uploadLoading = false;
this.$modal.msgSuccess("上传成功");
this.photoUrl = this.pev + response.url;
this.form.photoUrl = response.url;
})
.catch((error) => {
this.uploadLoading = false;
});
},
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
</el-form-item> </el-form-item>
<el-form-item label="获奖类别" prop="awardType"> <el-form-item label="获奖类别" prop="awardType">
<el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.award_categories" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.award_categoriesjk" :key="dict.value" :label="dict.label"
:value="dict.value"> :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
...@@ -110,8 +110,8 @@ ...@@ -110,8 +110,8 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="获奖类别" prop="awardType"> <el-form-item label="获奖类别" prop="awardType">
<el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.award_categories" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.award_categoriesjk" :key="dict.value"
:value="dict.value"> :label="dict.label" :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -171,9 +171,17 @@ ...@@ -171,9 +171,17 @@
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> </el-row>
<el-form-item label="证书图片" prop="pictureName"> <el-row>
<el-input v-model="form.pictureName" placeholder="请输入证书图片名称" /> <el-col :span="12" class="custom-margin">
<el-form-item label="证书图片" prop="photo">
<el-upload v-loading="uploadLoading" class="avatar-uploader" action="#" accept="image/*"
:show-file-list="false" :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload" :http-request="uploadImage">
<img v-if="form.photoUrl" :src="baseUrl + form.photoUrl"
style="max-width: 100%; max-height: 100%" class="avatar" alt="" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -188,12 +196,15 @@ ...@@ -188,12 +196,15 @@
<script> <script>
// import { listAwards, getAwards, delAwards, addAwards, updateAwards } from "@/api/system/awards"; // import { listAwards, getAwards, delAwards, addAwards, updateAwards } from "@/api/system/awards";
import { uploadImage as commonUpload } from "@/api/common";
export default { export default {
name: "Awards", name: "Awards",
dicts: ["teaching_subjects", 'award_categories', 'awards_level', 'award_rank'], dicts: ["teaching_subjects", 'award_categoriesjk', 'awards_level', 'award_rank'],
data() { data() {
return { return {
// 图片上传遮罩层
uploadLoading: false,
baseUrl: [process.env.VUE_APP_BASE_API],
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 选中数组 // 选中数组
...@@ -295,6 +306,7 @@ export default { ...@@ -295,6 +306,7 @@ export default {
// this.getList(); // this.getList();
}, },
methods: { methods: {
/** 查询讲课获奖列表 */ /** 查询讲课获奖列表 */
getList() { getList() {
this.loading = true; this.loading = true;
...@@ -304,6 +316,45 @@ export default { ...@@ -304,6 +316,45 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
// 上传成功回调
handleAvatarSuccess(res, file) {
this.photoUrl = res.data.url;
this.commonUpload(file);
},
// 上传前格式和图片大小限制
beforeAvatarUpload(file) {
const type =
file.type === "image/jpeg" ||
"image/jpg" ||
"image/webp" ||
"image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!type) {
this.$message.error("图片格式不正确!(只能包含jpg,png,webp,JPEG)");
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
}
return type && isLt2M;
},
// 上传图片
uploadImage(file) {
const fileData = file.file;
const formData = new FormData();
formData.append("file", fileData);
this.uploadLoading = true;
commonUpload(formData)
.then((response) => {
this.uploadLoading = false;
this.$modal.msgSuccess("上传成功");
this.photoUrl = this.pev + response.url;
this.form.photoUrl = response.url;
})
.catch((error) => {
this.uploadLoading = false;
});
},
// 取消按钮 // 取消按钮
cancel() { cancel() {
this.open = false; this.open = false;
......
...@@ -8,16 +8,16 @@ ...@@ -8,16 +8,16 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="获奖类别" prop="awardType"> <el-form-item label="获奖级别" prop="awardRank">
<el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.awardRank" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.award_categories" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.awards_level" :key="dict.value" :label="dict.label"
:value="dict.value"> :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="获奖级别" prop="awardRank"> <el-form-item label="获奖类别" prop="awardType">
<el-select v-model="form.awardRank" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.awards_level" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.award_categoriesjs" :key="dict.value" :label="dict.label"
:value="dict.value"> :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="成长类型" align="center" prop="id" /> <el-table-column label="成长类型" align="center" prop="id" />
<el-table-column label="学科" align="center" prop="sub" /> <el-table-column label="学科" align="center" prop="sub" />
<el-table-column label="获奖类" align="center" prop="awardType" /> <el-table-column label="获奖类" align="center" prop="awardType" />
<el-table-column label="获奖等级" align="center" prop="awardLevel" /> <el-table-column label="获奖等级" align="center" prop="awardLevel" />
<el-table-column label="获奖级别" align="center" prop="awardRank" /> <el-table-column label="获奖级别" align="center" prop="awardRank" />
<el-table-column label="教学获奖-成果名称" align="center" prop="resultName" /> <el-table-column label="教学获奖-成果名称" align="center" prop="resultName" />
...@@ -111,8 +111,8 @@ ...@@ -111,8 +111,8 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="获奖类别" prop="awardType"> <el-form-item label="获奖类别" prop="awardType">
<el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.award_categories" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.award_categoriesjs" :key="dict.value"
:value="dict.value"> :label="dict.label" :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -170,9 +170,17 @@ ...@@ -170,9 +170,17 @@
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> </el-row>
<el-form-item label="证书图片" prop="pictureName"> <el-row>
<el-input v-model="form.pictureName" placeholder="请输入证书图片名称" /> <el-col :span="12" class="custom-margin">
<el-form-item label="证书图片" prop="photo">
<el-upload v-loading="uploadLoading" class="avatar-uploader" action="#" accept="image/*"
:show-file-list="false" :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload" :http-request="uploadImage">
<img v-if="form.photoUrl" :src="baseUrl + form.photoUrl"
style="max-width: 100%; max-height: 100%" class="avatar" alt="" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -187,12 +195,15 @@ ...@@ -187,12 +195,15 @@
<script> <script>
// import { listAwards, getAwards, delAwards, addAwards, updateAwards } from "@/api/system/awards"; // import { listAwards, getAwards, delAwards, addAwards, updateAwards } from "@/api/system/awards";
import { uploadImage as commonUpload } from "@/api/common";
export default { export default {
name: "Awards", name: "Awards",
dicts: ["teaching_subjects", 'award_categories', 'awards_level', 'award_rank'], dicts: ["teaching_subjects", 'award_categoriesjs', 'awards_level', 'award_rank'],
data() { data() {
return { return {
// 图片上传遮罩层
uploadLoading: false,
baseUrl: [process.env.VUE_APP_BASE_API],
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 选中数组 // 选中数组
...@@ -302,6 +313,45 @@ export default { ...@@ -302,6 +313,45 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
// 上传成功回调
handleAvatarSuccess(res, file) {
this.photoUrl = res.data.url;
this.commonUpload(file);
},
// 上传前格式和图片大小限制
beforeAvatarUpload(file) {
const type =
file.type === "image/jpeg" ||
"image/jpg" ||
"image/webp" ||
"image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!type) {
this.$message.error("图片格式不正确!(只能包含jpg,png,webp,JPEG)");
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
}
return type && isLt2M;
},
// 上传图片
uploadImage(file) {
const fileData = file.file;
const formData = new FormData();
formData.append("file", fileData);
this.uploadLoading = true;
commonUpload(formData)
.then((response) => {
this.uploadLoading = false;
this.$modal.msgSuccess("上传成功");
this.photoUrl = this.pev + response.url;
this.form.photoUrl = response.url;
})
.catch((error) => {
this.uploadLoading = false;
});
},
// 取消按钮 // 取消按钮
cancel() { cancel() {
this.open = false; this.open = false;
......
...@@ -277,7 +277,7 @@ export default { ...@@ -277,7 +277,7 @@ export default {
// 表单校验 // 表单校验
rules: { rules: {
schoolYear: [ schoolYear: [
{ required: true, message: "学年(下拉框)不能为空", trigger: "change" } { required: true, message: "学年不能为空", trigger: "change" }
], ],
semester: [ semester: [
{ required: true, message: "学期不能为空", trigger: "change" } { required: true, message: "学期不能为空", trigger: "change" }
...@@ -289,7 +289,7 @@ export default { ...@@ -289,7 +289,7 @@ export default {
{ required: true, message: "考试类型不能为空", trigger: "change" } { required: true, message: "考试类型不能为空", trigger: "change" }
], ],
year: [ year: [
{ required: true, message: "届别(下拉框)不能为空", trigger: "change" } { required: true, message: "届别不能为空", trigger: "change" }
], ],
grade: [ grade: [
{ required: true, message: "年级不能为空", trigger: "change" } { required: true, message: "年级不能为空", trigger: "change" }
......
...@@ -2,28 +2,25 @@ ...@@ -2,28 +2,25 @@
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="学科" prop="sub"> <el-form-item label="学科" prop="sub">
<el-select v-model="form.teachingSubject" placeholder="请选择" style="width: 100%;"> <el-select v-model="queryParams.teachingSubject" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.teaching_subjects" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.teaching_subjects" :key="dict.value" :label="dict.label"
:value="dict.value"> :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="获奖类别" prop="awardType"> <el-form-item label="获奖类别" prop="awardType">
<el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;"> <el-input v-model="queryParams.awardType" placeholder="请输入获奖类别" clearable
<el-option v-for="dict in dict.type.award_categories" :key="dict.value" :label="dict.label" @keyup.enter.native="handleQuery" />
:value="dict.value">
</el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="获奖级别" prop="awardRank"> <el-form-item label="获奖级别" prop="awardRank">
<el-select v-model="form.awardRank" placeholder="请选择" style="width: 100%;"> <el-select v-model="queryParams.awardRank" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.awards_level" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.awards_level" :key="dict.value" :label="dict.label"
:value="dict.value"> :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="获奖等级" prop="awardLevel"> <el-form-item label="获奖等级" prop="awardLevel">
<el-select v-model="form.awardLevel" placeholder="请选择" style="width: 100%;"> <el-select v-model="queryParams.awardLevel" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.award_rank" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.award_rank" :key="dict.value" :label="dict.label"
:value="dict.value"> :value="dict.value">
</el-option> </el-option>
...@@ -106,11 +103,8 @@ ...@@ -106,11 +103,8 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="获奖类别" prop="awardType"> <el-form-item label="获奖类别" prop="awardType">
<el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;"> <el-input v-model="queryParams.awardType" placeholder="请输入获奖类别" clearable
<el-option v-for="dict in dict.type.award_categories" :key="dict.value" :label="dict.label" @keyup.enter.native="handleQuery" />
:value="dict.value">
</el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -166,9 +160,17 @@ ...@@ -166,9 +160,17 @@
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> </el-row>
<el-form-item label="证书图片" prop="pictureName"> <el-row>
<el-input v-model="form.pictureName" placeholder="请输入证书图片名称" /> <el-col :span="12" class="custom-margin">
<el-form-item label="证书图片" prop="photo">
<el-upload v-loading="uploadLoading" class="avatar-uploader" action="#" accept="image/*"
:show-file-list="false" :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload" :http-request="uploadImage">
<img v-if="form.photoUrl" :src="baseUrl + form.photoUrl"
style="max-width: 100%; max-height: 100%" class="avatar" alt="" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -183,12 +185,15 @@ ...@@ -183,12 +185,15 @@
<script> <script>
// import { listHonors, getHonors, delHonors, addHonors, updateHonors } from "@/api/system/honors"; // import { listHonors, getHonors, delHonors, addHonors, updateHonors } from "@/api/system/honors";
import { uploadImage as commonUpload } from "@/api/common";
export default { export default {
name: "Honors", name: "Honors",
dicts: ["teaching_subjects", 'award_categories', 'awards_level', 'award_rank'], dicts: ["teaching_subjects", 'award_categories', 'awards_level', 'award_rank'],
data() { data() {
return { return {
// 图片上传遮罩层
uploadLoading: false,
baseUrl: [process.env.VUE_APP_BASE_API],
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 选中数组 // 选中数组
...@@ -301,6 +306,45 @@ export default { ...@@ -301,6 +306,45 @@ export default {
handleExamine() { handleExamine() {
}, },
// 上传成功回调
handleAvatarSuccess(res, file) {
this.photoUrl = res.data.url;
this.commonUpload(file);
},
// 上传前格式和图片大小限制
beforeAvatarUpload(file) {
const type =
file.type === "image/jpeg" ||
"image/jpg" ||
"image/webp" ||
"image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!type) {
this.$message.error("图片格式不正确!(只能包含jpg,png,webp,JPEG)");
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
}
return type && isLt2M;
},
// 上传图片
uploadImage(file) {
const fileData = file.file;
const formData = new FormData();
formData.append("file", fileData);
this.uploadLoading = true;
commonUpload(formData)
.then((response) => {
this.uploadLoading = false;
this.$modal.msgSuccess("上传成功");
this.photoUrl = this.pev + response.url;
this.form.photoUrl = response.url;
})
.catch((error) => {
this.uploadLoading = false;
});
},
// 取消按钮 // 取消按钮
cancel() { cancel() {
this.open = false; this.open = false;
......
...@@ -168,9 +168,17 @@ ...@@ -168,9 +168,17 @@
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> </el-row>
<el-form-item label="证书图片" prop="pictureName"> <el-row>
<el-input v-model="form.pictureName" placeholder="请输入证书图片名称" /> <el-col :span="12" class="custom-margin">
<el-form-item label="证书图片" prop="photo">
<el-upload v-loading="uploadLoading" class="avatar-uploader" action="#" accept="image/*"
:show-file-list="false" :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload" :http-request="uploadImage">
<img v-if="form.photoUrl" :src="baseUrl + form.photoUrl"
style="max-width: 100%; max-height: 100%" class="avatar" alt="" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -185,7 +193,7 @@ ...@@ -185,7 +193,7 @@
<script> <script>
// import { listWorks, getWorks, delWorks, addWorks, updateWorks } from "@/api/system/works"; // import { listWorks, getWorks, delWorks, addWorks, updateWorks } from "@/api/system/works";
import { uploadImage as commonUpload } from "@/api/common";
export default { export default {
name: "Works", name: "Works",
dicts: ["teaching_subjects", 'award_categories', 'awards_level', 'award_rank'], dicts: ["teaching_subjects", 'award_categories', 'awards_level', 'award_rank'],
...@@ -203,6 +211,8 @@ export default { ...@@ -203,6 +211,8 @@ export default {
showSearch: true, showSearch: true,
// 总条数 // 总条数
total: 0, total: 0,
// 图片上传遮罩层
uploadLoading: false,
// 论文著作表格数据 // 论文著作表格数据
worksList: [{ worksList: [{
id: 1, id: 1,
...@@ -244,6 +254,8 @@ export default { ...@@ -244,6 +254,8 @@ export default {
pictureName: null, pictureName: null,
pictureUrl: null, pictureUrl: null,
}, },
baseUrl: [process.env.VUE_APP_BASE_API],
uploadFileLoading: false,
// 表单参数 // 表单参数
form: {}, form: {},
// 表单校验 // 表单校验
...@@ -308,6 +320,45 @@ export default { ...@@ -308,6 +320,45 @@ export default {
this.open = false; this.open = false;
this.reset(); this.reset();
}, },
// 上传成功回调
handleAvatarSuccess(res, file) {
this.photoUrl = res.data.url;
this.commonUpload(file);
},
// 上传前格式和图片大小限制
beforeAvatarUpload(file) {
const type =
file.type === "image/jpeg" ||
"image/jpg" ||
"image/webp" ||
"image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!type) {
this.$message.error("图片格式不正确!(只能包含jpg,png,webp,JPEG)");
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
}
return type && isLt2M;
},
// 上传图片
uploadImage(file) {
const fileData = file.file;
const formData = new FormData();
formData.append("file", fileData);
this.uploadLoading = true;
commonUpload(formData)
.then((response) => {
this.uploadLoading = false;
this.$modal.msgSuccess("上传成功");
this.photoUrl = this.pev + response.url;
this.form.photoUrl = response.url;
})
.catch((error) => {
this.uploadLoading = false;
});
},
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
</el-form-item> </el-form-item>
<el-form-item label="获奖类别" prop="awardType"> <el-form-item label="获奖类别" prop="awardType">
<el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.award_categories" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.award_categoriesjk" :key="dict.value" :label="dict.label"
:value="dict.value"> :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
...@@ -108,8 +108,8 @@ ...@@ -108,8 +108,8 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="获奖类别" prop="awardType"> <el-form-item label="获奖类别" prop="awardType">
<el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.award_categories" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.award_categoriesjk" :key="dict.value"
:value="dict.value"> :label="dict.label" :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -169,9 +169,17 @@ ...@@ -169,9 +169,17 @@
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> </el-row>
<el-form-item label="证书图片" prop="pictureName"> <el-row>
<el-input v-model="form.pictureName" placeholder="请输入证书图片名称" /> <el-col :span="12" class="custom-margin">
<el-form-item label="证书图片" prop="photo">
<el-upload v-loading="uploadLoading" class="avatar-uploader" action="#" accept="image/*"
:show-file-list="false" :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload" :http-request="uploadImage">
<img v-if="form.photoUrl" :src="baseUrl + form.photoUrl"
style="max-width: 100%; max-height: 100%" class="avatar" alt="" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -186,12 +194,15 @@ ...@@ -186,12 +194,15 @@
<script> <script>
// import { listAwards, getAwards, delAwards, addAwards, updateAwards } from "@/api/system/awards"; // import { listAwards, getAwards, delAwards, addAwards, updateAwards } from "@/api/system/awards";
import { uploadImage as commonUpload } from "@/api/common";
export default { export default {
name: "Awards", name: "Awards",
dicts: ["teaching_subjects", 'award_categories', 'awards_level', 'award_rank'], dicts: ["teaching_subjects", 'award_categoriesjk', 'awards_level', 'award_rank'],
data() { data() {
return { return {
// 图片上传遮罩层
uploadLoading: false,
baseUrl: [process.env.VUE_APP_BASE_API],
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 选中数组 // 选中数组
...@@ -293,6 +304,7 @@ export default { ...@@ -293,6 +304,7 @@ export default {
// this.getList(); // this.getList();
}, },
methods: { methods: {
/** 查询讲课获奖列表 */ /** 查询讲课获奖列表 */
getList() { getList() {
this.loading = true; this.loading = true;
...@@ -302,6 +314,45 @@ export default { ...@@ -302,6 +314,45 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
// 上传成功回调
handleAvatarSuccess(res, file) {
this.photoUrl = res.data.url;
this.commonUpload(file);
},
// 上传前格式和图片大小限制
beforeAvatarUpload(file) {
const type =
file.type === "image/jpeg" ||
"image/jpg" ||
"image/webp" ||
"image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!type) {
this.$message.error("图片格式不正确!(只能包含jpg,png,webp,JPEG)");
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
}
return type && isLt2M;
},
// 上传图片
uploadImage(file) {
const fileData = file.file;
const formData = new FormData();
formData.append("file", fileData);
this.uploadLoading = true;
commonUpload(formData)
.then((response) => {
this.uploadLoading = false;
this.$modal.msgSuccess("上传成功");
this.photoUrl = this.pev + response.url;
this.form.photoUrl = response.url;
})
.catch((error) => {
this.uploadLoading = false;
});
},
// 取消按钮 // 取消按钮
cancel() { cancel() {
this.open = false; this.open = false;
......
...@@ -8,16 +8,16 @@ ...@@ -8,16 +8,16 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="获奖类别" prop="awardType"> <el-form-item label="获奖级别" prop="awardRank">
<el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.awardRank" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.award_categories" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.awards_level" :key="dict.value" :label="dict.label"
:value="dict.value"> :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="获奖级别" prop="awardRank"> <el-form-item label="获奖类别" prop="awardType">
<el-select v-model="form.awardRank" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.awards_level" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.award_categoriesjs" :key="dict.value" :label="dict.label"
:value="dict.value"> :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="成长类型" align="center" prop="id" /> <el-table-column label="成长类型" align="center" prop="id" />
<el-table-column label="学科" align="center" prop="sub" /> <el-table-column label="学科" align="center" prop="sub" />
<el-table-column label="获奖类" align="center" prop="awardType" /> <el-table-column label="获奖类" align="center" prop="awardType" />
<el-table-column label="获奖等级" align="center" prop="awardLevel" /> <el-table-column label="获奖等级" align="center" prop="awardLevel" />
<el-table-column label="获奖级别" align="center" prop="awardRank" /> <el-table-column label="获奖级别" align="center" prop="awardRank" />
<el-table-column label="教学获奖-成果名称" align="center" prop="resultName" /> <el-table-column label="教学获奖-成果名称" align="center" prop="resultName" />
...@@ -109,8 +109,8 @@ ...@@ -109,8 +109,8 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="获奖类别" prop="awardType"> <el-form-item label="获奖类别" prop="awardType">
<el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.awardType" placeholder="请选择" style="width: 100%;">
<el-option v-for="dict in dict.type.award_categories" :key="dict.value" :label="dict.label" <el-option v-for="dict in dict.type.award_categoriesjs" :key="dict.value"
:value="dict.value"> :label="dict.label" :value="dict.value">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -168,9 +168,17 @@ ...@@ -168,9 +168,17 @@
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> </el-row>
<el-form-item label="证书图片" prop="pictureName"> <el-row>
<el-input v-model="form.pictureName" placeholder="请输入证书图片名称" /> <el-col :span="12" class="custom-margin">
<el-form-item label="证书图片" prop="photo">
<el-upload v-loading="uploadLoading" class="avatar-uploader" action="#" accept="image/*"
:show-file-list="false" :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload" :http-request="uploadImage">
<img v-if="form.photoUrl" :src="baseUrl + form.photoUrl"
style="max-width: 100%; max-height: 100%" class="avatar" alt="" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -185,12 +193,15 @@ ...@@ -185,12 +193,15 @@
<script> <script>
// import { listAwards, getAwards, delAwards, addAwards, updateAwards } from "@/api/system/awards"; // import { listAwards, getAwards, delAwards, addAwards, updateAwards } from "@/api/system/awards";
import { uploadImage as commonUpload } from "@/api/common";
export default { export default {
name: "Awards", name: "Awards",
dicts: ["teaching_subjects", 'award_categories', 'awards_level', 'award_rank'], dicts: ["teaching_subjects", 'award_categoriesjs', 'awards_level', 'award_rank'],
data() { data() {
return { return {
// 图片上传遮罩层
uploadLoading: false,
baseUrl: [process.env.VUE_APP_BASE_API],
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 选中数组 // 选中数组
...@@ -300,6 +311,45 @@ export default { ...@@ -300,6 +311,45 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
// 上传成功回调
handleAvatarSuccess(res, file) {
this.photoUrl = res.data.url;
this.commonUpload(file);
},
// 上传前格式和图片大小限制
beforeAvatarUpload(file) {
const type =
file.type === "image/jpeg" ||
"image/jpg" ||
"image/webp" ||
"image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!type) {
this.$message.error("图片格式不正确!(只能包含jpg,png,webp,JPEG)");
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
}
return type && isLt2M;
},
// 上传图片
uploadImage(file) {
const fileData = file.file;
const formData = new FormData();
formData.append("file", fileData);
this.uploadLoading = true;
commonUpload(formData)
.then((response) => {
this.uploadLoading = false;
this.$modal.msgSuccess("上传成功");
this.photoUrl = this.pev + response.url;
this.form.photoUrl = response.url;
})
.catch((error) => {
this.uploadLoading = false;
});
},
// 取消按钮 // 取消按钮
cancel() { cancel() {
this.open = false; this.open = false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment