diff --git a/src/utils/api.js b/src/utils/api.js index d6e03c5..7ebfd68 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -157,6 +157,11 @@ export const taskApi = { method: 'get', params: data, }), + getTaskListSelfNormal: (data) => request({ + url: '/task/listSelf', + method: 'get', + params: data, + }), getTaskList: (data) => request({ url: '/task/get', diff --git a/src/views/projectBank/userScore.vue b/src/views/projectBank/userScore.vue index df1c31a..71d9a67 100644 --- a/src/views/projectBank/userScore.vue +++ b/src/views/projectBank/userScore.vue @@ -1,7 +1,7 @@ <template> <div class="project-list flex-row jcsb"> <div class="left"> - <div style="margin-bottom: 20px">人员绩效表</div> + <div style="margin-bottom: 20px; font-weight: bold">组织架构</div> <el-tree :data="deptOptions" :expand-on-click-node="false" @@ -10,6 +10,7 @@ default-expand-all highlight-current @node-click="handleNodeClick" + style="margin-left: 50px" /> </div> <div class="right f1"> @@ -91,13 +92,18 @@ export default { prop: "examineStatus", label: "状态", type: "status", - callback: (value) => { - if (value == 0) var color = "#333"; - else var color = "#1686d68"; + callback: (value, row) => { + if (row.examineStatusSelf != 0 && row.examineStatus != 0) + var color = "#333"; + else var color = "#FF7D00"; - return `<span style="color: ${color}">${ - value == 0 ? "待评分" : "已完成" - }</span>`; + if (row.examineStatusSelf == 0 && row.examineStatus == 0) { + return `<span style="color: ${color}">待个人自评/组长评分</span>`; + } else if (row.examineStatusSelf == 0) { + return `<span style="color: ${color}">待个人自评</span>`; + } else { + return `<span style="color: ${color}">待组长评分评</span>`; + } }, }, { @@ -194,7 +200,7 @@ export default { <style lang="scss" scoped> .project-list { - padding: 20px; + padding: 0 20px; background-color: white; height: 88vh; box-sizing: border-box; @@ -205,7 +211,9 @@ export default { padding-top: 20px; width: 300px; height: 100%; - box-shadow: 5px 0 5px rgba(0, 0, 0, 0.5); /* 阴影效果 */ + // box-shadow: 5px 0 5px rgba(0, 0, 0, 0.5); /* 阴影效果 */ + border-right: 1px solid #eeeeee; + margin-right: 10px; } .right { padding-top: 20px; @@ -305,4 +313,18 @@ export default { width: 90px !important; height: 36px; } + +::v-deep .el-table { + border: 1px solid #eee; + border-bottom: none; +} +::v-deep .el-tree-node__content { + font-weight: bold; +} +::v-deep .is-current>.el-tree-node__content:first-child .el-tree-node__label { + color: #4096ff !important; +} +::v-deep .el-tree-node__content { + height: 36px; +} </style> diff --git a/src/views/projectBank/userScoreDetail.vue b/src/views/projectBank/userScoreDetail.vue index 59074b1..7564590 100644 --- a/src/views/projectBank/userScoreDetail.vue +++ b/src/views/projectBank/userScoreDetail.vue @@ -1,13 +1,20 @@ <template> <div class="conetentBox"> + <div class="titleBox flex-row aic jcsb"> + <div class="flex-row aic"> + <div class="block"></div> + 评分详情 + </div> + </div> <div class="flex-row jcsb aic userBox"> <div> <el-form :inline="true" class="demo-form-inline" size="small"> - <el-form-item label="考核人员" class="form-item"> + <el-form-item label="人员姓名" class="form-item"> <el-select v-model="examineId" placeholder="请选择" @change="userChange" + style="width: 300px" > <el-option v-for="item in userList" @@ -18,11 +25,12 @@ </el-option> </el-select> </el-form-item> - <el-form-item label="考核任务" class="form-item"> + <el-form-item label="任务名称" class="form-item"> <el-select v-model="examineTaskId" placeholder="请选择" @change="getUserList" + style="width: 300px" > <el-option v-for="item in taskList" @@ -35,130 +43,265 @@ </el-form-item> </el-form> </div> - <div>考核评分:{{ score }}</div> + </div> + <div class="flex-row jcsb aic userBox headerBox"> + <div class="flex-row aic"> + <i + class="el-icon-user-solid" + style="color: #4096ff; font-size: 24px; margin-right: 5px" + ></i + >{{ userList.find((ele) => ele.id == examineId).userName }} + </div> + <div class="totalBox aic" v-if="!isNormal"> + <div>考核评分:</div> + <div class="scoreTotal">{{ score }}</div> + </div> </div> <el-tabs v-model="activeName" type="card"> <el-tab-pane label="组长评估" name="first"> - <div - v-for="(table, index) in tableData1" - :key="index" - style="margin-bottom: 20px" - > - <div class="userBox">{{ table[0].reviewCategory }}</div> - <el-table :data="table" style="width: 100%"> - <el-table-column - v-for="(header, hIndex) in headers" - :key="hIndex" - :label="header.label" - :prop="header.prop" - :width="header.width" - > - </el-table-column> - <el-table-column label="评分" prop="score" width="300"> - <template slot-scope="scope"> - <div style="width: 80%; position: relative"> - <div> - <el-slider - v-model="scope.row.score" - :min="0" - :max="10" - disabled - ></el-slider> - </div> - <div class="statusText" v-show="scope.row.score == 0"> - 未打分 - </div> - - <div class="flex-row jcsb" style="margin-left: 10px"> - <div>0</div> - <div class="scoreText">{{ scope.row.score }}分</div> - <div>10</div> - </div> - </div> - </template> - </el-table-column> - </el-table> - </div> - <div> - <div> - <div class="userBox">总体评价</div> - <div> - <el-input - type="textarea" - :autosize="{ minRows: 4 }" - placeholder="0/300" - v-model="judgeContent" - readonly + <div class="tableBox"> + <div + class="tableRow" + v-for="(table, index) in tableData1" + :key="index" + style="margin-bottom: 20px" + > + <div class="userBox">{{ table[0].reviewCategory }}</div> + <el-table :data="table" style="width: 100%"> + <el-table-column + v-for="(header, hIndex) in headers" + :key="hIndex" + :label="header.label" + :prop="header.prop" + :width="header.width" + :minWidth="header.minWidth" > - </el-input> + </el-table-column> + <el-table-column + label="评分" + prop="score" + :minWidth="420" + class-name="sorceTableCell" + > + <template slot-scope="scope"> + <div style="width: 88%; position: relative"> + <div> + <div + class="flex-row jcsb" + style=" + margin-left: 10px; + width: 90%; + color: #999; + font-weight: 500; + font-size: 14px; + " + > + <div>0</div> + <div v-show="scope.row.score != 10">10</div> + </div> + <div + class="scoreText aic" + v-show="scope.row.score != 0" + :style="{ + left: scope.row.score * 9 - 5 + '%', + }" + > + <img + src="@/assets/task/score.png" + :style="{ + height: '28px', + width: '34px', + zIndex: 0, + position: 'absolute', + top: '0', + }" + alt="" + /> + <div + :style="{ + zIndex: 10, + paddingLeft: scope.row.score != 10 ? '13px' : '9px', + }" + > + {{ scope.row.score }} + </div> + </div> + + <div + v-for="item in scope.row.score == 0 + ? 0 + : scope.row.score - 1" + :key="item" + class="stepBox" + :style="{ + left: item * 9 + 1.5 + '%', + }" + ></div> + <el-slider + v-model="scope.row.score" + :min="0" + :max="10" + :disabled="!isEdit" + style="width: 90%" + show-stops + show-tooltip + ></el-slider> + </div> + <div class="statusText" v-show="scope.row.score == 0"> + 暂未打分 + </div> + </div> + </template> + </el-table-column> + </el-table> + </div> + <div> + <div> + <div class="userBox">总体评价</div> + <div> + <el-input + type="textarea" + :autosize="{ minRows: 4 }" + placeholder="0/300" + v-model="judgeContent" + :readonly="!isEdit" + maxlength="300" + show-word-limit + > + </el-input> + </div> </div> </div></div ></el-tab-pane> <el-tab-pane label="个人自评" name="second"> - <div - v-for="(table, index) in tableData2" - :key="index" - style="margin-bottom: 20px" - > - <div class="userBox">表格 {{ table[0].reviewCategory }}</div> - <el-table :data="table" style="width: 100%"> - <el-table-column - v-for="(header, hIndex) in headers" - :key="hIndex" - :label="header.label" - :prop="header.prop" - :width="header.width" - > - </el-table-column> - <el-table-column label="评分" prop="score" width="300"> - <template slot-scope="scope"> - <div style="width: 80%; position: relative"> - <div> - <el-slider - v-model="scope.row.score" - :min="0" - :max="10" - disabled - ></el-slider> - </div> - <div class="statusText" v-show="scope.row.score == 0"> - 未打分 - </div> + <div class="tableBox"> + <div + class="tableRow" + v-for="(table, index) in tableData2" + :key="index" + style="margin-bottom: 20px" + > + <div class="userBox">{{ table[0].reviewCategory }}</div> + <el-table :data="table" style="width: 100%"> + <el-table-column + v-for="(header, hIndex) in headers" + :key="hIndex" + :label="header.label" + :prop="header.prop" + :width="header.width" + :minWidth="header.minWidth" + > + </el-table-column> + <el-table-column + label="评分" + prop="score" + :minWidth="320" + class-name="sorceTableCell" + > + <template slot-scope="scope"> + <div style="width: 88%; position: relative"> + <div> + <div + class="flex-row jcsb" + style=" + margin-left: 10px; + width: 90%; + color: #999; + font-weight: 500; + font-size: 14px; + " + > + <div>0</div> + <div v-show="scope.row.score != 10">10</div> + </div> + <div + class="scoreText aic" + v-show="scope.row.score != 0" + :style="{ + left: scope.row.score * 9 - 5 + '%', + }" + > + <img + src="@/assets/task/score.png" + :style="{ + height: '28px', + width: '34px', + zIndex: 0, + position: 'absolute', + top: '0', + }" + alt="" + /> + <div + :style="{ + zIndex: 10, + paddingLeft: scope.row.score != 10 ? '13px' : '9px', + }" + > + {{ scope.row.score }} + </div> + </div> - <div class="flex-row jcsb" style="margin-left: 10px"> - <div>0</div> - <div class="scoreText">{{ scope.row.score }}分</div> - <div>10</div> + <div + v-for="item in scope.row.score == 0 + ? 0 + : scope.row.score - 1" + :key="item" + class="stepBox" + :style="{ + left: item * 9 + 1.5 + '%', + }" + ></div> + <el-slider + v-model="scope.row.score" + :min="0" + :max="10" + @change="updateScore(scope.row)" + :disabled="!isEdit" + style="width: 90%" + show-stops + show-tooltip + ></el-slider> + </div> + <div class="statusText" v-show="scope.row.score == 0"> + 暂未打分 + </div> </div> - </div> - </template> - </el-table-column> - <el-table-column label="自评总结" prop="score" width="300"> - <template slot-scope="scope"> - <div> - <el-button - v-if="scope.row.remark" - @click="handleEdit(scope.row)" - type="text" - size="mini" - icon="el-icon-view" - :class="{ hasEdit: !scope.row.remark }" - >查看</el-button - > - <el-button - v-if="!scope.row.remark" - type="text" - size="mini" - :class="{ hasEdit: !scope.row.remark }" - >未填写</el-button - > - </div> - </template> - </el-table-column> - </el-table> + </template> + </el-table-column> + <el-table-column label="自评总结" prop="score"> + <template slot-scope="scope"> + <div> + <el-button + v-if="isEdit" + @click="handleEdit(scope.row)" + type="text" + size="mini" + :class="{ hasEdit: !scope.row.remark }" + style="font-weight: 600" + >{{ scope.row.remark ? "查看" : "暂未评价" }} + <i + style="color: #4096ff; font-size: 14px" + class="el-icon-edit el-icon--right" + ></i + ></el-button> + <el-button + v-if="!isEdit" + @click="handleEdit(scope.row)" + type="text" + size="mini" + :class="{ hasEdit: !scope.row.remark }" + style="font-weight: 600" + >{{ scope.row.remark ? "查看" : "暂未评价" }}</el-button + > + </div> + </template> + </el-table-column> + </el-table> + </div> + <div></div> </div> - <div></div - ></el-tab-pane> + </el-tab-pane> </el-tabs> <el-dialog title="自评总结" :visible.sync="dialogVisible" width="30%"> <div> @@ -190,8 +333,12 @@ export default { dialogVisible: false, remark: "", headers: [ - { label: "考核项", prop: "reviewItem", width: 300 }, - { label: "评分标准", prop: "remarks" }, + { label: "考核项", prop: "reviewItem", minWidth: 200 }, + { + label: "评分标准", + prop: "remarks", + minWidth: 300, + }, ], // 二维数组,每个子数组代表一个表格的数据 tableData1: [], @@ -259,7 +406,7 @@ export default { if (type == 0) this.tableData1 = Object.values(objData); else this.tableData2 = Object.values(objData); this.judgeContent = res.data.examineUser.judgeContent; - this.score = res.data.examineUser.score; + this.score = res.data.examineUser.score||res.data.examineUser.manageScore; }); }, }, @@ -271,7 +418,7 @@ export default { <style scoped> .conetentBox { - padding: 30px; + padding: 40px 30px 30px; background-color: #fff; height: 90vh; /* 设置整体高度 */ overflow: auto; @@ -279,58 +426,128 @@ export default { .el-table { margin-top: 20px; } + .userBox { margin: 0 0 20px; font-size: 16px; font-weight: bold; } ::v-deep .el-slider__runway { - height: 20px; - border-radius: 20px; + height: 14px; + border-radius: 10px; margin: 10px !important; /* width: 95%; */ } -::v-deep .el-slider__bar { - height: 20px; - border-radius: 20px; - background-color: #ff5722; -} ::v-deep .el-slider__runway.disabled .el-slider__bar { + height: 14px; + border-radius: 10px; + background-color: #ff5722; } +::v-deep .el-slider__stop { + height: 14px; + border-radius: 0; + z-index: 1000; +} ::v-deep .el-slider__bar { - height: 20px; - border-radius: 20px; - background-color: #ff5722; + height: 14px; + border-radius: 10px; + background: linear-gradient(to right, #ffb144, #ff7d00); } ::v-deep .el-slider__button { display: none; } .scoreText { - color: #1686d8; + color: #fff; + position: absolute; + top: 2px; + font-weight: 500; + display: flex; + flex-direction: row; } ::v-deep .el-table th { - text-align: center; + text-align: left; + font-size: 14px; + font-weight: bold; } ::v-deep .el-table .cell { - text-align: center; + text-align: left; + font-size: 14px; + font-weight: bold; } .statusText { - color: #ff5722; + color: #ff7d00; position: absolute; - right: -58px; - top: 10px; + right: -50px; + top: 26px; + font-size: 14px; + font-weight: 600; } .hasEdit { - color: #ff5722; + color: #999999; } ::v-deep .el-dialog { margin-top: 15% !important; } - -::v-deep .el-tab-pane { - height: 600px; +.tableBox { + height: 75%; overflow: auto; + padding: 20px; + background-color: #fff; +} +.tableBox ::v-deep .el-table { + border-left: 1px solid #eeeeee; + border-right: 1px solid #eeeeee; +} +.tableRow { + padding: 20px; + box-shadow: 0 0 20px #0000000f; +} +.titleBox { + font-size: 20px; + font-weight: bold; + margin-bottom: 40px; +} +.headerBox { + padding: 20px; + background-color: #f9f9f9; + border-radius: 2px; + font-size: 14px; +} +.block { + width: 4px; + height: 24px; + background-color: #4096ff; + margin-right: 10px; +} +.stepBox { + position: absolute; + top: 33px; + height: 14px; + width: 3px; + background-color: #fff; + z-index: 100; +} +.totalBox { + width: 150px; + display: flex; + flex-direction: row; + font-size: 14px; + color: #333333; +} +.scoreTotal { + font-size: 28px; + font-weight: 700; + color: #ff7d00; +} +::v-deep .sorceTableCell .cell { + margin-bottom: 20px; +} +::v-deep .el-table__body .el-table__cell { + padding: 20px 40px; +} +::v-deep .el-table__header .el-table__cell { + padding: 14px 30px; } </style> diff --git a/src/views/workAppraisal/detail.vue b/src/views/workAppraisal/detail.vue index d8238ec..24a2884 100644 --- a/src/views/workAppraisal/detail.vue +++ b/src/views/workAppraisal/detail.vue @@ -48,7 +48,7 @@ <el-table-column label="评分" prop="score" - minWidth="320" + :minWidth="isNormal ? 320 : 420" class-name="sorceTableCell" > <template slot-scope="scope"> @@ -185,9 +185,13 @@ </el-input> </div> - <span slot="footer" class="dialog-footer" > - <el-button @click="cancelEdit">{{isEdit?'取 消':'关闭'}}</el-button> - <el-button type="primary" @click="saveEdit" v-if="isEdit">确 定</el-button> + <span slot="footer" class="dialog-footer"> + <el-button @click="cancelEdit">{{ + isEdit ? "取 消" : "关闭" + }}</el-button> + <el-button type="primary" @click="saveEdit" v-if="isEdit" + >确 定</el-button + > </span> </el-dialog> </div> @@ -207,11 +211,11 @@ export default { remark: "", isEdit: "", headers: [ - { label: "考核项", prop: "reviewItem", minWidth: 100 }, + { label: "考核项", prop: "reviewItem", minWidth: 200 }, { label: "评分标准", prop: "remarks", - minWidth: 320, + minWidth: 300, }, ], // 二维数组,每个子数组代表一个表格的数据 @@ -272,9 +276,11 @@ export default { this.examineId = res.data.examineUser.id; this.examineTask = res.data.examineTask; this.examineUser = res.data.examineUser; - if(res.data.examineUser.examineStatusSelf==1) - this.isEdit =false - + if ( + res.data.examineUser.examineStatusSelf == 1 && + res.data.examineUser.examineStatus == 1 + ) + this.isEdit = false; }); }, handleEdit(row) { @@ -519,6 +525,9 @@ export default { margin-bottom: 20px; } ::v-deep .el-table__body .el-table__cell { - padding: 20px 0; + padding: 20px 40px; +} +::v-deep .el-table__header .el-table__cell { + padding: 14px 30px; } </style> diff --git a/src/views/workAppraisal/manager.vue b/src/views/workAppraisal/manager.vue index 63ed4bf..8979077 100644 --- a/src/views/workAppraisal/manager.vue +++ b/src/views/workAppraisal/manager.vue @@ -25,7 +25,8 @@ </div> <div class="action-buttons aic" - @click="viewDetails(item.id, 1)" + @click="viewDetails(item, 1)" + :class="{ waitBtn: !item.taskEditFlag }" > 考核评分 <img @@ -62,9 +63,10 @@ </div> <div class="action-buttons aic" - @click="viewDetails(item.id, 0)" + @click="viewDetails(item, 0)" + :class="{ waitBtn: !item.taskEditFlag }" > - 考核评分 + 查看详情 <img src="@/assets/task/right.png" alt="" @@ -96,11 +98,18 @@ export default { this.taskList = res.data; }); }, - viewDetails(id, isEdit) { + viewDetails(row, isEdit) { + if (!row.taskEditFlag) { + this.$message({ + message: "分数正在计算中,请等待计算完成", + type: "warning", + }); + return; + } // 查看考核详情 this.$router.push({ path: "/workAppraisal/managerUser", - query: { taskId: id, isEdit }, + query: { taskId: row.id, isEdit }, }); }, }, @@ -208,4 +217,7 @@ export default { ::v-deep .el-tag--warning { color: #ea741e; } +.waitBtn{ + color: #999; +} </style> diff --git a/src/views/workAppraisal/managerUser.vue b/src/views/workAppraisal/managerUser.vue index a2d678e..eb612fb 100644 --- a/src/views/workAppraisal/managerUser.vue +++ b/src/views/workAppraisal/managerUser.vue @@ -13,7 +13,7 @@ placeholder="考核人员" readonly @click.native="openUserSelectDialog" - style="width: 300px;" + style="width: 300px" ><el-button slot="append" icon="el-icon-s-custom"></el-button ></el-input> </el-form-item> @@ -22,8 +22,7 @@ v-model="searchForm.examineStatus" placeholder="状态" clearable - style="width: 300px;" - + style="width: 300px" > <el-option v-for="item in statusList" @@ -233,7 +232,7 @@ export default { .demo-form-inline .el-form-item { // margin-right: 50px; /* 将间距设置为 30px */ - margin-bottom: 0; + // margin-bottom: 0; } .demo-form-inline .el-form-item:last-child { @@ -257,7 +256,6 @@ export default { white-space: nowrap; } - ::v-deep .operation-column { background-color: #ffffff; box-shadow: -2px 0 5px rgba(241, 112, 6, 0.1); @@ -311,8 +309,11 @@ export default { font-weight: 600; font-size: 14px; } -.search-buttons ::v-deep .el-button { +.search-buttons ::v-deep .el-button { width: 90px !important; height: 36px; } +.waitBtn { + color: #999; +} </style> diff --git a/src/views/workAppraisal/normalWorker.vue b/src/views/workAppraisal/normalWorker.vue index dabbabf..e0fd015 100644 --- a/src/views/workAppraisal/normalWorker.vue +++ b/src/views/workAppraisal/normalWorker.vue @@ -25,9 +25,10 @@ </div> <div class="action-buttons aic" - @click="viewDetails(item.id, 1)" + @click="viewDetails(item, 1)" + :class="{ waitBtn: !item.taskEditFlag }" > - 考核评分 + {{ item.examineStatusSelf == 1 ? "查看详情" : "考核评分" }} <img src="@/assets/task/right.png" alt="" @@ -58,11 +59,12 @@ </div> <div class="status-actions aic"> <div class="peopleNumber"> - 考核人数:{{ item.peopleNumber }} + <!-- 考核人数:{{ item.peopleNumber }} --> </div> <div class="action-buttons aic" - @click="viewDetails(item.id, 0)" + @click="viewDetails(item, 0)" + :class="{ waitBtn: item.taskEditFlag }" > 查看详情 <img @@ -92,25 +94,33 @@ export default { }, methods: { getTaks() { - taskApi.getTaskListSelf().then((res) => { + taskApi.getTaskListSelfNormal().then((res) => { this.taskList = res.data; }); }, - viewDetails(id, edit) { + viewDetails(item, edit) { + if (!item.taskEditFlag) { + this.$message({ + message: "分数正在计算中,请等待计算完成", + type: "warning", + }); + return; + } // 查看考核详情 this.$router.push({ path: "/workAppraisal/detail", query: { - id: id, edit, isNormal: true, - examineTaskId: id, + examineTaskId: item.id, reviewType: 1, }, }); }, }, created() { + console.log(123); + this.getTaks(); }, }; @@ -214,4 +224,7 @@ export default { ::v-deep .el-tag--warning { color: #ea741e; } +.waitBtn { + color: #999; +} </style> diff --git a/src/views/workAppraisal/taskSet.vue b/src/views/workAppraisal/taskSet.vue index fc7d4aa..b7ae1cc 100644 --- a/src/views/workAppraisal/taskSet.vue +++ b/src/views/workAppraisal/taskSet.vue @@ -11,6 +11,7 @@ <el-input v-model="searchForm.taskName" placeholder="任务名称" + style="width: 300px;" ></el-input> </el-form-item> <el-form-item label="任务状态" class="form-item"> @@ -18,6 +19,8 @@ v-model="searchForm.taskStatus" placeholder="状态" clearable + style="width: 300px;" + > <el-option v-for="item in statusList" @@ -31,9 +34,10 @@ <el-date-picker v-model="searchForm.year" type="year" - style="width: 90%" + style="width: 300px" placeholder="选择年份" value-format="yyyy" + > </el-date-picker> </el-form-item> @@ -162,7 +166,7 @@ <el-dialog title="配置指标和权重" :visible.sync="dialogVisible2"> <div class="modal"> <div class="left"> - <div class="setText">累计权重</div> + <div class="setText" style="font-weight: 600">累计权重</div> <el-collapse v-model="letfValue" :accordion="true" @@ -199,7 +203,7 @@ class="flex-row jcsb" style="margin-top: 20px; padding-right: 15px" > - <div class="setTitle">总计</div> + <div class="setTitle" style="font-weight: 600">总计</div> <div class="statusText"> {{ scoreList.reduce((total, ele) => total + (ele.weight || 0), 0) @@ -209,8 +213,8 @@ </div> <div class="right"> <div class="flex-row jcsb" style="margin-bottom: 10px"> - <div style="width: 50%">指标</div> - <div class="center" style="width: 50%">权重占比</div> + <div style="width: 50%;font-weight: 600">指标</div> + <div class="center" style="width: 50%;font-weight: 600">权重占比</div> </div> <div> <div @@ -224,18 +228,70 @@ style="margin-bottom: 10px" class="flex-row jcsb aic" > - <div style="width: 50%">{{ item.reviewItem }}</div> + <div style="width: 50%; font-weight: 600"> + {{ item.reviewItem }} + </div> <div class="center" style="width: 50%"> + <div + class="flex-row jcsb" + style=" + margin-left: 10px; + width: 100%; + color: #999; + font-weight: 500; + font-size: 14px; + font-weight: 600; + " + > + <div>0</div> + <div v-show="item.weight != 20">20</div> + </div> + <div + class="scoreText aic" + v-show="item.weight != 0" + :style="{ + left: item.weight * 4.5 - 2.5 + '%', + }" + > + <img + src="@/assets/task/score.png" + :style="{ + height: '28px', + width: '34px', + zIndex: 0, + position: 'absolute', + top: '-2px', + }" + alt="" + /> + <div + :style="{ + zIndex: 10, + textIndent: item.weight < 10 ? '13px' : '10px', + fontSize: '12px', + }" + > + {{ item.weight }} + </div> + </div> + <!-- <div class="flex-row jcsb scoreBox" style="margin-left: 15px"> + <div>0%</div> + <div class="scoreText">{{ item.weight }}%</div> + <div>20%</div> + </div> --> + <div + v-for="item in item.weight == 0 ? 0 : item.weight - 1" + :key="item" + class="stepBox" + :style="{ + left: item * 5 + 4 + '%', + }" + ></div> <el-slider v-model="item.weight" :max="20" @change="changeTotal" ></el-slider> - <div class="flex-row jcsb scoreBox" style="margin-left: 15px"> - <div>0%</div> - <div class="scoreText">{{ item.weight }}%</div> - <div>20%</div> - </div> </div> </div> </div> @@ -276,7 +332,7 @@ export default { type: "status", callback: (value) => { if (value == 2) var color = "#999"; - else var color = "#EA741D"; + else var color = "#4096FF"; return `<span style="color: ${color}">${ value ? "已过期" : "进行中" @@ -549,13 +605,15 @@ export default { .forEach((ele) => { examineConfigList.push({ id: ele.id, weight: ele.weight }); }); - taskApi.setTaskSet({examineConfigList,taskId:this.id}).then((res) => { - this.$message({ - type: "success", - message: "操作成功", + taskApi + .setTaskSet({ examineConfigList, taskId: this.id }) + .then((res) => { + this.$message({ + type: "success", + message: "操作成功", + }); + this.dialogVisible2 = false; }); - this.dialogVisible2 = false; - }); } }, delTask(row) { @@ -655,7 +713,7 @@ export default { .demo-form-inline .el-form-item { // margin-right: 50px; /* 将间距设置为 30px */ - margin-bottom: 0; + // margin-bottom: 0; } .demo-form-inline .el-form-item:last-child { @@ -762,16 +820,27 @@ export default { right: -20px; } ::v-deep .el-slider__runway { - height: 20px; - border-radius: 20px; - margin: 15px !important; + height: 14px; + border-radius: 10px; + margin: 10px !important; /* width: 95%; */ } -::v-deep .el-slider__bar { - height: 20px; - border-radius: 20px; +::v-deep .el-slider__runway.disabled .el-slider__bar { + height: 14px; + border-radius: 10px; + background-color: #ff5722; } +::v-deep .el-slider__stop { + height: 14px; + border-radius: 0; + z-index: 1000; +} +::v-deep .el-slider__bar { + height: 14px; + border-radius: 10px; + background: linear-gradient(to right, #ffb144, #ff7d00); +} ::v-deep .el-slider__button { display: none; } @@ -818,4 +887,34 @@ export default { background-color: #4096ff; color: #fff; } +.scoreText { + color: #fff; + position: absolute; + top: 2px; + font-weight: 500; + display: flex; + flex-direction: row; + width: 40px; +} +.block { + width: 4px; + height: 24px; + background-color: #4096ff; + margin-right: 10px; +} +.stepBox { + position: absolute; + top: 29px; + height: 14px; + width: 2px; + background-color: #fff; + z-index: 100; +} +.totalBox { + width: 150px; + display: flex; + flex-direction: row; + font-size: 14px; + color: #333333; +} </style>