index.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <template>
  2. <div>
  3. <div slot="header" class="clearfix">
  4. <span style="font-weight:bold">分数调整</span>
  5. <div style="float: right; padding: 3px 0" type="text">
  6. <el-button type="primary" size="mini" :loading="loading" @click="btnAdjustMark" v-if="flow.status == 0">调整完成</el-button>
  7. <el-button size="mini" plain @click="btnBack">返回</el-button>
  8. </div>
  9. </div>
  10. <div class="app-container">
  11. <el-table size="mini" height="500px" v-loading="loading" :data="listData">
  12. <el-table-column label="编号" align="center" prop="id" />
  13. <el-table-column label="员工姓名" align="center" prop="staffName" />
  14. <el-table-column label="评估周期" align="center" prop="name" />
  15. <el-table-column label="月度" align="center" prop="month" />
  16. <el-table-column label="权重" align="center" prop="weight" />
  17. <el-table-column label="自评分" align="center" prop="saMark" />
  18. <el-table-column label="上级评分" align="center" prop="ldMark" />
  19. <el-table-column label="调整后分数" align="center" prop="ajaMark" />
  20. <el-table-column width="100" label="调整分" align="center" prop="ajMark" v-if="flow.status == 0">
  21. <template slot-scope="scope">
  22. <el-input size="mini" type="number" v-model="scope.row.ajMark" v-only-number="{max:100,min:-100,precision:1}" @input="ajMarkChange(scope.row)"/>
  23. </template>
  24. </el-table-column>
  25. <el-table-column width="200" label="调整原因" align="center" prop="ajCause" v-if="flow.status == 0">
  26. <template slot-scope="scope">
  27. <el-input size="mini" v-model="scope.row.ajCause"/>
  28. </template>
  29. </el-table-column>
  30. </el-table>
  31. </div>
  32. </div>
  33. </template>
  34. <script>
  35. import { listPerformance,adjustFinish} from "@/api/business/ehr/pm/gradeadjust";
  36. import { getFlow} from "@/api/business/ehr/pm/flow"
  37. export default {
  38. name: "AdjustGrade",
  39. dicts: ['ehr_pm_status'],
  40. data() {
  41. return {
  42. // 遮罩层
  43. loading: true,
  44. // 显示搜索条件
  45. showSearch: true,
  46. // 总条数
  47. total: 0,
  48. // 表格数据
  49. listData: [],
  50. // 查询参数
  51. queryParams: {
  52. pageNum: 1,
  53. pageSize: 999999,
  54. sourceId: null,
  55. staffName: null,
  56. },
  57. //流程数据
  58. flow:{},
  59. };
  60. },
  61. created() {
  62. this.queryParams.sourceId = this.$route.query.id;
  63. this.fetchFlow(this.$route.query.flowId);
  64. this.getList();
  65. },
  66. methods: {
  67. /** 查询绩效列表 */
  68. getList() {
  69. this.loading = true;
  70. listPerformance(this.queryParams).then(response => {
  71. response.rows.forEach(function(element) { element.ajaMark = element.mark});
  72. this.listData = response.rows;
  73. this.total = response.total;
  74. this.loading = false;
  75. });
  76. },
  77. //调整分数
  78. async btnAdjustMark(){
  79. let arr = this.listData.filter(ele => ele.ajMark);
  80. let v = false;
  81. arr.forEach(function(element) {
  82. if(element.ajMark && !element.ajCause){
  83. v = true;
  84. }
  85. });
  86. if(v){
  87. this.$modal.msgWarning("调整分数后,必须填写调整原因!");
  88. return;
  89. }
  90. arr.forEach(function(element) {
  91. element.performanceId = element.id;
  92. element.id = null;
  93. });
  94. let that = this;
  95. this.$modal.confirm('确认提交吗?').then(async function() {
  96. that.loading = true;
  97. let data = {
  98. adjustLog: arr,
  99. flow: that.flow
  100. }
  101. return await adjustFinish(data);
  102. }).then(() => {
  103. that.fetchFlow(that.flow.id).then(response => {
  104. this.$forceUpdate();
  105. });
  106. that.$modal.msgSuccess("调整完成");
  107. that.loading = false;
  108. }).catch(() => {
  109. that.loading = false;
  110. });
  111. },
  112. //查询流程
  113. async fetchFlow(id){
  114. await getFlow(id).then(res => {
  115. this.flow = res.data;
  116. })
  117. },
  118. //返回
  119. btnBack(){
  120. this.$router.back();
  121. },
  122. //调整分改变后
  123. ajMarkChange(row){
  124. row.ajaMark = Number(row.mark)+Number(row.ajMark || 0);
  125. }
  126. }
  127. };
  128. </script>
  129. <style lang="scss" scoped>
  130. .btn_grooup {
  131. margin-bottom: 10px;
  132. display: flex;
  133. justify-content: flex-end;
  134. }
  135. .paginationClass {
  136. z-index: 500;
  137. position: fixed;
  138. bottom: 10px;
  139. right: 10px;
  140. width: 100%;
  141. line-height: var(--footer-height);
  142. color: #fff;
  143. }
  144. </style>