| | |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <!-- <meta name="viewport" content="width=device-width,initial-scale=1.0"> --> |
| | | <!--<link rel="icon" href="<%= BASE_URL %>logo.png">--> |
| | | <title>唐山烟草配送管理后台</title> |
| | | <title>安全配送管理后台</title> |
| | | <meta name="keywords" |
| | | content=""> |
| | | <meta name="description" |
| | |
| | | <!--<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/mapbox-gl@2.3.0/dist/mapbox-gl.css">--> |
| | | <!--<link rel="stylesheet"--> |
| | | <!--href="https://cdn.jsdelivr.net/npm/@mapbox/mapbox-gl-geocoder@4.7.1/dist/mapbox-gl-geocoder.css">--> |
| | | |
| | | <script> |
| | | (function () { |
| | | var hm = document.createElement("script"); |
| | | hm.src = "https://hm.baidu.com/hm.js?64e52d9ed8f5acc3eb7d60058e2fb7ab"; |
| | | var s = document.getElementsByTagName("script")[0]; |
| | | s.parentNode.insertBefore(hm, s); |
| | | })(); |
| | | </script> |
| | | <style> |
| | | .page-loading-wrap { |
| | | padding: 120px; |
| | |
| | | <!--v-show="!shrink && menuTheme == 'light' && mainTheme != 'darkMode'"--> |
| | | <!--src="@/assets/yancao.png"--> |
| | | <!--/>--> |
| | | <img src="@/assets/yancao.png"/> |
| | | <!--<img src="@/assets/yancao.png"/>--> |
| | | 菜单栏 |
| | | </div> |
| | | </shrinkable-menu> |
| | | </div> |
| | |
| | | </FormItem> |
| | | <FormItem label="新密码" prop="newPass"> |
| | | <SetPassword |
| | | placeholder="请输入新密码,长度为6-20个字符" |
| | | placeholder="请输入新密码,长度为8-20个字符" |
| | | v-model="form.newPass" |
| | | @on-change="changeInputPass" |
| | | /> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getOtherSet } from "@/api/index"; |
| | | import SetPassword from "@/views/my-components/xboot/set-password"; |
| | | import { changePass } from "@/api/index"; |
| | | export default { |
| | |
| | | trigger: "change", |
| | | }, |
| | | { |
| | | min: 6, |
| | | min: 8, |
| | | message: "请至少输入6个字符", |
| | | trigger: "blur", |
| | | }, |
| | |
| | | this.strength = strength; |
| | | }, |
| | | submit() { |
| | | if(this.strength!='强'){ |
| | | this.$Message.error("请使用强密码包含数字,大小写字母,特殊字符,且不少于8位"); |
| | | return; |
| | | } |
| | | let params = { |
| | | password: this.form.oldPass, |
| | | newPass: this.form.newPass, |
| | |
| | | this.visible = false; |
| | | this.$Modal.success({ |
| | | title: "修改密码成功", |
| | | content: "修改密码成功,请保管好您的新账号密码", |
| | | content: "为了账号安全,系统稍后将强制退出,请用新密码重新登陆。", |
| | | }); |
| | | } |
| | | }); |
| | |
| | | <template> |
| | | <div> |
| | | <div v-show="currNav == 'xboot'" class="home"> |
| | | <a :href="this.token" target="_blank">唐山烟草大屏地址</a> |
| | | <a :href="this.token" target="_blank">大屏地址</a> |
| | | <!--<Row :gutter="10">--> |
| | | <!--<!– 左上侧 用户信息及github链接 –>--> |
| | | <!--<Col :xs="24" :sm="24" :lg="24" :xl="8">--> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getStore } from '../../libs/storage'; |
| | | import { ipInfo, getNotice } from "@/api/index"; |
| | | import visitVolume from "./components/visitVolume.vue"; |
| | | import visitSeparation from "./components/visitSeparation.vue"; |
| | |
| | | import Cookies from "js-cookie"; |
| | | // import "gitalk/dist/gitalk.css"; |
| | | import Gitalk from "gitalk"; |
| | | |
| | | |
| | | export default { |
| | | name: "home", |
| | |
| | | } |
| | | }); |
| | | }, |
| | | toCode(str) { //加密字符串 |
| | | //定义密钥,36个字母和数字 |
| | | var key = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; |
| | | var st = key.length; //获取密钥的长度 |
| | | var a = key.split(""); //把密钥字符串转换为字符数组 |
| | | var s = "",b, b1, b2, b3; //定义临时变量 |
| | | for (var i = 0; i <str.length; i ++) { //遍历字符串 |
| | | b = str.charCodeAt(i); //逐个提取每个字符,并获取Unicode编码值 |
| | | b1 = b % st; //求Unicode编码值得余数 |
| | | b = (b - b1) / st; //求最大倍数 |
| | | b2 = b % st; //求最大倍数的于是 |
| | | b = (b - b2) / st; //求最大倍数 |
| | | b3 = b % st; //求最大倍数的余数 |
| | | s += a[b3] + a[b2] + a[b1]; //根据余数值映射到密钥中对应下标位置的字符 |
| | | } |
| | | return s; //返回这些映射的字符 |
| | | } |
| | | }, |
| | | mounted() { |
| | | //this.token = 'http://111.63.178.115:9093?token='+new Date().getTime(); |
| | | this.token = 'http://localhost:8080?token='+new Date().getTime(); |
| | | //this.token = 'http://localhost:8080' |
| | | this.token = 'http://111.63.178.115:9093?token=$vj$xCShfaQRUQlF8lqL1lwWi2auOrkLfkoecRuDWiJXlTnSg1mh6BODfjieo3ncsosjiocew'; |
| | | //alert(this.toCode('管理员')) |
| | | //this.token = 'http://localhost:8080?token='+this.toCode('管理员'); |
| | | //this.token = 'http://localhost:8080?token=$vj$xCShfaQRUQlF8lqL1lwWi2auOrkLfkoecRuDWiJXlTnSg1mh6BODfjieo3ncsosjiocew'; |
| | | // this.init(); |
| | | // // 通知 |
| | | // let noticeFlag = "noticeShowed"; |
| | |
| | | <Col class="content"> |
| | | <div> |
| | | <Header /> |
| | | <div v-if="!socialLogining"> |
| | | <div v-if="!socialLogining" style="margin-top: 150px"> |
| | | <Form |
| | | ref="usernameLoginForm" |
| | | :model="form" |
| | |
| | | class="form" |
| | | v-if="tabName == 'username'" |
| | | > |
| | | <FormItem> |
| | | <h1 style="margin-left: 40%;">登 陆</h1> |
| | | </FormItem> |
| | | <FormItem prop="username"> |
| | | <Input |
| | | v-model="form.username" |
| | |
| | | autocomplete="off" |
| | | /> |
| | | </FormItem> |
| | | <!--<FormItem prop="imgCode">--> |
| | | <!--<Row--> |
| | | <!--type="flex"--> |
| | | <!--justify="space-between"--> |
| | | <!--style="align-items: center; overflow: hidden"--> |
| | | <!-->--> |
| | | <!--<Input--> |
| | | <!--v-model="form.imgCode"--> |
| | | <!--size="large"--> |
| | | <!--clearable--> |
| | | <!--placeholder="请输入图片验证码"--> |
| | | <!--:maxlength="10"--> |
| | | <!--class="input-verify"--> |
| | | <!--/>--> |
| | | <!--<div--> |
| | | <!--class="code-image"--> |
| | | <!--style="position: relative; font-size: 12px"--> |
| | | <!-->--> |
| | | <!--<Spin v-if="loadingCaptcha" fix></Spin>--> |
| | | <!--<img--> |
| | | <!--:src="captchaImg"--> |
| | | <!--@click="getCaptchaImg"--> |
| | | <!--alt="加载验证码失败"--> |
| | | <!--style="width: 110px; cursor: pointer; display: block"--> |
| | | <!--/>--> |
| | | <!--</div>--> |
| | | <!--</Row>--> |
| | | <!--</FormItem>--> |
| | | <FormItem prop="imgCode"> |
| | | <Row |
| | | type="flex" |
| | | justify="space-between" |
| | | style="align-items: center; overflow: hidden" |
| | | > |
| | | <Input |
| | | v-model="form.imgCode" |
| | | size="large" |
| | | clearable |
| | | placeholder="请输入图片验证码" |
| | | :maxlength="10" |
| | | class="input-verify" |
| | | /> |
| | | <div |
| | | class="code-image" |
| | | style="position: relative; font-size: 12px" |
| | | > |
| | | <Spin v-if="loadingCaptcha" fix></Spin> |
| | | <img |
| | | :src="captchaImg" |
| | | @click="getCaptchaImg" |
| | | alt="加载验证码失败" |
| | | style="width: 110px; cursor: pointer; display: block" |
| | | /> |
| | | </div> |
| | | </Row> |
| | | </FormItem> |
| | | </Form> |
| | | |
| | | <!--<Row justify="space-between" align="middle">--> |
| | |
| | | <!--</VueFurcateTree>--> |
| | | |
| | | <!--</div>--> |
| | | |
| | | |
| | | </template> |
| | | |
| | |
| | | } |
| | | ], |
| | | showMore: false, |
| | | code:"", |
| | | captchaId: "", |
| | | captchaImg: "", |
| | | loadingCaptcha: true, |
| | |
| | | password: "", |
| | | code: "", |
| | | }, |
| | | showChangePass: false, |
| | | }; |
| | | }, |
| | | methods: { |
| | |
| | | initCaptcha().then((res) => { |
| | | this.loadingCaptcha = false; |
| | | if (res.success) { |
| | | this.captchaId = res.result; |
| | | this.code = res.result.code; |
| | | this.captchaId = res.result.captchaId; |
| | | this.captchaImg = drawCodeImage + this.captchaId; |
| | | } |
| | | }); |
| | |
| | | }, |
| | | submitLogin() { |
| | | if (this.tabName == "username") { |
| | | if(this.code.toUpperCase()!=this.form.imgCode.toUpperCase()){ |
| | | this.$Message.error("验证码错误"); |
| | | this.getCaptchaImg(); |
| | | return |
| | | } |
| | | this.loading = true; |
| | | login({ |
| | | username: this.form.username, |
| | |
| | | }); |
| | | }, |
| | | test() { |
| | | this.$Notice.info({ |
| | | title: "测试体验账号", |
| | | desc: "账号:test或test2<br>密码:123456", |
| | | }); |
| | | // this.$Notice.info({ |
| | | // title: "测试体验账号", |
| | | // desc: "账号:test或test2<br>密码:123456", |
| | | // }); |
| | | }, |
| | | }, |
| | | mounted() { |
| | | //this.showNotice(); |
| | | this.relatedLogin(); |
| | | //this.getCaptchaImg(); |
| | | this.getCaptchaImg(); |
| | | }, |
| | | }; |
| | | </script> |
| | |
| | | <template> |
| | | <div> |
| | | <div class="header"> |
| | | <img |
| | | src="@/assets/yancao.png" |
| | | width="220px" |
| | | v-if="mainTheme == 'darkMode'" |
| | | /> |
| | | <img src="@/assets/yancao.png" width="320px" v-else /> |
| | | <!--<div class="description">{{ 唐山烟草 }}</div>--> |
| | | <!--<img--> |
| | | <!--src="@/assets/keji.jpeg"--> |
| | | <!--width="320px"--> |
| | | <!--v-if="mainTheme == 'darkMode'"--> |
| | | <!--/>--> |
| | | <!--<img src="@/assets/keji.jpeg" width="420px" v-else />--> |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | data() { |
| | | return { |
| | | showChangePass: false, |
| | | flag:0, |
| | | }; |
| | | }, |
| | | methods: { |
| | | init() {}, |
| | | init() { |
| | | let psw = this.getStore("userInfo"); |
| | | psw = JSON.parse(psw).description; |
| | | this.checkStrengthValue(psw); |
| | | }, |
| | | checkStrengthValue(v) { |
| | | // 评级制判断密码强度 最高5 |
| | | let grade = 0; |
| | | if (/\d/.test(v)) { |
| | | grade++; //数字 |
| | | } |
| | | if (/[a-z]/.test(v)) { |
| | | grade++; //小写 |
| | | } |
| | | if (/[A-Z]/.test(v)) { |
| | | grade++; //大写 |
| | | } |
| | | if (/\W/.test(v)) { |
| | | grade++; //特殊字符 |
| | | } |
| | | if (v.length >= 8) { |
| | | grade++; |
| | | } |
| | | if(grade<5){ |
| | | this.showChangePass = true; |
| | | this.flag++; |
| | | if(this.flag>1){ |
| | | this.handleClickUserDropdown("loginout"); |
| | | } |
| | | setInterval(() => { |
| | | this.init(); |
| | | }, 1000*60) |
| | | } |
| | | }, |
| | | handleClickUserDropdown(name) { |
| | | if (name == "ownSpace") { |
| | | util.openNewPage(this, "ownspace_index"); |
| | |
| | | hide-info |
| | | style="margin: 13px 0;" |
| | | /> |
| | | <br />请至少输入 6 个字符。请不要使 |
| | | <br />请至少输入 8 个字符。请不要使 |
| | | <br />用容易被猜到的密码。 |
| | | </div> |
| | | </Poptip> |
| | |
| | | if (/\W/.test(v)) { |
| | | grade++; //特殊字符 |
| | | } |
| | | if (v.length >= 10) { |
| | | if (v.length >= 8) { |
| | | grade++; |
| | | } |
| | | this.grade = grade; |
| | |
| | | if(this.areaForm.description==undefined){ |
| | | this.areaForm.description=""; |
| | | } |
| | | if(this.areaForm.carId==undefined){ |
| | | this.areaForm.carId=""; |
| | | } |
| | | this.$refs.areaForm.validate((valid) => { |
| | | if (valid) { |
| | | if (this.modalType == 0) { |
| | |
| | | port: 9999, |
| | | proxy: { |
| | | '/xboot': { |
| | | target: 'http://127.0.0.1:8888', // 请求本地 需要xboot后端项目 |
| | | ws: true |
| | | target: 'http://127.0.0.1:9091', // 请求本地 需要xboot后端项目 |
| | | //target: 'http://192.168.0.162:8888', // 请求本地 需要xboot后端项目 |
| | | //target: 'http://111.63.178.115:9091', |
| | | ws: true, |
| | | changeOrigin:true, |
| | | pathRewrite:{ |
| | | '/api':'' |
| | | } |
| | | }, |
| | | '/foo': { |
| | | target: '<other_url>' |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | // 打包时不生成.map文件 避免看到源码 |
| | | productionSourceMap: false, |
| | | // 部署优化 |
| | | configureWebpack: { |
| | | // 使用CDN |
| | | externals: { |
| | | vue: 'Vue', |
| | | 'vue-i18n': 'VueI18n', |
| | | axios: 'axios', |
| | | 'vue-router': 'VueRouter', |
| | | vuex: 'Vuex', |
| | | 'view-design': 'iview', |
| | | echarts: 'echarts', |
| | | apexcharts: 'ApexCharts', |
| | | 'vue-apexcharts': 'VueApexCharts', |
| | | xlsx: 'XLSX', |
| | | dplayer: 'DPlayer', |
| | | 'print-js': 'printJS', |
| | | html2canvas: 'html2canvas', |
| | | 'vue-json-pretty': 'VueJsonPretty', |
| | | 'vue-lazyload': 'VueLazyload', |
| | | gitalk: 'Gitalk', |
| | | 'js-cookie': 'Cookies', |
| | | wangEditor: 'wangEditor', |
| | | quill: 'Quill', |
| | | stompjs: 'Stomp', |
| | | 'sockjs-client': 'SockJS', |
| | | vuedraggable: 'vuedraggable', |
| | | viewerjs: 'Viewer' |
| | | }, |
| | | // externals: { |
| | | // vue: 'Vue', |
| | | // 'vue-i18n': 'VueI18n', |
| | | // axios: 'axios', |
| | | // 'vue-router': 'VueRouter', |
| | | // vuex: 'Vuex', |
| | | // 'view-design': 'iview', |
| | | // echarts: 'echarts', |
| | | // apexcharts: 'ApexCharts', |
| | | // 'vue-apexcharts': 'VueApexCharts', |
| | | // xlsx: 'XLSX', |
| | | // dplayer: 'DPlayer', |
| | | // 'print-js': 'printJS', |
| | | // html2canvas: 'html2canvas', |
| | | // 'vue-json-pretty': 'VueJsonPretty', |
| | | // 'vue-lazyload': 'VueLazyload', |
| | | // gitalk: 'Gitalk', |
| | | // 'js-cookie': 'Cookies', |
| | | // wangEditor: 'wangEditor', |
| | | // quill: 'Quill', |
| | | // stompjs: 'Stomp', |
| | | // 'sockjs-client': 'SockJS', |
| | | // vuedraggable: 'vuedraggable', |
| | | // viewerjs: 'Viewer' |
| | | // }, |
| | | plugins: [ |
| | | // GZIP压缩 |
| | | new CompressionPlugin({ |