From 089bf5d2378b3c4a61d795b2a92bede2c193b771 Mon Sep 17 00:00:00 2001
From: admin <344137771@qq.com>
Date: Tue, 06 Jan 2026 11:22:58 +0800
Subject: [PATCH] 1

---
 src/views/modules/commodity/transport-add-or-update.vue |  414 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 414 insertions(+), 0 deletions(-)

diff --git a/src/views/modules/commodity/transport-add-or-update.vue b/src/views/modules/commodity/transport-add-or-update.vue
new file mode 100644
index 0000000..c5d5798
--- /dev/null
+++ b/src/views/modules/commodity/transport-add-or-update.vue
@@ -0,0 +1,414 @@
+<template>
+  <el-dialog
+    :title="'调整' + title"
+    :close-on-click-modal="false"
+    :visible.sync="visible"
+    @close="handClose"
+    width="700px"
+    class="transport-dialog"
+  >
+    <el-form
+      :model="dataForm"
+      ref="dataForm"
+      @keyup.enter.native="dataFormSubmit()"
+      label-width="0px"
+    >
+      <el-form-item label="" prop="transName">
+        <span>请输入正负调整值</span>
+        <el-input
+          v-model="dataForm.transName"
+          type="number"
+          @change="checkNumber()"
+          placeholder="请输入正负调整值"
+        ></el-input>
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          size="middle"
+          class="el-icon-circle-plus-outline"
+          @click="addOrUpdateHandle()"
+          >{{ pips }}</el-button
+        >
+        <el-button
+          type="primary"
+          size="middle"
+          class="el-icon-remove-outline"
+          @click="deleteHandle()"
+          >{{ pips }}</el-button
+        >
+      </el-form-item>
+      <el-form-item label="" prop="second">
+        <span>生效趋势(秒,0秒为即时生效)</span>
+        <el-input
+          oninput="value=value.replace('-','')"
+          v-model="second"
+          type="number"
+          placeholder="0秒为即时生效"
+        ></el-input>
+      </el-form-item>
+      <div>调整值</div>
+      <el-table
+        :data="dataForm.transfees"
+        border
+        style="width: 100%"
+        class="table-con"
+      >
+        <el-table-column
+          header-align="center"
+          align="center"
+          width="200"
+          label="原值"
+        >
+          <template slot-scope="scope">
+            <!-- <el-input type="number"
+                        v-model="newPrice"
+                        disabled></el-input> -->
+            <div>{{ newPrice }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          header-align="center"
+          align="center"
+          style="color: red"
+          width="180"
+          label="调整后"
+        >
+          <template slot-scope="scope">
+            <el-form-item label-width="0px">
+              <div class="spainput">{{ afterValue }}</div>
+              <!-- <el-input type="number" style="color:red !important;"
+                        v-model="afterValue" class="spainput"
+                        disabled></el-input> -->
+            </el-form-item>
+          </template>
+        </el-table-column>
+        <el-table-column
+          header-align="center"
+          align="center"
+          label="累计修正值"
+        >
+          <template slot-scope="scope">
+            <el-form-item label-width="0px">
+              <!-- <el-input type="number"
+                        v-model="adjustValue"
+                        disabled></el-input> -->
+              <div>{{ adjustValue }}</div>
+            </el-form-item>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="margin-top: 30px">生效趋势</div>
+      <el-table
+        :data="dataForm.transfeeFrees"
+        border
+        style="width: 100%"
+        class="table-con"
+      >
+        <el-table-column
+          header-align="center"
+          align="center"
+          width="338"
+          label="待生效值"
+        >
+          <template slot-scope="scope">
+            <!-- <el-input type="number"
+                        v-model="delayValue"
+                        disabled></el-input> -->
+            <div>{{ delayValue }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          header-align="center"
+          align="center"
+          width="320"
+          label="时间(秒)"
+        >
+          <template slot-scope="scope">
+            <el-form-item label-width="0px">
+              <!-- <el-input type="number"
+                        v-model="delaySecond"
+                        disabled></el-input> -->
+              <div>{{ delaySecond }}</div>
+            </el-form-item>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="visible = false">取消</el-button>
+      <el-button type="primary" :loading="loading" @click="dataFormSubmit()"
+        >确定</el-button
+      >
+    </span>
+    <!-- 弹窗, 新增 / 修改 -->
+    <!-- <add-or-update v-if="addOrUpdateVisible"
+                   ref="addOrUpdate"
+                   @refreshDataList="getDataList"></add-or-update> -->
+  </el-dialog>
+</template>
+
+<script>
+import { Debounce } from "@/utils/debounce";
+// import AddOrUpdate from './transcity-add-or-update'
+export default {
+  data() {
+    return {
+      // hasFreeCondition: 0,
+      visible: false,
+      title: "",
+      pips: "",
+      loading: false,
+      adjustValue: "", //累计修正的值
+      afterValue: "", //调整后值
+      delaySecond: "", //生效趋势
+      delayValue: "", // 待生效的值
+      newPrice: "", //原值
+      second: 0,
+      mafterValue: 0,
+      addOrUpdateVisible: false,
+      dataForm: {
+        // hasFreeCondition: false,
+        transName: 0,
+
+        // createTime: '',
+        // chargeType: 0,
+        // transportId: 0,
+        // isFreeFee: 0,
+        transfees: [{ cityList: [], status: 1 }],
+        transfeeFrees: [{ freeCityList: [], freeType: 0 }],
+      },
+      page: {
+        total: 0, // 总页数
+        currentPage: 1, // 当前页数
+        pageSize: 10, // 每页显示多少条
+      },
+      editVisible: false,
+    };
+  },
+  created() {
+    // this.init(id)
+  },
+  components: {
+    // AddOrUpdate
+  },
+  watch: {
+    // 如果当前对话框不可见,则关闭选择城市的对话框
+    visible: function (val) {
+      if (!val) {
+        this.addOrUpdateVisible = false;
+      }
+    },
+  },
+  computed: {
+    tableTitle() {
+      var titles = [
+        ["调整后", "累计修正值", "续件(个)", "续费(元)"],
+        ["首重(kg)", "运费(元)", "续重(kg)", "续费(元)"],
+        ["首体积(m³)", "运费(元)", "续体积(m³)", "续费(元)"],
+      ];
+      if (this.dataForm.chargeType) {
+        return titles[this.dataForm.chargeType];
+      }
+      return titles[0];
+    },
+  },
+  methods: {
+    init(id) {
+      this.getDataList(id);
+      this.title = id;
+      this.visible = true;
+      this.dataForm.transportId = id || 0;
+      this.$nextTick(() => {
+        this.$refs.dataForm.resetFields();
+        this.dataForm = {
+          // hasFreeCondition: false,
+          transName: 0,
+          createTime: "",
+          chargeType: 0,
+          transportId: 0,
+          isFreeFee: 0,
+          transfees: [{ cityList: [], status: 1 }],
+          transfeeFrees: [{ freeCityList: [], freeType: 0 }],
+        };
+      });
+      // if (this.dataForm.transportId) {
+      //   this.$http({
+      //     // 获取运费模板数据
+      //     url: this.$http.adornUrl(`/shop/transport/info/${this.dataForm.transportId}`),
+      //     method: 'get'
+      //   }).then(({ data }) => {
+      //     if (data.isFreeFee) {
+      //       data.transfees[0].status = 0
+      //     } else {
+      //       data.transfees[0].status = 1
+      //     }
+      //     this.dataForm = data
+      //     this.dataForm.hasFreeCondition = !!data.hasFreeCondition
+      //   })
+      // }
+    },
+    handClose() {
+      this.$data.dataForm = JSON.parse(
+        JSON.stringify(this.$options.data().dataForm)
+      );
+      this.second = 0;
+      this.$nextTick(() => {
+        this.$refs["dataForm"].clearValidate(); // 清除表单验证
+      });
+    },
+    getDataList(id) {
+      this.$http({
+        url: this.$http.adornUrl(
+          "/normal/adminMarketQuotationsManageAction!/showModal.action"
+        ),
+        method: "get",
+        params: this.$http.adornParams({
+          symbol: id,
+        }),
+      }).then(({ data }) => {
+        if (data) {
+          if (data.data.afterValue) {
+            this.afterValue = data.data.afterValue;
+          } else {
+            this.afterValue = data.data.newPrice;
+          }
+          if (data.data.pips * 1 == 0) {
+            this.pips = 0.01;
+          } else {
+            this.pips = data.data.pips;
+          }
+          this.mafterValue = this.afterValue;
+          this.adjustValue = data.data.adjustValue;
+          this.delaySecond = data.data.delaySecond;
+          this.delayValue = data.data.delayValue;
+          this.newPrice = data.data.newPrice;
+        }
+        // if(data.records){
+        //     this.option = data.records.map((item,index) =>{
+        //       return Object.assign({},{'symbol':item.symbol,'name':item.name})
+        //     })
+        // }
+      });
+    },
+    // 添加运费项
+    addTransfee() {
+      this.editVisible = true;
+      this.dataForm.transfees.push({ cityList: [], status: 1 });
+    },
+
+    // 添加指定包邮条件
+    // addTransfeeFree () {
+    //   if (this.dataForm.hasFreeCondition) {
+    //     this.dataForm.transfeeFrees.push({ freeCityList: [], freeType: 0 })
+    //   }
+    // },
+    // 删除指定包邮条件
+    deleteTransfeeFree(rowIndex) {
+      this.dataForm.transfeeFrees.splice(rowIndex, 1);
+    },
+
+    checkNumber() {
+      //正负值计算
+      // if(!this.dataForm.transName){
+      //     this.afterValue = this.mafterValue
+      //   }
+      let m = this.adjustValue;
+      let n = this.afterValue;
+      //this.afterValue = this.mafterValue
+      //this.afterValue = this.dataForm.transName
+      this.afterValue =
+        (n * 1000000000 + this.dataForm.transName * 1000000000) / 1000000000;
+      this.adjustValue =
+        (m * 1000000000 + this.dataForm.transName * 1000000000) / 1000000000;
+    },
+
+    addOrUpdateHandle(rowIndex) {
+      //正值添加按钮
+      let m = this.adjustValue;
+      let n = this.afterValue;
+      let p = this.dataForm.transName;
+      this.dataForm.transName =
+        (p * 1000000000 + this.pips * 1000000000) / 1000000000;
+      this.afterValue = (n * 1000000000 + this.pips * 1000000000) / 1000000000;
+      this.adjustValue = (m * 1000000000 + this.pips * 1000000000) / 1000000000;
+      //this.afterValue = (this.afterValue*1000000000 + this.pips*1000000000)/1000000000
+    },
+    // 删除运费项
+    deleteHandle(rowIndex) {
+      //负值添加按钮
+      let m = this.adjustValue;
+      let n = this.afterValue;
+      let p = this.dataForm.transName;
+      this.dataForm.transName =
+        (p * 1000000000 - this.pips * 1000000000) / 1000000000;
+      this.afterValue = (n * 1000000000 - this.pips * 1000000000) / 1000000000;
+      this.adjustValue = (m * 1000000000 - this.pips * 1000000000) / 1000000000;
+      //this.afterValue = (this.afterValue*1000000000 - this.pips*1000000000)/1000000000
+    },
+    /**
+     * 保留整数并小于零的数设为0
+     */
+    getNumber(num) {
+      num = Math.round(num);
+      return num < 0 ? 0 : num;
+    },
+    // 表单提交
+    dataFormSubmit: Debounce(function () {
+      this.$refs["dataForm"].validate((valid) => {
+        if (valid) {
+          this.loading = true;
+          this.dataForm.transfees[0].cityList = [];
+          this.$http({
+            url: this.$http.adornUrl(
+              `/normal/adminMarketQuotationsManageAction!/adjust.action`
+            ),
+            method: "post",
+            data: this.$http.adornData({
+              second: this.second,
+              symbol: this.title,
+              value: this.dataForm.transName,
+            }),
+          }).then(({ data }) => {
+            if (data.code == 0) {
+              this.$message({
+                message: "操作成功",
+                type: "success",
+                duration: 1000,
+                onClose: () => {
+                  this.visible = false;
+                  this.loading = false;
+                  this.$emit("refreshDataList", this.page);
+                },
+              });
+            } else {
+              this.$message({
+                message: data.msg,
+                type: "error",
+                duration: 1000,
+                onClose: () => {
+                  this.loading = false;
+                },
+              });
+            }
+          });
+        }
+      });
+    }),
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.transport-dialog .table-con .el-form-item {
+  margin-top: 16px;
+  margin-bottom: 16px !important;
+}
+::v-deep.spainput {
+  color: red;
+}
+::v-deep th {
+  background: rgb(38, 50, 56);
+  color: #fff;
+}
+</style>

--
Gitblit v1.9.3