|
@@ -8,93 +8,103 @@
|
|
|
<el-button type="primary" size="mini" @click="btnSubmit" :loading="loading" v-if="this.$store.state.user.name == form.staff && (form.status == '0' || form.status == '3')">提交</el-button>
|
|
|
<CopyItemDialog style="margin: 0 10px" @setItems="setItems" v-if="this.$store.state.user.name == form.staff && form.status == '0'" :id="rowId"></CopyItemDialog>
|
|
|
<ApproveLogDialog style="margin: 0 10px" :pmId="form.id"></ApproveLogDialog>
|
|
|
+ <AdjustlogDialog style="margin: 0 10px" :pmId="form.id"></AdjustlogDialog>
|
|
|
<el-button size="mini" plain @click="btnPreviou" v-if="ids">上一个</el-button>
|
|
|
<el-button size="mini" plain @click="btnNext" v-if="ids">下一个</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div v-loading="loading">
|
|
|
- <el-descriptions :column="6 ">
|
|
|
- <el-descriptions-item label="员工编号">{{form.staff}}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="员工姓名">{{form.staffName}}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="入职日期">{{form.dateJoin}}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="转正日期">{{form.probationComplete}}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="部门">{{form.deptName}}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="职位">{{form.jobName}}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="评估周期">{{form.name}}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="评估人">{{form.evaluatorName}}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="所属分组">
|
|
|
- <div v-for="dict in dict.type.ehr_pm_group" v-if="form.staffDivide == dict.value">
|
|
|
- <div>{{ dict.label }}</div>
|
|
|
- </div>
|
|
|
- </el-descriptions-item>
|
|
|
- </el-descriptions>
|
|
|
- <el-descriptions :column="6 ">
|
|
|
- <el-descriptions-item label="自评分" v-if="form.status > 3">{{form.saMark}}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="上级评分" v-if="form.status > 4">{{form.ldMark}}</el-descriptions-item>
|
|
|
- </el-descriptions>
|
|
|
- <el-descriptions v-if="form.status > 3">
|
|
|
- <el-descriptions-item label="个人总结">{{form.summary}}</el-descriptions-item>
|
|
|
- </el-descriptions>
|
|
|
- <div v-if="this.$store.state.user.name == form.staff && form.status == '3'">
|
|
|
- 个人总结*<el-input type="textarea" placeholder="总结本月工作的亮点和暗点" v-model="form.summary"></el-input>
|
|
|
- </div>
|
|
|
- <el-descriptions v-if="form.status > 4">
|
|
|
- <el-descriptions-item label="评语">{{form.comment}}</el-descriptions-item>
|
|
|
- </el-descriptions>
|
|
|
- <div style="float:right">
|
|
|
- <el-button type="primary" size="mini" @click="btnAddRow" v-if="this.$store.state.user.name == form.staff && form.status == '0'">增加指标</el-button>
|
|
|
- <!-- <el-button size="mini" @click="btnUnfold">{{isUnfold == true ? "收起" : "展开"}}</el-button> -->
|
|
|
- </div>
|
|
|
- <el-table size="mini" :data="form.performanceItem" show-summary :summary-method="getSummaries" border>
|
|
|
- <el-table-column type="index" width="50" label="序号"/>
|
|
|
- <el-table-column width="100" :show-overflow-tooltip="!isUnfold" label="评估方面" align="center" prop="aspect">
|
|
|
- <template slot-scope="scope">
|
|
|
- <dict-tag :options="dict.type.ehr_pm_aspect" :value="scope.row.aspect"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column width="100" :show-overflow-tooltip="!isUnfold" label="评估指标" align="center" prop="target" />
|
|
|
- <el-table-column width="80" label="权重(%)" align="center" prop="weight"/>
|
|
|
- <el-table-column :show-overflow-tooltip="!isUnfold" label="指标说明" align="center" prop="instructions">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div style="white-space: pre-wrap;text-align: left">{{scope.row.instructions}}</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <!-- <el-table-column width="100" label="角色" align="center" prop="role">
|
|
|
- <template slot-scope="scope">
|
|
|
- <dict-tag :options="dict.type.ehr_pm_role" :value="scope.row.role"/>
|
|
|
- </template>
|
|
|
- </el-table-column> -->
|
|
|
- <el-table-column :show-overflow-tooltip="!isUnfold" label="评分标准" align="center" prop="standard">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div style="white-space: pre-wrap;text-align: left">{{scope.row.standard}}</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column width="100" label="数据来源" align="center" prop="source" />
|
|
|
+ <el-form size="mini" ref="dataForm" :model="form" :rules="rules">
|
|
|
+ <el-descriptions :column="6 ">
|
|
|
+ <el-descriptions-item label="员工编号">{{form.staff}}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="员工姓名">{{form.staffName}}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="入职日期">{{form.dateJoin}}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="转正日期">{{form.probationComplete}}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="部门">{{form.deptName}}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="职位">{{form.jobName}}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="评估周期">{{form.name}}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="评估人">{{form.evaluatorName}}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="所属分组">
|
|
|
+ <div v-for="dict in dict.type.ehr_pm_group" v-if="form.staffDivide == dict.value">
|
|
|
+ <div>{{ dict.label }}</div>
|
|
|
+ </div>
|
|
|
+ </el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ <el-descriptions :column="6 ">
|
|
|
+ <el-descriptions-item label="自评分" v-if="form.status > 3">{{form.saMark}}</el-descriptions-item>
|
|
|
+ <el-descriptions-item label="上级评分" v-if="form.status > 4">{{form.ldMark}}</el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ <el-descriptions v-if="form.status > 3">
|
|
|
+ <el-descriptions-item label="个人总结">{{form.summary}}</el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ <div v-if="this.$store.state.user.name == form.staff && form.status == '3'">
|
|
|
+ <el-form-item label="个人总结" prop="summary">
|
|
|
+ <el-input type="textarea" placeholder="总结本月工作的亮点和暗点" v-model="form.summary"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <el-descriptions v-if="form.status > 4">
|
|
|
+ <el-descriptions-item label="评语">{{form.comment}}</el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
+ <div style="float:right">
|
|
|
+ <el-button type="primary" size="mini" @click="btnAddRow" v-if="this.$store.state.user.name == form.staff && form.status == '0'">增加指标</el-button>
|
|
|
+ <!-- <el-button size="mini" @click="btnUnfold">{{isUnfold == true ? "收起" : "展开"}}</el-button> -->
|
|
|
+ </div>
|
|
|
+ <el-table size="mini" :data="form.performanceItem" show-summary :summary-method="getSummaries" border>
|
|
|
+ <el-table-column type="index" width="50" label="序号"/>
|
|
|
+ <el-table-column width="100" :show-overflow-tooltip="!isUnfold" label="评估方面" align="center" prop="aspect">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <dict-tag :options="dict.type.ehr_pm_aspect" :value="scope.row.aspect"/>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="100" :show-overflow-tooltip="!isUnfold" label="评估指标" align="center" prop="target" />
|
|
|
+ <el-table-column width="80" label="权重(%)" align="center" prop="weight"/>
|
|
|
+ <el-table-column :show-overflow-tooltip="!isUnfold" label="指标说明" align="center" prop="instructions">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div style="white-space: pre-wrap;text-align: left">{{scope.row.instructions}}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <!-- <el-table-column width="100" label="角色" align="center" prop="role">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <dict-tag :options="dict.type.ehr_pm_role" :value="scope.row.role"/>
|
|
|
+ </template>
|
|
|
+ </el-table-column> -->
|
|
|
+ <el-table-column :show-overflow-tooltip="!isUnfold" label="评分标准" align="center" prop="standard">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div style="white-space: pre-wrap;text-align: left">{{scope.row.standard}}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column width="100" label="数据来源" align="center" prop="source" />
|
|
|
|
|
|
- <el-table-column width="80" label="自评分" align="center" prop="selfScoring" v-if="form.status > 3"/>
|
|
|
- <el-table-column :show-overflow-tooltip="!isUnfold" label="自评语" align="center" prop="selfComment" v-if="form.status > 3"/>
|
|
|
- <el-table-column width="80" label="自评分*" align="center" prop="selfScoring" v-if="this.$store.state.user.name == form.staff && form.status == '3'">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-input v-model="scope.row.selfScoring" v-only-number="{max:saMarkMax,min:0,precision:1}" size="mini"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column :show-overflow-tooltip="!isUnfold" label="自评语*" align="center" prop="selfComment" v-if="this.$store.state.user.name == form.staff && form.status == '3'">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-input size="mini" type="textarea" :rows="3" v-model="scope.row.selfComment"></el-input>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
+ <el-table-column width="80" label="自评分" align="center" prop="selfScoring" v-if="form.status > 3"/>
|
|
|
+ <el-table-column :show-overflow-tooltip="!isUnfold" label="自评语" align="center" prop="selfComment" v-if="form.status > 3"/>
|
|
|
+
|
|
|
+ <el-table-column width="80" label="自评分" align="center" prop="selfScoring" :render-header="addRedStar" v-if="this.$store.state.user.name == form.staff && form.status == '3'">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-form-item :prop="'performanceItem.'+scope.$index+'.selfScoring'" :rules="{required: true,message: ' ',trigger: 'blur'}">
|
|
|
+ <el-input v-model="scope.row.selfScoring" v-only-number="{max:saMarkMax,min:0,precision:1}" size="mini"/>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column :show-overflow-tooltip="!isUnfold" label="自评语" align="center" prop="selfComment" :render-header="addRedStar" v-if="this.$store.state.user.name == form.staff && form.status == '3'">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-form-item :prop="'performanceItem.'+scope.$index+'.selfComment'" :rules="{required: true,message: ' ',trigger: 'blur'}">
|
|
|
+ <el-input size="mini" type="textarea" :rows="3" v-model="scope.row.selfComment"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
|
|
|
- <el-table-column width="80" label="上级评分" align="center" prop="leaderScoring" v-if="form.status > 4"/>
|
|
|
- <el-table-column :show-overflow-tooltip="!isUnfold" label="上级评语" align="center" prop="leaderComment" v-if="form.status > 4"/>
|
|
|
- <el-table-column width="80" label="加权得分" align="center" prop="weightedScore" v-if="form.status > 4"/>
|
|
|
-
|
|
|
- <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width" v-if="this.$store.state.user.name == form.staff && form.status == '0'">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-button size="mini" type="text" @click="btnEdit(scope.row)">修改</el-button>
|
|
|
- <el-button size="mini" type="text" @click="btnDelete(scope.row)">删行</el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
+ <el-table-column width="80" label="上级评分" align="center" prop="leaderScoring" v-if="form.status > 4"/>
|
|
|
+ <el-table-column :show-overflow-tooltip="!isUnfold" label="上级评语" align="center" prop="leaderComment" v-if="form.status > 4"/>
|
|
|
+ <el-table-column width="80" label="加权得分" align="center" prop="weightedScore" v-if="form.status > 4"/>
|
|
|
+
|
|
|
+ <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width" v-if="this.$store.state.user.name == form.staff && form.status == '0'">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button size="mini" type="text" @click="btnEdit(scope.row)">修改</el-button>
|
|
|
+ <el-button size="mini" type="text" @click="btnDelete(scope.row)">删行</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-form>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
|
|
@@ -152,6 +162,7 @@
|
|
|
|
|
|
<script>
|
|
|
import ApproveLogDialog from './btnApproveLog.vue'
|
|
|
+import AdjustlogDialog from './btnAjMarkLog.vue'
|
|
|
import CopyItemDialog from './btnCopyItem.vue'
|
|
|
import { getPerformance,fillinFinish,selfestimate,copyItem} from "@/api/business/ehr/pm/performance";
|
|
|
import { getPerformanceItem,addPerformanceItem,updatePerformanceItem,delPerformanceItem} from "@/api/business/ehr/pm/performanceitem";
|
|
@@ -164,13 +175,19 @@ export default {
|
|
|
prop: 'isList',
|
|
|
event: 'jugislist'
|
|
|
},
|
|
|
- components: {ApproveLogDialog,CopyItemDialog},
|
|
|
+ components: {ApproveLogDialog,AdjustlogDialog,CopyItemDialog},
|
|
|
data() {
|
|
|
return {
|
|
|
//id
|
|
|
id:null,
|
|
|
//表单
|
|
|
form:{},
|
|
|
+ //提交规则
|
|
|
+ rules:{
|
|
|
+ summary: [
|
|
|
+ { required: true, message: " ", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
//遮罩
|
|
|
loading: false,
|
|
|
//单行明细
|
|
@@ -212,7 +229,7 @@ export default {
|
|
|
saMarkMax: function () {
|
|
|
//业务组最高自评分为150;非业务组最高自评分为100;
|
|
|
return this.form.staffDivide == 'C1' ? 150 : 100
|
|
|
- }
|
|
|
+ },
|
|
|
},
|
|
|
async created() {
|
|
|
this.id = this.rowId;
|
|
@@ -273,6 +290,10 @@ export default {
|
|
|
},
|
|
|
//单行明细确认
|
|
|
btnRowConfirm(){
|
|
|
+ if(this.form.staffDivide == 'C1' && this.rowData.aspect == 0 && this.rowData.weight < 80){
|
|
|
+ this.$modal.msgSuccess("业务组的业绩考核权重不能低于80!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
let sum = 100;
|
|
|
if(this.rowData.id){
|
|
|
let arr = this.form.performanceItem.filter(ele => ele.id != this.rowData.id);
|
|
@@ -356,31 +377,24 @@ export default {
|
|
|
});
|
|
|
}
|
|
|
if(this.form.status == '3'){
|
|
|
- let v = false;
|
|
|
- this.form.performanceItem.forEach((item) => {
|
|
|
- if((!item.selfScoring && item.selfScoring != 0) || !item.selfComment){
|
|
|
- v = true;
|
|
|
+ this.$refs["dataForm"].validate(async valid => {
|
|
|
+ if (valid) {
|
|
|
+ let that = this;
|
|
|
+ this.$modal.confirm('确认提交吗?').then(async function() {
|
|
|
+ that.loading = true;
|
|
|
+ return await selfestimate(that.form);
|
|
|
+ }).then(() => {
|
|
|
+ that.fetchPerformance(that.id);
|
|
|
+ that.$modal.msgSuccess("提交成功");
|
|
|
+ that.loading = false;
|
|
|
+ }).catch(() => {
|
|
|
+ that.loading = false;
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ this.$modal.msgWarning("评分或评语不能为空!");
|
|
|
+ return false;
|
|
|
}
|
|
|
});
|
|
|
- if(v){
|
|
|
- this.$modal.msgWarning("请填写自评分、自评语后再提交!");
|
|
|
- return;
|
|
|
- }
|
|
|
- if(!this.form.summary){
|
|
|
- this.$modal.msgWarning("请填写个人总结再提交!");
|
|
|
- return;
|
|
|
- }
|
|
|
- let that = this;
|
|
|
- this.$modal.confirm('确认提交吗?').then(async function() {
|
|
|
- that.loading = true;
|
|
|
- return await selfestimate(that.form);
|
|
|
- }).then(() => {
|
|
|
- that.fetchPerformance(that.id);
|
|
|
- that.$modal.msgSuccess("提交成功");
|
|
|
- that.loading = false;
|
|
|
- }).catch(() => {
|
|
|
- that.loading = false;
|
|
|
- });
|
|
|
}
|
|
|
},
|
|
|
//设置明细
|
|
@@ -399,6 +413,13 @@ export default {
|
|
|
handleCheckedChange(value){
|
|
|
this.rowData.weight = 0;
|
|
|
},
|
|
|
+ //必选标识
|
|
|
+ addRedStar(h, { column }) {
|
|
|
+ return [
|
|
|
+ h('span', { style: 'color: #F56C6C' }, '*'),
|
|
|
+ h('span', ' ' + column.label)
|
|
|
+ ];
|
|
|
+ },
|
|
|
}
|
|
|
}
|
|
|
</script>
|