样式调整

dev
rdpnr_hemingxia 2025-04-28 10:56:18 +08:00
parent b3bd2eff61
commit 5757b4d23c
7 changed files with 369 additions and 423 deletions

View File

@ -208,6 +208,12 @@ export const taskApi = {
url: `/task/target/${id}`, url: `/task/target/${id}`,
method: 'get', method: 'get',
}), }),
setTaskSet: (data) => request({
url: `/task/config/update`,
method: 'put',
data: data,
}),
getTaskModel: (data) => request({ getTaskModel: (data) => request({
url: `/examine/template/list`, url: `/examine/template/list`,
method: 'get', method: 'get',

View File

@ -10,34 +10,14 @@
<div> <div>
<el-form :inline="true" class="demo-form-inline" size="small"> <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 <el-select v-model="examineId" placeholder="请选择" @change="userChange" style="width: 300px">
v-model="examineId" <el-option v-for="item in userList" :key="item.id" :label="item.userName" :value="item.id">
placeholder="请选择"
@change="userChange"
style="width: 300px"
>
<el-option
v-for="item in userList"
:key="item.id"
:label="item.userName"
:value="item.id"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="任务名称" class="form-item"> <el-form-item label="任务名称" class="form-item">
<el-select <el-select v-model="examineTaskId" placeholder="请选择" @change="getUserList" style="width: 300px">
v-model="examineTaskId" <el-option v-for="item in taskList" :key="item.id" :label="item.taskName" :value="item.id">
placeholder="请选择"
@change="getUserList"
style="width: 300px"
>
<el-option
v-for="item in taskList"
:key="item.id"
:label="item.taskName"
:value="item.id"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -46,11 +26,8 @@
</div> </div>
<div class="flex-row jcsb aic userBox headerBox"> <div class="flex-row jcsb aic userBox headerBox">
<div class="flex-row aic" style="width: 200px"> <div class="flex-row aic" style="width: 200px">
<i <i class="el-icon-user-solid" style="color: #4096ff; font-size: 24px; margin-right: 5px"></i>{{
class="el-icon-user-solid" (userList.find((ele) => ele.id == examineId) || {}).userName}}
style="color: #4096ff; font-size: 24px; margin-right: 5px"
></i
>{{ (userList.find((ele) => ele.id == examineId) || {}).userName }}
</div> </div>
<div class="totalBox aic"> <div class="totalBox aic">
<div>考核评分</div> <div>考核评分</div>
@ -60,92 +37,62 @@
<el-tabs v-model="activeName"> <el-tabs v-model="activeName">
<el-tab-pane label="组长评估" name="first"> <el-tab-pane label="组长评估" name="first">
<div class="tableBox"> <div class="tableBox">
<div <div class="tableRow" v-for="(table, index) in tableData1" :key="index" style="margin-bottom: 20px">
class="tableRow"
v-for="(table, index) in tableData1"
:key="index"
style="margin-bottom: 20px"
>
<div class="userBox">{{ table[0].reviewCategory }}</div> <div class="userBox">{{ table[0].reviewCategory }}</div>
<el-table :data="table" style="width: 100%"> <el-table :data="table" style="width: 100%">
<el-table-column <el-table-column v-for="(header, hIndex) in headers" :key="hIndex" :label="header.label"
v-for="(header, hIndex) in headers" :prop="header.prop" :width="header.width" :minWidth="header.minWidth">
:key="hIndex"
:label="header.label"
:prop="header.prop"
:width="header.width"
:minWidth="header.minWidth"
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column class-name="editCell" label="员工自评" prop="score"
label="评分" v-if="examineTask.templateId && table[0].reviewCategory == '发展与协作' && examineTask.templateType != 0"
prop="score" min-width="220">
:minWidth="420" <template slot-scope="scope">
class-name="sorceTableCell" <div>
> <el-input type="textarea" :autosize="{ minRows: 4 }" placeholder="0/300" v-model="scope.row.remark"
readonly maxlength="300" show-word-limit>
</el-input>
</div>
</template>
</el-table-column>
<el-table-column label="评分" prop="score" :minWidth="420" class-name="sorceTableCell">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="width: 88%; position: relative"> <div style="width: 88%; position: relative">
<div> <div>
<div <div class="flex-row jcsb" style="
class="flex-row jcsb"
style="
margin-left: 10px; margin-left: 10px;
width: 90%; width: 90%;
color: #999; color: #999;
font-weight: 500; font-weight: 500;
font-size: 14px; font-size: 14px;
" ">
>
<div>0</div> <div>0</div>
<div v-show="scope.row.score != 10">10</div> <div v-show="scope.row.score != 10">10</div>
</div> </div>
<div <div class="scoreText aic" v-show="scope.row.score != 0" :style="{
class="scoreText aic" left: scope.row.score * 9 - 5 + '%',
v-show="scope.row.score != 0" }">
:style="{ <img src="@/assets/task/score.png" :style="{
left: scope.row.score * 9 - 5 + '%', height: '28px',
}" width: '34px',
> zIndex: 0,
<img position: 'absolute',
src="@/assets/task/score.png" top: '0',
:style="{ }" alt="" />
height: '28px', <div :style="{
width: '34px', zIndex: 10,
zIndex: 0, paddingLeft: scope.row.score != 10 ? '13px' : '9px',
position: 'absolute', }">
top: '0',
}"
alt=""
/>
<div
:style="{
zIndex: 10,
paddingLeft: scope.row.score != 10 ? '13px' : '9px',
}"
>
{{ scope.row.score }} {{ scope.row.score }}
</div> </div>
</div> </div>
<div <div v-for="item in scope.row.score == 0
v-for="item in scope.row.score == 0 ? 0
? 0 : scope.row.score - 1" :key="item" class="stepBox" :style="{
: scope.row.score - 1"
:key="item"
class="stepBox"
:style="{
left: item * 9 + 1.5 + '%', left: item * 9 + 1.5 + '%',
}" }"></div>
></div> <el-slider v-model="scope.row.score" :min="0" :max="10" :disabled="true" style="width: 90%"
<el-slider show-stops show-tooltip></el-slider>
v-model="scope.row.score"
:min="0"
:max="10"
:disabled="true"
style="width: 90%"
show-stops
show-tooltip
></el-slider>
</div> </div>
<div class="statusText" v-show="scope.row.score == 0"> <div class="statusText" v-show="scope.row.score == 0">
暂未打分 暂未打分
@ -154,116 +101,70 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div> <div>
<div> <div>
<div class="userBox">总体评价</div> <div class="userBox">总体评价</div>
<div> <div>
<el-input <el-input type="textarea" :autosize="{ minRows: 4 }" placeholder="0/300" v-model="judgeContent"
type="textarea" :readonly="true" maxlength="300" show-word-limit>
:autosize="{ minRows: 4 }"
placeholder="0/300"
v-model="judgeContent"
:readonly="true"
maxlength="300"
show-word-limit
>
</el-input> </el-input>
</div> </div>
<div style="margin-top: 20px;font-weight: bold;">组长{{ manageUserName }}</div> <div style="margin-top: 20px;font-weight: bold;">组长{{ manageUserName }}</div>
</div> </div>
</div> </div>
</div></el-tab-pane </div>
> </el-tab-pane>
<el-tab-pane label="个人自评" name="second"> <el-tab-pane label="个人自评" name="second">
<div class="tableBox"> <div class="tableBox">
<div <div class="tableRow" v-for="(table, index) in tableData2" :key="index" style="margin-bottom: 20px">
class="tableRow"
v-for="(table, index) in tableData2"
:key="index"
style="margin-bottom: 20px"
>
<div class="userBox">{{ table[0].reviewCategory }}</div> <div class="userBox">{{ table[0].reviewCategory }}</div>
<el-table :data="table" style="width: 100%"> <el-table :data="table" style="width: 100%">
<el-table-column <el-table-column v-for="(header, hIndex) in headers" :key="hIndex" :label="header.label"
v-for="(header, hIndex) in headers" :prop="header.prop" :width="header.width" :minWidth="header.minWidth">
:key="hIndex"
:label="header.label"
:prop="header.prop"
:width="header.width"
:minWidth="header.minWidth"
>
</el-table-column> </el-table-column>
<el-table-column
label="评分" <el-table-column label="评分" prop="score" :minWidth="320" class-name="sorceTableCell"
prop="score" v-if="table[0].reviewCategory != '发展与协作'">
:minWidth="320"
class-name="sorceTableCell"
>
<template slot-scope="scope"> <template slot-scope="scope">
<div style="width: 88%; position: relative"> <div style="width: 88%; position: relative">
<div> <div>
<div <div class="flex-row jcsb" style="
class="flex-row jcsb"
style="
margin-left: 10px; margin-left: 10px;
width: 90%; width: 90%;
color: #999; color: #999;
font-weight: 500; font-weight: 500;
font-size: 14px; font-size: 14px;
" ">
>
<div>0</div> <div>0</div>
<div v-show="scope.row.score != 10">10</div> <div v-show="scope.row.score != 10">10</div>
</div> </div>
<div <div class="scoreText aic" v-show="scope.row.score != 0" :style="{
class="scoreText aic" left: scope.row.score * 9 - 5 + '%',
v-show="scope.row.score != 0" }">
:style="{ <img src="@/assets/task/score.png" :style="{
left: scope.row.score * 9 - 5 + '%', height: '28px',
}" width: '34px',
> zIndex: 0,
<img position: 'absolute',
src="@/assets/task/score.png" top: '0',
:style="{ }" alt="" />
height: '28px', <div :style="{
width: '34px', zIndex: 10,
zIndex: 0, paddingLeft: scope.row.score != 10 ? '13px' : '9px',
position: 'absolute', }">
top: '0',
}"
alt=""
/>
<div
:style="{
zIndex: 10,
paddingLeft: scope.row.score != 10 ? '13px' : '9px',
}"
>
{{ scope.row.score }} {{ scope.row.score }}
</div> </div>
</div> </div>
<div <div v-for="item in scope.row.score == 0
v-for="item in scope.row.score == 0 ? 0
? 0 : scope.row.score - 1" :key="item" class="stepBox" :style="{
: scope.row.score - 1"
:key="item"
class="stepBox"
:style="{
left: item * 9 + 1.5 + '%', left: item * 9 + 1.5 + '%',
}" }"></div>
></div> <el-slider v-model="scope.row.score" :min="0" :max="10" @change="updateScore(scope.row)"
<el-slider :disabled="true" style="width: 90%" show-stops show-tooltip></el-slider>
v-model="scope.row.score"
:min="0"
:max="10"
@change="updateScore(scope.row)"
:disabled="true"
style="width: 90%"
show-stops
show-tooltip
></el-slider>
</div> </div>
<div class="statusText" v-show="scope.row.score == 0"> <div class="statusText" v-show="scope.row.score == 0">
暂未打分 暂未打分
@ -271,35 +172,42 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="自评总结" prop="score" width="150"> <el-table-column label="自评总结" prop="score" width="150"
v-if="(examineTask.templateId && table[0].reviewCategory == '发展与协作') || !examineTask.templateId">
<template slot-scope="scope"> <template slot-scope="scope">
<div> <div>
<el-button <el-button @click="handleEdit(scope.row)" type="text" size="mini"
@click="handleEdit(scope.row)" :class="{ hasEdit: !scope.row.remark }" style="font-weight: 600">{{ scope.row.remark ? "查看" :
type="text" "暂未评价" }}</el-button>
size="mini"
:class="{ hasEdit: !scope.row.remark }"
style="font-weight: 600"
>{{ scope.row.remark ? "查看" : "暂未评价" }}</el-button
>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div v-if="examineTask.templateType != 0 && table[0].reviewCategory != '发展与协作'" style="margin-top: 10px;">
<div class="userBox">评价</div>
<div>
<el-input type="textarea" :autosize="{ minRows: 4 }" placeholder="0/300" v-model="table[0].remarkCate"
readonly maxlength="300" show-word-limit>
</el-input>
</div>
</div>
</div>
<div>
<div>
<div class="userBox">总体评价</div>
<div>
<el-input type="textarea" :autosize="{ minRows: 4 }" placeholder="0/300" v-model="selfJudgeContent"
:readonly="true" maxlength="300" show-word-limit>
</el-input>
</div>
</div>
</div> </div>
<div></div>
</div> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<el-dialog title="自评总结" :visible.sync="dialogVisible" width="30%"> <el-dialog title="自评总结" :visible.sync="dialogVisible" width="30%">
<div> <div>
<el-input <el-input type="textarea" :autosize="{ minRows: 4 }" placeholder="0/200" v-model="remark" readonly>
type="textarea"
:autosize="{ minRows: 4 }"
placeholder="0/200"
v-model="remark"
readonly
>
</el-input> </el-input>
</div> </div>
@ -333,9 +241,12 @@ export default {
tableData2: [], tableData2: [],
taskList: [], taskList: [],
judgeContent: "", judgeContent: "",
selfJudgeContent: "",
score: "", score: "",
activeName: "first", activeName: "first",
manageUserName: "", manageUserName: "",
examineTask: {},
examineRemark: {}
}; };
}, },
methods: { methods: {
@ -389,16 +300,24 @@ export default {
examineId: this.examineId, examineId: this.examineId,
}; };
taskApi.getTaskScoreDetail(param).then((res) => { taskApi.getTaskScoreDetail(param).then((res) => {
this.examineRemark = res.data.remark
let objData = {}; let objData = {};
res.data.examineConfigDetailVoList.forEach((ele) => { res.data.examineConfigDetailVoList.forEach((ele) => {
if (!objData[ele.reviewCategory]) objData[ele.reviewCategory] = []; if (!objData[ele.reviewCategory]) objData[ele.reviewCategory] = [];
objData[ele.reviewCategory].push(ele); objData[ele.reviewCategory].push(ele);
}); });
if (type == 0) this.tableData1 = Object.values(objData); if (type == 0) this.tableData1 = Object.values(objData);
else this.tableData2 = Object.values(objData); else this.tableData2 = Object.values(objData).map((ele, index) => {
ele[0].remarkCate = this.examineRemark[index]?.remark
return ele
});;
this.judgeContent = res.data.examineUser.judgeContent; this.judgeContent = res.data.examineUser.judgeContent;
this.selfJudgeContent = res.data.examineUser.judgeContent;
this.manageUserName = res.data.examineUser.manageUserName; this.manageUserName = res.data.examineUser.manageUserName;
this.examineTask = res.data.examineTask
if (res.data.examineUser.score) { if (res.data.examineUser.score) {
this.score = res.data.examineUser.score; this.score = res.data.examineUser.score;
} else if (res.data.examineUser.manageScore) { } else if (res.data.examineUser.manageScore) {
@ -419,9 +338,11 @@ export default {
.conetentBox { .conetentBox {
padding: 40px 30px 30px; padding: 40px 30px 30px;
background-color: #fff; background-color: #fff;
height: 90vh; /* 设置整体高度 */ height: 90vh;
/* 设置整体高度 */
overflow: auto; overflow: auto;
} }
.el-table { .el-table {
margin-top: 20px; margin-top: 20px;
} }
@ -431,31 +352,37 @@ export default {
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
} }
::v-deep .el-slider__runway { ::v-deep .el-slider__runway {
height: 14px; height: 14px;
border-radius: 10px; border-radius: 10px;
margin: 10px !important; margin: 10px !important;
/* width: 95%; */ /* width: 95%; */
} }
::v-deep .el-slider__runway.disabled .el-slider__bar { ::v-deep .el-slider__runway.disabled .el-slider__bar {
height: 14px; height: 14px;
border-radius: 10px; border-radius: 10px;
background-color: #ff5722; background-color: #ff5722;
} }
::v-deep .el-slider__stop { ::v-deep .el-slider__stop {
height: 14px; height: 14px;
border-radius: 0; border-radius: 0;
z-index: 1000; z-index: 1000;
} }
::v-deep .el-slider__bar { ::v-deep .el-slider__bar {
height: 14px; height: 14px;
border-radius: 10px; border-radius: 10px;
background: linear-gradient(to right, #ffb144, #ff7d00); background: linear-gradient(to right, #ffb144, #ff7d00);
} }
::v-deep .el-slider__button { ::v-deep .el-slider__button {
display: none; display: none;
} }
.scoreText { .scoreText {
color: #fff; color: #fff;
position: absolute; position: absolute;
@ -464,6 +391,7 @@ export default {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
} }
::v-deep .el-table th { ::v-deep .el-table th {
text-align: left; text-align: left;
font-size: 14px; font-size: 14px;
@ -475,6 +403,7 @@ export default {
font-size: 14px; font-size: 14px;
font-weight: bold; font-weight: bold;
} }
.statusText { .statusText {
color: #ff7d00; color: #ff7d00;
position: absolute; position: absolute;
@ -483,43 +412,52 @@ export default {
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
} }
.hasEdit { .hasEdit {
color: #999999; color: #999999;
} }
::v-deep .el-dialog { ::v-deep .el-dialog {
margin-top: 15% !important; margin-top: 15% !important;
} }
.tableBox { .tableBox {
height: 75%; height: 75%;
overflow: auto; overflow: auto;
padding: 20px; padding: 20px;
background-color: #fff; background-color: #fff;
} }
.tableBox ::v-deep .el-table { .tableBox ::v-deep .el-table {
border-left: 1px solid #eeeeee; border-left: 1px solid #eeeeee;
border-right: 1px solid #eeeeee; border-right: 1px solid #eeeeee;
} }
.tableRow { .tableRow {
padding: 20px; padding: 20px;
box-shadow: 0 0 20px #0000000f; box-shadow: 0 0 20px #0000000f;
} }
.titleBox { .titleBox {
font-size: 20px; font-size: 20px;
font-weight: bold; font-weight: bold;
margin-bottom: 40px; margin-bottom: 40px;
} }
.headerBox { .headerBox {
padding: 20px; padding: 20px;
background-color: #f9f9f9; background-color: #f9f9f9;
border-radius: 2px; border-radius: 2px;
font-size: 16px; font-size: 16px;
} }
.block { .block {
width: 4px; width: 4px;
height: 24px; height: 24px;
background-color: #4096ff; background-color: #4096ff;
margin-right: 10px; margin-right: 10px;
} }
.stepBox { .stepBox {
position: absolute; position: absolute;
top: 33px; top: 33px;
@ -528,6 +466,7 @@ export default {
background-color: #fff; background-color: #fff;
z-index: 100; z-index: 100;
} }
.totalBox { .totalBox {
width: 180px; width: 180px;
display: flex; display: flex;
@ -535,28 +474,35 @@ export default {
font-size: 16px; font-size: 16px;
color: #333333; color: #333333;
} }
.scoreTotal { .scoreTotal {
font-size: 28px; font-size: 28px;
font-weight: 700; font-weight: 700;
color: #ff7d00; color: #ff7d00;
} }
::v-deep .sorceTableCell .cell { ::v-deep .sorceTableCell .cell {
margin-bottom: 20px; margin-bottom: 20px;
} }
::v-deep .el-table__body .el-table__cell { ::v-deep .el-table__body .el-table__cell {
padding: 20px 40px; padding: 20px 40px;
} }
::v-deep .el-table__header .el-table__cell { ::v-deep .el-table__header .el-table__cell {
padding: 14px 30px; padding: 14px 30px;
} }
::v-deep .el-tabs__item.is-active { ::v-deep .el-tabs__item.is-active {
color: #4096ff; color: #4096ff;
} }
::v-deep .el-tabs__item { ::v-deep .el-tabs__item {
font-size: 18px; font-size: 18px;
font-weight: bold; font-weight: bold;
color: #999999; color: #999999;
} }
::v-deep .el-tabs__active-bar { ::v-deep .el-tabs__active-bar {
height: 3px; height: 3px;
width: 32px !important; width: 32px !important;

View File

@ -29,7 +29,7 @@
</el-table-column> </el-table-column>
<el-table-column class-name="editCell" label="员工自评" prop="score" <el-table-column class-name="editCell" label="员工自评" prop="score"
v-if="!isNormal && examineTask.templateId && table[0].reviewCategory == '发展与协作' && examineTask.templateType != 0" v-if="!isNormal && examineTask.templateId && table[0].reviewCategory == '发展与协作' && examineTask.templateType != 0"
min-width="220"> min-width="320">
<template slot-scope="scope"> <template slot-scope="scope">
<div> <div>
<el-input type="textarea" :autosize="{ minRows: 4 }" placeholder="0/300" v-model="scope.row.remark" <el-input type="textarea" :autosize="{ minRows: 4 }" placeholder="0/300" v-model="scope.row.remark"
@ -39,7 +39,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="评分" prop="score" <el-table-column label="评分" prop="score"
:minWidth="isNormal ? 320 : table[0].reviewCategory == '发展与协作' ? 220 : 420" class-name="sorceTableCell" :minWidth="400" class-name="sorceTableCell"
v-if="(isNormal && table[0].reviewCategory != '发展与协作') || !isNormal"> v-if="(isNormal && table[0].reviewCategory != '发展与协作') || !isNormal">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="width: 88%; position: relative"> <div style="width: 88%; position: relative">
@ -121,6 +121,7 @@
</el-input> </el-input>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@ -134,7 +135,7 @@
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="cancelEdit">{{ <el-button @click="cancelEdit">{{
isEdit ? "取 消" : "关闭" isEdit ? "取 消" : "关闭"
}}</el-button> }}</el-button>
<el-button type="primary" @click="saveEdit" v-if="isEdit"> </el-button> <el-button type="primary" @click="saveEdit" v-if="isEdit"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
@ -159,7 +160,8 @@ export default {
{ {
label: "评分标准", label: "评分标准",
prop: "remarks", prop: "remarks",
minWidth: this.$route.query.isNormal ? 240 : 360, minWidth:300
// width: '25%',
}, },
], ],
// //
@ -183,6 +185,7 @@ export default {
}, },
examineUser: {}, examineUser: {},
examineTask: {}, examineTask: {},
examineRemark: {},
}; };
}, },
methods: { methods: {
@ -206,20 +209,27 @@ export default {
param.examineId = this.examineId; param.examineId = this.examineId;
taskApi.getTaskScoreDetail(param).then((res) => { taskApi.getTaskScoreDetail(param).then((res) => {
let objData = {}; let objData = {};
res.data.examineConfigDetailVoList.forEach((ele) => { this.examineRemark = res.data.remark;
res.data.examineConfigDetailVoList.forEach((ele, index) => {
if (!objData[ele.reviewCategory]) objData[ele.reviewCategory] = []; if (!objData[ele.reviewCategory]) objData[ele.reviewCategory] = [];
objData[ele.reviewCategory].push(ele); objData[ele.reviewCategory].push(ele);
}); });
this.tableData = Object.values(objData);
this.tableData = Object.values(objData).map((ele, index) => {
ele[0].remarkCate = this.examineRemark[index]?.remark
return ele
});
if (!this.examineId) { if (!this.examineId) {
} else { } else {
this.saveData.judgeContent = res.data.examineUser.judgeContent || ""; this.saveData.judgeContent = res.data.examineUser.judgeContent || "";
this.saveData.manageScore = res.data.examineUser.manageScore || ""; this.saveData.manageScore = res.data.examineUser.manageScore || "";
} }
this.examineId = res.data.examineUser.id; this.examineId = res.data.examineUser.id;
this.examineTask = res.data.examineTask; this.examineTask = res.data.examineTask;
this.examineUser = res.data.examineUser; this.examineUser = res.data.examineUser;
if (this.examineTask.templateType == 0) {
this.saveData.judgeContent = res.data.examineUser.selfJudgeContent
}
if ( if (
res.data.examineUser.examineStatusSelf == 1 && res.data.examineUser.examineStatusSelf == 1 &&
res.data.examineUser.examineStatus == 1 res.data.examineUser.examineStatus == 1
@ -258,7 +268,11 @@ export default {
remark: ele.remark, remark: ele.remark,
reviewCategory: ele.reviewCategory, reviewCategory: ele.reviewCategory,
})); }));
this.saveData.examineRemarkList = this.tableData.filter((ele)=>ele[0].reviewCategory!='发展与协作').map((ele) => ({ reviewCategory: ele[0].reviewCategory, remark: ele[0].remarkCate })) if (this.examineTask.templateType != 0 && this.isNormal) {
this.saveData.examineRemarkList = this.tableData.filter((ele) => ele[0].reviewCategory != '发展与协作').map((ele) => ({ reviewCategory: ele[0].reviewCategory, remark: ele[0].remarkCate }))
} else {
this.saveData.examineRemarkList = []
}
this.saveData.taskId = this.examineTaskId; this.saveData.taskId = this.examineTaskId;
this.saveData.examineId = this.examineId; this.saveData.examineId = this.examineId;
@ -269,6 +283,10 @@ export default {
// //
if (status == 0) { if (status == 0) {
if (this.isNormal && this.examineTask.templateType == 0) {
this.saveData.selfJudgeContent = this.saveData.judgeContent
this.saveData.judgeContent = ''
}
this.saveScore(); this.saveScore();
return; return;
} }
@ -287,6 +305,15 @@ export default {
confirmButtonText: "确定", confirmButtonText: "确定",
type: "warning", type: "warning",
}); });
} else if (
this.saveData.examineDetailList.filter((ele) => ele.remark.length < 100 && ele.reviewCategory == '发展与协作').length &&
this.isNormal &&
status
) {
this.$alert("发展与协作下的自评总结最少100个字符请完善后再试", "提交失败", {
confirmButtonText: "确定",
type: "warning",
});
} else if (this.saveData.judgeContent.length > 300 && !this.isNormal && this.examineTask.templateType == '0') { } else if (this.saveData.judgeContent.length > 300 && !this.isNormal && this.examineTask.templateType == '0') {
this.$message({ this.$message({
message: "总体评价限制300个字符", message: "总体评价限制300个字符",
@ -297,11 +324,21 @@ export default {
message: "总体评价为必填", message: "总体评价为必填",
type: "warning", type: "warning",
}); });
} else if (this.saveData.examineRemarkList.filter((ele) => !ele.remark).length && this.isNormal) { } else if (!this.saveData.judgeContent.length && this.isNormal && this.examineTask.templateType == 0) {
this.$message({
message: "个人总体评价为必填",
type: "warning",
});
} else if (this.saveData.examineRemarkList.filter((ele) => !ele.remark).length && this.isNormal && this.examineTask.templateType != 0 && this.isNormal) {
this.$message({ this.$message({
message: "存在未填写大类评价,请完善后再试", message: "存在未填写大类评价,请完善后再试",
type: "warning", type: "warning",
}); });
} else if (this.saveData.examineRemarkList.filter((ele) => ele.remark.length < 100).length && this.isNormal && this.examineTask.templateType != 0 && this.isNormal) {
this.$message({
message: "大类评价最少100个字符请完善后再试",
type: "warning",
});
} else { } else {
if (status) { if (status) {
this.$confirm( this.$confirm(
@ -313,9 +350,17 @@ export default {
type: "warning", type: "warning",
} }
).then(() => { ).then(() => {
if (this.isNormal && this.examineTask.templateType == 0) {
this.saveData.selfJudgeContent = this.saveData.judgeContent
this.saveData.judgeContent = ''
}
this.saveScore(); this.saveScore();
}); });
} else { } else {
if (this.isNormal && this.examineTask.templateType == 0) {
this.saveData.selfJudgeContent = this.saveData.judgeContent
this.saveData.judgeContent = ''
}
this.saveScore(); this.saveScore();
} }
} }
@ -497,14 +542,16 @@ export default {
::v-deep .el-table__body .sorceTableCell .cell { ::v-deep .el-table__body .sorceTableCell .cell {
margin-bottom: 20px; margin-bottom: 20px;
padding-right: 30px;
} }
::v-deep .sorceTableCell.el-table__cell { ::v-deep .sorceTableCell.el-table__cell {
padding-right: 10px !important; padding-left: 10% !important;
/* padding-right: 10px !important; */
} }
::v-deep .el-table__body .el-table__cell { ::v-deep .el-table__body .el-table__cell {
padding: 20px 40px; padding: 20px 30px;
} }
::v-deep .el-table__header .el-table__cell { ::v-deep .el-table__header .el-table__cell {

View File

@ -9,10 +9,10 @@
</div> </div>
<div>看板类型</div> <div>看板类型</div>
<el-select v-model="moduleType" placeholder="看板类型" clearable style="width: 200px" readonly> <el-select v-model="moduleType" placeholder="看板类型" clearable style="width: 200px" readonly disabled>
<el-option label="年度考核" value="0" /> <el-option label="年度考核" value="0" />
<el-option label="季度考核" value="1" /> <el-option label="季度考核" value="1" />
<el-option label="年考核" value="2" /> <el-option label="年考核" value="2" />
</el-select> </el-select>
</div> </div>

View File

@ -14,7 +14,7 @@
<el-select v-model="searchForm.templateType" placeholder="状态" clearable style="width: 300px"> <el-select v-model="searchForm.templateType" placeholder="状态" clearable style="width: 300px">
<el-option label="年度考核" value="0" /> <el-option label="年度考核" value="0" />
<el-option label="季度考核" value="1" /> <el-option label="季度考核" value="1" />
<el-option label="年考核" value="2" /> <el-option label="年考核" value="2" />
</el-select> </el-select>
</el-form-item> </el-form-item>

View File

@ -50,20 +50,6 @@
@click.native="openUserSelectDialog"><el-button slot="append" @click.native="openUserSelectDialog"><el-button slot="append"
icon="el-icon-s-custom"></el-button></el-input> icon="el-icon-s-custom"></el-button></el-input>
</el-form-item> </el-form-item>
<el-form-item label="截止时间" class="form-item" prop="endTime">
<el-date-picker v-model="taskData.endTime" type="date" style="width: 90%" placeholder="选择日期"
value-format="yyyy-MM-dd 23:59:59" :picker-options="{
disabledDate: disabledDate,
}">
</el-date-picker>
</el-form-item>
<el-form-item label="年份" class="form-item" prop="year">
<el-date-picker v-model="taskData.year" type="year" style="width: 90%" placeholder="选择年份"
value-format="yyyy" :picker-options="{
disabledDate: disabledDate,
}">
</el-date-picker>
</el-form-item>
<el-form-item label="考核模板" class="form-item" prop="templateId"> <el-form-item label="考核模板" class="form-item" prop="templateId">
<div> <div>
<el-radio-group v-model="taskData.templateType" @change="() => { <el-radio-group v-model="taskData.templateType" @change="() => {
@ -81,6 +67,21 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="截止时间" class="form-item" prop="endTime">
<el-date-picker v-model="taskData.endTime" type="date" style="width: 90%" placeholder="选择日期"
value-format="yyyy-MM-dd 23:59:59" :picker-options="{
disabledDate: disabledDate,
}">
</el-date-picker>
</el-form-item>
<el-form-item label="年份" class="form-item" prop="year">
<el-date-picker v-model="taskData.year" type="year" style="width: 90%" placeholder="选择年份"
value-format="yyyy" :picker-options="{
disabledDate: disabledDate,
}">
</el-date-picker>
</el-form-item>
</el-form> </el-form>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
@ -91,7 +92,10 @@
<el-dialog title="配置指标和权重" :visible.sync="dialogVisible2"> <el-dialog title="配置指标和权重" :visible.sync="dialogVisible2">
<div class="modal"> <div class="modal">
<div class="left"> <div class="left">
<div class="setText" style="font-weight: 600">累计权重</div> <div class="setText flex-row jcsb" style="font-weight: 600">
<div>评估维度</div>
<div>累计权重</div>
</div>
<el-collapse v-model="letfValue" :accordion="true" style="height: 300px; overflow: auto"> <el-collapse v-model="letfValue" :accordion="true" style="height: 300px; overflow: auto">
<el-collapse-item v-for="(item, index) in scoreList" :key="index" :name="item.title"> <el-collapse-item v-for="(item, index) in scoreList" :key="index" :name="item.title">
<template #title> <template #title>
@ -120,9 +124,9 @@
</div> </div>
</div> </div>
<div class="right"> <div class="right">
<div class="flex-row jcsb" style="margin-bottom: 10px"> <div class="flex-row jcsb setText" style="margin-bottom: 20px">
<div style="width: 50%; font-weight: 600">指标</div> <div style="width: 50%; font-weight: 600;text-align: left;">指标</div>
<div class="center" style="width: 50%; font-weight: 600"> <div class="center" style="width: 50%; font-weight: 600;text-align: left;padding-left: 5px;">
权重占比 权重占比
</div> </div>
</div> </div>
@ -133,7 +137,7 @@
.list || [] .list || []
).find((ele) => ele.title + ele.type == selectLeftRow) || {} ).find((ele) => ele.title + ele.type == selectLeftRow) || {}
).rightArr || []" :key="index" style="margin-bottom: 10px" class="flex-row jcsb aic"> ).rightArr || []" :key="index" style="margin-bottom: 10px" class="flex-row jcsb aic">
<div style="width: 50%; font-weight: 600"> <div style="width: 50%; font-weight: 600;color: #333;">
{{ item.reviewItem }} {{ item.reviewItem }}
</div> </div>
<div class="center" style="width: 50%"> <div class="center" style="width: 50%">
@ -145,8 +149,8 @@
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
"> ">
<div>0</div> <div style="font-weight: 500;">0</div>
<div v-show="item.weight != 20">20</div> <div v-show="item.weight != 20" style="font-weight: 500;">20</div>
</div> </div>
<div class="scoreText aic" v-show="item.weight != 0" :style="{ <div class="scoreText aic" v-show="item.weight != 0" :style="{
left: item.weight * 4.5 - 2.5 + '%', left: item.weight * 4.5 - 2.5 + '%',
@ -160,10 +164,10 @@
}" alt="" /> }" alt="" />
<div :style="{ <div :style="{
zIndex: 10, zIndex: 10,
textIndent: item.weight < 10 ? '13px' : '10px', textIndent: item.weight < 10 ? '7px' : '5px',
fontSize: '12px', fontSize: '12px',
}"> }">
{{ item.weight }} {{ item.weight }}%
</div> </div>
</div> </div>
<!-- <div class="flex-row jcsb scoreBox" style="margin-left: 15px"> <!-- <div class="flex-row jcsb scoreBox" style="margin-left: 15px">
@ -270,8 +274,8 @@ export default {
userIdList: [], userIdList: [],
endTime: "", endTime: "",
peopleNumber: 0, peopleNumber: 0,
templateType:'0', templateType: '0',
templateId:'', templateId: '',
year: "", year: "",
taskStatus: 0 taskStatus: 0
}, },
@ -710,21 +714,28 @@ export default {
.modal { .modal {
display: flex; display: flex;
border-bottom: 1px solid #ccc; border-bottom: 1px solid #E6E6E6;
border-top: 1px solid #ccc; // border-top: 1px solid #E6E6E6;
} }
.left { .left {
width: 40%; width: 40%;
padding: 20px; padding:0;
border-right: 1px solid #ccc; // border-right: 1px solid #E6E6E6;
height: 450px; height: 450px;
overflow: auto; overflow: auto;
box-shadow: 5px 0 20px 5px #eeeeee;
z-index: 100;
>div{
padding-left: 20px;
padding-right: 20px;
}
} }
.right { .right {
width: 60%; width: 60%;
padding: 20px 40px; // padding: 0 40px;
height: 450px; height: 450px;
overflow: auto; overflow: auto;
@ -732,6 +743,11 @@ export default {
text-align: center; text-align: center;
position: relative; position: relative;
} }
>div{
padding-left: 3cap;
padding-right: 30px;
}
} }
.scoreBox { .scoreBox {
@ -776,8 +792,9 @@ export default {
.setText { .setText {
margin-bottom: 20px; margin-bottom: 20px;
background-color: #FAFAFA;
text-align: right; text-align: right;
padding:15px 5px;
} }
.leftSub { .leftSub {
@ -845,7 +862,7 @@ export default {
top: 29px; top: 29px;
height: 14px; height: 14px;
width: 2px; width: 2px;
background-color: #fff; background-color: transparent;
z-index: 100; z-index: 100;
} }

View File

@ -22,22 +22,13 @@
<template #default="scope"> <template #default="scope">
<div> <div>
<div v-if="scope.row.edit"> <div v-if="scope.row.edit">
<el-select <el-select v-model="scope.row.projectId" placeholder="时间匹配的项目" class="filter-select" @change="
v-model="scope.row.projectId" (val) => {
placeholder="时间匹配的项目" getVersionList(val, scope.row);
class="filter-select" }
@change=" ">
(val) => { <el-option v-for="item in projectListFilter" :key="item.projectId" :label="item.projectName"
getVersionList(val, scope.row); :value="item.projectId" />
}
"
>
<el-option
v-for="item in projectListFilter"
:key="item.projectId"
:label="item.projectName"
:value="item.projectId"
/>
</el-select> </el-select>
</div> </div>
<div v-show="!scope.row.edit">{{ scope.row.projectName }}</div> <div v-show="!scope.row.edit">{{ scope.row.projectName }}</div>
@ -48,23 +39,14 @@
<template #default="scope"> <template #default="scope">
<div> <div>
<div v-if="scope.row.edit"> <div v-if="scope.row.edit">
<el-select <el-select v-model="scope.row.versionId" placeholder="含有可选需求的版本" class="filter-select"
v-model="scope.row.versionId" ref="versionSelectRef" @change="
placeholder="含有可选需求的版本"
class="filter-select"
ref="versionSelectRef"
@change="
(val) => { (val) => {
getDemandList(val, scope.row); getDemandList(val, scope.row);
} }
" ">
> <el-option v-for="item in versionList.filter((ele) => ele.type == 0)" :key="item.id" :label="item.title"
<el-option :value="item.id" />
v-for="item in versionList.filter((ele) => ele.type == 0)"
:key="item.id"
:label="item.title"
:value="item.id"
/>
</el-select> </el-select>
</div> </div>
<div v-show="!scope.row.edit">{{ scope.row.versionNumber }}</div> <div v-show="!scope.row.edit">{{ scope.row.versionNumber }}</div>
@ -75,19 +57,9 @@
<template #default="scope"> <template #default="scope">
<div> <div>
<div v-if="scope.row.edit"> <div v-if="scope.row.edit">
<el-select <el-select v-model="scope.row.demandId" placeholder="时间匹配且非已结束的需求" class="filter-select"
v-model="scope.row.demandId" @change="openContent(scope.row)" ref="demandSelectRef">
placeholder="时间匹配且非已结束的需求" <el-option v-for="item in demandList" :key="item.id" :label="item.title" :value="item.id" />
class="filter-select"
@change="openContent(scope.row)"
ref="demandSelectRef"
>
<el-option
v-for="item in demandList"
:key="item.id"
:label="item.title"
:value="item.id"
/>
</el-select> </el-select>
</div> </div>
<div v-show="!scope.row.edit">{{ scope.row.title }}</div> <div v-show="!scope.row.edit">{{ scope.row.title }}</div>
@ -97,38 +69,20 @@
<el-table-column label="工作内容" prop="workContent"> <el-table-column label="工作内容" prop="workContent">
<template #default="scope"> <template #default="scope">
<div @click="openContent(scope.row)"> <div @click="openContent(scope.row)">
<el-popover <el-popover placement="bottom" width="400" trigger="click" v-model="scope.row.showContent"
placement="bottom" :key="scope.row.loggerId">
width="400" <el-input type="textarea" :rows="5" placeholder="请输入内容" v-model="scope.row.workContent"
trigger="click" :disabled="!scope.row.edit">
v-model="scope.row.showContent"
:key="scope.row.loggerId"
>
<el-input
type="textarea"
:rows="5"
placeholder="请输入内容"
v-model="scope.row.workContent"
:disabled="!scope.row.edit"
>
</el-input> </el-input>
<div <div style="margin-top: 10px; text-align: right" v-show="!disableTable && scope.row.edit">
style="margin-top: 10px; text-align: right" <el-button type="primary" @click="saveContent(scope.row, 1)">确认</el-button>
v-show="!disableTable && scope.row.edit"
>
<el-button type="primary" @click="saveContent(scope.row, 1)"
>确认</el-button
>
<el-button @click="saveContent(scope.row, 0)">取消</el-button> <el-button @click="saveContent(scope.row, 0)">取消</el-button>
</div> </div>
<div slot="reference"> <div slot="reference">
<div <div style="cursor: pointer" :class="{
style="cursor: pointer" contentText: true,
:class="{ noneText: !scope.row.workContent,
contentText: true, }">
noneText: !scope.row.workContent,
}"
>
{{ scope.row.workContent || "请输入" }} {{ scope.row.workContent || "请输入" }}
</div> </div>
</div> </div>
@ -141,19 +95,8 @@
<template #default="scope"> <template #default="scope">
<div> <div>
<div v-if="scope.row.edit"> <div v-if="scope.row.edit">
<el-select <el-select v-model="scope.row.workTime" placeholder="请选择工时" class="filter-select" filterable allow-create>
v-model="scope.row.workTime" <el-option v-for="item in workTimeList" :key="item" :label="item" :value="item" />
placeholder="请选择工时"
class="filter-select"
filterable
allow-create
>
<el-option
v-for="item in workTimeList"
:key="item"
:label="item"
:value="item"
/>
</el-select> </el-select>
</div> </div>
<div v-show="!scope.row.edit">{{ scope.row.workTime }}</div> <div v-show="!scope.row.edit">{{ scope.row.workTime }}</div>
@ -166,102 +109,80 @@
<el-button type="text" @click="handleFile(scope.row)"> <el-button type="text" @click="handleFile(scope.row)">
附件详情 附件详情
</el-button> </el-button>
<el-button type="text" @click="handleEdit(scope.row)" v-show="!disableTable"> <el-button type="text" @click="handleEdit(scope.row)" v-show="!disableTable">
{{ scope.row.loggerId && !scope.row.edit ? "编辑" : "确认" }} {{ scope.row.loggerId && !scope.row.edit ? "编辑" : "确认" }}
</el-button> </el-button>
<el-button <el-button type="text" @click="handleDelete(scope.row, scope.$index)" style="color: #666"
type="text" v-show="!disableTable">
@click="handleDelete(scope.row, scope.$index)"
style="color: #666"
v-show="!disableTable"
>
{{ scope.row.loggerId && !scope.row.edit ? "删除" : "取消" }} {{ scope.row.loggerId && !scope.row.edit ? "删除" : "取消" }}
</el-button> </el-button>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-dialog <el-dialog title="附件" :visible.sync="dialogVisibleFile" width="780px" :close-on-click-modal="false">
title="附件"
:visible.sync="dialogVisibleFile"
width="780px"
:close-on-click-modal="false"
>
<div v-loading="fileLoading"> <div v-loading="fileLoading">
<div v-show="!disableTable"> <div v-show="!disableTable">
<el-upload <el-upload class="upload-demo" ref="upload" :action="fileUpload" :show-file-list="false" :auto-upload="true"
class="upload-demo" :multiple="true" :before-upload="beforeUpload" :on-success="successUpload" :headers="{
ref="upload"
:action="fileUpload"
:show-file-list="false"
:auto-upload="true"
:multiple="true"
:before-upload="beforeUpload"
:on-success="successUpload"
:headers="{
Authorization: 'Bearer ' + token, Authorization: 'Bearer ' + token,
}" }" :data="{}">
:data="{}"
>
<div class="flex-row aic" style="gap: 10px; margin-bottom: 10px"> <div class="flex-row aic" style="gap: 10px; margin-bottom: 10px">
<el-button <el-button slot="trigger" size="small" type="default"
slot="trigger" style="width: 80px; color: #333; font-weight: 500">上传附件</el-button>
size="small"
type="default"
style="width: 80px; color: #333; font-weight: 500"
>上传附件</el-button
>
<div slot="tip" style="color: #999999; font-size: 12px"> <div slot="tip" style="color: #999999; font-size: 12px">
单个附件限制100M 单个附件限制100M
</div> </div>
</div> </div>
</el-upload> </el-upload>
</div> </div>
<el-table :data="fileList" style="width: 100%" class="tableBox"> <div style="height: 500px;overflow: auto;">
<el-table-column label="名称" prop="fileNewName"> <el-table :data="fileList" style="width: 100%;height: 100%;" class="tableBox">
<template #default="scope"> <el-table-column label="名称" prop="fileNewName">
<div class="flex-row aic fileBox" style="gap: 10px;"> <template #default="scope">
<img class="" :src="filePng" v-if="getFileType(scope.row.fileNewName)=='file'"> </img> <div class="flex-row aic fileBox" style="gap: 10px;">
<img class="" :src="imagePng" v-else-if="getFileType(scope.row.fileNewName)=='image'"> </img> <img class="" :src="filePng" v-if="getFileType(scope.row.fileNewName) == 'file'"> </img>
<img class="" :src="zipPng" v-else-if="getFileType(scope.row.fileNewName)=='zip'"> </img> <img class="" :src="imagePng" v-else-if="getFileType(scope.row.fileNewName) == 'image'"> </img>
<div class="downFileBox" @click="downFile(scope.row.fileUrl)"> <img class="" :src="zipPng" v-else-if="getFileType(scope.row.fileNewName) == 'zip'"> </img>
{{ scope.row.fileNewName }} <div class="downFileBox" @click="downFile(scope.row.fileUrl)">
{{ scope.row.fileNewName }}
</div>
</div> </div>
</div> </template>
</template> </el-table-column>
</el-table-column> <el-table-column label="类型" prop="fileName">
<el-table-column label="类型" prop="fileName"> <template #default="scope">
<template #default="scope"> <div>
<div> {{ scope.row.fileNewName.split(".")[1] }}
{{ scope.row.fileNewName.split(".")[1] }} </div>
</div> </template>
</template> </el-table-column>
</el-table-column> <el-table-column label="上传时间" prop="createTime">
<el-table-column label="上传时间" prop="createTime"> <template #default="scope">
<template #default="scope"> <div>
<div> {{
{{ scope.row.createTime || moment().format("YYYY-MM-DD HH:mm:ss")
scope.row.createTime || moment().format("YYYY-MM-DD HH:mm:ss") }}
}} </div>
</div> </template>
</template> </el-table-column>
</el-table-column> <el-table-column label="操作" width="120">
<el-table-column label="操作" width="120"> <template #default="scope">
<template #default="scope"> <div>
<div> <el-button type="text" @click="delFile(scope.row)" v-show="!disableTable">
<el-button type="text" @click="delFile(scope.row)" v-show="!disableTable"> 删除
删除 </el-button>
</el-button> </div>
</div> </template>
</template> </el-table-column>
</el-table-column> </el-table>
</el-table>
<div slot="footer" class="dialog-footer">
<el-button @click="cancalFile"></el-button>
<el-button type="primary" @click="saveFile"></el-button>
</div> </div>
</div> </div>
<div slot="footer" class="dialog-footer" v-show="!disableTable">
<el-button @click="cancalFile"></el-button>
<el-button type="primary" @click="saveFile"></el-button>
</div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
@ -305,7 +226,7 @@ export default {
filePng, filePng,
zipPng, zipPng,
imagePng, imagePng,
delFileArr:[] delFileArr: []
}; };
}, },
methods: { methods: {
@ -330,7 +251,7 @@ export default {
ele.showContent = false; ele.showContent = false;
return ele; return ele;
}); });
if (this.tableData.length == 0&&!this.disableTable) { if (this.tableData.length == 0 && !this.disableTable) {
this.handleAdd(); this.handleAdd();
} }
}); });
@ -352,7 +273,7 @@ export default {
this.$emit("changeCaleder"); this.$emit("changeCaleder");
}); });
}) })
.catch(() => {}); .catch(() => { });
} else if (!row.loggerId) { } else if (!row.loggerId) {
this.tableData = this.tableData.filter((ele, ind) => index != ind); this.tableData = this.tableData.filter((ele, ind) => index != ind);
} else { } else {
@ -408,10 +329,10 @@ export default {
await workLogApi.addLog(param); await workLogApi.addLog(param);
this.$emit("changeCaleder"); this.$emit("changeCaleder");
} }
if(this.delFileArr.length){ if (this.delFileArr.length) {
systemApi.delFile({ids:this.delFileArr}).then((res) => { systemApi.delFile({ ids: this.delFileArr }).then((res) => {
this.fileList = [] this.fileList = []
this.delFileArr=[] this.delFileArr = []
}); });
} }
this.$modal.msgSuccess("操作成功"); this.$modal.msgSuccess("操作成功");
@ -465,27 +386,27 @@ export default {
this.dialogVisibleFile = false; this.dialogVisibleFile = false;
this.fileList = []; this.fileList = [];
}, },
async saveFile() { async saveFile() {
this.dialogVisibleFile = false; this.dialogVisibleFile = false;
this.checkRow.fileList = this.fileList; this.checkRow.fileList = this.fileList;
if(this.checkRow.loggerId){ if (this.checkRow.loggerId) {
await workLogApi.editLog(this.checkRow); await workLogApi.editLog(this.checkRow);
if(this.delFileArr.length){ if (this.delFileArr.length) {
systemApi.delFileBatch(this.delFileArr.join(',')).then((res) => { systemApi.delFileBatch(this.delFileArr.join(',')).then((res) => {
this.fileList = [] this.fileList = []
this.delFileArr=[] this.delFileArr = []
this.getLogList(); this.getLogList();
}); });
}else{ } else {
this.getLogList(); this.getLogList();
} }
} }
this.$message({ this.$message({
type: "success", type: "success",
message: "保存成功!", message: "保存成功!",
}); });
}, },
async getAllProject() { async getAllProject() {
const response = await projectApi.listProject({ const response = await projectApi.listProject({
@ -592,21 +513,21 @@ export default {
}).then(() => { }).then(() => {
this.delFileArr.push(row.id) this.delFileArr.push(row.id)
this.fileList = this.fileList.filter( this.fileList = this.fileList.filter(
(ele) => ele.fileNewName != row.fileNewName (ele) => ele.fileNewName != row.fileNewName
); );
this.$message({ this.$message({
type:'success', type: 'success',
message: "删除成功!" message: "删除成功!"
}) })
}); });
} else { } else {
this.fileList = this.fileList.filter( this.fileList = this.fileList.filter(
(ele) => ele.fileNewName != row.fileNewName (ele) => ele.fileNewName != row.fileNewName
); );
this.$message({ this.$message({
type:'success', type: 'success',
message: "删除成功!" message: "删除成功!"
}) })
} }
}, },
getFileType(name) { getFileType(name) {
@ -648,7 +569,7 @@ export default {
this.tableData = []; this.tableData = [];
} }
}, },
versionList(newVal) {}, versionList(newVal) { },
}, },
computed: { computed: {
projectListFilter() { projectListFilter() {
@ -683,45 +604,54 @@ export default {
background-color: #ffffff; background-color: #ffffff;
min-width: 200px; min-width: 200px;
} }
.topBox { .topBox {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-bottom: 20px; margin-bottom: 20px;
.topTitle { .topTitle {
font-size: 18px; font-size: 18px;
font-weight: 600; font-weight: 600;
margin-bottom: 5px; margin-bottom: 5px;
} }
.topText { .topText {
color: #999999; color: #999999;
font-weight: 600; font-weight: 600;
font-size: 16px; font-size: 16px;
span { span {
margin: 0 5px; margin: 0 5px;
color: #333; color: #333;
} }
} }
} }
.contentText { .contentText {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
word-break: break-all; word-break: break-all;
} }
.noneText { .noneText {
color: #999; color: #999;
} }
.downFileBox { .downFileBox {
color: #1686d8; color: #1686d8;
cursor: pointer; cursor: pointer;
} }
.fileBox{
img{ .fileBox {
img {
height: 18px; height: 18px;
} }
} }
.dialog-footer { .dialog-footer {
text-align: center; text-align: center;
margin-top: 20px; margin-top: 20px;