diff --git a/.env.development b/.env.development index c894845..ac74842 100644 --- a/.env.development +++ b/.env.development @@ -1,7 +1,11 @@ # just a flag ENV = 'development' -# base api -VUE_APP_BASE_API = http://book-sqhj.ali251.langye.net -VUE_APP_UPLOAD_API = http://book-sqhj.ali251.langye.net/api/admin/upload-file +# 开发代理目标(仅 vue.config.js 读取,修改后端地址改这里即可) +# 若登录接口仍为 403:多为远端 nginx/WAF/IP 白名单限制,需在服务端放行或排查日志(非前端可单独修复) +DEV_PROXY_TARGET=http://book-sqhj.ali251.langye.net + +# base api(开发:留空走相对路径 + vue.config.js devServer.proxy,避免直连远端产生 CORS) +VUE_APP_BASE_API = +VUE_APP_UPLOAD_API = /api/admin/upload-file VUE_APP_PUBLIC='' diff --git a/dist.zip b/dist.zip new file mode 100644 index 0000000..9dd334f Binary files /dev/null and b/dist.zip differ diff --git a/src/views/bookRecord/recordIndex.vue b/src/views/bookRecord/recordIndex.vue index a287217..ce4f1fe 100644 --- a/src/views/bookRecord/recordIndex.vue +++ b/src/views/bookRecord/recordIndex.vue @@ -93,7 +93,23 @@ width: 120, fixed: 'left', - }, { + },{ + prop: 'addr', + label: '所在位置', + width: 180, + align: 'left', + fixed: 'left', + customFn: (row) => { + if (row.book_detail && row.book_detail.bookshelf && row.book_detail.line && row.book_detail.rows) + return (
{ + "书架:" + row.book_detail.bookshelf + }
{ + "位于:第" + row.book_detail.line + "列 " + } { + "第" + row.book_detail.rows + "行" + }
) + } + }, { prop: 'user.name', label: '借阅人', align: 'center', diff --git a/vue.config.js b/vue.config.js index 3eeb5de..e7a641b 100644 --- a/vue.config.js +++ b/vue.config.js @@ -15,6 +15,22 @@ const name = defaultSettings.title // page title // port = 9528 npm run dev OR npm run dev --port = 9528 const port = process.env.port || process.env.npm_config_port || 8014 // dev port +/** 本地开发接口代理目标(来自 .env.development,勿提交敏感信息) */ +const devProxyTarget = + process.env.DEV_PROXY_TARGET || 'http://book-sqhj.ali251.langye.net' + +/** 转发给后端前改写 Origin/Referer(部分 nginx/WAF 不信任 localhost 来源会直接 403) */ +function rewriteProxyOriginReferer(proxyReq) { + try { + const base = devProxyTarget.replace(/\/+$/, '') + const u = new URL(base) + proxyReq.setHeader('referer', `${base}/`) + proxyReq.setHeader('origin', `${u.protocol}//${u.host}`) + } catch (e) { + // DEV_PROXY_TARGET 非法时跳过 + } +} + // All configuration item explanations can be find in https://cli.vuejs.org/config/ module.exports = { /** @@ -53,11 +69,22 @@ module.exports = { "^/query": "", } }, - [process.env.VUE_APP_BASE_API]: { - target: process.env.VUE_APP_BASE_API, - changeOrigin: true, //配置跨域 - pathRewrite: { - ['^' + process.env.VUE_APP_BASE_API]: process.env.VUE_APP_BASE_API + // 开发环境 .env.development 中 VUE_APP_BASE_API 应为空或相对路径,使请求发往本机再由下列规则转发,避免浏览器 CORS + '^/api': { + target: devProxyTarget, + changeOrigin: true, + secure: false, + ws: true, + onProxyReq(proxyReq) { + rewriteProxyOriginReferer(proxyReq) + } + }, + '^/print': { + target: devProxyTarget, + changeOrigin: true, + secure: false, + onProxyReq(proxyReq) { + rewriteProxyOriginReferer(proxyReq) } } }