/**
 * 产业数据模型及体系：dmT（data.dmNs）、dmCommon（通用按钮/校验）
 *
 * 查看弹窗约定：
 * 1. 数值类字段须用 formatWithUnit 展示单位（与表单后缀一致）。
 * 2. 查看表单根节点加 class="dm-view-form"，值文本使用主题高亮色（见 assets/styles/data-model.scss）。
 */
export default {
  methods: {
    dmT(key, values) {
      const ns = this.dmNs
      if (!ns) {
        return key
      }
      return values != null ? this.$t(`dataModel.${ns}.${key}`, values) : this.$t(`dataModel.${ns}.${key}`)
    },
    dmCommon(key) {
      return this.$t(`dataModel.common.${key}`)
    },
    /**
     * 查看弹窗：数值 + 单位。空值仅显示 —，不拼单位。
     * @param {*} value 已格式化或原始展示值
     * @param {string} [unitKey] 模块内单位 i18n 键，如 unitHead
     */
    formatWithUnit(value, unitKey) {
      const dash = this.$t("dataModel.status.dash")
      if (value == null || value === "" || value === dash) {
        return dash
      }
      if (!unitKey) {
        return value
      }
      return `${value} ${this.dmT(unitKey)}`
    },
    warningTypeText(type) {
      if (type === 1) {
        return this.$t("dataModel.yakDiseaseWarning.warningType1")
      }
      if (type === 2) {
        return this.$t("dataModel.yakDiseaseWarning.warningType2")
      }
      if (type === 9) {
        return this.$t("dataModel.yakDiseaseWarning.warningType9")
      }
      return this.$t("dataModel.status.dash")
    },
    /** 第三方数据同步，带全局 loading */
    runSyncWithLoading(syncFn) {
      if (this.syncing) {
        return Promise.reject(new Error("syncing"))
      }
      let modalLoading = false
      this.syncing = true
      this.$modal.loading(this.dmCommon("syncLoading"))
      modalLoading = true
      return syncFn().finally(() => {
        this.syncing = false
        if (modalLoading) {
          this.$modal.closeLoading()
        }
      })
    }
  }
}
