index.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <template>
  2. <div class="ele-body">
  3. <el-card shadow="never" v-loading="loading">
  4. <search class="seep-search" user="recycleName" @search="reload"></search>
  5. <!-- 数据表格 -->
  6. <ele-pro-table
  7. ref="table"
  8. :columns="columns"
  9. :datasource="datasource"
  10. cache-key="systemRoleTable"
  11. :pageSize="20"
  12. >
  13. <!-- 表头工具栏 -->
  14. <template v-slot:toolbar>
  15. <el-button
  16. size="small"
  17. type="primary"
  18. icon="el-icon-plus"
  19. class="ele-btn-icon"
  20. @click="openEdit('', 'add')"
  21. v-if="$hasPermission('eom:aftersalesaccessoryapply:save')"
  22. >新建</el-button
  23. >
  24. </template>
  25. <template v-slot:code="{ row }">
  26. <el-link
  27. type="primary"
  28. :underline="false"
  29. @click="openEdit(row, 'view')"
  30. >{{ row.code }}</el-link
  31. >
  32. </template>
  33. <template v-slot:action="{ row }">
  34. <el-link
  35. v-if="row.source == 0 && $hasPermission('eom:aftersalesaccessoryapply:update')"
  36. type="primary"
  37. :underline="false"
  38. @click="openEdit(row, 'edit')"
  39. >修改</el-link
  40. >
  41. <el-popconfirm
  42. class="ele-action"
  43. title="确定要删除当前故障吗?"
  44. @confirm="deleteRecycle(row)"
  45. >
  46. <template v-slot:reference>
  47. <el-link
  48. v-if="row.source == 0 && $hasPermission('eom:aftersalesaccessoryapply:delete')"
  49. type="danger"
  50. icon="el-icon-delete"
  51. :underline="false"
  52. >删除</el-link
  53. >
  54. </template>
  55. </el-popconfirm>
  56. </template>
  57. </ele-pro-table>
  58. </el-card>
  59. <recycleDialog ref="recycleRef" @refresh="reload" />
  60. </div>
  61. </template>
  62. <script>
  63. import recycleDialog from './component/recycleDialog.vue';
  64. import search from './component/search.vue';
  65. import {
  66. recyclePage,
  67. recycleDelete
  68. } from '@/api/salesServiceManagement/index';
  69. export default {
  70. components: {
  71. search,
  72. recycleDialog
  73. },
  74. data() {
  75. return {
  76. // 加载状态
  77. loading: false
  78. };
  79. },
  80. computed: {
  81. columns() {
  82. return [
  83. {
  84. columnKey: 'index',
  85. label: '序号',
  86. type: 'index',
  87. width: 55,
  88. align: 'center',
  89. showOverflowTooltip: true,
  90. fixed: 'left'
  91. },
  92. {
  93. slot: 'code',
  94. prop: 'code',
  95. label: '编码',
  96. align: 'center',
  97. showOverflowTooltip: true
  98. },
  99. {
  100. prop: 'orderWorkCode',
  101. label: '工单编码',
  102. align: 'center',
  103. showOverflowTooltip: true
  104. },
  105. {
  106. prop: 'demandCode',
  107. label: '售后需求编码',
  108. align: 'center',
  109. showOverflowTooltip: true
  110. },
  111. {
  112. prop: 'categoryName',
  113. label: '物品名称',
  114. align: 'center',
  115. showOverflowTooltip: true,
  116. formatter: (row) => {
  117. if (!row.details) return '';
  118. let str = '';
  119. row.details.map((el, idx) => {
  120. if (idx + 1 == row.details.length) {
  121. str += el.categoryName;
  122. } else {
  123. str = str + '' + el.categoryName + ',';
  124. }
  125. });
  126. return str;
  127. }
  128. },
  129. {
  130. prop: 'contactName',
  131. label: '客户名称',
  132. align: 'center',
  133. showOverflowTooltip: true
  134. },
  135. {
  136. prop: 'categoryName',
  137. label: '设备名称',
  138. align: 'center',
  139. showOverflowTooltip: true,
  140. formatter: (row) => {
  141. if (!row.deviceDetails) return '';
  142. let str = '';
  143. row.deviceDetails.map((el, idx) => {
  144. if (idx + 1 == row.deviceDetails.length) {
  145. str += el.categoryName;
  146. } else {
  147. str = str + '' + el.categoryName + ',';
  148. }
  149. });
  150. return str;
  151. }
  152. },
  153. {
  154. prop: 'recycleDeptName',
  155. label: '回收部门',
  156. align: 'center',
  157. showOverflowTooltip: true
  158. },
  159. {
  160. prop: 'recycleName',
  161. label: '回收人',
  162. align: 'center',
  163. showOverflowTooltip: true
  164. },
  165. {
  166. prop: 'createTime',
  167. label: '创建时间',
  168. align: 'center',
  169. showOverflowTooltip: true
  170. },
  171. {
  172. prop: 'usageTime',
  173. label: '回收时间',
  174. align: 'center',
  175. showOverflowTooltip: true
  176. },
  177. {
  178. columnKey: 'action',
  179. slot: 'action',
  180. label: '操作',
  181. align: 'center',
  182. width: 180,
  183. resizable: false,
  184. showOverflowTooltip: true
  185. }
  186. ];
  187. }
  188. },
  189. created() {},
  190. methods: {
  191. /* 表格数据源 */
  192. async datasource({ page, limit, where, order }) {
  193. return recyclePage({ pageNum: page, size: limit, ...where });
  194. },
  195. /* 刷新表格 */
  196. reload(where) {
  197. this.$refs.table.reload({ page: 1, where });
  198. },
  199. openEdit(row, type) {
  200. this.$refs.recycleRef.init(row, type);
  201. },
  202. deleteRecycle(row) {
  203. recycleDelete([row.id]).then((res) => {
  204. if (res) {
  205. this.$message.success('操作成功!');
  206. this.reload();
  207. }
  208. });
  209. }
  210. }
  211. };
  212. </script>
  213. <style lang="scss" scoped>
  214. ::v-deep .el-input__inner::placeholder {
  215. font-size: 13px;
  216. }
  217. ::v-deep .seep-search {
  218. .el-input__inner {
  219. padding: 0 5px 0 10px;
  220. }
  221. }
  222. </style>