\r\n \r\n {{ currency }}\r\n {{ priceInt }}\r\n .\r\n {{ priceDecimal }}\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Price.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Price.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Price.vue?vue&type=template&id=74820a56&scoped=true&\"\nimport script from \"./Price.vue?vue&type=script&lang=js&\"\nexport * from \"./Price.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Price.vue?vue&type=style&index=0&id=74820a56&prod&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74820a56\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\r\nimport env from \"./utils/env\";\r\nimport App from \"./App.vue\";\r\nimport router from \"./router/\";\r\nimport store from \"./store/\";\r\nimport config from \"@/config/baseConfig\";\r\nimport Vant, { Lazyload } from \"vant\";\r\nimport \"vant/lib/index.css\";\r\nimport \"./assets/css/common.less\";\r\nimport \"./assets/css/custom.less\";\r\nimport \"./utils/rem\";\r\nimport \"@/utils/action\";\r\nimport Storage from \"vue-ls\";\r\nimport navbar from \"@/components/base/layouts/navbar/install.js\";\r\nimport \"@/permission\";\r\nimport bootstrap from \"./utils/bootstrap\";\r\nimport * as common from \"@/utils/common.js\";\r\nimport noPic from \"@/assets/image/nopic.png\";\r\nimport Price from \"@/components/tools/Price\";\r\n\r\nVue.use(Vant);\r\nVue.use(Lazyload, {\r\n lazyComponent: true,\r\n error: noPic\r\n});\r\nVue.use(navbar);\r\n\r\nVue.config.productionTip = false;\r\nVue.prototype.$config = config;\r\nVue.prototype.$common = common;\r\nVue.prototype.$env = env;\r\nconst storageOptions = {\r\n namespace: \"zytx_dd_Mobile_\", // key prefix\r\n name: \"ls\", // name variable Vue.[ls] or this.[$ls],\r\n storage: \"session\" // storage name session, local, memory\r\n};\r\n\r\nVue.use(Storage, storageOptions);\r\nVue.component(\"Price\", Price);\r\n// Vue.mixin(routerEx);\r\nnew Vue({\r\n router,\r\n store,\r\n created() {\r\n bootstrap();\r\n },\r\n render: h => h(App)\r\n}).$mount(\"#app\");\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--10-oneOf-1-4!../../../node_modules/style-resources-loader/lib/index.js??ref--10-oneOf-1-5!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Price.vue?vue&type=style&index=0&id=74820a56&prod&lang=less&scoped=true&\"","import Vue from \"vue\";\r\n// import Cookies from \"js-cookie\";\r\n\r\n/**\r\n * @description: 缓存\r\n * @param {String} name key\r\n * @param {String, Object} value value\r\n * @return: cache value\r\n * @use 存: ls.set(\"name\", value);\r\n * 取: const value = ls.get(\"name\");\r\n */\r\nexport const ls = {\r\n set(name, value, expire = 28800000) {\r\n if (expire) {\r\n return Vue.ls.set(name, value, expire);\r\n } else {\r\n return Vue.ls.set(name, value);\r\n }\r\n },\r\n get(name) {\r\n return Vue.ls.get(name);\r\n },\r\n remove(name) {\r\n return Vue.ls.remove(name);\r\n }\r\n};\r\n\r\nexport const cacheSession = {\r\n set(name, value) {\r\n sessionStorage.setItem(name, JSON.stringify(value));\r\n },\r\n get(name) {\r\n const str = sessionStorage.getItem(name);\r\n return JSON.parse(str);\r\n },\r\n remove(name) {\r\n sessionStorage.removeItem(name);\r\n }\r\n};\r\n\r\nexport const cacheLocal = {\r\n set(name, value) {\r\n localStorage.setItem(name, JSON.stringify(value));\r\n },\r\n get(name) {\r\n const str = localStorage.getItem(name);\r\n return JSON.parse(str);\r\n },\r\n remove(name) {\r\n localStorage.removeItem(name);\r\n }\r\n};\r\n\r\n// cookie 缓存\r\n// export const cookie = {\r\n// set(name, value) {\r\n// return Cookies.set(name, value);\r\n// },\r\n// get(name) {\r\n// return Cookies.get(name);\r\n// },\r\n// remove(name) {\r\n// return Cookies.remove(name);\r\n// }\r\n// };\r\n","export const USERINFO = \"userInfo\"; //用户数据\r\nexport const TOKEN = \"token\"; //token\r\nexport const USER = \"user\"; //用户账号密码\r\nexport const ISIFRAME = \"IsIframe\"; //是否子页面\r\nexport const SYSTEMPARAM = \"systemParam\"; //系统参数\r\n","import store from \"@/store/\";\r\nimport Vue from \"vue\";\r\nimport Router from \"vue-router\";\r\nimport config from \"@/config/baseConfig\";\r\nimport { constantRoutes, asyncRoutes } from \"./router.config\";\r\n\r\nVue.use(Router);\r\nlet routers = config.permission.router\r\n ? constantRoutes\r\n : constantRoutes.concat(asyncRoutes);\r\n\r\nlet router = new Router({\r\n mode: \"history\",\r\n base: process.env.BASE_URL,\r\n scrollBehavior(to, from, savedPosition) {\r\n if (savedPosition) {\r\n return savedPosition;\r\n } else {\r\n return { x: 0, y: 0 };\r\n }\r\n },\r\n routes: routers\r\n});\r\n\r\nrouter.push = function(location, onComplete, onAbort) {\r\n if (location && location.name) {\r\n store.dispatch(\"app/deletePageKeepAlive\", location.name);\r\n }\r\n this.history.push(location, onComplete, onAbort);\r\n};\r\nrouter.replace = function(location, onComplete, onAbort) {\r\n if (location && location.name) {\r\n store.dispatch(\"app/deletePageKeepAlive\", location.name);\r\n }\r\n this.history.replace(location, onComplete, onAbort);\r\n};\r\n\r\nexport default router;\r\n","import axios from \"axios\"\r\nimport store from \"@/store/\"\r\nimport { Notify, Dialog, Toast } from \"vant\"\r\nimport router from \"@/router\"\r\nimport { ls } from \"@/utils//cache\"\r\nimport { TOKEN } from \"@/store/mutation-types\"\r\nimport authApi from \"@/api/auth\"\r\nimport { isArray } from \"lodash\"\r\n//默认配置\r\nconst config = {\r\n // eslint-disable-next-line no-undef\r\n serverUrl: env.API_HOST, //请求地址\r\n responseBody: {\r\n code: \"Code\",\r\n data: \"Data\",\r\n message: \"Message\",\r\n isConfirmed: \"isConfirmed\",\r\n },\r\n warningCode: 1, // 响应体中 警告状态的 code\r\n successCode: 0, // 响应体中 成功状态的 code\r\n}\r\n\r\nlet modalOpen = false\r\n//请求状态错误处理\r\nconst err = (error) => {\r\n if (error.response) {\r\n const status = error.response.status\r\n const data = error.response.data\r\n\r\n let msg =\r\n data && data[config.responseBody.message]\r\n ? data[config.responseBody.message]\r\n : \"\"\r\n if (status === 401) {\r\n store.dispatch(\"user/login\").then(() => {\r\n window.location.reload()\r\n })\r\n } else if (status === 403) {\r\n msg = \"您没有权限\"\r\n } else if (status === 404) {\r\n msg = \"api请求接口不存在\"\r\n } else {\r\n msg = \"请求出错\"\r\n }\r\n const message =\r\n data && data[config.responseBody.message]\r\n ? data[config.responseBody.message]\r\n : msg\r\n\r\n Notify(message)\r\n } else if (error.code == \"ECONNABORTED\") {\r\n Notify(\"服务器连接超时\")\r\n }\r\n}\r\n\r\n//响应体Code异常处理\r\n// const abnormal = response => {\r\n// const res = response.data;\r\n// // 当设置 handleError 为 false 则不做异常处理\r\n// if (\r\n// response.config.headers &&\r\n// response.config.headers.handleError === false\r\n// ) {\r\n// return false;\r\n// }\r\n\r\n// // const resultCode = res[config.responseBody.code];\r\n// const description =\r\n// res && res[config.responseBody.message]\r\n// ? res[config.responseBody.message]\r\n// : \"请求失败\";\r\n// // let message = \"abnormalCode:\" + resultCode;\r\n// // if (resultCode === 99) {\r\n// // message = \"请求参数错误\";\r\n// // }\r\n// Notify(description);\r\n// };\r\n\r\n// 创建实例\r\nconst service = axios.create({\r\n baseURL: env.API_HOST,\r\n timeout: 20000,\r\n})\r\n\r\n// 请求拦截器\r\nservice.interceptors.request.use(\r\n (config) => {\r\n if (\r\n !(config.data && config.data.notToken) &&\r\n !(config.params && config.params.notToken) &&\r\n store.getters.token &&\r\n !config.headers[\"Authorization\"]\r\n ) {\r\n config.headers[\"Authorization\"] = store.getters.token\r\n }\r\n\r\n return config\r\n },\r\n (error) => {\r\n Toast.clear()\r\n err(error)\r\n return Promise.reject(error)\r\n }\r\n)\r\n\r\n// 响应拦截器\r\nservice.interceptors.response.use(\r\n (response) => {\r\n Toast.clear()\r\n return response\r\n // const res = response.data;\r\n // const resultCode = res[config.responseBody.code];\r\n // if (resultCode === config.warningCode) {\r\n // Notify({ type: \"warning\", message: res.message || \"\" });\r\n // return res;\r\n // } else if (\r\n // resultCode === config.successCode ||\r\n // response.request.responseURL.indexOf(config.serverUrl) < 0\r\n // ) {\r\n // return res; // 成功回调\r\n // } else {\r\n // abnormal(response);\r\n // return Promise.reject(response);\r\n // }\r\n },\r\n (error) => {\r\n Toast.clear()\r\n err(error)\r\n return Promise.reject(error)\r\n }\r\n)\r\n\r\nexport const sendRequest = (url, params, type, obj) => {\r\n const data = {\r\n ...obj,\r\n url,\r\n method: type,\r\n }\r\n let dataKey = type === \"get\" ? \"params\" : \"data\"\r\n data[dataKey] = params\r\n\r\n if (type === \"form-data\") {\r\n data.method = \"post\"\r\n const formData = new FormData()\r\n for (let key in params) {\r\n if (params[key] != undefined) {\r\n if (typeof params[key] == \"object\" && isArray(params[key])) {\r\n for (let i = 0; i < params[key].length; i++) {\r\n const item = params[key][i]\r\n formData.append(key + \"[]\", item)\r\n }\r\n } else {\r\n formData.append(key, params[key])\r\n }\r\n }\r\n }\r\n data.data = formData\r\n }\r\n\r\n if (\r\n (obj ? obj.isLoading : obj) !== false &&\r\n params &&\r\n params.ISLOADING !== false\r\n ) {\r\n Toast.loading({\r\n duration: 0,\r\n message: \"加载中...\",\r\n forbidClick: true,\r\n })\r\n }\r\n return requestInit(data, dataKey)\r\n}\r\n\r\nconst requestInit = (params, dataKey) => {\r\n return new Promise((resolve, reject) => {\r\n service(params)\r\n .then((response) => {\r\n const res = response.data\r\n let message = res.Message || \"\"\r\n message = message.replace(/\\/r|\\/n/g, \"\\n\")\r\n // 当设置 handleError 为 false 则不做异常处理\r\n if (\r\n response.config.headers &&\r\n response.config.headers.handleError === false\r\n ) {\r\n reject(res)\r\n }\r\n let code = res[config.responseBody.code]\r\n if (code === config.successCode || (!code && code !== 0)) {\r\n resolve(res)\r\n } else if (code === 1) {\r\n Notify({ type: \"warning\", message: message })\r\n resolve(res)\r\n } else {\r\n switch (code) {\r\n case 2:\r\n if (params[dataKey][config.responseBody.isConfirmed]) {\r\n resolve(res)\r\n } else {\r\n // 确认框(确定或取消)\r\n Dialog.confirm({\r\n title: \"提示\",\r\n message: message,\r\n })\r\n .then(() => {\r\n params[dataKey][config.responseBody.isConfirmed] = true\r\n requestInit(params)\r\n .then((res) => {\r\n resolve(res)\r\n })\r\n .catch((res) => {\r\n reject(res)\r\n })\r\n })\r\n .catch(() => {\r\n reject(res)\r\n })\r\n }\r\n break\r\n case 3:\r\n Notify({ type: \"danger\", message: message })\r\n reject(res)\r\n break\r\n case 4:\r\n Dialog.alert({\r\n title: \"提示\",\r\n message: message,\r\n }).then(() => {\r\n store.dispatch(\"user/logout\")\r\n })\r\n reject(res)\r\n break\r\n case 5:\r\n break\r\n default:\r\n var description =\r\n res && res[config.responseBody.message]\r\n ? res[config.responseBody.message]\r\n : \"请求失败\"\r\n\r\n Notify(description)\r\n reject(res)\r\n break\r\n }\r\n }\r\n })\r\n .catch((res) => {\r\n reject(res)\r\n })\r\n })\r\n}\r\n\r\nexport default sendRequest\r\n","/**\r\n * 项目默认配置项\r\n *\r\n */\r\nexport default {\r\n permission: {\r\n router: false, //是否开启路由权限验证\r\n action: true //是否开启功能权限验证\r\n }\r\n};\r\n","import Vue from \"vue\";\r\nimport router from \"../router/\";\r\nimport $config from \"@/config/baseConfig\";\r\nimport { compressAccurately } from \"image-conversion\";\r\n/**\r\n * @description: 路由跳转\r\n */\r\nexport const routeTo = (params) => {\r\n router.push(params);\r\n};\r\nexport const routeReplace = (params) => {\r\n router.replace(params);\r\n};\r\n\r\n/**\r\n * @description: 递归查询指定数据\r\n * @param {type}\r\n * @return:\r\n */\r\nexport const findData = (data, keys) => {\r\n keys = keys.split(\".\");\r\n for (let i = 0; i < keys.length; i++) {\r\n if (!keys[i]) return data;\r\n data = data[keys[i]];\r\n }\r\n return data;\r\n};\r\n\r\n/**\r\n * @description: tree转一维数组\r\n * @param {type}\r\n * @return:\r\n */\r\nexport const treeTransArray = (tree, key) => {\r\n return [].concat(\r\n ...tree.map((item) => {\r\n if (item[key] && item[key].length) {\r\n return [].concat(item, ...treeTransArray(item[key]), key);\r\n } else {\r\n return item;\r\n }\r\n })\r\n );\r\n};\r\n\r\n//对象转url参数\r\nexport const objectToUrlParams = (keys) => {\r\n let urlParams = \"\";\r\n for (let i in keys) {\r\n urlParams += i + \"=\" + keys[i] + \"&\";\r\n }\r\n urlParams = urlParams.substring(0, urlParams.length - 1);\r\n return urlParams;\r\n};\r\n\r\n/**\r\n * @description: 获取头像\r\n * @param {type}\r\n * @return:\r\n */\r\nexport const getAvatarUrl = (url) => {\r\n if (url) {\r\n return $config.fileUrl + url;\r\n } else {\r\n return \"/images/avatar.jpg\";\r\n }\r\n};\r\n\r\n/**\r\n * @description: 样式是否存在\r\n * @param {*} elements\r\n * @param {*} cName\r\n * @return {*}\r\n */\r\nexport const hasClass = (elements, cName) => {\r\n return !!elements.className.match(new RegExp(\"(\\\\s|^)\" + cName + \"(\\\\s|$)\"));\r\n};\r\n\r\n/**\r\n * @description: 新增样式\r\n * @param {*} elements\r\n * @param {*} cName\r\n * @return {*}\r\n */\r\nexport const addClass = (elements, cName) => {\r\n if (!hasClass(elements, cName)) {\r\n elements.className += \" \" + cName;\r\n }\r\n};\r\n\r\n/**\r\n * @description: 删除样式\r\n * @param {*} elements\r\n * @param {*} cName\r\n * @return {*}\r\n */\r\nexport const removeClass = (elements, cName) => {\r\n if (hasClass(elements, cName)) {\r\n elements.className = elements.className.replace(\r\n new RegExp(\"(\\\\s|^)\" + cName + \"(\\\\s|$)\"),\r\n \" \"\r\n );\r\n }\r\n};\r\n\r\n/**\r\n * @description: moment 转 字符串\r\n * @param {*} date\r\n * @param {*} format\r\n * @return {*}\r\n */\r\nexport const onMomentToString = function(date, format = \"YYYY-MM-DD\") {\r\n return !date ? date : date.format ? date.format(format) : date;\r\n};\r\n\r\n/**\r\n * @description: YYYY-MM-DD HH:mm:ss || HH:mm:ss 截取时分秒\r\n * @param {*} date\r\n * @return {*}\r\n */\r\nexport const onDateSplitTime = function(date) {\r\n date = onMomentToString(date, \"YYYY-MM-DD HH:mm:ss\");\r\n let dateArr = date.split(\",\");\r\n return dateArr.length > 1 ? dateArr[1] : dateArr[0];\r\n};\r\n\r\n/**\r\n * @description: 删除url删除并跳转\r\n * @param {*} paramKey\r\n * @return {*}\r\n */\r\nexport const deleteParam = (paramKey) => {\r\n let url = window.location.href; //页面url\r\n const urlParam = window.location.search.substr(1); //页面参数\r\n const beforeUrl = url.substr(0, url.indexOf(\"?\")); //页面主地址(参数之前地址)\r\n let nextUrl = \"\";\r\n const arr = [];\r\n if (urlParam != \"\") {\r\n const urlParamArr = urlParam.split(\"&\"); //将参数按照&符分成数组\r\n for (let i = 0; i < urlParamArr.length; i++) {\r\n const paramArr = urlParamArr[i].split(\"=\"); //将参数键,值拆开\r\n if (paramArr[0] != paramKey) {\r\n arr.push(urlParamArr[i]);\r\n }\r\n }\r\n }\r\n if (arr.length > 0) {\r\n nextUrl = \"?\" + arr.join(\"&\");\r\n }\r\n url = beforeUrl + nextUrl;\r\n return url;\r\n};\r\n\r\n/**\r\n * @description: 压缩图标 图片上传大小判断\r\n * @param {*} file\r\n * @return {*}\r\n */\r\nexport const compressUploadImage = (file, maxSize = 1024) => {\r\n return new Promise((resolve, reject) => {\r\n const imageLimit = maxSize > 200 ? maxSize - 100 : maxSize;\r\n if (file.size > maxSize * 1024) {\r\n const config = {\r\n type: file.type,\r\n size: imageLimit,\r\n };\r\n compressAccurately(file, config)\r\n .then((blob) => {\r\n let newFile = new window.File([blob], file.name, {\r\n type: file.type,\r\n });\r\n newFile.uid = file.uid;\r\n resolve(newFile);\r\n })\r\n .catch(() => {\r\n reject();\r\n });\r\n } else {\r\n resolve(file);\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * @description: 两个数组 是否存在交集\r\n * @param {*} arr1\r\n * @param {*} arr2\r\n * @return {*}\r\n */\r\nexport const isIntersect = function(arr1, arr2) {\r\n return (\r\n arr1.length + arr2.length !== Array.from(new Set([...arr1, ...arr2])).length\r\n );\r\n};\r\n\r\n/**\r\n * @description: 根据size 拆分数组为 二维数组\r\n * @param {*} array\r\n * @param {*} size\r\n * @return {*}\r\n */\r\nexport const splitArrayByLength = (array, size) => {\r\n //获取数组的长度,如果你传入的不是数组,那么获取到的就是undefined\r\n const length = array.length;\r\n //判断不是数组,或者size没有设置,size小于1,就返回空数组\r\n if (!length || !size || size < 1) {\r\n return [];\r\n }\r\n //核心部分\r\n let index = 0; //用来表示切割元素的范围start\r\n let resIndex = 0; //用来递增表示输出数组的下标\r\n\r\n //根据length和size算出输出数组的长度,并且创建它。\r\n let result = new Array(Math.ceil(length / size));\r\n //进行循环\r\n while (index < length) {\r\n //循环过程中设置result[0]和result[1]的值。该值根据array.slice切割得到。\r\n result[resIndex++] = array.slice(index, (index += size));\r\n }\r\n //输出新数组\r\n return result;\r\n};\r\n\r\n/**\r\n * @description: 清空对象中的空值\r\n * @param {*}\r\n * @return {*}\r\n */\r\nexport const clearObjectEmpty = (data) => {\r\n for (let i in data) {\r\n if (\r\n data[i] === \"\" ||\r\n data[i] === null ||\r\n (data[i] instanceof Array && data[i].length == 0) ||\r\n (i.indexOf(\"Id\") > 0 && data[i] == 0)\r\n ) {\r\n delete data[i];\r\n }\r\n }\r\n return data;\r\n};\r\n\r\n/**\r\n * @description: 生成一个 不重复的\r\n * @param {*}\r\n * @return {*}\r\n */\r\nexport const randomNumber = (number = 36) => {\r\n return (new Date().getTime() + Math.random() * 99999).toString(number);\r\n};\r\n\r\nexport const isOjbect = (data) => {\r\n return Object.prototype.toString.call(data) === \"[object Object]\";\r\n};\r\n\r\n//是否空对象\r\nexport const isEmptyObject = (data) => {\r\n return JSON.stringify(data) === \"{}\";\r\n};\r\n\r\n/**\r\n * @description: 判断是否空值或者null\r\n * @param {*} value\r\n * @return {*}\r\n */\r\nexport const isEmptyOrNull = (value) => {\r\n return !(value || value === 0 || value === false);\r\n};\r\nexport const jump = (name, query = {}, params = {}) => {\r\n router.push({\r\n name: name,\r\n query: query,\r\n params: params,\r\n });\r\n};\r\nconst cacheObj = {\r\n set(name, value, expire) {\r\n if (expire) {\r\n return Vue.ls.set(name, value, expire);\r\n } else {\r\n return Vue.ls.set(name, value);\r\n }\r\n },\r\n get(name) {\r\n return Vue.ls.get(name);\r\n },\r\n remove(name) {\r\n return Vue.ls.remove(name);\r\n },\r\n};\r\n\r\nexport const cache = cacheObj;\r\n\r\nexport const accAdd = (arg1, arg2) => {\r\n var r1, r2, m, c;\r\n try {\r\n r1 = arg1.toString().split(\".\")[1].length;\r\n } catch (e) {\r\n r1 = 0;\r\n }\r\n try {\r\n r2 = arg2.toString().split(\".\")[1].length;\r\n } catch (e) {\r\n r2 = 0;\r\n }\r\n c = Math.abs(r1 - r2);\r\n m = Math.pow(10, Math.max(r1, r2));\r\n if (c > 0) {\r\n var cm = Math.pow(10, c);\r\n if (r1 > r2) {\r\n arg1 = Number(arg1.toString().replace(\".\", \"\"));\r\n arg2 = Number(arg2.toString().replace(\".\", \"\")) * cm;\r\n } else {\r\n arg1 = Number(arg1.toString().replace(\".\", \"\")) * cm;\r\n arg2 = Number(arg2.toString().replace(\".\", \"\"));\r\n }\r\n } else {\r\n arg1 = Number(arg1.toString().replace(\".\", \"\"));\r\n arg2 = Number(arg2.toString().replace(\".\", \"\"));\r\n }\r\n return (arg1 + arg2) / m;\r\n};\r\nexport const accSub = (arg1, arg2) => {\r\n var r1, r2, m, n;\r\n try {\r\n r1 = arg1.toString().split(\".\")[1].length;\r\n } catch (e) {\r\n r1 = 0;\r\n }\r\n try {\r\n r2 = arg2.toString().split(\".\")[1].length;\r\n } catch (e) {\r\n r2 = 0;\r\n }\r\n m = Math.pow(10, Math.max(r1, r2)); //last modify by deeka //动态控制精度长度\r\n n = r1 >= r2 ? r1 : r2;\r\n return ((arg1 * m - arg2 * m) / m).toFixed(n);\r\n};\r\nexport const accMul = (arg1, arg2) => {\r\n var m = 0,\r\n s1 = arg1.toString(),\r\n s2 = arg2.toString();\r\n try {\r\n m += s1.split(\".\")[1].length;\r\n // eslint-disable-next-line no-empty\r\n } catch (e) {}\r\n try {\r\n m += s2.split(\".\")[1].length;\r\n // eslint-disable-next-line no-empty\r\n } catch (e) {}\r\n return (\r\n (Number(s1.replace(\".\", \"\")) * Number(s2.replace(\".\", \"\"))) /\r\n Math.pow(10, m)\r\n );\r\n};\r\n\r\n//除法函数\r\nexport const accDiv = (arg1, arg2) => {\r\n var t1 = 0,\r\n t2 = 0,\r\n r1,\r\n r2;\r\n try {\r\n t1 = arg1.toString().split(\".\")[1].length;\r\n // eslint-disable-next-line no-empty\r\n } catch (e) {}\r\n try {\r\n t2 = arg2.toString().split(\".\")[1].length;\r\n // eslint-disable-next-line no-empty\r\n } catch (e) {}\r\n\r\n r1 = Number(arg1.toString().replace(\".\", \"\"));\r\n\r\n r2 = Number(arg2.toString().replace(\".\", \"\"));\r\n return (r1 / r2) * Math.pow(10, t2 - t1);\r\n};\r\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../node_modules/style-resources-loader/lib/index.js??ref--10-oneOf-1-4!../node_modules/style-resources-loader/lib/index.js??ref--10-oneOf-1-5!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=08ec1357&prod&lang=less&\"","module.exports = \"data:image/png;base64,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\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../../../node_modules/style-resources-loader/lib/index.js??ref--10-oneOf-1-4!../../../../../node_modules/style-resources-loader/lib/index.js??ref--10-oneOf-1-5!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./navbar.vue?vue&type=style&index=0&id=1270694a&prod&lang=less&scoped=true&\"","//平铺路由\nconst routerTile = data => {\n let arr = [];\n data.forEach(p => {\n let childrenArr = [];\n if (p.children) {\n childrenArr = routerTile(p.children);\n }\n delete p.children;\n arr.push(p);\n arr = arr.concat(childrenArr);\n });\n return arr;\n};\n\nexport default routerTile;\n","export default {\n path: \"/classroomUsage\",\n name: \"classroomUsage\",\n redirect: \"/classroomUsage/list\",\n meta: {\n title: \"教室使用情况\",\n showMainMenu: false\n },\n children: [\n {\n path: \"/classroomUsage/list\",\n name: \"classroomUsageList\",\n component: () =>\n import(\n /* webpackChunkName: \"classroomUsage\" */ \"@/views/classroomUsage/List.vue\"\n ),\n meta: {\n title: \"教室使用情况\",\n showMainMenu: true,\n icon: \"icon-chat\"\n }\n },\n {\n path: \"/classroomUsage/detail\",\n name: \"classroomUsageDetail\",\n component: () =>\n import(\n /* webpackChunkName: \"classroomUsage\" */ \"@/views/classroomUsage/Detail.vue\"\n ),\n meta: {\n title: \"教室使用情况\",\n // showMainMenu: true,\n icon: \"icon-chat\"\n }\n },\n {\n path: \"/classroomUsage/classroomList\",\n name: \"classroomUsageClassroomList\",\n component: () =>\n import(\n /* webpackChunkName: \"classroomUsage\" */ \"@/views/classroomUsage/ClassRoomList.vue\"\n ),\n meta: {\n title: \"教室名称\",\n // showMainMenu: true,\n icon: \"icon-chat\"\n }\n }\n ]\n};\n","export default {\n path: \"/classroomQuery\",\n name: \"ClassroomQuery\",\n redirect: \"/classroomQuery/index\",\n meta: {\n title: \"教室查询\",\n showMainMenu: false\n // icon: \"icon-query\"\n },\n children: [\n {\n path: \"/classroomQuery/index\",\n name: \"classroomQueryIndex\",\n component: () =>\n import(/* webpackChunkName: \"classroomQuery\" */ \"@/views/classroomQuery/Index.vue\"),\n meta: {\n title: \"教室查询\",\n showMainMenu: true,\n icon: \"icon-query\"\n }\n },\n {\n path: \"/classroomQuery/ForClassRoom\",\n name: \"classroomQueryForClassRoom\",\n component: () =>\n import(/* webpackChunkName: \"classroomQuery\" */ \"@/views/classroomQuery/ForClassRoom.vue\"),\n meta: {\n title: \"按教室\",\n showMainMenu: false\n }\n },\n {\n path: \"/classroomQuery/ForDate\",\n name: \"classroomQueryForDate\",\n component: () =>\n import(/* webpackChunkName: \"classroomQuery\" */ \"@/views/classroomQuery/ForDate.vue\"),\n meta: {\n title: \"按时间\",\n showMainMenu: false\n }\n }\n ]\n};\n","export default {\n path: \"/classroomMap\",\n name: \"classroomMap\",\n redirect: \"/classroomMap/index\",\n meta: {\n title: \"教室地图\",\n showMainMenu: false\n },\n children: [\n {\n path: \"/classroomMap/index\",\n name: \"classroomMapIndex\",\n component: () =>\n import(/* webpackChunkName: \"classroomMap\" */ \"@/views/classroomMap/Index.vue\"),\n meta: {\n title: \"教室地图\",\n showMainMenu: true,\n icon: \"icon-map\"\n }\n }\n ]\n};\n","export default {\n path: \"/checkList\",\n name: \"checkList\",\n redirect: \"/check/List\",\n meta: {\n title: \"审批\",\n showMainMenu: false,\n },\n children: [\n {\n path: \"/check/List\",\n name: \"checkList\",\n component: () =>\n import(/* webpackChunkName: \"classroomMap\" */ \"@/views/check/List.vue\"),\n meta: {\n title: \"申请审批\",\n showMainMenu: false,\n showFooter: false,\n icon: \"icon-map\",\n },\n },\n {\n path: \"/check/Detail\",\n name: \"checkDetail\",\n component: () =>\n import(/* webpackChunkName: \"classroomMap\" */ \"@/views/check/Detail.vue\"),\n meta: {\n title: \"详情\",\n showMainMenu: false,\n showFooter: false,\n icon: \"icon-map\",\n },\n },\n ],\n}\n","import { cloneDeep } from \"lodash\";\r\nimport routerTile from \"./routerTile\";\r\nimport classroomUsage from \"./modules/classroomUsage\";\r\nimport classroomQuery from \"./modules/classroomQuery\";\r\nimport classroomMap from \"./modules/classroomMap\";\r\nimport check from \"./modules/check\";\r\n\r\nconst Maps = [\r\n // {\r\n // path: \"/workplace\",\r\n // name: \"workplace\",\r\n // redirect: \"/workplace/Index\",\r\n // children: [\r\n // {\r\n // path: \"/workplace/Index\",\r\n // name: \"Index\",\r\n // component: () =>\r\n // import(/* webpackChunkName: \"index\" */ \"@/views/workplace/Index.vue\"),\r\n // meta: {\r\n // title: \"工作台\",\r\n // icon: \"wap-home-o\",\r\n // showMainMenu: false\r\n // }\r\n // }\r\n // ]\r\n // },\r\n {\r\n path: \"/blank\",\r\n name: \"Blank\",\r\n component: () =>\r\n import(/* webpackChunkName: \"index\" */ \"@/views/Blank.vue\"),\r\n meta: {\r\n title: \"\",\r\n },\r\n },\r\n];\r\nconst modulesMap = routerTile(\r\n cloneDeep(Maps.concat(classroomUsage, classroomQuery, classroomMap, check))\r\n);\r\n\r\nexport const asyncRoutes = [\r\n {\r\n path: \"/\",\r\n name: \"BasicLayout\",\r\n component: () =>\r\n import(/* webpackChunkName: \"index\" */ \"@/layouts/BasicLayout.vue\"),\r\n meta: { title: \"首页\" },\r\n redirect: \"/classroomUsage\",\r\n children: modulesMap,\r\n },\r\n {\r\n path: \"/check/List\",\r\n name: \"checkList\",\r\n component: () =>\r\n import(/* webpackChunkName: \"index\" */ \"@/views/check/List.vue\"),\r\n meta: { title: \"申请审批\" },\r\n redirect: \"/checkList\",\r\n },\r\n {\r\n path: \"/check/Detail\",\r\n name: \"checkDetail\",\r\n component: () =>\r\n import(/* webpackChunkName: \"index\" */ \"@/views/check/Detail.vue\"),\r\n meta: { title: \"详情\" },\r\n redirect: \"/checkDetail\",\r\n },\r\n\r\n {\r\n path: \"*\",\r\n name: \"404\",\r\n component: () => import(/* webpackChunkName: \"index\" */ \"@/views/404.vue\"),\r\n meta: { title: \"404\" },\r\n },\r\n {\r\n path: \"/notInDingTalk\",\r\n name: \"notInDingTalk\",\r\n component: () =>\r\n import(/* webpackChunkName: \"index\" */ \"@/views/notInDingTalk.vue\"),\r\n meta: { title: \"notInDingTalk\" },\r\n },\r\n {\r\n path: \"/noPermissions\",\r\n name: \"noPermissions\",\r\n component: () =>\r\n import(/* webpackChunkName: \"index\" */ \"@/views/noPermissions.vue\"),\r\n meta: { title: \"noPermissions\" },\r\n },\r\n];\r\n\r\nexport const constantRoutes = [];\r\n"],"sourceRoot":""}