综合办公系统
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

arrangeProject.vue 6.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <!--
  2. * @Author: ysh
  3. * @Date: 2024-03-19 09:24:06
  4. * @LastEditors: wrh
  5. * @LastEditTime: 2024-04-02 17:45:20
  6. -->
  7. <template>
  8. <div class="app-container">
  9. <h2 style="text-align: center;">项目安排</h2>
  10. <el-form :model="form" :rules="rules" label-width="100px" :disable="disable">
  11. <el-form-item label="承担部门:" prop="undertakingDept">
  12. <el-select v-model="form.deptId" multiple clearable style="width:500px" @change="getDeptLeader">
  13. <el-option v-for="item in deptList" :key="item.deptId" :label="item.deptName" :value="item.deptId"
  14. v-if="item.deptName != '四川中水成勘院测绘工程有限责任公司'">
  15. </el-option>
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item label="部门负责人" prop="deptLeader">
  19. <el-select v-model="form.deptLeader" multiple clearable style="width:500px">
  20. <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId"
  21. v-if="item.nickName != 'admin'">
  22. </el-option>
  23. </el-select>
  24. </el-form-item>
  25. <el-form-item label="项目负责人" prop="projectLeader">
  26. <el-tag effect="plain" type="warning" style="margin-right: 10px;">{{ form.projectLeader }}</el-tag>
  27. <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="choosePeople">选择</el-button>
  28. </el-form-item>
  29. <el-form-item label="现场负责人" prop="siteLeader">
  30. <el-select v-model="form.siteLeader" filterable clearable style="width:500px">
  31. <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId"
  32. v-if="item.nickName != 'admin'">
  33. </el-option>
  34. </el-select>
  35. </el-form-item>
  36. <el-form-item label="项目预算">
  37. <el-input v-model="form.deptLeader"></el-input>
  38. </el-form-item>
  39. </el-form>
  40. <!-- 人员选择对话框 -->
  41. <el-dialog width="320px" title="选择项目负责人" :visible.sync="peopleVisible" append-to-body>
  42. <el-form>
  43. <el-form-item label="部门:">
  44. <el-select v-model="peopleForm.deptId" @change="handleChangeDept">
  45. <el-option v-for="item in peopleForm.deptList" :key="item.deptId" :label="item.deptName" :value="item.deptId"
  46. v-if="item.deptName != '四川中水成勘院测绘工程有限责任公司'">
  47. </el-option>
  48. </el-select>
  49. </el-form-item>
  50. <el-form-item label="人员:">
  51. <el-select v-model="peopleForm.userId">
  52. <el-option v-for="item in peopleForm.userList" :key="item.userId" :label="item.nickName" :value="item.userId">
  53. </el-option>
  54. </el-select>
  55. </el-form-item>
  56. <el-form-item style="text-align: center;">
  57. <el-button @click="confirmPeople" type="primary">确定</el-button>
  58. <el-button @click="cancelChoosePeople">取消</el-button>
  59. </el-form-item>
  60. </el-form>
  61. </el-dialog>
  62. <div slot="footer" class="dialog-footer" style="text-align: center;">
  63. <el-button type="primary" @click="confirmPlanForm">确 定</el-button>
  64. <el-button @click="cancel">取 消</el-button>
  65. </div>
  66. </div>
  67. </template>
  68. <script>
  69. import { listDept } from '@/api/system/dept'
  70. import { listUser } from '@/api/system/user'
  71. import { getUsersDeptLeaderByDept } from '@/api/system/post'
  72. import { complete, rejectTask, returnList, returnTask, getNextFlowNode, delegate, flowTaskForm, } from "@/api/flowable/todo";
  73. export default {
  74. props: {
  75. disable: {
  76. type: Boolean,
  77. require: true
  78. },
  79. taskForm: {
  80. type: Object,
  81. required: true
  82. }
  83. },
  84. data() {
  85. return {
  86. form: {},
  87. rules: {},
  88. deptList: [],
  89. userList: [],
  90. deptLeaderList: [],
  91. file: {
  92. fileList: []
  93. },
  94. peopleVisible: false,
  95. peopleForm: {
  96. deptId: '',
  97. deptList: [],
  98. userId: '',
  99. userList: []
  100. },
  101. }
  102. },
  103. created() {
  104. this.getDeptList();
  105. this.getUserList();
  106. },
  107. methods: {
  108. getUserList() {
  109. listUser({ pageSize: 9999, pageNum: 1 }).then(res => {
  110. this.userList = res.rows
  111. })
  112. },
  113. getDeptList() {
  114. listDept({
  115. deptName: undefined,
  116. status: undefined
  117. }).then(res => {
  118. this.deptList = res.data
  119. this.peopleForm.deptList = res.data
  120. })
  121. },
  122. getDeptLeader(val) {
  123. this.deptLeaderList = [];
  124. for (let v of val) {
  125. getUsersDeptLeaderByDept({ deptId: v }).then(res => {
  126. this.deptLeaderList.push(res.data.userId);
  127. this.form.deptLeader = this.deptLeaderList;
  128. })
  129. }
  130. },
  131. // 人员选择
  132. choosePeople() {
  133. this.peopleVisible = true;
  134. },
  135. // 改变部门选择
  136. handleChangeDept(deptId) {
  137. this.peopleForm.userId = '';
  138. listUser({ pageSize: 999999, deptId }).then(res => {
  139. this.peopleForm.userList = res.rows
  140. })
  141. },
  142. // 确定项目负责人
  143. confirmPeople() {
  144. this.form.projectLeader = this.peopleForm.userId;
  145. this.form.projectLeader = this.tagLeader()
  146. this.peopleVisible = false
  147. },
  148. tagLeader() {
  149. if (this.form.projectLeader == '' || this.form.projectLeader == undefined || this.form.projectLeader == null) {
  150. return undefined
  151. } else {
  152. for (let user of this.peopleForm.userList) {
  153. if (this.form.projectLeader == user.userId) {
  154. return user.nickName
  155. }
  156. }
  157. }
  158. },
  159. cancelChoosePeople() {
  160. this.peopleForm.deptId = '';
  161. this.peopleForm.userId = '';
  162. this.peopleVisible = false;
  163. },
  164. confirmPlanForm() {
  165. let formData = new FormData();
  166. let form = JSON.stringify(this.form);
  167. formData.append("form", form);
  168. const params = { taskId: this.taskForm.taskId };
  169. // 获取下一个流程节点
  170. getNextFlowNode(params).then(res => {
  171. this.$set(this.taskForm.variables, "budgetInitiator", this.peopleForm.userId);
  172. getUsersDeptLeaderByDept({ deptId: 105 }).then(res => {
  173. let userId = res.data.userId;
  174. this.$set(this.taskForm.variables, "approval", userId);
  175. complete(this.taskForm).then(response => {
  176. this.$modal.msgSuccess(response.msg);
  177. this.$emit('goBack')
  178. });
  179. })
  180. })
  181. },
  182. cancel() {
  183. this.form = {}
  184. },
  185. }
  186. }
  187. </script>
  188. <style lang="scss" scoped></style>