doDistribution.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. <template>
  2. <el-dialog title="权限分配" width="90%" top="1%" v-if="visible" :visible.sync="visible">
  3. <el-row :gutter="20">
  4. <el-col :span="12">
  5. <el-card>
  6. <el-button @click="loadSingleBpmn" type="primary">初始化</el-button>
  7. <el-table
  8. class="mb20"
  9. :data="tableData3"
  10. :header-cell-style="{background:'#e0f3ff',color:'#5f95b7'}"
  11. cell-click="cellClick"
  12. border
  13. stripe
  14. highlight-current-row="true"
  15. style="width: 100%"
  16. @cell-click="cellClick"
  17. >
  18. <el-table-column align="center" prop="id" label="ID"></el-table-column>
  19. <el-table-column align="center" prop="procdefkey" label="流程定义key"></el-table-column>
  20. <el-table-column align="center" prop="procdefname" label="流程定义名称"></el-table-column>
  21. <el-table-column align="center" prop="taskdefkey" label="任务key"></el-table-column>
  22. <el-table-column align="center" prop="taskname" label="名称"></el-table-column>
  23. <el-table-column align="center" prop="usergroup" label="角色"></el-table-column>
  24. </el-table>
  25. </el-card>
  26. </el-col>
  27. <el-col :span="12">
  28. <el-card>
  29. <el-button @click="doSure" type="primary">确认分配</el-button>
  30. <!-- @selection-change="changeFun" -->
  31. <el-table
  32. class="mb20"
  33. :data="tableData2"
  34. height="500px"
  35. :header-cell-style="{background:'#e0f3ff',color:'#5f95b7'}"
  36. border
  37. stripe
  38. ref="roleTable"
  39. highlight-current-row="true"
  40. style="width: 100%"
  41. >
  42. <el-table-column align="center" type="selection" width="55"></el-table-column>
  43. <el-table-column align="center" prop="code" label="角色ID"></el-table-column>
  44. <el-table-column align="center" prop="name" label="角色名称"></el-table-column>
  45. <el-table-column align="center" prop="org" label="所属部门"></el-table-column>
  46. <el-table-column align="center" prop="description" label="角色描述"></el-table-column>
  47. <el-table-column align="center" prop="locked" label="角色状态">
  48. <template slot-scope="scope">
  49. <el-tag type="success" v-show="!scope.row.locked">启用</el-tag>
  50. <el-tag type="danger" v-show="scope.row.locked">停用</el-tag>
  51. </template>
  52. </el-table-column>
  53. </el-table>
  54. </el-card>
  55. </el-col>
  56. </el-row>
  57. <span slot="footer" class="dialog-footer">
  58. <!-- <el-button type="primary" @click="doAprove()">确认</el-button> -->
  59. <el-button @click="visible = false">关闭</el-button>
  60. </span>
  61. </el-dialog>
  62. </template>
  63. <script>
  64. // import moment from 'moment';
  65. // //import util from '@/util'
  66. export default {
  67. data() {
  68. return {
  69. selectIndex:null,
  70. items: [],
  71. visible: false,
  72. pageTotal: 0,
  73. gid:null,
  74. procdefkey: null,
  75. processDefinitionId: null,
  76. usergroup:"",
  77. form: {
  78. name: "",
  79. pageNum: "1",
  80. pageSize: "9999"
  81. },
  82. tableData3: [
  83. {
  84. date: "2016-05-03",
  85. name: "王小虎",
  86. address: "上海市普陀区金沙"
  87. }
  88. ],
  89. tableData2: [],
  90. selectedRows: []
  91. };
  92. },
  93. created() {},
  94. methods: {
  95. init(key, id) {
  96. this.visible = true;
  97. this.procdefkey = key;
  98. this.processDefinitionId = id;
  99. this.doSearch();
  100. },
  101. cellClick(row, column, cell, event) {
  102. // let self = this;
  103. // var obj ={
  104. // url:this.$url.workflowdef.getList,
  105. // data:this.form
  106. // }
  107. // this.common.httpPost(obj,success);
  108. // function success(data){
  109. // self.list = data.data.rows
  110. // self.total = data.data.total
  111. // }
  112. },
  113. changeFun(){
  114. var arr = [];
  115. let val = this.$refs.roleTable.selection;
  116. val.forEach((element)=>{
  117. arr.push(element.id)
  118. })
  119. this.usergroup = arr.join(",")
  120. },
  121. doSearch() {
  122. let self = this;
  123. var obj = {
  124. url: this.$url.processinst.getUserTaskList,
  125. data: {
  126. procdefkey: this.procdefkey
  127. }
  128. };
  129. this.common.httpPost(obj, success);
  130. function success(data) {
  131. if(data.data.length==0){
  132. self.loadSingleBpmn();
  133. }else{
  134. self.tableData3 = data.data;
  135. self.gid = data.data[0].id;
  136. self.usergroup = data.data[0].usergroup
  137. self.doSearchRole(1);
  138. }
  139. }
  140. },
  141. doSearchRole(value) {
  142. this.form.pageNum = value;
  143. let self = this;
  144. // var obj = {
  145. // url: this.$url.roleManag.getList,
  146. // data: this.form
  147. // };
  148. // this.common.httpPost(obj, success);
  149. // function success(data) {
  150. // self.tableData2 = data.rows;
  151. // self.cheacked();
  152. // }
  153. this.$http({
  154. url: this.$url.roleManag.getList,
  155. method: "post",
  156. headers: {
  157. "Content-Type": "application/json",
  158. },
  159. data: this.form,
  160. }).then((res) => {
  161. self.tableData2 = res.data.rows;
  162. self.cheacked();
  163. });
  164. },
  165. loadSingleBpmn() {
  166. let self = this;
  167. var obj = {
  168. url: this.$url.processinst.loadSingleBpmn,
  169. data: {
  170. processDefinitionId: this.processDefinitionId
  171. }
  172. };
  173. this.common.httpPost(obj, success);
  174. function success(data) {
  175. self.doSearch();
  176. }
  177. },
  178. doSure(){
  179. this.changeFun();
  180. let self = this;
  181. console.log(this.gid)
  182. var obj = {
  183. url: this.$url.processinst.setPermission,
  184. data: {
  185. id: this.gid,
  186. usergroup:this.usergroup
  187. }
  188. };
  189. this.common.httpPost(obj, success);
  190. function success(data) {
  191. self.$message({
  192. message:"已分配",
  193. type:"success"
  194. })
  195. self.doSearch();
  196. }
  197. },
  198. cheacked(){
  199. let self = this;
  200. self.$refs.roleTable.clearSelection();
  201. if(!this.usergroup){
  202. return false;
  203. }
  204. let arr = this.usergroup.split(",");
  205. let arr1 = []
  206. this.tableData2.forEach((elment,index)=>{
  207. arr.forEach((i,o)=>{
  208. if(elment.id==i){
  209. arr1.push(index)
  210. }
  211. })
  212. })
  213. this.$nextTick(function () {
  214. // if(arr1.length==0){
  215. // }else{
  216. arr1.forEach((ob)=>{
  217. self.$refs.roleTable.toggleRowSelection(self.tableData2[ob],true);
  218. })
  219. // }
  220. })
  221. },
  222. cellClick(row){
  223. this.usergroup = row.usergroup;
  224. this.gid = row.id;
  225. this.cheacked();
  226. }
  227. }
  228. };
  229. </script>