zhuliu 9 meses atrás
pai
commit
56a31aaa07

+ 86 - 0
src/views/report/InvalidResponse/components/IPREmail/components/dialog/addEmail.vue

@@ -0,0 +1,86 @@
+<template>
+    <div>
+        <el-dialog  :title="title" :visible.sync="showDialog" width="600px" :close-on-click-modal="false"  :before-close="handleClose" append-to-body>
+            <el-form ref="form" :model="form" :rules="rules" label-position="left" label-width="120px">
+            <el-form-item label="姓名:" prop="name">
+                <el-input v-model="form.name" placeholder="请输入姓名"></el-input>
+            </el-form-item>
+    
+            <el-form-item label="邮箱:" prop="email">
+                <el-input v-model="form.email" placeholder="请输入邮箱"></el-input>
+            </el-form-item>
+            </el-form>
+            <span slot="footer" class="dialog-footer">
+                <el-button size="small" @click="handleClose">取 消</el-button>
+                <el-button size="small" v-if="model == 'add'" @click="initData({})">重 置</el-button>
+                <el-button type="primary" :loading="btnLoading" @click="submit" >确 定</el-button>
+            </span>
+        </el-dialog>
+        </div>
+</template>
+  
+<script>
+  const defaultForm={
+    name:null,
+    email:null,
+  }
+  export default {
+    components: {},
+    props: {},
+    data() {
+      return {
+        form:{},
+        rules:{
+            name: [{ required: false, message: '请输入姓名', trigger: 'blur' },],
+            email: [
+              { required: true, message: "请输入邮箱", trigger: "blur" },
+                          {
+                              pattern:
+                                  /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9_\.\-])+\.)+([a-zA-Z0-9]{2,4})+$/,
+                              message: "请输入正确的邮箱格式",
+                              trigger: "blur",
+                          },
+            ],
+        },
+        title:'添加邮箱',
+        showDialog:false,
+        model:'add',
+        btnLoading:false,
+      };
+    },
+    watch: {},
+    computed: {
+      userinfo(){
+        return this.$s.getObj('userinfo')
+      },
+    },
+    created() {},
+    mounted() {},
+    methods: {
+
+      open(form={},model='add'){
+        this.initData(form)
+        this.model = model
+        this.showDialog = true
+      },
+      //初始化数据
+      initData(form={}){
+        this.form = Object.assign({},defaultForm,form)
+      },
+      //关闭弹窗
+      handleClose(){
+        this.showDialog = false
+      },
+      submit(){
+        this.$refs['form'].validate((valid) => {
+            if (valid) {
+                this.$emit('newEmail',this.form)
+                this.handleClose()
+            }
+        });
+      },
+    },
+  };
+  </script>
+  <style lang="scss" scoped>
+  </style>

+ 29 - 5
src/views/report/InvalidResponse/components/IPREmail/components/dialog/addOrEditIPREmail.vue

@@ -9,7 +9,9 @@
         <el-form-item label="邮箱:" prop="email">
             <el-input v-model="form.email" placeholder="请输入邮箱"></el-input>
         </el-form-item>
-
+        <el-form-item label="报告类型:" prop="reportTypes">
+            <div>{{ getReportTypeNames() }}</div>
+        </el-form-item>
         <el-form-item label="默认发送邮箱:" prop="ifDefault" v-if="userinfo.roleType == 2 || userinfo.roleType == 1">
           <el-switch
               v-model="form.ifDefault"
@@ -65,10 +67,31 @@ export default {
     userinfo(){
       return this.$s.getObj('userinfo')
     },
+    reportTypes() {
+      var a = this.$store.state.dictMessage.dictMessage.REPORT_TYPE
+      return a || {}
+    },
   },
   created() {},
   mounted() {},
   methods: {
+    //获取报告类型名称
+    getReportTypeNames(){
+      if(!this.form.reportTypes || this.form.reportTypes.length == 0){
+        return ''
+      }
+      var names = []
+      for(let i=0;i<this.form.reportTypes.length;i++){
+        var item = this.form.reportTypes[i]
+        var obj = this.reportTypes.find(type=>{
+          return type.value == item
+        })
+        if(obj){
+          names.push(obj.label)
+        }
+      }
+      return names.join('、')
+    },
     open(form={},model='add'){
       this.initData(form)
       this.model = model
@@ -77,7 +100,7 @@ export default {
     },
     //初始化数据
     initData(form={}){
-      this.form = Object.assign({},defaultForm,form)
+      this.form = Object.assign({},JSON.parse(JSON.stringify(defaultForm)),form)
     },
     //关闭弹窗
     handleClose(){
@@ -92,10 +115,11 @@ export default {
               if(this.model == "edit"){
                   a = '修改'
               }
-              if(!this.form.ifDefault){
-                this.form.reportTypes = null
+              var params = JSON.parse(JSON.stringify(this.form))
+              if(!params.ifDefault){
+                params.reportTypes = null
               }
-              this.$api[api](this.form).then(response => {
+              this.$api[api](params).then(response => {
                   if (response.code === 200) {
                       this.btnLoading = false
                       this.$message.success( a + '成功');

+ 122 - 9
src/views/report/InvalidResponse/components/dialog/editFlowPath.vue

@@ -59,13 +59,34 @@
             </template>
           </el-form-item>
           <el-form-item label="邮件通知:">
-            <el-switch
-              v-model="form.ifSendEmail"
-              active-color="#13ce66"
-              inactive-color="#ff4949"
-              :active-value="true"
-              :inactive-value="false">
-            </el-switch>
+            <div style="display:flex;align-items:center;flex-wrap: wrap;">
+              <el-switch
+                v-model="form.ifSendEmail"
+                active-color="#13ce66"
+                inactive-color="#ff4949"
+                :active-value="true"
+                :inactive-value="false">
+              </el-switch>
+              <template v-if="form.ifSendEmail">
+                <div class="margin-left_10" v-for="item in sendEmailPerson" :key="item.email">{{ item.name +'<' + item.email + '>'}}</div>
+              </template>
+              
+            </div>
+            
+          </el-form-item>
+          <el-form-item label="临时通知人员:">
+            <div style="display:flex;align-items:center;flex-wrap: wrap;">
+              <div v-for="(item,index) in otherPerson" :key="index" class="otherPerson">
+                <div v-if="item.name">{{ item.name +'<' + item.email + '>'}}</div>
+                <div v-else>{{ item.email }}</div>
+                <div class="delOtherPerson">
+                  <i class="el-icon-close" style="color:red" @click="delOtherPerson(item,index)"></i>
+                </div>
+              </div>
+              <div class="margin-left_10">
+                <el-button size="small" @click="addNewEmail" icon="el-icon-plus">添加</el-button>
+              </div>
+            </div>
           </el-form-item>
           <el-form-item label="备注内容:">
             <el-input type='textarea' v-model="form.description" autocomplete="off" placeholder="请输入备注"></el-input>
@@ -77,15 +98,21 @@
           <el-button type="primary" :loading="loading" @click="finish" >确 定</el-button>
         </span>
       </el-dialog>
+
+      <addEmailVue ref="addEmailVue" @newEmail="newEmail"></addEmailVue>
     </div>
 </template>
   
 <script>
+import addEmailVue from '../IPREmail/components/dialog/addEmail.vue'
 const defaultSendEmail = ['0','1','3','4','5','7','8']
   export default {
+    components:{
+      addEmailVue
+    },
     props:{
         projectId:{
-            default:0
+          default:0
         }
     },
     data() {
@@ -155,7 +182,9 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
         },
         rules: {
           fileName:[{required : false , message:'请输入文献名称',trigger:'blur'}]
-        }
+        },
+        sendEmailPerson:[],
+        otherPerson:[],
       }
     },
     watch: {
@@ -172,8 +201,75 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
             }else{
               this.$set(this.form,'ifSendEmail',false)
             }
+            this.otherPerson = []
+            this.getSendEmailPerson()
             this.showDialog=true
         },
+        //添加临时发送邮箱
+        addNewEmail(){
+          this.$refs.addEmailVue.open()
+        },
+        newEmail(data){
+          if(!data.email){
+            return
+          }
+          data.email = data.email.trim()
+          var index = this.otherPerson.findIndex(item=>{
+            return item.email == data.email
+          })
+          if(index == -1){
+            this.otherPerson.push(data)
+          }else{
+            this.$message.warning('该邮箱已存在')
+          }
+          
+        },
+        //删除临时发送邮箱
+        delOtherPerson(item,index){
+          this.otherPerson.splice(index,1)
+        },
+        //获取需要发送邮件的人员
+        async getSendEmailPerson(){
+          var [defaultPerson,handlePerson] = await Promise.allSettled([this.getDefaultPersons(),this.getHandlePerson()])
+          defaultPerson = defaultPerson.status =='fulfilled'?defaultPerson.value:{}
+          handlePerson = handlePerson.status =='fulfilled'?handlePerson.value:{}
+          var data = []
+          if(defaultPerson.data && defaultPerson.data.length>0){
+            data = defaultPerson.data
+          }
+          if(handlePerson && handlePerson.id){
+            var index = data.findIndex(item=>{
+              return item.id == handlePerson.iprPersonId
+            })
+            if(index == -1){
+              data.push(
+                {
+                  id:handlePerson.iprPersonId,
+                  name:handlePerson.name,
+                  email:handlePerson.email
+                }
+              )
+            }
+            
+          }
+          this.sendEmailPerson = data
+        },
+        //获取默认发送邮件人员
+        getDefaultPersons(){
+            var params = {
+                current:1,
+                size:100,
+                ifDefault:true
+            }
+            return this.$api.iprPersonQuery(params).then(response=> response.data)
+        },
+        //获取配案人员
+        getHandlePerson(){
+            var params = {
+              reportId:this.projectId
+            }
+            return this.$api.matchCasePersonQuery(params).then(response=> response.data)
+        },
         // 弹窗确定
         finish() {
             this.$refs.form.validate((valid) => {
@@ -183,6 +279,7 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
                       return false
                     }
                     this.form.projectId = this.projectId
+                    this.form.extraEmailDTOS = this.otherPerson
                     this.form.fileGuids = guids
                     if(!this.projectId){
                       this.$emit('save',this.form)
@@ -430,4 +527,20 @@ const defaultSendEmail = ['0','1','3','4','5','7','8']
       padding-bottom: 0px;
     }
   }
+  </style>
+  <style lang="scss" scoped>
+    .otherPerson{
+      display: flex;
+      align-items: center;
+      cursor: pointer;
+      .delOtherPerson{
+        opacity: 0;
+        margin-left:10px
+      }
+    }
+    .otherPerson:hover{
+      .delOtherPerson{
+        opacity: 1;
+      }
+    }
   </style>