Amtpanl.vue 3.48 KB
Newer Older
zhengxiaokui committed
1 2
<template>
  <div class="eibs-tab">
zhengxiaokui committed
3
    <c-col :span="span">
zhengxiaokui committed
4
      <c-col :span="15">
zhengxiaokui committed
5 6
        <el-form-item :label="message.title" :prop="message.cur">
          <c-select
zhengxiaokui committed
7
            v-model="cur"
zhengxiaokui committed
8
            maxlength="3"
zhengxiaokui committed
9
            :code="code"
zhengxiaokui committed
10
            @change="curChange"
zhengxiaokui committed
11 12 13 14 15
            placeholder="请选择币种"
          ></c-select>
        </el-form-item>
      </c-col>

zhengxiaokui committed
16
      <c-col :span="9">
zhengxiaokui committed
17 18
        <el-form-item
          label=""
zhengxiaokui committed
19 20
          label-width="220px"
          style="margin-left: -220px !important"
zhengxiaokui committed
21 22 23
          :prop="message.amt"
        >
          <c-input
zhengxiaokui committed
24
            v-model="amt"
zhengxiaokui committed
25 26 27 28 29 30 31 32 33 34
            @change="amtChanged"
            @input="amtInput"
            :placeholder="'请输入' + message.title"
          ></c-input>
        </el-form-item>
      </c-col>
    </c-col>
  </div>
</template>
<script>
wangren committed
35
import commonProcess from "~/mixin/commonProcess";
zhengxiaokui committed
36
import CodeTable from "~/config/CodeTable";
zhengxiaokui committed
37
import _ from "~/utils/Lodash.js";
zhengxiaokui committed
38 39
export default {
  inject: ["root"],
wangren committed
40
  mixins: [commonProcess],
zhengxiaokui committed
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
  //props: ["model", "message","span"],
  props: {
    model: {
      type: Object,
      default: undefined,
    },
    message: {
      type: Object,
      default: function () {
        return {
          title: "金额", //金额名称
          cur: "cur", //币种字段路劲
          amt: "amt", //金额字段路劲
          fix: 3, //小数点位数
        };
      },
    },
    span: {
      type: Number,
      default: 12, //宽度,默认12
    },
  },
zhengxiaokui committed
63 64
  data() {
    return {
zhengxiaokui committed
65
      code: [...CodeTable.cur],
zhengxiaokui committed
66 67
      amt: this.amtGet(),
      cur: this.curGet(),
zhengxiaokui committed
68 69 70
    };
  },
  methods: {
zhengxiaokui committed
71
    //金额格式化,默认保留三位小数
zhengxiaokui committed
72 73
    amtChanged(newamt) {
      if (newamt === "" || newamt === undefined || newamt === null) {
zhengxiaokui committed
74 75
        _.set(this.model, this.message.amt, "");
        this.amt = "";
zhengxiaokui committed
76 77 78 79
        return;
      }
      newamt = newamt.replace(/^0+\./, "0.");
      if (newamt === "" || newamt === undefined || newamt === null) {
zhengxiaokui committed
80 81
        _.set(this.model, this.message.amt, "");
        this.amt = "";
zhengxiaokui committed
82 83 84
        return;
      }
      newamt = newamt.replace(/^0+([0-9])/, "$1");
zhengxiaokui committed
85
      let fix = this.message.fix || 3;
zhengxiaokui committed
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
      let idx = newamt.indexOf(".");
      let segs = undefined;
      if (idx > -1) segs = newamt.split(".");
      else segs = [newamt || "0", "0".repeat(fix)];
      if (!segs[0]) segs[0] = "0";
      if (segs[1].length > fix) segs[1] = segs[1].substring(0, fix);
      else if (segs[1].length < fix)
        segs[1] = segs[1] + "0".repeat(fix - segs[1].length);
      let npreseg = "";
      segs[0] = segs[0].replace(/\D+/g, "");
      let preseg = segs[0];
      for (let i = 0; i < preseg.length; i++) {
        npreseg = preseg.charAt(preseg.length - 1 - i) + npreseg;
        if (i && (1 + i) % 3 == 0 && i != preseg.length - 1)
          npreseg = "," + npreseg;
      }
zhengxiaokui committed
102 103
      let amt = `${segs[0] ? segs[0] : 0}.${segs[1]}`;
      _.set(this.model, this.message.amt, amt);
zhengxiaokui committed
104
      this.amt = `${segs[0] ? npreseg : 0}.${segs[1]}`;
zhengxiaokui committed
105
    },
zhengxiaokui committed
106 107

    //禁止输入非数字
zhengxiaokui committed
108
    amtInput(newamt) {
zhengxiaokui committed
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
      let am = newamt.replace(/[^\d.]/g, "");
      _.set(this.model, this.message.amt, am);
      this.amt = am;
    },

    amtGet() {
      return _.get(this.model, this.message.amt, "");
    },

    //cur改变
    curChange() {
      _.set(this.model, this.message.cur, this.cur);
    },
    curGet() {
      return _.get(this.model, this.message.cur, "");
zhengxiaokui committed
124 125
    },
  },
zhengxiaokui committed
126
  computed: {},
zhengxiaokui committed
127 128
  watch: {},
  // methods: { ...Event },
zhengxiaokui committed
129
  created: function () {},
zhengxiaokui committed
130 131 132 133
};
</script>
<style>
</style>