zouyu
2025-03-07 1bf6023783ecfdb2e578b22145d9911099280b98
下单页面调整
已添加1个文件
已重命名1个文件
已修改5个文件
4752 ■■■■■ 文件已修改
src/layout/components/Navbar.vue 140 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/user.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/bigEval.js 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionOrder/add.vue 4408 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionOrder/fiberoptic-config-readonly.vue 补丁 | 查看 | 原始文档 | blame | 历史
src/views/business/inspectionOrder/index.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Navbar.vue
@@ -1,7 +1,7 @@
<template>
  <div class="navbar">
<!--    <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>-->
<!--    <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>-->
    <!--    <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>-->
    <!--    <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>-->
    <div class="logo">
      <img src="@/assets/logo/ZTTlogo.png" />
    </div>
@@ -10,56 +10,61 @@
    </div>
    <div class="right-menu">
      <div class="avatar-wrapper">
        <img :src="avatar" class="user-avatar">
        <span class="userName">Admin</span>
        <img class="logoout" src="@/assets/images/logoout.png" @click="logout" title="退出账号" />
        <img :src="avatar" class="user-avatar" />
        <span class="userName">{{ nickName }}</span>
        <img
          class="logoout"
          src="@/assets/images/logoout.png"
          @click="logout"
          title="退出账号"
        />
      </div>
<!--      <template v-if="device!=='mobile'">-->
<!--        <search id="header-search" class="right-menu-item" />-->
      <!--      <template v-if="device!=='mobile'">-->
      <!--        <search id="header-search" class="right-menu-item" />-->
<!--        <el-tooltip content="源码地址" effect="dark" placement="bottom">-->
<!--          <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />-->
<!--        </el-tooltip>-->
      <!--        <el-tooltip content="源码地址" effect="dark" placement="bottom">-->
      <!--          <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />-->
      <!--        </el-tooltip>-->
<!--        <el-tooltip content="文档地址" effect="dark" placement="bottom">-->
<!--          <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />-->
<!--        </el-tooltip>-->
      <!--        <el-tooltip content="文档地址" effect="dark" placement="bottom">-->
      <!--          <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />-->
      <!--        </el-tooltip>-->
<!--        <screenfull id="screenfull" class="right-menu-item hover-effect" />-->
      <!--        <screenfull id="screenfull" class="right-menu-item hover-effect" />-->
<!--        <el-tooltip content="布局大小" effect="dark" placement="bottom">-->
<!--          <size-select id="size-select" class="right-menu-item hover-effect" />-->
<!--        </el-tooltip>-->
      <!--        <el-tooltip content="布局大小" effect="dark" placement="bottom">-->
      <!--          <size-select id="size-select" class="right-menu-item hover-effect" />-->
      <!--        </el-tooltip>-->
<!--      </template>-->
      <!--      </template>-->
<!--      <div class="avatar-container">-->
<!--        <el-dropdown-menu slot="dropdown">-->
<!--          <router-link to="/user/profile">-->
<!--            <el-dropdown-item>个人中心</el-dropdown-item>-->
<!--          </router-link>-->
<!--          <el-dropdown-item @click.native="setting = true">-->
<!--            <span>布局设置</span>-->
<!--          </el-dropdown-item>-->
<!--          <el-dropdown-item divided @click.native="logout">-->
<!--            <span>退出登录</span>-->
<!--          </el-dropdown-item>-->
<!--        </el-dropdown-menu>-->
<!--      </div>-->
      <!--      <div class="avatar-container">-->
      <!--        <el-dropdown-menu slot="dropdown">-->
      <!--          <router-link to="/user/profile">-->
      <!--            <el-dropdown-item>个人中心</el-dropdown-item>-->
      <!--          </router-link>-->
      <!--          <el-dropdown-item @click.native="setting = true">-->
      <!--            <span>布局设置</span>-->
      <!--          </el-dropdown-item>-->
      <!--          <el-dropdown-item divided @click.native="logout">-->
      <!--            <span>退出登录</span>-->
      <!--          </el-dropdown-item>-->
      <!--        </el-dropdown-menu>-->
      <!--      </div>-->
    </div>
  </div>
</template>
<script>
import { mapGetters } from 'vuex'
import Breadcrumb from '@/components/Breadcrumb'
import TopNav from '@/components/TopNav'
import Hamburger from '@/components/Hamburger'
import Screenfull from '@/components/Screenfull'
import SizeSelect from '@/components/SizeSelect'
import Search from '@/components/HeaderSearch'
import RuoYiGit from '@/components/RuoYi/Git'
import RuoYiDoc from '@/components/RuoYi/Doc'
import { mapGetters } from "vuex";
import Breadcrumb from "@/components/Breadcrumb";
import TopNav from "@/components/TopNav";
import Hamburger from "@/components/Hamburger";
import Screenfull from "@/components/Screenfull";
import SizeSelect from "@/components/SizeSelect";
import Search from "@/components/HeaderSearch";
import RuoYiGit from "@/components/RuoYi/Git";
import RuoYiDoc from "@/components/RuoYi/Doc";
export default {
  components: {
@@ -70,44 +75,43 @@
    SizeSelect,
    Search,
    RuoYiGit,
    RuoYiDoc
    RuoYiDoc,
  },
  computed: {
    ...mapGetters([
      'avatar',
      'device'
    ]),
    ...mapGetters(["avatar", "device", "nickName"]),
    setting: {
      get() {
        return this.$store.state.settings.showSettings
        return this.$store.state.settings.showSettings;
      },
      set(val) {
        this.$store.dispatch('settings/changeSetting', {
          key: 'showSettings',
          value: val
        })
      }
        this.$store.dispatch("settings/changeSetting", {
          key: "showSettings",
          value: val,
        });
      },
    },
    topNav: {
      get() {
        return this.$store.state.settings.topNav
      }
    }
        return this.$store.state.settings.topNav;
      },
    },
  },
  methods: {
    async logout() {
      this.$confirm('确定注销并退出系统吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.$store.dispatch('LogOut').then(() => {
          location.href = '/index';
      this.$confirm("确定注销并退出系统吗?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.$store.dispatch("LogOut").then(() => {
            location.href = "/index";
          });
        })
      }).catch(() => {});
    }
  }
}
        .catch(() => {});
    },
  },
};
</script>
<style lang="scss" scoped>
@@ -116,7 +120,7 @@
  overflow: hidden;
  //position: relative;
  background: #fff;
  box-shadow: 0 1px 4px rgba(0,21,41,.08);
  box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
  position: fixed; /* å°†å¤´éƒ¨å›ºå®š */
  top: 0; /* åœ¨é¡¶éƒ¨å›ºå®š */
  width: 100%; /* å®½åº¦100%,覆盖整个视口 */
@@ -199,10 +203,10 @@
      &.hover-effect {
        cursor: pointer;
        transition: background .3s;
        transition: background 0.3s;
        &:hover {
          background: rgba(0, 0, 0, .025)
          background: rgba(0, 0, 0, 0.025);
        }
      }
    }
src/router/index.js
@@ -92,22 +92,22 @@
// åŠ¨æ€è·¯ç”±ï¼ŒåŸºäºŽç”¨æˆ·æƒé™åŠ¨æ€åŽ»åŠ è½½
export const dynamicRoutes = [
  // {
  //   // åŽŸææ–™ä¸‹å•
  //   path: '/materialOrder',
  //   component: Layout,
  //   hidden: true,
  //   permissions: ['business:order'],
  //   children: [
  //     {
  //       // é“œææ–™ä¸‹å•
  //       path: 'customsInspection',
  //       component: () => import('@/views/business/materialOrder/customsInspection'),
  //       name: 'customsInspection',
  //       meta: { title: '铜材料下单', activeMenu: '/business/materialOrder' }
  //     }
  //   ]
  // },
  {
    // ä¸‹å•页面
    path: '/inspectionOrder',
    component: Layout,
    hidden: true,
    permissions: ['business:order'],
    children: [
      {
        // é“œææ–™ä¸‹å•
        path: 'addOrder',
        component: () => import('@/views/business/inspectionOrder/add'),
        name: 'addOrder',
        meta: { title: '新增委托单', activeMenu: '/business/inspectionOrder' }
      }
    ]
  },
  {
    // ç”¨æˆ·ç®¡ç†
    path: "/system/user-auth",
src/store/modules/user.js
@@ -67,6 +67,7 @@
      return new Promise((resolve, reject) => {
        getInfo()
          .then((res) => {
            console.log("store-->",res);
            const user = res.user;
            let avatar = user.avatar || "";
            if (!isHttp(avatar)) {
src/utils/bigEval.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,114 @@
import Big from "big.js";
/**
 * å®‰å…¨è®¡ç®—器(支持 + - * / å’Œæ‹¬å·ï¼‰
 * @param {string} expr æ•°å­¦è¡¨è¾¾å¼ï¼Œå¦‚ "(0.1 + 0.2) * 3"
 * @returns {string} è®¡ç®—结果字符串
 */
export function bigEval(expr) {
  // æ­¥éª¤1:词法分析
  const tokens = tokenize(expr);
  // æ­¥éª¤2:转换为逆波兰表达式(后缀表达式)
  const rpn = shuntingYard(tokens);
  // æ­¥éª¤3:执行计算
  return evaluateRPN(rpn);
}
// è¯æ³•分析器
function tokenize(expr) {
  const tokens = [];
  let numBuffer = "";
  let prevToken = null;
  const flushNumber = () => {
    if (numBuffer) {
      if (numBuffer.startsWith(".")) numBuffer = "0" + numBuffer;
      tokens.push({ type: "number", value: numBuffer });
      numBuffer = "";
    }
  };
  for (let i = 0; i < expr.length; i++) {
    const c = expr[i];
    if (/\d|\./.test(c)) {
      numBuffer += c;
    } else if ("+-*/()".includes(c)) {
      flushNumber();
      // // å¤„理负号(当'-'前无数字或前有运算符时为负号)
      // if (c === "-" && (!prevToken ||
      //     (prevToken.type === "operator" && prevToken.value !== ")"))) {
      //   numBuffer += c;
      //   console.log("进入--》",c,tokens,prevToken);
      // } else {
      // }
      tokens.push({ type: "operator", value: c });
      prevToken = tokens[tokens.length - 1];
    } else if (c !== " ") {
      throw new Error(`非法字符: ${c}`);
    }
  }
  flushNumber();
  return tokens;
}
// è°ƒåº¦åœºç®—法生成逆波兰表达式
function shuntingYard(tokens) {
  const output = [];
  const stack = [];
  const precedence = { "+": 1, "-": 1, "*": 2, "/": 2 };
  for (const token of tokens) {
    if (token.type === "number") {
      output.push(token.value);
    } else if (token.value === "(") {
      stack.push(token.value);
    } else if (token.value === ")") {
      while (stack.length && stack[stack.length - 1] !== "(") {
        output.push(stack.pop());
      }
      stack.pop(); // å¼¹å‡ºå·¦æ‹¬å·
    } else {
      while (
        stack.length &&
        stack[stack.length - 1] !== "(" &&
        precedence[stack[stack.length - 1]] >= precedence[token.value]
      ) {
        output.push(stack.pop());
      }
      stack.push(token.value);
    }
  }
  while (stack.length) output.push(stack.pop());
  return output;
}
// æ‰§è¡Œé€†æ³¢å…°è¡¨è¾¾å¼è®¡ç®—
function evaluateRPN(rpn) {
  const stack = [];
  for (const token of rpn) {
    if (/\d|\./.test(token)) {
      stack.push(new Big(token));
    } else {
      const b = stack.pop();
      const a = stack.pop();
      switch (token) {
        case "+": stack.push(a.plus(b)); break;
        case "-": stack.push(a.minus(b)); break;
        case "*": stack.push(a.times(b)); break;
        case "/":
          if (b.eq(0)) throw new Error("除数不能为零");
          stack.push(a.div(b));
          break;
        default: throw new Error(`未知运算符: ${token}`);
      }
    }
  }
  return stack.pop().toString();
}
src/views/business/inspectionOrder/add.vue
ÎļþÌ«´ó
src/views/business/inspectionOrder/fiberoptic-config-readonly.vue
src/views/business/inspectionOrder/index.vue
@@ -14,14 +14,18 @@
          <el-button size="medium" type="primary" @click="print"
            >标签打印</el-button
          >
          <el-button size="medium" type="primary" @click="playOrder(1)"
          <el-button
            size="medium"
            type="primary"
            @click="playOrder(1)"
            v-hasPermi="['business:order:add']"
            >下单</el-button
          >
        </el-col>
      </el-row>
    </div>
    <basic-container>
      <div class="search" :style="`height: ${more ? 130 : 80}px;`">
      <div class="search" :style="`height: ${more ? 100 : 50}px;`">
        <el-row :gutter="10" style="width: 100%">
          <el-col :span="20" style="display: flex; flex-wrap: wrap">
            <div class="search_thing" style="width: 20%">
@@ -160,7 +164,7 @@
      </div>
    </basic-container>
    <basic-container>
      <div style="width: 100%; height: 100%" v-show="active == 0">
      <div v-show="active == 0">
        <div class="table">
          <ul class="tab">
            <li
@@ -828,11 +832,15 @@
import vueQr from "vue-qr";
import getLodop from "@/utils/lodop";
import Add from "./add.vue";
import { mapGetters } from "vuex";
export default {
  components: {
    limsTable,
    Add,
    vueQr,
  },
  computed: {
    ...mapGetters(["permissions"]),
  },
  data() {
    return {
@@ -1369,16 +1377,21 @@
  beforeDestroy() {
    window.removeEventListener("resize", this.getTableHeight);
  },
  watch: {
    more() {
      this.getTableHeight();
    },
  },
  methods: {
    //获取表格高度
    getTableHeight() {
      const otherHeight = 400; // å…¶ä½™é«˜åº¦
      const tableH = 50; // è·ç¦»é¡µé¢ä¸‹æ–¹çš„高度
      const tableHeightDetil = window.innerHeight - tableH;
      const otherHeight = this.more ? 430 : 380; // å…¶ä½™é«˜åº¦
      const tableBottom = 50; // è·ç¦»é¡µé¢ä¸‹æ–¹çš„高度
      const tableHeightDetil = window.innerHeight - tableBottom;
      if (tableHeightDetil <= 300) {
        this.tableHeight = 200;
      } else {
        this.tableHeight = window.innerHeight - tableH - otherHeight;
        this.tableHeight = window.innerHeight - tableBottom - otherHeight;
      }
    },
    getDictList() {
@@ -1649,9 +1662,8 @@
        this.personList = res.data;
      });
    },
    refreshTable(e) {
      this.$refs["ValueTable"].selectList(e);
      this.queryCount = 0;
    refreshTable() {
      this.getList();
    },
    getTableData(newData) {
      if (newData && newData.length == 1) {
@@ -2204,7 +2216,7 @@
              this.deleteDialogVisible = false;
              this.printLoading = false;
              this.revokeData = [];
              this.refreshTable("page");
              this.refreshTable();
              this.$message.success("撤销成功");
            }
          });
@@ -2252,7 +2264,7 @@
            if (res.code === 200) {
              this.printLoading = false;
              this.deleteDialogVisible = false;
              this.refreshTable("page");
              this.refreshTable();
              this.$message.success("更新成功");
            }
          });
@@ -2307,7 +2319,7 @@
            if (res.code === 200) {
              this.printLoading = false;
              this.deleteDialogVisible = false;
              this.refreshTable("page");
              this.refreshTable();
              this.$message.success("更新成功");
            }
          });
@@ -2391,7 +2403,7 @@
          this.$message.success("修改成功");
          this.upLoad = false;
          this.issuedDialogVisible = false;
          this.refreshTable("page");
          this.refreshTable();
        })
        .catch((e) => {
          this.$message.error("修改失败");
@@ -2409,7 +2421,7 @@
            if (res.code === 200) {
              this.upLoad = false;
              this.quashDialogVisible = false;
              this.refreshTable("page");
              this.refreshTable();
              this.$message.success("更新成功");
            }
          });
@@ -2420,7 +2432,7 @@
            if (res.code === 200) {
              this.upLoad = false;
              this.quashDialogVisible = false;
              this.refreshTable("page");
              this.refreshTable();
              this.$message.success("更新成功");
            }
          });
@@ -2437,9 +2449,13 @@
    },
    // ä¸‹å•
    playOrder(num) {
      this.$router.push({
        name: "addOrder",
        params: {},
      });
      this.active = num;
      this.examine = 0;
      this.refreshTable("page");
      // this.refreshTable();
    },
    handleTab(m, i) {
      this.tabIndex = i;
@@ -2489,9 +2505,6 @@
          this.componentData.tagField.orderType.select = res.data;
        });
    },
    getStyle() {
      return "height: calc(100% - " + (this.more ? "94" : "44") + "px)";
    },
    changeUser() {
      if (this.sonLaboratoryList.length > 0) {
        this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value;
@@ -2509,7 +2522,7 @@
.search {
  background-color: #fff;
  height: 80px;
  height: 50px;
  display: flex;
  align-items: center;
  overflow: hidden;
@@ -2543,7 +2556,7 @@
.tab {
  list-style-type: none;
  display: flex;
  margin-bottom: 12px;
  /* margin-bottom: 12px; */
  padding-inline-start: 0px;
}