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

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

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

+ 12 - 6
src/views/platform/index.vue

@@ -201,8 +201,10 @@
           <el-table-column prop="syStartDate" label="商业险起保日期" width="150"></el-table-column>
           <el-table-column prop="createTime" label="创建时间" width="150"></el-table-column>
           <el-table-column prop="dockingPerson" label="对接人" width="100"></el-table-column>
-          <el-table-column label="操作" width="120" fixed="right">
+          <el-table-column label="操作" width="180" fixed="right">
             <template #default="scope">
+              <el-button link type="primary"
+                @click="ticketRef.openSettlement([scope.row], scope.row.companyId)">结算</el-button>
               <el-button link type="primary" @click="toEdit(scope.row)">编辑</el-button>
               <el-button link type="primary" @click="toDelete([scope.row.id])">删除</el-button>
             </template>
@@ -326,7 +328,7 @@
             <el-button class="radius-2px width-100" type="primary" @click="addShow = true">添加应收</el-button>
           </div>
           <div class="col-108 m-r-8">
-            <el-button class="radius-2px width-100" type="primary">批量结算</el-button>
+            <el-button class="radius-2px width-100" type="primary" @click="batchSettle">批量结算</el-button>
           </div>
           <div class="col-108 m-r-8">
             <el-button class="radius-2px width-100" type="primary" @click="dropdownCommand('删除')">删除</el-button>
@@ -362,8 +364,10 @@
           <el-table-column prop="syStartDate" label="商业险起保日期" width="150"></el-table-column>
           <el-table-column prop="createTime" label="创建时间" width="150"></el-table-column>
           <el-table-column prop="dockingPerson" label="对接人" width="100"></el-table-column>
-          <el-table-column label="操作" width="120" fixed="right">
+          <el-table-column label="操作" width="180" fixed="right">
             <template #default="scope">
+              <el-button link type="primary"
+                @click="ticketRef.openSettlement([scope.row], scope.row.companyId)">结算</el-button>
               <el-button link type="primary" @click="toEdit(scope.row)">编辑</el-button>
               <el-button link type="primary" @click="toDelete([scope.row.id])">删除</el-button>
               <el-dropdown class="width-100" trigger="click" placement="bottom" @command="dropdownCommand">
@@ -544,16 +548,18 @@
       </template>
     </el-dialog>
   </PageMain>
+  <ticket ref="ticketRef" />
 </template>
 
 <script setup lang="ts">
 import { ElMessage, ElMessageBox } from "element-plus";
 import { useRouter } from 'vue-router'
-
+import ticket from "./ticket.vue";
 import api from '@/api'
 
 let myRouter = useRouter()
 
+let ticketRef = ref(null)
 let activeName = ref('1')
 let subActiveName = ref('first')
 
@@ -1023,7 +1029,7 @@ const batchSettle = () => {
     })
     return
   }
-  if(selectedList.value.some((item:any) => item.settlementStatusName == '已结算')) {
+  if (selectedList.value.some((item: any) => item.settlementStatusName == '已结算')) {
     ElMessage({
       message: '存在已结算数据,不能结算!',
       type: 'warning'
@@ -1031,7 +1037,7 @@ const batchSettle = () => {
     return
   }
   api.financeApi.getReceivableCompany({
-    incomeIds: [...selectedList.value]
+    incomeIds: selectedList.value.map((item: any) => item.id)
   }).then((res: any) => {
     if (res.code == 200) {
       options.value = res.data

+ 84 - 57
src/views/platform/ticket.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="ticket">
+  <div class="ticket" v-if="showTicket">
     <div class="search-list">
       <div class="search-left">
         <el-select v-model="logicJudge">
@@ -149,54 +149,56 @@
         <el-button type="primary" @click="handleAddSubmit">确定</el-button>
       </template>
     </el-dialog>
-    <el-dialog v-model="settlementDialog" width="600" title="结算">
-      <el-form ref="CountFormRef" :model="countForm" :rules="settlementRules" label-width="120">
-        <el-form-item  label="应收金额">
-          <el-input v-model="receivablePremium" placeholder="请输入" disabled></el-input>
-        </el-form-item>
-        <el-form-item prop="actualReceivedAmount" label="实收金额">
-          <el-input v-model="countForm.actualReceivedAmount" placeholder="请输入"></el-input>
-        </el-form-item>
-        <el-form-item prop="paymentDifference" label="回款金额">
-          <el-input v-model="countForm.paymentDifference" placeholder="请输入" disabled></el-input>
-        </el-form-item>
-        <el-form-item prop="paymentReason" label="差额原因">
-          <el-input v-model="countForm.paymentReason" 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>
-        <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-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="settlementDialog = false">取消</el-button>
-        <el-button type="primary" @click="handelComfirm(CountFormRef)">确定结算</el-button>
-      </template>
-    </el-dialog>
+
     <el-image-viewer v-if="imageShow" :url-list="[bigImageUrl]" @close="imageShow = false" />
 
   </div>
+  <el-dialog v-model="settlementDialog" width="600" title="结算">
+    <el-form ref="CountFormRef" :model="countForm" :rules="settlementRules" label-width="120">
+      <el-form-item label="应收金额">
+        <el-input v-model="receivablePremium" placeholder="请输入" disabled></el-input>
+      </el-form-item>
+      <el-form-item prop="actualReceivedAmount" label="实收金额">
+        <el-input-number v-model="countForm.actualReceivedAmount" style="width: 100%;" :min="0" :precision="4"
+          controls-position="right"  @change="handleChange" />
+      </el-form-item>
+      <el-form-item prop="paymentDifference" label="回款金额">
+        <el-input v-model="countForm.paymentDifference" placeholder="请输入" disabled></el-input>
+      </el-form-item>
+      <el-form-item prop="paymentReason" label="差额原因">
+        <el-input v-model="countForm.paymentReason" 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>
+      <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-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="settlementDialog = false">取消</el-button>
+      <el-button type="primary" @click="handelComfirm(CountFormRef)">确定结算</el-button>
+    </template>
+  </el-dialog>
 </template>
 
 <script setup lang="ts">
@@ -224,7 +226,7 @@ const countForm = ref({
   receivePaymentDate: '',
   attachmentIds: [],
 })
-  const receivablePremium= ref('')
+const receivablePremium = ref('')
 
 const settlementDialog = ref(false)//结算弹窗
 let settlementRules = ref({
@@ -232,13 +234,7 @@ let settlementRules = ref({
   receivePaymentDate: [{ required: true, trigger: "change", message: "请选择" }],
   attachmentIds: [{ required: true, message: "请上传" }]
 })
-watch(
-  () => [countForm.value.actualReceivedAmount, receivablePremium.value],
-  ([actual, receivable]) => {
-    countForm.value.paymentDifference = Number(actual) - Number(receivable)
-  },
-  { immediate: true }
-)
+
 let imageUrl = ref([])
 
 //获取保险公司协议
@@ -275,12 +271,17 @@ let searchList = ref([
     search: ''
   }
 ])
-if (route.query) {
+const showTicket = ref(false)
+const companyId = ref('')
+if (route.query?.companyId) {
   console.log(route.query)
-
+  showTicket.value = true
   selectedList.value = JSON.parse(route.query.selectedList || '[]')
   searchList.value[0].search = route.query.companyId || ''
+  companyId.value = route.query.companyId || ''
   getByCompanyId()
+} else {
+  showTicket.value = false
 }
 
 
@@ -425,7 +426,7 @@ const handelComfirm = (formEl: FormInstance | undefined) => {
         invoicingVo: {
           incomeIds: selectedList.value.map(item => item.id),
           orderNos: selectedList.value.map(item => item.orderNo),
-          companyId: route.query.companyId,
+          companyId: companyId.value,
           receivablePremium: receivablePremium.value,
           invoiceType: "5"
         }
@@ -471,6 +472,32 @@ const initCompany = () => {
   })
 }
 
+const handleChange = async () => {
+  const num = await calSub(receivablePremium.value, countForm.value.actualReceivedAmount)
+  countForm.value.paymentDifference = num
+}
+
+/**
+ * 计算两个数值的差值(被减数 - 减数)
+ * @param minuend 被减数
+ * @param subtrahend 减数
+ * @returns 差值,若接口无数据则返回 0
+ */
+const calSub = async (minuend:number, subtrahend:number) => {
+  const res = await api.financeApi.calSub({ minuend, subtrahend })
+  return res.data || 0
+}
+
+const openSettlement = (list,id) => {
+  companyId.value = id
+  selectedList.value = list
+  handleSettlement()
+}
+
+defineExpose({
+  openSettlement,
+});
+
 onMounted(() => {
   initData()
   initCompany()

+ 4 - 4
src/views/receivable/handingFee/ticket.vue

@@ -167,10 +167,10 @@
         </el-form-item>
         <el-form-item prop="receivableSupervisePremium" label="应收金额">
           <el-input-number v-model="countForm.receivableSupervisePremium" style="width: 100%;" :min="0" :precision="4"
-            @change="handleChange" />
+            controls-position="right"  @change="handleChange" />
         </el-form-item>
         <el-form-item prop="overinflatedAmount" label="虚增金额">
-          <el-input v-model="countForm.overinflatedAmount" placeholder="请输入"></el-input>
+          <el-input v-model="countForm.overinflatedAmount" disabled placeholder="请输入"></el-input>
         </el-form-item>
         <el-form-item prop="actualReceivedAmount" label="差额原因">
           <el-input v-model="countForm.paymentReason" placeholder="请输入"></el-input>
@@ -181,10 +181,10 @@
         </el-form-item>
         <el-form-item v-if="isSettlement" prop="actualReceivedAmount" label="实收金额">
           <el-input-number v-model="countForm.actualReceivedAmount" style="width: 100%;" :min="0" :precision="4"
-            @change="handleChange1" />
+            controls-position="right"  @change="handleChange1" />
         </el-form-item>
         <el-form-item v-if="isSettlement" prop="actualReceivedAmount" label="回款差额">
-          <el-input v-model="countForm.paymentDifference" placeholder="请输入"></el-input>
+          <el-input v-model="countForm.paymentDifference" disabled 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"