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)
}
}
}