ProjectAdminUserList.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <template>
  2. <div class="container-fluid">
  3. <Navbar
  4. :title="projectName + '-项目人员'"
  5. :is-go-back="true"
  6. />
  7. <button
  8. type="button"
  9. class="btn btn-success"
  10. style="margin-bottom: 10px; margin-top: 10px;"
  11. @click="edit"
  12. >
  13. 编辑
  14. </button>
  15. <div v-if="editFlag">
  16. <div class="row">
  17. <div
  18. v-for="user in userList"
  19. :key="user.id"
  20. class="col-sm-6 col-md-4"
  21. >
  22. <div class="thumbnail">
  23. <div class="caption">
  24. <h4>
  25. <input
  26. v-model="user.selected"
  27. type="checkbox"
  28. :value="user.userId"
  29. />
  30. {{ user.name }}
  31. </h4>
  32. </div>
  33. </div>
  34. </div>
  35. </div>
  36. <button
  37. type="button"
  38. class="btn btn-danger"
  39. @click="save()"
  40. >
  41. 保存项目管理人员
  42. </button>
  43. </div>
  44. <div v-else>
  45. <p
  46. v-if="projectItemUsers == null || projectItemUsers.length == 0"
  47. class="bg-danger"
  48. style="padding: 15px;"
  49. >
  50. 该项目未有任何人员参与
  51. </p>
  52. <div class="row">
  53. <div
  54. v-for="user in projectItemUsers"
  55. :key="user.id"
  56. class="col-sm-6 col-md-4"
  57. >
  58. <div
  59. class="thumbnail"
  60. @click="openLine2(user)"
  61. >
  62. <div class="caption">
  63. <h4>
  64. {{ user.userName }}
  65. </h4>
  66. </div>
  67. </div>
  68. </div>
  69. </div>
  70. </div>
  71. </div>
  72. </template>
  73. <script>
  74. var Navbar = require('pc-component-v3').default.Navbar;
  75. var Common = require('../common/Common.js');
  76. var Uuid = require('pc-component-v3').default.Uuid;
  77. export default {
  78. components: {
  79. Navbar,
  80. },
  81. data: function () {
  82. return {
  83. projectId: '',
  84. projectName: '',
  85. userList: [],
  86. projectItemUsers: [],
  87. // 编辑的标识符
  88. editFlag: false,
  89. };
  90. },
  91. mounted: function () {
  92. this.initData();
  93. this.initUsers();
  94. },
  95. methods: {
  96. /**
  97. * 初始化项目
  98. */
  99. initData: function () {
  100. this.projectId = this.$route.params.projectId;
  101. this.projectName = this.$route.query.projectName;
  102. },
  103. /**
  104. * 加载所有的人员
  105. * @author ZhangTeng 20190212
  106. */
  107. initUsers: function () {
  108. var _self = this;
  109. // 清空人员数组
  110. _self.userList.splice(0, _self.userList.length);
  111. $.ajax({
  112. url: Common.getApiURL('userResource/listByClientId'),
  113. type: 'get',
  114. dataType: 'json',
  115. contentType: 'application/json',
  116. beforeSend: function (request) {
  117. Common.addTokenToRequest(request);
  118. },
  119. success: function (data) {
  120. for (var index = 0; index < data.length; index++) {
  121. data[index].selected = false;
  122. _self.userList[index] = data[index];
  123. // _self.$set(_self.userList, index, data[index]);
  124. }
  125. _self.initProjectItemUser();
  126. },
  127. error: function (XMLHttpRequest, textStatus, errorThrown) {
  128. Common.processException(XMLHttpRequest, textStatus, errorThrown);
  129. },
  130. });
  131. },
  132. /**
  133. * 打开用户的任务
  134. */
  135. openLine2: function (user) {
  136. var uuid = Uuid.createUUID();
  137. var obj={
  138. userId:user.userId,
  139. userName:user.userName,
  140. };
  141. localStorage.setItem(uuid, JSON.stringify(obj));
  142. this.$router.push('/trace/userNotFinishedTrace/' + uuid);
  143. },
  144. /**
  145. * 编辑人员
  146. * @author ZhangTeng 20190212
  147. */
  148. edit: function () {
  149. this.editFlag = !this.editFlag;
  150. this.initProjectItemUser();
  151. },
  152. /**
  153. * 初始化项目用户
  154. * @author ZhangTeng 20190212
  155. */
  156. initProjectItemUser: function () {
  157. var _self = this;
  158. // 清空项目-人员数组
  159. _self.projectItemUsers.splice(0, _self.projectItemUsers.length);
  160. $.ajax({
  161. url: Common.getApiURL('ProjectItemAdminUserResource/listByProjectItemId'),
  162. type: 'get',
  163. dataType: 'json',
  164. contentType: 'application/json',
  165. data: {
  166. 'projectItemId': this.projectId,
  167. },
  168. beforeSend: function (request) {
  169. Common.addTokenToRequest(request);
  170. },
  171. success: function (data) {
  172. if(data == null){
  173. return;
  174. }
  175. for (var index1 = 0; index1 < _self.userList.length; index1++) {
  176. for (var index = 0; index < data.length; index++) {
  177. if (data[index].userId == _self.userList[index1].id) {
  178. _self.userList[index1].selected = true;
  179. }
  180. }
  181. }
  182. for (let index = 0; index < data.length; index++) {
  183. _self.projectItemUsers[index] = data[index];
  184. // _self.$set(_self.projectItemUsers, index, data[index]);
  185. }
  186. },
  187. error: function (XMLHttpRequest, textStatus, errorThrown) {
  188. Common.processException(XMLHttpRequest, textStatus, errorThrown);
  189. },
  190. });
  191. },
  192. /**
  193. * 保存项目用户
  194. */
  195. save: function () {
  196. var _self = this;
  197. var userIds = [];
  198. for (var index1 = 0; index1 < _self.userList.length; index1++) {
  199. if (true == _self.userList[index1].selected) {
  200. userIds.push(_self.userList[index1].id);
  201. }
  202. }
  203. if (userIds.length == 0) {
  204. Common.showDialog('不能保存', '至少需要选择一个人员', 'error');
  205. return;
  206. }
  207. $.ajax({
  208. url: Common.getApiURL('ProjectItemAdminUserResource/save?projectItemId=' + this.projectId),
  209. type: 'post',
  210. contentType: 'application/json',
  211. data: JSON.stringify(userIds),
  212. beforeSend: function (request) {
  213. Common.addTokenToRequest(request);
  214. },
  215. success: function (data) {
  216. _self.edit();
  217. },
  218. error: function (XMLHttpRequest, textStatus, errorThrown) {
  219. Common.processException(XMLHttpRequest, textStatus, errorThrown);
  220. },
  221. });
  222. },
  223. },
  224. };
  225. </script>
  226. <style scoped>
  227. </style>