新版交易所前段管理后台
1
5 days ago b4dd0687c7285f3be32860adccfa523a62bfd4c6
src/views/modules/cryptos-spots/pick-update.vue
@@ -1,6 +1,6 @@
<template>
  <el-dialog
    title="订单场控"
    title="订单调整"
    :close-on-click-modal="false"
    :visible.sync="visible"
    append-to-body
@@ -11,131 +11,150 @@
      :model="dataForm"
      :rules="dataRule"
      ref="dataForm"
      @keyup.enter.native="dataFormSubmit()"
      label-width="120px"
    >
      <el-form-item label="场控选择" prop="symbol">
      <el-form-item label="当前方向">
        <span>{{ currentDirectionLabel }}</span>
      </el-form-item>
      <el-form-item label="修改方向">
        <el-select
        class="speacSelect"
          v-model="options.value"
          placeholder="请选择"
          @change="changeVal()"
          class="speacSelect"
          v-model="directionValue"
          placeholder="请选择买涨/买跌"
          clearable
        >
          <el-option
            v-for="item in options"
            v-for="item in directionOptions"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          >
          </el-option>
          />
        </el-select>
      </el-form-item>
      <el-form-item label="场控选择">
        <el-select
          class="speacSelect"
          v-model="profitLossValue"
          placeholder="请选择盈利/亏损"
          clearable
        >
          <el-option
            v-for="item in profitLossOptions"
            :key="item.value"
            :label="item.label"
            :value="item.value"
          />
        </el-select>
      </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button @click="visible = false">取消</el-button>
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
      <el-button type="primary" :loading="submitting" @click="dataFormSubmit()">确定</el-button>
    </span>
  </el-dialog>
</template>
<script>
import { treeDataTranslate } from "@/utils";
import { Debounce } from "@/utils/debounce";
import { encrypt } from "@/utils/crypto";
export default {
  data() {
    return {
      visible: false,
      menuList: [],
      id:'',
      row: "",
      options: [
        {
          value: "profit",
          label: "盈利",
        },
        {
          value: "loss",
          label: "亏损",
        }
      submitting: false,
      orderNo: "",
      currentDirection: "",
      directionValue: "",
      profitLossValue: "",
      directionOptions: [
        { value: "buy", label: "买涨" },
        { value: "sell", label: "买跌" },
      ],
      langug: [], // 语言
      dataForm: {
        closeTimeTs: "",
        openTimeTs: "",
        high: "",
        low: "",
        turnover: "",
        uuid: "",
      },
      dataRule: {
        // sorted: [{ required: true, message: "排序不能为空", trigger: "blur" }],
      },
      tempKey: -666666, // 临时key, 用于解决tree半选中状态项不能传给后台接口问题. # 待优化
      profitLossOptions: [
        { value: "profit", label: "盈利" },
        { value: "loss", label: "亏损" },
      ],
      dataForm: {},
      dataRule: {},
    };
  },
  computed: {
    currentDirectionLabel() {
      if (this.currentDirection === "buy") {
        return "买涨";
      }
      if (this.currentDirection === "sell") {
        return "买跌";
      }
      return "-";
    },
  },
  methods: {
    init(id) {
      this.id = id || ''
    init(orderNo, direction) {
      this.orderNo = orderNo || "";
      this.currentDirection = direction || "";
      this.directionValue = "";
      this.profitLossValue = "";
      this.visible = true;
    },
    changeVal(val) {
      this.$forceUpdate();
    },
    handClose() {
      this.$data.dataForm = JSON.parse(
        JSON.stringify(this.$options.data().dataForm)
      );
      this.$nextTick(() => {
        this.$refs["dataForm"].clearValidate(); // 清除表单验证
      });
      this.langug.value = "";
      this.options.value = "";
      this.orderNo = "";
      this.currentDirection = "";
      this.directionValue = "";
      this.profitLossValue = "";
      this.submitting = false;
    },
    // 表单提交
    dataFormSubmit: Debounce(function () {
        this.$refs["dataForm"].validate((valid) => {
          if (valid) {
            this.$http({
              // 修改
              url: this.$http.adornUrl(`/normal/adminFuturesOrderAction!/orderProfitLoss.action`),
              method: "get",
              params: this.$http.adornParams(Object.assign({
                orderNo:this.id,
                profitLoss:this.options.value,
              })),
            }).then(({ data }) => {
              if (data.code == 0) {
                this.$message({
                  message: "操作成功",
                  type: "success",
                  duration: 1500,
                  onClose: () => {
                    this.visible = false;
                    this.$emit("refreshDataList");
                  },
                });
              } else {
                this.$message({
                  message: data.msg,
                  type: "error",
                  duration: 1500,
                  onClose: () => {
                    this.visible = false;
                  },
                });
              }
            });
      if (!this.directionValue && !this.profitLossValue) {
        this.$message.warning("请至少选择一项修改内容");
        return;
      }
      this.submitting = true;
      const tasks = [];
      if (this.directionValue && this.directionValue !== this.currentDirection) {
        tasks.push(
          this.$http({
            url: this.$http.adornUrl(`/normal/adminFuturesOrderAction!/orderDirection.action`),
            method: "get",
            params: this.$http.adornParams({
              orderNo: this.orderNo,
              direction: this.directionValue,
            }),
          })
        );
      }
      if (this.profitLossValue) {
        tasks.push(
          this.$http({
            url: this.$http.adornUrl(`/normal/adminFuturesOrderAction!/orderProfitLoss.action`),
            method: "get",
            params: this.$http.adornParams({
              orderNo: this.orderNo,
              profitLoss: this.profitLossValue,
            }),
          })
        );
      }
      Promise.all(tasks)
        .then((results) => {
          const failed = results.find((res) => res.data.code !== 0);
          if (failed) {
            this.$message.error(failed.data.msg || "操作失败");
            return;
          }
          this.$message.success("操作成功");
          this.visible = false;
          this.$emit("refreshDataList");
        })
        .finally(() => {
          this.submitting = false;
        });
    }),
  },
};
</script>
<style scoped>
.speacSelect{
.speacSelect {
  width: 400px;
}
</style>
</style>