userTable.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. <template>
  2. <div>
  3. <ele-pro-table
  4. ref="table"
  5. :needPage="false"
  6. :columns="columns"
  7. :datasource="datasource"
  8. :selection.sync="selection"
  9. cache-key="systemRoleTable21"
  10. >
  11. <!-- 表头工具栏 -->
  12. <template v-slot:toolbar>
  13. <el-button
  14. size="small"
  15. type="primary"
  16. icon="el-icon-plus"
  17. class="ele-btn-icon"
  18. @click="handlAdd"
  19. >
  20. 新增
  21. </el-button>
  22. <el-button
  23. size="small"
  24. @click="handAllDel"
  25. icon="el-icon-delete"
  26. type="danger"
  27. >
  28. 删除
  29. </el-button>
  30. </template>
  31. <!-- 操作列 -->
  32. <template v-slot:action="{ row }">
  33. <el-popconfirm
  34. class="ele-action"
  35. title="确定要删除此角色吗?"
  36. @confirm="remove(row)"
  37. >
  38. <template v-slot:reference>
  39. <el-link type="danger" :underline="false" icon="el-icon-delete">
  40. 删除
  41. </el-link>
  42. </template>
  43. </el-popconfirm>
  44. <el-link :underline="false" v-if="row.isLeader"> 已设为班组长 </el-link>
  45. <el-link
  46. type="primary"
  47. :underline="false"
  48. v-else
  49. @click="setLeader(row)"
  50. >
  51. 设为班组长
  52. </el-link>
  53. </template>
  54. </ele-pro-table>
  55. <staffSelection
  56. ref="staffSelection"
  57. @confirm="confirmStaffSelection"
  58. :factoryId="factoryId"
  59. ></staffSelection>
  60. </div>
  61. </template>
  62. <script>
  63. import staffSelection from './staffSelection.vue';
  64. export default {
  65. components: {
  66. staffSelection
  67. },
  68. props:{
  69. factoryId:String
  70. },
  71. data () {
  72. return {
  73. columns: [
  74. {
  75. columnKey: 'selection',
  76. type: 'selection',
  77. width: 45,
  78. align: 'center',
  79. fixed: 'left'
  80. },
  81. {
  82. width: 45,
  83. type: 'index',
  84. columnKey: 'index',
  85. align: 'center',
  86. },
  87. {
  88. prop: 'name',
  89. label: '姓名'
  90. },
  91. {
  92. prop: 'jobNumber',
  93. label: '工号'
  94. },
  95. {
  96. prop: 'phone',
  97. label: '电话'
  98. },
  99. {
  100. columnKey: 'action',
  101. label: '操作',
  102. width: 220,
  103. align: 'center',
  104. resizable: false,
  105. slot: 'action',
  106. showOverflowTooltip: true,
  107. fixed:'right'
  108. }
  109. ],
  110. datasource: [],
  111. deleteUserIds: [],
  112. selection: []
  113. };
  114. },
  115. methods: {
  116. remove (row) {
  117. let index = this.datasource.findIndex((n) => n.id == row.id);
  118. if (index !== -1) {
  119. this.datasource.splice(index, 1);
  120. this.deleteUserIds.push((row.id));
  121. this.$emit('deleteIds', this.deleteUserIds);
  122. }
  123. },
  124. handAllDel() {
  125. console.log(this.selection);
  126. console.log(this.datasource)
  127. this.selection.forEach((e) => {
  128. this.datasource.forEach((f,i) => {
  129. if(e.id == f.id){
  130. this.datasource.splice(i, 1);
  131. this.deleteUserIds.push((f.id));
  132. this.$emit('deleteIds', this.deleteUserIds);
  133. }
  134. })
  135. });
  136. },
  137. handlAdd () {
  138. if(!this.factoryId){
  139. this.$message.warning('请先选择所属工厂!');
  140. return
  141. }
  142. this.$refs.staffSelection.open(
  143. JSON.parse(JSON.stringify(this.datasource))
  144. );
  145. },
  146. confirmStaffSelection (data) {
  147. data.forEach((element) => {
  148. if (!('isLeader' in element)) {
  149. // isLeader 是否为班组长
  150. element.isLeader = false;
  151. }
  152. });
  153. this.datasource = data;
  154. this.setDefaultLeader();
  155. },
  156. // 设置默认班组长
  157. setDefaultLeader () {
  158. if (this.datasource.length <= 0) {
  159. return;
  160. }
  161. let result = this.datasource.find((n) => n.isLeader == true);
  162. if (!result) {
  163. this.datasource[0].isLeader = true;
  164. }
  165. },
  166. // 设置班组长
  167. setLeader (row) {
  168. console.log(row);
  169. this.datasource.forEach((n) => {
  170. n.isLeader = false;
  171. });
  172. row.isLeader = true;
  173. },
  174. // 设置班组长(id)
  175. setLeaderId (id) {
  176. let result = this.datasource.find((n) => id == n.id);
  177. if (result) {
  178. this.datasource.forEach((n) => {
  179. n.isLeader = false;
  180. });
  181. result.isLeader = true;
  182. }
  183. },
  184. // 清空表格
  185. restTable () {
  186. this.datasource = [];
  187. },
  188. // 获取班组长id
  189. getTwi () {
  190. let result = this.datasource.find((n) => n.isLeader == true);
  191. if (result) {
  192. return result.id;
  193. } else {
  194. return null;
  195. }
  196. }
  197. }
  198. };
  199. </script>