From b4dd0687c7285f3be32860adccfa523a62bfd4c6 Mon Sep 17 00:00:00 2001
From: 李 <344137771@qq.com>
Date: Fri, 05 Jun 2026 11:19:37 +0800
Subject: [PATCH] 1

---
 src/views/modules/etf-spots/pick-update.vue |  195 ++++++++++++++++++++++++++----------------------
 1 files changed, 107 insertions(+), 88 deletions(-)

diff --git a/src/views/modules/etf-spots/pick-update.vue b/src/views/modules/etf-spots/pick-update.vue
index ae2ba5b..c2f2ae4 100644
--- a/src/views/modules/etf-spots/pick-update.vue
+++ b/src/views/modules/etf-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>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3