ServiceProfit.vue 11.4 KB
<!-- <template>
  <BasicModal
    v-bind="$attrs"
    @register="register"
    title="生产对账单"
    width="60%"
    :bodyStyle="{ height: '500px' }"
    @ok="handleOk"
  >
  </BasicModal>
</template> -->
<template>
  <BasicModal
    v-bind="$attrs"
    @register="register"
    title="净利润分析表"
    width="60%"
    :bodyStyle="{ height: '455px' }"
    @visible-change="handleShow"
    @ok="handleOk"
    okText="导出"
  >
    <template #appendFooter>
      <a-button style="background-color: #1890ff; color: white" @click="handleCalculate"
        >计算</a-button
      >
    </template>
    <table
      style="
        width: 100%;
        border-collapse: collapse;
        text-align: center;
        border: 1px solid black;
        font-size: 16px;
      "
    >
      <thead>
        <!-- <tr>
          <th colspan="4" style="border: 1px solid black">净利润分析表</th>
        </tr> -->
      </thead>
      <tbody>
        <tr>
          <td style="border: 1px solid black; width: 25%">项目号</td>
          <td style="border: 1px solid black; width: 25%">{{ projectNo }}</td>
          <td style="border: 1px solid black; width: 25%">开始时间</td>
          <td style="border: 1px solid black; width: 25%">结束时间</td>
        </tr>
        <tr>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black">项目开始时间</td>
          <td style="border: 1px solid black"
            ><a-date-picker v-model:value="projectStartTime"
          /></td>
          <td style="border: 1px solid black"><a-date-picker v-model:value="projectEndTime" /></td>
        </tr>
        <tr>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black">生产进行时间</td>
          <td style="border: 1px solid black"
            ><a-date-picker v-model:value="produceStartTime"
          /></td>
          <td style="border: 1px solid black"><a-date-picker v-model:value="produceEndTime" /></td>
        </tr>
        <tr>
          <td style="border: 1px solid black">客户编码</td>
          <td style="border: 1px solid black">{{ customerCode }}</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black">备注</td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">客户总金额合计</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">生产科总价合计</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">包装费用合计</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">研发开发费合计</td>
          <td style="border: 1px solid black"
            ><a-input v-model:value="developTotalPrice" placeholder="请输入"
          /></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">复制费用合计</td>
          <td style="border: 1px solid black"
            ><a-input v-model:value="copyTotalPrice" placeholder="请输入"
          /></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">固定成本</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">西班牙提成</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">中国团队提成</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">支出合计</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">毛利润</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">研发贸易净利润</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">包装费用合计金额</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">包装费用实际金额</td>
          <td style="border: 1px solid black"
            ><a-input v-model:value="packetActualTotalPrice" placeholder="请输入"
          /></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">订单总数量</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">实际跟单单价=实际跟单费用/件数</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">实际跟单单价折算美金</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">包装费用收益</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">汇率收益</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
        <tr>
          <td style="border: 1px solid black" colspan="2">综合收益</td>
          <td style="border: 1px solid black"></td>
          <td style="border: 1px solid black"></td>
        </tr>
      </tbody>
    </table>
  </BasicModal>
</template>
<script lang="ts" setup>
  import { BasicModal, useModalInner } from '@/components/Modal';
  import { computed, ref, toRaw } from 'vue';
  // import { payDate, checkCreate } from '@/api/project/invoice';
  import { calculateBusinessProfit, exportBusinessProfit } from '@/api/project/order';
  import type { Dayjs } from 'dayjs';

  const projectStartTime = ref();
  const projectEndTime = ref();
  const produceStartTime = ref();
  const produceEndTime = ref();

  const testinput = ref();
  const Input1 = ref('');
  const Input2 = ref();
  const res = ref();
  const orderList = ref();
  const customerCode = ref();
  const projectNo = ref();
  const developTotalPrice = ref();
  const copyTotalPrice = ref();
  const packetActualTotalPrice = ref();
  const spainRatio = ref();
  const chinaRatio = ref();
  const actualRmbPrice = ref(0); //实际跟单单价
  const actualPrice = ref(0); //实际跟单单价折算美金
  const actualRatio = ref(6.2); //实际汇率
  const actualRatiactualRatioProfitPriceo = ref(); //汇率收益计算
  const chinaRatioProfitPrice = ref(); //中国团队提成比例
  const developProfit = ref(); //研发贸易利润
  const fixCost = ref(); // 固定成本
  const orderCount = ref(); //订单总数量
  const outTotalPrice = ref(); //支出合计计
  const packetProfitPrice = ref(); //包装费用收益计算
  const packetTotalPrice = ref(); //包装费用合计¥
  const productionDepartmentTotalPrice = ref(); //生成科总价¥
  const totalProfitPrice = ref(); //综合收益计算
  const spainRatioProfitPrice = ref(); //西班牙提成金额

  // const orderRes = await getOrderList({});
  // console.log(orderRes, '5656orderRes');
  const [register, { closeModal }] = useModalInner(async (data) => {
    res.value = data.data;
    orderList.value = data.res;
    customerCode.value = data.customerCode[0][0];
    projectNo.value = data.projectNo[0][0];
    console.log(orderList.value, 565656);
  });
  async function handleOk() {
    closeModal();
  }
  function handleShow(visible: boolean) {
    if (visible) {
      projectStartTime.value = null;
      projectEndTime.value = null;
      produceStartTime.value = null;
      produceEndTime.value = null;
      customerCode.value = null;
      projectNo.value = null;
      developTotalPrice.value = null;
      copyTotalPrice.value = null;
      packetActualTotalPrice.value = null;
    }
  }
  async function handleCalculate() {
    const packetCalculatePrice = ref(0);
    const orderCalculateCount = ref(0);
    const allList = toRaw(orderList.value);
    console.log(allList, '5656allList');
    allList.forEach((item) => {
      console.log(item, '5656orderList');
      console.log(item.profitAnalysisInfo.packetPrice, '5656orderList');
      packetCalculatePrice.value += item.profitAnalysisInfo.packetPrice;
      orderCalculateCount.value += item.orderCount;
      actualRmbPrice.value += packetCalculatePrice.value / orderCalculateCount.value;
    });
    actualPrice.value = actualRmbPrice.value / actualRatio.value;
    console.log(actualPrice.value, '5656actualPrice');

    const res = await calculateBusinessProfit({
      customerCode: customerCode.value,
      projectNo: projectNo.value,
      projectStartTime: projectStartTime.value,
      projectEndTime: projectEndTime.value,
      produceStartTime: produceStartTime.value,
      produceEndTime: produceEndTime.value,
      developTotalPrice: developTotalPrice.value,
      copyTotalPrice: copyTotalPrice.value,
      spainRatio: spainRatio.value,
      chinaRatio: chinaRatio.value,
      packetActualTotalPrice: packetActualTotalPrice.value,
      actualRmbPrice: actualRmbPrice.value,
      actualPrice: actualPrice.value,
      actualRatio: actualRatio.value,
    });
    console.log(res, '5656resservice');

    actualRmbPrice.value = res.data.actualRmbPrice;
    actualPrice.value = res.data.actualPrice;
    actualRatio.value = res.data.actualRatio;
    actualRatiactualRatioProfitPriceo.value = res.data.actualRatioProfitPrice; //汇率收益计算
    chinaRatioProfitPrice.value = res.data.chinaRatioProfitPrice; //中国团队提成比例
    developProfit.value = res.data.developProfit; //研发贸易利润
    fixCost.value = res.data.fixCost; // 固定成本
    orderCount.value = res.data.orderCount; //订单总数量
    outTotalPrice.value = res.data.outTotalPrice; //支出合计
    packetProfitPrice.value = res.data.packetProfitPrice; //包装费用收益计算
    packetTotalPrice.value = res.data.packetTotalPrice; //包装费用合计
    productionDepartmentTotalPrice.value = res.data.productionDepartmentTotalPrice; //生成科总价
    totalProfitPrice.value = res.data.totalProfitPrice; //综合收益计算
    spainRatioProfitPrice.value = res.data.spainRatioProfitPrice; //西班牙提成金额
  }
</script>
<style scoped>
  .divAll {
    display: flex;
    justify-content: center;
    align-items: center;
  }
</style>