Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-ui
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-ui
Commits
444d0627
提交
444d0627
authored
1月 16, 2025
作者:
lidongxu
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'finance' into ldx
上级
b4ae5c7c
ba19897f
显示空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
316 行增加
和
65 行删除
+316
-65
finance.js
src/api/bi/finance.js
+15
-0
index.js
src/api/index.js
+1
-0
index.scss
src/assets/styles/index.scss
+5
-0
variables.module.scss
src/assets/styles/variables.module.scss
+1
-0
index.vue
src/components/XLSelect/index.vue
+58
-0
index.vue
src/components/XLToolTip/index.vue
+8
-12
main.js
src/main.js
+5
-2
index.vue
src/views/bi/finance/index.vue
+212
-40
index.vue
src/views/system/user/index.vue
+10
-10
vite.config.js
vite.config.js
+1
-1
没有找到文件。
src/api/bi/finance.js
0 → 100644
浏览文件 @
444d0627
import
request
from
'@/utils/request'
/**
* 获取财务列表
* @param {*} data
* @returns
*/
export
const
getFinanceListAPI
=
(
data
)
=>
{
return
request
({
url
:
'/bi/finance/cost/list'
,
method
:
'POST'
,
data
})
}
\ No newline at end of file
src/api/index.js
浏览文件 @
444d0627
...
...
@@ -6,6 +6,7 @@ export * from './bi/competitor'
export
*
from
'./bi/product'
export
*
from
'./bi/sale'
export
*
from
'./bi/store'
export
*
from
'./bi/finance'
export
*
from
'./monitor/cache'
export
*
from
'./monitor/job'
export
*
from
'./monitor/jobLog'
...
...
src/assets/styles/index.scss
浏览文件 @
444d0627
...
...
@@ -195,3 +195,7 @@ aside {
margin-bottom
:
10px
;
}
}
.el-table
{
--el-table-border
:
2px
solid
var
(
--
el-table-border-color
)
!
important
;
}
\ No newline at end of file
src/assets/styles/variables.module.scss
浏览文件 @
444d0627
...
...
@@ -201,6 +201,7 @@ html.dark {
--el-table-border-color
:
var
(
--
el-border-color-light
)
!
important
;
--el-table-row-hover-bg-color
:
var
(
--
el-bg-color-overlay
)
!
important
;
.el-table__header-wrapper
,
.el-table__fixed-header-wrapper
{
th
{
...
...
src/components/XLSelect/index.vue
0 → 100644
浏览文件 @
444d0627
<
template
>
<el-select
v-bind=
"$attrs"
v-model=
"selectedOptions"
@
change=
"handleChange"
>
<el-option
v-if=
"allOption"
:key=
"allSelectLabel"
:label=
"allSelectLabel"
:value=
"allSelectValue"
></el-option>
<slot></slot>
</el-select>
</
template
>
<
script
setup
>
const
selectedOptions
=
ref
([])
const
props
=
defineProps
({
allOption
:
{
// 开启全选选项
type
:
Boolean
,
default
:
false
,
},
allSelectLabel
:
{
// 全选文案
type
:
String
,
default
:
'全选'
,
},
allSelectValue
:
{
// 全选绑定值
type
:
[
String
,
Number
],
default
:
'ALL'
,
},
allSingleValue
:
{
// 全选模式(false:返回 option 组,true:返回 allSelectValue 值)
type
:
Boolean
,
default
:
false
,
},
modelValue
:
[
String
,
Object
,
Array
]
});
watch
(()
=>
props
.
modelValue
,
val
=>
{
// if (props.allOption) {
// // 判断不是数组则转成数组
// if (!Array.isArray(val)) {
// emits('update:modelValue', [val]);
// selectedOptions.value = [val];
// }
// }
},
{
deep
:
true
,
immediate
:
true
})
const
handleChange
=
(
val
)
=>
{
if
(
val
.
includes
(
props
.
allSelectValue
))
{
selectedOptions
.
value
=
[
props
.
allSelectValue
];
}
else
{
selectedOptions
.
value
=
val
;
}
// emit('update:modelValue', selectedOptions.value);
}
</
script
>
src/components/ToolTip/index.vue
→
src/components/
XL
ToolTip/index.vue
浏览文件 @
444d0627
...
...
@@ -12,19 +12,14 @@
</div>
</
template
>
<
script
>
export
default
{
name
:
'MouseToolTip'
,
data
()
{
return
{
show
:
false
}
}
}
<
script
setup
name=
"xl-tooltip"
>
const
show
=
ref
(
false
)
</
script
>
<
style
scoped
lang=
"scss"
>
.wrap
{
<
style
scoped
lang=
"scss"
>
.wrap
{
display
:
inline-block
;
}
}
</
style
>
\ No newline at end of file
src/main.js
浏览文件 @
444d0627
...
...
@@ -49,7 +49,9 @@ import CategoryTree from '@/components/CategoryTree'
// 返回头部
import
BackToUp
from
'@/components/BackToUp'
// 自定义 toolTip
import
CustomToolTip
from
'@/components/ToolTip'
import
XLToolTip
from
'@/components/XLToolTip'
// 自定义 select
import
XlSelect
from
'@/components/XLSelect'
// 开窗查询组件
import
OpenDialog
from
'@/components/OpenDialog'
...
...
@@ -80,7 +82,8 @@ app.component('GroupLegend', GroupLegend)
app
.
component
(
'NoData'
,
NoData
)
app
.
component
(
'CategoryTree'
,
CategoryTree
)
app
.
component
(
'BackToUp'
,
BackToUp
)
app
.
component
(
'CustomToolTip'
,
CustomToolTip
)
app
.
component
(
'XlToolTip'
,
XLToolTip
)
app
.
component
(
'XlSelect'
,
XlSelect
)
app
.
component
(
'OpenDialog'
,
OpenDialog
)
// 全局插件
...
...
src/views/bi/finance/index.vue
浏览文件 @
444d0627
...
...
@@ -3,119 +3,290 @@
<div
class=
"container"
>
<!-- 搜索表单 -->
<el-form
:model=
"queryParams"
label-position=
"right"
label-width=
"68px"
inline
>
<el-form-item
label=
"直播间"
>
<el-select
v-model=
"queryParams.brandList"
<xl-select
v-model=
"queryParams.brand"
allOption
multiple
clearable
collapse-tags
collapse-tags-tooltip
@
change=
"
queryChange
"
>
@
change=
"
getList
"
>
<el-option
v-for=
"str in brandList"
:label=
"str"
:value=
"str"
>
</el-option>
</xl-select>
</el-form-item>
<el-form-item
label=
"口味"
>
<el-select
v-model=
"queryParams.taste"
multiple
clearable
collapse-tags
collapse-tags-tooltip
@
change=
"getList"
>
<el-option
v-for=
"str in tasteList"
:label=
"str"
:value=
"str"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"规格"
>
<el-select
v-model=
"queryParams.spec"
multiple
clearable
collapse-tags
collapse-tags-tooltip
@
change=
"getList"
>
<el-option
v-for=
"str in specList"
:label=
"str"
:value=
"str"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"系列"
>
<el-select
v-model=
"queryParams.series"
multiple
clearable
collapse-tags
collapse-tags-tooltip
@
change=
"getList"
>
<el-option
v-for=
"str in seriesList"
:label=
"str"
:value=
"str"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"商品"
>
<el-select
v-model=
"queryParams.goods"
multiple
clearable
collapse-tags
collapse-tags-tooltip
@
change=
"getList"
>
<el-option
v-for=
"str in goodsList"
:label=
"str"
:value=
"str"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"日期选择"
>
<el-date-picker
v-model=
"queryParams.date"
type=
"daterange"
:clearable=
"false"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
:shortcuts=
"pickerOptions"
@
change=
"queryChangeFn()"
>
</el-date-picker>
</el-form-item>
</el-form>
<!-- 数据 -->
<div>
<el-table
:data=
"tableData"
border
>
<el-table-column
v-for=
"item in columns"
:key=
"item.prop"
:label=
"item.label"
:prop=
"item.prop"
>
<template
v-slot=
"scope"
>
{{
scope
.
row
[
item
.
prop
]
}}
</
template
>
</el-table-column>
</el-table>
</div>
<!-- 订单详情 -->
<el-dialog
v-model=
"detailVisible"
title=
"Shipping address"
width=
"80%"
>
<el-table
:data=
"detailTableData"
>
<el-table-column
property=
"date"
label=
"Date"
width=
"150"
/>
<el-table-column
property=
"name"
label=
"Name"
width=
"200"
/>
<el-table-column
property=
"address"
label=
"Address"
/>
</el-table>
</el-dialog>
</div>
</div>
</template>
<
script
setup
>
import
{
getFinanceListAPI
}
from
'@/api'
import
{
useDatePickerOptions
}
from
'@/hooks'
const
{
pickerOptions
}
=
useDatePickerOptions
()
const
detailVisible
=
ref
(
false
)
// 详情
const
brandList
=
ref
([
'a'
,
'b'
,
'c'
])
// 直播间
const
tasteList
=
ref
([])
// 口味
const
specList
=
ref
([])
// 规则
const
seriesList
=
ref
([])
// 系列
const
goodsList
=
ref
([])
// 商品
const
data
=
reactive
({
brandList
:
[],
queryParams
:
{
brandList
:
[]
brand
:
'a'
,
// 直播间
taste
:
''
,
// 口味
spec
:
''
,
// 规格
series
:
''
,
// 系列
goods
:
''
,
// 商品
date
:
[]
// 日期
}
})
const
{
queryParams
}
=
toRefs
(
data
)
const
queryChange
=
()
=>
{
}
// 获取数据
const
columns
=
ref
([
{
label
:
'直播间'
,
prop
:
'queryType'
},
columns
:
[
{
label
:
'口味'
,
prop
:
'queryType'
},
{
label
:
'规格'
,
prop
:
'queryType'
},
{
label
:
'系列'
,
prop
:
'queryType'
},
{
label
:
'商品'
,
prop
:
'queryType'
},
{
label
:
'分摊后总价'
,
prop
:
'shareAmountSum'
},
{
label
:
'实际成本'
,
prop
:
'actualCostSum'
},
{
label
:
'标准成本'
,
prop
:
'standardCostSum'
},
{
label
:
'实际成本毛利'
,
prop
:
'standardCostSum'
},
{
label
:
'标准成本毛利'
,
prop
:
'standardCostSum'
}
])
const
tableData
=
ref
([
])
const
getList
=
async
()
=>
{
const
res
=
await
getFinanceListAPI
(
queryParams
.
value
)
tableData
.
value
=
res
.
data
.
list
}
getList
()
const
detailTableData
=
ref
([])
const
detailColumns
=
ref
([
{
label
:
'订单编号'
,
prop
:
''
},
{
label
:
'订单编号'
,
prop
:
''
prop
:
'id'
},
{
label
:
'订单编号'
,
label
:
'店铺名称'
,
prop
:
'name'
},
{
label
:
'原始单号'
,
prop
:
''
},
{
label
:
'订单编
号'
,
label
:
'原始子单
号'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'订单状态
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'交易时间
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'付款时间
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'发货时间
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'省市县
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'备注
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'应收金额
'
,
prop
:
''
},
{
label
:
'订单
编号'
,
label
:
'货品
编号'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'货品名称
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'规格名称
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'分类
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'数量
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'优惠
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'分摊后总价
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'拆自组合装
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'组合装编码
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'组合装数量
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'赠品方式
'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'分销商名称
'
,
prop
:
''
},
{
label
:
'订单
编号'
,
label
:
'分销商
编号'
,
prop
:
''
},
{
label
:
'订单编号
'
,
label
:
'平台货品名称
'
,
prop
:
''
}
]
})
])
const
{
brandList
,
queryParams
}
=
toRefs
(
data
)
const
queryChange
=
()
=>
{
}
</
script
>
<
style
scoped
lang=
"scsss"
>
lang=
"scss"
>
::v-deep
(
.el-form-item
)
{
width
:
250px
;
&
:last-of-type
{
width
:
350px
;
}
}
</
style
>
\ No newline at end of file
src/views/system/user/index.vue
浏览文件 @
444d0627
...
...
@@ -162,7 +162,7 @@
class-name=
"small-padding fixed-width"
align=
"left"
>
<
template
#
default=
"scope"
>
<
custom
-tool-tip
content=
"修改"
<
xl
-tool-tip
content=
"修改"
placement=
"top"
v-if=
"scope.row.userId !== 1"
>
<el-button
link
...
...
@@ -170,8 +170,8 @@
icon=
"Edit"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['system:user:edit']"
></el-button>
</
custom
-tool-tip>
<
custom
-tool-tip
content=
"删除"
</
xl
-tool-tip>
<
xl
-tool-tip
content=
"删除"
placement=
"top"
v-if=
"scope.row.userId !== 1"
>
<el-button
link
...
...
@@ -179,8 +179,8 @@
icon=
"Delete"
@
click=
"handleDelete(scope.row)"
v-hasPermi=
"['system:user:remove']"
></el-button>
</
custom
-tool-tip>
<
custom
-tool-tip
content=
"重置密码"
</
xl
-tool-tip>
<
xl
-tool-tip
content=
"重置密码"
placement=
"top"
v-if=
"scope.row.userId !== 1"
>
<el-button
link
...
...
@@ -188,8 +188,8 @@
icon=
"Key"
@
click=
"handleResetPwd(scope.row)"
v-hasPermi=
"['system:user:resetPwd']"
></el-button>
</
custom
-tool-tip>
<
custom
-tool-tip
content=
"分配角色"
</
xl
-tool-tip>
<
xl
-tool-tip
content=
"分配角色"
placement=
"top"
v-if=
"scope.row.userId !== 1"
>
<el-button
link
...
...
@@ -197,7 +197,7 @@
icon=
"CircleCheck"
@
click=
"handleAuthRole(scope.row)"
v-hasPermi=
"['system:user:edit']"
></el-button>
</
custom
-tool-tip>
</
xl
-tool-tip>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -672,8 +672,8 @@
open
.
value
=
true
;
title
.
value
=
"添加用户"
;
form
.
value
.
password
=
initPassword
.
value
;
})
;
}
;
})
}
/** 修改按钮操作 */
function
handleUpdate
(
row
)
{
...
...
vite.config.js
浏览文件 @
444d0627
...
...
@@ -33,7 +33,7 @@ export default defineConfig(({ mode, command }) => {
},
'/bclan'
:
{
// target: 'http://192.168.141.188:8080',
target
:
'http://192.168.
204
.205:8080'
,
target
:
'http://192.168.
186
.205:8080'
,
changeOrigin
:
true
,
rewrite
:
(
p
)
=>
p
.
replace
(
/^
\/
bclan/
,
''
)
},
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论