Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-ui
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-ui
Commits
b0e592e5
提交
b0e592e5
authored
8月 18, 2025
作者:
lidongxu
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dev'
上级
c2eb0114
3187dd24
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
15 个修改的文件
包含
233 行增加
和
47 行删除
+233
-47
.env.development
.env.development
+4
-2
.env.production
.env.production
+2
-0
.env.staging
.env.staging
+2
-0
index.js
src/api/index.js
+1
-0
design.js
src/api/jimu/design.js
+19
-0
logistics_receipt.js
src/api/scm/logistics_receipt.js
+19
-0
index.vue
src/components/VersionNotice/index.vue
+2
-2
Navbar.vue
src/layout/components/Navbar.vue
+4
-2
permission.js
src/permission.js
+10
-9
dict.js
src/utils/dict.js
+1
-0
index.vue
src/views/jimureport/design/index.vue
+113
-13
index.vue
src/views/jimureport/list/index.vue
+40
-15
index.vue
src/views/jimureport/manager/index.vue
+12
-2
index.vue
src/views/promotion/task/index.vue
+4
-2
index.vue
src/views/scm/logistics_receipt/index.vue
+0
-0
没有找到文件。
.env.development
浏览文件 @
b0e592e5
...
...
@@ -16,9 +16,11 @@ VITE_APP_REDIRECT_URL = 'http://localhost:8085'
# 积木报表服务地址
VITE_APP_REPORT_URL = 'https://sfa-qa.wxl66.cn'
# 积木报表预览地址
VITE_APP_REPORT_PREVIEW_URL = 'https://sfa-qa.wxl66.cn/report/jmreport/view'
VITE_APP_REPORT_PREVIEW_URL = '/report/jmreport/view'
# 积木报表分享预览地址
VITE_APP_REPORT_SHARE_PREVIEW_URL = '/report'
# 积木报表编辑地址
VITE_APP_REPORT_EDIT_URL = '
https://sfa-qa.wxl66.cn
/report/jmreport/index'
VITE_APP_REPORT_EDIT_URL = '/report/jmreport/index'
# 模板表格
VITE_APP_PLAN_TEMPLATE_EXCEL = 'https://link-promotion.oss-cn-shanghai.aliyuncs.com/file/%E6%96%B0%E5%A2%9E%E6%88%96%E4%BF%AE%E6%94%B9%E8%AE%A1%E5%88%92-%E6%A8%A1%E6%9D%BF4.0.xlsx'
.env.production
浏览文件 @
b0e592e5
...
...
@@ -16,6 +16,8 @@ VITE_APP_REDIRECT_URL = 'https://sfa.wxl66.cn/link/'
VITE_APP_REPORT_URL = 'https://sfa.wxl66.cn'
# 积木报表预览地址
VITE_APP_REPORT_PREVIEW_URL = '/report/jmreport/view'
# 积木报表分享预览地址
VITE_APP_REPORT_SHARE_PREVIEW_URL = '/report'
# 积木报表编辑地址
VITE_APP_REPORT_EDIT_URL = '/report/jmreport/index'
...
...
.env.staging
浏览文件 @
b0e592e5
...
...
@@ -15,6 +15,8 @@ VITE_APP_REDIRECT_URL = 'https://sfa-qa.wxl66.cn/'
VITE_APP_REPORT_URL = 'https://sfa-qa.wxl66.cn'
# 积木报表预览地址
VITE_APP_REPORT_PREVIEW_URL = '/report/jmreport/view'
# 积木报表分享预览地址
VITE_APP_REPORT_SHARE_PREVIEW_URL = '/report'
# 积木报表编辑地址
VITE_APP_REPORT_EDIT_URL = '/report/jmreport/index'
...
...
src/api/index.js
浏览文件 @
b0e592e5
...
...
@@ -25,6 +25,7 @@ export * from './monitor/online'
export
*
from
'./monitor/server'
export
*
from
'./promotion/plan'
export
*
from
'./promotion/task'
export
*
from
'./scm/logistics_receipt'
export
*
from
'./system/dict/data'
export
*
from
'./system/dict/type'
export
*
from
'./system/attendance'
...
...
src/api/jimu/design.js
浏览文件 @
b0e592e5
...
...
@@ -54,3 +54,22 @@ export function importReportAPI(data) {
}
})
}
// 查询分享报表连接
export
function
selShareReportAPI
(
params
)
{
return
request
({
url
:
`/report/jmreport/share/queryJurisdiction`
,
params
})
}
// 创建/编辑分享链接参数
export
function
addOrEditShareReportAPI
(
data
)
{
return
request
({
url
:
`/report/jmreport/share/addAndEdit`
,
method
:
'POST'
,
data
})
}
src/api/scm/logistics_receipt.js
0 → 100644
浏览文件 @
b0e592e5
import
request
from
'@/utils/request'
// 勤策发货单列表查询
export
const
getLogisticsReceiptListAPI
=
(
params
)
=>
{
return
request
({
url
:
'/bi/ordersent/query/page'
,
params
})
}
// 勤策发货单-回单照片是否完整&物流状态设置
export
const
setLogisticsReceiptStatusAPI
=
(
data
)
=>
{
return
request
({
url
:
'/bi/ordersent/core/update'
,
method
:
'PUT'
,
data
})
}
src/components/VersionNotice/index.vue
浏览文件 @
b0e592e5
...
...
@@ -78,8 +78,8 @@ const handleClose = () => {
};
const
handleViewDetail
=
()
=>
{
// 跳转到飞书文档查看版本更新详情文档
// emit('viewDetail');
// 跳转到飞书文档查看版本更新详情文档
(打开新标签页面)
window
.
open
(
'https://wangxiaolu.feishu.cn/docx/MJf8d6Rrsood6IxnIsKch1clnwc'
,
'_blank'
)
};
const
handleConfirm
=
()
=>
{
...
...
src/layout/components/Navbar.vue
浏览文件 @
b0e592e5
...
...
@@ -105,8 +105,9 @@ const showQuit = !window.h5sdk; // 判断飞书客户端内,则不显示退出
const
showVersionNoticeVisible
=
ref
(
false
)
// 判断版本通知是否出现
const
nowVersion
=
ref
(
''
)
// 当前最新版本
// 判断是否有新版本出现
onMounted
(()
=>
{
// 判断是否有新版本出现(监听 pinia 值的变化)
watch
(()
=>
versionStore
.
version
,
(
newVal
,
oldVal
)
=>
{
console
.
log
(
'versionStore.version'
,
versionStore
.
version
)
const
oldVersion
=
proxy
.
$cache
.
local
.
get
(
'version'
)
const
versionObj
=
versionStore
.
version
[
0
]
nowVersion
.
value
=
versionObj
.
version
...
...
@@ -114,6 +115,7 @@ onMounted(() => {
handleVersionList
()
}
})
// 展示版本通知弹框
const
showVersionFn
=
()
=>
{
handleVersionList
()
...
...
src/permission.js
浏览文件 @
b0e592e5
...
...
@@ -36,23 +36,24 @@ router.beforeEach((to, from, next) => {
useUserStore
().
getInfo
().
then
(()
=>
{
isRelogin
.
show
=
false
usePermissionStore
().
generateRoutes
().
then
(
accessRoutes
=>
{
// 生成可访问路由表
accessRoutes
.
forEach
(
route
=>
{
if
(
!
isHttp
(
route
.
path
))
{
router
.
addRoute
(
route
)
}
// 获取版本信息
useVersionStore
().
getVersion
().
then
((
res
)
=>
{
// 生成可访问路由表
accessRoutes
.
forEach
(
route
=>
{
if
(
!
isHttp
(
route
.
path
))
{
router
.
addRoute
(
route
)
}
})
next
({
...
to
,
replace
:
true
})
})
next
({
...
to
,
replace
:
true
})
})
}).
catch
(
err
=>
{
useUserStore
().
logOut
().
then
(()
=>
{
ElMessage
.
error
(
err
)
next
({
path
:
'/'
})
})
})
// 获取版本信息
useVersionStore
().
getVersion
()
}
else
{
next
()
}
...
...
src/utils/dict.js
浏览文件 @
b0e592e5
...
...
@@ -14,6 +14,7 @@ export function useDict(...args) {
res
.
value
[
dictType
]
=
dicts
;
}
else
{
getDicts
(
dictType
).
then
(
resp
=>
{
console
.
log
(
'字典数据'
,
resp
.
data
)
res
.
value
[
dictType
]
=
resp
.
data
.
map
(
p
=>
({
label
:
p
.
dictLabel
,
value
:
p
.
dictValue
,
elTagType
:
p
.
listClass
,
elTagClass
:
p
.
cssClass
}))
useDictStore
().
setDict
(
dictType
,
res
.
value
[
dictType
]);
})
...
...
src/views/jimureport/design/index.vue
浏览文件 @
b0e592e5
...
...
@@ -60,7 +60,9 @@
<template
#
default=
"
{ row }">
<div>
<svg-icon
icon-class=
"bg-document"
></svg-icon>
<span
style=
"margin-left: 10px"
>
{{
row
.
name
}}
</span>
<el-link
:href=
"getReportPreviewUrl(row)"
target=
"_blank"
style=
"margin-left: 10px"
>
{{
row
.
name
}}
</el-link>
</div>
</
template
>
</el-table-column>
...
...
@@ -69,12 +71,12 @@
align=
"left"
width=
"200"
>
<
template
#
default=
"scope"
>
<xl-tool-tip
content=
"
预览
报表"
<xl-tool-tip
content=
"
分享
报表"
placement=
"top"
>
<el-button
link
type=
"primary"
icon=
"
View
"
@
click=
"handle
Preview
(scope.row)"
></el-button>
icon=
"
Share
"
@
click=
"handle
Share
(scope.row)"
></el-button>
</xl-tool-tip>
<xl-tool-tip
content=
"修改"
placement=
"top"
>
...
...
@@ -108,6 +110,50 @@
v-model:limit=
"queryParams.pageSize"
@
pagination=
"getReportList"
/>
</el-col>
<!-- 新增/编辑分享弹窗 -->
<el-dialog
title=
"创建分享链接"
v-model=
"dialogVisible"
>
<div
v-if=
"shareReportUrl"
>
<el-form-item
label=
"分享链接"
>
<el-input
v-model=
"shareReportUrl"
style=
"width: 80%; margin-right: 20px;"
placeholder=
"分享链接"
/>
<el-button
type=
"primary"
v-copyText=
"shareReportUrl"
v-copyText:callback=
"copyTextSuccess"
>
复制链接剪切板
</el-button>
</el-form-item>
</div>
<div
v-else
>
<el-form
label-width=
"180px"
v-model=
"shareForm"
>
<el-form-item
label=
"过期时间"
>
<el-radio-group
v-model=
"shareForm.termOfValidity"
>
<el-radio
value=
"1"
>
永久有效
</el-radio>
<el-radio
value=
"2"
>
7天
</el-radio>
<el-radio
value=
"3"
>
1天
</el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="是否开启密码">
<el-radio-group v-model="shareForm.isPasswordEnabled">
<el-radio label="否">否</el-radio>
<el-radio label="是">是</el-radio>
</el-radio-group>
</el-form-item> -->
<!-- <el-form-item label="是否检验分享token">
<el-switch v-model="shareForm.isCheckToken" />
</el-form-item> -->
</el-form>
</div>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleConfirm"
>
确认
</el-button>
</span>
</
template
>
</el-dialog>
</el-row>
</div>
</div>
...
...
@@ -115,12 +161,14 @@
<
script
setup
>
import
{
getToken
}
from
'@/utils/auth'
import
{
getReportFolderStructureAPI
,
getDesignReportListAPI
,
deleteReportAPI
,
copyReportAPI
,
addReportAPI
,
importReportAPI
}
from
'@/api'
import
{
getReportFolderStructureAPI
,
getDesignReportListAPI
,
deleteReportAPI
,
copyReportAPI
,
addReportAPI
,
importReportAPI
,
selShareReportAPI
,
addOrEditShareReportAPI
}
from
'@/api'
import
useUserStore
from
'@/store/modules/user'
const
{
proxy
}
=
getCurrentInstance
()
const
userStore
=
useUserStore
()
const
reportBaseDomain
=
import
.
meta
.
env
.
VITE_APP_REPORT_URL
// 基础域名
const
reportViewURL
=
import
.
meta
.
env
.
VITE_APP_REPORT_PREVIEW_URL
// 预览
const
reportShareViewURL
=
import
.
meta
.
env
.
VITE_APP_REPORT_SHARE_PREVIEW_URL
// 分享预览
const
reportEditURL
=
import
.
meta
.
env
.
VITE_APP_REPORT_EDIT_URL
// 新增/编辑
/************ 文件夹分组 ********************/
...
...
@@ -187,13 +235,16 @@ const getReportList = async () => {
total
.
value
=
res
.
result
.
total
}
getReportList
()
// 报表预览地址
const
getReportPreviewUrl
=
(
row
)
=>
{
return
`
${
reportBaseDomain
}${
reportShareViewURL
}${
row
.
shareViewUrl
}
`
}
/********* 报表功能按钮 ***********/
// 新建报表
const
handleAdd
=
async
()
=>
{
const
res
=
await
addReportAPI
()
window
.
open
(
`
${
reportEditURL
}
/
${
res
.
result
.
id
}
?menuType=
${
queryParams
.
reportType
}
&token=
${
getToken
()}
&tenantId=
${
userStore
.
$state
.
userInfo
.
deptId
}
`
)
window
.
open
(
`
${
report
BaseDomain
}${
report
EditURL
}
/
${
res
.
result
.
id
}
?menuType=
${
queryParams
.
reportType
}
&token=
${
getToken
()}
&tenantId=
${
userStore
.
$state
.
userInfo
.
deptId
}
`
)
}
// 导入报表
const
handleImport
=
()
=>
{
...
...
@@ -206,19 +257,68 @@ const handleImport = () => {
formData
.
append
(
'type'
,
queryParams
.
reportType
)
const
res
=
await
importReportAPI
(
formData
)
proxy
.
$modal
.
msgSuccess
(
res
.
result
)
getReportList
()
getReportList
()
}).
catch
(
err
=>
{
proxy
.
$modal
.
msgError
(
err
)
})
}
// 预览报表
const
handlePreview
=
(
row
)
=>
{
window
.
open
(
`
${
reportViewURL
}
/
${
row
.
id
}
?token=
${
getToken
()}
&tenantId=
${
userStore
.
$state
.
userInfo
.
deptId
}
`
)
// 分享报表
const
shareReportUrl
=
ref
(
''
)
// 分享报表地址链接
const
dialogVisible
=
ref
(
false
)
const
nowShareRow
=
ref
(
null
)
// 当前分享报表数据对象
const
shareForm
=
reactive
({
termOfValidity
:
'1'
,
// 1:永久有效 2:7天 3:1天
// isPasswordEnabled: '否',
verifyShareToken
:
true
})
const
handleShare
=
async
(
row
)
=>
{
const
res
=
await
selShareReportAPI
({
reportId
:
row
.
id
})
shareReportUrl
.
value
=
res
.
result
?.
previewUrl
?
reportBaseDomain
+
reportShareViewURL
+
res
.
result
?.
previewUrl
:
''
nowShareRow
.
value
=
row
dialogVisible
.
value
=
true
}
// 确认分享
const
handleConfirm
=
async
()
=>
{
if
(
shareReportUrl
.
value
)
{
dialogVisible
.
value
=
false
return
}
const
res
=
await
addOrEditShareReportAPI
({
id
:
nowShareRow
.
value
.
id
,
lastUpdateTime
:
new
Date
().
getTime
(),
previewLock
:
""
,
previewLockStatus
:
"0"
,
previewUrl
:
""
,
reportId
:
nowShareRow
.
value
.
id
,
shareToken
:
Math
.
random
().
toString
(
36
).
substring
(
2
),
status
:
"0"
,
termOfValidity
:
shareForm
.
termOfValidity
,
verifyShareToken
:
shareForm
.
verifyShareToken
?
'1'
:
'0'
})
shareReportUrl
.
value
=
reportBaseDomain
+
reportShareViewURL
+
res
.
result
?.
previewUrl
// 将分享链接复制到剪贴板
const
input
=
document
.
createElement
(
'input'
)
input
.
setAttribute
(
'value'
,
shareReportUrl
.
value
)
document
.
body
.
appendChild
(
input
)
input
.
select
()
document
.
execCommand
(
'copy'
)
document
.
body
.
removeChild
(
input
)
proxy
.
$modal
.
msgSuccess
(
'链接已复制到剪切板'
)
dialogVisible
.
value
=
false
}
// 点击分享地址复制
function
copyTextSuccess
()
{
proxy
.
$modal
.
msgSuccess
(
'链接已复制到剪切板'
)
}
// 修改报表
const
handleEdit
=
(
row
)
=>
{
window
.
open
(
`
${
reportEditURL
}
/
${
row
.
id
}
?token=
${
getToken
()}
&tenantId=
${
userStore
.
$state
.
userInfo
.
deptId
}
`
)
window
.
open
(
`
${
report
BaseDomain
}${
report
EditURL
}
/
${
row
.
id
}
?token=
${
getToken
()}
&tenantId=
${
userStore
.
$state
.
userInfo
.
deptId
}
`
)
}
// 删除报表
const
handleDelete
=
(
row
)
=>
{
...
...
src/views/jimureport/list/index.vue
浏览文件 @
b0e592e5
...
...
@@ -37,18 +37,26 @@
prop=
"name"
align=
"left"
sortable
>
<template
#
default=
"
scope
"
>
<template
#
default=
"
{ row }
">
<div
style=
"display: flex; align-items: center"
>
<svg-icon
icon-class=
"bg-document"
></svg-icon>
<span
style=
"margin-left: 10px"
>
{{
scope
.
row
.
name
}}
</span>
<el-link
:href=
"reportBaseDomain + reportShareViewURL + row.previewUrl"
target=
"_blank"
style=
"margin-left: 10px"
>
{{
row
.
name
}}
</el-link>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"报表类目"
key=
"categoryName"
prop=
"categoryName"
align=
"left"
width=
"120"
sortable
/>
<el-table-column
label=
"创建人"
key=
"createBy"
prop=
"createBy"
align=
"left"
width=
"1
8
0"
width=
"1
2
0"
sortable
/>
<el-table-column
label=
"创建时间"
prop=
"createTime"
...
...
@@ -59,16 +67,31 @@
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"是否被分享"
key=
"hasShare"
prop=
"hasShare"
align=
"center"
width=
"120"
sortable
>
<!-- 使用 tag 标记颜色 -->
<
template
#
default=
"{ row }"
>
<el-tag
:type=
"row.hasShare === true ? 'success' : 'danger'"
>
{{
row
.
hasShare
===
1
?
'是'
:
'否'
}}
</el-tag>
</
template
>
</el-table-column>
<!-- 操作预览 -->
<el-table-column
label=
"操作"
key=
"operation"
align=
"center"
width=
"1
8
0"
>
width=
"1
2
0"
>
<
template
#
default=
"scope"
>
<el-button
link
type=
"primary"
icon=
"Reading"
@
click=
"previewReport(scope.row)"
>
预览
</el-button>
<el-tooltip
content=
"复制报表地址"
>
<el-button
text
type=
"primary"
icon=
"Share"
v-copyText=
"reportBaseDomain + reportShareViewURL + scope.row.previewUrl"
v-copyText:callback=
"copyTextSuccess"
/>
</el-tooltip>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -88,8 +111,12 @@
import
{
getToken
}
from
'@/utils/auth'
import
useUserStore
from
'@/store/modules/user'
const
{
proxy
}
=
getCurrentInstance
()
const
userStore
=
useUserStore
()
const
reportViewURL
=
import
.
meta
.
env
.
VITE_APP_REPORT_PREVIEW_URL
const
reportBaseDomain
=
import
.
meta
.
env
.
VITE_APP_REPORT_URL
// 基础域名
const
reportViewURL
=
import
.
meta
.
env
.
VITE_APP_REPORT_PREVIEW_URL
// 预览
const
reportShareViewURL
=
import
.
meta
.
env
.
VITE_APP_REPORT_SHARE_PREVIEW_URL
// 分享预览
const
reportEditURL
=
import
.
meta
.
env
.
VITE_APP_REPORT_EDIT_URL
// 新增/编辑
/*************** 报表列表部分 ****************/
// 报表搜索
const
showSearch
=
ref
(
true
)
...
...
@@ -124,12 +151,10 @@
getReportList
()
// 点击某行报表
function
previewReport
(
row
)
{
window
.
open
(
`
${
reportViewURL
}
/
${
row
.
id
}
?token=
${
getToken
()}
&tenantId=
${
userStore
.
$state
.
userInfo
.
deptId
}
`
)
function
copyTextSuccess
(
)
{
proxy
.
$modal
.
msgSuccess
(
'链接已复制到剪切板'
)
}
</
script
>
<
style
scoped
lang=
"scss"
>
</
style
>
\ No newline at end of file
lang=
"scss"
></
style
>
\ No newline at end of file
src/views/jimureport/manager/index.vue
浏览文件 @
b0e592e5
...
...
@@ -53,10 +53,12 @@
prop=
"name"
align=
"left"
sortable
>
<template
#
default=
"
scope
"
>
<template
#
default=
"
{ row }
">
<div
style=
"display: flex; align-items: center"
>
<svg-icon
icon-class=
"bg-document"
></svg-icon>
<span
style=
"margin-left: 10px"
>
{{
scope
.
row
.
name
}}
</span>
<el-link
:href=
"getReportPreviewUrl(row)"
target=
"_blank"
style=
"margin-left: 10px"
>
{{
row
.
name
}}
</el-link>
</div>
</
template
>
</el-table-column>
...
...
@@ -212,6 +214,10 @@
import
{
selReportListAPI
,
selReportCategoryAPI
,
deptTreeSelectList
,
listUser
,
batchAuthReportAPI
,
selReportAuthUserListAPI
}
from
"@/api"
const
{
proxy
}
=
getCurrentInstance
()
const
reportBaseDomain
=
import
.
meta
.
env
.
VITE_APP_REPORT_URL
// 基础域名
const
reportViewURL
=
import
.
meta
.
env
.
VITE_APP_REPORT_PREVIEW_URL
// 预览
const
reportShareViewURL
=
import
.
meta
.
env
.
VITE_APP_REPORT_SHARE_PREVIEW_URL
// 分享预览
const
reportEditURL
=
import
.
meta
.
env
.
VITE_APP_REPORT_EDIT_URL
// 新增/编辑
/*************** 报表列表部分 ****************/
// 报表搜索
...
...
@@ -253,6 +259,10 @@
})
}
getReportList
()
// 报表预览地址
const
getReportPreviewUrl
=
(
row
)
=>
{
return
`
${
reportBaseDomain
}${
reportShareViewURL
}${
row
.
previewUrl
}
`
}
/**************** 分配用户 ****************/
const
{
sys_normal_disable
}
=
proxy
.
useDict
(
"sys_normal_disable"
);
...
...
src/views/promotion/task/index.vue
浏览文件 @
b0e592e5
...
...
@@ -106,7 +106,8 @@
<el-dialog
:title=
"photoLookInfoObj.storeName"
v-model=
"photoDialogVisible"
width=
"60%"
draggable
overflow
>
draggable
overflow
>
<p>
活动记录 ID :{{ photoLookInfoObj.id }}
</p>
<p>
活动时间 :{{ photoLookInfoObj.createDate }}
</p>
<el-card
v-for=
"obj in photoDialogList"
...
...
@@ -115,9 +116,10 @@
<div
class=
"content"
>
<el-result
:title=
"item.time"
:sub-title=
"item.title"
v-for=
"item in obj.list"
>
v-for=
"item
, index
in obj.list"
>
<
template
#
icon
>
<el-image
:src=
"item.photoUrl"
:initial-index=
"index"
:preview-src-list=
"[...obj.list.map(o => o.photoUrl)]"
/>
</
template
>
</el-result>
...
...
src/views/scm/logistics_receipt/index.vue
0 → 100644
浏览文件 @
b0e592e5
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论