refactor(mobile): 移动端上传/展示去 IP 化,统一公网域名并支持 NODE_ENV 环境感知
This commit is contained in:
@ -81,6 +81,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getBaseUrl } from "../../../utils/request";
|
||||
|
||||
export default {
|
||||
name: "TaskTreeNode",
|
||||
props: {
|
||||
@ -118,8 +120,8 @@ export default {
|
||||
if (!url) return "";
|
||||
if (url.startsWith("http")) return url;
|
||||
// 后端返回 /api/v1/upload/files/xxx.jpg,需要补全域名
|
||||
const DOMAIN = "http://192.168.9.80:8011";
|
||||
return DOMAIN + (url.startsWith("/") ? url : "/" + url);
|
||||
const domain = getBaseUrl().replace(/\/api.*$/, '');
|
||||
return domain + (url.startsWith("/") ? url : "/" + url);
|
||||
},
|
||||
previewImage(urls, index) {
|
||||
const fullUrls = (urls || []).map(img => this.imageUrl(img));
|
||||
|
||||
@ -200,7 +200,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import request, { get, post, patch, put } from "../../utils/request";
|
||||
import request, { get, post, patch, put, getBaseUrl } from "../../utils/request";
|
||||
import { setUserNameMap, formatUserName, formatUserAvatar } from "../../utils/format";
|
||||
import WorkspaceArea from "./components/WorkspaceArea.vue";
|
||||
import TreeCanvas from "./components/TreeCanvas.vue";
|
||||
@ -316,7 +316,7 @@ export default {
|
||||
openEditRecord({ task, record }) { this.recordPopup = { visible: true, task }; this.recordForm = { recordId: record.id, remark: record.remark || "", images: record.images || [], pendingCount: 0 }; this.isUploading = false; },
|
||||
closeRecordPopup() { this.recordPopup = { visible: false, task: null }; },
|
||||
async handleChooseImage() { const maxSlots = 9 - (this.recordForm.images.length + this.recordForm.pendingCount); if (maxSlots <= 0) return; const chooseRes = await new Promise((resolve, reject) => { uni.chooseImage({ count: maxSlots, sizeType: ["compressed"], sourceType: ["camera", "album"], success: resolve, fail: reject }); }).catch(() => null); if (!chooseRes || !chooseRes.tempFilePaths || !chooseRes.tempFilePaths.length) return; let compressSkipCount = 0; const compressedPaths = []; for (const p of chooseRes.tempFilePaths) { try { const compressed = await new Promise((resolve, reject) => { uni.compressImage({ src: p, quality: 60, success: resolve, fail: reject }); }); compressedPaths.push(compressed.tempFilePath); } catch { compressSkipCount++; } } if (!compressedPaths.length) return; this.isUploading = true; this.recordForm.pendingCount += compressedPaths.length; for (const path of compressedPaths) { const url = await this.uploadFile(path); if (url) this.recordForm.images.push(url); this.recordForm.pendingCount--; } this.isUploading = false; },
|
||||
uploadFile(filePath) { return new Promise((resolve) => { uni.uploadFile({ url: "http://192.168.9.80:8011/api/v1/upload/", filePath, name: "file", success(res) { try { const data = JSON.parse(res.data); resolve(data.url || null); } catch { resolve(null); } }, fail: () => resolve(null) }); }); },
|
||||
uploadFile(filePath) { return new Promise((resolve) => { uni.uploadFile({ url: getBaseUrl() + "/upload/", filePath, name: "file", success(res) { try { const data = JSON.parse(res.data); resolve(data.url || null); } catch { resolve(null); } }, fail: () => resolve(null) }); }); },
|
||||
removeRecordImage(i) { this.recordForm.images.splice(i, 1); },
|
||||
previewRecordImage(i) { uni.previewImage({ urls: this.recordForm.images, current: i }); },
|
||||
async doSaveRecord() { if (this.isUploading) return; this.recordSaving = true; try { const payload = { remark: this.recordForm.remark.trim(), images: this.recordForm.images }; if (this.recordForm.recordId) await put(`/records/${this.recordForm.recordId}`, payload); else await patch(`/tasks/${this.recordPopup.task.id}/records`, payload); uni.showToast({ title: "已保存", icon: "success" }); this.closeRecordPopup(); this.doQuery(this.product.serial_number); } catch {} finally { this.recordSaving = false; } },
|
||||
|
||||
@ -52,7 +52,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import request, { get, put } from "../../utils/request";
|
||||
import request, { get, put, getBaseUrl } from "../../utils/request";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
@ -116,7 +116,8 @@ export default {
|
||||
imageUrl(url) {
|
||||
if (!url) return "";
|
||||
if (url.startsWith("http")) return url;
|
||||
return "http://192.168.9.80:8011" + (url.startsWith("/") ? url : "/" + url);
|
||||
const domain = getBaseUrl().replace(/\/api.*$/, '');
|
||||
return domain + (url.startsWith("/") ? url : "/" + url);
|
||||
},
|
||||
|
||||
previewImage(urls, index) {
|
||||
|
||||
Reference in New Issue
Block a user