From 27e41b5c21b4ba13178b2184c76c4d8cba0952b6 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期四, 01 二月 2024 19:21:18 +0800
Subject: [PATCH] Mr.Shi

---
 company/src/components/business/OperaInsuranceApplyWindow.vue                                |   21 
 company/src/components/business/OperaSettleClaimsCheckWindow.vue                             |  482 ++++++++++++----------
 company/src/views/business/taxes.vue                                                         |   12 
 server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java   |    2 
 server/service/src/main/java/com/doumee/service/business/third/EmailService.java             |   49 ++
 company/src/components/business/OperaInsuranceApplyCheckWindow.vue                           |  246 ++++++-----
 server/service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java       |   26 +
 server/service/src/main/java/com/doumee/service/business/third/EmayService.java              |   42 +
 company/src/components/business/OperaTaxesWindow.vue                                         |  106 ++--
 server/service/src/main/java/com/doumee/dao/business/model/SmsEmail.java                     |    6 
 server/service/src/main/resources/application-test.yml                                       |   29 +
 server/service/src/main/java/com/doumee/core/utils/Constants.java                            |    1 
 server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java |  100 ++++
 server/service/src/main/resources/application-pro.yml                                        |   22 
 company/src/components/business/OperaCompanyWindow.vue                                       |    2 
 company/src/components/business/OperaApplyChangeUnitDetailWindow.vue                         |    5 
 company/src/views/business/switchCourt.vue                                                   |    2 
 server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java    |   17 
 company/src/views/business/applyChange.vue                                                   |    2 
 server/service/src/main/java/com/doumee/service/business/SmsEmailService.java                |    1 
 company/src/components/business/OperaApplyChangeDetailWindow.vue                             |    5 
 server/pom.xml                                                                               |    5 
 server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java                  |   10 
 server/service/src/main/resources/application-dev.yml                                        |   12 
 server/service/src/main/java/com/doumee/dao/business/model/InsuranceApply.java               |   19 
 25 files changed, 746 insertions(+), 478 deletions(-)

diff --git a/company/src/components/business/OperaApplyChangeDetailWindow.vue b/company/src/components/business/OperaApplyChangeDetailWindow.vue
index 78a0233..7b74b15 100644
--- a/company/src/components/business/OperaApplyChangeDetailWindow.vue
+++ b/company/src/components/business/OperaApplyChangeDetailWindow.vue
@@ -12,8 +12,13 @@
                     <div class="desc_item_label_left">
                         <span>鎶曚繚浼佷笟锛歿{ apply.companyName }}</span>
                       <span v-if="model.status === 0">淇濆崟鐘舵�侊細寰呯缃�</span>
+<<<<<<< HEAD
                       <span v-if="model.status === 1">淇濆崟鐘舵�侊細寰呭鏍�</span>
                       <span v-if="model.status === 2">淇濆崟鐘舵�侊細宸蹭笂浼犳壒鍗�</span>
+=======
+                      <span v-if="model.status === 1">淇濆崟鐘舵�侊細宸茬绔�</span>
+                      <span v-if="model.status === 2">淇濆崟鐘舵�侊細宸茬敓鏁�</span>
+>>>>>>> 35bd55ad951fe8c5fb997dfa7bd836ad53db96fe
                       <span v-if="model.status === 3 || model.status === 4">淇濆崟鐘舵�侊細閫�鍥炵敵璇�</span>
                       <span v-if="model.status === 5 || model.status === 8">淇濆崟鐘舵�侊細宸查��鍥�</span>
                       <span v-if="model.status === 7 || model.status === 6">淇濆崟鐘舵�侊細宸插叧闂�</span>
diff --git a/company/src/components/business/OperaApplyChangeUnitDetailWindow.vue b/company/src/components/business/OperaApplyChangeUnitDetailWindow.vue
index 58d893e..40346f0 100644
--- a/company/src/components/business/OperaApplyChangeUnitDetailWindow.vue
+++ b/company/src/components/business/OperaApplyChangeUnitDetailWindow.vue
@@ -12,8 +12,13 @@
                     <div class="desc_item_label_left">
                         <span>鎶曚繚浼佷笟锛歿{ apply.companyName }}</span>
                       <span v-if="model.status === 0">淇濆崟鐘舵�侊細寰呯缃�</span>
+<<<<<<< HEAD
                       <span v-if="model.status === 1">淇濆崟鐘舵�侊細寰呭鏍�</span>
                       <span v-if="model.status === 2">淇濆崟鐘舵�侊細宸蹭笂浼犳壒鍗�</span>
+=======
+                      <span v-if="model.status === 1">淇濆崟鐘舵�侊細宸茬绔�</span>
+                      <span v-if="model.status === 2">淇濆崟鐘舵�侊細宸茬敓鏁�</span>
+>>>>>>> 35bd55ad951fe8c5fb997dfa7bd836ad53db96fe
                       <span v-if="model.status === 3 || model.status === 4">淇濆崟鐘舵�侊細閫�鍥炵敵璇�</span>
                       <span v-if="model.status ===5 || model.status === 8">淇濆崟鐘舵�侊細宸查��鍥�</span>
                       <span v-if="model.status ===7">淇濆崟鐘舵�侊細宸插叧闂�</span>
diff --git a/company/src/components/business/OperaCompanyWindow.vue b/company/src/components/business/OperaCompanyWindow.vue
index ea7823e..6bf7e17 100644
--- a/company/src/components/business/OperaCompanyWindow.vue
+++ b/company/src/components/business/OperaCompanyWindow.vue
@@ -1,7 +1,7 @@
 <template>
     <GlobalWindow
         :title="title"
-        width="50%"
+        width="60%"
         :visible.sync="visible"
         :confirm-working="isWorking"
         @confirm="confirm"
diff --git a/company/src/components/business/OperaInsuranceApplyCheckWindow.vue b/company/src/components/business/OperaInsuranceApplyCheckWindow.vue
index 8c6e041..d0ceff9 100644
--- a/company/src/components/business/OperaInsuranceApplyCheckWindow.vue
+++ b/company/src/components/business/OperaInsuranceApplyCheckWindow.vue
@@ -7,109 +7,65 @@
         @confirm="confirm"
     >
         <!--    閫�鍥炴姇淇�    -->
-            <div v-if="visible1==true"  class="form">
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>濉啓閫�鍥炶鏄庯細</div>
-                    <div class="form_item_val">
-                        <textarea  v-model="form.backCheckInfo" placeholder="璇疯緭鍏�"></textarea>
-                    </div>
-                </div>
-            </div>
-        <!--    涓婁紶鎶曚繚鍗�    -->
-            <div v-if="visible2==true" class="form">
-                <div class="form_item">
-                    <div class="form_item_label">涓婁紶鎶曚繚鍗曪細</div>
-                    <div class="form_item_val">
-                      <UploadFile :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList" @uploadSuccess="toubaoFileUploaded" />
-                    </div>
-                </div>
-            </div>
+        <el-form v-if="visible1==true" :model="form" ref="form1" :rules="rules1" style="width: 100%;">
+          <el-form-item label="濉啓閫�鍥炶鏄庯細" prop="backCheckInfo">
+            <el-input type="textarea" v-model="form.backCheckInfo" placeholder="璇疯緭鍏�" v-trim/>
+          </el-form-item>
+        </el-form>
+        <el-form v-if="visible2==true" :model="form" ref="form2" :rules="rules2" style="width: 100%;">
+          <el-form-item label="涓婁紶鎶曚繚鍗曪細" prop="toubaodanFile">
+            <UploadFile :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList" @uploadSuccess="toubaoFileUploaded" />
+          </el-form-item>
+        </el-form>
         <!--    涓婁紶淇濋櫓鍗�    -->
-            <div v-if="visible3==true" class="form">
-                <div class="form_item">
-                    <div class="form_item_label">瀹㈡埛鏈熸湜淇濋櫓鐢熸晥璧锋湡锛�</div>
-                    <div class="form_item_val">{{ model.applyStartTime }}</div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">淇濋櫓鐢熸晥璧锋湡鏄惁涓�鑷达細</div>
-                    <div class="form_item_val">
-                        <el-radio-group v-model="form.selectRadio" @change="selectChange">
-                            <el-radio :label="0"  >涓庝繚鍗曚竴鑷�</el-radio>
-                            <el-radio :label="1" >涓庝繚鍗曚笉涓�鑷�</el-radio>
-                        </el-radio-group>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇濋櫓鐢熸晥璧锋湡锛�</div>
-                    <div class="form_item_val">
-                        <el-date-picker
-                            v-model="form.startTime"
-                            type="date"
-                            value-format="yyyy-MM-dd HH:mm:ss"
-                            placeholder="閫夋嫨鏃ユ湡">
-                        </el-date-picker>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">淇濋櫓鐢熸晥璧锋湡锛�</div>
-                    <div class="form_item_val">{{ form.startTime }}</div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇濆崟鍙凤細</div>
-                    <div class="form_item_val" >
-                        <el-input v-model="form.code" placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">涓婁紶淇濋櫓鍗曪細</div>
-                    <div class="form_item_val">
-                      <UploadFile :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="baoxianFileUploaded" />
-                    </div>
-                </div>
-            </div>
+              <el-form v-if="visible3==true" :model="form" ref="form3" :rules="rules3" style="width: 100%;">
+                <el-form-item label="瀹㈡埛鏈熸湜淇濋櫓鐢熸晥璧锋湡锛�">
+                  {{ model.applyStartTime }}
+                </el-form-item>
+                <el-form-item label="" >
+                  <el-radio-group v-model="form.selectRadio" @change="selectChange">
+                    <el-radio :label="0" >涓庝繚鍗曚竴鑷�</el-radio>
+                    <el-radio :label="1" >涓庝繚鍗曚笉涓�鑷�</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+                <el-form-item label="淇濋櫓鐢熸晥璧锋湡锛�" prop="startTime" >
+                  <el-date-picker
+                      v-model="form.startTime"
+                      type="date"
+                      value-format="yyyy-MM-dd HH:mm:ss"
+                      placeholder="閫夋嫨鏃ユ湡">
+                  </el-date-picker>
+                </el-form-item>
+                <el-form-item label="淇濋櫓鐢熸晥璧锋湡锛�">
+                  {{ form.startTime }}
+                </el-form-item>
+                <el-form-item label="淇濆崟鍙凤細" prop="code">
+                  <el-input v-model="form.code" placeholder="璇疯緭鍏�" v-trim/>
+                </el-form-item>
+                <el-form-item label="涓婁紶淇濋櫓鍗曪細" prop="baoxianFile">
+                  <UploadFile :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="baoxianFileUploaded" />
+                </el-form-item>
+              </el-form>
         <!--    淇敼淇濋櫓鍗�    -->
-            <div v-if="visible4==true" class="form">
-                <div class="form_item">
-                  <div class="form_item_label">淇濋櫓鐢熸晥璧锋湡锛�</div>
-                  <div class="form_item_val">{{ model.startTime }}</div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇濆崟鍙凤細</div>
-                    <div class="form_item_val">
-                        <el-input v-model="form.editCode" placeholder="璇疯緭鍏�"></el-input>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>涓婁紶淇濋櫓鍗曪細</div>
-                    <div class="form_item_val">
-                      <UploadFile :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList2" @uploadSuccess="editBaoxianFileUploaded" />
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label"><span>*</span>淇敼鍘熷洜锛�</div>
-                    <div class="form_item_val">
-                        <el-input placeholder="璇疯緭鍏�" v-model="form.editCheckInfo" ></el-input>
-                    </div>
-                </div>
-            </div>
-        <!--    椹冲洖閫�鍥炵敵璇�    -->
-        <div v-if="visible5==true" class="form">
-            <div class="form_item">
-                <div class="form_item_label"><span>*</span>濉啓璇存槑锛�</div>
-                <div class="form_item_val">
-                    <textarea v-model="form.dealBackInfo"  placeholder="璇疯緭鍏�"></textarea>
-                </div>
-            </div>
-        </div>
-        <!--    鍚屾剰閫�鍥炵敵璇�    -->
-        <div v-if="visible6==true" class="form">
-            <div class="form_item">
-                <div class="form_item_label"><span>*</span>鍚屾剰閫�鍥炶鏄庯細</div>
-                <div class="form_item_val">
-                    <textarea  v-model="form.dealBackInfo"  placeholder="璇疯緭鍏�"></textarea>
-                </div>
-            </div>
-        </div>
+      <el-form v-if="visible4==true" :model="form" ref="form4" :rules="rules4" style="width: 100%;">
+        <el-form-item label="淇濋櫓鐢熸晥璧锋湡锛�">
+          {{ model.startTime }}
+        </el-form-item>
+        <el-form-item label="淇濆崟鍙凤細" prop="editCode">
+          <el-input v-model="form.editCode" placeholder="璇疯緭鍏�" v-trim/>
+        </el-form-item>
+        <el-form-item label="涓婁紶淇濋櫓鍗曪細" prop="editBaoxianFile">
+          <UploadFile :uploadData="{ folder: 'apply',fileType:'.pdf' }" :fileList="form.fileList1" @uploadSuccess="editBaoxianFileUploaded" />
+        </el-form-item>
+        <el-form-item label="淇敼鍘熷洜锛�" prop="editCheckInfo">
+          <el-input type="textarea" v-model="form.editCheckInfo" placeholder="璇疯緭鍏�" v-trim/>
+        </el-form-item>
+      </el-form>
+        <el-form v-if="visible5==true || visible6==true" :model="form" ref="form5" :rules="rules5" style="width: 100%;">
+          <el-form-item label="濉啓璇存槑锛�" prop="dealBackInfo">
+            <el-input type="textarea" v-model="form.dealBackInfo" placeholder="璇疯緭鍏�" v-trim/>
+          </el-form-item>
+        </el-form>
       <template v-slot:footer>
         <el-button type="primary" @click="doSubmit">纭� 瀹�</el-button>
         <el-button @click="visible=false">鍙栨秷</el-button>
@@ -129,6 +85,7 @@
   check
 } from "@/api/business/insuranceApply";
 import UploadFile from "@/components/common/UploadFile";
+import {remark} from "@/api/business/settleClaims";
 export default {
   name: 'OperaChangeApplyCheckWindow',
   extends: BaseOpera,
@@ -138,6 +95,43 @@
       // 琛ㄥ崟鏁版嵁
       model: {},
       falg :0,
+      rules1: {
+        backCheckInfo: [
+          { required: true, message: '璇峰畬鍠勪俊鎭�' }
+        ]
+      },
+      rules2: {
+        toubaodanFile: [
+          { required: true, message: '璇峰畬鍠勪俊鎭�' }
+        ]
+      },
+      rules3: {
+        code: [
+          { required: true, message: '璇峰畬鍠勪俊鎭�' }
+        ],
+        startTime: [
+          { required: true, message: '璇峰畬鍠勪俊鎭�' }
+        ],
+        baoxianFile: [
+          { required: true, message: '璇峰畬鍠勪俊鎭�' }
+        ],
+      },
+      rules5: {
+        dealBackInfo: [
+          { required: true, message: '璇峰畬鍠勪俊鎭�' }
+        ]
+      },
+      rules4: {
+        editCode: [
+          { required: true, message: '璇峰畬鍠勪俊鎭�' }
+        ],
+        editBaoxianFile: [
+          { required: true, message: '璇峰畬鍠勪俊鎭�' }
+        ],
+        editCheckInfo: [
+          { required: true, message: '璇峰畬鍠勪俊鎭�' }
+        ]
+      },
       form: {
           id: null,
           backCheckInfo:'',
@@ -221,17 +215,53 @@
      },
     doSubmit(){
       if (this.flag == 1) {
-        this.backDo()
-      } else  if (this.flag == 2) {
-        this.uploadToubaodan()
+        this.$refs.form1.validate((valid) => {
+          // debugger
+          if (!valid) {
+            return
+          }
+          this.backDo()
+        })
+      } else if (this.flag == 2) {
+        this.$refs.form2.validate((valid) => {
+          // debugger
+          if (!valid) {
+            return
+          }
+          this.uploadToubaodan()
+        })
       } else if (this.flag == 3) {
-        this.uploadBaoxiandan()
+        this.$refs.form3.validate((valid) => {
+          // debugger
+          if (!valid) {
+            return
+          }
+          this.uploadBaoxiandan()
+        })
       } else if (this.flag == 4) {
-        this.editBaoxiandan()
+        this.$refs.form4.validate((valid) => {
+          // debugger
+          if (!valid) {
+            return
+          }
+          this.editBaoxiandan()
+        })
       } else if (this.flag == 5) {
-        this.dealBackApply(1)
+        this.$refs.form5.validate((valid) => {
+          // debugger
+          if (!valid) {
+            return
+          }
+          this.dealBackApply(1)
+        })
       } else if (this.flag == 6) {
-        this.dealBackApply(0)
+        this.$refs.form5.validate((valid) => {
+          // debugger
+          if (!valid) {
+            return
+          }
+          this.dealBackApply(0)
+        })
       }
     },
     selectChange(){
diff --git a/company/src/components/business/OperaInsuranceApplyWindow.vue b/company/src/components/business/OperaInsuranceApplyWindow.vue
index 5e08c61..fc12b61 100644
--- a/company/src/components/business/OperaInsuranceApplyWindow.vue
+++ b/company/src/components/business/OperaInsuranceApplyWindow.vue
@@ -31,16 +31,17 @@
                           <el-button v-if="model.status == 5" type="primary" @click="viewBaoxiandan">鏌ョ湅淇濋櫓鍗�</el-button>
                           <el-button v-if="model.status == 2" type="primary" @click="goSign">绛剧讲鎶曚繚鍗�</el-button>
                       </template>
-                      <template v-else>
-                            <el-button type="primary" @click="$refs.InsuranceDetails.open('鎶曚繚璇︽儏鍗�',model,0)">瀵煎嚭璇﹀崟</el-button>
-                        <el-button v-if="[2, 3, 5, 7, 8].includes(model.status)" type="primary" @click="viewToubaodan">鏌ョ湅鎶曚繚鍗�</el-button>
-                        <el-button v-if="model.status == 5" type="primary" @click="viewBaoxiandan">鏌ョ湅淇濋櫓鍗�</el-button>
-                        <el-button v-if="model.status == 10" type="primary" @click="$refs.OperaInsuranceApplyCheckWindow.open('涓婁紶鎶曚繚鍗�',model,2)">涓婁紶鎶曚繚鍗�</el-button>
-                        <el-button v-if="model.status == 3" type="primary" @click="$refs.OperaInsuranceApplyCheckWindow.open('涓婁紶淇濋櫓鍗�',model,3)">涓婁紶淇濋櫓鍗�</el-button>
-                        <el-button  v-if="model.status == 6 || model.status == 7|| model.status == 8" type="primary" @click="$refs.OperaInsuranceApplyCheckWindow.open('椹冲洖閫�鍥炵敵璇�',model,5)">椹冲洖閫�鍥炵敵璇�</el-button>
-                        <el-button v-if="model.status != 5 && model.status != 4 && model.status != 1" type="danger" @click="$refs.OperaInsuranceApplyCheckWindow.open('閫�鍥炴姇淇�',model,1)">閫�鍥炴姇淇�</el-button>
-                        <el-button v-if="model.status == 5" type="danger" @click="$refs.OperaInsuranceApplyCheckWindow.open('淇敼淇濋櫓鍗�',model,4)">淇敼淇濋櫓鍗�</el-button>
-                      </template>
+                    <template v-else>
+                      <el-button type="primary" @click="$refs.InsuranceDetails.open('鎶曚繚璇︽儏鍗�',model,0)">瀵煎嚭璇﹀崟</el-button>
+                      <el-button v-if="[2, 3, 5, 7, 8].includes(model.status)" type="primary" @click="viewToubaodan">鏌ョ湅鎶曚繚鍗�</el-button>
+                      <el-button v-if="model.status == 5" type="primary" @click="viewBaoxiandan">鏌ョ湅淇濋櫓鍗�</el-button>
+                      <el-button v-if="model.status == 10" type="primary" @click="$refs.OperaInsuranceApplyCheckWindow.open('涓婁紶鎶曚繚鍗�',model,2)">涓婁紶鎶曚繚鍗�</el-button>
+                      <el-button v-if="model.status == 3" type="primary" @click="$refs.OperaInsuranceApplyCheckWindow.open('涓婁紶淇濋櫓鍗�',model,3)">涓婁紶淇濋櫓鍗�</el-button>
+                      <el-button  v-if="model.status == 6 || model.status == 7|| model.status == 8" type="primary" @click="$refs.OperaInsuranceApplyCheckWindow.open('椹冲洖閫�鍥炵敵璇�',model,5)">椹冲洖閫�鍥炵敵璇�</el-button>
+                      <el-button v-if="model.status == 0" type="primary" @click="$refs.InsuranceDetails.open('鎶曚繚瀹℃牳',model,1)">鎶曚繚瀹℃牳</el-button>
+                      <el-button v-if="model.status != 5 && model.status != 4 && model.status != 1" type="danger" @click="$refs.OperaInsuranceApplyCheckWindow.open('閫�鍥炴姇淇�',model,1)">閫�鍥炴姇淇�</el-button>
+                      <el-button v-if="model.status == 5" type="danger" @click="$refs.OperaInsuranceApplyCheckWindow.open('淇敼淇濋櫓鍗�',model,4)">淇敼淇濋櫓鍗�</el-button>
+                    </template>
                   </div>
                 </div>
                 <div class="desc_item_from">
diff --git a/company/src/components/business/OperaSettleClaimsCheckWindow.vue b/company/src/components/business/OperaSettleClaimsCheckWindow.vue
index a88f38b..d3d79f9 100644
--- a/company/src/components/business/OperaSettleClaimsCheckWindow.vue
+++ b/company/src/components/business/OperaSettleClaimsCheckWindow.vue
@@ -6,92 +6,51 @@
         :confirm-working="isWorking"
         @confirm="confirm"
     >
-            <div v-if="visible1==true" class="form">
-                <div class="form_item">
-                    <div class="form_item_label">
-                        <span>*</span>鎶ユ鍙凤細
-                    </div>
-                    <div class="form_item_val">
-                        <input type="text" v-model="form.reportNum" placeholder="璇疯緭鍏�">
-                    </div>
-                </div>
-            </div>
-
-            <div  v-if="visible2==true" class="form">
-                <div class="form_item">
-                    <div class="form_item_label">
-                        <span>*</span>澶勭悊杩涘睍锛�
-                    </div>
-                    <div class="form_item_val">
-                        <textarea v-model="form.bizInfo" placeholder="璇疯緭鍏�"></textarea>
-                    </div>
-                </div>
-            </div>
-            <div  v-if="visible3==true" class="form">
-                <div class="form_item">
-                    <div class="form_item_label">
-                        <span>*</span>濉啓鎾ら攢璇存槑锛�
-                    </div>
-                    <div class="form_item_val">
-                        <textarea v-model="form.backInfo" placeholder="璇疯緭鍏�"></textarea>
-                    </div>
-                </div>
-            </div>
-            <div  v-if="visible4==true" class="form">
-                <div class="form_item">
-                    <div class="form_item_label">
-                        <span>*</span>缁撴鍐呭锛�
-                    </div>
-                    <div class="form_item_val">
-                        <textarea v-model="form.doneInfo" placeholder="璇疯緭鍏�"></textarea>
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">
-                         鍖荤枟鐞嗚禂锛�
-                    </div>
-                    <div class="form_item_val">
-                        <input v-model="form.ylClaimAccount" placeholder="璇疯緭鍏�" />
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">
-                        璇伐鐞嗚禂锛�
-                    </div>
-                    <div class="form_item_val">
-                        <input v-model="form.wgClaimAccount" placeholder="璇疯緭鍏�" />
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">
-                        浼ゆ畫鐞嗚禂锛�
-                    </div>
-                    <div class="form_item_val">
-                        <input v-model="form.scClaimAccount" placeholder="璇疯緭鍏�" />
-                    </div>
-                </div>
-                <div class="form_item">
-                    <div class="form_item_label">
-                         姝讳骸鐞嗚禂锛�
-                    </div>
-                    <div class="form_item_val">
-                        <input v-model="form.swClaimAccount" placeholder="璇疯緭鍏�" />
-                    </div>
-                </div>
-            </div>
+              <el-form v-if="visible1==true" :model="form" ref="form1" :rules="rules1" style="width: 100%;">
+                <el-form-item label="鎶ユ鍙凤細" prop="reportNum">
+                  <el-input v-model="form.reportNum" placeholder="璇疯緭鍏�" v-trim/>
+                </el-form-item>
+              </el-form>
+              <el-form v-if="visible2==true" :model="form" ref="form2" :rules="rules2" style="width: 100%;">
+                <el-form-item label="澶勭悊杩涘睍锛�" prop="bizInfo">
+                  <el-input type="textarea" v-model="form.bizInfo" placeholder="璇疯緭鍏�" v-trim/>
+                </el-form-item>
+              </el-form>
+              <el-form v-if="visible3==true" :model="form" ref="form3" :rules="rules3" style="width: 100%;">
+                <el-form-item label="鎾ら攢璇存槑锛�" prop="backInfo">
+                  <el-input type="textarea" v-model="form.backInfo" placeholder="璇疯緭鍏�" v-trim/>
+                </el-form-item>
+              </el-form>
+              <el-form v-if="visible4==true" :model="form" ref="form4" :rules="rules4" style="width: 100%;">
+                <el-form-item label="缁撴鍐呭锛�" prop="doneInfo">
+                  <el-input type="textarea" v-model="form.doneInfo" @change="changeAccount" placeholder="璇疯緭鍏�" v-trim/>
+                </el-form-item>
+                <el-form-item label="鍖荤枟鐞嗚禂(鍏�)锛�" prop="ylClaimAccount">
+                  <el-input type="number" v-model="form.ylClaimAccount"  @change="changeAccount" placeholder="璇疯緭鍏�" v-trim/>
+                </el-form-item>
+                <el-form-item label="璇伐鐞嗚禂(鍏�)锛�" prop="wgClaimAccount">
+                  <el-input type="number" v-model="form.wgClaimAccount" @change="changeAccount"  placeholder="璇疯緭鍏�" v-trim/>
+                </el-form-item>
+                <el-form-item label="浼ゆ畫鐞嗚禂(鍏�)锛�" prop="scClaimAccount">
+                  <el-input type="number" v-model="form.scClaimAccount" @change="changeAccount"  placeholder="璇疯緭鍏�" v-trim/>
+                </el-form-item>
+                <el-form-item label="姝讳骸鐞嗚禂(鍏�)锛�" prop="swClaimAccount">
+                  <el-input type="number" v-model="form.swClaimAccount"  @change="changeAccount"  placeholder="璇疯緭鍏�" v-trim/>
+                </el-form-item>
+                <el-form-item label="鎬婚噾棰濓細"  >
+                  <el-input type="number" readonly v-model="form.totalAccount" placeholder="璇疯緭鍏�" v-trim/>
+                </el-form-item>
+              </el-form>
             <div v-if="visible5 ==true"  class="form">
                 <div class="form_span" v-for="(item,index) in remarkLogList" :key="index">
                     <span>鐞嗚禂鍛�-{{ item.creatorName }} {{item.createDate }}</span>
                     <span>{{item.content }}</span>
                 </div>
-                <div class="form_item">
-                    <div class="form_item_label">
-                        <span>*</span>濉啓澶囨敞鏍囩锛�
-                    </div>
-                    <div class="form_item_val">
-                        <textarea v-model="form.remarkInfo" placeholder="璇疯緭鍏�"></textarea>
-                    </div>
-                </div>
+                <el-form :model="form" ref="form5" :rules="rules5" style="width: 100%;">
+                  <el-form-item label="濉啓澶囨敞鏍囩锛�" prop="remarkInfo">
+                    <el-input type="textarea" v-model="form.remarkInfo" placeholder="璇疯緭鍏�" v-trim/>
+                  </el-form-item>
+                </el-form>
             </div>
       <template v-slot:footer>
         <el-button type="primary" @click="doSubmit">纭畾</el-button>
@@ -101,155 +60,220 @@
 </template>
 
 <script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import {addCode, back, dealBiz,doneCommit, remark} from "@/api/business/settleClaims";
-    export default {
-        name: 'OperaSettleClaimsCheckWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-              remarkLogList:[],
-              type:0,
-                // 琛ㄥ崟鏁版嵁
-              form: {
-                id: null,
-                checkInfo: null,
-                bizInfo: null,
-                doneInfo: null,
-                backInfo: null,
-                remarkInfo: null,
-                ylClaimAccount: null,
-                wgClaimAccount: null,
-                swClaimAccount: null,
-                scClaimAccount: null,
-                reportNum: null,
-              },
-              model:{},
-                activeName: 'first',
-                reverse: true,
-                tableData: [],
-                visible1: false,
-                visible2: false,
-                visible3: false,
-                visible4: false,
-                visible5: false
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/settleClaims',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-          open(title,target,target1,type){
-            this.model ={}
-            this.model = target
-            this.title=title
-            this.visible=true
-            this.type=type
-            this.remarkLogList= target1
-            this.visible1=false,
-            this.visible2= false,
-            this.visible3=false,
-            this. visible4= false,
-            this. visible5= false
-            this.form=target
-            this. form= {
-              id: null,
-               checkInfo: null,
-              doneInfo: null,
-              remarkInfo: null,
-              bizInfo: null,
-              backInfo: null,
-              ylClaimAccount: null,
-              wgClaimAccount: null,
-              swClaimAccount: null,
-              scClaimAccount: null,
-               reportNum: null,
-            }
-            if(type==1){
-              this.visible1=true
-            }
-            if(type==2){
-              this.visible2=true
-            }
-            if(type==3){
-              this.visible3=true
-            }
-            if(type==4){
-              this.visible4=true
-            }
-            if(type==5){
-              this.visible5=true
-            }
-       },
-            doSubmit(type) {
-              var that =this
-              if(this.type ===5){
-                // this.isWorking = true
-                remark({id:that.model.id,checkInfo:that.form.remarkInfo})
-                    .then(response => {
-                      this.visible=false
-                      this.$emit('success')
-                    }).catch(err => {
-                  this.$tip.apiFailed(err)
-                })
-              }else if(this.type === 4){
-                // this.isWorking = true
-                doneCommit({id: that.model.id, checkInfo: that.form.doneInfo,
-                  ylClaimAccount: that.form.ylClaimAccount,
-                  wgClaimAccount: that.form.wgClaimAccount,
-                  swClaimAccount: that.form.swClaimAccount,
-                  scClaimAccount: that.form.scClaimAccount})
-                    .then(response => {
-                      this.visible=false
-                      this.$emit('success')
-                    }).catch(err => {
-                  this.$tip.apiFailed(err)
-                })
-              }else if(this.type===2){
-                //鐞嗚禂澶勭悊
-                dealBiz({ id: that.model.id, checkInfo:that.form.bizInfo })
-                    .then(response => {
-                      this.visible=false
-                      this.$emit('success')
-                    }).catch(err => {
-                  console.log(err)
-                  this.$tip.apiFailed(err)
-                }).finally(() => {
-                  this.isWorking = false
-                })
-              }else if(this.type===3){
-                //鐞嗚禂澶勭悊
-                back({ id: that.model.id, checkInfo:that.form.backInfo })
-                    .then(response => {
-                      this.visible=false
-                      this.$emit('success')
-                    }).catch(err => {
-                  console.log(err)
-                  this.$tip.apiFailed(err)
-                }).finally(() => {
-                  this.isWorking = false
-                })
-              }else if(this.type===1){
-                //娣诲姞澶囨鍙�
-                addCode({ id: that.model.id, reportNum:that.form.reportNum })
-                    .then(response => {
-                      this.visible=false
-                      this.$emit('success')
-                    }).catch(err => {
-                      console.log(err)
-                      this.$tip.apiFailed(err)
-                    }).finally(() => {
-                      this.isWorking = false
-                    })
-              }
-            }
-        }
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { addCode, back, dealBiz, doneCommit, remark } from '@/api/business/settleClaims'
+export default {
+  name: 'OperaSettleClaimsCheckWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      remarkLogList: [],
+      type: 0,
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null,
+        checkInfo: null,
+        bizInfo: null,
+        doneInfo: null,
+        backInfo: null,
+        remarkInfo: null,
+        ylClaimAccount: 0,
+        wgClaimAccount: 0,
+        swClaimAccount: 0,
+        scClaimAccount: 0,
+        reportNum: null,
+        totalAccount:0
+      },
+      model: {},
+      activeName: 'first',
+      reverse: true,
+      tableData: [],
+      visible1: false,
+      visible2: false,
+      visible3: false,
+      visible4: false,
+      visible5: false,
+      rules1: {
+        reportNum: [
+          { required: true, message: '璇疯緭鍏�' }
+        ]
+      },
+      rules2: {
+        bizInfo: [
+          { required: true, message: '璇疯緭鍏�' }
+        ]
+      },
+      rules3: {
+        backInfo: [
+          { required: true, message: '璇疯緭鍏�' }
+        ]
+      },
+      rules5: {
+        remarkInfo: [
+          { required: true, message: '璇疯緭鍏�' }
+        ]
+      },
+      rules4: {
+        doneInfo: [
+          { required: true, message: '璇疯緭鍏�' }
+        ]
+      }
     }
+  },
+  created () {
+    this.config({
+      api: '/business/settleClaims',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    open (title, target, target1, type) {
+      this.model = {}
+      this.model = target
+      this.title = title
+      this.visible = true
+      this.type = type
+      this.remarkLogList = target1
+      this.visible1 = false,
+      this.visible2 = false,
+      this.visible3 = false,
+      this.visible4 = false,
+      this.visible5 = false
+      this.form = target
+      this.form = {
+        id: null,
+        checkInfo: null,
+        doneInfo: null,
+        remarkInfo: null,
+        bizInfo: null,
+        backInfo: null,
+        ylClaimAccount: 0,
+        wgClaimAccount: 0,
+        swClaimAccount: 0,
+        scClaimAccount: 0,
+        reportNum: null,
+        totalAccount:0
+      }
+      if (type == 1) {
+        this.visible1 = true
+      }
+      if (type == 2) {
+        this.visible2 = true
+      }
+      if (type == 3) {
+        this.visible3 = true
+      }
+      if (type == 4) {
+        this.visible4 = true
+      }
+      if (type == 5) {
+        this.visible5 = true
+      }
+    },
+     changeAccount(){
+       this.form.swClaimAccount = parseFloat(this.form.swClaimAccount).toFixed(2)
+       this.form.scClaimAccount = parseFloat(this.form.scClaimAccount).toFixed(2)
+       this.form.wgClaimAccount = parseFloat(this.form.wgClaimAccount).toFixed(2)
+       this.form.ylClaimAccount = parseFloat(this.form.ylClaimAccount).toFixed(2)
+      this.form.totalAccount = parseFloat( this.form.scClaimAccount || 0) + parseFloat( this.form.swClaimAccount || 0)
+         + parseFloat( this.form.wgClaimAccount|| 0)
+         + parseFloat( this.form.ylClaimAccount|| 0)
+     },
+    doSubmit (type) {
+      var that = this
+      if (this.type === 5) {
+        this.$refs.form5.validate((valid) => {
+          // debugger
+          if (!valid) {
+            return
+          }
+          remark({ id: that.model.id, checkInfo: that.form.remarkInfo })
+            .then(response => {
+              this.visible = false
+              this.$emit('success')
+            }).catch(err => {
+              this.$tip.apiFailed(err)
+            })
+        })
+      } else if (this.type === 4) {
+        this.$refs.form4.validate((valid) => {
+          // debugger
+          if (!valid) {
+            return
+          }
+          doneCommit({
+            id: that.model.id,
+            checkInfo: that.form.doneInfo,
+            ylClaimAccount: that.form.ylClaimAccount,
+            wgClaimAccount: that.form.wgClaimAccount,
+            swClaimAccount: that.form.swClaimAccount,
+            scClaimAccount: that.form.scClaimAccount
+          }).then(response => {
+            this.visible = false
+            this.$emit('success')
+          }).catch(err => {
+            this.$tip.apiFailed(err)
+          })
+        })
+      } else if (this.type === 2) {
+        this.$refs.form2.validate((valid) => {
+          // debugger
+          if (!valid) {
+            return
+          }
+          // 鐞嗚禂澶勭悊
+          dealBiz({ id: that.model.id, checkInfo: that.form.bizInfo })
+            .then(response => {
+              this.visible = false
+              this.$emit('success')
+            }).catch(err => {
+              console.log(err)
+              this.$tip.apiFailed(err)
+            }).finally(() => {
+              this.isWorking = false
+            })
+        })
+      } else if (this.type === 3) {
+        this.$refs.form3.validate((valid) => {
+          // debugger
+          if (!valid) {
+            return
+          }
+          back({ id: that.model.id, checkInfo: that.form.backInfo })
+            .then(response => {
+              this.visible = false
+              this.$emit('success')
+            }).catch(err => {
+              console.log(err)
+              this.$tip.apiFailed(err)
+            }).finally(() => {
+              this.isWorking = false
+            })
+        })
+      } else if (this.type === 1) {
+        // 娣诲姞澶囨鍙�
+        this.$refs.form1.validate((valid) => {
+          // debugger
+          if (!valid) {
+            return
+          }
+          addCode({ id: that.model.id, reportNum: that.form.reportNum })
+            .then(response => {
+              this.visible = false
+              this.$emit('success')
+            }).catch(err => {
+              console.log(err)
+              this.$tip.apiFailed(err)
+            }).finally(() => {
+              this.isWorking = false
+            })
+        })
+      }
+    }
+  }
+}
 </script>
 <style>
     .v-modal {
diff --git a/company/src/components/business/OperaTaxesWindow.vue b/company/src/components/business/OperaTaxesWindow.vue
index e3d809c..40e83e2 100644
--- a/company/src/components/business/OperaTaxesWindow.vue
+++ b/company/src/components/business/OperaTaxesWindow.vue
@@ -1,7 +1,7 @@
 <template>
     <GlobalWindow
         :title="title"
-        width="50%"
+        width="100%"
         submitText="杩斿洖淇敼"
         :visible.sync="visible"
         :confirm-working="isWorking"
@@ -87,57 +87,59 @@
 </template>
 
 <script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    export default {
-        name: 'OperaCompanyWindow',
-        extends: BaseOpera,
-        components: { GlobalWindow },
-        data () {
-            return {
-                // 琛ㄥ崟鏁版嵁
-                form: {
-                    id: null
-                },
-                // 楠岃瘉瑙勫垯
-                rules: {},
-              tableData:[]
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/taxes',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            getSummaries(param) {
-                const { columns, data } = param;
-                const sums = [];
-                columns.forEach((column, index) => {
-                    if (index === 0) {
-                        sums[index] = '鍚堣';
-                        return;
-                    } else {
-                        if (index == 9||index==10||index==11||index==12) {
-                            const values = data.map(item => Number(item[column.property]));
-                            if (!values.every(value => isNaN(value))) {
-                                sums[index] = values.reduce((prev, curr) => {
-                                    const value = Number(curr);
-                                    if (!isNaN(value)) {
-                                        return prev + curr;
-                                    } else {
-                                        return prev;
-                                    }
-                                }, 0);
-                            }
-                        }
-                    }
-                });
-                return sums;
-            }
-        }
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+export default {
+  name: 'OperaCompanyWindow',
+  extends: BaseOpera,
+  components: { GlobalWindow },
+  data () {
+    return {
+      // 琛ㄥ崟鏁版嵁
+      form: {
+        id: null
+      },
+      // 楠岃瘉瑙勫垯
+      rules: {},
+      tableData: []
     }
+  },
+  created () {
+    this.config({
+      api: '/business/taxes',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    open(title,targer){
+      
+    },
+    getSummaries (param) {
+      const { columns, data } = param
+      const sums = []
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = '鍚堣'
+        } else {
+          if (index == 9 || index == 10 || index == 11 || index == 12) {
+            const values = data.map(item => Number(item[column.property]))
+            if (!values.every(value => isNaN(value))) {
+              sums[index] = values.reduce((prev, curr) => {
+                const value = Number(curr)
+                if (!isNaN(value)) {
+                  return prev + curr
+                } else {
+                  return prev
+                }
+              }, 0)
+            }
+          }
+        }
+      })
+      return sums
+    }
+  }
+}
 </script>
 
 <style lang="scss" scoped>
@@ -150,7 +152,7 @@
             justify-content: space-between;
             margin-bottom: 20px;
             span {
-                font-size: 18px;
+                font-size: 14px;
                 font-weight: 500;
                 color: #000000;
             }
diff --git a/company/src/views/business/applyChange.vue b/company/src/views/business/applyChange.vue
index 9296816..1f35fe8 100644
--- a/company/src/views/business/applyChange.vue
+++ b/company/src/views/business/applyChange.vue
@@ -66,7 +66,7 @@
           <template slot-scope="{row}">
             <span v-if="row.status === 0">寰呯缃�</span>
             <span v-if="row.status === 1">宸茬绔�</span>
-            <span v-if="row.status === 2">宸蹭笂浼犳壒鍗�</span>
+            <span v-if="row.status === 2">宸茬敓鏁�</span>
             <span v-if="row.status === 3 || row.status === 4">閫�鍥炵敵璇�</span>
             <span v-if="row.status ===5 || row.status === 8">宸查��鍥�</span>
             <span v-if="row.status ===7">宸插叧闂�</span>
diff --git a/company/src/views/business/switchCourt.vue b/company/src/views/business/switchCourt.vue
index 3806712..5bf3682 100644
--- a/company/src/views/business/switchCourt.vue
+++ b/company/src/views/business/switchCourt.vue
@@ -66,7 +66,7 @@
           <template slot-scope="{row}">
             <span v-if="row.status === 0">寰呯缃�</span>
             <span v-if="row.status === 1">宸茬绔�</span>
-            <span v-if="row.status === 2">宸蹭笂浼犳壒鍗�</span>
+            <span v-if="row.status === 2">宸茬敓鏁�</span>
             <span v-if="row.status === 3 || row.status === 4">閫�鍥炵敵璇�</span>
             <span v-if="row.status ===5 || row.status === 8">宸查��鍥�</span>
             <span v-if="row.status ===7">宸插叧闂�</span>
diff --git a/company/src/views/business/taxes.vue b/company/src/views/business/taxes.vue
index 6f1a9da..eb05330 100644
--- a/company/src/views/business/taxes.vue
+++ b/company/src/views/business/taxes.vue
@@ -52,9 +52,9 @@
                         <span v-if="row.status === 2">骞冲彴鎾ゅ洖</span>
                     </template>
                 </el-table-column>
-                <el-table-column prop="companyId" label="鐢宠浼佷笟" min-width="100px"></el-table-column>
-                <el-table-column prop="companyId" label="鐢宠寮�绁ㄦ椂闂�" min-width="100px"></el-table-column>
-                <el-table-column prop="companyId" label="鐢宠浜�" min-width="100px"></el-table-column>
+                <el-table-column prop="companyName" label="鐢宠浼佷笟" min-width="100px"></el-table-column>
+                <el-table-column prop="createDate" label="鐢宠寮�绁ㄦ椂闂�" min-width="100px"></el-table-column>
+                <el-table-column prop="creatorName" label="鐢宠浜�" min-width="100px"></el-table-column>
                 <el-table-column prop="price" label="寮�绁ㄩ噾棰濓紙鍏冿級" min-width="100px"></el-table-column>
                 <el-table-column label="鎶曚繚绫诲瀷" min-width="100px">
                     <template slot-scope="{row}">
@@ -70,14 +70,14 @@
                 </el-table-column>
                 <el-table-column prop="type" label="鍙戠エ鐢靛瓙鐗�" min-width="100px">
                     <template slot-scope="{row}">
-                      <img v-if="row.imgurlfull!=null" :src="row.imgurlfull"  style="width: 90px;height: 90px">
+                      <img v-if="row.imgurlFull!=null" :src="row.imgurlFull"  style="width: 40px;height: 40px">
                     </template>
                 </el-table-column>
-                <el-table-column label="鎿嶄綔" min-width="100px">
+                <el-table-column label="鎿嶄綔" min-width="180px">
                     <template slot-scope="{row}">
                         <el-button v-if="row.status==0" type="text" @click="$refs.OperaTaxesUploadWindow.open('涓婁紶鍙戠エ',row)">涓婁紶鍙戠エ</el-button>
                         <el-button v-if="row.status ==1 " type="text" @click="$refs.OperaTaxesUploadWindow.open('淇敼鍙戠エ',row)">淇敼鍙戠エ</el-button>
-                        <el-button type="text">鐢宠璇︽儏</el-button>
+                        <el-button type="text"    @click="$refs.OperaTaxesWindow.open('鐢宠璇︽儏',row)">鐢宠璇︽儏</el-button>
                     </template>
                 </el-table-column>
             </el-table>
diff --git a/server/pom.xml b/server/pom.xml
index 108a258..aa859e4 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -190,7 +190,10 @@
       <artifactId>mybatis-plus-join</artifactId>
       <version>1.4.2.2</version>
     </dependency>
-
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-mail</artifactId>
+    </dependency>
     <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
diff --git a/server/service/src/main/java/com/doumee/core/utils/Constants.java b/server/service/src/main/java/com/doumee/core/utils/Constants.java
index 5270010..14fe22d 100644
--- a/server/service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -1420,6 +1420,7 @@
                     }
                 }
                 zipOutputStream.closeArchiveEntry();
+                file.delete();
             }
         }
     }
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java b/server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java
index 96a19e8..a9025e9 100644
--- a/server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java
+++ b/server/service/src/main/java/com/doumee/dao/business/model/ApplyChange.java
@@ -95,9 +95,9 @@
     @ApiModelProperty(value = "鏈熸湜淇濋櫓鐢熸晥璧锋湡")
     @ExcelColumn(name="鏈熸湜淇濋櫓鐢熸晥璧锋湡")
     //鍏ュ弬
-     @DateTimeFormat(pattern = "yyyy-MM-dd")
-    //鍑哄弬
-    @JsonFormat(pattern="yyyy-MM-dd")
+//     @DateTimeFormat(pattern = "yyyy-MM-dd")
+//    //鍑哄弬
+//    @JsonFormat(pattern="yyyy-MM-dd")
     private Date validTime;
 
     @ApiModelProperty(value = "鎵瑰崟鍙�")
@@ -193,7 +193,9 @@
     @ApiModelProperty(value = "淇濋櫓鐢熸晥姝㈡湡")
     @TableField(exist = false)
     private Date endTime;
-
+    @ApiModelProperty(value = "鏂规閭欢")
+    @TableField(exist = false)
+    private String solutionEmail;
     @ApiModelProperty(value = "鏃ュ織璁板綍")
     @TableField(exist = false)
     private List<ApplyLog> applyLogList;
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/InsuranceApply.java b/server/service/src/main/java/com/doumee/dao/business/model/InsuranceApply.java
index 452c5ae..69961ec 100644
--- a/server/service/src/main/java/com/doumee/dao/business/model/InsuranceApply.java
+++ b/server/service/src/main/java/com/doumee/dao/business/model/InsuranceApply.java
@@ -71,26 +71,26 @@
 
     @ApiModelProperty(value = "鏈熸湜淇濋櫓鐢熸晥姝㈡湡")
     @ExcelColumn(name="鏈熸湜淇濋櫓鐢熸晥姝㈡湡")
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-     @JsonFormat(pattern="yyyy-MM-dd")
+//    @DateTimeFormat(pattern = "yyyy-MM-dd")
+//     @JsonFormat(pattern="yyyy-MM-dd")
     private Date applyEndTime;
 
     @ApiModelProperty(value = "鏈熸湜淇濋櫓鐢熸晥璧锋湡")
     @ExcelColumn(name="鏈熸湜淇濋櫓鐢熸晥璧锋湡")
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    @JsonFormat(pattern="yyyy-MM-dd")
+//    @DateTimeFormat(pattern = "yyyy-MM-dd")
+//    @JsonFormat(pattern="yyyy-MM-dd")
     private Date applyStartTime;
 
     @ApiModelProperty(value = "瀹為檯淇濋櫓鐢熸晥姝㈡湡")
     @ExcelColumn(name="瀹為檯淇濋櫓鐢熸晥姝㈡湡")
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    @JsonFormat(pattern="yyyy-MM-dd")
+//    @DateTimeFormat(pattern = "yyyy-MM-dd")
+//    @JsonFormat(pattern="yyyy-MM-dd")
     private Date endTime;
 
     @ApiModelProperty(value = "瀹為檯淇濋櫓鐢熸晥璧锋湡")
     @ExcelColumn(name="瀹為檯淇濋櫓鐢熸晥璧锋湡")
-    @DateTimeFormat(pattern = "yyyy-MM-dd")
-    @JsonFormat(pattern="yyyy-MM-dd")
+//    @DateTimeFormat(pattern = "yyyy-MM-dd")
+//    @JsonFormat(pattern="yyyy-MM-dd")
     private Date startTime;
 
     @ApiModelProperty(value = "鏈�杩戞搷浣滄椂闂�")
@@ -132,6 +132,9 @@
     @ApiModelProperty(value = "鏂规鍚嶇О")
     @TableField(exist = false)
     private String solutionsName;
+    @ApiModelProperty(value = "鏂规閭欢")
+    @TableField(exist = false)
+    private String solutionEmail;
     @ApiModelProperty(value = "绛剧珷鍏抽敭瀛�")
     @TableField(exist = false)
     private String signKeyword;
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/SmsEmail.java b/server/service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
index 345c331..6babd31 100644
--- a/server/service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
+++ b/server/service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -9,6 +10,8 @@
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 鐭俊閭欢淇℃伅琛�
@@ -86,5 +89,8 @@
     @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷")
     @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷")
     private String objType;
+    @ApiModelProperty(value = "闄勪欢闆嗗悎")
+    @TableField(exist = false)
+    private   List<Map<String,Object>> fileList;
 
 }
diff --git a/server/service/src/main/java/com/doumee/service/business/SmsEmailService.java b/server/service/src/main/java/com/doumee/service/business/SmsEmailService.java
index d647275..8d5dfaf 100644
--- a/server/service/src/main/java/com/doumee/service/business/SmsEmailService.java
+++ b/server/service/src/main/java/com/doumee/service/business/SmsEmailService.java
@@ -20,6 +20,7 @@
      */
     Integer create(SmsEmail smsEmail);
     Integer sendSms(SmsEmail smsEmail);
+    Integer sendEmail(SmsEmail smsEmail);
     /**
      * 涓婚敭鍒犻櫎
      *
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
index 489a5ee..0d06fbd 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
@@ -522,19 +522,20 @@
             applyLogType = Constants.ApplyLogType.CA_PALTFORM_REFUSE_APPLY;
             info = applyLogType.getInfo();
             info = info.replace("${param}", param.getCheckInfo());
-            update.setStatus(Constants.ApplyChangeStatus.SIGNATURE.getKey());
+//
+            if( Constants.equalsInteger(model.getStatus(),Constants.ApplyChangeStatus.RETURN_APPLY_SIGNATURE.getKey())){
+                update.setStatus(Constants.ApplyChangeStatus.SIGNATURE.getKey());
+            }else if( Constants.equalsInteger(model.getStatus(),Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey())){
+                update.setStatus(Constants.ApplyChangeStatus.UPLOAD.getKey());
+            }
         }else{
             //濡傛灉鏄悓鎰�,涓ょ鐢宠閫�鍥炵姸鎬侀兘鍙搷浣�
             if(!(Constants.equalsInteger(model.getStatus(),Constants.ApplyChangeStatus.RETURN_APPLY_SIGNATURE.getKey())
                     ||Constants.equalsInteger(model.getStatus(),Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey()))){
                 throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ョ敵璇风姸鎬佸凡娴佽浆锛屽綋鍓嶄笉鏀寔璇ユ搷浣渵");
             }
-            applyLogType = Constants.ApplyLogType.CA_PALTFORM_REFUSE_APPLY;
-            if( Constants.equalsInteger(model.getStatus(),Constants.ApplyChangeStatus.RETURN_APPLY_SIGNATURE.getKey())){
-                update.setStatus(Constants.ApplyChangeStatus.SIGNATURE.getKey());
-            }else if( Constants.equalsInteger(model.getStatus(),Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey())){
-                update.setStatus(Constants.ApplyChangeStatus.UPLOAD.getKey());
-            }
+            update.setStatus(Constants.ApplyChangeStatus.PLATFORM_AGREE.getKey());
+            applyLogType = Constants.ApplyLogType.CA_PLATFORM_AGREE_BACK_APPLY;
         }
         update.setEditDate(new Date());
         update.setEditor(user.getId());
@@ -1320,7 +1321,7 @@
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         Company company = user.getCompany();
         if(debugModel){
-company = companyMapper.selectById(model.getCompanyId());
+            company = companyMapper.selectById(model.getCompanyId());
         }
         if(company== null || StringUtils.isBlank( company.getEmail()) || !Constants.equalsInteger(company.getSignStatus(),Constants.THREE)){
             throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝浼佷笟灏氭湭鍏峰鍦ㄧ嚎绛剧珷鏉′欢锛岃鑱旂郴骞冲彴绠$悊鍛樼‘璁");
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
index 9da21c5..c3e08a2 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
@@ -24,6 +24,8 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.service.business.SmsEmailService;
+import com.doumee.service.business.third.EmailService;
 import com.doumee.service.business.third.SignService;
 import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -36,6 +38,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.io.File;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -53,7 +56,9 @@
     @Autowired
     private InsuranceApplyMapper insuranceApplyMapper;
     @Autowired
-    private ApplyChangeMapper applyChangeMapper;
+    private SmsEmailService smsEmailService;
+    @Autowired
+    private ApplyChangeJoinMapper applyChangeMapper;
 
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
@@ -396,14 +401,13 @@
                 return tempFileName;
             }
         }catch (Exception e){
-
         }
         return  null;
 
     }
 
 
-    public Integer uploadSignedFileDo(InsuranceApply model,String fileurl) {
+    public Multifile   uploadSignedFileDo(InsuranceApply model,String fileurl,String fullUrl) {
         InsuranceApply update = new InsuranceApply();
         update.setEditDate(new Date());
         update.setEditor(model.getCreator());
@@ -422,15 +426,19 @@
         f.setObjType(Constants.MultiFile.BD_SIGNED_PDF.getKey());
         f.setType(Constants.TWO);
         f.setFileurl(fileurl);
+        f.setFileurlFull(fullUrl);
+        f.setInfo("鎶曚繚鍗曚紒涓氱绾﹀悎鍚�");
         f.setName("鎶曚繚鍗曠绾﹀悎鍚�.pdf");
         multifileMapper.insert(f);
         Constants.ApplyLogType applyLogType = Constants.ApplyLogType.SIGNATURE;
         ApplyLog log = new ApplyLog(update,applyLogType.getName(), null,update.getId(),applyLogType.getKey(),JSONObject.toJSONString(model), JSONObject.toJSONString(update));
         applyLogMapper.insert(log);
-        return  1;
+
+        startSendEmail(f, model.getCompanyName(),model.getSolutionsName(),model.getSolutionEmail());
+        return  f;
 
     }
-    public Integer uploadChangeSignedFileDo(ApplyChange model,String fileurl) {
+    public Multifile  uploadChangeSignedFileDo(ApplyChange model,String fileurl,String fullurl) {
         ApplyChange update = new ApplyChange();
         update.setEditDate(new Date());
         update.setEditor(model.getCreator());
@@ -449,19 +457,53 @@
         f.setObjType(Constants.equalsInteger(Constants.ZERO,model.getType())?Constants.MultiFile.CA_APPLY_JIAJIAN_SIGN.getKey() : Constants.MultiFile.CA_APPLY_CHANGEUNIT_SIGN.getKey());
         f.setType(Constants.TWO);
         f.setFileurl(fileurl);
+        f.setFileurlFull(fullurl);
+        f.setInfo("浼佷笟鐢宠琛ㄧ缃叉枃浠�");
         f.setName("绛剧珷鐢宠琛�.pdf");
         multifileMapper.insert(f);
         Constants.ApplyLogType applyLogType =Constants.equalsInteger(Constants.ZERO,model.getType())? Constants.ApplyLogType.CA_JIAJIAN_APPLY_SIGN: Constants.ApplyLogType.CA_CHANGUNIT_APPLY_SIGN;
         ApplyLog log = new ApplyLog(update,applyLogType.getName(), null,update.getId(),applyLogType.getKey(),JSONObject.toJSONString(model), JSONObject.toJSONString(update));
         applyLogMapper.insert(log);
-        return  1;
+
+        startSendEmail(f,model.getCompanyName(),model.getSolutionsName(),model.getSolutionEmail());
+        return f;
 
     }
+
+    private void startSendEmail(Multifile f, String companyName, String solutionsName, String solutionEmail) {
+        if(StringUtils.isBlank(solutionEmail) || f==null|| StringUtils.isBlank(f.getFileurl())){
+            return;
+        }
+        SmsEmail email = new SmsEmail();
+        email.setTitle(f.getInfo());
+        email.setEmail(solutionEmail);
+        email.setContent("鏉ヨ嚜浼佷笟銆�"+companyName+"銆戝叧浜庝繚闄╂柟妗堛��"+solutionsName+"銆戠殑"+f.getInfo());
+        File file = Constants.getFileByNetFile(f.getFileurlFull(),f.getName());
+        if(file!=null && file.isFile()){
+            Map<String,Object> files = new HashMap<>();
+            files.put("name",f.getName());
+            files.put("file",file);
+            email.setFileList(new ArrayList<>());
+            email.getFileList().add(files);
+            smsEmailService.sendEmail(email);
+            file.delete();//鍙戦�佸悗鍒犻櫎涓存椂鏂囦欢
+        }
+    }
+
     @Override
     public   void dealWaitSignedData(){
-        List<InsuranceApply> applyList = insuranceApplyMapper.selectList(new QueryWrapper<InsuranceApply>().lambda()
+        List<InsuranceApply> applyList = insuranceApplyJoinMapper.selectJoinList(InsuranceApply.class,
+                new MPJLambdaWrapper<InsuranceApply>()
+                .selectAll(InsuranceApply.class)
+                .selectAs(Solutions::getName,InsuranceApply::getSolutionsName)
+                .selectAs(Solutions::getEmail,InsuranceApply::getSolutionEmail)
+                .selectAs(Company::getName,InsuranceApply::getCompanyName)
+                .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
+                .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
                 .eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.WAIT_SIGNATURE.getKey())
                 .isNotNull(InsuranceApply::getSignApplyNo));
+        String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.APPLY_FILE).getCode();
         if(applyList !=null && applyList.size()>0 ){
             for(InsuranceApply model : applyList){
                 String status = signService.linkFileStatus(model.getSignApplyNo());
@@ -474,11 +516,19 @@
                     //濡傛灉涓嬭浇澶辫触锛屾竻闄ゅ悎鍚岋紝涓嬫绛剧珷閲嶆柊鐢熸垚鏂板悎鍚�
                     return;
                 }
-                uploadSignedFileDo(model,fileUrl);
+                uploadSignedFileDo(model,fileUrl,path+fileUrl);
                 return;
             }
         }
-        List<ApplyChange> chagneList = applyChangeMapper.selectList(new QueryWrapper<ApplyChange>().lambda()
+        List<ApplyChange> chagneList = applyChangeMapper.selectJoinList(ApplyChange.class,
+                new MPJLambdaWrapper<ApplyChange>()
+                .selectAll(ApplyChange.class)
+                .selectAs(Solutions::getName,InsuranceApply::getSolutionsName)
+                .selectAs(Solutions::getEmail,InsuranceApply::getSolutionEmail)
+                .selectAs(Company::getName,InsuranceApply::getCompanyName)
+                .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId)
+                .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
+                .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
                 .eq(ApplyChange::getStatus,Constants.ApplyChangeStatus.UPLOAD.getKey())
                 .isNotNull(ApplyChange::getSignApplyNo));
         if(chagneList !=null && chagneList.size()>0 ){
@@ -493,7 +543,7 @@
                     //濡傛灉涓嬭浇澶辫触锛屾竻闄ゅ悎鍚岋紝涓嬫绛剧珷閲嶆柊鐢熸垚鏂板悎鍚�
                     return;
                 }
-                uploadChangeSignedFileDo(model,fileUrl);
+                uploadChangeSignedFileDo(model,fileUrl,path+fileUrl);
                 return;
             }
         }
@@ -505,7 +555,18 @@
         }
         if(Constants.equalsInteger(data.getSignStatus(), Constants.THREE )){
             //濡傛灉宸蹭繚鍏�,鍙笅杞界绾﹂檮浠�
-            InsuranceApply model = insuranceApplyMapper.selectOne(new QueryWrapper<InsuranceApply>().lambda().eq(InsuranceApply::getSignApplyNo,data.getApplyNo()).last("limit 1" ));
+            String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+                    systemDictDataBiz.queryByCode(Constants.OSS,Constants.APPLY_FILE).getCode();
+            InsuranceApply model = insuranceApplyJoinMapper.selectJoinOne(InsuranceApply.class,
+                    new MPJLambdaWrapper<InsuranceApply>()
+                            .selectAll(InsuranceApply.class)
+                            .selectAs(Solutions::getName,InsuranceApply::getSolutionsName)
+                            .selectAs(Solutions::getEmail,InsuranceApply::getSolutionEmail)
+                            .selectAs(Company::getName,InsuranceApply::getCompanyName)
+                            .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
+                            .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
+                            .eq(InsuranceApply::getSignApplyNo,data.getApplyNo())
+                            .last("limit 1" ));
             if(model != null && Constants.equalsInteger(model.getStatus(),Constants.InsuranceApplyStatus.WAIT_SIGNATURE.getKey())){
                 //瀹屾垚绛剧讲宸插畬鎴愭搷浣�
                 String link = signService.linkFile(data.getApplyNo());
@@ -514,11 +575,19 @@
                     //濡傛灉涓嬭浇澶辫触锛屾竻闄ゅ悎鍚岋紝涓嬫绛剧珷閲嶆柊鐢熸垚鏂板悎鍚�
                     return;
                 }
-                uploadSignedFileDo(model,fileUrl);
+                uploadSignedFileDo(model,fileUrl,path+fileUrl);
                 return;
             }
-
-            ApplyChange applyChange = applyChangeMapper.selectOne(new QueryWrapper<ApplyChange>().lambda().eq(ApplyChange::getSignApplyNo,data.getApplyNo()).last("limit 1" ));
+            ApplyChange applyChange = applyChangeMapper.selectJoinOne(ApplyChange.class,
+                    new MPJLambdaWrapper<ApplyChange>()
+                            .selectAll(ApplyChange.class)
+                            .selectAs(Solutions::getName,InsuranceApply::getSolutionsName)
+                            .selectAs(Solutions::getEmail,InsuranceApply::getSolutionEmail)
+                            .selectAs(Company::getName,InsuranceApply::getCompanyName)
+                            .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId)
+                            .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
+                            .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
+                            .eq(ApplyChange::getSignApplyNo,data.getApplyNo()).last("limit 1" ));
             if(applyChange != null &&Constants.equalsInteger(applyChange.getStatus(),Constants.ApplyChangeStatus.UPLOAD.getKey())){
                 String link = signService.linkFile(data.getApplyNo());
                 String fileUrl = uploadSignFile(link);
@@ -526,7 +595,7 @@
                     //濡傛灉涓嬭浇澶辫触锛屾竻闄ゅ悎鍚岋紝涓嬫绛剧珷閲嶆柊鐢熸垚鏂板悎鍚�
                     return;
                 }
-                uploadChangeSignedFileDo(applyChange,fileUrl);
+                uploadChangeSignedFileDo(applyChange,fileUrl,path+fileUrl);
             }
         }else if(Constants.equalsInteger(data.getSignStatus(), Constants.TWO )){
             //濡傛灉宸叉嫆绛撅紝娓呴櫎鍚堝悓锛屼笅娆$绔犻噸鏂扮敓鎴愭柊鍚堝悓
@@ -628,7 +697,6 @@
         info = info.replace("${param}", update.getCheckInfo());
         ApplyLog log = new ApplyLog(update,applyLogType.getName(),info,update.getId(),applyLogType.getKey(),JSONObject.toJSONString(model), JSONObject.toJSONString(update));
         applyLogMapper.insert(log);
-
         return  1;
 
     }
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
index 99bd7d2..d9e8421 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
@@ -196,7 +196,7 @@
 
         Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_REMARK;
         String info =applyLogType.getInfo();
-        info = info.replace("${param}", update.getCheckInfo());
+        info = info.replace("${param}", param.getCheckInfo());
         SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update));
         settleClaimsLogMapper.insert(log);
         return  1;
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
index 0679e4b..78dc00b 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
@@ -14,6 +14,7 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.doumee.service.business.third.EmailService;
 import com.doumee.service.business.third.EmayService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,6 +39,8 @@
     private SystemDictDataBiz systemDictDataBiz;
     @Autowired
     private EmayService emayService;
+    @Autowired
+    private EmailService emailService;
 
     public static void isCaptcheValide(SmsEmailMapper smsEmailMapper, String phone, String captche) {
         SmsEmail model = smsEmailMapper.selectOne(new QueryWrapper<SmsEmail>().lambda()
@@ -69,11 +72,33 @@
         return smsEmail.getId();
     }
     @Override
+    public Integer sendEmail(SmsEmail smsEmail) {
+        if(StringUtils.isBlank(smsEmail.getEmail())){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        boolean result=   emailService.sendEmail(smsEmail.getEmail(),smsEmail.getTitle(),smsEmail.getContent(),smsEmail.getFileList());
+        smsEmail.setRemark("閭欢鍙戠敓鎴愬姛");
+        if(!result){
+            smsEmail.setRemark("閭欢鍙戠敓澶辫触");
+        }
+        smsEmail.setIsdeleted(Constants.ZERO);
+        smsEmail.setCreateDate(new Date());
+        smsEmail.setStatus(Constants.ONE);
+        smsEmail.setType(Constants.TWO);
+        smsEmailMapper.insert(smsEmail);
+
+        return smsEmail.getId();
+    }
+    @Override
     public Integer sendSms(SmsEmail smsEmail) {
         if(StringUtils.isBlank(smsEmail.getPhone())){
             throw  new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         String code = Constants.getRandom6Num();
+        boolean result=   emayService.sendSingleSms(smsEmail.getPhone(),code);
+        if(!result){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝鐭俊楠岃瘉鐮佸彂閫佸け璐ワ紝璇风◢鍚庨噸璇曪紒");
+        }
         smsEmail.setRemark(code);
         smsEmail.setIsdeleted(Constants.ZERO);
         smsEmail.setCreateDate(new Date());
@@ -84,6 +109,7 @@
         smsEmailMapper.insert(smsEmail);
 
         return smsEmail.getId();
+
     }
 
     @Override
diff --git a/server/service/src/main/java/com/doumee/service/business/third/EmailService.java b/server/service/src/main/java/com/doumee/service/business/third/EmailService.java
new file mode 100644
index 0000000..25ba032
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/service/business/third/EmailService.java
@@ -0,0 +1,49 @@
+package com.doumee.service.business.third;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.MimeMessageHelper;
+import org.springframework.stereotype.Service;
+
+import javax.activation.DataSource;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class EmailService {
+    @Autowired
+    private JavaMailSender javaMailSender;//娉ㄥ叆JavaMailSender
+    @Value("${spring.mail.username}")
+    private String fromEmail;
+    public boolean sendEmail(String toEmail, String title, String content, List<Map<String,Object>> fileList) {
+        try {
+                AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
+                context.refresh();
+                MimeMessage message = javaMailSender.createMimeMessage();
+                MimeMessageHelper helper = new MimeMessageHelper(message, true);
+
+                helper.setTo(toEmail);
+                helper.setFrom(fromEmail);
+                helper.setSubject(title);
+                helper.setText(content);
+                if(fileList!=null){
+                    for (Map<String,Object> f : fileList){
+                        // 璁剧疆闄勪欢
+                        helper.addAttachment((String) f.get("name"),new FileSystemResource((File) f.get("file")));
+                    }
+                }
+            javaMailSender.send(message);
+                    System.out.println("閭欢鍙戦�佹垚鍔燂紒");
+                    return true;
+            } catch (Exception e) {
+            e.printStackTrace();
+                    return false;
+                }
+            }
+    }
diff --git a/server/service/src/main/java/com/doumee/service/business/third/EmayService.java b/server/service/src/main/java/com/doumee/service/business/third/EmayService.java
index 0292bf6..a34bf7b 100644
--- a/server/service/src/main/java/com/doumee/service/business/third/EmayService.java
+++ b/server/service/src/main/java/com/doumee/service/business/third/EmayService.java
@@ -61,30 +61,32 @@
 		return 0;
 	}
 
-	public   boolean sendSingleSms(String mobile,String content) throws SDKParamsException {
+	public   boolean sendSingleSms(String mobile,String content)  {
 		try {
 			client = new SmsSDKClient(ip,port,appKey,appSecret);
-		} catch (SDKParamsException e) {
-			throw new RuntimeException(e);
-		}
-		if(client == null){
-			return false;
-		}
-		String customSmsId = "1";
-		String extendedCode = "01";
 
-		SmsSingleRequest request = new SmsSingleRequest(mobile, content, customSmsId, extendedCode, "");
-		ResultModel<SmsResponse> result = client.sendSingleSms(request);
-		saveInterfaceLog(ip+"/"+port,"銆愮煭淇°�戝彂閫�", JSONObject.toJSONString(result),JSONObject.toJSONString(result));
-		if (result.getCode().equals("SUCCESS")) {
-			System.out.println("璇锋眰鎴愬姛");
-			SmsResponse response = result.getResult();
-			System.out.println("sendSingleSms:" + response.toString());
-			return  true;
-		} else {
-			System.out.println("璇锋眰澶辫触");
-			return false;
+			if(client == null){
+				return false;
+			}
+			String customSmsId = "1";
+			String extendedCode = "01";
+
+			SmsSingleRequest request = new SmsSingleRequest(mobile, content, customSmsId, extendedCode, "");
+			ResultModel<SmsResponse> result = client.sendSingleSms(request);
+			saveInterfaceLog(ip+"/"+port,"銆愮煭淇°�戝彂閫�", JSONObject.toJSONString(result),JSONObject.toJSONString(result));
+			if (result.getCode().equals("SUCCESS")) {
+				System.out.println("璇锋眰鎴愬姛");
+				SmsResponse response = result.getResult();
+				System.out.println("sendSingleSms:" + response.toString());
+				return  true;
+			} else {
+				System.out.println("璇锋眰澶辫触");
+				return false;
+			}
+		} catch (Exception e) {
+
 		}
+		return false;
 	}
 
 
diff --git a/server/service/src/main/resources/application-dev.yml b/server/service/src/main/resources/application-dev.yml
index 997e0f8..c93459c 100644
--- a/server/service/src/main/resources/application-dev.yml
+++ b/server/service/src/main/resources/application-dev.yml
@@ -18,6 +18,18 @@
     password: rtjgfEr@&0c0m
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
+  mail:
+    host: smtp.exmail.qq.com
+    username: jp@doumee.com
+    password: 2Jz9HFW2U7vRnCRu
+    default-encoding: UTF-8
+    properties:
+      mail:
+        smtp:
+          auth: true
+        starttls:
+          enable: true
+          required: true
 
   redis:
     #    database: 0
diff --git a/server/service/src/main/resources/application-pro.yml b/server/service/src/main/resources/application-pro.yml
index 54757db..d051d4e 100644
--- a/server/service/src/main/resources/application-pro.yml
+++ b/server/service/src/main/resources/application-pro.yml
@@ -13,12 +13,22 @@
 spring:
   # 鏁版嵁婧愰厤缃�
   datasource:
-    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/yunyibao?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
-    username: test
-    password: doumee@168
+    url: jdbc:mysql://sh-cdb-aiskr3vy.sql.tencentcdb.com:62443/yunyibao?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
+    username: doumee
+    password: rtjgfEr@&0c0m
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
-
+  mail:
+    host: smtp.exmail.qq.com
+    username: jp@doumee.com
+    password: 2Jz9HFW2U7vRnCRu
+    properties:
+      mail:
+        smtp:
+          auth: true
+        starttls:
+          enable: true
+          required: true
   redis:
     #    database: 0
     host: 127.0.0.1
@@ -39,7 +49,6 @@
 
 debug_model: false
 
-captcha_check: true
 
 # Swagger閰嶇疆
 swagger:
@@ -49,3 +58,6 @@
   enabled: true
   # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧�
   redirect-uri: /
+
+project:
+  imgAuthen: false
\ No newline at end of file
diff --git a/server/service/src/main/resources/application-test.yml b/server/service/src/main/resources/application-test.yml
index 723dedd..828e620 100644
--- a/server/service/src/main/resources/application-test.yml
+++ b/server/service/src/main/resources/application-test.yml
@@ -4,6 +4,8 @@
     enabled: true
     mime-types: application/json
 
+  tomcat:
+    max-swallow-size: -1
   servlet:
     session:
       timeout: PT3H  #琛ㄧず12灏忔椂
@@ -11,22 +13,35 @@
 spring:
   # 鏁版嵁婧愰厤缃�
   datasource:
-    url: jdbc:mysql://57b57595ddc66.sh.cdb.myqcloud.com:4464/yunyibao?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
-    username: test
-    password: doumee@168
+    url: jdbc:mysql://sh-cdb-aiskr3vy.sql.tencentcdb.com:62443/yunyibao?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
+    username: doumee
+    password: rtjgfEr@&0c0m
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
+  mail:
+    host: smtp.exmail.qq.com
+    username: jp@doumee.com
+    password: Jiangping0427
+  redis:
+    #    database: 0
+    host: 127.0.0.1
+    port: 6379
+    password:
+    timeout: 5000      # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+
+  jackson:
+    time-zone: GMT+8
+    date-format: yyyy-MM-dd HH:mm:ss
 
 knife4j:
   enable: true
   basic:
     enable: true
     username: admin
-    password: test@168.com
+    password: 111111
 
-debug_model: true
+debug_model: false
 
-captcha_check: false
 
 # Swagger閰嶇疆
 swagger:
@@ -38,4 +53,4 @@
   redirect-uri: /
 
 project:
-  imgAuthenti: false
\ No newline at end of file
+  imgAuthen: false
\ No newline at end of file

--
Gitblit v1.9.3