actionplanList.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <template>
  2. <div style="height: 100%;">
  3. <van-nav-bar :title="'填写' + Tit" left-text="" left-arrow @click-left="routerBak" />
  4. <header class="performanceList">
  5. <div>请选择记录"{{ Tit }}"的考核指标</div>
  6. </header>
  7. <scroller ref="work_bench_scroller" class="all">
  8. <div style="padding-bottom:1.5rem;">
  9. <van-empty description="暂无绩效考核数据" v-if="backlogList.length == 0" />
  10. <div v-else v-for="(item, index) in backlogList" :key="index">
  11. <template v-if="item.index.length > 0">
  12. <div class="backlog_list_tit">{{ item.name }}</div>
  13. <div v-for="(arr, keys) in item.index" :key="keys" class="backlog_list">
  14. <van-cell :title="arr.name + '(' + arr.weight + '%)'" @click="openPlanPath(arr)" is-link class="apListt">
  15. <template>
  16. <span class="num" v-if="returnNum(arr) > 0">{{ returnNum(arr) }}</span>
  17. </template>
  18. </van-cell>
  19. </div>
  20. </template>
  21. </div>
  22. </div>
  23. </scroller>
  24. </div>
  25. </template>
  26. <script>
  27. export default {
  28. data() {
  29. return {
  30. Tit: '',
  31. knowFrom: '',
  32. backlogList: [],
  33. packId: 0, //记录id
  34. assessID: 0, //记录人
  35. recordMemberIds: []
  36. };
  37. },
  38. methods: {
  39. // 返回上一页
  40. routerBak() {
  41. this.$route_back();
  42. },
  43. returnNum(item) {
  44. if (this.knowFrom == 'action') {
  45. //执行计划
  46. return item.schedule.length;
  47. } else if (this.knowFrom == 'admnin') {
  48. //管理记录
  49. return item.mamage_record.length;
  50. }
  51. },
  52. openPlanPath(apList) {
  53. let data = {
  54. know: this.knowFrom,
  55. apList: JSON.stringify(apList),
  56. packId: this.packId,
  57. assessID: this.assessID
  58. };
  59. this.$setCache('actionplanDetails', data);
  60. this.$router.push({ name: 'actionplanDetails' });
  61. },
  62. //获取指定人员上级列表
  63. getSuperiors(employee_id){
  64. return this.$axiosUser('get', 'api/pro/employee/superior', {employee_id:employee_id,platform:'3'}).then(res=>{
  65. return res.data.data.list
  66. })
  67. },
  68. async init() {
  69. let query = this.$getCache('actionplanList');
  70. this.knowFrom = query.know;
  71. this.packId = query.packId; //记录id
  72. this.assessID = query.assessID; //记录人
  73. this.recordMemberIds = query.recordMemberIds ? query.recordMemberIds : []; //管理记录人ID
  74. if (this.knowFrom == 'action') {
  75. //执行计划
  76. this.Tit = '执行计划';
  77. } else if (this.knowFrom == 'admnin') {
  78. //管理记录
  79. this.Tit = '管理记录';
  80. }
  81. let apList = JSON.parse(query.apList);
  82. apList.forEach((item, keys) => {
  83. item.index.forEach((arr, index) => {
  84. arr.planIndex = [keys, index]; //当打开执行计划时的下标
  85. arr.isOperation = true;
  86. });
  87. });
  88. // 当有管理记录人时过滤数据
  89. let isFiltration = true; //是否需要过滤数据源
  90. if (this.recordMemberIds.length > 0) {
  91. let superior_list=await this.getSuperiors(this.assessID);
  92. superior_list.some(item => {
  93. // 判断被考核人的上级是否包含登录者
  94. if (item.id == this.$userInfo().id) {
  95. isFiltration = false;
  96. return true;
  97. }
  98. });
  99. if (this.$userInfo().is_per_manager) {
  100. // 如果是绩效管理员也可以操作
  101. isFiltration = true;
  102. }
  103. if (this.$getPermis(3)) {
  104. // 如果是子管理员并且管理范围权限为“全公司”
  105. isFiltration = false;
  106. }
  107. if (isFiltration) {
  108. let actionPlanList = JSON.parse(JSON.stringify(apList));
  109. actionPlanList.forEach((item, index) => {
  110. item.index.forEach(item2 => {
  111. item2.isOperation = false;
  112. if (item2.record_ids.indexOf(this.$userInfo().id) >= 0) {
  113. item2.isOperation = true;
  114. }
  115. });
  116. });
  117. this.backlogList = actionPlanList;
  118. } else {
  119. this.backlogList = apList;
  120. }
  121. } else {
  122. this.backlogList = apList;
  123. }
  124. }
  125. },
  126. activated() {
  127. this.init();
  128. }
  129. };
  130. </script>
  131. <style scoped lang="less">
  132. .num {
  133. color: #fff;
  134. text-align: center;
  135. border-radius: 25px;
  136. padding: 0 5px;
  137. width: 0.8rem;
  138. background-color: #2686ff;
  139. }
  140. .all {
  141. height: calc(100% - 1.74rem) !important;
  142. position: relative !important;
  143. background-color: #f5f7fa;
  144. }
  145. header {
  146. padding: 0.2rem;
  147. background-color: #fff;
  148. padding-left: 0.3rem;
  149. font-size: 0.26rem;
  150. z-index: 1;
  151. }
  152. .backlog_list_tit {
  153. background-color: #f5f7fa;
  154. padding: 0.2rem 0 0.2rem 0.3rem;
  155. font-size: 0.28rem;
  156. }
  157. .backlog_list {
  158. border-bottom: red;
  159. /deep/ .apListt {
  160. border-bottom: 1px solid #f1f1f1;
  161. }
  162. /deep/ .apListt span {
  163. font-size: 0.27rem;
  164. }
  165. }
  166. /deep/ .van-cell__value {
  167. width: 1rem;
  168. flex: none;
  169. }
  170. </style>