approval_list.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <template>
  2. <div>
  3. <div class="all padding-20">
  4. <el-form ref="formData" :inline="true" :model="formData" label-width="80px">
  5. <el-form-item label="工作类型">
  6. <el-select v-model="formData.source_type" placeholder="请选择排序">
  7. <el-option v-for="item in sourceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
  8. </el-select>
  9. </el-form-item>
  10. <el-form-item label="积分类型">
  11. <el-select v-model="formData.pt_id" placeholder="请选择排序">
  12. <el-option v-for="item in point_types" :key="item.id" :label="item.name" :value="item.id"></el-option>
  13. </el-select>
  14. </el-form-item>
  15. <el-select v-model="formData.target_id" filterable clearable placeholder="请输入或选择人员">
  16. <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
  17. </el-select>
  18. </el-form>
  19. <div>
  20. <el-table :data="list" style="cursor: pointer;" v-loading="loading" class="listTable" @row-click="openDetail">
  21. <el-table-column label="审批标题" prop="task_name">
  22. <template slot-scope="scope">
  23. <div class="flex-box flex-v-ce">
  24. <userImage width="50px" height="50px" :id="scope.row.employee_id" :user_name="scope.row.employee_name"></userImage>
  25. <div style="margin-left: 5px;">
  26. <span class="tableTitle" v-show="scope.row.source_type == 1">{{ scope.row.employee_name }}的积分任务</span>
  27. <span class="tableTitle" v-show="scope.row.source_type == 2">{{ scope.row.employee_name }}的积分申请</span>
  28. <span class="tableTitle" v-show="scope.row.source_type == 3">{{ scope.row.employee_name }}的积分录入</span>
  29. <span class="tableTitle" v-show="scope.row.source_type == 4">{{ scope.row.employee_name }}的绩效工作</span>
  30. </div>
  31. </div>
  32. </template>
  33. </el-table-column>
  34. <el-table-column label="审批内容" prop="remark.rule">
  35. <template slot-scope="scope">
  36. <span class="font-flex-word" style="max-width: 200px;">{{ scope.row.remark.customize || scope.row.remark.rule }}</span>
  37. </template>
  38. </el-table-column>
  39. <el-table-column label="时间" prop="event_time" width="150"></el-table-column>
  40. <el-table-column label="操作" prop="owner_id" width="80">
  41. <template slot-scope="scope">
  42. <el-button type="text">审批</el-button>
  43. </template>
  44. </el-table-column>
  45. <template slot="empty">
  46. <div class="nopoint_box">
  47. <div class="noimg noperson"></div>
  48. <span class="title">没有对应的数据</span>
  49. </div>
  50. </template>
  51. </el-table>
  52. </div>
  53. <center style="padding: 20px 0;">
  54. <el-pagination
  55. background
  56. @size-change="handleSizeChange"
  57. @current-change="handleCurrentChange"
  58. :current-page="formData.page"
  59. :page-sizes="[10, 20, 30, 40, 50, 100]"
  60. layout="total, sizes, prev, pager, next"
  61. :page-size="formData.page_size"
  62. :total="total"
  63. ></el-pagination>
  64. </center>
  65. </div>
  66. <examinePopup :title="'审核详情'" :id="detail_id" :show.sync="detailShow"></examinePopup>
  67. </div>
  68. </template>
  69. <script>
  70. import examinePopup from '@/components/examinePopup.vue';
  71. export default {
  72. data() {
  73. return {
  74. formData: {
  75. type: 'waiting',
  76. source_type: '0',
  77. target_id:null,
  78. pt_id: 0,
  79. page_size: 10,
  80. page: 1
  81. },
  82. total: null,
  83. list: null,
  84. loading: false,
  85. point_types: null,
  86. detailShow: false,
  87. detail_id: null,
  88. employee_map: JSON.parse(localStorage.getItem("userList")),
  89. sourceList: [{ name: '全部', id: '0' }, { name: '积分任务', id: '1' }, { name: '积分申请', id: '2' }, { name: '积分录入', id: '3' }]
  90. };
  91. },
  92. watch: {
  93. 'formData.pt_id'() {
  94. this.formData.page = 1;
  95. this.getSpList();
  96. },
  97. 'formData.source_type'() {
  98. this.formData.page = 1;
  99. this.getSpList();
  100. },
  101. 'formData.target_id'(val) {
  102. if(!val){
  103. this.formData.target_id = null;
  104. }
  105. this.formData.page = 1;
  106. this.getSpList();
  107. }
  108. },
  109. components: { examinePopup },
  110. mounted() {
  111. this.getSpList();
  112. this.point_types = this.getPointTypes();
  113. },
  114. methods: {
  115. openDetail(item) {
  116. this.detail_id = item.id;
  117. this.detailShow = true;
  118. },
  119. getTypes() {
  120. var arr = this.$getTyps();
  121. return arr.filter(function(item) {
  122. return item.code != 'JX';
  123. });
  124. },
  125. // 获取积分类型
  126. getPointTypes() {
  127. let point = this.getTypes();
  128. point.unshift({ code: 'all', id: 0, name: '全部' });
  129. return point;
  130. },
  131. // 页码变更
  132. handleCurrentChange(val) {
  133. this.formData.page = val;
  134. this.getSpList();
  135. },
  136. handleSizeChange(val) {
  137. this.formData.page_size = val;
  138. this.getSpList();
  139. },
  140. getSpList() {
  141. let self = this;
  142. self.loading = true;
  143. let params = JSON.parse(JSON.stringify(this.formData));
  144. self.$axios('get', '/api/integral/review/list', params)
  145. .then(res => {
  146. if (res.data.code == 1) {
  147. self.list = res.data.data.list;
  148. self.total = res.data.data.total;
  149. }
  150. })
  151. .finally(e => {
  152. self.loading = false;
  153. });
  154. }
  155. }
  156. };
  157. </script>
  158. <style lang="scss">
  159. .box {
  160. min-height: calc(100vh - 140px);
  161. width: 100%;
  162. background-color: #fff;
  163. padding: 20px;
  164. & .listTable {
  165. & .tableTitle {
  166. line-height: 50px;
  167. padding-left: 10px;
  168. }
  169. }
  170. }
  171. .popperSPBOX {
  172. max-width: calc(100vh - 400px);
  173. background-color: #fff;
  174. }
  175. </style>