WorkflowUserDefine.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <template>
  2. <div class="panel panel-default">
  3. <div class="panel-heading">
  4. {{ $t("lang.workflowUserDefine.approve") }}
  5. </div>
  6. <div class="panel-body">
  7. <div>
  8. <div
  9. v-for="userSelectDefine in userSelectDefineList"
  10. :key="userSelectDefine.nodeId"
  11. >
  12. <UserSelectDefine
  13. ref="userSelectDefine"
  14. :user-select-define="userSelectDefine"
  15. />
  16. </div>
  17. <div>
  18. <div>{{ $t("lang.workflowUserDefine.copyUser") }}</div>
  19. <v-select
  20. v-model="copyUserIds"
  21. :reduce="(user) => user.id"
  22. :options="copyUserList"
  23. label="text"
  24. multiple
  25. @search="listInGroupCompanyByCondition"
  26. />
  27. </div>
  28. <div style="margin-top: 10px">
  29. <button type="button" class="btn btn-primary" @click="apply">
  30. {{ $t("lang.workflowUserDefine.submit") }}
  31. </button>
  32. </div>
  33. </div>
  34. </div>
  35. </div>
  36. </template>
  37. <script>
  38. import Common from '../common/Common.js';
  39. import WorkflowResource from '../api/workflow/WorkflowResource.js';
  40. import UserSelectDefine from './UserSelectDefine.vue';
  41. import vSelect from 'vue-select';
  42. import 'vue-select/dist/vue-select.css';
  43. import UserResource from '../api/base/UserResource.js';
  44. export default {
  45. components: {
  46. UserSelectDefine,
  47. vSelect,
  48. },
  49. // 工作流定义Id
  50. props: {
  51. workFlow: {
  52. type: Object,
  53. default: function(){
  54. return null;
  55. },
  56. },
  57. modelData: {
  58. type: Object,
  59. default: function(){
  60. return null;
  61. },
  62. },
  63. },
  64. emits: ['apply'],
  65. data: function () {
  66. this.Common = Common;
  67. return {
  68. userSelectDefineList: [],
  69. copyUsers: [],
  70. whereClause: 'organization.id IN (:EnvOrganizationIdList)',
  71. // 抄送人Id
  72. copyUserIds: [],
  73. copyUserList: [],
  74. };
  75. },
  76. mounted: function () {
  77. var _self = this;
  78. _self.calculateUserSelect();
  79. _self.listInGroupCompanyByCondition(null, function () {});
  80. },
  81. methods: {
  82. /**
  83. * 审批
  84. * @return {void}
  85. */
  86. apply: function () {
  87. this.$emit('apply');
  88. },
  89. /**
  90. * 计算哪些用户选择项可以执行
  91. */
  92. calculateUserSelect: function () {
  93. let _self = this;
  94. const userSelectCalculateRequest = {
  95. workflowId: this.workFlow.id,
  96. modelData: this.modelData,
  97. };
  98. WorkflowResource.calculateUserSelect(userSelectCalculateRequest).then(
  99. successData => {
  100. if (successData == null) {
  101. _self.userSelectDefineList.splice(
  102. 0,
  103. _self.userSelectDefineList.length,
  104. );
  105. } else {
  106. successData.forEach(function (item) {
  107. item.editable = true;
  108. });
  109. _self.userSelectDefineList = successData;
  110. }
  111. },
  112. errorData => {
  113. Common.processException(errorData);
  114. },
  115. );
  116. },
  117. /**
  118. * 获取审批人的数据
  119. */
  120. getData: function () {
  121. let param = {
  122. userSelectDtos: null,
  123. copyUsers: null,
  124. };
  125. let userSelectDtos = [];
  126. let userSelectDefineList = this.$refs.userSelectDefine;
  127. if (userSelectDefineList != null && userSelectDefineList.length > 0) {
  128. for (let i = 0; i < userSelectDefineList.length; i++) {
  129. let userTaskDto = userSelectDefineList[i].getData();
  130. userSelectDtos.push(userTaskDto);
  131. }
  132. param.userSelectDtos = userSelectDtos;
  133. }
  134. if (Array.isArray(this.copyUserIds)) {
  135. param.copyUsers = this.copyUserIds;
  136. } else {
  137. param.copyUsers = [this.copyUserIds];
  138. }
  139. return param;
  140. },
  141. /**
  142. * 根据姓名获取抄送人用户集合
  143. */
  144. listInGroupCompanyByCondition: function (search, loading) {
  145. let _self = this;
  146. const searchQueryParam = {
  147. range: {
  148. start: 0,
  149. length: 100,
  150. },
  151. conditional: search,
  152. };
  153. loading(true);
  154. //修复审批节点选择人员显示文件编码bug
  155. var selectList = [];
  156. if (
  157. this.copyUserIds != undefined &&
  158. this.copyUserList != undefined &&
  159. this.copyUserList.length > 0 &&
  160. this.copyUserIds.length > 0
  161. ) {
  162. this.copyUserList.forEach(function (value, index) {
  163. var id = value.id;
  164. _self.copyUserIds.forEach(function (item) {
  165. if (item == id) {
  166. selectList.push(value);
  167. }
  168. });
  169. });
  170. }
  171. UserResource.listInGroupCompanyByCondition(searchQueryParam).then(
  172. successData => {
  173. if (successData != null && successData.resultList != null) {
  174. successData.resultList.forEach(function (user) {
  175. user.text = user.name + '(';
  176. if(user.organizations != null && user.organizations.length > 0){
  177. let isFirst = true;
  178. user.organizations.forEach(item => {
  179. if(isFirst === true){
  180. user.text += item.organizationName;
  181. isFirst = false;
  182. }else{
  183. user.text += (',' + item.organizationName);
  184. }
  185. });
  186. }
  187. user.text += ')';
  188. });
  189. _self.copyUserList = successData.resultList;
  190. } else {
  191. _self.copyUserList = [];
  192. }
  193. loading(false);
  194. },
  195. errorData => {
  196. Common.processException(errorData);
  197. loading(false);
  198. },
  199. );
  200. },
  201. },
  202. };
  203. </script>
  204. <style scoped>
  205. </style>