| | |
| | | </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> |
| | | |
| | | <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: { |
| | |
| | | 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", |
| | | }) |
| | | }).catch(() => {}); |
| | | } |
| | | } |
| | | } |
| | | .then(() => { |
| | | this.$store.dispatch("LogOut").then(() => { |
| | | location.href = "/index"; |
| | | }); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | |
| | | 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%ï¼è¦çæ´ä¸ªè§å£ */ |
| | |
| | | |
| | | &.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); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | // å¨æè·¯ç±ï¼åºäºç¨æ·æé卿å»å è½½ |
| | | 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", |
| | |
| | | return new Promise((resolve, reject) => { |
| | | getInfo() |
| | | .then((res) => { |
| | | console.log("store-->",res); |
| | | const user = res.user; |
| | | let avatar = user.avatar || ""; |
| | | if (!isHttp(avatar)) { |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | 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(); |
| | | } |
| | |
| | | <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%"> |
| | |
| | | </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 |
| | |
| | | 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 { |
| | |
| | | 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() { |
| | |
| | | this.personList = res.data; |
| | | }); |
| | | }, |
| | | refreshTable(e) { |
| | | this.$refs["ValueTable"].selectList(e); |
| | | this.queryCount = 0; |
| | | refreshTable() { |
| | | this.getList(); |
| | | }, |
| | | getTableData(newData) { |
| | | if (newData && newData.length == 1) { |
| | |
| | | this.deleteDialogVisible = false; |
| | | this.printLoading = false; |
| | | this.revokeData = []; |
| | | this.refreshTable("page"); |
| | | this.refreshTable(); |
| | | this.$message.success("æ¤éæå"); |
| | | } |
| | | }); |
| | |
| | | if (res.code === 200) { |
| | | this.printLoading = false; |
| | | this.deleteDialogVisible = false; |
| | | this.refreshTable("page"); |
| | | this.refreshTable(); |
| | | this.$message.success("æ´æ°æå"); |
| | | } |
| | | }); |
| | |
| | | if (res.code === 200) { |
| | | this.printLoading = false; |
| | | this.deleteDialogVisible = false; |
| | | this.refreshTable("page"); |
| | | this.refreshTable(); |
| | | this.$message.success("æ´æ°æå"); |
| | | } |
| | | }); |
| | |
| | | this.$message.success("ä¿®æ¹æå"); |
| | | this.upLoad = false; |
| | | this.issuedDialogVisible = false; |
| | | this.refreshTable("page"); |
| | | this.refreshTable(); |
| | | }) |
| | | .catch((e) => { |
| | | this.$message.error("ä¿®æ¹å¤±è´¥"); |
| | |
| | | if (res.code === 200) { |
| | | this.upLoad = false; |
| | | this.quashDialogVisible = false; |
| | | this.refreshTable("page"); |
| | | this.refreshTable(); |
| | | this.$message.success("æ´æ°æå"); |
| | | } |
| | | }); |
| | |
| | | if (res.code === 200) { |
| | | this.upLoad = false; |
| | | this.quashDialogVisible = false; |
| | | this.refreshTable("page"); |
| | | this.refreshTable(); |
| | | this.$message.success("æ´æ°æå"); |
| | | } |
| | | }); |
| | |
| | | }, |
| | | // ä¸å |
| | | 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; |
| | |
| | | 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; |
| | |
| | | |
| | | .search { |
| | | background-color: #fff; |
| | | height: 80px; |
| | | height: 50px; |
| | | display: flex; |
| | | align-items: center; |
| | | overflow: hidden; |
| | |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | | margin-bottom: 12px; |
| | | /* margin-bottom: 12px; */ |
| | | padding-inline-start: 0px; |
| | | } |
| | | |