|
@@ -1,56 +1,58 @@
|
|
|
-import Vue from 'vue'
|
|
|
|
|
-import App from '@/App'
|
|
|
|
|
-import router from '@/router' // api: https://github.com/vuejs/vue-router
|
|
|
|
|
-import store from '@/store' // api: https://github.com/vuejs/vuex
|
|
|
|
|
-import VueCookie from 'vue-cookie' // api: https://github.com/alfhen/vue-cookie
|
|
|
|
|
-import '@/element-ui' // api: https://github.com/ElemeFE/element
|
|
|
|
|
-import '@/icons' // api: http://www.iconfont.cn/
|
|
|
|
|
-import '@/element-ui-theme'
|
|
|
|
|
-import '@/assets/scss/index.scss'
|
|
|
|
|
-import httpRequest from '@/utils/httpRequest' // api: https://github.com/axios/axios
|
|
|
|
|
-import '@/assets/styles/fonts.css' //字体样式
|
|
|
|
|
-import {
|
|
|
|
|
- isAuth
|
|
|
|
|
-} from '@/utils'
|
|
|
|
|
-import cloneDeep from 'lodash/cloneDeep'
|
|
|
|
|
-import BaiduMap from 'vue-baidu-map'
|
|
|
|
|
-import {
|
|
|
|
|
- VueJsonp
|
|
|
|
|
-} from 'vue-jsonp'
|
|
|
|
|
|
|
+import Vue from "vue";
|
|
|
|
|
+import App from "@/App";
|
|
|
|
|
+import router from "@/router"; // api: https://github.com/vuejs/vue-router
|
|
|
|
|
+import store from "@/store"; // api: https://github.com/vuejs/vuex
|
|
|
|
|
+import VueCookie from "vue-cookie"; // api: https://github.com/alfhen/vue-cookie
|
|
|
|
|
+import "@/element-ui"; // api: https://github.com/ElemeFE/element
|
|
|
|
|
+import "@/icons"; // api: http://www.iconfont.cn/
|
|
|
|
|
+import "@/element-ui-theme";
|
|
|
|
|
+import "@/assets/scss/index.scss";
|
|
|
|
|
+import httpRequest from "@/utils/httpRequest"; // api: https://github.com/axios/axios
|
|
|
|
|
+import "@/assets/styles/fonts.css"; //字体样式
|
|
|
|
|
+import { isAuth } from "@/utils";
|
|
|
|
|
+import cloneDeep from "lodash/cloneDeep";
|
|
|
|
|
+import BaiduMap from "vue-baidu-map";
|
|
|
|
|
+import { VueJsonp } from "vue-jsonp";
|
|
|
|
|
|
|
|
import axios from "axios";
|
|
import axios from "axios";
|
|
|
-import { getCompressionQuality, compressImage } from '@/utils/compressionUtils.js';
|
|
|
|
|
|
|
|
|
|
|
|
+import * as imageConversion from 'image-conversion';
|
|
|
|
|
+import {
|
|
|
|
|
+ getCompressionQuality,
|
|
|
|
|
+ compressImage
|
|
|
|
|
+} from "@/utils/compressionUtils.js";
|
|
|
|
|
|
|
|
-import Viewer from 'v-viewer'
|
|
|
|
|
-import 'viewerjs/dist/viewer.css'
|
|
|
|
|
-Vue.use(VueJsonp)
|
|
|
|
|
-Vue.use(Viewer)
|
|
|
|
|
|
|
+import Viewer from "v-viewer";
|
|
|
|
|
+import "viewerjs/dist/viewer.css";
|
|
|
|
|
+Vue.use(VueJsonp);
|
|
|
|
|
+Vue.use(Viewer);
|
|
|
Vue.use(Viewer, {
|
|
Vue.use(Viewer, {
|
|
|
defaultOptions: {
|
|
defaultOptions: {
|
|
|
- zIndex: 99999, // 设置图片预览组件的层级,确保能在其他组件之上
|
|
|
|
|
- },
|
|
|
|
|
-})
|
|
|
|
|
|
|
+ zIndex: 99999 // 设置图片预览组件的层级,确保能在其他组件之上
|
|
|
|
|
+ }
|
|
|
|
|
+});
|
|
|
// Vue.prototype.Tupiantou ='https://mxys.chuanghai-tech.com/sqx_fast/alioss/upload'//线上
|
|
// Vue.prototype.Tupiantou ='https://mxys.chuanghai-tech.com/sqx_fast/alioss/upload'//线上
|
|
|
-Vue.prototype.Tupiantou ='https://mxys.chuanghai-tech.com/wm-test/wm-api/sqx_fast/alioss/upload'//线下
|
|
|
|
|
-Vue.prototype.Tupian =function(img){
|
|
|
|
|
- return 'https://mxys.chuanghai-tech.com/wmfile'+img
|
|
|
|
|
- }//全局图片请求头
|
|
|
|
|
|
|
+Vue.prototype.Tupiantou =
|
|
|
|
|
+ "https://mxys.chuanghai-tech.com/wm-test/wm-api/sqx_fast/alioss/upload"; //线下
|
|
|
|
|
+Vue.prototype.Tupian = function(img) {
|
|
|
|
|
+ return "https://mxys.chuanghai-tech.com/wmfile" + img;
|
|
|
|
|
+}; //全局图片请求头
|
|
|
|
|
|
|
|
-Vue.prototype.$axios = axios
|
|
|
|
|
|
|
+Vue.prototype.$axios = axios;
|
|
|
|
|
|
|
|
- //上传图片前压缩图片
|
|
|
|
|
-Vue.prototype.$processImage=function (that, file, isUnload) {
|
|
|
|
|
|
|
+//上传图片前压缩图片
|
|
|
|
|
+Vue.prototype.$processImage = function(that, file, isUnload) {
|
|
|
const imgType = file.type.toUpperCase();
|
|
const imgType = file.type.toUpperCase();
|
|
|
const isLt30M = file.size / 1024 / 1024 < 30;
|
|
const isLt30M = file.size / 1024 / 1024 < 30;
|
|
|
const isLt2M = file.size / 1024 / 1024 < 2;
|
|
const isLt2M = file.size / 1024 / 1024 < 2;
|
|
|
const isLtSize = file.size / 1024 / 1024;
|
|
const isLtSize = file.size / 1024 / 1024;
|
|
|
- console.log('压缩前图片size', file.size / 1024 / 1024);
|
|
|
|
|
|
|
+ console.log("压缩前图片size", file.size / 1024 / 1024);
|
|
|
// uploadData.isCompressed = 0
|
|
// uploadData.isCompressed = 0
|
|
|
if (
|
|
if (
|
|
|
imgType !== "IMAGE/JPG" &&
|
|
imgType !== "IMAGE/JPG" &&
|
|
|
imgType !== "IMAGE/JPEG" &&
|
|
imgType !== "IMAGE/JPEG" &&
|
|
|
- imgType !== "IMAGE/PNG"
|
|
|
|
|
|
|
+ imgType !== "IMAGE/PNG" &&
|
|
|
|
|
+ imgType !== "IMAGE/WEBP"
|
|
|
) {
|
|
) {
|
|
|
that.$message.error("请上传正确格式的图片");
|
|
that.$message.error("请上传正确格式的图片");
|
|
|
return false;
|
|
return false;
|
|
@@ -60,68 +62,83 @@ Vue.prototype.$processImage=function (that, file, isUnload) {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
//压缩质量
|
|
//压缩质量
|
|
|
- const quality = getCompressionQuality(isLtSize,imgType);
|
|
|
|
|
- //大于2M走压缩逻辑
|
|
|
|
|
|
|
+ // 1、 按倍率压缩
|
|
|
|
|
+ // const quality = getCompressionQuality(isLtSize, imgType);
|
|
|
|
|
+ // //大于2M走压缩逻辑
|
|
|
|
|
+ // if (!isLt2M) {
|
|
|
|
|
+ // console.log("quality", quality);
|
|
|
|
|
+ // return compressImage(file, quality)
|
|
|
|
|
+ // .then(compressedFile => {
|
|
|
|
|
+ // return compressedFile;
|
|
|
|
|
+ // })
|
|
|
|
|
+ // .catch(err => {
|
|
|
|
|
+ // console.error("Image compression error:", err);
|
|
|
|
|
+ // return file;
|
|
|
|
|
+ // });
|
|
|
|
|
+ // }
|
|
|
|
|
+
|
|
|
|
|
+ // 2、 按指定大小压缩
|
|
|
if (!isLt2M) {
|
|
if (!isLt2M) {
|
|
|
- console.log('quality', quality);
|
|
|
|
|
- return compressImage(file, quality)
|
|
|
|
|
- .then(compressedFile => {
|
|
|
|
|
- return compressedFile;
|
|
|
|
|
- })
|
|
|
|
|
- .catch(err => {
|
|
|
|
|
- console.error('Image compression error:', err);
|
|
|
|
|
- return file;
|
|
|
|
|
|
|
+ // this.$message.error("上传头像图片大小不能超过2MB");
|
|
|
|
|
+ // return false;
|
|
|
|
|
+ return new Promise(resolve => {
|
|
|
|
|
+ // 压缩到100KB,这里的100就是要压缩的大小,可自定义
|
|
|
|
|
+ imageConversion.compressAccurately(file, 1800).then(res => {
|
|
|
|
|
+ console.log(res.size / 1024 / 1024,'压缩后图片大小');
|
|
|
|
|
+ resolve(res);
|
|
|
});
|
|
});
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
-},
|
|
|
|
|
|
|
+
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
Viewer.setDefaults({
|
|
Viewer.setDefaults({
|
|
|
// 工具栏按钮的控制
|
|
// 工具栏按钮的控制
|
|
|
- toolbar: {
|
|
|
|
|
- zoomIn: 1, // 放大
|
|
|
|
|
- zoomOut: 1, // 缩小
|
|
|
|
|
- oneToOne: 1, // 100%大小
|
|
|
|
|
- reset: 1, // 还原
|
|
|
|
|
- prev: 0, // 上一张
|
|
|
|
|
- play: 1, // 全屏显示
|
|
|
|
|
- next: 0, // 下一张
|
|
|
|
|
- rotateLeft: 1, // 逆时针旋转
|
|
|
|
|
- rotateRight: 1, // 顺时针旋转
|
|
|
|
|
- flipHorizontal: 1, // 水平翻转
|
|
|
|
|
- flipVertical: 1 // 垂直翻转
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ toolbar: {
|
|
|
|
|
+ zoomIn: 1, // 放大
|
|
|
|
|
+ zoomOut: 1, // 缩小
|
|
|
|
|
+ oneToOne: 1, // 100%大小
|
|
|
|
|
+ reset: 1, // 还原
|
|
|
|
|
+ prev: 0, // 上一张
|
|
|
|
|
+ play: 1, // 全屏显示
|
|
|
|
|
+ next: 0, // 下一张
|
|
|
|
|
+ rotateLeft: 1, // 逆时针旋转
|
|
|
|
|
+ rotateRight: 1, // 顺时针旋转
|
|
|
|
|
+ flipHorizontal: 1, // 水平翻转
|
|
|
|
|
+ flipVertical: 1 // 垂直翻转
|
|
|
|
|
+ }
|
|
|
|
|
+});
|
|
|
|
|
|
|
|
Vue.use(BaiduMap, {
|
|
Vue.use(BaiduMap, {
|
|
|
- ak: 'miP4RMG1yZoROVRSqTPghvUaRb68iGUB'
|
|
|
|
|
-})
|
|
|
|
|
|
|
+ ak: "miP4RMG1yZoROVRSqTPghvUaRb68iGUB"
|
|
|
|
|
+});
|
|
|
|
|
|
|
|
-Vue.use(VueCookie)
|
|
|
|
|
-Vue.config.productionTip = false
|
|
|
|
|
|
|
+Vue.use(VueCookie);
|
|
|
|
|
+Vue.config.productionTip = false;
|
|
|
|
|
|
|
|
// 非生产环境, 适配mockjs模拟数据 // api: https://github.com/nuysoft/Mock
|
|
// 非生产环境, 适配mockjs模拟数据 // api: https://github.com/nuysoft/Mock
|
|
|
-if (process.env.NODE_ENV !== 'production') {
|
|
|
|
|
- require('@/mock')
|
|
|
|
|
|
|
+if (process.env.NODE_ENV !== "production") {
|
|
|
|
|
+ require("@/mock");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 挂载全局
|
|
// 挂载全局
|
|
|
-Vue.prototype.$http = httpRequest // ajax请求方法
|
|
|
|
|
-Vue.prototype.isAuth = isAuth // 权限方法
|
|
|
|
|
|
|
+Vue.prototype.$http = httpRequest; // ajax请求方法
|
|
|
|
|
+Vue.prototype.isAuth = isAuth; // 权限方法
|
|
|
|
|
|
|
|
// 保存整站vuex本地储存初始状态
|
|
// 保存整站vuex本地储存初始状态
|
|
|
-window.SITE_CONFIG['storeState'] = cloneDeep(store.state)
|
|
|
|
|
|
|
+window.SITE_CONFIG["storeState"] = cloneDeep(store.state);
|
|
|
router.afterEach(() => {
|
|
router.afterEach(() => {
|
|
|
document.body.scrollTop = 0;
|
|
document.body.scrollTop = 0;
|
|
|
document.documentElement.scrollTop = 0;
|
|
document.documentElement.scrollTop = 0;
|
|
|
- // window.scrollTo(0, 0);
|
|
|
|
|
-})
|
|
|
|
|
|
|
+ // window.scrollTo(0, 0);
|
|
|
|
|
+});
|
|
|
/* eslint-disable no-new */
|
|
/* eslint-disable no-new */
|
|
|
new Vue({
|
|
new Vue({
|
|
|
- el: '#app',
|
|
|
|
|
|
|
+ el: "#app",
|
|
|
router,
|
|
router,
|
|
|
store,
|
|
store,
|
|
|
- template: '<App/>',
|
|
|
|
|
|
|
+ template: "<App/>",
|
|
|
components: {
|
|
components: {
|
|
|
App
|
|
App
|
|
|
}
|
|
}
|
|
|
-})
|
|
|
|
|
|
|
+});
|