Browse Source

EHR-绩效:0116功能优化;评估关系增加双向评估功能

001295 1 year ago
parent
commit
6301d133e8

+ 9 - 0
src/api/business/ehr/pm/performance.js

@@ -66,4 +66,13 @@ export function delPerformance(id) {
     url: '/ehr/pm/performance/' + id,
     method: 'delete'
   })
+}
+
+// 绩效阶段调整
+export function editStage(data) {
+  return request({
+    url: '/ehr/pm/performance/editStage',
+    method: 'post',
+    data: data
+  })
 }

+ 4 - 1
src/views/business/ehr/pm/awaitMarkPm/detail.vue

@@ -43,7 +43,7 @@
           <!-- <div style="float:right">
             <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 size="mini"  :data="form.performanceItem" show-summary :summary-method="getSummaries" border :key="refreshTable">
             <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">
@@ -144,6 +144,8 @@ export default {
       turnDownOpen:false,
       //上级评分
       lldMark:0,
+      //刷新表格标记
+      refreshTable:0,
     };
   },
   computed: {
@@ -165,6 +167,7 @@ export default {
         if (res.code === 200) {
           this.form = res.data;
           this.id = res.data.id;
+          this.refreshTable++;
          }
          this.loading = false;
       })

+ 4 - 4
src/views/business/ehr/pm/juniorPm/detail.vue

@@ -63,10 +63,10 @@
               </template>
             </el-table-column>
             <el-table-column width="100" label="数据来源" align="center" prop="source"/>
-            <el-table-column width="80" label="自评分" align="center" prop="selfScoring"/>
-            <el-table-column :show-overflow-tooltip="!isUnfold" label="自评语" align="center" prop="selfComment"/>
-            <el-table-column width="80" label="上级评分" align="center" prop="leaderScoring"/>
-            <el-table-column :show-overflow-tooltip="!isUnfold" label="评分说明" align="center" prop="leaderComment"/>
+            <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="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>
         </el-form>
       </div>

+ 1 - 1
src/views/business/ehr/pm/juniorPm/index.vue

@@ -100,7 +100,7 @@
 
 <script>
 import detail from './detail.vue'
-import { listPerformance,getCurrentMonthId,getNextMonthId} from "@/api/business/ehr/pm/performance";
+import { listPerformance} from "@/api/business/ehr/pm/performance";
 import { listDept} from "@/api/business/ehr/ehr/dept";
 
 export default {

+ 8 - 2
src/views/business/ehr/pm/myPm/detail.vue

@@ -50,7 +50,7 @@
             <CopyItemDialog style="margin: 0 10px" @setItems="setItems" v-if="this.$store.state.user.name == form.staff && form.status == '0'" :id="rowId"></CopyItemDialog>
             <!-- <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 size="mini"  :data="form.performanceItem" show-summary :summary-method="getSummaries" border :key="refreshTable">
             <el-table-column type="index" width="50" align="center" label="序号"/>
             <el-table-column width="100" :show-overflow-tooltip="!isUnfold" label="评估方面" align="center" prop="aspect">
               <template slot-scope="scope">
@@ -185,8 +185,12 @@ export default {
     return {
       //id
       id:null,
+      //刷新表格标记
+      refreshTable:0,
       //表单
-      form:{},
+      form:{
+        performanceItem:[]
+      },
       //提交规则
       rules:{
         summary: [
@@ -261,6 +265,7 @@ export default {
         if (res.code === 200) {
           this.form = res.data;
           this.id = res.data.id;
+          this.refreshTable++;
          }
          this.loading = false;
       })
@@ -293,6 +298,7 @@ export default {
     //单行明细取消
     btnRowClose(){
       this.rowData = {};
+      this.$refs["rowDataForm"].resetFields();
       this.rowDataOpen = false;
     },
     //单行明细确认

+ 1 - 268
src/views/business/ehr/pm/performance/detail.vue

@@ -38,18 +38,9 @@
           <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">
@@ -68,100 +59,20 @@
                 <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" :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-form>
       </div>
     </el-card>
-    
-    <el-dialog title="指标明细" :visible.sync="rowDataOpen" width="1000px" :close-on-click-modal="false" :show-close="false">
-      <el-form size="mini" label-position="right" ref="rowDataForm" :model="rowData" :rules="rowRules" label-width="80px">
-        <el-form-item label="评估方面" prop="aspect">
-          <el-select v-model="rowData.aspect" >
-            <el-option
-              v-for="dict in dict.type.ehr_pm_aspect"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="评估指标" prop="target">
-          <el-input v-model="rowData.target"></el-input>
-        </el-form-item>
-        <el-form-item label="加/减分项" prop="asItem">
-          <el-checkbox v-model="rowData.asItem" @change="handleCheckedChange"></el-checkbox>
-        </el-form-item>
-        <el-form-item label="权重(%)" prop="weight" v-if="!rowData.asItem">
-          <el-input  v-model.number="rowData.weight" v-only-number="{max:100,min:0,precision:0}" size="mini">
-            <i slot="suffix" style="color: #000;font-style:normal;margin-right: 10px;">%</i>
-          </el-input>
-        </el-form-item>
-        <el-form-item label="指标说明" prop="instructions">
-          <el-input type="textarea" v-model="rowData.instructions" :rows="5"></el-input>
-        </el-form-item>
-        <!-- <el-form-item label="角色" prop="role">
-          <el-select v-model="rowData.role" >
-            <el-option
-              v-for="dict in dict.type.ehr_pm_role"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item> -->
-        <el-form-item label="评分标准" prop="standard">
-          <el-input type="textarea" v-model="rowData.standard" :rows="5"></el-input>
-        </el-form-item>
-        <el-form-item label="数据来源" prop="source">
-          <el-input v-model="rowData.source"></el-input>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button size="mini" @click="btnRowClose">取 消</el-button>
-        <el-button size="mini" type="primary" @click="btnRowConfirm">确 定</el-button>
-      </span>
-    </el-dialog>
-
   </div>
 </template>
 
@@ -169,8 +80,7 @@
 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";
+import { getPerformance} from "@/api/business/ehr/pm/performance";
 
 export default {
   name: 'detail',
@@ -187,55 +97,12 @@ export default {
       id:null,
       //表单
       form:{},
-      //提交规则
-      rules:{
-        summary: [
-          { required: true, message: " ", trigger: "blur" },
-        ],
-      },
       //遮罩
       loading: false,
-      //单行明细
-      rowData:{},
-      //是否显示行明细弹出层
-      rowDataOpen:false,
-      //当行明细校验规则
-      rowRules:{
-        aspect: [
-          { required: true, message: "评估方面不能为空", trigger: "blur" },
-        ],
-        target: [
-          { required: true, message: "评估指标不能为空", trigger: "blur" },
-        ],
-        instructions: [
-          { required: true, message: "评估说明不能为空", trigger: "blur" },
-        ],
-        role: [
-          { required: true, message: "角色不能为空", trigger: "blur" },
-        ],
-        weight: [
-          { required: true, message: "权重不能为空", trigger: "blur" },
-        ],
-        standard: [
-          { required: true, message: "绩效标准不能为空", trigger: "blur" },
-        ],
-        source: [
-          { required: true, message: "数据来源不能为空", trigger: "blur" },
-        ],
-      },
-      //是否展开
-      isUnfold:false,
       //明细权重合计值
       weightSum: 0,
     }
   },
-  computed: {
-    //自评分最大值
-    saMarkMax: function () {
-      //业务组最高自评分为150;非业务组最高自评分为100;
-      return this.form.staffDivide == 'C1' ? 150 : 100
-    },
-	},
   async created() {
     this.id = this.rowId;
     this.fetchPerformance(this.id);
@@ -263,77 +130,6 @@ export default {
          this.loading = false;
       })
     },
-    //增行
-    btnAddRow(){
-      this.rowData = {};
-      this.rowData.assessId = this.form.id;
-      this.rowDataOpen = true;
-    },
-    //修改
-    async btnEdit(row){
-      this.rowData = {};
-      await getPerformanceItem(row.id).then(res => {
-        if (res.code === 200) {
-          this.rowData = res.data
-          this.rowDataOpen = true;
-         }
-      })
-    },
-    //删行
-    btnDelete(row){
-      this.$modal.confirm('是否确认删除第"' + row.aspect + '"行数据?').then(function() {
-        return delPerformanceItem(row.id);
-      }).then(() => {
-        this.fetchPerformance(this.id);
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
-    },
-    //单行明细取消
-    btnRowClose(){
-      this.rowData = {};
-      this.rowDataOpen = false;
-    },
-    //单行明细确认
-    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);
-        sum = arr.reduce((sum, e) => sum + Number(e.weight || 0), 0);
-      }else{
-        sum = this.form.performanceItem.reduce((sum, e) => sum + Number(e.weight || 0), 0);
-      }
-      console.log("sum",sum);
-      console.log("sum + this.rowData.weight",sum + this.rowData.weight);
-      if(sum + this.rowData.weight > 100){
-        this.$modal.msgSuccess("总权重超过100,剩余权重比为" + (100 - sum));
-        return;
-      }
-      this.$refs["rowDataForm"].validate(valid => {
-        if (valid) {
-          if (this.rowData.id != undefined) {
-            updatePerformanceItem(this.rowData).then(response => {
-              this.$modal.msgSuccess("保存成功");
-              this.rowDataOpen = false;
-              this.fetchPerformance(this.id);
-            });
-          } else {
-            addPerformanceItem(this.rowData).then(response => {
-              this.$modal.msgSuccess("保存成功");
-              this.rowDataOpen = false;
-              this.fetchPerformance(this.id);
-            });
-          }
-        }
-      });
-    },
-    //展开/收起
-    btnUnfold(){
-      this.isUnfold = !this.isUnfold;
-    },
     //上一个
     btnPreviou(){
       let i = this.ids.indexOf(this.id) - 1;
@@ -369,69 +165,6 @@ export default {
       }
       return ['合计','','',weight,'','','',selfScoring,'',this.form.ldMark];
     },
-    //提交
-    btnSubmit(){
-      if(this.form.status == '0'){
-        if(this.weightSum != 100){
-          this.$modal.msgWarning("权重不为100%无法提交!");
-          return;
-        }
-        let that = this;
-        this.$modal.confirm('确认提交吗?').then(async function() {
-          that.loading = true;
-          return await fillinFinish(that.form);
-        }).then(() => {
-          that.fetchPerformance(that.id);
-          that.$modal.msgSuccess("提交成功");
-          that.loading = false;
-        }).catch(() => {
-          that.loading = false;
-        });
-      }
-      if(this.form.status == '3'){
-        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;
-          }
-        });
-      }
-    },
-    //设置明细
-    async setItems(cId){
-      let params = {
-        id : this.id,
-        cId : cId
-      }
-      let res = await copyItem(params);
-      if("200" == res.code){
-        this.$modal.msgSuccess("复制成功");
-        this.fetchPerformance(this.id);
-      }
-    },
-    //选择加减分项后
-    handleCheckedChange(value){
-      this.rowData.weight = 0;
-    },
-    //必选标识
-    addRedStar(h, { column }) {
-      return [
-        h('span', { style: 'color: #F56C6C' }, '*'),
-        h('span', ' ' + column.label)
-      ];
-    },
   }
 }
 </script>

+ 3 - 146
src/views/business/ehr/pm/performance/index.vue

@@ -49,9 +49,6 @@
                 @keyup.enter.native="btnSearch"
               />
             </el-form-item>
-            <!-- <el-form-item label="只看自己的">
-              <el-checkbox v-model="queryParams.params.oneself" @change="btnOneself"></el-checkbox>
-            </el-form-item> -->
           </el-col>
           <el-col :span="6">
             <el-form-item style="float:right">
@@ -62,17 +59,6 @@
         </el-row>
       </el-form>
       <div style="float:right">
-        <!-- <el-badge :value="verifyCount" class="item" style="margin: 0 10px" v-if="verifyCount > 0">
-          <el-button type="primary" size="mini" @click="btnPmVerify">待确认</el-button>
-        </el-badge>
-        <el-badge :value="markCount" class="item" style="margin: 0 10px"  v-if="markCount > 0">
-          <el-button type="primary" size="mini" @click="btnPmMark">待评分</el-button>
-        </el-badge>
-        <el-badge :value="adjustCount" class="item" style="margin: 0 10px"  v-if="adjustCount> 0">
-          <el-button type="primary" size="mini" @click="btnGradeAdjust">待分数调整</el-button>
-        </el-badge>
-        <el-button type="primary" size="mini" @click="btnCurrentMonth">本月绩效</el-button>
-        <el-button type="primary" size="mini" @click="btnNextMonth">下月绩效</el-button> -->
       </div>
       <el-table size="mini" height="500px" v-loading="loading" :data="listData" @row-dblclick="btnDetails">
         <el-table-column label="绩效编号" align="center" prop="id" />
@@ -111,32 +97,12 @@
       </div>
     </div>
     <detail v-model="isList" v-if="!isList" :pageStu="page" :rowId="rowId" :ids="ids" @refresh="refresh" />
-
-    <el-dialog title="分数调整" :visible.sync="stageListOpen" width="1000px" :close-on-click-modal="false">
-      <el-table size="mini" height="500px" v-loading="stageListLoading" :data="stageList" @row-dblclick="btnDetails">
-        <el-table-column label="名称" align="center" prop="name" />
-        <el-table-column label="月份" align="center" prop="month" />
-        <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-search"
-              @click="btnEntryAdjust(scope.row)"
-            >进入调整</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-    </el-dialog>
   </div>
 </template>
 
 <script>
 import detail from './detail.vue'
-import { listPerformance,getCurrentMonthId,getNextMonthId} from "@/api/business/ehr/pm/performance";
-import { getGradeAdjustConut,toDoList} from "@/api/business/ehr/pm/gradeadjust";
-import { getPmVerifyConut} from "@/api/business/ehr/pm/pmverify";
-import { getPmMarkConut} from "@/api/business/ehr/pm/pmmark";
+import { listPerformance} from "@/api/business/ehr/pm/performance";
 import { listDept} from "@/api/business/ehr/ehr/dept";
 
 export default {
@@ -165,6 +131,7 @@ export default {
         pageSize: 10,
         params:{
           dataPermission: 'N',
+          JXKKB: 'Y',
           staffCodeOrName: null,
         },
         status: null,
@@ -174,51 +141,12 @@ export default {
       },
       // 查询日期范围
       dateRange: [],
-      pickerOptions: {
-        shortcuts: [{
-          text: '最近一周',
-          onClick(picker) {
-            const end = new Date();
-            const start = new Date();
-            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-            picker.$emit('pick', [start, end]);
-          }
-        }, {
-          text: '最近一个月',
-          onClick(picker) {
-            const end = new Date();
-            const start = new Date();
-            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
-            picker.$emit('pick', [start, end]);
-          }
-        }, {
-          text: '最近三个月',
-          onClick(picker) {
-            const end = new Date();
-            const start = new Date();
-            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
-            picker.$emit('pick', [start, end]);
-          }
-        }]
-      },
       //页面显示
       isList: true,
       //页面状态
       page: '',
       //详情id
       rowId: '',
-      //等级调整数量
-      adjustCount: null,
-      //等级调整周期列表
-      stageList:[],
-      //等级调整周期列表弹出层
-      stageListOpen:false,
-      //等级调整周期列表遮罩层
-      stageListLoading: true,
-      //待确认数量
-      verifyCount: null,
-      //待评分数量
-      markCount: null,
       //部门树
       deptTree: [],
       //value
@@ -226,23 +154,7 @@ export default {
     };
   },
   async created() {
-    // //查询等级调整数量
-    // let res = await getGradeAdjustConut();
-    // this.adjustCount = res.row;
-    // //查询待确认数量
-    // res = await getPmVerifyConut();
-    // this.verifyCount = res.row;
-    // //查询待评分数量
-    // res = await getPmMarkConut();
-    // this.markCount = res.row;
     this.getList();
-    //如果是跳转过来的页面带了参数flowId则直接进入填写页面
-    // if(this.$route['query'] !== undefined && this.$route.query['flowId'] !== undefined){
-    //   this.rowId = this.$route.query.performanceId;
-    //   this.page = 'add';
-    //   this.ids = [this.$route.query.performanceId];
-    //   this.isList = false;
-    // }
     listDept().then(response => {
       let arr = response.rows;
       arr.forEach(function(element) {
@@ -250,9 +162,7 @@ export default {
         element.value = element.code;
         element.label = element.name;
       });
-      console.log("arr",arr);
       this.deptTree = this.arrayToTree(arr,null);
-      console.log("deptTree",this.deptTree);
     });
   },
   methods: {
@@ -260,7 +170,7 @@ export default {
     getList() {
       this.loading = true;
       this.queryParams.dept = this.treeValue[this.treeValue.length - 1];
-      listPerformance(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+      listPerformance(this.queryParams).then(response => {
         this.listData = response.rows;
         this.ids = response.rows.map(item => item.id);
         this.total = response.total;
@@ -293,59 +203,6 @@ export default {
       this.page = 'add';
       this.isList = false;
     },
-    //只看自己按钮
-    btnOneself(){
-      this.btnSearch();
-    },
-    //等级调整
-    btnGradeAdjust(){
-      this.stageListOpen = true;
-      this.getlistStage();
-    },
-    //查看当月绩效
-    async btnCurrentMonth(){
-      let res = await getCurrentMonthId();
-      if(!res.id){
-        this.$modal.msgSuccess("未查询到本月绩效!");
-      }else{
-        this.rowId = res.id;
-        this.page = 'add';
-        this.ids = [res.id];
-        this.isList = false;
-      }
-    },
-    //查看下月绩效
-    async btnNextMonth(){
-      let res = await getNextMonthId();
-      if(!res.id){
-        this.$modal.msgSuccess("未查询到下月绩效!");
-      }else{
-        this.rowId = res.id;
-        this.page = 'add';
-        this.ids = [res.id];
-        this.isList = false;
-      }
-    },
-    //查询周期列表
-    getlistStage() {
-      this.stageListLoading = true;
-      toDoList().then(response => {
-        this.stageList = response.rows;
-        this.stageListLoading = false;
-      });
-    },
-    //进入调整
-    btnEntryAdjust(row){
-      this.$router.push({ name: 'AdjustGrade', query: { id: row.id,flowId: row.flowId } });
-    },
-    //待确认
-    btnPmVerify(){
-      this.$router.push({name:'PmVerify'});
-    },
-    //待评分
-    btnPmMark(){
-      this.$router.push({name:'PmMark'});
-    },
     arrayToTree(data, pid) {
       let result = []
       this.getChildren(data, result, pid)

+ 51 - 9
src/views/business/ehr/pm/psnrelation/detail.vue

@@ -10,24 +10,49 @@
         </div>
       </div>
       <div v-loading="loading">
-        <el-descriptions :column="6 ">
+        <el-descriptions :column="6 " v-if="pageState == 'see'">
           <el-descriptions-item label="员工编号">{{form.staff}}</el-descriptions-item>
           <el-descriptions-item label="员工姓名">{{form.staffName}}</el-descriptions-item>
+          <el-descriptions-item label="是否双向评估">{{form.isTwoEvaluation == "1" ? "是" : "否"}}</el-descriptions-item>
         </el-descriptions>
+        <el-form size="mini" :model="form" inline v-if="pageState != 'see'">
+          <el-row>
+            <el-col :span="4">
+              <el-form-item label="员工编号" prop="staff">
+                <el-input size="mini" style="width: 150px" v-model="form.staff" readonly/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="4">
+              <el-form-item label="员工姓名" prop="staffName">
+                <el-input size="mini" style="width: 150px" v-model="form.staffName" readonly/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="4">
+              <el-form-item label="是否双向评估" prop="aspect">
+                <el-switch v-model="form.isTwoEvaluation" :active-value="true" :inactive-value="false"></el-switch>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
 
-        <el-table size="mini" :data="form.psnrelationItem" v-if="pageState == 'see'">
+        <el-table size="mini" :data="form.psnrelationItem" v-if="pageState == 'see'" :key="refreshTable">
           <el-table-column width="50" label="序号" align="center" type="index" />
           <el-table-column width="300" label="评估人编码" align="center" prop="staff" />
           <el-table-column width="300" label="评估人名称" align="center" prop="staffName" />
+          <el-table-column width="300" label="评估方面" align="center" prop="aspects" v-if="form.isTwoEvaluation">
+            <template slot-scope="scope">
+              <dict-tag :options="dict.type.ehr_pm_aspecttype" :value="scope.row.aspects"/>
+            </template>
+          </el-table-column>
         </el-table>
 
         <div style="float:right" v-if="pageState != 'see'">
           <el-button type="primary" size="mini" @click="btnAddRow">新增</el-button>
         </div>
-        <el-table size="mini" :data="form.psnrelationItem" v-if="pageState != 'see'">
+        <el-table size="mini" :data="form.psnrelationItem" v-if="pageState != 'see'" :key="refreshTable">
           <el-table-column width="50" label="序号" align="center" type="index" />
           <el-table-column width="300" label="评估人编码" align="center" prop="staff" />
-          <el-table-column width="300" label="评估人名称" align="center">
+          <el-table-column width="300" label="评估人名称" align="center" prop="staffName">
             <template slot-scope="scope">
               <el-popover-select-v2 
                 size="mini" 
@@ -42,11 +67,19 @@
               </el-popover-select-v2>
             </template>
           </el-table-column>
+          <el-table-column width="300" label="评估方面" align="center" prop="aspects" v-if="form.isTwoEvaluation">
+            <template slot-scope="scope">
+              <el-select size="mini" v-model="scope.row.aspects" placeholder="">
+                <el-option v-for=" dict in dict.type.ehr_pm_aspecttype" :key="dict.value" :label="dict.label" :value="dict.value">
+                </el-option>
+              </el-select>
+            </template>
+          </el-table-column>
           <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
             <template slot-scope="scope">
-              <el-button size="mini" type="text" @click="btnMoveUp(scope.row, scope.$index)">上移</el-button>
-              <el-button size="mini" type="text" @click="btnMoveDown(scope.row, scope.$index)">下移</el-button>
-              <el-button size="mini" type="text" @click="btnDelete(scope.$index, scope.row)">删行</el-button>
+              <el-button size="mini" type="text" icon="el-icon-top" @click="btnMoveUp(scope.row, scope.$index)">上移</el-button>
+              <el-button size="mini" type="text" icon="el-icon-bottom" @click="btnMoveDown(scope.row, scope.$index)">下移</el-button>
+              <el-button size="mini" type="text" icon="el-icon-delete" @click="btnDelete(scope.$index, scope.row)">删行</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -66,7 +99,7 @@ import { getPsnrelation,savePsnrelation} from "@/api/business/ehr/pm/psnrelation
   import ElPopoverSelectV2 from "@/components/popover-select-v2"
 export default {
   name: 'detail',
-  dicts: ['ehr_pm_aspect','ehr_pm_role'],
+  dicts: ['ehr_pm_aspect','ehr_pm_role','ehr_pm_aspecttype'],
   props: ['enterState','rowId',"ids"],
   components: { ElPopoverSelectV2},
   model: {
@@ -88,6 +121,8 @@ export default {
       loading: false,
       //页面状态
       pageState: null,
+      //刷新表格标记
+      refreshTable:0,
     }
   },
   async created() {
@@ -114,6 +149,7 @@ export default {
         if (res.code === 200) {
           this.form = res.data;
           this.id = res.data.id;
+          this.refreshTable++;
          }
          this.loading = false;
       })
@@ -174,16 +210,21 @@ export default {
     },
     //保存
     btnSave(){
+      this.loading = true;
       this.form.psnrelationItem.push(...this.delItems);
       this.form.psnrelationItem = this.form.psnrelationItem.filter(e => e.staff);
       savePsnrelation(this.form).then(response => {
         this.$modal.msgSuccess("保存成功");
         this.fetchPsnrelation(this.id);
         this.pageState = "see";
-      });
+        this.loading = false;
+      }).catch(() => {
+        this.loading = false;
+      });;
     },
     //上一个
     btnPreviou(){
+      this.pageState = "see";
       let i = this.ids.indexOf(this.id) - 1;
       if(i > -1){
         let id = this.ids[i];
@@ -194,6 +235,7 @@ export default {
     },
     //下一个
     btnNext(){
+      this.pageState = "see";
       let i = this.ids.indexOf(this.id) + 1;
       if(i < this.ids.length){
         let id = this.ids[i];

+ 10 - 0
src/views/business/ehr/pm/psnrelation/index.vue

@@ -26,6 +26,16 @@
       <el-table size="mini" height="500px" v-loading="loading" :data="listData" @row-dblclick="btnDetails">
         <el-table-column label="员工编号" align="center" prop="staff" />
         <el-table-column label="员工姓名" align="center" prop="staffName" />
+        <el-table-column label="是否双向评估" align="center" prop="isTwoEvaluation">
+          <template slot-scope="scope">
+            <el-switch
+              v-model="scope.row.isTwoEvaluation"
+              :active-value="true"
+              :inactive-value="false"
+              disabled
+            ></el-switch>
+          </template>
+        </el-table-column>
         <el-table-column label="创建时间" align="center" prop="createTime" />
         <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">

+ 74 - 4
src/views/business/ehr/pm/stagecontrol/pmList.vue

@@ -44,11 +44,33 @@
         <template slot-scope="scope">
             <el-button
               size="mini"
-              type="danger"
+              type="text"
               icon="el-icon-delete-solid"
-              plain
               @click="btnDel(scope.row)"
             >删除</el-button>
+            <el-dropdown
+            size="mini"
+            @command="(command) => handleCommand(command, scope.row)"
+            v-hasPermi="['system:role:edit']"
+          >
+            <el-button size="mini" type="text" icon="el-icon-d-arrow-right"
+              >更多</el-button
+            >
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item
+                v-if="scope.row.status == '2'"
+                command="toFillin"
+                icon="el-icon-edit-outline"
+                >驳回到填写</el-dropdown-item
+              >
+              <el-dropdown-item
+                v-if="scope.row.status == '5'"
+                command="toSelfEstimate"
+                icon="el-icon-location-outline"
+                >驳回到自评</el-dropdown-item
+              >
+            </el-dropdown-menu>
+          </el-dropdown>
         </template>
       </el-table-column>
     </el-table>
@@ -74,7 +96,7 @@
 </template>
 
 <script>
-import { listPerformance,delPerformance} from "@/api/business/ehr/pm/performance";
+import { listPerformance,delPerformance,getPerformance,editStage} from "@/api/business/ehr/pm/performance";
 import { stageCount} from "@/api/business/ehr/pm/stage";
 import CreatePmDialog from './btnCreatePm.vue'
 export default {
@@ -96,10 +118,21 @@ export default {
       listData: [],
       // 遮罩层
       loading: true,
+      loading1: true,
       // 是否显示弹出层
       open: false,
       // 绩效状态对应的数量
       pmStatusNum:[],
+      //是否显示阶段调整弹出层
+      turnDownOpen:false,
+      //表单
+      form:{},
+      //表单校验规则
+      rules:{
+        status: [
+          { required: true, message: "调整状态不能为空", trigger: "blur" },
+        ],
+      },
     };
   },
   created() {
@@ -140,7 +173,44 @@ export default {
         this.getList();
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
-    }
+    },
+    // 更多操作触发
+    handleCommand(command, row) {
+      switch (command) {
+        case "toFillin":
+          this.toFillin(row);
+          break;
+        case "toSelfEstimate":
+          this.toSelfEstimate(row);
+          break;
+        default:
+          break;
+      }
+    },
+    //驳回到填写
+    toFillin(data){
+      this.$modal.confirm('确定要将' + data.staffName + '【' + data.staff + '】的绩效调整为绩效填写状态吗?').then(function() {
+        return editStage({
+          id:data.id,
+          status:"0"
+        });
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("调整成功");
+      }).catch(() => {});
+    },
+    //驳回到自评
+    toSelfEstimate(data){
+      this.$modal.confirm('确定要将' + data.staffName + '【' + data.staff + '】的绩效调整为绩效自评状态吗?').then(function() {
+        return editStage({
+          id:data.id,
+          status:"3"
+        });
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("调整成功");
+      }).catch(() => {});
+    },
   },
 };
 </script>