| src/layout/components/Navbar.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/router/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/store/modules/user.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/utils/bigEval.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/business/inspectionOrder/add.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/business/inspectionOrder/fiberoptic-config-readonly.vue | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/business/inspectionOrder/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | 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; }