lxf 2 months ago
parent
commit
08fd802ebb

+ 5 - 0
jy-ui/src/api/business/contract/info.ts

@@ -50,3 +50,8 @@ export function getPayment(params: StrAnyObj): Promise<void> {
 export function getOrderList(params: StrAnyObj): Promise<void> {
   return request.get('/contractInfo/getOrderList', params)
 }
+
+// 结算利润
+export function settlementProfit(data: StrAnyObj): Promise<void> {
+  return request.post('/contractInfo/settlement', data)
+}

+ 19 - 29
jy-ui/src/views/business/contract/info/index.vue

@@ -5,14 +5,7 @@ import { ToolbarConfigType } from '@/components/AToolbar/type'
 import { ColumnConfigType } from '@/components/ATable/type'
 import { StrAnyObj, StrAnyObjArr } from '@/typings'
 import { useHandleData } from '@/utils/useHandleData'
-import {
-  getPageApi,
-  getDetailApi,
-  addApi,
-  editApi,
-  deleteApi,
-  getStatistics
-} from '@/api/business/contract/info'
+import { getPageApi, getDetailApi, addApi, editApi, deleteApi, getStatistics } from '@/api/business/contract/info'
 import Detail from './detail.vue'
 import TransactionDetail from './transaction-detail.vue'
 import OrderDetail from './order-detail.vue'
@@ -51,7 +44,7 @@ const queryConfig: FormConfigType[] = [
       {
         key: 20,
         label: '已完成'
-      },
+      }
     ]
   },
   {
@@ -160,6 +153,13 @@ const columnConfig: ColumnConfigType[] = [
     }
   },
   {
+    prop: 'hasSettlement',
+    label: '是否结算',
+    formatter: (row) => {
+      return row.hasSettlement == 1 ? '是' : '否'
+    }
+  },
+  {
     width: 120,
     handleConfig: [
       {
@@ -186,9 +186,7 @@ const formConfig: FormConfigType[] = [
     type: 'input',
     prop: 'type',
     label: '合同类型 1-三梵合同,2-佰易来合同',
-    rule: [
-      { required: true, message: '合同类型 1-三梵合同,2-佰易来合同不能为空', trigger: 'blur' }
-    ]
+    rule: [{ required: true, message: '合同类型 1-三梵合同,2-佰易来合同不能为空', trigger: 'blur' }]
   },
   {
     type: 'input',
@@ -515,6 +513,12 @@ function handleRemove(idList: string[]) {
     })
   })
 }
+function clickCancel(params: type) {
+  if (params) {
+    getPage()
+  }
+  dialogVisible.value = false
+}
 </script>
 
 <template>
@@ -527,13 +531,7 @@ function handleRemove(idList: string[]) {
         <div
           v-for="(item, index) in statisticsData"
           :key="index"
-          style="
-            width: calc(25% - 10px);
-            padding: 20px;
-            background-color: #b0e2ffa8;
-            margin-right: 10px;
-            border-radius: 10px;
-          "
+          style="width: calc(25% - 10px); padding: 20px; background-color: #b0e2ffa8; margin-right: 10px; border-radius: 10px"
         >
           <div style="font-size: 18px; font-weight: bold; color: black">
             {{ item.sellerCompany }}
@@ -586,15 +584,7 @@ function handleRemove(idList: string[]) {
       </template>
     </a-table>
 
-    <a-dialog
-      v-if="dialogVisible"
-      v-model="dialogVisible"
-      :title="dialogTitle"
-      @submit="formSubmit"
-      @closed="formClosed"
-      style="width: 1100px"
-      :footer="false"
-    >
+    <a-dialog v-if="dialogVisible" v-model="dialogVisible" :title="dialogTitle" @submit="formSubmit" @closed="formClosed" style="width: 1100px" :footer="false">
       <el-tabs v-model="activeName" type="card">
         <el-tab-pane label="合同详情" name="1">
           <Detail :rowData="formData"></Detail>
@@ -603,7 +593,7 @@ function handleRemove(idList: string[]) {
           <TransactionDetail :rowData="formData"></TransactionDetail>
         </el-tab-pane>
         <el-tab-pane label="结算账目" name="3">
-          <OrderDetail :rowData="formData"></OrderDetail>
+          <OrderDetail :rowData="formData" @clickCancel="clickCancel"></OrderDetail>
         </el-tab-pane>
       </el-tabs>
     </a-dialog>

+ 24 - 3
jy-ui/src/views/business/contract/info/order-detail.vue

@@ -44,7 +44,10 @@
       </el-table>
     </el-form-item>
     <el-form-item label="总利润" :label-position="'top'">
-      <div>{{ calculateTotalProfit() }}</div>
+      <div style="display: flex; justify-content: space-between; width: 100%">
+        <span>{{ calculateTotalProfit() }}</span>
+        <el-button type="primary" v-if="rowData.hasSettlement != 1" @click="clickSettlement()">利润结算</el-button>
+      </div>
     </el-form-item>
 
     <a-dialog v-if="dialogVisible" v-model="dialogVisible" title="订单详情" style="width: 90%" :footer="false">
@@ -179,10 +182,10 @@
 </template>
 
 <script setup>
-import { getFundReceived, getPayment, getOrderList } from '@/api/business/contract/info'
+import { getFundReceived, getPayment, getOrderList, settlementProfit } from '@/api/business/contract/info'
 import { getListByCodeApi } from '@/api/system/dictData'
+import { ElMessage, ElMessageBox } from 'element-plus'
 
-const { proxy } = getCurrentInstance()
 const props = defineProps({
   rowData: Object
 })
@@ -269,6 +272,24 @@ const dictKeyValue = (value, arr) => {
   }
   return ''
 }
+const emit = defineEmits(['clickCancel'])
+const clickSettlement = () => {
+  ElMessageBox.confirm('你是否确认结算利润', '提示', {
+    confirmButtonText: '确定',
+    cancelButtonText: '取消',
+    type: 'warning'
+  })
+    .then(() => {
+      settlementProfit({ id: props.rowData.id, hasSettlement: 1, settlementProfit: calculateTotalProfit() }).then(() => {
+        ElMessage({
+          type: 'success',
+          message: '结算成功'
+        })
+        emit('clickCancel', true)
+      })
+    })
+    .catch(() => {})
+}
 onMounted(() => {
   getListByCodeApi({ code: 'expense_type' }).then((res) => {
     expenseType.value = res