approvalAll.vue 8.0 KB

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