src/assets/404_images/login-bg.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/404_images/login-form-bg.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/experiment/checkTheReport/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/chart/work/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/experiment/checkTheReport/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/laboratory/measure/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/login/2.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/login/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/assets/404_images/login-bg.png
src/assets/404_images/login-form-bg.png
src/components/experiment/checkTheReport/index.vue
@@ -40,13 +40,15 @@ <td>æ£æµç»æ</td> <td>å项夿</td> </tr> <tr v-for="(item,index) in reportData.products" :key="item"> <tr v-for="(item,index) in arr" :key="index"> <td>{{index+1}}</td> <td>{{item.ipName}}</td> <td>{{item.unit}}</td> <td>{{item.required}}</td> <td>{{item.testValue}}</td> <td>{{item.testState === 1 ? "â" : "X"}}</td> <td > {{isIfState(item.testState) }} </td> </tr> <tr> <td colspan="6">æ£éªç»è®ºï¼{{reportData.type == 1 ? "åæ ¼" : "ä¸åæ ¼"}}</td> @@ -74,7 +76,24 @@ data() { return { logoSrc : require("@/assets/404_images/logo.png"), now: new Date().toLocaleDateString() now: new Date().toLocaleDateString(), arr: [] } }, mounted(){ this.arr = this.reportData.products; if(this.reportData.products.length < 10){ let size = this.reportData.products.length; let num=10-size for(let i=0;i< num;i++){ this.arr.push({ code: null, ipName: "", required: "", testState: null, testValue: "", unit: ""}) } } }, methods:{ @@ -84,6 +103,11 @@ let month = (dt.getMonth() + 1).toString().padStart(2,'0'); let date = dt.getDate().toString().padStart(2,'0'); return `${year}-${month}-${date}`; }, isIfState(val){ if(val===1)return "â" else if(val===null || val=== undefined) return null else return "X" } }, props:["reportData"] @@ -117,7 +141,7 @@ border: 2px solid black; } tr,td,th{ padding: 10px 10px; padding: 15px 10px; } .date-group{ width: 90%; @@ -135,7 +159,7 @@ margin-left: 5%; color: lightgray; text-align: center; margin-top: 250px; margin-top: 300px; } } } src/views/chart/work/index.vue
@@ -90,23 +90,34 @@ }, } }, mounted(){}, mounted(){ this.queryData(); }, methods: { async queryData(){ let date = this.formInline.date; let date = []; let type; if(this.formInline.date == null || this.formInline.date == ""){ let currentDate = new Date(); let year = currentDate.getFullYear(); let month = currentDate.getMonth() + 1; let day = currentDate.getDate(); date.push(year +"-" + month + "-01"); date.push(year +"-" + month + "-" + day); type = 0; }else{ date = this.formInline.date; type = this.formInline.type; } let obj = { startTime : date[0], endTime : date[1], type : this.formInline.type type : type } const dutyMater = await getDutyMater(obj); const dutyTimely = await getDutyTimely(obj); const executeMater = await getExecuteMater(obj); const executeTimely = await getExecuteTimely(obj); console.log("dm",dutyMater.data); console.log("dt",dutyTimely.data); console.log("em",executeMater.data.length); console.log("et",executeTimely.data); this.initLeaderStatiChart("leaderStati",dutyMater.data); this.initLeaderTimelyChart("leaderTimely",dutyTimely.data); this.initTesterStatiChart("testerStati",executeMater.data); src/views/experiment/checkTheReport/index.vue
@@ -214,11 +214,11 @@ async queryReportByRCode(code){ const resp = await getReportData({code:code}); this.reportData = resp.data; this.dialogVisible = true; console.log(this.reportData); }, //æ¥çæ¥åæé® previewFun(row){ this.dialogVisible = true; this.reportType = row.type; this.queryReportByRCode(row.reportCode); }, src/views/laboratory/measure/index.vue
@@ -129,7 +129,7 @@ <Add ref="add" /> </div> <div id="myMOdel" :style="`position: absolute;transition: 1s;top:${mymodelTop}vh; left: 9px; width: 99%; height: 85vh; background-color: #fff;z-index: 20;`"> :style="`position: absolute;transition: 1s;top:${mymodelTop}px; left: 9px; width: 99%; height: 100vh; background-color: #fff;z-index: 20;`"> <el-col :span="10"> <p style="font-size: 13px;padding-left: 40px;">计åä¿¡æ¯</p> </el-col> @@ -338,7 +338,7 @@ createPerson: 'ææè´è´£äºº', createTime: '2021-09-08' }, mymodelTop: -85,//14 mymodelTop: -1000,//14 addTop: -85, planId: 0 } @@ -391,9 +391,9 @@ this.currentPagePlan=1 await this.limitGetPlanMeasureInstrument() }, async handleCurrentChangePllan(num) { this.currentPagePlan = num await this.limitGetPlanMeasureInstrument() handleCurrentChangePllan(num) { this.currentPagePlan = num; this.limitGetPlanMeasureInstrument(); }, addPlan() { this.addTop = 2 @@ -407,9 +407,11 @@ currentPage: this.currentPagePlan, pageSize: this.pageSizePlan } let res = await limitGetPlanMeasureRequest(param) this.totalPlan = res.data.taotal this.measureData = res.data.list const res = await limitGetPlanMeasureRequest(param); console.log(res.data.total); // this.totalPlan = res.data.taotal; this.measureData = res.data.list; console.log(this.totalPlan); }, lookPalan(id) { this.planId = id @@ -437,7 +439,7 @@ }, combackLookPlan() { this.lookVisible = false this.mymodelTop = -85 this.mymodelTop = -1000 this.selectInfoBtn=false }, blurSearch() { @@ -520,7 +522,7 @@ } </script> <style scoped> <style scoped lang="scss"> .top-bar { margin: -25px -15px; background: #fff; src/views/login/2.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,214 @@ <template> <div class="login-container"> <el-form ref="loginForm" :model="loginForm" class="login-form" auto-complete="on" label-position="left"> <!-- <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left"> --> <!-- form è¡¨åæ ¡éª --> <div class="title-container"> <h3 class="title">ç» å½</h3> </div> <el-form-item prop="username"> <span class="svg-container"> <svg-icon icon-class="user" /> </span> <el-input ref="username" v-model="loginForm.username" placeholder="Username" name="username" type="text" tabindex="1" auto-complete="on" /> </el-form-item> <el-form-item prop="password"> <span class="svg-container"> <svg-icon icon-class="password" /> </span> <el-input :key="passwordType" ref="password" v-model="loginForm.password" :type="passwordType" placeholder="Password" name="password" tabindex="2" auto-complete="on" @keyup.enter.native="handleLogin" /> <span class="show-pwd" @click="showPwd"> <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" /> </span> </el-form-item> <el-button :loading="loading" type="primary" style="width:100%;margin-bottom:30px;" @click.native.prevent="handleLogin">Login</el-button> <!-- <div class="tips"> <span style="margin-right:20px;">username: admin</span> <span> password: any</span> </div> --> </el-form> </div> </template> <script> import { validUsername } from '@/utils/validate' import { get } from "@/api/util/requestUtil.js" export default { name: 'Login', data() { const validateUsername = (rule, value, callback) => { if (!validUsername(value)) { callback(new Error('Please enter the correct user name')) } else { callback() } } const validatePassword = (rule, value, callback) => { if (value.length < 6) { callback(new Error('The password can not be less than 6 digits')) } else { callback() } } return { loginForm: { username: '123456', password: '123456' }, loginRules: { username: [{ required: true, trigger: 'blur', validator: validateUsername }], password: [{ required: true, trigger: 'blur', validator: validatePassword }] }, loading: false, passwordType: 'password', redirect: undefined } }, watch: { $route: { handler: function (route) { this.redirect = route.query && route.query.redirect }, immediate: true } }, methods: { showPwd() { if (this.passwordType === 'password') { this.passwordType = '' } else { this.passwordType = 'password' } this.$nextTick(() => { this.$refs.password.focus() }) }, handleLogin() { } } } </script> <style lang="scss"> /* ä¿®å¤input èæ¯ä¸åè° åå æ åè² */ /* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */ $bg: #283443; $light_gray: #fff; $cursor: #fff; @supports (-webkit-mask: none) and (not (cater-color: $cursor)) { .login-container .el-input input { color: $cursor; } } /* reset element-ui css */ .login-container { .el-input { display: inline-block; height: 47px; width: 85%; input { background: transparent; border: 0px; -webkit-appearance: none; border-radius: 0px; padding: 12px 5px 12px 15px; color: $light_gray; height: 47px; caret-color: $cursor; &:-webkit-autofill { box-shadow: 0 0 0px 1000px $bg inset !important; -webkit-text-fill-color: $cursor !important; } } } .el-form-item { border: 1px solid rgba(255, 255, 255, 0.1); background: rgba(0, 0, 0, 0.1); border-radius: 5px; color: #454545; } } </style> <style lang="scss" scoped> $bg: #2d3a4b; $dark_gray: #889aa4; $light_gray: #eee; .login-container { min-height: 100%; width: 100%; background: url('../../assets/404_images/backgroud.png') no-repeat; background-size: 100vw 100vh; overflow: hidden; .login-form { position: relative; width: 520px; max-width: 100%; padding: 0 35px; margin: 0 auto; overflow: hidden; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .tips { font-size: 14px; color: #fff; margin-bottom: 10px; span { &:first-of-type { margin-right: 16px; } } } .svg-container { padding: 6px 5px 6px 15px; color: $dark_gray; vertical-align: middle; width: 30px; display: inline-block; } .title-container { position: relative; .title { font-size: 26px; color: $light_gray; margin: 0px auto 40px auto; text-align: center; font-weight: bold; } } .show-pwd { position: absolute; right: 10px; top: 7px; font-size: 16px; color: $dark_gray; cursor: pointer; user-select: none; } } </style> src/views/login/index.vue
@@ -1,73 +1,188 @@ <style scoped> .enter { width: 100vw; height: 100vh; display: flex; background-image: url("../../assets/404_images/login-form-bg.png"); background-size: 100% 100%; } .left { width: calc(100% - 500px); height: 100%; overflow: hidden; } .left img { width: 100%; min-height: 100%; } .right { width: 600px; overflow-y: auto; display: flex; align-items: center; justify-content: center; } .title_big { color: #004EA2; font-size: 40px; margin-bottom: 8px; } .title_small { color: #004EA2; font-size: 24px; } .elform { margin-top: 50px; } .sao { font-size: 14px; color: #004EA2; width: 100%; text-align: right; } </style> <style> .enter .el-form-item__label { font-size: 20px; color: #333; line-height: 48px; } .enter .el-form-item { margin-bottom: 30px; } .enter .el-input__inner { height: 48px; } .enter .el-button { background-color: #1763EB; color: #fff; border: 0; border-radius: 16px; width: 100%; height: 48px; } .enter input::-webkit-input-placeholder, .enter textarea::-webkit-input-placeholder { font-size: 14px; } .enter input::-moz-placeholder, .enter textarea::-moz-placeholder { font-size: 10px; } .enter input:-ms-input-placeholder, .enter textarea:-ms-input-placeholder { font-size: 10px; } .enter input:-moz-placeholder, .enter textarea:-moz-placeholder { font-size: 10px; } .copyright{ width: 100%; position: relative; top: 140px; } .copyright p{ padding: 2px 0px; font-size: 5px; text-align: center; color: lightgray; } .copyright >p:nth-child(3){ text-decoration: underline; } </style> <template> <div class="login-container"> <el-form ref="loginForm" :model="loginForm" class="login-form" auto-complete="on" label-position="left"> <!-- <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left"> --> <!-- form è¡¨åæ ¡éª --> <div class="title-container"> <h3 class="title">ç» å½</h3> <div class="enter"> <div class="left"> <img src="@/assets/404_images/login-bg.png"> </div> <div class="right"> <div style="width: calc(100% - 100px);"> <div class="title_big">æ¬¢è¿æ¨ç»å½ï¼</div> <div class="title_small">è£ å¤çµç¼LIMSå®éªå®¤ç®¡çç³»ç»</div> <el-form :model="ruleForm" :rules="rules" ref="ruleForm" class="elform" :hide-required-asterisk="true"> <el-form-item label="ç¨æ·å" prop="username"> <el-input v-model="ruleForm.username" placeholder="请è¾å ¥è´¦å·" clearable></el-input> </el-form-item> <el-form-item label="å¯ç " prop="password"> <el-input v-model="ruleForm.password" placeholder="请è¾å ¥å¯ç " clearable show-password></el-input> </el-form-item> <el-form-item style="margin-bottom: 8px;"> <el-col :span="12"><el-checkbox v-model="ruleForm.remumberme">è®°ä½å¯ç </el-checkbox></el-col> <el-col :span="12" style="text-align: right;"><el-checkbox v-model="ruleForm.autoenter">èªå¨ç»å½</el-checkbox></el-col> </el-form-item> <el-form-item style="margin-bottom: 15px;"> <el-button type="primary" @click="submitForm('ruleForm')" :loading="btnload">ç«å³ç»å½</el-button> </el-form-item> </el-form> <div class="sao">微信æ«ç ç»å½</div> <div class="copyright"> <p>æ±ä¸éå ·è®¾å¤æéå ¬å¸</p> <p>çæææCopyright Â©ï¸ 2012-2021 ZTT.All Rights Reserved.</p> <p>[èICPå¤10047815å·-1]</p> </div> </div> <el-form-item prop="username"> <span class="svg-container"> <svg-icon icon-class="user" /> </span> <el-input ref="username" v-model="loginForm.username" placeholder="Username" name="username" type="text" tabindex="1" auto-complete="on" /> </el-form-item> <el-form-item prop="password"> <span class="svg-container"> <svg-icon icon-class="password" /> </span> <el-input :key="passwordType" ref="password" v-model="loginForm.password" :type="passwordType" placeholder="Password" name="password" tabindex="2" auto-complete="on" @keyup.enter.native="handleLogin" /> <span class="show-pwd" @click="showPwd"> <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" /> </span> </el-form-item> <el-button :loading="loading" type="primary" style="width:100%;margin-bottom:30px;" @click.native.prevent="handleLogin">Login</el-button> <!-- <div class="tips"> <span style="margin-right:20px;">username: admin</span> <span> password: any</span> </div> --> </el-form> </div> </div> </template> <script> import { validUsername } from '@/utils/validate' import { get } from "@/api/util/requestUtil.js" export default { name: 'Login', data() { const validateUsername = (rule, value, callback) => { if (!validUsername(value)) { callback(new Error('Please enter the correct user name')) } else { callback() } } const validatePassword = (rule, value, callback) => { if (value.length < 6) { callback(new Error('The password can not be less than 6 digits')) } else { callback() } } return { loginForm: { username: '123456', password: '123456' ruleForm: { username: "admin", password: "admin", remumberme: false, autoenter: false }, loginRules: { username: [{ required: true, trigger: 'blur', validator: validateUsername }], password: [{ required: true, trigger: 'blur', validator: validatePassword }] rules: { username: [{ required: true, message: '请è¾å ¥è´¦å·', trigger: ['blur', 'change'] }], password: [{ required: true, message: '请è¾å ¥å¯ç ', trigger: ['blur', 'change'] }] }, loading: false, passwordType: 'password', btnload: false, redirect: undefined } }, mounted() { this.ruleForm.remumberme = JSON.parse(localStorage.getItem('rememberme'))==null?false:JSON.parse(localStorage.getItem('rememberme')) this.ruleForm.autoenter = JSON.parse(localStorage.getItem('autoenter'))==null?false:JSON.parse(localStorage.getItem('autoenter')) var user = JSON.parse(localStorage.getItem('user')) if (user != null && user != undefined) { if (this.ruleForm.remumberme==true) { this.ruleForm.username = user.username this.ruleForm.password = user.password } if (this.ruleForm.autoenter==true) { this.submitForm('ruleForm') } } }, watch: { @@ -79,25 +194,15 @@ } }, methods: { showPwd() { if (this.passwordType === 'password') { this.passwordType = '' } else { this.passwordType = 'password' } this.$nextTick(() => { this.$refs.password.focus() }) }, handleLogin() { this.$refs.loginForm.validate(valid => { submitForm(formName) { this.btnload = true this.$refs[formName].validate((valid) => { if (valid) { this.loading = true this.$store.dispatch('user/login', this.loginForm).then(async () => { this.$store.dispatch('user/login', this.ruleForm).then(async () => { await get(this.$url.info).then(res => { this.user = res.data sessionStorage.setItem("user", JSON.stringify(res.data)) sessionStorage.setItem("flushPage",0) this.user = res.data; sessionStorage.setItem("user", JSON.stringify(res.data)); sessionStorage.setItem("flushPage",0); }) this.$router.push({ path: this.redirect || '/' }) this.loading = false @@ -105,128 +210,12 @@ this.loading = false }) } else { console.log('ç»å½å¤±è´¥!') return false this.btnload = false this.$message.error('ç»å½å¤±è´¥ï¼') return false; } }) } }, } } </script> <style lang="scss"> /* ä¿®å¤input èæ¯ä¸åè° åå æ åè² */ /* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */ $bg: #283443; $light_gray: #fff; $cursor: #fff; @supports (-webkit-mask: none) and (not (cater-color: $cursor)) { .login-container .el-input input { color: $cursor; } } /* reset element-ui css */ .login-container { .el-input { display: inline-block; height: 47px; width: 85%; input { background: transparent; border: 0px; -webkit-appearance: none; border-radius: 0px; padding: 12px 5px 12px 15px; color: $light_gray; height: 47px; caret-color: $cursor; &:-webkit-autofill { box-shadow: 0 0 0px 1000px $bg inset !important; -webkit-text-fill-color: $cursor !important; } } } .el-form-item { border: 1px solid rgba(255, 255, 255, 0.1); background: rgba(0, 0, 0, 0.1); border-radius: 5px; color: #454545; } } </style> <style lang="scss" scoped> $bg: #2d3a4b; $dark_gray: #889aa4; $light_gray: #eee; .login-container { min-height: 100%; width: 100%; background: url('../../assets/404_images/backgroud.png') no-repeat; background-size: 100vw 100vh; overflow: hidden; .login-form { position: relative; width: 520px; max-width: 100%; padding: 0 35px; margin: 0 auto; overflow: hidden; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .tips { font-size: 14px; color: #fff; margin-bottom: 10px; span { &:first-of-type { margin-right: 16px; } } } .svg-container { padding: 6px 5px 6px 15px; color: $dark_gray; vertical-align: middle; width: 30px; display: inline-block; } .title-container { position: relative; .title { font-size: 26px; color: $light_gray; margin: 0px auto 40px auto; text-align: center; font-weight: bold; } } .show-pwd { position: absolute; right: 10px; top: 7px; font-size: 16px; color: $dark_gray; cursor: pointer; user-select: none; } } </style> </script>