Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Unverified
Commit
2efd0d69
authored
Dec 07, 2024
by
芋道源码
Committed by
Gitee
Dec 07, 2024
Browse files
Options
Browse Files
Download
Plain Diff
!611 【缺陷修复】商城装修
Merge pull request !611 from puhui999/dev
parents
4754685d
740de45a
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
198 additions
and
135 deletions
+198
-135
src/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue
+17
-14
src/components/DiyEditor/components/mobile/TitleBar/config.ts
+1
-3
src/components/DiyEditor/components/mobile/TitleBar/index.vue
+17
-9
src/components/DiyEditor/components/mobile/TitleBar/property.vue
+22
-27
src/components/DiyEditor/index.vue
+46
-30
src/views/mall/promotion/diy/template/decorate.vue
+52
-18
src/views/mall/trade/brokerage/user/BrokerageOrderListDialog.vue
+43
-34
No files found.
src/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue
View file @
2efd0d69
...
@@ -2,17 +2,17 @@
...
@@ -2,17 +2,17 @@
<div
class=
"h-40px flex items-center justify-center"
>
<div
class=
"h-40px flex items-center justify-center"
>
<MagicCubeEditor
<MagicCubeEditor
v-model=
"cellList"
v-model=
"cellList"
class=
"m-b-16px"
:rows=
"1"
:cols=
"cellCount"
:cols=
"cellCount"
:cube-size=
"38"
:cube-size=
"38"
:rows=
"1"
class=
"m-b-16px"
@
hot-area-selected=
"handleHotAreaSelected"
@
hot-area-selected=
"handleHotAreaSelected"
/>
/>
<img
src=
"@/assets/imgs/diy/app-nav-bar-mp.png"
alt=
""
class=
"h-30px w-76px"
v-if=
"isMp
"
/>
<img
v-if=
"isMp"
alt=
""
class=
"h-30px w-76px"
src=
"@/assets/imgs/diy/app-nav-bar-mp.png
"
/>
</div>
</div>
<template
v-for=
"(cell, cellIndex) in cellList"
:key=
"cellIndex"
>
<template
v-for=
"(cell, cellIndex) in cellList"
:key=
"cellIndex"
>
<template
v-if=
"selectedHotAreaIndex === cellIndex"
>
<template
v-if=
"selectedHotAreaIndex === cellIndex"
>
<el-form-item
label=
"类型"
:prop=
"`cell[$
{cellIndex}].type`
">
<el-form-item
:prop=
"`cell[$
{cellIndex}].type`" label="类型
">
<el-radio-group
v-model=
"cell.type"
>
<el-radio-group
v-model=
"cell.type"
>
<el-radio
value=
"text"
>
文字
</el-radio>
<el-radio
value=
"text"
>
文字
</el-radio>
<el-radio
value=
"image"
>
图片
</el-radio>
<el-radio
value=
"image"
>
图片
</el-radio>
...
@@ -21,37 +21,40 @@
...
@@ -21,37 +21,40 @@
</el-form-item>
</el-form-item>
<!-- 1. 文字 -->
<!-- 1. 文字 -->
<template
v-if=
"cell.type === 'text'"
>
<template
v-if=
"cell.type === 'text'"
>
<el-form-item
label=
"内容"
:prop=
"`cell[$
{cellIndex}].text`
">
<el-form-item
:prop=
"`cell[$
{cellIndex}].text`" label="内容
">
<el-input
v-model=
"cell!.text"
maxlength=
"10"
show-word-limit
/>
<el-input
v-model=
"cell!.text"
maxlength=
"10"
show-word-limit
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"颜色"
:prop=
"`cell[$
{cellIndex}].text`
">
<el-form-item
:prop=
"`cell[$
{cellIndex}].text`" label="颜色
">
<ColorInput
v-model=
"cell!.textColor"
/>
<ColorInput
v-model=
"cell!.textColor"
/>
</el-form-item>
</el-form-item>
<el-form-item
:prop=
"`cell[$
{cellIndex}].url`" label="链接">
<AppLinkInput
v-model=
"cell.url"
/>
</el-form-item>
</
template
>
</
template
>
<!-- 2. 图片 -->
<!-- 2. 图片 -->
<
template
v-else-if=
"cell.type === 'image'"
>
<
template
v-else-if=
"cell.type === 'image'"
>
<el-form-item
label=
"图片"
:prop=
"`cell[$
{cellIndex}].imgUrl`
">
<el-form-item
:prop=
"`cell[$
{cellIndex}].imgUrl`" label="图片
">
<UploadImg
v-model=
"cell.imgUrl"
:limit=
"1"
height=
"56px"
width=
"56px"
>
<UploadImg
v-model=
"cell.imgUrl"
:limit=
"1"
height=
"56px"
width=
"56px"
>
<template
#
tip
>
建议尺寸 56*56
</
template
>
<template
#
tip
>
建议尺寸 56*56
</
template
>
</UploadImg>
</UploadImg>
</el-form-item>
</el-form-item>
<el-form-item
label=
"链接"
:prop=
"`cell[${cellIndex}].url`
"
>
<el-form-item
:prop=
"`cell[${cellIndex}].url`"
label=
"链接
"
>
<AppLinkInput
v-model=
"cell.url"
/>
<AppLinkInput
v-model=
"cell.url"
/>
</el-form-item>
</el-form-item>
</template>
</template>
<!-- 3. 搜索框 -->
<!-- 3. 搜索框 -->
<
template
v-else
>
<
template
v-else
>
<el-form-item
label=
"提示文字"
:prop=
"`cell[$
{cellIndex}].placeholder`
">
<el-form-item
:prop=
"`cell[$
{cellIndex}].placeholder`" label="提示文字
">
<el-input
v-model=
"cell.placeholder"
maxlength=
"10"
show-word-limit
/>
<el-input
v-model=
"cell.placeholder"
maxlength=
"10"
show-word-limit
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"圆角"
:prop=
"`cell[$
{cellIndex}].borderRadius`
">
<el-form-item
:prop=
"`cell[$
{cellIndex}].borderRadius`" label="圆角
">
<el-slider
<el-slider
v-model=
"cell.borderRadius"
v-model=
"cell.borderRadius"
:max=
"100"
:max=
"100"
:min=
"0"
:min=
"0"
show-input
input-size=
"small"
:show-input-controls=
"false"
:show-input-controls=
"false"
input-size=
"small"
show-input
/>
/>
</el-form-item>
</el-form-item>
</
template
>
</
template
>
...
@@ -59,7 +62,7 @@
...
@@ -59,7 +62,7 @@
</template>
</template>
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
lang=
"ts"
setup
>
import
{
NavigationBarCellProperty
}
from
'../config'
import
{
NavigationBarCellProperty
}
from
'../config'
import
{
usePropertyForm
}
from
'@/components/DiyEditor/util'
import
{
usePropertyForm
}
from
'@/components/DiyEditor/util'
// 导航栏属性面板
// 导航栏属性面板
...
@@ -87,4 +90,4 @@ const handleHotAreaSelected = (cellValue: NavigationBarCellProperty, index: numb
...
@@ -87,4 +90,4 @@ const handleHotAreaSelected = (cellValue: NavigationBarCellProperty, index: numb
}
}
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
lang=
"scss"
scoped
></
style
>
src/components/DiyEditor/components/mobile/TitleBar/config.ts
View file @
2efd0d69
import
{
ComponentStyle
,
DiyComponent
}
from
'@/components/DiyEditor/util'
import
{
ComponentStyle
,
DiyComponent
}
from
'@/components/DiyEditor/util'
/** 标题栏属性 */
/** 标题栏属性 */
export
interface
TitleBarProperty
{
export
interface
TitleBarProperty
{
// 背景图
bgImgUrl
:
string
// 偏移
// 偏移
marginLeft
:
number
marginLeft
:
number
// 显示位置
// 显示位置
...
...
src/components/DiyEditor/components/mobile/TitleBar/index.vue
View file @
2efd0d69
<
template
>
<
template
>
<div
class=
"title-bar"
>
<div
<el-image
v-if=
"property.bgImgUrl"
:src=
"property.bgImgUrl"
fit=
"cover"
class=
"w-full"
/>
:style=
"
{
<div
class=
"absolute left-0 top-0 w-full"
>
background:
property.style.bgType === 'color' ? property.style.bgColor : `url(${property.style.bgImg})`,
backgroundSize: '100% 100%',
backgroundRepeat: 'no-repeat'
}"
class="title-bar"
>
<!-- 内容 -->
<div>
<!-- 标题 -->
<!-- 标题 -->
<div
<div
v-if=
"property.title"
:style=
"
{
:style=
"
{
fontSize: `${property.titleSize}px`,
fontSize: `${property.titleSize}px`,
fontWeight: property.titleWeight,
fontWeight: property.titleWeight,
color: property.titleColor,
color: property.titleColor,
textAlign: property.textAlign
textAlign: property.textAlign
}"
}"
v-if="property.title"
>
>
{{
property
.
title
}}
{{
property
.
title
}}
</div>
</div>
<!-- 副标题 -->
<!-- 副标题 -->
<div
<div
v-if=
"property.description"
:style=
"
{
:style=
"
{
fontSize: `${property.descriptionSize}px`,
fontSize: `${property.descriptionSize}px`,
fontWeight: property.descriptionWeight,
fontWeight: property.descriptionWeight,
...
@@ -23,25 +32,24 @@
...
@@ -23,25 +32,24 @@
textAlign: property.textAlign
textAlign: property.textAlign
}"
}"
class="m-t-8px"
class="m-t-8px"
v-if="property.description"
>
>
{{
property
.
description
}}
{{
property
.
description
}}
</div>
</div>
</div>
</div>
<!-- 更多 -->
<!-- 更多 -->
<div
<div
class=
"more"
v-show=
"property.more.show"
v-show=
"property.more.show"
:style=
"
{
:style=
"
{
color: property.descriptionColor
color: property.descriptionColor
}"
}"
class="more"
>
>
<span
v-if=
"property.more.type !== 'icon'"
>
{{
property
.
more
.
text
}}
</span>
<span
v-if=
"property.more.type !== 'icon'"
>
{{
property
.
more
.
text
}}
</span>
<Icon
icon=
"ep:arrow-right"
v-if=
"property.more.type !== 'text'
"
/>
<Icon
v-if=
"property.more.type !== 'text'"
icon=
"ep:arrow-right
"
/>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
setup
lang=
"ts"
>
<
script
lang=
"ts"
setup
>
import
{
TitleBarProperty
}
from
'./config'
import
{
TitleBarProperty
}
from
'./config'
/** 标题栏 */
/** 标题栏 */
...
@@ -49,7 +57,7 @@ defineOptions({ name: 'TitleBar' })
...
@@ -49,7 +57,7 @@ defineOptions({ name: 'TitleBar' })
defineProps
<
{
property
:
TitleBarProperty
}
>
()
defineProps
<
{
property
:
TitleBarProperty
}
>
()
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.title-bar
{
.title-bar
{
position
:
relative
;
position
:
relative
;
width
:
100%
;
width
:
100%
;
...
...
src/components/DiyEditor/components/mobile/TitleBar/property.vue
View file @
2efd0d69
<
template
>
<
template
>
<ComponentContainerProperty
v-model=
"formData.style"
>
<ComponentContainerProperty
v-model=
"formData.style"
>
<el-form
label-width=
"85px"
:model=
"formData"
:rules=
"rules"
>
<el-form
:model=
"formData"
:rules=
"rules"
label-width=
"85px"
>
<el-card
header=
"风格"
class=
"property-group"
shadow=
"never"
>
<el-card
class=
"property-group"
header=
"风格"
shadow=
"never"
>
<el-form-item
label=
"背景图片"
prop=
"bgImgUrl"
>
<UploadImg
v-model=
"formData.bgImgUrl"
width=
"100%"
height=
"40px"
>
<template
#
tip
>
建议尺寸 750*80
</
template
>
</UploadImg>
</el-form-item>
<el-form-item
label=
"标题位置"
prop=
"textAlign"
>
<el-form-item
label=
"标题位置"
prop=
"textAlign"
>
<el-radio-group
v-model=
"formData!.textAlign"
>
<el-radio-group
v-model=
"formData!.textAlign"
>
<el-tooltip
content=
"居左"
placement=
"top"
>
<el-tooltip
content=
"居左"
placement=
"top"
>
...
@@ -22,65 +17,65 @@
...
@@ -22,65 +17,65 @@
</el-radio-group>
</el-radio-group>
</el-form-item>
</el-form-item>
</el-card>
</el-card>
<el-card
header=
"主标题"
class=
"property-group
"
shadow=
"never"
>
<el-card
class=
"property-group"
header=
"主标题
"
shadow=
"never"
>
<el-form-item
label=
"文字"
prop=
"title"
label-width=
"40px
"
>
<el-form-item
label=
"文字"
label-width=
"40px"
prop=
"title
"
>
<InputWithColor
<InputWithColor
v-model=
"formData.title"
v-model=
"formData.title"
v-model:color=
"formData.titleColor"
v-model:color=
"formData.titleColor"
show-word-limit
maxlength=
"20"
maxlength=
"20"
show-word-limit
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"大小"
prop=
"titleSize"
label-width=
"40px
"
>
<el-form-item
label=
"大小"
label-width=
"40px"
prop=
"titleSize
"
>
<el-slider
<el-slider
v-model=
"formData.titleSize"
v-model=
"formData.titleSize"
:max=
"60"
:max=
"60"
:min=
"10"
:min=
"10"
show-input
input-size=
"small"
input-size=
"small"
show-input
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"粗细"
prop=
"titleWeight"
label-width=
"40px
"
>
<el-form-item
label=
"粗细"
label-width=
"40px"
prop=
"titleWeight
"
>
<el-slider
<el-slider
v-model=
"formData.titleWeight"
v-model=
"formData.titleWeight"
:min=
"100"
:max=
"900"
:max=
"900"
:min=
"100"
:step=
"100"
:step=
"100"
show-input
input-size=
"small"
input-size=
"small"
show-input
/>
/>
</el-form-item>
</el-form-item>
</el-card>
</el-card>
<el-card
header=
"副标题"
class=
"property-group
"
shadow=
"never"
>
<el-card
class=
"property-group"
header=
"副标题
"
shadow=
"never"
>
<el-form-item
label=
"文字"
prop=
"description"
label-width=
"40px
"
>
<el-form-item
label=
"文字"
label-width=
"40px"
prop=
"description
"
>
<InputWithColor
<InputWithColor
v-model=
"formData.description"
v-model=
"formData.description"
v-model:color=
"formData.descriptionColor"
v-model:color=
"formData.descriptionColor"
show-word-limit
maxlength=
"50"
maxlength=
"50"
show-word-limit
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"大小"
prop=
"descriptionSize"
label-width=
"40px
"
>
<el-form-item
label=
"大小"
label-width=
"40px"
prop=
"descriptionSize
"
>
<el-slider
<el-slider
v-model=
"formData.descriptionSize"
v-model=
"formData.descriptionSize"
:max=
"60"
:max=
"60"
:min=
"10"
:min=
"10"
show-input
input-size=
"small"
input-size=
"small"
show-input
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"粗细"
prop=
"descriptionWeight"
label-width=
"40px
"
>
<el-form-item
label=
"粗细"
label-width=
"40px"
prop=
"descriptionWeight
"
>
<el-slider
<el-slider
v-model=
"formData.descriptionWeight"
v-model=
"formData.descriptionWeight"
:min=
"100"
:max=
"900"
:max=
"900"
:min=
"100"
:step=
"100"
:step=
"100"
show-input
input-size=
"small"
input-size=
"small"
show-input
/>
/>
</el-form-item>
</el-form-item>
</el-card>
</el-card>
<el-card
header=
"查看更多"
class=
"property-group
"
shadow=
"never"
>
<el-card
class=
"property-group"
header=
"查看更多
"
shadow=
"never"
>
<el-form-item
label=
"是否显示"
prop=
"more.show"
>
<el-form-item
label=
"是否显示"
prop=
"more.show"
>
<el-checkbox
v-model=
"formData.more.show"
/>
<el-checkbox
v-model=
"formData.more.show"
/>
</el-form-item>
</el-form-item>
...
@@ -93,7 +88,7 @@
...
@@ -93,7 +88,7 @@
<el-radio
value=
"all"
>
文字+图标
</el-radio>
<el-radio
value=
"all"
>
文字+图标
</el-radio>
</el-radio-group>
</el-radio-group>
</el-form-item>
</el-form-item>
<el-form-item
label=
"更多文字"
prop=
"more.text"
v-show=
"formData.more.type !== 'icon'
"
>
<el-form-item
v-show=
"formData.more.type !== 'icon'"
label=
"更多文字"
prop=
"more.text
"
>
<el-input
v-model=
"formData.more.text"
/>
<el-input
v-model=
"formData.more.text"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"跳转链接"
prop=
"more.url"
>
<el-form-item
label=
"跳转链接"
prop=
"more.url"
>
...
@@ -104,7 +99,7 @@
...
@@ -104,7 +99,7 @@
</el-form>
</el-form>
</ComponentContainerProperty>
</ComponentContainerProperty>
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
lang=
"ts"
setup
>
import
{
TitleBarProperty
}
from
'./config'
import
{
TitleBarProperty
}
from
'./config'
import
{
usePropertyForm
}
from
'@/components/DiyEditor/util'
import
{
usePropertyForm
}
from
'@/components/DiyEditor/util'
// 导航栏属性面板
// 导航栏属性面板
...
@@ -118,4 +113,4 @@ const { formData } = usePropertyForm(props.modelValue, emit)
...
@@ -118,4 +113,4 @@ const { formData } = usePropertyForm(props.modelValue, emit)
const
rules
=
{}
const
rules
=
{}
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
lang=
"scss"
scoped
></
style
>
src/components/DiyEditor/index.vue
View file @
2efd0d69
...
@@ -12,17 +12,17 @@
...
@@ -12,17 +12,17 @@
<el-button-group
class=
"header-right"
>
<el-button-group
class=
"header-right"
>
<el-tooltip
content=
"重置"
>
<el-tooltip
content=
"重置"
>
<el-button
@
click=
"handleReset"
>
<el-button
@
click=
"handleReset"
>
<Icon
icon=
"system-uicons:reset-alt"
:size=
"24
"
/>
<Icon
:size=
"24"
icon=
"system-uicons:reset-alt
"
/>
</el-button>
</el-button>
</el-tooltip>
</el-tooltip>
<el-tooltip
content=
"预览"
v-if=
"previewUrl
"
>
<el-tooltip
v-if=
"previewUrl"
content=
"预览
"
>
<el-button
@
click=
"handlePreview"
>
<el-button
@
click=
"handlePreview"
>
<Icon
icon=
"ep:view"
:size=
"24
"
/>
<Icon
:size=
"24"
icon=
"ep:view
"
/>
</el-button>
</el-button>
</el-tooltip>
</el-tooltip>
<el-tooltip
content=
"保存"
>
<el-tooltip
content=
"保存"
>
<el-button
@
click=
"handleSave"
>
<el-button
@
click=
"handleSave"
>
<Icon
icon=
"ep:check"
:size=
"24
"
/>
<Icon
:size=
"24"
icon=
"ep:check
"
/>
</el-button>
</el-button>
</el-tooltip>
</el-tooltip>
</el-button-group>
</el-button-group>
...
@@ -31,21 +31,21 @@
...
@@ -31,21 +31,21 @@
<!-- 中心区域 -->
<!-- 中心区域 -->
<el-container
class=
"editor-container"
>
<el-container
class=
"editor-container"
>
<!-- 左侧:组件库(ComponentLibrary) -->
<!-- 左侧:组件库(ComponentLibrary) -->
<ComponentLibrary
ref=
"componentLibrary"
:list=
"libs"
v-if=
"libs && libs.length > 0
"
/>
<ComponentLibrary
v-if=
"libs && libs.length > 0"
ref=
"componentLibrary"
:list=
"libs
"
/>
<!-- 中心:设计区域(ComponentContainer) -->
<!-- 中心:设计区域(ComponentContainer) -->
<div
class=
"editor-center page-prop-area"
@
click=
"handlePageSelected"
>
<div
class=
"editor-center page-prop-area"
@
click=
"handlePageSelected"
>
<!-- 手机顶部 -->
<!-- 手机顶部 -->
<div
class=
"editor-design-top"
>
<div
class=
"editor-design-top"
>
<!-- 手机顶部状态栏 -->
<!-- 手机顶部状态栏 -->
<img
src=
"@/assets/imgs/diy/statusBar.png"
alt=
""
class=
"status-bar
"
/>
<img
alt=
""
class=
"status-bar"
src=
"@/assets/imgs/diy/statusBar.png
"
/>
<!-- 手机顶部导航栏 -->
<!-- 手机顶部导航栏 -->
<ComponentContainer
<ComponentContainer
v-if=
"showNavigationBar"
v-if=
"showNavigationBar"
:active=
"selectedComponent?.id === navigationBarComponent.id"
:component=
"navigationBarComponent"
:component=
"navigationBarComponent"
:show-toolbar=
"false"
:show-toolbar=
"false"
:active=
"selectedComponent?.id === navigationBarComponent.id"
@
click=
"handleNavigationBarSelected"
class=
"cursor-pointer!"
class=
"cursor-pointer!"
@
click=
"handleNavigationBarSelected"
/>
/>
</div>
</div>
<!-- 绝对定位的组件:例如 弹窗、浮动按钮等 -->
<!-- 绝对定位的组件:例如 弹窗、浮动按钮等 -->
...
@@ -55,43 +55,43 @@
...
@@ -55,43 +55,43 @@
@
click=
"handleComponentSelected(component, index)"
@
click=
"handleComponentSelected(component, index)"
>
>
<component
<component
v-if=
"component.position === 'fixed' && selectedComponent?.uid === component.uid"
:is=
"component.id"
:is=
"component.id"
v-if=
"component.position === 'fixed' && selectedComponent?.uid === component.uid"
:property=
"component.property"
:property=
"component.property"
/>
/>
</div>
</div>
<!-- 手机页面编辑区域 -->
<!-- 手机页面编辑区域 -->
<el-scrollbar
<el-scrollbar
height=
"100%"
wrap-class=
"editor-design-center page-prop-area"
view-class=
"phone-container"
:view-style=
"
{
:view-style=
"
{
backgroundColor: pageConfigComponent.property.backgroundColor,
backgroundColor: pageConfigComponent.property.backgroundColor,
backgroundImage: `url(${pageConfigComponent.property.backgroundImage})`
backgroundImage: `url(${pageConfigComponent.property.backgroundImage})`
}"
}"
height="100%"
view-class="phone-container"
wrap-class="editor-design-center page-prop-area"
>
>
<draggable
<draggable
class=
"page-prop-area drag-area"
v-model=
"pageComponents"
v-model=
"pageComponents"
item-key=
"index"
:animation=
"200"
:animation=
"200"
:force-fallback=
"true"
class=
"page-prop-area drag-area"
filter=
".component-toolbar"
filter=
".component-toolbar"
ghost-class=
"draggable-ghost"
ghost-class=
"draggable-ghost"
:force-fallback=
"true"
group=
"component"
group=
"component"
item-key=
"index"
@
change=
"handleComponentChange"
@
change=
"handleComponentChange"
>
>
<template
#
item=
"
{ element, index }">
<template
#
item=
"
{ element, index }">
<ComponentContainer
<ComponentContainer
v-if=
"!element.position || element.position === 'center'"
v-if=
"!element.position || element.position === 'center'"
:component=
"element"
:active=
"selectedComponentIndex === index"
:active=
"selectedComponentIndex === index"
:can-move-up=
"index > 0"
:can-move-down=
"index
<
pageComponents
.
length
-
1
"
:can-move-down=
"index
<
pageComponents
.
length
-
1
"
@
move=
"(direction) => handleMoveComponent(index, direction)"
:can-move-up=
"index > 0"
:component=
"element"
@
click=
"handleComponentSelected(element, index)"
@
copy=
"handleCopyComponent(index)"
@
copy=
"handleCopyComponent(index)"
@
delete=
"handleDeleteComponent(index)"
@
delete=
"handleDeleteComponent(index)"
@
click=
"handleComponentSelected(element, index
)"
@
move=
"(direction) => handleMoveComponent(index, direction
)"
/>
/>
</
template
>
</
template
>
</draggable>
</draggable>
...
@@ -99,9 +99,9 @@
...
@@ -99,9 +99,9 @@
<!-- 手机底部导航 -->
<!-- 手机底部导航 -->
<div
v-if=
"showTabBar"
:class=
"['editor-design-bottom', 'component', 'cursor-pointer!']"
>
<div
v-if=
"showTabBar"
:class=
"['editor-design-bottom', 'component', 'cursor-pointer!']"
>
<ComponentContainer
<ComponentContainer
:active=
"selectedComponent?.id === tabBarComponent.id"
:component=
"tabBarComponent"
:component=
"tabBarComponent"
:show-toolbar=
"false"
:show-toolbar=
"false"
:active=
"selectedComponent?.id === tabBarComponent.id"
@
click=
"handleTabBarSelected"
@
click=
"handleTabBarSelected"
/>
/>
</div>
</div>
...
@@ -109,9 +109,9 @@
...
@@ -109,9 +109,9 @@
<div
class=
"fixed-component-action-group"
>
<div
class=
"fixed-component-action-group"
>
<el-tag
<el-tag
v-if=
"showPageConfig"
v-if=
"showPageConfig"
size=
"large"
:effect=
"selectedComponent?.uid === pageConfigComponent.uid ? 'dark' : 'plain'"
:effect=
"selectedComponent?.uid === pageConfigComponent.uid ? 'dark' : 'plain'"
:type=
"selectedComponent?.uid === pageConfigComponent.uid ? '' : 'info'"
:type=
"selectedComponent?.uid === pageConfigComponent.uid ? '' : 'info'"
size=
"large"
@
click=
"handleComponentSelected(pageConfigComponent)"
@
click=
"handleComponentSelected(pageConfigComponent)"
>
>
<Icon
:icon=
"pageConfigComponent.icon"
:size=
"12"
/>
<Icon
:icon=
"pageConfigComponent.icon"
:size=
"12"
/>
...
@@ -120,10 +120,10 @@
...
@@ -120,10 +120,10 @@
<
template
v-for=
"(component, index) in pageComponents"
:key=
"index"
>
<
template
v-for=
"(component, index) in pageComponents"
:key=
"index"
>
<el-tag
<el-tag
v-if=
"component.position === 'fixed'"
v-if=
"component.position === 'fixed'"
size=
"large"
closable
:effect=
"selectedComponent?.uid === component.uid ? 'dark' : 'plain'"
:effect=
"selectedComponent?.uid === component.uid ? 'dark' : 'plain'"
:type=
"selectedComponent?.uid === component.uid ? '' : 'info'"
:type=
"selectedComponent?.uid === component.uid ? '' : 'info'"
closable
size=
"large"
@
click=
"handleComponentSelected(component)"
@
click=
"handleComponentSelected(component)"
@
close=
"handleDeleteComponent(index)"
@
close=
"handleDeleteComponent(index)"
>
>
...
@@ -134,11 +134,11 @@
...
@@ -134,11 +134,11 @@
</div>
</div>
</div>
</div>
<!-- 右侧:属性面板(ComponentContainerProperty) -->
<!-- 右侧:属性面板(ComponentContainerProperty) -->
<el-aside
class=
"editor-right"
width=
"350px"
v-if=
"selectedComponent?.property
"
>
<el-aside
v-if=
"selectedComponent?.property"
class=
"editor-right"
width=
"350px
"
>
<el-card
<el-card
shadow=
"never"
body-class=
"h-[calc(100%-var(--el-card-padding)-var(--el-card-padding))]"
body-class=
"h-[calc(100%-var(--el-card-padding)-var(--el-card-padding))]"
class=
"h-full"
class=
"h-full"
shadow=
"never"
>
>
<!-- 组件名称 -->
<!-- 组件名称 -->
<
template
#
header
>
<
template
#
header
>
...
@@ -152,8 +152,8 @@
...
@@ -152,8 +152,8 @@
view-class=
"p-[var(--el-card-padding)] p-b-[calc(var(--el-card-padding)+var(--el-card-padding))] property"
view-class=
"p-[var(--el-card-padding)] p-b-[calc(var(--el-card-padding)+var(--el-card-padding))] property"
>
>
<component
<component
:key=
"selectedComponent?.uid || selectedComponent?.id"
:is=
"selectedComponent?.id + 'Property'"
:is=
"selectedComponent?.id + 'Property'"
:key=
"selectedComponent?.uid || selectedComponent?.id"
v-model=
"selectedComponent.property"
v-model=
"selectedComponent.property"
/>
/>
</el-scrollbar>
</el-scrollbar>
...
@@ -166,8 +166,8 @@
...
@@ -166,8 +166,8 @@
<Dialog
v-model=
"previewDialogVisible"
title=
"预览"
width=
"700"
>
<Dialog
v-model=
"previewDialogVisible"
title=
"预览"
width=
"700"
>
<div
class=
"flex justify-around"
>
<div
class=
"flex justify-around"
>
<IFrame
<IFrame
class=
"w-375px border-4px border-rounded-8px border-solid p-2px h-667px!"
:src=
"previewUrl"
:src=
"previewUrl"
class=
"w-375px border-4px border-rounded-8px border-solid p-2px h-667px!"
/>
/>
<div
class=
"flex flex-col"
>
<div
class=
"flex flex-col"
>
<el-text>
手机扫码预览
</el-text>
<el-text>
手机扫码预览
</el-text>
...
@@ -179,6 +179,7 @@
...
@@ -179,6 +179,7 @@
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
// 注册所有的组件
// 注册所有的组件
import
{
components
}
from
'./components/mobile/index'
import
{
components
}
from
'./components/mobile/index'
export
default
{
export
default
{
components
:
{
...
components
}
components
:
{
...
components
}
}
}
...
@@ -257,6 +258,11 @@ watch(
...
@@ -257,6 +258,11 @@ watch(
// 保存
// 保存
const
handleSave
=
()
=>
{
const
handleSave
=
()
=>
{
// 发送保存通知
emits
(
'save'
)
}
// 监听配置修改
const
pageConfigChange
=
()
=>
{
const
pageConfig
=
{
const
pageConfig
=
{
page
:
pageConfigComponent
.
value
.
property
,
page
:
pageConfigComponent
.
value
.
property
,
navigationBar
:
navigationBarComponent
.
value
.
property
,
navigationBar
:
navigationBarComponent
.
value
.
property
,
...
@@ -272,10 +278,19 @@ const handleSave = () => {
...
@@ -272,10 +278,19 @@ const handleSave = () => {
// 发送数据更新通知
// 发送数据更新通知
const
modelValue
=
isString
(
props
.
modelValue
)
?
JSON
.
stringify
(
pageConfig
)
:
pageConfig
const
modelValue
=
isString
(
props
.
modelValue
)
?
JSON
.
stringify
(
pageConfig
)
:
pageConfig
emits
(
'update:modelValue'
,
modelValue
)
emits
(
'update:modelValue'
,
modelValue
)
// 发送保存通知
emits
(
'save'
,
pageConfig
)
}
}
watch
(
()
=>
[
pageConfigComponent
.
value
.
property
,
navigationBarComponent
.
value
.
property
,
tabBarComponent
.
value
.
property
,
pageComponents
.
value
],
()
=>
{
pageConfigChange
()
},
{
deep
:
true
}
)
// 处理页面选中:显示属性表单
// 处理页面选中:显示属性表单
const
handlePageSelected
=
(
event
:
any
)
=>
{
const
handlePageSelected
=
(
event
:
any
)
=>
{
if
(
!
props
.
showPageConfig
)
return
if
(
!
props
.
showPageConfig
)
return
...
@@ -547,6 +562,7 @@ $toolbar-height: 42px;
...
@@ -547,6 +562,7 @@ $toolbar-height: 42px;
:deep(.el-tag)
{
:deep(.el-tag)
{
box-shadow
:
0
2px
8px
0
rgba
(
0
,
0
,
0
,
0.1
);
box-shadow
:
0
2px
8px
0
rgba
(
0
,
0
,
0
,
0.1
);
border
:
none
;
border
:
none
;
.el-tag__content
{
.el-tag__content
{
width
:
100%
;
width
:
100%
;
display
:
flex
;
display
:
flex
;
...
...
src/views/mall/promotion/diy/template/decorate.vue
View file @
2efd0d69
...
@@ -2,18 +2,18 @@
...
@@ -2,18 +2,18 @@
<DiyEditor
<DiyEditor
v-if=
"formData && !formLoading"
v-if=
"formData && !formLoading"
v-model=
"currentFormData!.property"
v-model=
"currentFormData!.property"
:title=
"templateItems[selectedTemplateItem].name"
:libs=
"libs"
:libs=
"libs"
:preview-url=
"previewUrl"
:show-navigation-bar=
"selectedTemplateItem !== 0"
:show-page-config=
"selectedTemplateItem !== 0"
:show-page-config=
"selectedTemplateItem !== 0"
:show-tab-bar=
"selectedTemplateItem === 0"
:show-tab-bar=
"selectedTemplateItem === 0"
:show-navigation-bar=
"selectedTemplateItem !== 0"
:title=
"templateItems[selectedTemplateItem].name"
:preview-url=
"previewUrl"
@
save=
"submitForm"
@
reset=
"handleEditorReset"
@
reset=
"handleEditorReset"
@
save=
"submitForm"
>
>
<template
#
toolBarLeft
>
<template
#
toolBarLeft
>
<el-radio-group
<el-radio-group
v-model
=
"selectedTemplateItem"
:model-value
=
"selectedTemplateItem"
class=
"h-full!"
class=
"h-full!"
@
change=
"handleTemplateItemChange"
@
change=
"handleTemplateItemChange"
>
>
...
@@ -26,13 +26,14 @@
...
@@ -26,13 +26,14 @@
</
template
>
</
template
>
</DiyEditor>
</DiyEditor>
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
lang=
"ts"
setup
>
// TODO @疯狂:要不要建个 decorate 目录,然后挪进去,改成 index.vue,这样可以更明确看到是个独立界面哈,更好找
// TODO @疯狂:要不要建个 decorate 目录,然后挪进去,改成 index.vue,这样可以更明确看到是个独立界面哈,更好找
import
*
as
DiyTemplateApi
from
'@/api/mall/promotion/diy/template'
import
*
as
DiyTemplateApi
from
'@/api/mall/promotion/diy/template'
import
*
as
DiyPageApi
from
'@/api/mall/promotion/diy/page'
import
*
as
DiyPageApi
from
'@/api/mall/promotion/diy/page'
import
{
useTagsViewStore
}
from
'@/store/modules/tagsView'
import
{
useTagsViewStore
}
from
'@/store/modules/tagsView'
import
{
DiyComponentLibrary
,
PAGE_LIBS
}
from
'@/components/DiyEditor/util'
// 商城的 DIY 组件,在 DiyEditor 目录下
import
{
DiyComponentLibrary
,
PAGE_LIBS
}
from
'@/components/DiyEditor/util'
// 商城的 DIY 组件,在 DiyEditor 目录下
import
{
toNumber
}
from
'lodash-es'
import
{
toNumber
}
from
'lodash-es'
import
{
isEmpty
}
from
'@/utils/is'
/** 装修模板表单 */
/** 装修模板表单 */
defineOptions
({
name
:
'DiyTemplateDecorate'
})
defineOptions
({
name
:
'DiyTemplateDecorate'
})
...
@@ -52,6 +53,10 @@ const formData = ref<DiyTemplateApi.DiyTemplatePropertyVO>()
...
@@ -52,6 +53,10 @@ const formData = ref<DiyTemplateApi.DiyTemplatePropertyVO>()
const
formRef
=
ref
()
// 表单 Ref
const
formRef
=
ref
()
// 表单 Ref
// 当前编辑的属性
// 当前编辑的属性
const
currentFormData
=
ref
<
DiyTemplateApi
.
DiyTemplatePropertyVO
|
DiyPageApi
.
DiyPageVO
>
()
const
currentFormData
=
ref
<
DiyTemplateApi
.
DiyTemplatePropertyVO
|
DiyPageApi
.
DiyPageVO
>
()
// templateItem 对应的缓存
const
currentFormDataMap
=
ref
<
Map
<
string
,
DiyTemplateApi
.
DiyTemplatePropertyVO
|
DiyPageApi
.
DiyPageVO
>
>
(
new
Map
())
// 商城 H5 预览地址
// 商城 H5 预览地址
const
previewUrl
=
ref
(
''
)
const
previewUrl
=
ref
(
''
)
...
@@ -60,8 +65,6 @@ const getPageDetail = async (id: any) => {
...
@@ -60,8 +65,6 @@ const getPageDetail = async (id: any) => {
formLoading
.
value
=
true
formLoading
.
value
=
true
try
{
try
{
formData
.
value
=
await
DiyTemplateApi
.
getDiyTemplateProperty
(
id
)
formData
.
value
=
await
DiyTemplateApi
.
getDiyTemplateProperty
(
id
)
currentFormData
.
value
=
formData
.
value
// 拼接手机预览链接
// 拼接手机预览链接
const
domain
=
import
.
meta
.
env
.
VITE_MALL_H5_DOMAIN
const
domain
=
import
.
meta
.
env
.
VITE_MALL_H5_DOMAIN
previewUrl
.
value
=
`
${
domain
}
/#/pages/index/index?templateId=
${
formData
.
value
.
id
}
`
previewUrl
.
value
=
`
${
domain
}
/#/pages/index/index?templateId=
${
formData
.
value
.
id
}
`
...
@@ -75,19 +78,31 @@ const templateLibs = [] as DiyComponentLibrary[]
...
@@ -75,19 +78,31 @@ const templateLibs = [] as DiyComponentLibrary[]
// 当前组件库
// 当前组件库
const
libs
=
ref
<
DiyComponentLibrary
[]
>
(
templateLibs
)
const
libs
=
ref
<
DiyComponentLibrary
[]
>
(
templateLibs
)
// 模板选项切换
// 模板选项切换
const
handleTemplateItemChange
=
()
=>
{
const
handleTemplateItemChange
=
(
val
:
number
)
=>
{
// 缓存模版编辑数据
currentFormDataMap
.
value
.
set
(
templateItems
[
selectedTemplateItem
.
value
].
name
,
currentFormData
.
value
!
)
// 读取模版缓存
const
data
=
currentFormDataMap
.
value
.
get
(
templateItems
[
val
].
name
)
// 切换模版
selectedTemplateItem
.
value
=
val
// 编辑模板
// 编辑模板
if
(
selectedTemplateItem
.
value
===
0
)
{
if
(
val
===
0
)
{
libs
.
value
=
templateLibs
libs
.
value
=
templateLibs
currentFormData
.
value
=
formData
.
value
currentFormData
.
value
=
isEmpty
(
data
)
?
formData
.
value
:
data
return
return
}
}
// 编辑页面
// 编辑页面
libs
.
value
=
PAGE_LIBS
libs
.
value
=
PAGE_LIBS
currentFormData
.
value
=
formData
.
value
!
.
pages
.
find
(
currentFormData
.
value
=
isEmpty
(
data
)
(
page
:
DiyPageApi
.
DiyPageVO
)
=>
page
.
name
===
templateItems
[
selectedTemplateItem
.
value
].
name
?
formData
.
value
!
.
pages
.
find
(
(
page
:
DiyPageApi
.
DiyPageVO
)
=>
page
.
name
===
templateItems
[
val
].
name
)
)
:
data
}
}
// 提交表单
// 提交表单
...
@@ -97,12 +112,25 @@ const submitForm = async () => {
...
@@ -97,12 +112,25 @@ const submitForm = async () => {
// 提交请求
// 提交请求
formLoading
.
value
=
true
formLoading
.
value
=
true
try
{
try
{
if
(
selectedTemplateItem
.
value
===
0
)
{
// 对所有的 templateItems 都进行保存,有缓存则保存缓存,解决都有修改时只保存了当前所编辑的 templateItem,导致装修效果存在差异
for
(
let
i
=
0
;
i
<
templateItems
.
length
;
i
++
)
{
const
data
=
currentFormDataMap
.
value
.
get
(
templateItems
[
i
].
name
)
as
any
// 情况一:基础设置
if
(
i
===
0
)
{
// 提交模板属性
// 提交模板属性
await
DiyTemplateApi
.
updateDiyTemplateProperty
(
unref
(
formData
)
!
)
await
DiyTemplateApi
.
updateDiyTemplateProperty
(
isEmpty
(
data
)
?
unref
(
formData
)
!
:
data
)
}
else
{
continue
}
// 提交页面属性
// 提交页面属性
// 情况二:提交当前正在编辑的页面
if
(
currentFormData
.
value
?.
name
.
includes
(
templateItems
[
i
].
name
))
{
await
DiyPageApi
.
updateDiyPageProperty
(
unref
(
currentFormData
)
!
)
await
DiyPageApi
.
updateDiyPageProperty
(
unref
(
currentFormData
)
!
)
continue
}
// 情况三:提交页面编辑缓存
if
(
!
isEmpty
(
data
))
{
await
DiyPageApi
.
updateDiyPageProperty
(
data
!
)
}
}
}
message
.
success
(
'保存成功'
)
message
.
success
(
'保存成功'
)
}
finally
{
}
finally
{
...
@@ -140,10 +168,16 @@ const recoverPageIndex = () => {
...
@@ -140,10 +168,16 @@ const recoverPageIndex = () => {
const
pageIndex
=
toNumber
(
sessionStorage
.
getItem
(
DIY_PAGE_INDEX_KEY
))
||
0
const
pageIndex
=
toNumber
(
sessionStorage
.
getItem
(
DIY_PAGE_INDEX_KEY
))
||
0
// 移除标记
// 移除标记
sessionStorage
.
removeItem
(
DIY_PAGE_INDEX_KEY
)
sessionStorage
.
removeItem
(
DIY_PAGE_INDEX_KEY
)
// 重新初始化数据
currentFormData
.
value
=
formData
.
value
currentFormDataMap
.
value
=
new
Map
<
string
,
DiyTemplateApi
.
DiyTemplatePropertyVO
|
DiyPageApi
.
DiyPageVO
>
()
// 切换页面
// 切换页面
if
(
pageIndex
!==
selectedTemplateItem
.
value
)
{
if
(
pageIndex
!==
selectedTemplateItem
.
value
)
{
selectedTemplateItem
.
value
=
pageIndex
handleTemplateItemChange
(
pageIndex
)
handleTemplateItemChange
()
}
}
}
}
//#endregion
//#endregion
...
...
src/views/mall/trade/brokerage/user/BrokerageOrderListDialog.vue
View file @
2efd0d69
<
template
>
<
template
>
<Dialog
v-model=
"dialogVisible"
title=
"推广
人
列表"
width=
"75%"
>
<Dialog
v-model=
"dialogVisible"
title=
"推广
订单
列表"
width=
"75%"
>
<ContentWrap>
<ContentWrap>
<!-- 搜索工作栏 -->
<!-- 搜索工作栏 -->
<el-form
<el-form
class=
"-mb-15px"
:model=
"queryParams"
ref=
"queryFormRef"
ref=
"queryFormRef"
:inline=
"true"
:inline=
"true"
:model=
"queryParams"
class=
"-mb-15px"
label-width=
"85px"
label-width=
"85px"
>
>
<el-form-item
label=
"用户类型"
prop=
"
l
evel"
>
<el-form-item
label=
"用户类型"
prop=
"
sourceUserL
evel"
>
<el-radio-group
v-model=
"queryParams.
l
evel"
@
change=
"handleQuery"
>
<el-radio-group
v-model=
"queryParams.
sourceUserL
evel"
@
change=
"handleQuery"
>
<el-radio-button
checked
>
全部
</el-radio-button>
<el-radio-button
:value=
"0"
>
全部
</el-radio-button>
<el-radio-button
value=
"1"
>
一级推广人
</el-radio-button>
<el-radio-button
:
value=
"1"
>
一级推广人
</el-radio-button>
<el-radio-button
value=
"2"
>
二级推广人
</el-radio-button>
<el-radio-button
:
value=
"2"
>
二级推广人
</el-radio-button>
</el-radio-group>
</el-radio-group>
</el-form-item>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-select
<el-select
v-model=
"queryParams.status"
v-model=
"queryParams.status"
placeholder=
"请选择状态"
clearable
class=
"!w-240px"
class=
"!w-240px"
clearable
placeholder=
"请选择状态"
>
>
<el-option
<el-option
v-for=
"dict in getIntDictOptions(DICT_TYPE.BROKERAGE_RECORD_STATUS)"
v-for=
"dict in getIntDictOptions(DICT_TYPE.BROKERAGE_RECORD_STATUS)"
...
@@ -34,64 +34,70 @@
...
@@ -34,64 +34,70 @@
<el-form-item
label=
"绑定时间"
prop=
"createTime"
>
<el-form-item
label=
"绑定时间"
prop=
"createTime"
>
<el-date-picker
<el-date-picker
v-model=
"queryParams.createTime"
v-model=
"queryParams.createTime"
value-format=
"YYYY-MM-DD HH:mm:ss"
type=
"daterange"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
:default-time=
"[new Date('1 00:00:00'), new Date('1 23:59:59')]"
:default-time=
"[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class=
"!w-240px"
class=
"!w-240px"
end-placeholder=
"结束日期"
start-placeholder=
"开始日期"
type=
"daterange"
value-format=
"YYYY-MM-DD HH:mm:ss"
/>
/>
</el-form-item>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
@
click=
"handleQuery"
><Icon
icon=
"ep:search"
class=
"mr-5px"
/>
搜索
</el-button>
<el-button
@
click=
"handleQuery"
>
<el-button
@
click=
"resetQuery"
><Icon
icon=
"ep:refresh"
class=
"mr-5px"
/>
重置
</el-button>
<Icon
class=
"mr-5px"
icon=
"ep:search"
/>
搜索
</el-button>
<el-button
@
click=
"resetQuery"
>
<Icon
class=
"mr-5px"
icon=
"ep:refresh"
/>
重置
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
</ContentWrap>
</ContentWrap>
<!-- 列表 -->
<!-- 列表 -->
<ContentWrap>
<ContentWrap>
<el-table
v-loading=
"loading"
:data=
"list"
:s
tripe=
"true"
:show-overflow-tooltip
=
"true"
>
<el-table
v-loading=
"loading"
:data=
"list"
:s
how-overflow-tooltip=
"true"
:stripe
=
"true"
>
<el-table-column
label=
"订单编号"
align=
"center"
prop=
"bizId"
min-width=
"80px
"
/>
<el-table-column
align=
"center"
label=
"订单编号"
min-width=
"80px"
prop=
"bizId
"
/>
<el-table-column
label=
"用户编号"
align=
"center"
prop=
"sourceUserId"
min-width=
"80px
"
/>
<el-table-column
align=
"center"
label=
"用户编号"
min-width=
"80px"
prop=
"sourceUserId
"
/>
<el-table-column
label=
"头像"
align=
"center
"
prop=
"sourceUserAvatar"
width=
"70px"
>
<el-table-column
align=
"center"
label=
"头像
"
prop=
"sourceUserAvatar"
width=
"70px"
>
<template
#
default=
"scope"
>
<template
#
default=
"scope"
>
<el-avatar
:src=
"scope.row.sourceUserAvatar"
/>
<el-avatar
:src=
"scope.row.sourceUserAvatar"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"昵称"
align=
"center"
prop=
"sourceUserNickname"
min-width=
"80px
"
/>
<el-table-column
align=
"center"
label=
"昵称"
min-width=
"80px"
prop=
"sourceUserNickname
"
/>
<el-table-column
<el-table-column
label=
"佣金
"
:formatter=
"fenToYuanFormat
"
align=
"center"
align=
"center"
prop=
"price
"
label=
"佣金
"
min-width=
"100px"
min-width=
"100px"
:formatter=
"fenToYuanFormat
"
prop=
"price
"
/>
/>
<el-table-column
label=
"状态"
align=
"center"
prop=
"status"
min-width=
"85
"
>
<el-table-column
align=
"center"
label=
"状态"
min-width=
"85"
prop=
"status
"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.BROKERAGE_RECORD_STATUS"
:value=
"scope.row.status"
/>
<dict-tag
:type=
"DICT_TYPE.BROKERAGE_RECORD_STATUS"
:value=
"scope.row.status"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
label=
"创建时间
"
:formatter=
"dateFormatter
"
align=
"center"
align=
"center"
label=
"创建时间"
prop=
"createTime"
prop=
"createTime"
:formatter=
"dateFormatter"
width=
"180px"
width=
"180px"
/>
/>
</el-table>
</el-table>
<!-- 分页 -->
<!-- 分页 -->
<Pagination
<Pagination
:total=
"total"
v-model:page=
"queryParams.pageNo"
v-model:limit=
"queryParams.pageSize"
v-model:limit=
"queryParams.pageSize"
v-model:page=
"queryParams.pageNo"
:total=
"total"
@
pagination=
"getList"
@
pagination=
"getList"
/>
/>
</ContentWrap>
</ContentWrap>
</Dialog>
</Dialog>
</template>
</template>
<
script
setup
lang=
"ts"
>
<
script
lang=
"ts"
setup
>
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
*
as
BrokerageRecordApi
from
'@/api/mall/trade/brokerage/record'
import
*
as
BrokerageRecordApi
from
'@/api/mall/trade/brokerage/record'
import
{
BrokerageRecordBizTypeEnum
}
from
'@/utils/constants'
import
{
BrokerageRecordBizTypeEnum
}
from
'@/utils/constants'
...
@@ -101,8 +107,6 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
...
@@ -101,8 +107,6 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
/** 推广订单列表 */
/** 推广订单列表 */
defineOptions
({
name
:
'BrokerageOrderListDialog'
})
defineOptions
({
name
:
'BrokerageOrderListDialog'
})
const
message
=
useMessage
()
// 消息弹窗
const
loading
=
ref
(
true
)
// 列表的加载中
const
loading
=
ref
(
true
)
// 列表的加载中
const
total
=
ref
(
0
)
// 列表的总页数
const
total
=
ref
(
0
)
// 列表的总页数
const
list
=
ref
([])
// 列表的数据
const
list
=
ref
([])
// 列表的数据
...
@@ -111,7 +115,7 @@ const queryParams = reactive({
...
@@ -111,7 +115,7 @@ const queryParams = reactive({
pageSize
:
10
,
pageSize
:
10
,
userId
:
null
,
userId
:
null
,
bizType
:
BrokerageRecordBizTypeEnum
.
ORDER
.
type
,
bizType
:
BrokerageRecordBizTypeEnum
.
ORDER
.
type
,
level
:
''
,
sourceUserLevel
:
0
,
createTime
:
[],
createTime
:
[],
status
:
null
status
:
null
})
})
...
@@ -130,7 +134,12 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
...
@@ -130,7 +134,12 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
const
getList
=
async
()
=>
{
const
getList
=
async
()
=>
{
loading
.
value
=
true
loading
.
value
=
true
try
{
try
{
const
data
=
await
BrokerageRecordApi
.
getBrokerageRecordPage
(
queryParams
)
// 处理全部的情况
const
userLevel
=
queryParams
.
sourceUserLevel
===
0
?
undefined
:
queryParams
.
sourceUserLevel
const
data
=
await
BrokerageRecordApi
.
getBrokerageRecordPage
({
...
queryParams
,
sourceUserLevel
:
userLevel
})
list
.
value
=
data
.
list
list
.
value
=
data
.
list
total
.
value
=
data
.
total
total
.
value
=
data
.
total
}
finally
{
}
finally
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment