formDialog.vue 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. <template class="deptmentAudit_formDialog">
  2. <div>
  3. <el-form
  4. ref="deptmentAuditFrom"
  5. style="overflow-y: auto;margin-top: 15px;"
  6. :rules="rules"
  7. :model="deptmentAuditFrom"
  8. label-width="110px"
  9. size="small"
  10. >
  11. <el-row v-if="disabled">
  12. <el-col v-if="approvalPersonOptions.length" :span="8">
  13. <el-form-item label="下一步审核人" prop="auditPersonId">
  14. <el-select
  15. v-model="deptmentAuditFrom.auditPersonId"
  16. style="width: 100%"
  17. clearable
  18. placeholder="请选择审核人"
  19. @change="changeAudit"
  20. >
  21. <el-option
  22. v-for="item in approvalPersonOptions"
  23. :key="item.approvalPersonId"
  24. :label="item.approvalPersonName"
  25. :value="item.approvalPersonId + ''"
  26. />
  27. </el-select>
  28. </el-form-item>
  29. </el-col>
  30. <el-col :span="8">
  31. <el-form-item label="处理人" prop="registerUser">
  32. <el-input v-model="deptmentAuditFrom.registerUser" readonly placeholder="系统自动生成" disabled />
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="8">
  36. <el-form-item label="处理时间" prop="registerDate">
  37. <el-input v-model="deptmentAuditFrom.registerDate" readonly placeholder="系统自动生成" disabled />
  38. </el-form-item>
  39. </el-col>
  40. <el-col :span="24">
  41. <el-form-item label="处理意见" prop="approvalSuggest">
  42. <el-input v-model="deptmentAuditFrom.approvalSuggest" maxlength="200" rows="3" resize="none" show-word-limit type="textarea" placeholder="请输入备注信息" />
  43. </el-form-item>
  44. </el-col>
  45. </el-row>
  46. <el-row v-else>
  47. <el-row>
  48. <el-col :span="8">
  49. <el-form-item label="处理人:">
  50. {{ deptmentAuditFrom.registerUser }}
  51. </el-form-item>
  52. </el-col>
  53. <el-col :span="8">
  54. <el-form-item label="处理时间:">
  55. {{ deptmentAuditFrom.registerDate }}
  56. </el-form-item>
  57. </el-col>
  58. <el-col :span="24">
  59. <el-form-item label="处理意见:">
  60. {{ deptmentAuditFrom.approvalSuggest }}
  61. </el-form-item>
  62. </el-col>
  63. </el-row>
  64. <el-row v-if="Array.isArray(list) && list.length !== 0">
  65. <tf-title>驳回记录</tf-title>
  66. <tf-table
  67. :table-data="list"
  68. :column="column"
  69. :pagination="false"
  70. :for-id="true"
  71. :border="true"
  72. :tableheight="tableheight"
  73. :multiple="false"
  74. />
  75. </el-row>
  76. </el-row>
  77. </el-form>
  78. <!-- <div v-else style="height: 100px; line-height: 100px; text-align: center;font-size: 16px">
  79. 已跳过该节点的审批
  80. </div> -->
  81. </div>
  82. </template>
  83. <script>
  84. import { parseTime } from '@/utils/index'
  85. import { approvalInstance, addFormAssign, updateApplyState, changeApprovalPerson } from '@/api/dcApi/installationProcess/process.js'
  86. import { mixins } from '../mixin/index'
  87. export default {
  88. mixins: [mixins],
  89. props: {
  90. data: {
  91. type: Object,
  92. required: true
  93. },
  94. isLook: {
  95. type: Boolean,
  96. required: true
  97. },
  98. active: {
  99. type: Number,
  100. required: true
  101. },
  102. processInstanceId: {
  103. type: Number,
  104. default: 0
  105. },
  106. // 实例流程信息
  107. checkData: {
  108. type: Array,
  109. required: true
  110. },
  111. editFormId: {
  112. type: Number,
  113. required: true
  114. }
  115. },
  116. data() {
  117. return {
  118. rules: {
  119. // registerDate: [{ required: true, message: '请选择处理时间', trigger: 'blur' }],
  120. // registerUser: [{ required: true, message: '请选择处理人', trigger: 'change' }],
  121. approvalSuggest: [{ required: true, message: '请输入处理意见', trigger: 'blur' }]
  122. },
  123. deptmentAuditFrom: {
  124. registerUser: sessionStorage.getItem('realName'),
  125. registerDate: parseTime(
  126. new Date(),
  127. '{y}-{m}-{d} {h}:{i}:{s}'
  128. ),
  129. auditPersonId: '',
  130. auditPersonName: '',
  131. constructionCost: ''
  132. },
  133. disabled: false,
  134. fileList: [],
  135. optionData: [],
  136. tableId: '',
  137. loading: false,
  138. tableheight: '166px',
  139. list: [],
  140. column: [
  141. {
  142. label: '驳回人员',
  143. prop: 'approvalPersonName'
  144. },
  145. {
  146. label: '驳回时间',
  147. prop: 'approvalTime'
  148. },
  149. {
  150. label: '驳回意见',
  151. prop: 'approvalSuggest'
  152. }
  153. ],
  154. approvalPersonOptions: []
  155. }
  156. },
  157. created() {
  158. this.approvalStatus = this.checkData[1].approvalStatus
  159. if (this.isLook) {
  160. // 处理
  161. this.active > 1 ? this.disabled = false : this.disabled = true
  162. if (this.checkData[1]?.histroy) {
  163. this.deptmentAuditFrom = {
  164. registerDate: this.checkData[1].approvalTime ? this.checkData[1].approvalTime.slice(0, 10) : parseTime(
  165. new Date(),
  166. '{y}-{m}-{d} {h}:{i}:{s}'
  167. ),
  168. registerUser: sessionStorage.getItem('realName'),
  169. approvalSuggest: this.checkData[1].approvalSuggest
  170. }
  171. this.list = this.checkData[1].histroy.filter(e => {
  172. return (e.approvalStatus == 2 && e.nodeAlias == 'workOrderAudit')
  173. })
  174. }
  175. } else {
  176. // 查看
  177. this.disabled = false
  178. this.deptmentAuditFrom = {
  179. registerDate: this.checkData[1].approvalTime ? this.checkData[1].approvalTime.slice(0, 10) : '',
  180. registerUser: this.checkData[1].approvalPersonName,
  181. approvalSuggest: this.checkData[1].approvalSuggest
  182. }
  183. if (this.checkData[1].histroy) {
  184. this.list = this.checkData[1].histroy.filter(e => {
  185. return (e.approvalStatus == 2 && e.nodeAlias == 'workOrderAudit')
  186. })
  187. }
  188. }
  189. },
  190. // 生命周期 - 挂载完成(访问DOM元素)
  191. mounted() {
  192. console.log('checkData', this.checkData, this.data)
  193. this.tableId = this.data.id
  194. },
  195. methods: {
  196. // 重置
  197. resetFields() {
  198. this.$refs.deptmentAuditFrom.resetFields()
  199. },
  200. // 提交
  201. submitForm(val) {
  202. console.log('this.fileList', this.fileList)
  203. const _this = this
  204. _this.$refs.deptmentAuditFrom.validate((valid) => {
  205. if (valid) {
  206. const checkData = _this.checkData[1]
  207. debugger
  208. const data = {
  209. formData: [
  210. {
  211. formId: this.editFormId,
  212. fieldName: 'auditPersonId', // 审核人员
  213. fieldDataValue: _this.deptmentAuditFrom.auditPersonId
  214. },
  215. {
  216. formId: this.editFormId,
  217. fieldName: 'auditPersonName', // 审核人员
  218. fieldDataValue: _this.deptmentAuditFrom.auditPersonName
  219. }
  220. ],
  221. processId: checkData.processId || '',
  222. processNodeAlias: checkData.nodeAlias || ''
  223. }
  224. addFormAssign(data).then((res) => {
  225. console.log('res', res)
  226. const flag = res.code == 1
  227. if (flag) {
  228. _this.newAddUser(val)
  229. }
  230. })
  231. return true
  232. } else {
  233. return false
  234. }
  235. })
  236. },
  237. async updateApplyStateF(data) {
  238. try {
  239. await updateApplyState(data)
  240. } finally {
  241. console.log(data)
  242. }
  243. },
  244. // 新增提交
  245. async newAddUser(val) {
  246. const _this = this
  247. this.loading = true
  248. _this.$emit('remind', '2')
  249. const checkData = this.checkData[1]
  250. debugger
  251. if (_this.approvalPersonOptions.length > 1 && _this.checkData[_this.active + 1]) {
  252. // 动态改变节点审批人
  253. const params = [{
  254. 'approvalPersonId': _this.deptmentAuditFrom.auditPersonId,
  255. 'approvalPersonName': _this.deptmentAuditFrom.auditPersonName,
  256. // 'formId': _this.checkData[_this.active + 1].formTemplateId || 0,
  257. 'nodeAlias': _this.checkData[_this.active + 1].nodeAlias,
  258. // 'nodeSortNum': _this.checkData[_this.active + 1].sortNum,
  259. 'processId': _this.checkData[_this.active + 1].processId
  260. // 'processNodeName': _this.checkData[_this.active + 1].processNodeName
  261. }]
  262. await changeApprovalPerson(params).then((pRes) => {
  263. if (pRes && pRes.code == 1) {
  264. console.log('流程节点改变成功', pRes)
  265. }
  266. })
  267. }
  268. const userInfo = this.$store.state.user
  269. const data = {
  270. approvalPersonId: userInfo.userId, // 审批人ID
  271. approvalPersonName: userInfo.realName, // 审批人姓名
  272. // approvalPersonId: checkData.approvalPersonId, // 审批人ID
  273. // approvalPersonName: checkData.approvalPersonName, // 审批人姓名
  274. approvalStatus: val, // 1、审核通过 2回退 3拒绝
  275. approvalSuggest: this.deptmentAuditFrom.approvalSuggest, // 审批意见
  276. nodeAlias: checkData.nodeAlias, // 流程节点别名
  277. processId: checkData.processId, // 流程实例ID
  278. isMessagePush: 1,
  279. buinessInfoId: this.tableId,
  280. nodeSortNum: checkData.nodeSortNum,
  281. constructionCost: this.deptmentAuditFrom.constructionCost,
  282. auditPersonId: this.deptmentAuditFrom.auditPersonId,
  283. auditPersonName: this.deptmentAuditFrom.auditPersonName
  284. }
  285. approvalInstance(data).then(res => {
  286. this.loading = false
  287. _this.$emit('remind', '0')
  288. console.log(res)
  289. if (res.code === 1) {
  290. if (val == 2) {
  291. const data = {
  292. id: this.data.id,
  293. applyStatus: 1
  294. }
  295. this.updateApplyStateF(data)
  296. }
  297. _this.$message.success('成功!')
  298. _this.$emit('remind', '1')
  299. _this.resetFields()
  300. }
  301. })
  302. }
  303. }
  304. }
  305. </script>
  306. <style lang="scss" scoped>
  307. </style>