|
@@ -67,6 +67,9 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
+ <div class="getScore" v-if="$store.state.userInfo.type != 1">
|
|
|
|
+ <el-button @click="openScore(anliBox[0])">评分</el-button>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="navBox" :class="{ isNavBox: isNavTop >= 300 }">
|
|
<div class="navBox" :class="{ isNavBox: isNavTop >= 300 }">
|
|
@@ -2196,6 +2199,98 @@
|
|
>
|
|
>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
+ <el-dialog
|
|
|
|
+ title="评分"
|
|
|
|
+ :visible.sync="dialogVisibleScore"
|
|
|
|
+ :append-to-body="true"
|
|
|
|
+ width="25%"
|
|
|
|
+ height="80%"
|
|
|
|
+ :before-close="handleClose"
|
|
|
|
+ class="customWidth1"
|
|
|
|
+ >
|
|
|
|
+ <div class="scoreBox" v-for="(s, sIndex) in scoreDetail" :key="sIndex">
|
|
|
|
+ <div class="scoreCss">
|
|
|
|
+ <div class="scoreTitle">
|
|
|
|
+ <div><img src="../../../../assets/avatar.png" alt="" /></div>
|
|
|
|
+ <div>{{ s.uname }}</div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="anliTitle">
|
|
|
|
+ <div>案例名称</div>
|
|
|
|
+ <div>{{ s.title }}</div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="anliBrief">
|
|
|
|
+ <div>案例简介</div>
|
|
|
|
+ <div style="width: 650px; max-height: 150px; overflow: auto">
|
|
|
|
+ {{ s.detail }}
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="anliScore">
|
|
|
|
+ <div>请选择评分</div>
|
|
|
|
+ <div>
|
|
|
|
+ <div class="scoreDiv">
|
|
|
|
+ <div>评审维度1</div>
|
|
|
|
+ <div>
|
|
|
|
+ <el-input
|
|
|
|
+ placeholder="输入分数"
|
|
|
|
+ v-model="s.scoreAll.first"
|
|
|
|
+ @change="isNumber($event, 1)"
|
|
|
|
+ ></el-input>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="scoreDiv">
|
|
|
|
+ <div>评审维度2</div>
|
|
|
|
+ <div>
|
|
|
|
+ <el-input
|
|
|
|
+ placeholder="输入分数"
|
|
|
|
+ v-model="s.scoreAll.second"
|
|
|
|
+ @change="isNumber($event, 2)"
|
|
|
|
+ ></el-input>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="scoreDiv">
|
|
|
|
+ <div>评审维度3</div>
|
|
|
|
+ <div>
|
|
|
|
+ <el-input
|
|
|
|
+ placeholder="输入分数"
|
|
|
|
+ v-model="s.scoreAll.third"
|
|
|
|
+ @change="isNumber($event, 3)"
|
|
|
|
+ ></el-input>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="scoreDiv">
|
|
|
|
+ <div>评审维度4</div>
|
|
|
|
+ <div>
|
|
|
|
+ <el-input
|
|
|
|
+ placeholder="输入分数"
|
|
|
|
+ v-model="s.scoreAll.fourth"
|
|
|
|
+ @change="isNumber($event, 4)"
|
|
|
|
+ ></el-input>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="scoreDiv">
|
|
|
|
+ <div>评审维度5</div>
|
|
|
|
+ <div>
|
|
|
|
+ <el-input
|
|
|
|
+ placeholder="输入分数"
|
|
|
|
+ v-model="s.scoreAll.fivth"
|
|
|
|
+ @change="isNumber($event, 5)"
|
|
|
|
+ ></el-input>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="anliContent">
|
|
|
|
+ <textarea
|
|
|
|
+ :rows="5"
|
|
|
|
+ class="tAreaCss"
|
|
|
|
+ placeholder="请输入评语。"
|
|
|
|
+ v-model="s.scoreAll.content"
|
|
|
|
+ ></textarea>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="addScore" @click="addScore">进行评分</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </el-dialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -2215,6 +2310,7 @@ export default {
|
|
showPDF1: false,
|
|
showPDF1: false,
|
|
videoVisible: false,
|
|
videoVisible: false,
|
|
full: false,
|
|
full: false,
|
|
|
|
+ dialogVisibleScore: false,
|
|
briefNav: "",
|
|
briefNav: "",
|
|
pptImgUrl: "",
|
|
pptImgUrl: "",
|
|
pptImgUrl1: {
|
|
pptImgUrl1: {
|
|
@@ -2287,6 +2383,23 @@ export default {
|
|
isNavTop: 0,
|
|
isNavTop: 0,
|
|
isShow: 0,
|
|
isShow: 0,
|
|
nameIndex: 0,
|
|
nameIndex: 0,
|
|
|
|
+ scoreDetail: [
|
|
|
|
+ {
|
|
|
|
+ id: "",
|
|
|
|
+ uname: "",
|
|
|
|
+ title: "",
|
|
|
|
+ detail: "",
|
|
|
|
+ scoreAll: {
|
|
|
|
+ first: "",
|
|
|
|
+ second: "",
|
|
|
|
+ third: "",
|
|
|
|
+ fourth: "",
|
|
|
|
+ fivth: "",
|
|
|
|
+ content: "",
|
|
|
|
+ },
|
|
|
|
+ sumScore: 0,
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
};
|
|
};
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
@@ -2313,6 +2426,153 @@ export default {
|
|
// this.goTo("/anliList");
|
|
// this.goTo("/anliList");
|
|
// }
|
|
// }
|
|
// },
|
|
// },
|
|
|
|
+ isNumber(e, t) {
|
|
|
|
+ let value = /^\d+$/.test(e);
|
|
|
|
+ // let value = e.replace(/[^d]/g, ""); // 只能输入数字
|
|
|
|
+ if (value == true) {
|
|
|
|
+ if (e < 0) {
|
|
|
|
+ this.$message.error("请输入大于0的数值");
|
|
|
|
+ if (t == 1) {
|
|
|
|
+ this.scoreDetail[0].scoreAll.first = "";
|
|
|
|
+ } else if (t == 2) {
|
|
|
|
+ this.scoreDetail[0].scoreAll.second = "";
|
|
|
|
+ } else if (t == 3) {
|
|
|
|
+ this.scoreDetail[0].scoreAll.third = "";
|
|
|
|
+ } else if (t == 4) {
|
|
|
|
+ this.scoreDetail[0].scoreAll.fourth = "";
|
|
|
|
+ } else {
|
|
|
|
+ this.scoreDetail[0].scoreAll.fivth = "";
|
|
|
|
+ }
|
|
|
|
+ return;
|
|
|
|
+ } else if (e > 100) {
|
|
|
|
+ this.$message.error("数值不能大于100");
|
|
|
|
+ if (t == 1) {
|
|
|
|
+ this.scoreDetail[0].scoreAll.first = "";
|
|
|
|
+ } else if (t == 2) {
|
|
|
|
+ this.scoreDetail[0].scoreAll.second = "";
|
|
|
|
+ } else if (t == 3) {
|
|
|
|
+ this.scoreDetail[0].scoreAll.third = "";
|
|
|
|
+ } else if (t == 4) {
|
|
|
|
+ this.scoreDetail[0].scoreAll.fourth = "";
|
|
|
|
+ } else {
|
|
|
|
+ this.scoreDetail[0].scoreAll.fivth = "";
|
|
|
|
+ }
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (t == 1) {
|
|
|
|
+ this.scoreDetail[0].scoreAll.first = "";
|
|
|
|
+ } else if (t == 2) {
|
|
|
|
+ this.scoreDetail[0].scoreAll.second = "";
|
|
|
|
+ } else if (t == 3) {
|
|
|
|
+ this.scoreDetail[0].scoreAll.third = "";
|
|
|
|
+ } else if (t == 4) {
|
|
|
|
+ this.scoreDetail[0].scoreAll.fourth = "";
|
|
|
|
+ } else {
|
|
|
|
+ this.scoreDetail[0].scoreAll.fivth = "";
|
|
|
|
+ }
|
|
|
|
+ this.$message.error("请输入数字");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ value = value.replace(/^0+(d)/, "$1"); // 第一位0开头,0后面为数字,则过滤掉,取后面的数字
|
|
|
|
+ value = value.replace(/(d{15})d*/, "$1"); // 最多保留15位整数
|
|
|
|
+ // this.height = value;
|
|
|
|
+ },
|
|
|
|
+ openScore(a) {
|
|
|
|
+ this.scoreDetail[0].id = a.id;
|
|
|
|
+ this.scoreDetail[0].title = a.info.title;
|
|
|
|
+ this.scoreDetail[0].detail = a.info.courseText;
|
|
|
|
+ this.scoreDetail[0].uname = a.name;
|
|
|
|
+ this.getScore(a.id);
|
|
|
|
+ },
|
|
|
|
+ getScore(id, t) {
|
|
|
|
+ let params = {
|
|
|
|
+ rid: id,
|
|
|
|
+ };
|
|
|
|
+ this.ajax
|
|
|
|
+ .get(this.$store.state.api + "selectScore", params)
|
|
|
|
+ .then((res) => {
|
|
|
|
+ if (res.data[0].length > 0) {
|
|
|
|
+ this.scoreDetail[0].scoreAll = JSON.parse(res.data[0][0].score);
|
|
|
|
+ var a = parseInt(this.scoreDetail[0].scoreAll.first);
|
|
|
|
+ var b = parseInt(this.scoreDetail[0].scoreAll.second);
|
|
|
|
+ var c = parseInt(this.scoreDetail[0].scoreAll.third);
|
|
|
|
+ var d = parseInt(this.scoreDetail[0].scoreAll.fourth);
|
|
|
|
+ var e = parseInt(this.scoreDetail[0].scoreAll.fivth);
|
|
|
|
+ this.scoreDetail[0].sumScore = Math.round((a + b + c + d + e) / 5);
|
|
|
|
+ } else {
|
|
|
|
+ this.scoreDetail[0].scoreAll = {
|
|
|
|
+ first: "",
|
|
|
|
+ second: "",
|
|
|
|
+ third: "",
|
|
|
|
+ fourth: "",
|
|
|
|
+ fivth: "",
|
|
|
|
+ content: "",
|
|
|
|
+ };
|
|
|
|
+ this.scoreDetail[0].sumScore = 0;
|
|
|
|
+ }
|
|
|
|
+ this.dialogVisibleScore = true;
|
|
|
|
+ })
|
|
|
|
+ .catch((err) => {
|
|
|
|
+ console.error(err);
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ addScore() {
|
|
|
|
+ if (this.scoreDetail[0].scoreAll.first == "") {
|
|
|
|
+ this.$message.error("请将信息填写完整");
|
|
|
|
+ return;
|
|
|
|
+ } else if (this.scoreDetail[0].scoreAll.second == "") {
|
|
|
|
+ this.$message.error("请将信息填写完整");
|
|
|
|
+ return;
|
|
|
|
+ } else if (this.scoreDetail[0].scoreAll.third == "") {
|
|
|
|
+ this.$message.error("请将信息填写完整");
|
|
|
|
+ return;
|
|
|
|
+ } else if (this.scoreDetail[0].scoreAll.fourth == "") {
|
|
|
|
+ this.$message.error("请将信息填写完整");
|
|
|
|
+ return;
|
|
|
|
+ } else if (this.scoreDetail[0].scoreAll.fivth == "") {
|
|
|
|
+ this.$message.error("请将信息填写完整");
|
|
|
|
+ return;
|
|
|
|
+ } else if (this.scoreDetail[0].scoreAll.content == "") {
|
|
|
|
+ this.$message.error("请将信息填写完整");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ let params = {
|
|
|
|
+ rid: this.scoreDetail[0].id,
|
|
|
|
+ suser: this.$store.state.userInfo.userid,
|
|
|
|
+ s: JSON.stringify(this.scoreDetail[0].scoreAll),
|
|
|
|
+ };
|
|
|
|
+ this.ajax
|
|
|
|
+ .get(this.$store.state.api + "addScore", params)
|
|
|
|
+ .then((res) => {
|
|
|
|
+ this.$message({
|
|
|
|
+ message: "评分成功",
|
|
|
|
+ type: "success",
|
|
|
|
+ });
|
|
|
|
+ this.scoreDetail = [
|
|
|
|
+ {
|
|
|
|
+ id: "",
|
|
|
|
+ uname: "",
|
|
|
|
+ title: "",
|
|
|
|
+ detail: "",
|
|
|
|
+ scoreAll: {
|
|
|
|
+ first: "",
|
|
|
|
+ second: "",
|
|
|
|
+ third: "",
|
|
|
|
+ fourth: "",
|
|
|
|
+ fivth: "",
|
|
|
|
+ content: "",
|
|
|
|
+ },
|
|
|
|
+ sumScore: 0,
|
|
|
|
+ },
|
|
|
|
+ ];
|
|
|
|
+ this.dialogVisibleScore = false;
|
|
|
|
+ })
|
|
|
|
+ .catch((err) => {
|
|
|
|
+ console.error(err);
|
|
|
|
+ });
|
|
|
|
+ },
|
|
selectAnLi() {
|
|
selectAnLi() {
|
|
let params = {
|
|
let params = {
|
|
id: this.aid,
|
|
id: this.aid,
|
|
@@ -3816,28 +4076,33 @@ body {
|
|
margin: 0 !important;
|
|
margin: 0 !important;
|
|
}
|
|
}
|
|
.dialog_diy >>> .el-dialog__header,
|
|
.dialog_diy >>> .el-dialog__header,
|
|
-.dialog_diy1 >>> .el-dialog__header {
|
|
|
|
|
|
+.dialog_diy1 >>> .el-dialog__header,
|
|
|
|
+.customWidth1 >>> .el-dialog__header {
|
|
background: #454545 !important;
|
|
background: #454545 !important;
|
|
padding: 15px 20px;
|
|
padding: 15px 20px;
|
|
}
|
|
}
|
|
|
|
|
|
.dialog_diy >>> .el-dialog__title,
|
|
.dialog_diy >>> .el-dialog__title,
|
|
-.dialog_diy1 >>> .el-dialog__title {
|
|
|
|
|
|
+.dialog_diy1 >>> .el-dialog__title,
|
|
|
|
+.customWidth1 >>> .el-dialog__title {
|
|
color: #fff;
|
|
color: #fff;
|
|
}
|
|
}
|
|
|
|
|
|
.dialog_diy >>> .el-dialog__headerbtn,
|
|
.dialog_diy >>> .el-dialog__headerbtn,
|
|
-.dialog_diy1 >>> .el-dialog__headerbtn {
|
|
|
|
|
|
+.dialog_diy1 >>> .el-dialog__headerbtn,
|
|
|
|
+.customWidth1 >>> .el-dialog__headerbtn {
|
|
top: 19px;
|
|
top: 19px;
|
|
}
|
|
}
|
|
|
|
|
|
.dialog_diy >>> .el-dialog__headerbtn .el-dialog__close,
|
|
.dialog_diy >>> .el-dialog__headerbtn .el-dialog__close,
|
|
-.dialog_diy1 >>> .el-dialog__headerbtn .el-dialog__close {
|
|
|
|
|
|
+.dialog_diy1 >>> .el-dialog__headerbtn .el-dialog__close,
|
|
|
|
+.customWidth1 >>> .el-dialog__headerbtn .el-dialog__close {
|
|
color: #fff;
|
|
color: #fff;
|
|
}
|
|
}
|
|
|
|
|
|
.dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover,
|
|
.dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover,
|
|
-.dialog_diy1 >>> .el-dialog__headerbtn .el-dialog__close:hover {
|
|
|
|
|
|
+.dialog_diy1 >>> .el-dialog__headerbtn .el-dialog__close:hover,
|
|
|
|
+.customWidth1 >>> .el-dialog__headerbtn .el-dialog__close:hover {
|
|
color: #fff;
|
|
color: #fff;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -4202,4 +4467,98 @@ ol {
|
|
.jdChildCss {
|
|
.jdChildCss {
|
|
margin: 5px 0px;
|
|
margin: 5px 0px;
|
|
}
|
|
}
|
|
|
|
+.getScore {
|
|
|
|
+ position: absolute;
|
|
|
|
+ right: 60px;
|
|
|
|
+}
|
|
|
|
+.getScore >>> .el-button {
|
|
|
|
+ background: #2268bd;
|
|
|
|
+ color: #fff;
|
|
|
|
+}
|
|
|
|
+.customWidth1 >>> .el-dialog {
|
|
|
|
+ min-width: 800px !important;
|
|
|
|
+}
|
|
|
|
+.scoreBox {
|
|
|
|
+ background: #fff;
|
|
|
|
+}
|
|
|
|
+.scoreCss {
|
|
|
|
+ padding: 10px;
|
|
|
|
+}
|
|
|
|
+.scoreTitle {
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: row;
|
|
|
|
+ flex-wrap: nowrap;
|
|
|
|
+ align-items: center;
|
|
|
|
+}
|
|
|
|
+.scoreTitle > div:nth-child(1) {
|
|
|
|
+ width: 50px;
|
|
|
|
+}
|
|
|
|
+.scoreTitle > div:nth-child(1) > img {
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 100%;
|
|
|
|
+}
|
|
|
|
+.scoreTitle > div:nth-child(2) {
|
|
|
|
+ margin-left: 15px;
|
|
|
|
+}
|
|
|
|
+.anliTitle,
|
|
|
|
+.anliBrief,
|
|
|
|
+.anliScore {
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: row;
|
|
|
|
+ flex-wrap: nowrap;
|
|
|
|
+ align-items: flex-start;
|
|
|
|
+ padding: 10px 0 10px 0;
|
|
|
|
+ font-size: 18px;
|
|
|
|
+}
|
|
|
|
+.anliTitle > div:nth-child(2),
|
|
|
|
+.anliBrief > div:nth-child(2) {
|
|
|
|
+ font-size: 17px;
|
|
|
|
+ margin-left: 10px;
|
|
|
|
+ color: #b0b0b0;
|
|
|
|
+}
|
|
|
|
+.anliScore > div:nth-child(2) {
|
|
|
|
+ margin: -13px 0 0 20px;
|
|
|
|
+}
|
|
|
|
+.scoreDiv {
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: row;
|
|
|
|
+ flex-wrap: nowrap;
|
|
|
|
+ align-items: center;
|
|
|
|
+ padding: 10px 0;
|
|
|
|
+}
|
|
|
|
+.scoreDiv > div:nth-child(2) {
|
|
|
|
+ margin-left: 10px;
|
|
|
|
+}
|
|
|
|
+.scoreDiv > div:nth-child(2) >>> .el-input__inner {
|
|
|
|
+ border-radius: 15px;
|
|
|
|
+ background: #fafafa;
|
|
|
|
+ height: 30px;
|
|
|
|
+}
|
|
|
|
+.anliContent {
|
|
|
|
+ width: 80%;
|
|
|
|
+ margin: 0 auto;
|
|
|
|
+ border-top: 2px solid #ededed;
|
|
|
|
+ padding: 10px 0 0 0;
|
|
|
|
+}
|
|
|
|
+.tAreaCss {
|
|
|
|
+ resize: none;
|
|
|
|
+ width: 100%;
|
|
|
|
+ text-indent: 10px;
|
|
|
|
+ border: 1px solid #e6e6e8;
|
|
|
|
+ background: #fafafa;
|
|
|
|
+}
|
|
|
|
+.tAreaCss:focus-visible {
|
|
|
|
+ outline: none !important;
|
|
|
|
+}
|
|
|
|
+.addScore {
|
|
|
|
+ width: 75%;
|
|
|
|
+ margin: 10px auto;
|
|
|
|
+ background: #409efe;
|
|
|
|
+ color: #fff;
|
|
|
|
+ height: 35px;
|
|
|
|
+ text-align: center;
|
|
|
|
+ line-height: 35px;
|
|
|
|
+ border-radius: 5px;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+}
|
|
</style>
|
|
</style>
|