approval_list.vue 6.2 KB

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