UnManufacturingTrial.vue 9.6 KB
<template>
  <div>
    <van-form @submit="onSubmit">
      <table>
        <tr>
          <td>
            <mobile-input :formatter="formatter" :rules="[{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" type="number" format-trigger="reset" v-model="noManufacturingObject.GPM"
                          label="销售毛利率(%)" size="small" />
          </td>
          <td>
            <mobile-input :formatter="formatter" :rules="[{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset" v-model="noManufacturingObject.ROE" type="number" label="净资产收益率(%)"
                          size="small" />
          </td>
        </tr>
        <tr>
          <td>
            <mobile-input :formatter="formatter" :rules="[{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" type="number" format-trigger="reset" v-model="noManufacturingObject.ASSET"
                          label="资产负债率(%)" size="small" />
          </td>
          <td>
            <mobile-input :formatter="formatter" :rules="[{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset"
                          v-model="noManufacturingObject.EARNED" label="已获利息倍数" type="number" size="small" />
          </td>
        </tr>
        <tr>
          <td>
            <mobile-input :formatter="formatter" :rules="[{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset"
                          v-model="noManufacturingObject.InterBearing" type="number" label="有息负债率(%)" size="small" />
          </td>
          <td>
            <mobile-input :formatter="formatter" :rules="[{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset"
                          v-model="noManufacturingObject.ACCRECETRUN" type="number" label="应收账款周转率(%)" size="small" />
          </td>
        </tr>
        <tr>
          <td>
            <mobile-input :formatter="formatter" :rules="[{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset" v-model="noManufacturingObject.DEPTURN"
                          label="存款周转率(%)" type="number" size="small" />
          </td>
          <td>
            <mobile-input :formatter="formatter" :rules="[{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset"
                          v-model="noManufacturingObject.FAT" type="number" label="固定资产周转率(%)" size="small" />
          </td>
        </tr>
        <tr>
          <td>
            <mobile-input :formatter="formatter" :rules="[{ validator: testFloat, message: '必须为正整数或者小数' }]" :required="true" format-trigger="reset" v-model="noManufacturingObject.ITR"
                          label="存货周转率(%)" type="number" size="small" />
          </td>
          <td>
            <mobile-input :formatter="formatter" :required="true" type="number" format-trigger="reset" v-model="noManufacturingObject.SARE"
                          label="销售收入(元)" size="small" />
          </td>
        </tr>
        <tr>
          <td>
            <mobile-input :formatter="formatter" :rules="[{ pattern, message: '年限为整数' }]" :required="true" format-trigger="reset" v-model="noManufacturingObject.ESYEAR"
                          label="成立年限" type="digit" size="small" />
          </td>
          <td>
            <mobile-input :formatter="formatter" :rules="[{ validator: testFloat, message: floatMsg }]" :required="true" format-trigger="reset" v-model="noManufacturingObject.TASS"
                          label="总资产(元)" type="digit" size="small" />
          </td>
        </tr>
        <tr>
          <td colspan="2">
            <mobile-input :required="true" :rules="[{ validator: testFloat, message: floatMsg }]" :formatter="formatter" format-trigger="reset" v-model="noManufacturingObject.NASS"
                          label="净资产(元)" type="number" size="small" />
          </td>
        </tr>
        <tr>
          <td colspan="2">
            <div style="margin: 16px; display: flex; justify-content: space-around">
              <van-button @click="reset" style="width: 25%" round color="#999999" native-type="button" plain>重置</van-button>
              <van-button style="width: 25%" round type="info" native-type="submit">试算</van-button>
            </div>
          </td>
        </tr>
      </table>
    </van-form>
    <van-dialog
      :show-cancel-button="false"
      :show-confirm-button="false"
      :close-on-click-overlay="true"
      v-model="showDialogReject"
    >
      <div class="dialog-box" style="position: relative">
        <div class="dialog-title">测算结果</div>
        <div class="score-box">{{ totalScore }}</div>
        <svg class="icon icon-img" aria-hidden="true">
          <use xlink:href="#icon-a-cepingjieguo110x110ziyuan40"></use>
        </svg>
        <van-button class="submitstyle3" block native-type="button" @click="showDialogReject = false">
          知道了
        </van-button>
      </div>
    </van-dialog>
  </div>
</template>

<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
import systemApi from "@/constants/api/ms-system/system.api.ts";
import IF from "@/public/factory/InterFaceFactory";
import { NativeUI } from "@/public/ts/NativeUI";

/**
 * @Description 非制造业试算
 * @Author 王航
 * @Date 2022-2-23 下午 04:32
 */
@Component({
  name: "NoManufacturingTrial"
})
export default class NoManufacturingTrial extends Vue {
  noManufacturingObject:any = {
    //非制造业对象
    GPM: '', //销售毛利率
    ROE: '', //净资产收益率
    ASSET: '', //资产负债率
    EARNED: '', //已获息倍数
    InterBearing: '', //有息负债率
    ACCRECETRUN: '', //应收账款周转率
    DEPTURN: '', //存款周转率
    FAT: '', //固定资产周转率
    ITR: '', //存货周转率
    SARE: '', //销售收入
    ESYEAR: '', //成立年限
    TASS: '', //总资产
    NASS: '' //净资产
  };
  pattern = /^[1-9]\d*$/; //整数校验
  totalScore:any= ''; //总分数
  showDialogReject= false;
  floatMsg= ''; //浮点数验证信息

  formatter() {
  }

  onSubmit(values: any) {
    // console.log("submit", values);
    this.selectCompanyComputeInfo();
  }
  selectCompanyComputeInfo() {
    let param = {
      GPM: this.noManufacturingObject.GPM, //销售毛利率
      ROE: this.noManufacturingObject.ROE, //净资产收益率
      ASSET: this.noManufacturingObject.ASSET, //资产负债率
      EARNED: this.noManufacturingObject.EARNED, //已获息倍数
      InterBearing: this.noManufacturingObject.InterBearing, //有息负债率
      ACCRECETRUN: this.noManufacturingObject.ACCRECETRUN, //应收账款周转率
      DEPTURN: this.noManufacturingObject.DEPTURN, //存款周转率
      FAT: this.noManufacturingObject.FAT, //固定资产周转率
      ITR: this.noManufacturingObject.ITR, //存货周转率
      SARE: this.noManufacturingObject.SARE, //销售收入
      ESYEAR: this.noManufacturingObject.ESYEAR, //成立年限
      TASS: this.noManufacturingObject.TASS, //总资产
      NASS: this.noManufacturingObject.NASS, //净资产
      COMTYPE: '1' //0表示制造业企业,1表示非制造业
    };
    NativeUI.showWaiting('正在查询...');
    return IF.transferDataInter(systemApi.companyMoneyComputed, param).then((res:any) => {
      NativeUI.closeWaiting();
      if (res.code == 1) {
        this.totalScore = res.data.totalAch; //总分
        console.log(this.totalScore);
        this.showDialogReject = true;
      } else {
        NativeUI.toast(res.message);
      }
    });
  }

  formatDate(date: any) {
    return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`;
  }

  reset() {
    this.noManufacturingObject.GPM = '';
    this.noManufacturingObject.ROE = '';
    this.noManufacturingObject.ASSET = '';
    this.noManufacturingObject.EARNED = '';
    this.noManufacturingObject.InterBearing = '';
    this.noManufacturingObject.ACCRECETRUN = '';
    this.noManufacturingObject.DEPTURN = '';
    this.noManufacturingObject.FAT = '';
    this.noManufacturingObject.ITR = '';
    this.noManufacturingObject.SARE = '';
    this.noManufacturingObject.ESYEAR = '';
    this.noManufacturingObject.TASS = '';
    this.noManufacturingObject.NASS = '';
  }
  testFloat(val:any) {
    if (parseFloat(val) < 0) {
      // this.floatMsg = '必须为正数';
      return false;
    } else {
      // this.floatMsg = '必须为整数或者小数';
      return /^(-?\d+)(\.\d+)?$/.test(val);
    }
  }
}
</script>

<style scoped>
table {
  width: 90%;
  margin: 0 auto;
}

::v-deep .van-button--info {
  background-color: #fd5065;
  border: 1px solid #fd5065;
}

::v-deep .van-button__text {
  font-size: 16px;
}
.dialog-box {
  margin: 0 auto;
  background: #fff;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 300px;
  height: 306px;
}
.icon-img {
  width: 120px;
  height: 120px;
  margin-top: 20px;
  margin-bottom: 20px;
  color: rgb(17, 167, 30);
}
.dialog-title {
  font-weight: bold;
  margin-top: 10%;
  font-size: 16px;
  color: #333;
}
.score-box {
  position: absolute;
  font-size: 36px;
  font-weight: 400;
  top: 105px;
  z-index: 999;
  color: #f59a23;
}
.submitstyle3 {
  width: 268px;
  height: 36px;
  border-radius: 6px;
  margin-top: 30px;
  color: #fff;
  background-color: #ff574c;
  border-color: #ff574c;
  font-size: 16px;
  text-align: center;
  font-weight: 400;
}
</style>