cf-lx-audit-list.vue 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. <template>
  2. <div v-loading="loading">
  3. <div class="white-box">
  4. <el-tabs v-model="filterStatus" @tab-click="handleFilterStatusClick">
  5. <el-tab-pane label="全部" name="-1" :lazy="true"></el-tab-pane>
  6. <el-tab-pane label="待审核" name="0" :lazy="true"></el-tab-pane>
  7. <el-tab-pane label="审核通过" name="1" :lazy="true"></el-tab-pane>
  8. <el-tab-pane label="审核拒绝" name="3" :lazy="true"></el-tab-pane>
  9. </el-tabs>
  10. <div class="filter-box">
  11. <filter-user ref="filterUser" :filter-types="filterTypes" @select-value="handleFilterUser"></filter-user>
  12. </div>
  13. <el-table :data="tableData" stripe style="width: 100%;" @selection-change="handleSelectionChange" :height="tool.getTableHeight(true)">
  14. <el-table-column type="selection" width="55" v-if="tableHeaders"></el-table-column>
  15. <el-table-column v-for="(tableHeader, key) in tableHeaders" :key="key" :label="tableHeader.header" :width="tableHeader.other.width ? tableHeader.other.width : ''" :prop="tableHeader.other.prop ? tableHeader.other.prop : null">
  16. <template slot-scope="scope">
  17. <template v-if="scope.row[tableHeader.index].other.tag" >
  18. <el-tag :type="scope.row[tableHeader.index].other.tag.type ? scope.row[tableHeader.index].other.tag.type : null" :size="scope.row[tableHeader.index].other.tag.size ? scope.row[tableHeader.index].other.tag.size : null" :class="scope.row[tableHeader.index].other.tag.class ? scope.row[tableHeader.index].other.tag.class : null" >{{scope.row[tableHeader.index].value}}</el-tag>
  19. </template>
  20. <template v-else>
  21. <div v-html="scope.row[tableHeader.index].value"></div>
  22. </template>
  23. </template>
  24. </el-table-column>
  25. <el-table-column fixed="right" label="操作" width="180" v-if="tableHeaders">
  26. <template slot-scope="scope" v-if="scope.row.AUDIT_STATUS==='0' && (permission.hasPermission(`bonus/cf-lx-audit`)||permission.hasPermission(`bonus/cf-lx-audit-delete`))">
  27. <el-dropdown size="small" trigger="click">
  28. <el-button type="primary" size="small" @click.stop="">
  29. Action<i class="el-icon-arrow-down el-icon--right"></i>
  30. </el-button>
  31. <el-dropdown-menu slot="dropdown">
  32. <el-dropdown-item command="pass" @click.native="handleAudit(scope.row, 'true')" v-if="permission.hasPermission(`bonus/cf-lx-audit`)">审核通过</el-dropdown-item>
  33. <el-dropdown-item command="refuse" @click.native="handleAudit(scope.row, 'reject')" v-if="permission.hasPermission(`bonus/cf-lx-audit`)">审核拒绝
  34. </el-dropdown-item>
  35. <el-dropdown-item command="del" @click.native="handleDel(scope.row.ID)"
  36. v-show="permission.hasPermission(`bonus/cf-lx-audit-delete`)">Delete
  37. </el-dropdown-item>
  38. </el-dropdown-menu>
  39. </el-dropdown>
  40. </template>
  41. </el-table-column>
  42. </el-table>
  43. <div class="white-box-footer">
  44. <el-dropdown size="small" trigger="click" @command="handleMuli" v-if="(status===0) && (permission.hasPermission(`bonus/cf-lx-audit`)||permission.hasPermission(`bonus/cf-lx-audit-delete`))">
  45. <el-button type="primary" size="small">
  46. Selected data<!--所选数据--><i class="el-icon-arrow-down el-icon--right"></i>
  47. </el-button>
  48. <el-dropdown-menu slot="dropdown">
  49. <el-dropdown-item command="pass" v-if="permission.hasPermission(`bonus/cf-lx-audit`)">批量审核</el-dropdown-item>
  50. <el-dropdown-item command="reject" v-if="permission.hasPermission(`bonus/cf-lx-audit`)">批量拒审</el-dropdown-item>
  51. <el-dropdown-item command="del" @click.native="handleDel()" v-if="permission.hasPermission(`bonus/cf-lx-audit-delete`)">Delete in batches</el-dropdown-item>
  52. </el-dropdown-menu>
  53. </el-dropdown>
  54. <el-button type="success" size="small" @click="handleExport" v-show="permission.hasPermission(`bonus/cf-lx-audit-export`)">Export Excel</el-button>
  55. <pagination :total="totalCount" :page_size="pageSize" @size-change="handleSizeChange" @current-change="handleCurrentChange"></pagination>
  56. </div>
  57. </div>
  58. </div>
  59. </template>
  60. <script>
  61. import network from '@/utils/network'
  62. import tool from '@/utils/tool'
  63. import FilterUser from '@/components/FilterUser'
  64. import baseInfo from '@/utils/baseInfo'
  65. import permission from '@/utils/permission'
  66. import Pagination from '@/components/Pagination'
  67. import filterHelper from '@/utils/filterHelper'
  68. export default {
  69. name: 'bonus_cf-lx-audit-list',
  70. components: {FilterUser,Pagination},
  71. mounted() {
  72. this.getData()
  73. },
  74. props: {
  75. status: {
  76. type: Number,
  77. default: 0,
  78. }
  79. },
  80. data() {
  81. return {
  82. tableHeaders: null,
  83. allData: null,
  84. tableData: null,
  85. loading: true,
  86. multipleSelection: [],
  87. currentPage: 1,
  88. totalPages: 1,
  89. totalCount: 1,
  90. pageSize: 20,
  91. tool: tool,
  92. permission: permission,
  93. filterTypes: null,
  94. filterModel: {},
  95. baseInfo: baseInfo,
  96. auditId: null,
  97. form: {
  98. id: null,
  99. baseInfo: {USER_NAME: null},
  100. balance: {
  101. unusedPV: 0,
  102. unusedMonth: 0,
  103. },
  104. type: null,
  105. changeAmount: null,
  106. changePv: null,
  107. changeMonth: null,
  108. remark: null,
  109. isShow: null,
  110. auditStatus: null
  111. },
  112. filterStatus: '0',
  113. }
  114. },
  115. methods: {
  116. handleMuli(command) {
  117. if (this.multipleSelection.length < 1) {
  118. this.$message({
  119. message: 'Select the record to operate on', // '请选择要操作的记录',
  120. type: 'warning'
  121. })
  122. return;
  123. }
  124. if (command === 'pass') {
  125. this.handleAudit(null, 'true')
  126. } else if (command === 'reject') {
  127. this.handleAudit(null, 'reject')
  128. }
  129. },
  130. handleChangeType() {
  131. if (this.form.type == 0) {
  132. this.form.changeAmount = this.form.changePv
  133. } else if (this.form.type == 1) {
  134. this.form.changeAmount = this.form.changeMonth
  135. }
  136. },
  137. handleSelectionChange(val) {
  138. this.multipleSelection = val
  139. },
  140. handleCurrentChange(page) {
  141. this.getData(page, this.pageSize)
  142. },
  143. handleSizeChange(pageSize) {
  144. this.getData(this.currentPage, pageSize)
  145. },
  146. handleAudit(row = null, status) {
  147. let obj = this
  148. let title = '确定要通过审核?请输入备注'
  149. if (status === 'reject') {
  150. title = '确定要拒绝审核?请输入备注'
  151. }
  152. this.$prompt(title, 'Notice', { // 提示
  153. confirmButtonText: 'confirm', // 确定
  154. cancelButtonText: 'cancel', // 取消
  155. }).then(({value}) => {
  156. let selectedIds = []
  157. if (row === null) {
  158. for (let val of obj.multipleSelection) {
  159. selectedIds.push(val.ID)
  160. }
  161. } else {
  162. selectedIds.push(row.ID)
  163. }
  164. this.$message({
  165. message: '正在审核请稍后',
  166. type: 'info'
  167. })
  168. return network.postData(`bonus/cf-lx-audit`, {
  169. selectedIds: selectedIds,
  170. remark: value,
  171. auditStatus: status
  172. })
  173. }).then(response => {
  174. this.$message({
  175. message: response,
  176. type: 'success'
  177. })
  178. this.getData(this.currentPage, this.pageSize)
  179. }).catch(response => {
  180. })
  181. },
  182. handleDel(id = null) {
  183. let obj = this
  184. this.$confirm('确定删除选定的数据?', 'Notice', {
  185. confirmButtonText: 'confirm', // 确定
  186. cancelButtonText: 'cancel', // 取消
  187. type: 'warning'
  188. }).then(() => {
  189. let selectedIds = []
  190. if (id === null) {
  191. for (let val of obj.multipleSelection) {
  192. selectedIds.push(val.ID)
  193. }
  194. } else {
  195. selectedIds.push(id)
  196. }
  197. return network.postData(`bonus/cf-lx-audit-delete`, {
  198. selected: selectedIds
  199. })
  200. }).then(response => {
  201. this.$message({
  202. message: response,
  203. type: 'success'
  204. })
  205. obj.getData(obj.currentPage, obj.pageSize)
  206. }).catch(response => {
  207. })
  208. },
  209. handleFilterStatusClick(tab, event) {
  210. filterHelper.clearFilterOption(this)
  211. this.getData()
  212. },
  213. handleFilterUser(filterData) {
  214. filterHelper.handleFilterUser(this, filterData)
  215. },
  216. handleFilter() {
  217. this.getData()
  218. },
  219. getData(page, pageSize) {
  220. let filterData = this.filterModel
  221. filterData.filterStatus = this.filterStatus != '-1' ? `=,${this.filterStatus}` : ''
  222. let vueObj = this
  223. network.getPageData(this, 'bonus/cf-lx-audit-list', page, pageSize, filterData, function (response) {
  224. vueObj.filterTypes = response.filterTypes
  225. vueObj.allData = response
  226. })
  227. },
  228. handleExport(){
  229. this.$confirm(`Are you sure you want to export the current data?`, 'Notice', {
  230. confirmButtonText: 'confirm', // 确定
  231. cancelButtonText: 'cancel', // 取消
  232. type: 'warning'
  233. }).then(() => {
  234. return network.getData(`bonus/cf-lx-audit-export`, this.filterModel)
  235. }).then(response => {
  236. this.$message({
  237. message: response,
  238. type: 'success'
  239. })
  240. }).catch(response => {
  241. })
  242. },
  243. },
  244. }
  245. </script>
  246. <style scoped>
  247. </style>