通过vue点击事件显示测算过程

1.样式
<el-button
icon=“fa fa-calculator”
@click=“doCalc”
:loading=“btnCalcDisable”
>
开始测算
《/el-button>
2、data数据
// 测算过程
calcProcess: {
isShow: false, //窗体是否显示
list: [], //检测字段列表
status: 1, //测算状态
isComputed: false, //是否正在计算
virtualMaxTime: 500, //虚拟检测过程最大时间
resultList: [], // B8表结果
},
3、通过弹窗

<el-dialog
  title="开始测算"
  :visible.sync="calcProcess.isShow"
  @close="
    calcProcess.list.forEach((item) => (item.virtualstatus = -1));
    calcProcess.status = 1;
  "
>
  <div style="padding: 0 20px; line-height: 32px">
    <div style="margin-bottom: 20px">
      <el-steps :active="calcProcess.status" finish-status="success">
        <el-step title="收集数据"></el-step>
        <el-step title="检查数据合法性"></el-step>
        <el-step title="提交数据"></el-step>
        <el-step title="数据计算"></el-step>
        <el-step title="完成"></el-step>
      </el-steps>
    </div>
    <el-row :gutter="20">
      <el-col
        v-for="(item, index) of calcProcess.list"
        :key="index"
        :span="6"
      >
        <div
          style="font-size: 16px"
          class="grid-content bg-purple smallButton"
        >
          <span>{{ item.text }} </span>
          <span>
            <i
              v-if="item.virtualstatus === -1"
              class="el-icon-loading transition-box"
            ></i>
            <transition name="el-zoom-in-center">
              <el-button
                v-if="item.virtualstatus === 1"
                size="mini"
                type="success"
                icon="el-icon-check"
                circle
              ></el-button>
              <el-button
                v-if="item.virtualstatus === 0"
                size="mini"
                type="danger"
                icon="el-icon-close"
                circle
              ></el-button>
            </transition>
          </span>
        </div>
      </el-col>
    </el-row>

    <el-skeleton :rows="10" animated>
      <template slot="template">
        <template
          v-if="calcProcess.isComputed && calcProcess.status == 2"
          @click="calcProcess.isShow = false"
        >
          <div style="margin-top: 10px; overflow: hidden">
            <el-alert
              title="请重新检查并填写错误的基础数据后再计算。"
              type="error"
              show-icon
            ></el-alert>
          </div>
          <div style="margin-top: 10px; overflow: hidden">
            <el-button
              style="float: right"
              type="danger"
              icon="el-icon-edit"
              v-if="calcProcess.isComputed && calcProcess.status != 5"
              @click="calcProcess.isShow = false"
              >去完善基础数据
            </el-button>
          </div>
        </template>
        <template v-if="calcProcess.isComputed && calcProcess.status == 5">
          <div style="margin-top: 10px; overflow: hidden">
            <el-descriptions
              class="margin-top"
              :column="3"
              size="small"
              border
            >
              <el-descriptions-item
                v-for="item of calcProcess.resultList"
                :key="item.gcid"
              >
                <template slot="label">
                  {{ item.title }}
                </template>
                {{
                  item.disp === "f%"
                    ? Math.round(item.hj * 10000) / 100 + item.unit
                    : Math.round(item.hj * 100) / 100 + item.unit
                }}
                <!-- (item.disp === "f%" ? "%" : "万元") -->
              </el-descriptions-item>
            </el-descriptions>
          </div>
          <div style="margin-top: 10px; overflow: hidden">
            <el-alert
              title="计算完成。"
              type="success"
              show-icon
            ></el-alert>
          </div>
          <div style="margin-top: 10px; overflow: hidden">
            <template>
              <el-popconfirm
                title="此项操作会导致您的当前打开工程暂时切换至子工程?"
                @confirm="qipao"
              >
                <el-button
                  style="float: right"
                  type="primary"
                  slot="reference"
                  icon="el-icon-finished"
                  @click="goReport"
                  v-if="calcProcess.isComputed && calcProcess.status == 5"
                  >查看详细报表报告
                </el-button>
              </el-popconfirm>
            </template>
          </div>
        </template>
      </template>
    </el-skeleton>
    <el-button style="float: right" loading v-if="!calcProcess.isComputed"
      >努力计算中,请稍后..
    </el-button>
  </div>
</el-dialog>

4、点击事件
doCalc() {
this.btnCalcDisable = true;
this.check_message = “”;
this.calcProcess.isComputed = false;
// 显示测算过程窗体
this.calcProcess.isShow = true;
calc(this.gcid).then((res) => {
// 测试测算字段
console.log(res);
this.calcProcess.list = res.data.split("。").map((item) => {
console.log(this.calcProcess.list);
return {
text: item.slice(0, item.indexOf(“开始”)),
status: item.indexOf(“完成”) !== -1 ? 1 : 0,
virtualstatus: -1,
responseTime: Math.random() * this.calcProcess.virtualMaxTime,
};
});
this.calcProcess.list.pop();
this.calcProcess.isComputed = true;
this.calcProcess.list.forEach((item) => {
setTimeout(() => {
item.virtualstatus = item.status;
}, item.responseTime);
});
this.btnCalcDisable = false;
if (res.msg == “success”) {
setTimeout(() => {
this.calcProcess.status = 5;
this.calcProcess.resultList = res.result;
console.log(this.calcProcess.resultList);
}, this.calcProcess.virtualMaxTime);
} else if (res.msg == “fail”) {
// this.KaTeX parse error: Expected 'EOF', got '}' at position 100: …// }); }̲ else if (res.m…emit(‘gcmc’,this.project.gcmc)
},
完成的结果
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值