239 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			239 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
<template>
 | 
						|
  <div v-loading="loading" class="email-wrapper">
 | 
						|
    <el-collapse v-model="activeCollapse" class="setting-config">
 | 
						|
      <!-- 发件箱配置 -->
 | 
						|
      <el-collapse-item :title="$t('trials:emailManageCfg:title:sendEmailCfg')" name="1">
 | 
						|
        <!-- 配置信息表单 -->
 | 
						|
        <el-form
 | 
						|
          ref="emailRulesForm"
 | 
						|
          v-loading="loading"
 | 
						|
          :model="form"
 | 
						|
          style="width:800px;"
 | 
						|
          :rules="rules"
 | 
						|
          label-width="230px"
 | 
						|
          size="small"
 | 
						|
        >
 | 
						|
          <!-- 发件箱账号 -->
 | 
						|
          <el-form-item
 | 
						|
            :label="$t('trials:emailManageCfg:title:sendEmailAccount')"
 | 
						|
            prop="EmailFromEmail"
 | 
						|
          >
 | 
						|
            <el-input v-model="form.EmailFromEmail" :disabled="!isEdit" />
 | 
						|
          </el-form-item>
 | 
						|
          <!-- 发件人 -->
 | 
						|
          <el-form-item
 | 
						|
            :label="$t('trials:emailManageCfg:title:fromName')"
 | 
						|
            prop="EmailFromName"
 | 
						|
          >
 | 
						|
            <el-input v-model="form.EmailFromName" :disabled="!isEdit" />
 | 
						|
          </el-form-item>
 | 
						|
          <!-- 密码/授权码 -->
 | 
						|
          <el-form-item
 | 
						|
            :label="$t('trials:emailManageCfg:title:password')"
 | 
						|
            prop="EmailAuthorizationCode"
 | 
						|
          >
 | 
						|
            <el-input v-model="form.EmailAuthorizationCode" :disabled="!isEdit" />
 | 
						|
          </el-form-item>
 | 
						|
          <!-- SMTP服务器 -->
 | 
						|
          <el-form-item
 | 
						|
            :label="$t('trials:emailManageCfg:title:SMTPServerAddress')"
 | 
						|
            prop="EmailSMTPServerAddress"
 | 
						|
          >
 | 
						|
            <el-input v-model="form.EmailSMTPServerAddress" :disabled="!isEdit" />
 | 
						|
          </el-form-item>
 | 
						|
          <!-- SMTP端口 -->
 | 
						|
          <el-form-item
 | 
						|
            :label="$t('trials:emailManageCfg:title:SMTPServerPort')"
 | 
						|
            prop="EmailSMTPServerPort"
 | 
						|
          >
 | 
						|
            <el-radio-group
 | 
						|
              v-model="form.EmailSMTPServerPort"
 | 
						|
              :disabled="!isEdit"
 | 
						|
            >
 | 
						|
              <el-radio
 | 
						|
                :label="465"
 | 
						|
              >
 | 
						|
                465
 | 
						|
              </el-radio>
 | 
						|
              <el-radio
 | 
						|
                :label="25"
 | 
						|
              >
 | 
						|
                25
 | 
						|
              </el-radio>
 | 
						|
            </el-radio-group>
 | 
						|
          </el-form-item>
 | 
						|
          <el-form-item>
 | 
						|
            <el-button v-if="isEdit" size="small" type="primary" @click="setTrialEmail">
 | 
						|
              {{ $t('common:button:confirm') }}
 | 
						|
            </el-button>
 | 
						|
            <el-button v-else size="small" type="primary" @click="isEdit = true">
 | 
						|
              {{ $t('trials:trialCfg:button:update') }}
 | 
						|
            </el-button>
 | 
						|
          </el-form-item>
 | 
						|
        </el-form>
 | 
						|
      </el-collapse-item>
 | 
						|
      <!-- 自动邮件模版 -->
 | 
						|
      <el-collapse-item :title="$t('trials:emailManageCfg:title:emailTpl')" name="2">
 | 
						|
        <el-tabs v-model="activeTab" type="border-card">
 | 
						|
          <!-- 通用 -->
 | 
						|
          <el-tab-pane
 | 
						|
            :label="$t('trials:emailManageCfg:title:commom')"
 | 
						|
            name="0"
 | 
						|
          >
 | 
						|
            <EmailList
 | 
						|
              ref="emailList"
 | 
						|
              v-if="activeTab === '0'"
 | 
						|
              :is-distinguish-criteria="false"
 | 
						|
              :is-edit="isEdit"
 | 
						|
            />
 | 
						|
          </el-tab-pane>
 | 
						|
          <!-- 标准相关 -->
 | 
						|
          <el-tab-pane
 | 
						|
            :label="$t('trials:emailManageCfg:title:criterions')"
 | 
						|
            name="1"
 | 
						|
          >
 | 
						|
            <EmailList
 | 
						|
              ref="emailList"
 | 
						|
              v-if="activeTab === '1'"
 | 
						|
              :is-distinguish-criteria="true"
 | 
						|
              :is-edit="isEdit"
 | 
						|
            />
 | 
						|
          </el-tab-pane>
 | 
						|
        </el-tabs>
 | 
						|
      </el-collapse-item>
 | 
						|
    </el-collapse>
 | 
						|
  </div>
 | 
						|
</template>
 | 
						|
<script>
 | 
						|
import EmailList from './components/EmailList'
 | 
						|
import { getTrialCriterionList } from '@/api/trials/reading'
 | 
						|
import { setTrialEmail, getTrialEmail } from '@/api/trials'
 | 
						|
export default {
 | 
						|
  name: 'EmailManage',
 | 
						|
  components: {
 | 
						|
    EmailList
 | 
						|
  },
 | 
						|
  data() {
 | 
						|
    return {
 | 
						|
      activeCollapse: ['1', '2'],
 | 
						|
      trialId: '',
 | 
						|
      activeTab: '0',
 | 
						|
      trialCriterionList: [],
 | 
						|
      loading: false,
 | 
						|
      isEdit: true,
 | 
						|
      form: {
 | 
						|
        EmailFromEmail: 'test@extimaging.com',
 | 
						|
        EmailFromName: 'Test_IRC',
 | 
						|
        EmailAuthorizationCode: 'SHzyyl2021',
 | 
						|
        EmailSMTPServerAddress: 'smtp.qiye.aliyun.com',
 | 
						|
        EmailSMTPServerPort: 465,
 | 
						|
        IsConfigureEmail: true
 | 
						|
      },
 | 
						|
      rules: {
 | 
						|
        EmailFromEmail: [{ required: true, message: this.$t('common:ruleMessage:specify') }],
 | 
						|
        EmailFromName: [{ required: true, message: this.$t('common:ruleMessage:specify') }],
 | 
						|
        EmailAuthorizationCode: [{ required: true, message: this.$t('common:ruleMessage:specify') }],
 | 
						|
        EmailSMTPServerAddress: [{ required: true, message: this.$t('common:ruleMessage:specify') }],
 | 
						|
        EmailSMTPServerPort: [{ required: true, message: this.$t('common:ruleMessage:select') }]
 | 
						|
      }
 | 
						|
    }
 | 
						|
  },
 | 
						|
  watch: {
 | 
						|
    activeTab(v) {
 | 
						|
      console.log(v)
 | 
						|
    }
 | 
						|
  },
 | 
						|
  mounted() {
 | 
						|
    this.trialId = this.$route.query.trialId
 | 
						|
    this.getTrialEmail()
 | 
						|
    this.getTrialCriterionList()
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
    setTrialEmail() {
 | 
						|
      this.$refs['emailRulesForm'].validate((valid) => {
 | 
						|
        if (!valid) {
 | 
						|
          // resolve(false)
 | 
						|
        } else {
 | 
						|
          this.form.TrialId = this.trialId
 | 
						|
          setTrialEmail(this.form).then(res => {
 | 
						|
            this.$message.success(this.$t('common:message:savedSuccessfully'))
 | 
						|
            this.isEdit = false
 | 
						|
            this.$refs['emailList'].getList()
 | 
						|
          })
 | 
						|
        }
 | 
						|
      })
 | 
						|
    },
 | 
						|
    getTrialEmail() {
 | 
						|
      getTrialEmail({
 | 
						|
        TrialId: this.trialId
 | 
						|
      }).then(res => {
 | 
						|
        if (res.Result.IsConfigureEmail) {
 | 
						|
          this.form = Object.assign(this.form, res.Result)
 | 
						|
          this.isEdit = false
 | 
						|
        }
 | 
						|
      })
 | 
						|
    },
 | 
						|
    getTrialCriterionList() {
 | 
						|
      this.loading = true
 | 
						|
      getTrialCriterionList(this.trialId, false).then(res => {
 | 
						|
        this.trialCriterionList = res.Result
 | 
						|
        // this.activeTab = this.trialCriterionList[0].TrialReadingCriterionId
 | 
						|
        this.loading = false
 | 
						|
      }).catch(() => {
 | 
						|
        this.loading = false
 | 
						|
      })
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
</script>
 | 
						|
<style lang="scss">
 | 
						|
.email-wrapper{
 | 
						|
  height: 100%;
 | 
						|
  background-color: #fff;
 | 
						|
  .el-tabs{
 | 
						|
    height: 100%;
 | 
						|
    display: flex;
 | 
						|
    flex-direction: column;
 | 
						|
  }
 | 
						|
  .el-tabs__header {
 | 
						|
    height: 40px;
 | 
						|
    margin-bottom:5px;
 | 
						|
  }
 | 
						|
  .el-tabs__content{
 | 
						|
    flex: 1;
 | 
						|
    .el-tab-pane{
 | 
						|
      height: 100%;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
</style>
 | 
						|
<style lang="scss" scoped>
 | 
						|
.email-wrapper{
 | 
						|
  height: 100%;
 | 
						|
  background-color: #fff;
 | 
						|
  display: flex;
 | 
						|
  flex-direction: column;
 | 
						|
  .content{
 | 
						|
    flex: 1;
 | 
						|
    overflow-y: auto;
 | 
						|
  }
 | 
						|
  /deep/ .el-collapse-item__header{
 | 
						|
    background:#e5ecef;
 | 
						|
    padding-left:10px;
 | 
						|
  }
 | 
						|
  /deep/ .el-collapse-item__content{
 | 
						|
    padding: 10px;
 | 
						|
  }
 | 
						|
  .bottom{
 | 
						|
    height: 50px;
 | 
						|
    display:flex;
 | 
						|
    align-items:center;
 | 
						|
    justify-content:center;
 | 
						|
    text-align: center;
 | 
						|
    border-top: 1px solid #e1e1e1;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
</style>
 | 
						|
 |