ZBLOG

要确保在 taskMessage 拿到值后再传递给子组件,您可以使用一个计算属性来监测 taskMessage 的变化,然后将其传递给子组件。这样可以保证只有在 taskMessage 有效数据时,才会更新子组件的 props。

以下是您可以考虑的实现方式:

1. 使用计算属性

首先定义一个计算属性,它将在 taskMessage 更新时自动执行。

<template>
  <div>
    <approvalProcess
      :isCanAccept="isCanAccept"
      :form="taskDetailData"
      :getBizModel="getBizModel"
      :appId="appId"
      :actName="$route.query.actName"
      @getDetail="getApprovalDetail"
      class="bottom-btns"
      @flowCode='flowCode'
    />
    <h-workflow-common 
      v-bind="{
        ref: 'workFlowCommon',
        workFlowInfo: true,
        registerRemark: true,
        isHistory,
        codeMark,
        taskDetail,
        taskDetailData,
        headerMessage,
        projectBaseInfo,
        // 使用计算属性传递 taskMessage
        taskMessage: processedTaskMessage, 
        approveRecordList,
        projectExtensionInfo,
        tabbs,
        showSearch: true
      }">
    </h-workflow-common>
  </div>
</template>

<script>
export default {
  data() {
    return {
      taskDetailData: {},
      isCanAccept: false, // 初始化为适当的值
      // 其他 data 属性...
    };
  },
  computed: {
    processedTaskMessage() {
      // 确保在 taskMessage 有效时才返回值,否则返回 null 或默认值
      return this.taskMessage || {}; // 可以根据实际情况调整这里的逻辑
    }
  },
  methods: {
    getApprovalDetail(e) {
      let data = {};
      
      if (typeof e === 'string') {
          data = JSON.parse(e);
       } else {
          data = e;
       }

       try {
          this.taskDetailData = data;
          if (!this.isReSubmitCode && !this.isDesignCode && !this.isCompletionCode) { 
              setTimeout(() => {
                  const refEl = this.$refs.workFlowCommon;
                  if (refEl) {
                      refEl.tabsActive = 'registerInfo';
                  }
              }, 300);
          }

          this.showForm = true;

          const codes = [
              "PROVIDE_AMEND_PLAN",
              "PLAN_FILL_OUT_AFFIRM_RESULT",
              "PROVIDE_AMEND_PLAN_HISTORY",
          ];

          let code = '';
          if (codes.includes(this.codeMark + '')) {
            code = 'CONTROL_MEETING';
          }

          if (data.fileList && data.fileList.length && code) {
            this.$set(this.taskDetail, 'nonProjectFileVOS', data.fileList.filter(d => d.categoryCode === code));
           }
       } catch (error) {
           console.log(error);
       }
   },
   watch: {
     taskMessage(newVal) {
       // 当 taskMessage 更新时,可以在这里做一些额外操作,比如:
       console.log('taskMessage has been updated:', newVal);
     }
   }
}
</script>

注意事项

  • 在计算属性中,如果 taskMessage 是个对象或数组,确保它有合理的初始值,以免在没有数据的时候造成错误。
  • 如果您的逻辑复杂,也可以考虑使用 watcher 来监听 taskMessage 的变化,并在获取到数据后直接调用某个方法或进行相应操作。
  • 请根据实际需求修改上述代码中的逻辑,以确保符合您的业务规则和预期行为。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=6760

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?