Merge branch 'dev' of http://yun.pashanhoo.com:9090/bdc/bdcdj-web into dev
Showing
25 changed files
with
561 additions
and
63 deletions
| ... | @@ -18,6 +18,7 @@ | ... | @@ -18,6 +18,7 @@ |
| 18 | "diagram-js": "^6.8.2", | 18 | "diagram-js": "^6.8.2", |
| 19 | "js-cookie": "2.2.0", | 19 | "js-cookie": "2.2.0", |
| 20 | "lodash": "^4.17.21", | 20 | "lodash": "^4.17.21", |
| 21 | "mxdraw": "^0.1.157", | ||
| 21 | "node-sass": "^4.14.1", | 22 | "node-sass": "^4.14.1", |
| 22 | "normalize.css": "7.0.0", | 23 | "normalize.css": "7.0.0", |
| 23 | "nprogress": "0.2.0", | 24 | "nprogress": "0.2.0", | ... | ... |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Description: | 2 | * @Description: |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-05-16 09:50:40 | 4 | * @LastEditTime: 2023-05-31 16:04:35 |
| 5 | --> | 5 | --> |
| 6 | <!DOCTYPE html> | 6 | <!DOCTYPE html> |
| 7 | <html> | 7 | <html> |
| ... | @@ -19,7 +19,19 @@ | ... | @@ -19,7 +19,19 @@ |
| 19 | </head> | 19 | </head> |
| 20 | <script> | 20 | <script> |
| 21 | window.baseUrl = location.origin || location.protocol + '//' + location.host | 21 | window.baseUrl = location.origin || location.protocol + '//' + location.host |
| 22 | const authorization = "bearer ATT-6-80pnPMkrvVc-i1qIGQrdkjKIPc-cH1mD" | 22 | window._config = { |
| 23 | // 是否微服务模式,业务系统根据需要读取 | ||
| 24 | cloudEnable: false, | ||
| 25 | // 是否启用单点登录 | ||
| 26 | casEnable: true, | ||
| 27 | // cas 基地址 | ||
| 28 | casBaseURL: 'http://192.168.2.38/cas', | ||
| 29 | services: { | ||
| 30 | // 配置到 contextPath 前一级 | ||
| 31 | management: 'http://192.168.2.38', | ||
| 32 | business: 'http://localhost:7001' | ||
| 33 | } | ||
| 34 | } | ||
| 23 | fetch('<%= BASE_URL %>config.json') | 35 | fetch('<%= BASE_URL %>config.json') |
| 24 | .then(response => response.json()) | 36 | .then(response => response.json()) |
| 25 | .then(config => { | 37 | .then(config => { | ... | ... |
| ... | @@ -231,5 +231,31 @@ export function getZjgcdyList (data) { | ... | @@ -231,5 +231,31 @@ export function getZjgcdyList (data) { |
| 231 | }) | 231 | }) |
| 232 | } | 232 | } |
| 233 | 233 | ||
| 234 | // 数据上报推送查询 | ||
| 235 | export function getSjsbPushList (data) { | ||
| 236 | return request({ | ||
| 237 | url: SERVER.SERVERAPI + '/rest/system/sysPushRecord/list', | ||
| 238 | method: 'post', | ||
| 239 | data | ||
| 240 | }) | ||
| 241 | } | ||
| 242 | |||
| 243 | // 数据上报推送 | ||
| 244 | export function pushSjsbRecord (data) { | ||
| 245 | return request({ | ||
| 246 | url: SERVER.SERVERAPI + '/rest/system/sysPushRecord/push', | ||
| 247 | method: 'post', | ||
| 248 | data | ||
| 249 | }) | ||
| 250 | } | ||
| 251 | |||
| 252 | // 数据上报推送 | ||
| 253 | export function detail (bsm) { | ||
| 254 | return request({ | ||
| 255 | url: SERVER.SERVERAPI + '/rest/system/sysPushRecord/detail?bsm=' + bsm, | ||
| 256 | method: 'get' | ||
| 257 | }) | ||
| 258 | } | ||
| 259 | |||
| 234 | 260 | ||
| 235 | 261 | ... | ... |
| ... | @@ -27,6 +27,7 @@ | ... | @@ -27,6 +27,7 @@ |
| 27 | </div> | 27 | </div> |
| 28 | </template> | 28 | </template> |
| 29 | <script> | 29 | <script> |
| 30 | import axios from 'axios' | ||
| 30 | import { mapGetters } from 'vuex' | 31 | import { mapGetters } from 'vuex' |
| 31 | import NoticeBar from '@/components/NoticeBar/index' | 32 | import NoticeBar from '@/components/NoticeBar/index' |
| 32 | import { | 33 | import { |
| ... | @@ -72,9 +73,20 @@ | ... | @@ -72,9 +73,20 @@ |
| 72 | }) | 73 | }) |
| 73 | }, | 74 | }, |
| 74 | logout () { | 75 | logout () { |
| 75 | const url = baseUrl + "/sso-logout?redirect_uri=" + baseUrl + "/bdcdj"; | 76 | axios.post(this.BASE_API.ip + "/management/logout").then(() => { |
| 76 | window.open(url, "_self"); | 77 | localStorage.removeItem('token') |
| 77 | sessionStorage.removeItem("navList"); | 78 | if (window._config.casEnable) { |
| 79 | window.location.href = window._config.casBaseURL + '/logout?service=' + encodeURIComponent(window.location.href); | ||
| 80 | } else { | ||
| 81 | this.$router.push({ | ||
| 82 | path: '/login', | ||
| 83 | replace: true, | ||
| 84 | query: { | ||
| 85 | redirect: router.currentRoute.value.fullPath | ||
| 86 | } | ||
| 87 | }) | ||
| 88 | } | ||
| 89 | }) | ||
| 78 | }, | 90 | }, |
| 79 | 91 | ||
| 80 | themeChange (val) { | 92 | themeChange (val) { | ... | ... |
| 1 | /* | 1 | /* |
| 2 | * @Description: | 2 | * @Description: |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-05-06 09:14:47 | 4 | * @LastEditTime: 2023-05-30 15:28:52 |
| 5 | */ | 5 | */ |
| 6 | import Vue from 'vue' | 6 | import Vue from 'vue' |
| 7 | import App from './App' | 7 | import App from './App' |
| ... | @@ -60,7 +60,7 @@ Object.keys(filters).forEach(key => { | ... | @@ -60,7 +60,7 @@ Object.keys(filters).forEach(key => { |
| 60 | }) | 60 | }) |
| 61 | Vue.config.productionTip = false | 61 | Vue.config.productionTip = false |
| 62 | 62 | ||
| 63 | axios.get("./config.json") | 63 | axios.get("/config.json") |
| 64 | .then((res) => { | 64 | .then((res) => { |
| 65 | Vue.prototype.BASE_API = res.data | 65 | Vue.prototype.BASE_API = res.data |
| 66 | localStorage.setItem('ApiUrl', JSON.stringify(res.data)); | 66 | localStorage.setItem('ApiUrl', JSON.stringify(res.data)); | ... | ... |
| 1 | /* | 1 | /* |
| 2 | * @Description: 项目权限 | 2 | * @Description: 项目权限 |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-05-16 14:10:26 | 4 | * @LastEditTime: 2023-05-31 15:55:14 |
| 5 | */ | 5 | */ |
| 6 | import Vue from 'vue' | 6 | import Vue from 'vue' |
| 7 | import router from './router' | 7 | import router from './router' |
| 8 | import store from './store' | 8 | import store from './store' |
| 9 | import axios from 'axios' | ||
| 9 | import { getMenuInfo } from '@/api/user' | 10 | import { getMenuInfo } from '@/api/user' |
| 11 | import { getUrlParam } from '@/utils/operation' | ||
| 10 | import NProgress from 'nprogress' // progress bar | 12 | import NProgress from 'nprogress' // progress bar |
| 11 | import 'nprogress/nprogress.css' // progress bar style | 13 | import 'nprogress/nprogress.css' // progress bar style |
| 12 | import getPageTitle from '@/utils/get-page-title' | 14 | import getPageTitle from '@/utils/get-page-title' |
| ... | @@ -19,6 +21,42 @@ router.beforeEach(async (to, from, next) => { | ... | @@ -19,6 +21,42 @@ router.beforeEach(async (to, from, next) => { |
| 19 | document.title = getPageTitle(to.meta.title) | 21 | document.title = getPageTitle(to.meta.title) |
| 20 | let hasAddDict = store.state.dict.addDict | 22 | let hasAddDict = store.state.dict.addDict |
| 21 | let hasAddRoute = store.state.permission.addRoutes | 23 | let hasAddRoute = store.state.permission.addRoutes |
| 24 | // cas操作 | ||
| 25 | const token = localStorage.getItem("token") | ||
| 26 | if (to.path === '/login') { | ||
| 27 | if (token) { | ||
| 28 | next('/') | ||
| 29 | } else { | ||
| 30 | next() | ||
| 31 | } | ||
| 32 | return | ||
| 33 | } | ||
| 34 | if (window._config.casEnable === true) { | ||
| 35 | let locationUrl = window.location.protocol + '//' + window.location.host + window.location.pathname; | ||
| 36 | if (!token) { | ||
| 37 | let ticket = getUrlParam('ticket'); | ||
| 38 | if (ticket) { | ||
| 39 | axios.get(Vue.prototype.BASE_API.ip + "/management/cas/validate", { | ||
| 40 | params: { | ||
| 41 | 'ticket': ticket, | ||
| 42 | 'service': locationUrl | ||
| 43 | } | ||
| 44 | }).then(async (res) => { | ||
| 45 | localStorage.setItem('token', res.data.content.accessToken) | ||
| 46 | window.location.href = localStorage.getItem('location') | ||
| 47 | |||
| 48 | }).catch(e => { | ||
| 49 | console.log(e) | ||
| 50 | }) | ||
| 51 | } else { | ||
| 52 | localStorage.setItem("location", window.location.href) | ||
| 53 | window.location.href = window._config.casBaseURL + '/login?service=' + encodeURIComponent(locationUrl); | ||
| 54 | permission() | ||
| 55 | } | ||
| 56 | } else { | ||
| 57 | permission() | ||
| 58 | } | ||
| 59 | async function permission () { | ||
| 22 | if (!hasAddDict) { | 60 | if (!hasAddDict) { |
| 23 | store.dispatch('dict/generateDic') | 61 | store.dispatch('dict/generateDic') |
| 24 | } | 62 | } |
| ... | @@ -38,6 +76,24 @@ router.beforeEach(async (to, from, next) => { | ... | @@ -38,6 +76,24 @@ router.beforeEach(async (to, from, next) => { |
| 38 | next('/home') | 76 | next('/home') |
| 39 | } | 77 | } |
| 40 | } | 78 | } |
| 79 | } | ||
| 80 | } else { | ||
| 81 | if (!token) { | ||
| 82 | const redirectData = { | ||
| 83 | path: '/login', | ||
| 84 | replace: true, | ||
| 85 | } | ||
| 86 | if (to.path) { | ||
| 87 | redirectData.query = { | ||
| 88 | ...redirectData.query, | ||
| 89 | redirect: to.path, | ||
| 90 | }; | ||
| 91 | } | ||
| 92 | next(redirectData) | ||
| 93 | return | ||
| 94 | } | ||
| 95 | next() | ||
| 96 | } | ||
| 41 | NProgress.done() | 97 | NProgress.done() |
| 42 | }) | 98 | }) |
| 43 | router.afterEach(to => { | 99 | router.afterEach(to => { | ... | ... |
| 1 | /* | 1 | /* |
| 2 | * @Description: 全局路由 | 2 | * @Description: 全局路由 |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-05-16 14:09:37 | 4 | * @LastEditTime: 2023-05-26 17:11:19 |
| 5 | */ | 5 | */ |
| 6 | import Vue from 'vue' | 6 | import Vue from 'vue' |
| 7 | import Router from 'vue-router' | 7 | import Router from 'vue-router' | ... | ... |
| 1 | @import "~@/styles/mixin.scss"; | 1 | @import "~@/styles/mixin.scss"; |
| 2 | .dialogBox { | 2 | .dialogBox { |
| 3 | border-radius: 8px; | 3 | border-radius: 4px; |
| 4 | overflow: hidden; | 4 | overflow: hidden; |
| 5 | background: #FFFFFF; | 5 | background: #FFFFFF; |
| 6 | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.10); | 6 | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.10); |
| ... | @@ -8,15 +8,33 @@ | ... | @@ -8,15 +8,33 @@ |
| 8 | .dialog_title { | 8 | .dialog_title { |
| 9 | display: flex; | 9 | display: flex; |
| 10 | position: relative; | 10 | position: relative; |
| 11 | top: -2px; | 11 | top: -4px; |
| 12 | 12 | ||
| 13 | b { | 13 | b { |
| 14 | @include flex-center; | 14 | display: flex; |
| 15 | justify-content:left; | ||
| 16 | align-items: center; | ||
| 15 | flex: 1; | 17 | flex: 1; |
| 16 | width: 100%; | 18 | width: 100%; |
| 19 | margin-left: 10px; | ||
| 20 | width: 79px; | ||
| 21 | height: 12px; | ||
| 22 | font-size: 16px; | ||
| 23 | font-family: AlibabaPuHuiTi_2_65_Medium; | ||
| 24 | color: #31333C; | ||
| 25 | line-height: 10px; | ||
| 17 | } | 26 | } |
| 18 | } | 27 | } |
| 19 | 28 | .dialog_title::before{ | |
| 29 | content: ""; | ||
| 30 | display: block; | ||
| 31 | width: 4px; | ||
| 32 | height: 18px; | ||
| 33 | background: #2E74D8; | ||
| 34 | position: absolute; | ||
| 35 | top: -4px; | ||
| 36 | left: 0px; | ||
| 37 | } | ||
| 20 | .dialog_full { | 38 | .dialog_full { |
| 21 | position: absolute; | 39 | position: absolute; |
| 22 | top: 0; | 40 | top: 0; |
| ... | @@ -46,10 +64,7 @@ | ... | @@ -46,10 +64,7 @@ |
| 46 | } | 64 | } |
| 47 | 65 | ||
| 48 | .el-dialog__header { | 66 | .el-dialog__header { |
| 49 | margin-bottom: 10px; | 67 | background: linear-gradient(270deg, #F2F3FB 0%, #5C95E5 100%); |
| 50 | color: #FFFFFF; | ||
| 51 | background-color: #FCFDFD; | ||
| 52 | border-bottom: 1px solid #E4EBF4; | ||
| 53 | } | 68 | } |
| 54 | 69 | ||
| 55 | .el-dialog__body { | 70 | .el-dialog__body { | ... | ... |
| ... | @@ -22,7 +22,7 @@ $menuHover:#249af4; | ... | @@ -22,7 +22,7 @@ $menuHover:#249af4; |
| 22 | $subMenuBg:#202B3D; | 22 | $subMenuBg:#202B3D; |
| 23 | $subMenuHover:#0e6fba; | 23 | $subMenuHover:#0e6fba; |
| 24 | 24 | ||
| 25 | $sideBarWidth: 170px; | 25 | $sideBarWidth: 180px; |
| 26 | $sideBarFontSize:15px; | 26 | $sideBarFontSize:15px; |
| 27 | 27 | ||
| 28 | // border颜色 | 28 | // border颜色 | ... | ... |
| ... | @@ -110,3 +110,26 @@ export function down (index, data) { | ... | @@ -110,3 +110,26 @@ export function down (index, data) { |
| 110 | data.splice(index, 0, downData); | 110 | data.splice(index, 0, downData); |
| 111 | } | 111 | } |
| 112 | } | 112 | } |
| 113 | |||
| 114 | |||
| 115 | export function getUrlParam (paraName) { | ||
| 116 | let url = document.location.toString(); | ||
| 117 | let arrObj = url.split('?'); | ||
| 118 | |||
| 119 | if (arrObj.length > 1) { | ||
| 120 | let arrPara = arrObj[1].split('&'); | ||
| 121 | let arr; | ||
| 122 | |||
| 123 | for (let i = 0; i < arrPara.length; i++) { | ||
| 124 | arr = arrPara[i].split('='); | ||
| 125 | |||
| 126 | if (arr != null && arr[0] === paraName) { | ||
| 127 | const index = arr[1].indexOf("#"); | ||
| 128 | return arr[1].substring(0, index); | ||
| 129 | } | ||
| 130 | } | ||
| 131 | return ''; | ||
| 132 | } else { | ||
| 133 | return ''; | ||
| 134 | } | ||
| 135 | } | ... | ... |
| 1 | /* | 1 | /* |
| 2 | * @Description: 此文件主要创建 axios 实例,然后添加请求拦截器和响应拦截器 | 2 | * @Description: 此文件主要创建 axios 实例,然后添加请求拦截器和响应拦截器 |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-05-16 14:07:58 | 4 | * @LastEditTime: 2023-05-31 15:30:02 |
| 5 | */ | 5 | */ |
| 6 | import axios from 'axios' | 6 | import axios from 'axios' |
| 7 | import { Message } from 'element-ui' | 7 | import { Message } from 'element-ui' |
| ... | @@ -23,13 +23,14 @@ const service = axios.create({ | ... | @@ -23,13 +23,14 @@ const service = axios.create({ |
| 23 | // request interceptor | 23 | // request interceptor |
| 24 | service.interceptors.request.use( | 24 | service.interceptors.request.use( |
| 25 | config => { | 25 | config => { |
| 26 | // do something before request is sent | 26 | const token = localStorage.getItem('token') |
| 27 | if (process.env.NODE_ENV === "production") { | 27 | // 添加请求头 |
| 28 | return config; | 28 | if (token) { |
| 29 | config.headers['Authorization'] = "Bearer " + token | ||
| 29 | } else { | 30 | } else { |
| 30 | config.headers.Authorization = authorization; | 31 | config.headers.delete('Authorization') |
| 31 | return config; | ||
| 32 | } | 32 | } |
| 33 | return config; | ||
| 33 | }, | 34 | }, |
| 34 | error => { | 35 | error => { |
| 35 | // do something with request error | 36 | // do something with request error |
| ... | @@ -55,6 +56,27 @@ service.interceptors.response.use( | ... | @@ -55,6 +56,27 @@ service.interceptors.response.use( |
| 55 | }, | 56 | }, |
| 56 | error => { | 57 | error => { |
| 57 | endLoadingSubCount() | 58 | endLoadingSubCount() |
| 59 | if (error.response.status === 401) { | ||
| 60 | //todo: 需要解决 一个页面多个请求,刷新后此处会触发多次 | ||
| 61 | if (window.__isNeedLogin) { | ||
| 62 | window.__isNeedLogin = false | ||
| 63 | this.$message.error('token失效,请重新登录'); | ||
| 64 | let locationUrl = window.location.protocol + '//' + window.location.host + window.location.pathname; | ||
| 65 | localStorage.removeItem('token') | ||
| 66 | if (window._config.casEnable) { | ||
| 67 | window.location.href = window._config.casBaseURL + '/logout?service=' + encodeURIComponent(locationUrl); | ||
| 68 | } else { | ||
| 69 | router.replace({ | ||
| 70 | path: '/login', | ||
| 71 | query: { | ||
| 72 | redirect: router.currentRoute.value.fullPath | ||
| 73 | } | ||
| 74 | }) | ||
| 75 | return false | ||
| 76 | } | ||
| 77 | } | ||
| 78 | |||
| 79 | } else { | ||
| 58 | // 对响应错误做点什么 | 80 | // 对响应错误做点什么 |
| 59 | Message({ | 81 | Message({ |
| 60 | message: '服务器异常,请联系管理员', | 82 | message: '服务器异常,请联系管理员', |
| ... | @@ -62,6 +84,7 @@ service.interceptors.response.use( | ... | @@ -62,6 +84,7 @@ service.interceptors.response.use( |
| 62 | duration: 5 * 1000, | 84 | duration: 5 * 1000, |
| 63 | customClass: 'messageIndex' | 85 | customClass: 'messageIndex' |
| 64 | }) | 86 | }) |
| 87 | } | ||
| 65 | return Promise.reject(error); | 88 | return Promise.reject(error); |
| 66 | } | 89 | } |
| 67 | ) | 90 | ) | ... | ... |
src/views/sjgx/sbxtsjts/dialog/detail.vue
0 → 100644
| 1 | <!-- | ||
| 2 | * @Description: | ||
| 3 | * @Autor: renchao | ||
| 4 | * @LastEditTime: 2023-05-26 15:40:23 | ||
| 5 | --> | ||
| 6 | <template> | ||
| 7 | <div class="loadingtext"> | ||
| 8 | <el-input | ||
| 9 | type="textarea" | ||
| 10 | :rows="8" | ||
| 11 | v-model="formData.json"> | ||
| 12 | </el-input> | ||
| 13 | <div class="text-center pt-10"> | ||
| 14 | <el-button type="primary" @click="pushRecord">推送</el-button> | ||
| 15 | </div> | ||
| 16 | </div> | ||
| 17 | </template> | ||
| 18 | <script> | ||
| 19 | import { pushSjsbRecord } from "@/api/zhcx.js"; | ||
| 20 | export default { | ||
| 21 | props: { | ||
| 22 | formData: { | ||
| 23 | type: Object, | ||
| 24 | default: () => { | ||
| 25 | return {} | ||
| 26 | } | ||
| 27 | } | ||
| 28 | }, | ||
| 29 | methods: { | ||
| 30 | pushRecord () { | ||
| 31 | this.$startLoading() | ||
| 32 | pushSjsbRecord(this.formData).then((res) => { | ||
| 33 | this.$endLoading() | ||
| 34 | if (res.code === 200) { | ||
| 35 | this.$message.success("推送成功"); | ||
| 36 | } else { | ||
| 37 | this.$message.warning(res.message); | ||
| 38 | } | ||
| 39 | this.$popupCacel() | ||
| 40 | }) | ||
| 41 | } | ||
| 42 | } | ||
| 43 | } | ||
| 44 | </script> |
src/views/sjgx/sbxtsjts/djbcxdata.js
0 → 100644
| 1 | import filter from '@/utils/filter.js' | ||
| 2 | let vm = null | ||
| 3 | |||
| 4 | const sendThis = (_this) => { | ||
| 5 | vm = _this | ||
| 6 | } | ||
| 7 | class data extends filter { | ||
| 8 | constructor() { | ||
| 9 | super() | ||
| 10 | } | ||
| 11 | columns () { | ||
| 12 | return [ | ||
| 13 | { | ||
| 14 | label: '序号', | ||
| 15 | type: 'index', | ||
| 16 | width: '50', | ||
| 17 | render: (h, scope) => { | ||
| 18 | return ( | ||
| 19 | <div> | ||
| 20 | {(vm.pageData.currentPage - 1) * vm.pageData.pageSize + scope.$index + 1} | ||
| 21 | </div> | ||
| 22 | ) | ||
| 23 | } | ||
| 24 | }, | ||
| 25 | { | ||
| 26 | prop: "ywh", | ||
| 27 | label: "业务号", | ||
| 28 | // width: '110', | ||
| 29 | }, | ||
| 30 | { | ||
| 31 | label: "权属状态", | ||
| 32 | // width: '80', | ||
| 33 | render: (h, scope) => { | ||
| 34 | let obj = { | ||
| 35 | "0": { | ||
| 36 | text: '成功', | ||
| 37 | color: '#4BD863' | ||
| 38 | }, | ||
| 39 | "1": { | ||
| 40 | text: '失败', | ||
| 41 | color: 'red' | ||
| 42 | } | ||
| 43 | } | ||
| 44 | let textName = obj[scope.row.status]?.text || '' | ||
| 45 | let colorName = obj[scope.row.status]?.color || '' | ||
| 46 | return ( | ||
| 47 | <div> | ||
| 48 | <span style={`color:${colorName}`}>● </span> | ||
| 49 | <span >{textName}</span> | ||
| 50 | </div> | ||
| 51 | ) | ||
| 52 | } | ||
| 53 | }, | ||
| 54 | { | ||
| 55 | prop: "createtime", | ||
| 56 | label: "创建时间", | ||
| 57 | // width: '180', | ||
| 58 | }, | ||
| 59 | { | ||
| 60 | label: '操作', | ||
| 61 | width: '130', | ||
| 62 | render: (h, scope) => { | ||
| 63 | return ( | ||
| 64 | <div> | ||
| 65 | <el-button type="text" icon="el-icon-edit-outline" onClick={() => { vm.detail(scope.row) }}>详情</el-button> | ||
| 66 | </div> | ||
| 67 | ) | ||
| 68 | } | ||
| 69 | } | ||
| 70 | ] | ||
| 71 | } | ||
| 72 | |||
| 73 | } | ||
| 74 | let datas = new data() | ||
| 75 | export { | ||
| 76 | datas, | ||
| 77 | sendThis | ||
| 78 | } |
src/views/sjgx/sbxtsjts/sbxtsjts.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div class="from-clues"> | ||
| 3 | <!-- 表单部分 --> | ||
| 4 | <div class="from-clues-header"> | ||
| 5 | <el-form :model="queryForm" ref="queryForm" @submit.native.prevent label-width="70px"> | ||
| 6 | <el-row> | ||
| 7 | <el-col :span="5"> | ||
| 8 | <el-form-item label="业务号"> | ||
| 9 | <el-input placeholder="请输入业务号" v-model="queryForm.ywh" clearable class="width100"> | ||
| 10 | </el-input> | ||
| 11 | </el-form-item> | ||
| 12 | </el-col> | ||
| 13 | |||
| 14 | <el-col :span="4" class="btnColRight"> | ||
| 15 | <el-form-item> | ||
| 16 | <el-button type="primary" native-type="submit" @click="handleSearch">查询</el-button> | ||
| 17 | </el-form-item> | ||
| 18 | </el-col> | ||
| 19 | </el-row> | ||
| 20 | </el-form> | ||
| 21 | </div> | ||
| 22 | <!-- 表格 --> | ||
| 23 | <div class="from-clues-content"> | ||
| 24 | <lb-table :page-size="pageData.size" class="loadingtext" | ||
| 25 | :current-page.sync="pageData.current" :total="tableData.total" @size-change="handleSizeChange" | ||
| 26 | @p-current-change="handleCurrentChange" :column="tableData.columns" :data="tableData.data"> | ||
| 27 | </lb-table> | ||
| 28 | </div> | ||
| 29 | </div> | ||
| 30 | </template> | ||
| 31 | <script> | ||
| 32 | import { mapGetters } from "vuex"; | ||
| 33 | import table from "@/utils/mixin/table"; | ||
| 34 | import { datas, sendThis } from "./djbcxdata"; | ||
| 35 | import { getSjsbPushList, detail } from "@/api/zhcx.js"; | ||
| 36 | |||
| 37 | export default { | ||
| 38 | name: "djbcx", | ||
| 39 | mixins: [table], | ||
| 40 | mounted () { | ||
| 41 | sendThis(this); | ||
| 42 | this.queryClick() | ||
| 43 | }, | ||
| 44 | data () { | ||
| 45 | return { | ||
| 46 | queryForm: { | ||
| 47 | qllx: "", | ||
| 48 | bdcdyh: "", | ||
| 49 | bdcqzh: "", | ||
| 50 | ywh: "", | ||
| 51 | }, | ||
| 52 | pageData: { | ||
| 53 | current: 1, | ||
| 54 | size: 10, | ||
| 55 | total: 0, | ||
| 56 | }, | ||
| 57 | tableData: { | ||
| 58 | columns: datas.columns(), | ||
| 59 | data: [], | ||
| 60 | } | ||
| 61 | } | ||
| 62 | }, | ||
| 63 | computed: { | ||
| 64 | ...mapGetters(["dictData"]) | ||
| 65 | }, | ||
| 66 | methods: { | ||
| 67 | // 初始化数据 | ||
| 68 | queryClick () { | ||
| 69 | this.$startLoading() | ||
| 70 | getSjsbPushList({ ...this.queryForm, ...this.pageData }).then((res) => { | ||
| 71 | this.$endLoading() | ||
| 72 | if (res.code === 200) { | ||
| 73 | let { total, records } = res.result; | ||
| 74 | this.tableData.data = records; | ||
| 75 | this.tableData.total = total; | ||
| 76 | } | ||
| 77 | }); | ||
| 78 | }, | ||
| 79 | openDialog (scroll) { | ||
| 80 | const h = this.$createElement; | ||
| 81 | this.$msgbox({ | ||
| 82 | title: '推送', | ||
| 83 | message: h('p', null, [ | ||
| 84 | h('span', null, '是否推送 '), | ||
| 85 | h('i', { style: 'color: teal' }, scroll.ywh), | ||
| 86 | h('span', null, ' 记录') | ||
| 87 | ]), | ||
| 88 | showCancelButton: true, | ||
| 89 | confirmButtonText: '确定', | ||
| 90 | cancelButtonText: '取消', | ||
| 91 | beforeClose: (action, instance, done) => { | ||
| 92 | if (action === 'confirm') { | ||
| 93 | this.pushRecord(scroll, done); | ||
| 94 | } else { | ||
| 95 | done(); | ||
| 96 | } | ||
| 97 | } | ||
| 98 | }).then(action => { }); | ||
| 99 | }, | ||
| 100 | detail (row) { | ||
| 101 | detail(row.bsm).then((res) => { | ||
| 102 | this.$endLoading() | ||
| 103 | if (res.code === 200) { | ||
| 104 | this.$popupDialog("详情", "sjgx/sbxtsjts/dialog/detail", res.result, "60%") | ||
| 105 | } else { | ||
| 106 | this.$message.warning(res.message); | ||
| 107 | } | ||
| 108 | }) | ||
| 109 | } | ||
| 110 | } | ||
| 111 | } | ||
| 112 | </script> | ||
| 113 | <style scoped lang="scss"> | ||
| 114 | @import "~@/styles/public.scss"; | ||
| 115 | |||
| 116 | .icon-circle { | ||
| 117 | position: relative; | ||
| 118 | } | ||
| 119 | |||
| 120 | .icon-circle::before { | ||
| 121 | content: ""; | ||
| 122 | width: 4px; | ||
| 123 | height: 4px; | ||
| 124 | border-radius: 50%; | ||
| 125 | background: #000; | ||
| 126 | top: 0px; | ||
| 127 | left: 0px; | ||
| 128 | } | ||
| 129 | </style> |
| ... | @@ -46,8 +46,8 @@ class data extends filter { | ... | @@ -46,8 +46,8 @@ class data extends filter { |
| 46 | label: '登记情形编码', | 46 | label: '登记情形编码', |
| 47 | render: (h, scope) => { | 47 | render: (h, scope) => { |
| 48 | return ( | 48 | return ( |
| 49 | <el-input placeholder="登记情形编码" class={{ repeat: scope.row.repeat }} value={scope.row[scope.column.property]} | 49 | <el-input placeholder="登记情形编码" value={scope.row[scope.column.property]} |
| 50 | onInput={(val) => { scope.row[scope.column.property] = val; orderNoChange() }} maxlength="8"> | 50 | onInput={(val) => { scope.row[scope.column.property] = val; vm.orderNoChange() }} maxlength="8"> |
| 51 | </el-input> | 51 | </el-input> |
| 52 | ) | 52 | ) |
| 53 | } | 53 | } |
| ... | @@ -58,7 +58,7 @@ class data extends filter { | ... | @@ -58,7 +58,7 @@ class data extends filter { |
| 58 | render: (h, scope) => { | 58 | render: (h, scope) => { |
| 59 | return ( | 59 | return ( |
| 60 | <el-input placeholder="登记情形名称" value={scope.row[scope.column.property]} | 60 | <el-input placeholder="登记情形名称" value={scope.row[scope.column.property]} |
| 61 | onInput={(val) => { scope.row[scope.column.property] = val; orderNoChange() }}> | 61 | onInput={(val) => { scope.row[scope.column.property] = val; vm.orderNoChange() }}> |
| 62 | </el-input> | 62 | </el-input> |
| 63 | ) | 63 | ) |
| 64 | } | 64 | } | ... | ... |
| ... | @@ -153,7 +153,9 @@ | ... | @@ -153,7 +153,9 @@ |
| 153 | activeName: "1", | 153 | activeName: "1", |
| 154 | form: { | 154 | form: { |
| 155 | bsmSqyw: '', | 155 | bsmSqyw: '', |
| 156 | ywDetail: {} | 156 | ywDetail: {}, |
| 157 | djqx: [], | ||
| 158 | clxx: [] | ||
| 157 | }, | 159 | }, |
| 158 | djqxCol: datas.djqxCol(), | 160 | djqxCol: datas.djqxCol(), |
| 159 | clxxCol: datas.clxxCol(), | 161 | clxxCol: datas.clxxCol(), |
| ... | @@ -205,15 +207,16 @@ | ... | @@ -205,15 +207,16 @@ |
| 205 | }, | 207 | }, |
| 206 | //获取业务具体明细内容 | 208 | //获取业务具体明细内容 |
| 207 | getDetail (bsmSqyw) { | 209 | getDetail (bsmSqyw) { |
| 210 | let _this = this | ||
| 208 | getSqdjywDetail(bsmSqyw).then((res) => { | 211 | getSqdjywDetail(bsmSqyw).then((res) => { |
| 209 | if (res.code === 200) { | 212 | if (res.code === 200) { |
| 210 | // this.form.bsmSqyw = res.result.bsmSqyw | 213 | _this.form.bsmSqyw = res.result.bsmSqyw |
| 211 | // this.form.ywDetail = res.result.ywDetail | 214 | _this.form.ywDetail = res.result.ywDetail |
| 212 | this.$set(this.form, 'djqx', res.result.djqx) | 215 | _this.$set(_this.form, 'djqx', res.result.djqx) |
| 213 | // this.$set(this.form, 'sxql', res.result.sxql) | 216 | _this.$set(_this.form, 'sxql', res.result.sxql) |
| 214 | this.$set(this.form, 'clxx', res.result.clxx) | 217 | _this.$set(_this.form, 'clxx', res.result.clxx) |
| 215 | // this.$set(this.form, 'sxzt', res.result.sxzt) | 218 | _this.$set(_this.form, 'sxzt', res.result.sxzt) |
| 216 | // this.$set(this.form, 'ywDetail', res.result.ywDetail) | 219 | _this.$set(_this.form, 'ywDetail', res.result.ywDetail) |
| 217 | } else { | 220 | } else { |
| 218 | this.$alert(res.message) | 221 | this.$alert(res.message) |
| 219 | } | 222 | } |
| ... | @@ -289,7 +292,6 @@ | ... | @@ -289,7 +292,6 @@ |
| 289 | .el-radio-group { | 292 | .el-radio-group { |
| 290 | white-space: nowrap; | 293 | white-space: nowrap; |
| 291 | } | 294 | } |
| 292 | |||
| 293 | .form { | 295 | .form { |
| 294 | background: #eee; | 296 | background: #eee; |
| 295 | padding: 0 10px; | 297 | padding: 0 10px; | ... | ... |
src/views/workflow/components/cad.dwg
0 → 100644
No preview for this file type
| 1 | <!-- | 1 | <!-- |
| 2 | * @Description: | 2 | * @Description: |
| 3 | * @Autor: renchao | 3 | * @Autor: renchao |
| 4 | * @LastEditTime: 2023-05-17 10:40:23 | 4 | * @LastEditTime: 2023-05-31 16:04:44 |
| 5 | --> | 5 | --> |
| 6 | <template> | 6 | <template> |
| 7 | <div class="from-clues loadingtext" v-Loading="loading" element-loading-text="拼命加载中..." style="height:720px"> | 7 | <div class="from-clues loadingtext" v-Loading="loading" element-loading-text="拼命加载中..." style="height:720px"> |
| ... | @@ -11,7 +11,8 @@ | ... | @@ -11,7 +11,8 @@ |
| 11 | v-for="(item, index) in headTabBdcqz" :key="index"></el-tab-pane> | 11 | v-for="(item, index) in headTabBdcqz" :key="index"></el-tab-pane> |
| 12 | </el-tabs> | 12 | </el-tabs> |
| 13 | <div class="no-data" v-if="headTabBdcqz.length == 0">暂无数据</div> | 13 | <div class="no-data" v-if="headTabBdcqz.length == 0">暂无数据</div> |
| 14 | <img :src="previewImage" class="imgClass"> | 14 | <!-- <img :src="previewImage" class="imgClass"> --> |
| 15 | <canvas ref="canvas" :width="canvasWidth" :height="canvasHeight"></canvas> | ||
| 15 | </div> | 16 | </div> |
| 16 | </template> | 17 | </template> |
| 17 | 18 | ||
| ... | @@ -20,8 +21,6 @@ | ... | @@ -20,8 +21,6 @@ |
| 20 | import { getSlsqBdcqzList, bdcqzPreview } from "@/api/bdcqz.js" | 21 | import { getSlsqBdcqzList, bdcqzPreview } from "@/api/bdcqz.js" |
| 21 | export default { | 22 | export default { |
| 22 | name: "zsyl", | 23 | name: "zsyl", |
| 23 | components: { | ||
| 24 | }, | ||
| 25 | props: { | 24 | props: { |
| 26 | formData: { | 25 | formData: { |
| 27 | type: Object, | 26 | type: Object, |
| ... | @@ -30,6 +29,10 @@ | ... | @@ -30,6 +29,10 @@ |
| 30 | }, | 29 | }, |
| 31 | data () { | 30 | data () { |
| 32 | return { | 31 | return { |
| 32 | imgSrc: require('@/image/bdcqz/bdcqzs2.jpg'), | ||
| 33 | canvasWidth: 1018, | ||
| 34 | canvasHeight: 720, | ||
| 35 | |||
| 33 | loading: false, | 36 | loading: false, |
| 34 | //印刷序列号集合 | 37 | //印刷序列号集合 |
| 35 | ysxlh: [], | 38 | ysxlh: [], |
| ... | @@ -79,28 +82,54 @@ | ... | @@ -79,28 +82,54 @@ |
| 79 | this.activeName = res.result[0].bsmBdcqz | 82 | this.activeName = res.result[0].bsmBdcqz |
| 80 | this.bdcqz = res.result[0] | 83 | this.bdcqz = res.result[0] |
| 81 | this.headTabBdcqz = res.result | 84 | this.headTabBdcqz = res.result |
| 82 | this.getBdcqzPreview(); | 85 | this.drawTextOnImage(); |
| 83 | } else { | ||
| 84 | this.loading = false | ||
| 85 | } | 86 | } |
| 86 | } | 87 | } |
| 87 | 88 | this.loading = false | |
| 88 | }) | 89 | }) |
| 89 | }, | 90 | }, |
| 90 | //tab表头切换方法 | 91 | //tab表头切换方法 |
| 91 | handleClick (e) { | 92 | handleClick (e) { |
| 92 | this.bdcqz = this.headTabBdcqz[e.index - 0] | 93 | this.bdcqz = this.headTabBdcqz[e.index - 0] |
| 93 | this.activeName = this.headTabBdcqz.bsmBdcqz | 94 | this.activeName = this.headTabBdcqz.bsmBdcqz |
| 94 | this.getBdcqzPreview(); | 95 | // this.getBdcqzPreview(); |
| 95 | }, | 96 | this.drawTextOnImage() |
| 96 | getBdcqzPreview () { | ||
| 97 | bdcqzPreview(this.bdcqz).then(res => { | ||
| 98 | this.loading = false | ||
| 99 | let blob = new Blob([res]); | ||
| 100 | let url = window.URL.createObjectURL(blob); | ||
| 101 | this.previewImage = url; | ||
| 102 | }) | ||
| 103 | }, | 97 | }, |
| 98 | // getBdcqzPreview () { | ||
| 99 | // bdcqzPreview(this.bdcqz).then(res => { | ||
| 100 | // this.loading = false | ||
| 101 | // let blob = new Blob([res]); | ||
| 102 | // let url = window.URL.createObjectURL(blob); | ||
| 103 | // this.previewImage = url; | ||
| 104 | // this.drawTextOnImage() | ||
| 105 | // }) | ||
| 106 | // }, | ||
| 107 | drawTextOnImage () { | ||
| 108 | const canvas = this.$refs.canvas; | ||
| 109 | const context = canvas.getContext('2d'); | ||
| 110 | const image = new Image(); | ||
| 111 | image.onload = () => { | ||
| 112 | context.drawImage(image, 0, 0); | ||
| 113 | context.font = '15px 楷体'; | ||
| 114 | context.fillStyle = '#000000'; | ||
| 115 | context.fillText(this.bdcqz.sjjc ? this.bdcqz.sjjc : '', 60, 56); | ||
| 116 | context.fillText(this.bdcqz.djnd ? this.bdcqz.djnd : '', 113, 56); | ||
| 117 | context.fillText(this.bdcqz.sxqc ? this.bdcqz.sxqc : '', 180, 56); | ||
| 118 | context.fillText(this.bdcqz.sxh ? this.bdcqz.sxh : '', 370, 56); | ||
| 119 | context.fillText(this.bdcqz.qlr ? this.bdcqz.qlr : '', 138, 97); | ||
| 120 | context.fillText(this.bdcqz.gyqk ? this.bdcqz.gyqk : '', 138, 138); | ||
| 121 | context.fillText(this.bdcqz.zl ? this.bdcqz.zl : '', 138, 180); | ||
| 122 | context.fillText(this.bdcqz.bdcdyh ? this.bdcqz.bdcdyh : '', 138, 223); | ||
| 123 | context.fillText(this.bdcqz.qllx ? this.bdcqz.qllx : '', 138, 263); | ||
| 124 | context.fillText(this.bdcqz.qlxz ? this.bdcqz.qlxz : '', 138, 303); | ||
| 125 | context.fillText(this.bdcqz.yt ? this.bdcqz.yt : '', 138, 346); | ||
| 126 | context.fillText(this.bdcqz.mj ? this.bdcqz.mj : '', 138, 386); | ||
| 127 | context.fillText(this.bdcqz.syqx ? this.bdcqz.syqx : '', 138, 429); | ||
| 128 | context.fillText(this.bdcqz.qlqtzk ? this.bdcqz.qlqtzk : '', 138, 469); | ||
| 129 | context.fillText(this.bdcqz.fj ? this.bdcqz.fj : '', 580, 100); | ||
| 130 | } | ||
| 131 | image.src = this.imgSrc; | ||
| 132 | } | ||
| 104 | } | 133 | } |
| 105 | } | 134 | } |
| 106 | </script> | 135 | </script> | ... | ... |
src/views/workflow/components/zdt.vue
0 → 100644
| 1 | <!-- | ||
| 2 | 功能:初始化功能描述 | ||
| 3 | 作者:calliope | ||
| 4 | --> | ||
| 5 | <template> | ||
| 6 | <canvas id="mxcad"> | ||
| 7 | </canvas> | ||
| 8 | </template> | ||
| 9 | <script> | ||
| 10 | import Mx from "mxdraw" | ||
| 11 | export default { | ||
| 12 | mounted () { | ||
| 13 | // 动态加载 js库核心代码 | ||
| 14 | Mx.loadCoreCode().then(() => { | ||
| 15 | // Mx.MxFun.setMxServer("ws://localhost:5090") // 开启socket通信 可编辑图纸 | ||
| 16 | // 创建控件对象 | ||
| 17 | Mx.MxFun.createMxObject({ | ||
| 18 | canvasId: "mxcad", // canvas元素的id | ||
| 19 | cadFile: "./cad.dwg", // http方式(预览): 加载public/demo文件夹下转换后的图纸 | ||
| 20 | // cadFile: "test2.dwg", // socket通信方式请直接提供图纸名称 如:text.dwg | ||
| 21 | callback: (mxDraw, { | ||
| 22 | canvas, | ||
| 23 | canvasParent | ||
| 24 | }) => { | ||
| 25 | // 可以拿到canvas元素和它的父级元素 | ||
| 26 | console.log(canvas, canvasParent) | ||
| 27 | console.log(mxDraw) | ||
| 28 | // 拿到图层数据 | ||
| 29 | mxDraw.addEvent('uiSetLayerData', (listLayer) => { | ||
| 30 | console.log(listLayer) | ||
| 31 | }) | ||
| 32 | }, | ||
| 33 | isNewFile: true // 是否新建文件 | ||
| 34 | }) | ||
| 35 | }) | ||
| 36 | } | ||
| 37 | } | ||
| 38 | </script> | ||
| 39 | <style scoped lang='scss'> | ||
| 40 | #cad-container { | ||
| 41 | width: 100%; | ||
| 42 | height: 100%; | ||
| 43 | } | ||
| 44 | </style> | ||
| ... | \ 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-05-17 10:38:37 | 4 | * @LastEditTime: 2023-05-29 14:39:11 |
| 5 | */ | 5 | */ |
| 6 | //流程环节操作按钮 | 6 | //流程环节操作按钮 |
| 7 | export function getForm (tabName, djywbm) { | 7 | export function getForm (tabName, djywbm) { |
| ... | @@ -86,6 +86,9 @@ export function getForm (tabName, djywbm) { | ... | @@ -86,6 +86,9 @@ export function getForm (tabName, djywbm) { |
| 86 | case "fzxx": | 86 | case "fzxx": |
| 87 | form = require("@/views/workflow/components/fzxx.vue"); | 87 | form = require("@/views/workflow/components/fzxx.vue"); |
| 88 | break; | 88 | break; |
| 89 | case "zdt": | ||
| 90 | form = require("@/views/workflow/components/zdt.vue"); | ||
| 91 | break; | ||
| 89 | default: | 92 | default: |
| 90 | form = require("@/views/error-page/404.vue"); | 93 | form = require("@/views/error-page/404.vue"); |
| 91 | break; | 94 | break; | ... | ... |
| ... | @@ -6,7 +6,6 @@ function resolve (dir) { | ... | @@ -6,7 +6,6 @@ function resolve (dir) { |
| 6 | return path.join(__dirname, dir) | 6 | return path.join(__dirname, dir) |
| 7 | } | 7 | } |
| 8 | 8 | ||
| 9 | const name = defaultSettings.title | ||
| 10 | const port = process.env.port || process.env.npm_config_port || 8888 // dev port | 9 | const port = process.env.port || process.env.npm_config_port || 8888 // dev port |
| 11 | 10 | ||
| 12 | // All configuration item explanations can be find in https://cli.vuejs.org/config/ | 11 | // All configuration item explanations can be find in https://cli.vuejs.org/config/ |
| ... | @@ -19,7 +18,7 @@ module.exports = { | ... | @@ -19,7 +18,7 @@ module.exports = { |
| 19 | * Detail: https://cli.vuejs.org/config/#publicpath | 18 | * Detail: https://cli.vuejs.org/config/#publicpath |
| 20 | */ | 19 | */ |
| 21 | // 加载资源的路径 | 20 | // 加载资源的路径 |
| 22 | publicPath: '/bdcdj/', | 21 | publicPath: '/dj/', |
| 23 | // 设置项目打包生成的文件的存储目录,可以是静态路径也可以是相对路径 | 22 | // 设置项目打包生成的文件的存储目录,可以是静态路径也可以是相对路径 |
| 24 | outputDir: 'dist', | 23 | outputDir: 'dist', |
| 25 | // 设置放置打包生成的静态资源 (js、css、img、fonts) 的目录 | 24 | // 设置放置打包生成的静态资源 (js、css、img、fonts) 的目录 |
| ... | @@ -60,7 +59,6 @@ module.exports = { | ... | @@ -60,7 +59,6 @@ module.exports = { |
| 60 | }, | 59 | }, |
| 61 | // configureWebpack通过操作对象的形式,来修改默认的webpack配置 | 60 | // configureWebpack通过操作对象的形式,来修改默认的webpack配置 |
| 62 | configureWebpack: { | 61 | configureWebpack: { |
| 63 | name: name, | ||
| 64 | entry: { | 62 | entry: { |
| 65 | app: './src/main.js' | 63 | app: './src/main.js' |
| 66 | }, | 64 | }, |
| ... | @@ -69,7 +67,7 @@ module.exports = { | ... | @@ -69,7 +67,7 @@ module.exports = { |
| 69 | '@': resolve('src') | 67 | '@': resolve('src') |
| 70 | } | 68 | } |
| 71 | }, | 69 | }, |
| 72 | devtool: '#eval-source-map' //测试 | 70 | devtool: process.env.NODE_ENV === 'development' ? '#eval-source-map' : false |
| 73 | }, | 71 | }, |
| 74 | // chainWebpack通过链式编程的形式,来修改默认的webpack配置 | 72 | // chainWebpack通过链式编程的形式,来修改默认的webpack配置 |
| 75 | chainWebpack (config) { | 73 | chainWebpack (config) { |
| ... | @@ -83,8 +81,8 @@ module.exports = { | ... | @@ -83,8 +81,8 @@ module.exports = { |
| 83 | include: 'initial' | 81 | include: 'initial' |
| 84 | } | 82 | } |
| 85 | ]) | 83 | ]) |
| 86 | config.plugins.delete('prefetch') | ||
| 87 | // when there are many pages, it will cause too many meaningscss requests | 84 | // when there are many pages, it will cause too many meaningscss requests |
| 85 | config.plugins.delete('prefetch') | ||
| 88 | config.module | 86 | config.module |
| 89 | .rule('svg') | 87 | .rule('svg') |
| 90 | .exclude.add(resolve('src/image/icons')) | 88 | .exclude.add(resolve('src/image/icons')) | ... | ... |
-
Please register or sign in to post a comment