综合办公系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. <template>
  2. <div class="mt20" style="width:99%">
  3. <div class="nav-btn" v-if="taskName != ''">
  4. <div>
  5. <el-button class="mb20" type="primary" plain size="mini" icon="el-icon-plus" @click="addAchi">成果汇交</el-button>
  6. </div>
  7. <div>
  8. <el-button icon="el-icon-refresh" circle size="mini" @click="getAchiData()"></el-button>
  9. </div>
  10. </div>
  11. <el-table :data="achiList" style="width: 100%" class="custom-table">
  12. <el-table-column type="index" label="序号" width="50" />
  13. <el-table-column label="成果汇交时间" prop="submitTime" width="100" />
  14. <el-table-column label="生产部门检查员" prop="produceInspector" width="120">
  15. <template slot-scope="scope">
  16. {{ findUserName(scope.row.produceInspector) }}
  17. </template>
  18. </el-table-column>
  19. <el-table-column label="质量检查员" prop="qualityInspector" show-overflow-tooltip width="120">
  20. <template slot-scope="scope">
  21. {{ findUserName(scope.row.qualityInspector) }}
  22. </template>
  23. </el-table-column>
  24. <el-table-column label="技术部负责人" prop="deptLeader" show-overflow-tooltip width="120">
  25. <template slot-scope="scope">
  26. {{ findUserName(scope.row.deptLeader) }}
  27. </template>
  28. </el-table-column>
  29. <el-table-column label="归档人" prop="archiver" show-overflow-tooltip width="120">
  30. <template slot-scope="scope">
  31. {{ findUserName(scope.row.archiver) }}
  32. </template>
  33. </el-table-column>
  34. <el-table-column label="资料接受时间" prop="receiveTime" show-overflow-tooltip width="120" />
  35. <el-table-column label="质量检查时间" prop="qualityTime" show-overflow-tooltip width="120" />
  36. <el-table-column label="生产部门检查时间" prop="produceTime" show-overflow-tooltip width="130" />
  37. <el-table-column label="归档时间" prop="archiveTime" show-overflow-tooltip width="120" />
  38. <el-table-column label="生产部门意见" prop="produceComment" show-overflow-tooltip width="120" />
  39. <el-table-column label="质量检查意见" prop="qualityComment" show-overflow-tooltip width="120" />
  40. <el-table-column label="技术部审核意见" prop="deptComment" show-overflow-tooltip width="120" />
  41. <el-table-column label="归档意见" prop="archiveComment" show-overflow-tooltip width="120" />
  42. <el-table-column label="操作" fixed="right" header-align="center">
  43. <template slot-scope="scope">
  44. <el-button icon="el-icon-view" type="text" size="mini" @click="handleLook(scope.row)">查看明细</el-button>
  45. </template>
  46. </el-table-column>
  47. </el-table>
  48. <el-dialog title=" 成果明细" :visible.sync="open" append-to-body width="65%">
  49. <archive-form :taskForm="openObj" :taskName="''" :isFlow="false"></archive-form>
  50. <!-- <el-form ref="form" :model="form" label-width="150px">
  51. <el-form-item label="项目信息:" prop="projectName">
  52. {{ form.projectName }}
  53. </el-form-item>
  54. <el-form-item label="成果汇交时间:" prop="submitTime">
  55. {{ form.submitTime }}
  56. </el-form-item>
  57. <el-form-item label="生产部门检查员:" prop="submitTime">
  58. {{ findUserName(form.produceInspector) }}
  59. </el-form-item>
  60. <el-form-item label="质量检查员:" prop="submitTime">
  61. {{ findUserName(form.qualityInspector) }}
  62. </el-form-item>
  63. <el-form-item label="技术部负责人:" prop="submitTime">
  64. {{ findUserName(form.deptLeader) }}
  65. </el-form-item>
  66. <el-form-item label="归档人:" prop="submitTime">
  67. {{ findUserName(form.archiver) }}
  68. </el-form-item>
  69. <el-form-item label="资料接受时间:" prop="submitTime">
  70. {{ form.receiveTime }}
  71. </el-form-item>
  72. <el-form-item label="质量检查时间:" prop="submitTime">
  73. {{ form.qualityTime }}
  74. </el-form-item>
  75. <el-form-item label="生产部门检查时间:" prop="submitTime">
  76. {{ form.produceTime }}
  77. </el-form-item>
  78. <el-form-item label="归档时间:" prop="submitTime">
  79. {{ form.archiveTime }}
  80. </el-form-item>
  81. </el-form> -->
  82. </el-dialog>
  83. </div>
  84. </template>
  85. <script>
  86. import { listArchive } from "@/api/oa/archive/archive"
  87. import { listDefinition } from "@/api/flowable/definition";
  88. import { getNextFlowNodeByStart } from "@/api/flowable/todo";
  89. import { definitionStart, flowXmlAndNode } from "@/api/flowable/definition";
  90. import { getProject } from "@/api/oa/project/project";
  91. import { todoList } from "@/api/flowable/todo";
  92. import { Snowflake } from '@/utils/snowFlake.js'
  93. import { MessageBox } from 'element-ui'
  94. import archiveForm from '../archiveForm.vue';
  95. export default {
  96. components: { archiveForm },
  97. props: {
  98. taskForm: {
  99. type: Object,
  100. required: true
  101. },
  102. taskName: {
  103. type: String,
  104. default: ''
  105. }
  106. },
  107. data() {
  108. return {
  109. achiList: [],
  110. definitionList: [],
  111. open:false,
  112. openObj:{},
  113. form:{
  114. projectName:''
  115. }
  116. }
  117. },
  118. mounted() {
  119. this.getAchiData()
  120. this.listDefinition();
  121. },
  122. methods: {
  123. getAchiData() {
  124. listArchive({ projectId: this.taskForm.formId }).then(res => {
  125. if (res.code == 200) {
  126. this.achiList = res.rows
  127. }
  128. })
  129. },
  130. findUserName(id) {
  131. let userList = this.$store.state.user.userList
  132. let user = userList.find(obj => obj.userId == id)
  133. if (user)
  134. return user.nickName
  135. else {
  136. return ''
  137. }
  138. },
  139. listDefinition() {
  140. listDefinition({
  141. pageNum: 1,
  142. pageSize: 9999,
  143. name: '成果归档'
  144. }).then(response => {
  145. this.definitionList = response.data.records;
  146. });
  147. },
  148. handleLook(row) {
  149. this.form= row
  150. this.openObj.formId = row.archiveId
  151. getProject(row.projectId).then(res=>{
  152. if(res.data)
  153. this.$set(this.form,'projectName',res.data.projectNumber + '-' + res.data.projectName)
  154. this.open = true
  155. })
  156. },
  157. addAchi() {
  158. let row = this.definitionList[0];
  159. let formId = new Snowflake(1n, 1n, 0n).nextId().toString();
  160. getNextFlowNodeByStart({ deploymentId: row.deploymentId, variables: { formId: formId } }).then(res => {
  161. let data = res.data
  162. const variables = {};
  163. const formData = {};
  164. formData.formId = formId
  165. if (row.id) {
  166. MessageBox.confirm('是否发起成果归档?', '系统提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning' }).then(() => {
  167. variables.variables = formData;
  168. // 启动流程并将表单数据加入流程变量
  169. definitionStart(row.id, JSON.stringify(variables)).then(res => {
  170. this.$modal.msgSuccess(res.msg);
  171. let procInstanceId = res.data;
  172. todoList({
  173. pageNum: 1,
  174. pageSize: 99999999,
  175. processInsId: procInstanceId
  176. }).then(toDoRes => {
  177. let records = toDoRes.data.records;
  178. if (records.length == 1) {
  179. records = records[0]
  180. }
  181. this.$router.push({
  182. path: '/applyForm/archive',
  183. query: {
  184. procInsId: records.procInsId,
  185. executionId: records.executionId,
  186. deployId: records.deployId,
  187. taskId: records.taskId,
  188. taskName: records.taskName,
  189. startUser: records.startUserName + '--' + records.startDeptName,
  190. formId: formData.formId,
  191. procDefName: records.procDefName,
  192. projectId: this.taskForm.formId
  193. }
  194. })
  195. })
  196. })
  197. })
  198. }
  199. })
  200. },
  201. }
  202. }
  203. </script>
  204. <style lang="scss" scoped>
  205. .nav-btn {
  206. display: flex;
  207. justify-content: space-between;
  208. }
  209. .custom-table {
  210. display: block;
  211. /* 确保表格不会超出容器 */
  212. overflow-x: auto;
  213. /* 横向滚动条 */
  214. }
  215. </style>