style:权限
Showing
4 changed files
with
82 additions
and
45 deletions
| ... | @@ -7,36 +7,36 @@ | ... | @@ -7,36 +7,36 @@ |
| 7 | </template> | 7 | </template> |
| 8 | 8 | ||
| 9 | <script> | 9 | <script> |
| 10 | import vuePhotoZoomPro from '@/components/PhotoZoom/vue-photo-zoom-pro' | 10 | import vuePhotoZoomPro from '@/components/PhotoZoom/vue-photo-zoom-pro' |
| 11 | export default { | 11 | export default { |
| 12 | name: 'PicZoom', | 12 | name: 'PicZoom', |
| 13 | components: { vuePhotoZoomPro }, | 13 | components: { vuePhotoZoomPro }, |
| 14 | data () { | 14 | data () { |
| 15 | return { | 15 | return { |
| 16 | type: "square", | 16 | type: "square", |
| 17 | showType: false, | 17 | showType: false, |
| 18 | } | 18 | } |
| 19 | }, | ||
| 20 | props: { | ||
| 21 | url: { | ||
| 22 | type: String, | ||
| 23 | required: true, | ||
| 24 | // default: require('@/assets/vehicle_img/blank_vehicle.jpg') | ||
| 25 | }, | 19 | }, |
| 26 | bigWidth: { | 20 | props: { |
| 27 | type: Number, | 21 | url: { |
| 28 | required: true, | 22 | type: String, |
| 29 | default: 168 | 23 | required: true, |
| 24 | // default: require('@/assets/vehicle_img/blank_vehicle.jpg') | ||
| 25 | }, | ||
| 26 | bigWidth: { | ||
| 27 | type: Number, | ||
| 28 | required: true, | ||
| 29 | default: 168 | ||
| 30 | }, | ||
| 31 | scale: { | ||
| 32 | type: Number, | ||
| 33 | required: true, | ||
| 34 | default: 2 | ||
| 35 | }, | ||
| 36 | overlayStyle: { | ||
| 37 | type: String, | ||
| 38 | default: 'width:100%;height:100%' | ||
| 39 | } | ||
| 30 | }, | 40 | }, |
| 31 | scale: { | 41 | } |
| 32 | type: Number, | ||
| 33 | required: true, | ||
| 34 | default: 2 | ||
| 35 | }, | ||
| 36 | overlayStyle: { | ||
| 37 | type: String, | ||
| 38 | default: 'width:100%;height:100%' | ||
| 39 | } | ||
| 40 | }, | ||
| 41 | } | ||
| 42 | </script> | 42 | </script> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| 1 | /* | 1 | /* |
| 2 | * @Description: 项目权限 | 2 | * @Description: 项目权限 |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-06-02 10:44:17 | 4 | * @LastEditTime: 2023-06-12 17:22:02 |
| 5 | */ | 5 | */ |
| 6 | import Vue from 'vue' | 6 | import Vue from 'vue' |
| 7 | import axios from 'axios' | 7 | import axios from 'axios' |
| 8 | import router from './router' | 8 | import router from './router' |
| 9 | import store from './store' | 9 | import store from './store' |
| 10 | import Cookies from 'js-cookie' | 10 | import Cookies from 'js-cookie' |
| 11 | import {getMenuInfo} from '@/api/user' | 11 | import { getMenuInfo } from '@/api/user' |
| 12 | import {getUrlParam} from '@/utils/operation' | 12 | import { getUrlParam } from '@/utils/operation' |
| 13 | import NProgress from 'nprogress' // progress bar | 13 | import NProgress from 'nprogress' // progress bar |
| 14 | import 'nprogress/nprogress.css' // progress bar style | 14 | import 'nprogress/nprogress.css' // progress bar style |
| 15 | import getPageTitle from '@/utils/get-page-title' | 15 | import getPageTitle from '@/utils/get-page-title' |
| 16 | 16 | ||
| 17 | NProgress.configure({showSpinner: false}) // NProgress Configuration | 17 | NProgress.configure({ showSpinner: false }) // NProgress Configuration |
| 18 | 18 | ||
| 19 | router.beforeEach(async (to, from, next) => { | 19 | router.beforeEach(async (to, from, next) => { |
| 20 | Vue.prototype.$currentRoute = to | 20 | Vue.prototype.$currentRoute = to |
| ... | @@ -23,7 +23,7 @@ router.beforeEach(async (to, from, next) => { | ... | @@ -23,7 +23,7 @@ router.beforeEach(async (to, from, next) => { |
| 23 | let hasAddDict = store.state.dict.addDict | 23 | let hasAddDict = store.state.dict.addDict |
| 24 | let hasAddRoute = store.state.permission.addRoutes | 24 | let hasAddRoute = store.state.permission.addRoutes |
| 25 | // cas操作 | 25 | // cas操作 |
| 26 | const token = localStorage.getItem("token") || Cookies.get('ACCESS_TOKEN'); | 26 | const token = localStorage.getItem("token") || Cookies.get('token'); |
| 27 | if (to.path === '/login') { | 27 | if (to.path === '/login') { |
| 28 | if (token) { | 28 | if (token) { |
| 29 | next('/') | 29 | next('/') |
| ... | @@ -46,7 +46,7 @@ router.beforeEach(async (to, from, next) => { | ... | @@ -46,7 +46,7 @@ router.beforeEach(async (to, from, next) => { |
| 46 | if (process.env.NODE_ENV === 'development') { | 46 | if (process.env.NODE_ENV === 'development') { |
| 47 | localStorage.setItem('token', res.data.content.accessToken) | 47 | localStorage.setItem('token', res.data.content.accessToken) |
| 48 | } else { | 48 | } else { |
| 49 | Cookies.set('ACCESS_TOKEN', res.data.content.accessToken) | 49 | Cookies.set('token', res.data.content.accessToken) |
| 50 | } | 50 | } |
| 51 | window.location.href = localStorage.getItem('location') | 51 | window.location.href = localStorage.getItem('location') |
| 52 | 52 | ||
| ... | @@ -61,7 +61,7 @@ router.beforeEach(async (to, from, next) => { | ... | @@ -61,7 +61,7 @@ router.beforeEach(async (to, from, next) => { |
| 61 | permission() | 61 | permission() |
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | async function permission() { | 64 | async function permission () { |
| 65 | if (!hasAddDict) { | 65 | if (!hasAddDict) { |
| 66 | store.dispatch('dict/generateDic') | 66 | store.dispatch('dict/generateDic') |
| 67 | } | 67 | } |
| ... | @@ -69,14 +69,14 @@ router.beforeEach(async (to, from, next) => { | ... | @@ -69,14 +69,14 @@ router.beforeEach(async (to, from, next) => { |
| 69 | next() | 69 | next() |
| 70 | // next({ ...to, replace: true }) | 70 | // next({ ...to, replace: true }) |
| 71 | } else { | 71 | } else { |
| 72 | const {result: getMenuData} = await getMenuInfo() | 72 | const { result: getMenuData } = await getMenuInfo() |
| 73 | const accessRoutes = await store.dispatch('permission/generateRoutes', getMenuData) | 73 | const accessRoutes = await store.dispatch('permission/generateRoutes', getMenuData) |
| 74 | // 获取用户信息 | 74 | // 获取用户信息 |
| 75 | await store.dispatch('user/getUserInfo') | 75 | await store.dispatch('user/getUserInfo') |
| 76 | router.addRoutes([...accessRoutes, {path: '*', redirect: '/404', hidden: true}]) | 76 | router.addRoutes([...accessRoutes, { path: '*', redirect: '/404', hidden: true }]) |
| 77 | const routeTo = Cookies.get('routerTo') | 77 | const routeTo = Cookies.get('routerTo') |
| 78 | if (routeTo && routeTo !== '/') { | 78 | if (routeTo && routeTo !== '/') { |
| 79 | next({...to, replace: true}) | 79 | next({ ...to, replace: true }) |
| 80 | } else { | 80 | } else { |
| 81 | next('/home') | 81 | next('/home') |
| 82 | } | 82 | } | ... | ... |
| ... | @@ -2,7 +2,7 @@ | ... | @@ -2,7 +2,7 @@ |
| 2 | /* | 2 | /* |
| 3 | * @Description: 此文件主要创建 axios 实例,然后添加请求拦截器和响应拦截器 | 3 | * @Description: 此文件主要创建 axios 实例,然后添加请求拦截器和响应拦截器 |
| 4 | * @Autor: renchao | 4 | * @Autor: renchao |
| 5 | * @LastEditTime: 2023-06-02 10:18:32 | 5 | * @LastEditTime: 2023-06-12 17:22:35 |
| 6 | */ | 6 | */ |
| 7 | import axios from 'axios' | 7 | import axios from 'axios' |
| 8 | import Router from '@/router' | 8 | import Router from '@/router' |
| ... | @@ -70,7 +70,7 @@ service.interceptors.response.use( | ... | @@ -70,7 +70,7 @@ service.interceptors.response.use( |
| 70 | if (process.env.NODE_ENV === 'development') { | 70 | if (process.env.NODE_ENV === 'development') { |
| 71 | localStorage.removeItem('token') | 71 | localStorage.removeItem('token') |
| 72 | } else { | 72 | } else { |
| 73 | Cookies.remove('ACCESS_TOKEN') | 73 | Cookies.remove('token') |
| 74 | } | 74 | } |
| 75 | if (window._config.casEnable) { | 75 | if (window._config.casEnable) { |
| 76 | window.location.href = window._config.casBaseURL + '/logout?service=' + encodeURIComponent(locationUrl); | 76 | window.location.href = window._config.casBaseURL + '/logout?service=' + encodeURIComponent(locationUrl); | ... | ... |
| 1 | <!-- | ||
| 2 | * @Description: | ||
| 3 | * @Autor: renchao | ||
| 4 | * @LastEditTime: 2023-06-12 15:18:07 | ||
| 5 | --> | ||
| 1 | <template> | 6 | <template> |
| 2 | <div class="rlPopup"> | 7 | <div class="rlPopup"> |
| 3 | <div class="prev handle-btn" @click="prev()"> | 8 | <div class="prev handle-btn" v-if="!isScan" @click="prev()"> |
| 4 | <i class="el-icon-arrow-left"></i> | 9 | <i class="el-icon-arrow-left"></i> |
| 5 | </div> | 10 | </div> |
| 6 | <div class="next handle-btn" @click="next()"> | 11 | <div class="next handle-btn" v-if="!isScan" @click="next()"> |
| 7 | <i class="el-icon-arrow-right"></i> | 12 | <i class="el-icon-arrow-right"></i> |
| 8 | </div> | 13 | </div> |
| 9 | <div class="img-list-wrap"> | 14 | <div class="img-list-wrap"> |
| 10 | <div v-for="(img, i) in previewImg.imgList" :key="i"> | 15 | <img src="http://127.0.0.1:38088/video=stream&camidx=0" v-if="isScan" alt="高拍仪"> |
| 16 | <div v-for="(img, i) in previewImg.imgList" :key="i" v-else> | ||
| 11 | <photo-zoom :url="img.fjurl" :bigWidth="165" v-if="i === previewImg.index" :scale="2" | 17 | <photo-zoom :url="img.fjurl" :bigWidth="165" v-if="i === previewImg.index" :scale="2" |
| 12 | overlayStyle="width: 100%;height:100%"> | 18 | overlayStyle="width: 100%;height:100%"> |
| 13 | </photo-zoom> | 19 | </photo-zoom> |
| ... | @@ -24,6 +30,8 @@ | ... | @@ -24,6 +30,8 @@ |
| 24 | </el-upload> | 30 | </el-upload> |
| 25 | <el-button type="primary" icon="el-icon-delete-solid" @click="handleDelete" | 31 | <el-button type="primary" icon="el-icon-delete-solid" @click="handleDelete" |
| 26 | v-if="!this.$route.query.viewtype && thumbnailImages.length>0">删除</el-button> | 32 | v-if="!this.$route.query.viewtype && thumbnailImages.length>0">删除</el-button> |
| 33 | <el-button type="primary" @click="handleOpenScan">{{scanTitle}}</el-button> | ||
| 34 | <el-button type="primary" @click="handleViewScan" v-if="isScan">拍照</el-button> | ||
| 27 | </div> | 35 | </div> |
| 28 | <ul> | 36 | <ul> |
| 29 | <li v-for="(img, index) in thumbnailImages" :key="index" :class="{ active: previewImg.index === index }" | 37 | <li v-for="(img, index) in thumbnailImages" :key="index" :class="{ active: previewImg.index === index }" |
| ... | @@ -38,6 +46,7 @@ | ... | @@ -38,6 +46,7 @@ |
| 38 | </div> | 46 | </div> |
| 39 | </template> | 47 | </template> |
| 40 | <script> | 48 | <script> |
| 49 | import axios from 'axios' | ||
| 41 | import PhotoZoom from '@/components/PhotoZoom' | 50 | import PhotoZoom from '@/components/PhotoZoom' |
| 42 | import { uploadSjClmx, deleteClmx } from "@/api/clxx.js"; | 51 | import { uploadSjClmx, deleteClmx } from "@/api/clxx.js"; |
| 43 | import publicPicture from '@/components/publicPicture/index.vue' | 52 | import publicPicture from '@/components/publicPicture/index.vue' |
| ... | @@ -55,6 +64,9 @@ | ... | @@ -55,6 +64,9 @@ |
| 55 | }, | 64 | }, |
| 56 | data () { | 65 | data () { |
| 57 | return { | 66 | return { |
| 67 | isScan: false, | ||
| 68 | // 打开高拍仪 | ||
| 69 | scanTitle: '打开高拍仪', | ||
| 58 | transform: { | 70 | transform: { |
| 59 | scale: 1, | 71 | scale: 1, |
| 60 | degree: 0 | 72 | degree: 0 |
| ... | @@ -92,6 +104,31 @@ | ... | @@ -92,6 +104,31 @@ |
| 92 | } | 104 | } |
| 93 | }, | 105 | }, |
| 94 | methods: { | 106 | methods: { |
| 107 | /** | ||
| 108 | * @description: 打开高拍仪 | ||
| 109 | * @author: renchao | ||
| 110 | */ | ||
| 111 | handleOpenScan () { | ||
| 112 | this.isScan = true | ||
| 113 | this.scanTitle = '关闭高拍仪' | ||
| 114 | }, | ||
| 115 | /** | ||
| 116 | * @description: 拍照 | ||
| 117 | * @author: renchao | ||
| 118 | */ | ||
| 119 | handleViewScan () { | ||
| 120 | let data = { | ||
| 121 | "filepath": "base64", | ||
| 122 | "rotate": "0", | ||
| 123 | "cutpage": "0", | ||
| 124 | "camidx": "0", | ||
| 125 | "ColorMode": "0", | ||
| 126 | "quality": "3" | ||
| 127 | } | ||
| 128 | axios.post("http://127.0.0.1:38088/video=grabimage", JSON.stringify(data)).then((res) => { | ||
| 129 | console.log(res.data); | ||
| 130 | }) | ||
| 131 | }, | ||
| 95 | prev () { | 132 | prev () { |
| 96 | let len = this.previewImg.imgList.length | 133 | let len = this.previewImg.imgList.length |
| 97 | if (this.isFirst || len == 0) { | 134 | if (this.isFirst || len == 0) { | ... | ... |
-
Please register or sign in to post a comment