Просмотр исходного кода

Merge branch 'dev' of http://39.101.143.165:8090/dong_k/tenant-Platform into dev

@dongkboy 3 месяцев назад
Родитель
Сommit
b84fad08ae

+ 4 - 0
src/api/modules/finance.ts

@@ -27,6 +27,8 @@ const financeApi = (axiosInstance: ApiInstance) => ({
     //金额总计
     queryTotalWithdrawalAmount: (data: any) => axiosInstance.post('/amountAuditing/queryTotalWithdrawalAmount', data),
     // 结算
+    invoiceAndSettlement: (data: any) => axiosInstance.post('/receivable/invoiceAndSettlement', data),
+    // 结算
     settlement: (data: any) => axiosInstance.post('/receivable/settlement', data),
     // 非车险应收
     exportSuperviseJyExcel: (data: any) => axiosInstance.post('/receivable/exportSuperviseJyExcel', data, {responseType: 'blob'}),
@@ -38,6 +40,8 @@ const financeApi = (axiosInstance: ApiInstance) => ({
     getSelectedReceivableList: (data: any) => axiosInstance.post('/receivable/getSelectedReceivableList', data),
     // 开票检测
     invoicingCheck: (data: any) => axiosInstance.post('/receivable/invoicingCheck', data),
+    // 开票前计算
+    calBeforeInvoice: (data: any) => axiosInstance.post('/receivable/calBeforeInvoice', data),
     // 手续费导入
     importSuperviseExcel: (data: any) => axiosInstance.post('/receivable/importSuperviseExcel', data),
 

+ 55 - 8
src/views/finance/audit.vue

@@ -46,6 +46,15 @@
                 </el-select>
               </el-form-item>
             </el-col>
+            <el-col :span="8">
+              <el-form-item label="险种">
+                <el-select v-model="firstForm.productName" placeholder="请选择" clearable>
+                  <el-option label="全部" value=" "></el-option>
+                  <el-option v-for="item in riskType" :key="item.value" :value="item.label"
+                    :label="item.label"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
             <el-col :span="8">
               <el-form-item label="出单机构">
                 <el-cascader clearable style="width: 100%" v-model="firstForm.deptId" :options="option"
@@ -69,7 +78,7 @@
                   start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
               </el-form-item>
             </el-col>
-            <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
+            <el-col :span="16" style="display: flex; align-items: center; justify-content: flex-end">
               <el-button plain @click="handleExport('0')">数据导出</el-button>
               <el-button type="primary" @click="handleSearch">搜索</el-button>
               <el-button plain @click="handleReset">重置</el-button>
@@ -82,7 +91,7 @@
             </el-col>
           </el-row>
         </el-form>
-        <el-table :data="firstData" height="calc(100% - 244px )" style="width: 100%; margin-top: 20px;">
+        <el-table :data="firstData" height="calc(100% - 262px )" style="width: 100%; margin-top: 20px;">
           <el-table-column prop="orderNo" label="订单号" width="120"></el-table-column>
           <el-table-column prop="companyName" label="保险公司" width="120"></el-table-column>
           <el-table-column prop="licenseNo" label="车牌号" width="120"></el-table-column>
@@ -171,6 +180,15 @@
                 </el-select>
               </el-form-item>
             </el-col>
+            <el-col :span="8">
+              <el-form-item label="险种">
+                <el-select v-model="firstForm.productName" placeholder="请选择" clearable>
+                  <el-option label="全部" value=" "></el-option>
+                  <el-option v-for="item in riskType" :key="item.value" :value="item.label"
+                    :label="item.label"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
             <el-col :span="8">
               <el-form-item label="出单机构">
                 <el-cascader clearable style="width: 100%" v-model="firstForm.deptId" :options="option"
@@ -194,7 +212,7 @@
                   start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
               </el-form-item>
             </el-col>
-            <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
+            <el-col :span="16" style="display: flex;align-items: start; justify-content: flex-end">
               <el-button plain @click="handleExport('1')">数据导出</el-button>
               <el-button type="primary" @click="handleSearch">搜索</el-button>
               <el-button plain @click="handleReset">重置</el-button>
@@ -207,7 +225,7 @@
             </el-col>
           </el-row>
         </el-form>
-        <el-table :data="secondData" height="calc(100% - 244px )" style="width: 100%; margin-top: 20px;">
+        <el-table :data="secondData" height="calc(100% - 262px )" style="width: 100%; margin-top: 20px;">
           <el-table-column prop="orderNo" label="订单号" width="120"></el-table-column>
           <el-table-column prop="companyName" label="保险公司" width="120"></el-table-column>
           <el-table-column prop="licenseNo" label="车牌号" width="120"></el-table-column>
@@ -297,6 +315,15 @@
                 </el-select>
               </el-form-item>
             </el-col>
+            <el-col :span="8">
+              <el-form-item label="险种">
+                <el-select v-model="firstForm.productName" placeholder="请选择" clearable>
+                  <el-option label="全部" value=" "></el-option>
+                  <el-option v-for="item in riskType" :key="item.value" :value="item.label"
+                    :label="item.label"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
             <el-col :span="8">
               <el-form-item label="出单机构">
                 <el-cascader clearable style="width: 100%" v-model="firstForm.deptId" :options="option"
@@ -320,7 +347,7 @@
                   start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
               </el-form-item>
             </el-col>
-            <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
+            <el-col :span="16" style="display: flex;align-items: start; justify-content: flex-end">
               <el-button plain @click="handleExport('2')">数据导出</el-button>
               <el-button type="primary" @click="handleSearch">搜索</el-button>
               <el-button plain @click="handleReset">重置</el-button>
@@ -333,7 +360,7 @@
             </el-col>
           </el-row>
         </el-form>
-        <el-table :data="thirdData" height="calc(100% - 244px )" style="width: 100%; margin-top: 20px;">
+        <el-table :data="thirdData" height="calc(100% - 262px )" style="width: 100%; margin-top: 20px;">
           <el-table-column prop="orderNo" label="订单号" width="120"></el-table-column>
           <el-table-column prop="companyName" label="保险公司" width="120"></el-table-column>
           <el-table-column prop="licenseNo" label="车牌号" width="120"></el-table-column>
@@ -427,6 +454,15 @@
                 </el-select>
               </el-form-item>
             </el-col>
+            <el-col :span="8">
+              <el-form-item label="险种">
+                <el-select v-model="firstForm.productName" placeholder="请选择" clearable>
+                  <el-option label="全部" value=" "></el-option>
+                  <el-option v-for="item in riskType" :key="item.value" :value="item.label"
+                    :label="item.label"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
             <el-col :span="8">
               <el-form-item label="出单机构">
                 <el-cascader clearable style="width: 100%" v-model="firstForm.deptId" :options="option"
@@ -450,7 +486,7 @@
                   start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
               </el-form-item>
             </el-col>
-            <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
+            <el-col :span="16" style="display: flex;align-items: start; justify-content: flex-end">
               <el-button plain @click="handleExport('3')">数据导出</el-button>
               <el-button type="primary" @click="handleSearch">搜索</el-button>
               <el-button plain @click="handleReset">重置</el-button>
@@ -463,7 +499,7 @@
             </el-col>
           </el-row>
         </el-form>
-        <el-table :data="forthData" height="calc(100% - 244px )" style="width: 100%; margin-top: 20px;">
+        <el-table :data="forthData" height="calc(100% - 262px )" style="width: 100%; margin-top: 20px;">
           <el-table-column prop="orderNo" label="订单号" width="120"></el-table-column>
           <el-table-column prop="companyName" label="保险公司" width="120"></el-table-column>
           <el-table-column prop="licenseNo" label="车牌号" width="120"></el-table-column>
@@ -759,7 +795,18 @@ const handleExport = (type: any) => {
     }
   })
 }
+
+const riskType = ref([])
+const dictRisk = () => {
+  api.additionalApi.dictDetails('report_risk_code').then((res: any) => {
+    if (res.code == 200) {
+      riskType.value = res.data.filter(v => v.value !== '0')
+    }
+  })
+}
+
 onMounted(() => {
+  dictRisk();
   initList('0');
   initList('1');
   initList('2');

+ 43 - 6
src/views/finance/index.vue

@@ -46,6 +46,15 @@
                 </el-select>
               </el-form-item>
             </el-col>
+            <el-col :span="8">
+              <el-form-item label="险种">
+                <el-select v-model="firstForm.productName" placeholder="请选择" clearable>
+                  <el-option label="全部" value=" "></el-option>
+                  <el-option v-for="item in riskType" :key="item.value" :value="item.label"
+                    :label="item.label"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
             <el-col :span="8">
               <el-form-item label="出单机构">
                 <el-cascader clearable style="width: 100%" v-model="firstForm.deptId" :options="option"
@@ -85,7 +94,7 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
+            <el-col :span="16" style="display: flex;align-items: start; justify-content: flex-end">
               <el-button plain @click="handleExport('0')">数据导出</el-button>
               <el-button type="primary" @click="handleSearch">搜索</el-button>
               <el-button plain @click="handleReset">重置</el-button>
@@ -98,7 +107,7 @@
             </el-col>
           </el-row>
         </el-form>
-        <el-table :data="firstData" :height="isTrue ? 'calc(100% - 294px)' : 'calc(100% - 194px)'"
+        <el-table :data="firstData" :height="isTrue ? 'calc(100% - 312px)' : 'calc(100% - 212px)'"
           style="width: 100%; margin-top: 20px;">
           <el-table-column prop="orderNo" label="订单号" width="120"></el-table-column>
           <el-table-column prop="companyALlName" label="保险公司" width="120"></el-table-column>
@@ -182,6 +191,15 @@
                 </el-select>
               </el-form-item>
             </el-col>
+            <el-col :span="8">
+              <el-form-item label="险种">
+                <el-select v-model="firstForm.productName" placeholder="请选择" clearable>
+                  <el-option label="全部" value=" "></el-option>
+                  <el-option v-for="item in riskType" :key="item.value" :value="item.label"
+                    :label="item.label"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
             <el-col :span="8">
               <el-form-item label="出单机构">
                 <el-cascader clearable style="width: 100%" v-model="firstForm.deptId" :options="option"
@@ -221,7 +239,7 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
+            <el-col :span="16" style="display: flex;align-items: start; justify-content: flex-end">
               <el-button plain @click="handleExport('1')">数据导出</el-button>
               <el-button type="primary" @click="handleSearch">搜索</el-button>
               <el-button plain @click="handleReset">重置</el-button>
@@ -234,7 +252,7 @@
             </el-col>
           </el-row>
         </el-form>
-        <el-table :data="secondData" :height="isTrue ? 'calc(100% - 294px)' : 'calc(100% - 194px)'"
+        <el-table :data="secondData" :height="isTrue ? 'calc(100% - 312px)' : 'calc(100% - 212px)'"
           style="width: 100%; margin-top: 20px;">
           <el-table-column prop="orderNo" label="订单号" width="120"></el-table-column>
           <el-table-column prop="companyALlName" label="保险公司" width="120"></el-table-column>
@@ -319,6 +337,15 @@
                 </el-select>
               </el-form-item>
             </el-col>
+            <el-col :span="8">
+              <el-form-item label="险种">
+                <el-select v-model="firstForm.productName" placeholder="请选择" clearable>
+                  <el-option label="全部" value=" "></el-option>
+                  <el-option v-for="item in riskType" :key="item.value" :value="item.label"
+                    :label="item.label"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
             <el-col :span="8">
               <el-form-item label="出单机构">
                 <el-cascader clearable style="width: 100%" v-model="firstForm.deptId" :options="option"
@@ -358,7 +385,7 @@
                 </el-select>
               </el-form-item>
             </el-col>
-            <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
+            <el-col :span="16" style="display: flex;align-items: start; justify-content: flex-end">
               <el-button plain @click="handleExport('2')">数据导出</el-button>
               <el-button type="primary" @click="handleSearch">搜索</el-button>
               <el-button plain @click="handleReset">重置</el-button>
@@ -371,7 +398,7 @@
             </el-col>
           </el-row>
         </el-form>
-        <el-table :data="thirdData" :height="isTrue ? 'calc(100% - 294px)' : 'calc(100% - 194px)'"
+        <el-table :data="thirdData" :height="isTrue ? 'calc(100% - 312px)' : 'calc(100% - 212px)'"
           style="width: 100%; margin-top: 20px;">
           <el-table-column prop="orderNo" label="订单号" width="120"></el-table-column>
           <el-table-column prop="companyALlName" label="保险公司" width="120"></el-table-column>
@@ -654,8 +681,18 @@ const handleExport = (type: any) => {
   })
 }
 
+const riskType = ref([])
+const dictRisk = () => {
+  api.additionalApi.dictDetails('report_risk_code').then((res: any) => {
+    if (res.code == 200) {
+      riskType.value = res.data.filter(v=>v.value!=='0')
+    }
+  })
+}
+
 onMounted(() => {
   institutionList();
+  dictRisk();
   initCompany();
   initData('0')
   initData('1')

+ 33 - 19
src/views/quoteConfig/dispatch/index.vue

@@ -176,24 +176,25 @@
                   点击选择该情况下要执行的动作
                 </div>
                 <div class="condition" v-for="item in afterActions" :key="item.id">
-                  <div class="action" v-if="item.actionCode == 'send_notify_msg'">
-                    <div class="name">
-                      {{ item.actionName }}
-                    </div>
-                    <div>标题:{{ item.actionJson.title }}</div>
-                    <div>内容:{{ item.actionJson.content }}</div>
-                  </div>
-                  <div class="action" v-else-if="item.actionCode == 'supplementary_order'">
-                    <div class="name">
-                      {{ item.actionName }}
-                    </div>
-                    将该车辆的报价单,在后台自动生成为:暂存的补录订单
-                  </div>
-                  <div class="action" v-else>
-                    <div class="name">
+                  <div class="action">
+                    <div class="name flex justify-between items-center">
                       {{ item.actionName }}
+                      <el-popconfirm class="box-item" title="是否确定删除该动作?" placement="bottom" width="196px"
+                        confirm-button-text="确定删除" @confirm.stop.prevent="deleteActive(item.id)">
+                        <template #reference>
+                          <img src="@/assets/images/delete.png" class="w-20px h-20px" @click.stop /></template>
+                      </el-popconfirm>
                     </div>
-                    {{ item.actionJson.message || "未设置" }}
+                    <template v-if="item.actionCode == 'send_notify_msg'">
+                      <div>标题:{{ item.actionJson.title }}</div>
+                      <div>内容:{{ item.actionJson.content }}</div>
+                    </template>
+                    <template v-else-if="item.actionCode == 'supplementary_order'">
+                      将该车辆的报价单,在后台自动生成为:暂存的补录订单
+                    </template>
+                    <template v-else>
+                      {{ item.actionJson.message || "未设置" }}
+                    </template>
                   </div>
                 </div>
               </div>
@@ -304,9 +305,22 @@ const getRuleList = (companyId: string) => {
 // 删除规则
 const deleteRule = (id: string) => {
   api.dispatchApi.deleteAgreementDispatch(id).then((res) => {
-    ElMessage.success("删除成功");
-    // 重新加载当前租户的规则列表(自动重新分组)
-    getRuleList(currentId.value);
+    if (res.code === 200) {
+      ElMessage.success("删除成功");
+      // 重新加载当前租户的规则列表(自动重新分组)
+      getRuleList(currentId.value);
+    }
+  });
+};
+
+// 删除动作
+const deleteActive = (id: string) => {
+  api.dispatchApi.deleteAfterActionById(id).then((res) => {
+    if (res.code === 200) {
+      ElMessage.success("删除成功");
+      // 重新加载当前租户的规则列表(自动重新分组)
+      getRuleList(currentId.value);
+    }
   });
 };
 

+ 2 - 1
src/views/quoteConfig/project/modules/projectAdd.vue

@@ -780,6 +780,7 @@ const initEdit = async () => {
           item.drivingList = item.drivingIntentionList
           item.tableData = item.schemeInsuranceList.map(sub => {
             let obj = insuranceTypeList.value.find(a => a.id == sub.insuranceId)
+            console.log("🚀 ~ initEdit ~ obj:", obj)
             return {
               ...sub,
               optionId: res.data.schemeType===1?`${sub.optionId[0]}`:sub.optionId,
@@ -947,4 +948,4 @@ const save = async (ProjectAddRef: FormInstance | undefined) => {
     justify-content: center;
   }
 }
-</style>
+</style>

+ 0 - 1
src/views/receivable/handingFee/invoiceRecord.vue

@@ -56,7 +56,6 @@
               format="YYYY-MM-DD HH:mm:ss" />
           </el-form-item>
         </el-col>
-        <el-col :span="8"></el-col>
         <el-col :span="8" style="display: flex; align-items: start; justify-content: flex-end">
           <el-button type="primary" @click="search">查询</el-button>
           <el-button plain type="primary" @click="reset">重置</el-button>

+ 96 - 95
src/views/receivable/handingFee/ticket.vue

@@ -16,14 +16,16 @@
             <el-option value="orderType" label="订单类型"></el-option>
             <el-option value="signYear" label="签单年份"></el-option>
           </el-select>
-          <el-select v-model="item.type" v-if="item.name != 'signDate'" style="margin-right: 20px; width: 150px" @change="val=>signDateSelectChange(index, val)">
+          <el-select v-model="item.type" v-if="item.name != 'signDate'" style="margin-right: 20px; width: 150px"
+            @change="val => signDateSelectChange(index, val)">
             <el-option value="等于" label="等于"></el-option>
             <el-option value="不等于" label="不等于"></el-option>
             <el-option value="包含" label="包含"></el-option>
             <el-option value="不包含" label="不包含"></el-option>
             <el-option value="为空" label="为空"></el-option>
           </el-select>
-          <el-select v-model="item.type" v-else style="margin-right: 20px; width: 150px" @change="val=>signDateSelectChange(index, val)">
+          <el-select v-model="item.type" v-else style="margin-right: 20px; width: 150px"
+            @change="val => signDateSelectChange(index, val)">
             <el-option value="大于等于" label="大于等于"></el-option>
             <el-option value="小于等于" label="小于等于"></el-option>
             <el-option value="固定范围" label="固定范围"></el-option>
@@ -36,10 +38,11 @@
           </el-select>
           <el-date-picker style="width: 350px" v-model="datesearch" v-if="item.name == 'signDate'"
             :type="item.type == '大于等于' || item.type == '小于等于' ? 'date' : 'daterange'" placeholder="请选择"
-            :disabled="item.type == '为空'"  @change="handlePtlAgreementChange(index, $event)"   value-format="YYYY-MM-DD" />
-          <el-select style="width: 350px" v-model="multipleSearch" v-if="item.name == 'ptlAgreement'" multiple filterable
-            :disabled="item.type == '为空'" @change="handlePtlAgreementChange(index, $event)">
-            <el-option v-for="item in insurerContract" :key="item.id" :value="item.id" :label="item.agreementName" ></el-option>
+            :disabled="item.type == '为空'" @change="handlePtlAgreementChange(index, $event)" value-format="YYYY-MM-DD" />
+          <el-select style="width: 350px" v-model="multipleSearch" v-if="item.name == 'ptlAgreement'" multiple
+            filterable :disabled="item.type == '为空'" @change="handlePtlAgreementChange(index, $event)">
+            <el-option v-for="item in insurerContract" :key="item.id" :value="item.id"
+              :label="item.agreementName"></el-option>
           </el-select>
           <el-select style="width: 350px" v-model="orderTypesearch" v-if="item.name == 'orderType'" multiple
             :disabled="item.type == '为空'" @change="handlePtlAgreementChange(index, $event)">
@@ -47,9 +50,9 @@
             <el-option value="2" label="代客录单"></el-option>
             <el-option value="3" label="补录订单"></el-option>
           </el-select>
-          <el-date-picker v-if="item.name == 'signYear'" style="width: 350px" format="YYYY"
-          value-format="YYYY" v-model="yearrangesearch" type="yearrange"
-            range-separator="-" :disabled="item.type == '为空'" @change="handlePtlAgreementChange(index, $event)" />
+          <el-date-picker v-if="item.name == 'signYear'" style="width: 350px" format="YYYY" value-format="YYYY"
+            v-model="yearrangesearch" type="yearrange" range-separator="-" :disabled="item.type == '为空'"
+            @change="handlePtlAgreementChange(index, $event)" />
           <!-- <el-icon style="margin-left: 20px; cursor:pointer;"><CircleClose /></el-icon> -->
         </div>
         <el-button type="primary" @click="handleSearch">搜索</el-button>
@@ -87,8 +90,8 @@
     </el-table>
     <div class="footer">
       <el-button plain @click="handleBack">取消</el-button>
-      <el-button plain type="primary" @click="handleTicket">开票并结算</el-button>
-      <el-button type="primary" @click="handleInvoice">开票</el-button>
+      <el-button plain type="primary" @click="handleTicket(true)">开票并结算</el-button>
+      <el-button type="primary" @click="handleTicket(false)">开票</el-button>
     </div>
     <el-dialog v-model="addShow" width="800" title="添加应收">
       <div class="add-content">
@@ -147,13 +150,10 @@
         <el-button type="primary" @click="handleAddSubmit">确定</el-button>
       </template>
     </el-dialog>
-    <el-dialog v-model="countShow" width="600" title="开票并结算">
+    <el-dialog v-model="countShow" width="600" :title="isSettlement ? '开票并结算' : '开票'">
       <el-form ref="CountForm" :model="countForm" :rules="countRules" label-width="120">
-        <el-form-item prop="invoiceParty" label="开票方">
-          <el-input v-model="countForm.invoiceParty" placeholder="请输入"></el-input>
-        </el-form-item>
-        <el-form-item prop="receivableSupervisePremium" label="应收手续费">
-          <el-input v-model="countForm.receivableSupervisePremium" placeholder="请输入"></el-input>
+        <el-form-item prop="invoiceNo" label="开票号">
+          <el-input v-model="countForm.invoiceNo" placeholder="请输入"></el-input>
         </el-form-item>
         <el-form-item prop="overinflatedAmount" label="虚增金额">
           <el-input v-model="countForm.overinflatedAmount" placeholder="请输入"></el-input>
@@ -164,38 +164,35 @@
         <el-form-item prop="receivableSupervisePremium" label="应收金额">
           <el-input v-model="countForm.receivableSupervisePremium" placeholder="请输入"></el-input>
         </el-form-item>
-        <el-form-item prop="actualReceivedAmount" label="实收金额">
+        <el-form-item prop="invoiceTime" label="开票日期">
+          <el-date-picker v-model="countForm.invoiceTime" style="width: 100%;" type="date"
+            value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD" />
+        </el-form-item>
+        <el-form-item v-if="isSettlement" prop="actualReceivedAmount" label="实收金额">
           <el-input v-model="countForm.actualReceivedAmount" placeholder="请输入"></el-input>
         </el-form-item>
-        <el-form-item prop="receivePaymentDate" label="收款日期">
-          <el-date-picker v-model="countForm.receivePaymentDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
-            format="YYYY-MM-DD HH:mm:ss" />
+        <el-form-item v-if="isSettlement" prop="actualReceivedAmount" label="回款差额">
+          <el-input v-model="countForm.paymentDifference" placeholder="请输入"></el-input>
+        </el-form-item>
+        <el-form-item v-if="isSettlement" prop="actualReceivedAmount" label="差额原因">
+          <el-input v-model="countForm.paymentReason" placeholder="请输入"></el-input>
+        </el-form-item>
+        <el-form-item v-if="isSettlement" prop="receivePaymentDate" label="收款日期">
+          <el-date-picker v-model="countForm.receivePaymentDate" style="width: 100%;" type="date"
+            value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD" />
         </el-form-item>
-        <el-form-item prop="attachmentIds" label="收款凭证" class="upload-btn">
-          <el-upload style="margin: 0 10px 10px 0" :auto-upload="false" multiple v-if="!countForm.h"
-            :show-file-list="false" accept=".png, .jpg, .jpeg" @change="uploadImage" drag>
-            <el-button size="large" icon="Plus" />
+        <el-form-item v-if="isSettlement" prop="attachmentIds" label="收款凭证" class="upload-btn">
+          <el-upload action="https://tennat.baoxianzhanggui.com/api/file/upload"
+            v-model:file-list="countForm.attachmentIds" multiple list-type="picture-card">
+            <el-icon>
+              <Plus />
+            </el-icon>
           </el-upload>
-          <div class="imageDiv" v-for="(item, index) in imageUrl" :key="item">
-            <img :src="item" />
-            <div class="model">
-              <span class="icon-view" @click="handelViewImage(item, index)">
-                <el-icon>
-                  <View />
-                </el-icon>
-              </span>
-              <span class="icon-del" @click="handelDelImage(item, index)">
-                <el-icon>
-                  <Delete />
-                </el-icon>
-              </span>
-            </div>
-          </div>
         </el-form-item>
       </el-form>
       <template #footer>
-        <el-button class="border-[#0083FF] color-[#0083FF]" plain @click="handelCancel">取消</el-button>
-        <el-button type="primary" @click="handelComfirm(CountForm)">确定</el-button>
+        <el-button class="border-[#0083FF] color-[#0083FF]" plain @click="countShow = false">取消</el-button>
+        <el-button type="primary" @click="handelComfirm()">确定</el-button>
       </template>
     </el-dialog>
   </div>
@@ -217,7 +214,7 @@ const orderTypesearch = ref('')
 const yearrangesearch = ref('')
 const datesearch = ref('')
 const countShow = ref(false)
-const  countForm = ref({})
+const countForm = ref({})
 //获取保险公司协议
 const getByCompanyId = () => {
   api.dispatchApi.getByCompanyIdt(route.query.id).then((res: any) => {
@@ -307,21 +304,21 @@ const handlePtlAgreementChange = (index: any, e: any) => {
   console.log(e)
   if (Array.isArray(e)) {
     searchList.value[index].search = e.join(',') || ''
-  }else{
-    searchList.value[index].search = e|| ''
+  } else {
+    searchList.value[index].search = e || ''
   }
 }
 
 // 签单时间选择器改变时触发
-const signDateSelectChange = (index:any,e:any) => {
+const signDateSelectChange = (index: any, e: any) => {
   switch (e) {
     case '为空':
       searchList.value[index].search = ''
       break;
     case '大于等于':
     case '小于等于':
-    searchList.value[index].search = ''
-    datesearch.value =  ''
+      searchList.value[index].search = ''
+      datesearch.value = ''
       break;
   }
 }
@@ -374,63 +371,67 @@ const handleToAdd = (row) => {
 const handleBack = () => {
   router.back()
 }
-const handleTicket = () => {
 
-  api.financeApi.invoicingCheck({
+const countRules = {
+  receivableSupervisePremium: [
+    { required: true, message: '请输入应收金额', trigger: 'blur' }
+  ]
+}
+const isSettlement = ref(false)
+const handleTicket = (bool) => {
+  isSettlement.value = bool
+  const params = {
     incomeIds: selectedList.value.map(v => v.id),
+    orderNos: selectedList.value.map(v => v.orderNo),
     companyId: route.query.id,
     invoiceType: route.query.invoiceType
-  }).then((res: any) => {
+  }
+  api.financeApi.invoicingCheck(params).then(async (res: any) => {
     if (res.code == 200) {
-      countShow.value = true
-      api.financeApi.commissionInvoicing({
-        incomeIds: selectedList.value.map(v => v.id),
-        orderNos: selectedList.value.map(v => v.orderNo),
-        companyId: route.query.id,
-        invoiceType: route.query.invoiceType
-      }).then((sub: any) => {
-        if (sub.code == 200) {
-          ElMessage({
-            message: sub.msg,
-            type: 'success'
-          })
-          api.financeApi.settlement({
-            invoicingId: sub.data.invoiceId,
-            actualReceivedAmount: sub.data.sumPrice
-          }).then((msg: any) => {
-            if (msg.code == 200) {
-              ElMessage({
-                message: msg.msg,
-                type: 'success'
-              })
-            }
-          })
-        }
-      })
-    }else{
-
+      calBeforeInvoice(params)
     }
   })
 }
-const handleInvoice = () => {
-  api.financeApi.invoicingCheck({
+
+const calBeforeInvoice = async (params: any) => {
+  const res = await api.financeApi.calBeforeInvoice(params)
+  if (res.code == 200) {
+    openCountForm()
+    countForm.value.invoiceTime = res.data.invoiceTime
+    countForm.value.receivableSupervisePremium = res.data.receivableSupervisePremium
+  }
+}
+
+const openCountForm = () => {
+  countForm.value = {}
+  countShow.value = true
+}
+const handelComfirm = () => {
+  let apiFn = api.financeApi.commissionInvoicing
+  if (isSettlement.value) apiFn = api.financeApi.invoiceAndSettlement
+  const attachmentIds = countForm.value.attachmentIds?.map(v => v.response.data.id)
+  const params = {
+    invoiceVO: {
+      ...countForm.value,
+      attachmentIds,
+      incomeIds: selectedList.value.map(v => v.id),
+      orderNos: selectedList.value.map(v => v.orderNo),
+      companyId: route.query.id,
+      invoiceType: route.query.invoiceType
+    },
+    ...countForm.value,
+    attachmentIds,
     incomeIds: selectedList.value.map(v => v.id),
+    orderNos: selectedList.value.map(v => v.orderNo),
     companyId: route.query.id,
     invoiceType: route.query.invoiceType
-  }).then((res: any) => {
-    if (res.code == 200) {
-      api.financeApi.commissionInvoicing({
-        incomeIds: selectedList.value.map(v => v.id),
-        orderNos: selectedList.value.map(v => v.orderNo),
-        companyId: route.query.id,
-        invoiceType: route.query.invoiceType
-      }).then((sub: any) => {
-        if (sub.code == 200) {
-          ElMessage({
-            message: sub.msg,
-            type: 'success'
-          })
-        }
+  }
+  apiFn(params).then((sub: any) => {
+    if (sub.code == 200) {
+      countShow.value = false
+      ElMessage({
+        message: sub.msg,
+        type: 'success'
       })
     }
   })
@@ -438,7 +439,7 @@ const handleInvoice = () => {
 
 const initData = () => {
   // router
-    api.financeApi.getSelectedReceivableList({ orderNos: selectedList.value.map(v => v.orderNo),companyId: route.query.id}).then((res: any) => {
+  api.financeApi.getSelectedReceivableList({ orderNos: selectedList.value.map(v => v.orderNo), companyId: route.query.id }).then((res: any) => {
     if (res.code == 200) {
       tableData.value = res.data
     }