mission-action.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <template>
  2. <view class="mission-action-page">
  3. <!-- 指派改善任务 -->
  4. <component :is="currentComponet" :disabled="disabled" :values="values" :btnInfo="btnInfo"
  5. :missionDetails="missionDetails" :pdcaSetting="pdcaSetting" @comRequest="comTaskCirculation" />
  6. </view>
  7. </template>
  8. <script>
  9. import {
  10. mapState
  11. } from "vuex";
  12. import assignMission from './components/assign-mission.vue';
  13. import disagree from './components/disagree.vue'
  14. import personnel from './components/personnel.vue'
  15. import writeBack from './components/write-back.vue'
  16. import pdca from './components/pdca.vue'
  17. export default {
  18. computed: {
  19. ...mapState({
  20. missionDetails: state => state.mission.missionDetails
  21. })
  22. },
  23. data() {
  24. return {
  25. // 当前显示的组件
  26. currentComponet: '',
  27. disabled: false,
  28. // 查看详情回显的数据
  29. values: {},
  30. // 按钮信息
  31. btnInfo: {},
  32. compoentList: [{
  33. type: 1,
  34. name: '指派改善任务',
  35. component: 'assign-mission'
  36. },
  37. {
  38. type: 2,
  39. name: '原因',
  40. component: 'disagree'
  41. },
  42. {
  43. type: 3,
  44. name: '人员架构',
  45. component: 'personnel'
  46. },
  47. {
  48. type: 4,
  49. name: '改善回复',
  50. component: 'write-back'
  51. },
  52. {
  53. type: 5,
  54. name: 'PDCA',
  55. component: 'pdca'
  56. }
  57. ],
  58. // pdca类型
  59. pdcaSetting: 'p',
  60. ifSetImproveEmp: null, //是否指定改善着
  61. }
  62. },
  63. onLoad({
  64. details,
  65. ifSetImproveEmp,
  66. improveType
  67. }) {
  68. this.getComponentInfo(details ? JSON.parse(details) : {});
  69. this.ifSetImproveEmp = ifSetImproveEmp;
  70. this.improveType = improveType;
  71. },
  72. methods: {
  73. // 获取组件信息
  74. getComponentInfo(details) {
  75. const {
  76. nextPermission,
  77. nextPermissionName,
  78. componentName,
  79. disabled,
  80. hasAnyData,
  81. isOutvalueKey,
  82. key,
  83. labelKey,
  84. dataKey,
  85. pdcaSetting,
  86. isEdit,
  87. params
  88. } = details;
  89. this.currentComponet = componentName;
  90. this.disabled = disabled;
  91. this.details = details;
  92. if (disabled) { // 查看xx详情
  93. let values = {};
  94. if (hasAnyData) { // 回显数据由多个key组成
  95. dataKey.map(item => {
  96. values[item.labelKey] = (item.isOutvalueKey ? this.missionDetails : details)[item.key];
  97. });
  98. } else {
  99. values[labelKey] = (isOutvalueKey ? this.missionDetails : details)[key]
  100. }
  101. this.values = values;
  102. } else { // 编辑流程
  103. this.btnInfo = details;
  104. // if(isEdit) { // 之前暂存过,需要先回显数据
  105. let values = {};
  106. params && params.map(item => {
  107. if (item.labelKey) {
  108. values[item.labelKey] = details[item.valueKey];
  109. }
  110. });
  111. this.values = values;
  112. // }
  113. }
  114. this.pdcaSetting = pdcaSetting;
  115. },
  116. // 公共改善任务接口
  117. comTaskCirculation(data) {
  118. if(data.taskPlan&&data.taskPlan.length == 0){
  119. uni.showModal({title: '请填写改善计划!'});
  120. return;
  121. }
  122. if((data.taskDoRequestList&&data.taskDoRequestList.length == 0)||(data.taskDoRequestList&&data.taskDoRequestList.length>0&&data.taskDoRequestList[0].taskDoProcess.length == 0)){
  123. uni.showModal({title: '请填写执行过程!'});
  124. return;
  125. }
  126. if(data.taskCheckRequestList&&data.taskCheckRequestList.length == 0||(data.taskCheckRequestList&&data.taskCheckRequestList.length>0&&data.taskCheckRequestList[0].taskCheckProcess.length == 0)){
  127. uni.showModal({title: '请填写改善确认!'});
  128. return;
  129. }
  130. if(data.taskAction&&data.taskAction.length == 0){
  131. uni.showModal({title: '请填写对策处置!'});
  132. return;
  133. }
  134. this.$store.dispatch({
  135. type: 'mission/commActions',
  136. payload: {
  137. key: "comTaskCirculation",
  138. data:{
  139. ...data,
  140. improveType:this.improveType
  141. }
  142. }
  143. }).then(data1 => {
  144. if (data1) {
  145. let taskId = uni.getStorageSync('taskId');
  146. uni.redirectTo({
  147. url:`/pages/mission-details/mission-details?taskId=${taskId}`
  148. })
  149. }
  150. });
  151. }
  152. },
  153. components: {
  154. assignMission,
  155. disagree,
  156. personnel,
  157. writeBack,
  158. pdca
  159. }
  160. }
  161. </script>
  162. <style lang="less">
  163. .mission-action-page {
  164. height: 100%;
  165. }
  166. </style>