123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462 |
- <!--
- * @Description: 我的技能培训 => 技能培训详情 => 成绩和证书
- * @Author: 空白格
- * @Date: 2022-08-26 16:50:09
- * @LastEditors: gcz
- * @LastEditTime: 2022-08-29 16:20:04
- * @FilePath: \veterans_client_web\src\views\PersonalCenter\SkillTraining\SkillsTrainingDetails\AchievementCertificate\AchievementCertificateIndex.vue
- * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved.
- -->
- <template>
- <div class='certificate'>
- <BannerBreadcrumb title="成绩与证书" :breadcrumb="true" :isRouter="true"/>
- <section class="wrap-r u-flex u-col-top certificate-wrap">
- <section class="certificate-list">
- <div class="title">成绩与证书</div>
- <div class="list u-flex u-flex-wrap u-row-between" v-if="total>=1">
- <div class="list-item" :class="{even:(index+1)%2 == 0}" v-for="(item,index) in dataList" :key="item.id">
- <div class="up">
- <div class="examName">{{item.examName}}</div>
- <div class="score">{{item.score}}</div>
- <div class="fullScore">(满分{{item.fullScore}})</div>
- <div class="certificateName" v-if="item.certificateName">
- 获得<br />
- {{item.certificateName}}
- ({{getCertificateGradeName(item.grade)}})</div>
- <el-image
- v-if="item.imgUrl.length>0"
- class="images" :src="item.imgUrl.split(',')[0]"
- :preview-src-list="item.imgUrl.split(',')">
- </el-image>
- </div>
- <div class="down u-flex">
- <div class="passDate u-flex-1">{{item.passDate}}</div>
- <div class="btns u-flex-1"><span class="del" @click="delCertificate(item.id)">删除</span></div>
- </div>
- </div>
- </div>
- <el-empty v-else description="暂无数据"></el-empty>
- <!-- <div class="pagination" v-if="total>queryParams.pageSize">
- <el-pagination
- background
- layout="prev, pager, next"
- :page-size="queryParams.pageSize"
- :total="total"
- @current-change="currentChange"
- />
- </div> -->
- </section>
- <section class="certificate-form">
- <div class="title">+ 录入</div>
- <el-form ref="form" :model="form" :rules="rules" label-width="120px">
- <el-form-item label="考试名称:" prop="examName">
- <el-input v-model="form.examName "></el-input>
- </el-form-item>
- <el-form-item label="证书名称:" prop="certificateName">
- <el-input v-model="form.certificateName "></el-input>
- </el-form-item>
- <el-form-item label="成绩" prop="score">
- <el-input v-model="form.score "></el-input>
- </el-form-item>
- <el-form-item label="满分" prop="fullScore">
- <el-input v-model="form.fullScore "></el-input>
- </el-form-item>
- <el-form-item label="证书等级" prop="grade">
- <el-select
- v-model="form.grade"
- placeholder="请选择证书等级"
- >
- <el-option
- v-for="item in gradeList"
- :key="item.index"
- :label="item.label"
- :value="item.value"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="通过日期:" prop="passDate">
- <div style="display: inline-block">
- <el-date-picker
- v-model="form.passDate"
- type="date"
- value-format="yyyy-MM-dd"
- placeholder="请选择通过日期"
- >
- </el-date-picker>
- </div>
- </el-form-item>
- <el-form-item label="上传证书:" prop="imgUrl">
- <div class="inner-wrap">
- <el-upload
- class="uploader logo-uploader"
- :action="upAction"
- accept="image/*"
- multiple
- :show-file-list="true"
- :on-success="fileUploadSuccess"
- :on-remove="fileRemove"
- :limit="2"
- list-type="picture"
- :file-list="fileList"
- >
- <img
- v-if="logoTempImg"
- :src="logoTempImg"
- class="uploader-img"
- />
- <i v-else class="el-icon-plus uploader-icon"></i>
- <div class="text">上传证书</div>
- </el-upload>
- </div>
- </el-form-item>
- <div class="btn" @click="submitForm">提交</div>
- </el-form>
- </section>
- </section>
- </div>
- </template>
- <script>
- import BannerBreadcrumb from "@/components/BannerBreadcrumb";
- import { getCertificateList,deleteCertificate,addCertificate,getCertificate } from "@/api/Certificate";
- import { getDictData } from "@/api/Dict";
- export default {
- name: '',
- components: {BannerBreadcrumb},
- data () {
- return {
- upAction:process.env.VUE_APP_FILE_UPLOAD_URL,
- skillTrainId:'',
- fileList:[],
- logoTempImg:'',
- gradeList:[],
- queryParams: {
- pageNum: 1,
- pageSize: 10,
- },
- imgUrlArr:[],
- form:{
- skillTrainId:'',
- examName:'',
- score:'',
- fullScore:'',
- passDate:'',
- certificateName:'',
- imgUrl:'',
- },
- rules:{
- examName: [
- { required: true, message: "请输入考试名称", trigger: "blur" },
- ],
- certificateName: [
- { required: true, message: "请输入证书名称", trigger: "blur" },
- ],
- score: [
- { required: true, message: "请输入成绩", trigger: "blur" },
- ],
- fullScore: [
- { required: true, message: "请输入满分", trigger: "blur" },
- ],
- passDate: [
- { required: true, message: "请选择通过日期", trigger: "blur" },
- ],
- grade: [
- { required: true, message: "请选择证书等级", trigger: "blur" },
- ],
- imgUrl: [
- { required: true, message: "请上传证书图片", trigger: "blur" },
- ],
- },
- total:0,
- loading:false,
- dataList:[],
- };
- },
- created(){
- this.form.skillTrainId = this.$route.query.id;
- this.getDataList();
- this.getCertificateGrade();
- },
- methods: {
- /**
- * 获取证书等级
- */
- getCertificateGrade() {
- getDictData({ key:'certificate_grade' }).then(res=>{
- if(res.code == 200){
- this.gradeList = res.data.map(item => {
- return {
- ...item,
- value: item.text
- }
- });
- }
- });
- },
- /**
- * 获取证书等级名称
- * @param {Object} value
- */
- getCertificateGradeName(value) {
- let name;
- this.gradeList.forEach(item => {
- if (item.value == value) {
- name = item.label
- }
- })
- return name;
- },
- // fileUploadSuccess(res, file) {
- // // console.log("file", file);
- // this.form.imgUrl = '';
- // this.imgUrlArr = [];
- // this.imgUrlArr.push(res.data.url,);
- // this.form.imgUrl = this.imgUrlArr.toString();
- // },
- fileUploadSuccess(response, file, fileList) {
- let that = this;
- this.form.imgUrl = '';
- this.imgUrlArr = [];
- for (let index = 0; index < fileList.length; index++) {
- const element = fileList[index].response.data;
- that.imgUrlArr.push(element.url);
- }
- this.form.imgUrl = this.imgUrlArr.toString();
- },
- fileRemove(file, fileList) {
- let that = this;
- this.form.imgUrl = '';
- this.imgUrlArr = [];
- for (let index = 0; index < fileList.length; index++) {
- const element = fileList[index].response.data;
- that.imgUrlArr.push(element.url);
- }
- this.form.imgUrl = this.imgUrlArr.toString();
- },
- getDataList() {
- this.loading = true;
- getCertificateList(Object.assign(this.queryParams,{skillTrainId:this.form.skillTrainId})).then((res) => {
- this.dataList = res.data;
- this.total = res.data.length;
- this.loading = false;
- });
- },
- /**
- * 分页切换
- * @date 2022-08-12
- * @param {any} page
- * @returns {any}
- */
- // currentChange(page) {
- // this.queryParams.pageNum = page;
- // this.getDataList();
- // },
- resetFields(){
- this.$refs['form'].resetFields();
- this.fileList=[];
- this.form.imgUrl = '';
- this.imgUrlArr = [];
- },
- submitForm() {
- this.$refs['form'].validate((valid) => {
- if (valid) {
- addCertificate(this.form).then(res=>{
- this.$message.success(res.msg);
- this.resetFields();
- this.getDataList();
- }).catch(err=>{
- console.log('addCertificate err',err);
- this.$message.error(err.msg)
- })
- } else {
- console.log('error submit!!');
- return false;
- }
- });
- },
- delCertificate(id){
- this.$confirm("您确认删除该证书吗?", "提示", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning",
- }).then(()=>{
- deleteCertificate({skillTrainId:id}).then(res=>{
- console.log('res',res);
- this.$message.success(res.msg);
- this.getDataList();
- }).catch(err=>{
- console.log('deleteCertificate err',err);
- this.$message.error(err.msg)
- })
- })
-
- }
- },
- }
- </script>
- <style lang='scss' scoped>
- .certificate{
- overflow: hidden;
- }
- .wrap-r{
- box-sizing: border-box;
- background: #fff;
- padding: 20px;
- width:70%;
- margin: 23px auto;
- }
- .title{
- font-size: 20px;
- color: #1A1A1A;
- font-weight: 600;
- margin-bottom: 24px;
- }
- .certificate-wrap{
- padding: 0;
- width: 1200px;
- background-color: #f4f4f4;
- .certificate-list{
- background-color: #fff;
- flex: 1;
- padding: 20px;
- margin-right: 20px;
- box-sizing: border-box;
- .list{
- &-item{
- width: 240px;
- margin-bottom: 24px;
- box-sizing: border-box;
- text-align: center;
- color: #fff;
- background: #FE5862;
- &.even{
- background: #FE9C37;
- }
- .up{
- position: relative;
- padding: 30px 20px 0;
- box-sizing: border-box;
- height: 314px;
- background: url(@/assets/images/certificate-bg.png) no-repeat;
- background-size: 200px 246px;
- background-position: 52px 100px;
-
- .images{
- position: absolute;
- left: 0;
- right: 0;
- bottom: 0;
- top: 0;
- opacity: 0;
- }
- .examName{
- font-size: 20px;
- height: 80px;
- overflow: hidden;
- }
- .score{
- font-size: 60px;
- line-height: 1;
- margin-bottom: 5px;
- }
- .fullScore{
- font-size: 14px;
- color: rgba(255,255,255,.4);
- margin-bottom: 45px;
- }
- .certificateName{
- font-size: 14px;
- }
- }
- .down{
- height: 44px;
- background: rgba(255,255,255,.4);
- .btns{
- .del{
- display: inline-block;
- padding: 0 15px;
- border-radius: 24px;
- height: 24px;
- line-height: 24px;
- text-align: center;
- background: rgba(255,255,255,0.70);
- color: #FE5862;
- font-size: 14px;
- cursor: pointer;
- }
- }
- }
- }
- }
- }
- .certificate-form{
- background-color: #fff;
- width: 380px;
- padding: 20px;
- box-sizing: border-box;
- }
- }
- .el-form{
- // .el-form-item{
- // margin-bottom: 10px;
- // }
- .btn{
- background: #709078;
- color: #fff;
- text-align: center;
- padding: 10px 0;
- margin-bottom: 20px;
- cursor: pointer;
- letter-spacing: 1.2px;
- }
- }
- .logo-uploader :deep(.el-upload){
- border: 1px dashed #d9d9d9;
- border-radius: 6px;
- cursor: pointer;
- position: relative;
- overflow: hidden;
- // float: left;
- & + .uploader {
- margin-left: 20px;
- }
- .text {
- position: absolute;
- left: 0;
- bottom: 0;
- right: 0;
- }
- .el-upload:hover {
- border-color: #409eff;
- }
- .uploader-icon {
- font-size: 28px;
- color: #8c939d;
- width: 100px;
- height: 100px;
- line-height: 100px;
- text-align: center;
- }
- .uploader-img {
- width: 100px;
- height: 100px;
- display: block;
- }
- }
- // .pagination {
- // text-align: center;
- // margin-top: 20px;
- // :deep(.el-pager .active) {
- // background-color: #ff3939;
- // }
- // :deep(.el-pagination.is-background
- // .el-pager
- // li:not(.disabled).active) {
- // background-color: #ff3939;
- // }
- // }
- </style>
|