1
This commit is contained in:
@@ -857,7 +857,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<!-- 操作列(统一放在最右侧) -->
|
<!-- 操作列(统一放在最右侧) -->
|
||||||
<el-table-column label="操作" fixed="right" :width="isMobile ? 60 : 288" align="center" class-name="action-column">
|
<el-table-column label="操作" fixed="right" :width="isMobile ? 60 : 330" align="center" class-name="action-column">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<!-- 移动端:悬浮操作按钮 -->
|
<!-- 移动端:悬浮操作按钮 -->
|
||||||
<div v-if="isMobile" class="mobile-action-wrapper">
|
<div v-if="isMobile" class="mobile-action-wrapper">
|
||||||
@@ -896,6 +896,11 @@
|
|||||||
icon="el-icon-copy-document">
|
icon="el-icon-copy-document">
|
||||||
复制物流链接
|
复制物流链接
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item
|
||||||
|
:command="{action: 'copyBasketShip', row: scope.row}"
|
||||||
|
icon="el-icon-document-copy">
|
||||||
|
篮子发货摘要
|
||||||
|
</el-dropdown-item>
|
||||||
<el-dropdown-item
|
<el-dropdown-item
|
||||||
:command="{action: 'copyReturn', row: scope.row}"
|
:command="{action: 'copyReturn', row: scope.row}"
|
||||||
icon="el-icon-document-copy">
|
icon="el-icon-document-copy">
|
||||||
@@ -949,6 +954,7 @@
|
|||||||
<el-button v-if="scope.row.thirdPartyOrderNo" type="text" size="mini" class="jd-act-link" icon="el-icon-copy-document" @click="copyToClipboard(scope.row.thirdPartyOrderNo)" title="复制第三方单号">三方</el-button>
|
<el-button v-if="scope.row.thirdPartyOrderNo" type="text" size="mini" class="jd-act-link" icon="el-icon-copy-document" @click="copyToClipboard(scope.row.thirdPartyOrderNo)" title="复制第三方单号">三方</el-button>
|
||||||
<el-button type="text" size="mini" class="jd-act-link" icon="el-icon-copy-document" @click="copyToClipboard(scope.row.address)" title="复制地址">地址</el-button>
|
<el-button type="text" size="mini" class="jd-act-link" icon="el-icon-copy-document" @click="copyToClipboard(scope.row.address)" title="复制地址">地址</el-button>
|
||||||
<el-button v-if="scope.row.logisticsLink" type="text" size="mini" class="jd-act-link" icon="el-icon-copy-document" @click="copyToClipboard(scope.row.logisticsLink)" title="复制物流链接">物流</el-button>
|
<el-button v-if="scope.row.logisticsLink" type="text" size="mini" class="jd-act-link" icon="el-icon-copy-document" @click="copyToClipboard(scope.row.logisticsLink)" title="复制物流链接">物流</el-button>
|
||||||
|
<el-button type="text" size="mini" class="jd-act-link" icon="el-icon-document-copy" @click="copyBasketShipSummary(scope.row)" title="复制篮子发货摘要(型号、地址、物流)">篮子</el-button>
|
||||||
<el-button type="text" size="mini" class="jd-act-link" @click="copyReturnInfo(scope.row)" title="复制退货信息">退货</el-button>
|
<el-button type="text" size="mini" class="jd-act-link" @click="copyReturnInfo(scope.row)" title="复制退货信息">退货</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="jd-action-row jd-action-row--doc">
|
<div class="jd-action-row jd-action-row--doc">
|
||||||
@@ -1615,6 +1621,9 @@ export default {
|
|||||||
case 'copyLogistics':
|
case 'copyLogistics':
|
||||||
this.copyToClipboard(row.logisticsLink)
|
this.copyToClipboard(row.logisticsLink)
|
||||||
break
|
break
|
||||||
|
case 'copyBasketShip':
|
||||||
|
this.copyBasketShipSummary(row)
|
||||||
|
break
|
||||||
case 'copyReturn':
|
case 'copyReturn':
|
||||||
this.copyReturnInfo(row)
|
this.copyReturnInfo(row)
|
||||||
break
|
break
|
||||||
@@ -2113,27 +2122,50 @@ export default {
|
|||||||
this.loading = false
|
this.loading = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
/** 复制篮子群「发货摘要」:型号 + 整段地址(去空白) + 物流短链 */
|
||||||
|
buildBasketShipSummaryText(row) {
|
||||||
|
if (!row) return ''
|
||||||
|
const model = (row.modelNumber != null ? String(row.modelNumber).trim() : '') || '—'
|
||||||
|
const addrRaw = row.address != null ? String(row.address).trim() : ''
|
||||||
|
const addr = (addrRaw.replace(/\s+/g, '')) || '—'
|
||||||
|
const url = this.normalizeBasketLogisticsUrl(row.logisticsLink)
|
||||||
|
const sep = '————————————'
|
||||||
|
return `「发货摘要」\n${sep}\n型号: ${model}\n地址:${addr}\n物流:${url}\n`
|
||||||
|
},
|
||||||
|
normalizeBasketLogisticsUrl(link) {
|
||||||
|
if (link == null || !String(link).trim()) return '—'
|
||||||
|
let u = String(link).trim()
|
||||||
|
if (!/^https?:\/\//i.test(u)) {
|
||||||
|
u = 'https://' + u.replace(/^\/+/, '')
|
||||||
|
}
|
||||||
|
return u
|
||||||
|
},
|
||||||
|
copyBasketShipSummary(row) {
|
||||||
|
this.copyToClipboard(this.buildBasketShipSummaryText(row), '已复制篮子发货摘要')
|
||||||
|
},
|
||||||
/** 导出按钮操作 */
|
/** 导出按钮操作 */
|
||||||
handleExport() {
|
handleExport() {
|
||||||
this.prepareQueryParams()
|
this.prepareQueryParams()
|
||||||
this.download('/system/jdorder/export', this.queryParams, `京东订单数据_${new Date().getTime()}.xlsx`)
|
this.download('/system/jdorder/export', this.queryParams, `京东订单数据_${new Date().getTime()}.xlsx`)
|
||||||
},
|
},
|
||||||
/** 复制到剪贴板 */
|
/** 复制到剪贴板;successMsg 不传时用默认提示 */
|
||||||
copyToClipboard(text) {
|
copyToClipboard(text, successMsg) {
|
||||||
|
const tip = successMsg || '已复制到剪贴板'
|
||||||
if (navigator.clipboard && window.isSecureContext) {
|
if (navigator.clipboard && window.isSecureContext) {
|
||||||
// 使用现代 Clipboard API
|
// 使用现代 Clipboard API
|
||||||
navigator.clipboard.writeText(text).then(() => {
|
navigator.clipboard.writeText(text).then(() => {
|
||||||
this.$message.success('已复制到剪贴板')
|
this.$message.success(tip)
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
this.fallbackCopyTextToClipboard(text)
|
this.fallbackCopyTextToClipboard(text, tip)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// 降级方案
|
// 降级方案
|
||||||
this.fallbackCopyTextToClipboard(text)
|
this.fallbackCopyTextToClipboard(text, tip)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/** 降级复制方案 */
|
/** 降级复制方案 */
|
||||||
fallbackCopyTextToClipboard(text) {
|
fallbackCopyTextToClipboard(text, successMsg) {
|
||||||
|
const tip = successMsg || '已复制到剪贴板'
|
||||||
const textArea = document.createElement('textarea')
|
const textArea = document.createElement('textarea')
|
||||||
textArea.value = text
|
textArea.value = text
|
||||||
textArea.style.position = 'fixed'
|
textArea.style.position = 'fixed'
|
||||||
@@ -2146,7 +2178,7 @@ export default {
|
|||||||
try {
|
try {
|
||||||
const successful = document.execCommand('copy')
|
const successful = document.execCommand('copy')
|
||||||
if (successful) {
|
if (successful) {
|
||||||
this.$message.success('已复制到剪贴板')
|
this.$message.success(tip)
|
||||||
} else {
|
} else {
|
||||||
this.$message.error('复制失败,请手动复制')
|
this.$message.error('复制失败,请手动复制')
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user