提交 444d0627 authored 作者: lidongxu's avatar lidongxu

Merge branch 'finance' into ldx

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
...@@ -6,6 +6,7 @@ export * from './bi/competitor' ...@@ -6,6 +6,7 @@ export * from './bi/competitor'
export * from './bi/product' export * from './bi/product'
export * from './bi/sale' export * from './bi/sale'
export * from './bi/store' export * from './bi/store'
export * from './bi/finance'
export * from './monitor/cache' export * from './monitor/cache'
export * from './monitor/job' export * from './monitor/job'
export * from './monitor/jobLog' export * from './monitor/jobLog'
......
...@@ -194,4 +194,8 @@ aside { ...@@ -194,4 +194,8 @@ aside {
vertical-align: middle; vertical-align: middle;
margin-bottom: 10px; margin-bottom: 10px;
} }
}
.el-table {
--el-table-border: 2px solid var(--el-table-border-color) !important;
} }
\ No newline at end of file
...@@ -200,6 +200,7 @@ html.dark { ...@@ -200,6 +200,7 @@ html.dark {
--el-table-header-text-color: var(--el-text-color-regular) !important; --el-table-header-text-color: var(--el-text-color-regular) !important;
--el-table-border-color: var(--el-border-color-light) !important; --el-table-border-color: var(--el-border-color-light) !important;
--el-table-row-hover-bg-color: var(--el-bg-color-overlay) !important; --el-table-row-hover-bg-color: var(--el-bg-color-overlay) !important;
.el-table__header-wrapper, .el-table__header-wrapper,
.el-table__fixed-header-wrapper { .el-table__fixed-header-wrapper {
......
<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>
...@@ -12,19 +12,14 @@ ...@@ -12,19 +12,14 @@
</div> </div>
</template> </template>
<script> <script setup
export default { name="xl-tooltip">
name: 'MouseToolTip', const show = ref(false)
data() {
return {
show: false
}
}
}
</script> </script>
<style scoped lang="scss"> <style scoped
.wrap{ lang="scss">
display: inline-block; .wrap {
} display: inline-block;
}
</style> </style>
\ No newline at end of file
...@@ -49,7 +49,9 @@ import CategoryTree from '@/components/CategoryTree' ...@@ -49,7 +49,9 @@ import CategoryTree from '@/components/CategoryTree'
// 返回头部 // 返回头部
import BackToUp from '@/components/BackToUp' import BackToUp from '@/components/BackToUp'
// 自定义 toolTip // 自定义 toolTip
import CustomToolTip from '@/components/ToolTip' import XLToolTip from '@/components/XLToolTip'
// 自定义 select
import XlSelect from '@/components/XLSelect'
// 开窗查询组件 // 开窗查询组件
import OpenDialog from '@/components/OpenDialog' import OpenDialog from '@/components/OpenDialog'
...@@ -80,7 +82,8 @@ app.component('GroupLegend', GroupLegend) ...@@ -80,7 +82,8 @@ app.component('GroupLegend', GroupLegend)
app.component('NoData', NoData) app.component('NoData', NoData)
app.component('CategoryTree', CategoryTree) app.component('CategoryTree', CategoryTree)
app.component('BackToUp', BackToUp) app.component('BackToUp', BackToUp)
app.component('CustomToolTip', CustomToolTip) app.component('XlToolTip', XLToolTip)
app.component('XlSelect', XlSelect)
app.component('OpenDialog', OpenDialog) app.component('OpenDialog', OpenDialog)
// 全局插件 // 全局插件
......
...@@ -3,119 +3,290 @@ ...@@ -3,119 +3,290 @@
<div class="container"> <div class="container">
<!-- 搜索表单 --> <!-- 搜索表单 -->
<el-form :model="queryParams" <el-form :model="queryParams"
label-position="right"
label-width="68px"
inline> inline>
<el-form-item label="直播间"> <el-form-item label="直播间">
<el-select v-model="queryParams.brandList" <xl-select v-model="queryParams.brand"
allOption
multiple multiple
clearable clearable
collapse-tags collapse-tags
collapse-tags-tooltip collapse-tags-tooltip
@change="queryChange"> @change="getList">
<el-option v-for="str in brandList" <el-option v-for="str in brandList"
:label="str" :label="str"
:value="str"> :value="str">
</el-option> </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-select>
</el-form-item> </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> </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>
</div> </div>
</template> </template>
<script setup> <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({ const data = reactive({
brandList: [],
queryParams: { queryParams: {
brandList: [] brand: 'a', // 直播间
}, taste: '', // 口味
columns: [ spec: '', // 规格
{ series: '', // 系列
label: '订单编号', goods: '', // 商品
prop: '' date: [] // 日期
}, { }
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}, {
label: '订单编号',
prop: ''
}
]
}) })
const { brandList, queryParams } = toRefs(data) const { queryParams } = toRefs(data)
const queryChange = () => { const queryChange = () => {
} }
// 获取数据
const columns = ref([
{
label: '直播间',
prop: 'queryType'
},
{
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: 'id'
}, {
label: '店铺名称',
prop: 'name'
},
{
label: '原始单号',
prop: ''
}, {
label: '原始子单号',
prop: ''
}, {
label: '订单状态',
prop: ''
}, {
label: '交易时间',
prop: ''
}, {
label: '付款时间',
prop: ''
}, {
label: '发货时间',
prop: ''
}, {
label: '省市县',
prop: ''
}, {
label: '备注',
prop: ''
}, {
label: '应收金额',
prop: ''
}, {
label: '货品编号',
prop: ''
}, {
label: '货品名称',
prop: ''
}, {
label: '规格名称',
prop: ''
}, {
label: '分类',
prop: ''
}, {
label: '数量',
prop: ''
}, {
label: '优惠',
prop: ''
}, {
label: '分摊后总价',
prop: ''
}, {
label: '拆自组合装',
prop: ''
}, {
label: '组合装编码',
prop: ''
}, {
label: '组合装数量',
prop: ''
}, {
label: '赠品方式',
prop: ''
}, {
label: '分销商名称',
prop: ''
}, {
label: '分销商编号',
prop: ''
}, {
label: '平台货品名称',
prop: ''
}
])
</script> </script>
<style scoped <style scoped
lang="scsss"> lang="scss">
::v-deep(.el-form-item) {
width: 250px;
&:last-of-type {
width: 350px;
}
}
</style> </style>
\ No newline at end of file
...@@ -162,7 +162,7 @@ ...@@ -162,7 +162,7 @@
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
align="left"> align="left">
<template #default="scope"> <template #default="scope">
<custom-tool-tip content="修改" <xl-tool-tip content="修改"
placement="top" placement="top"
v-if="scope.row.userId !== 1"> v-if="scope.row.userId !== 1">
<el-button link <el-button link
...@@ -170,8 +170,8 @@ ...@@ -170,8 +170,8 @@
icon="Edit" icon="Edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['system:user:edit']"></el-button> v-hasPermi="['system:user:edit']"></el-button>
</custom-tool-tip> </xl-tool-tip>
<custom-tool-tip content="删除" <xl-tool-tip content="删除"
placement="top" placement="top"
v-if="scope.row.userId !== 1"> v-if="scope.row.userId !== 1">
<el-button link <el-button link
...@@ -179,8 +179,8 @@ ...@@ -179,8 +179,8 @@
icon="Delete" icon="Delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['system:user:remove']"></el-button> v-hasPermi="['system:user:remove']"></el-button>
</custom-tool-tip> </xl-tool-tip>
<custom-tool-tip content="重置密码" <xl-tool-tip content="重置密码"
placement="top" placement="top"
v-if="scope.row.userId !== 1"> v-if="scope.row.userId !== 1">
<el-button link <el-button link
...@@ -188,8 +188,8 @@ ...@@ -188,8 +188,8 @@
icon="Key" icon="Key"
@click="handleResetPwd(scope.row)" @click="handleResetPwd(scope.row)"
v-hasPermi="['system:user:resetPwd']"></el-button> v-hasPermi="['system:user:resetPwd']"></el-button>
</custom-tool-tip> </xl-tool-tip>
<custom-tool-tip content="分配角色" <xl-tool-tip content="分配角色"
placement="top" placement="top"
v-if="scope.row.userId !== 1"> v-if="scope.row.userId !== 1">
<el-button link <el-button link
...@@ -197,7 +197,7 @@ ...@@ -197,7 +197,7 @@
icon="CircleCheck" icon="CircleCheck"
@click="handleAuthRole(scope.row)" @click="handleAuthRole(scope.row)"
v-hasPermi="['system:user:edit']"></el-button> v-hasPermi="['system:user:edit']"></el-button>
</custom-tool-tip> </xl-tool-tip>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -672,8 +672,8 @@ ...@@ -672,8 +672,8 @@
open.value = true; open.value = true;
title.value = "添加用户"; title.value = "添加用户";
form.value.password = initPassword.value; form.value.password = initPassword.value;
}); })
}; }
/** 修改按钮操作 */ /** 修改按钮操作 */
function handleUpdate(row) { function handleUpdate(row) {
......
...@@ -33,7 +33,7 @@ export default defineConfig(({ mode, command }) => { ...@@ -33,7 +33,7 @@ export default defineConfig(({ mode, command }) => {
}, },
'/bclan': { '/bclan': {
// target: 'http://192.168.141.188:8080', // target: 'http://192.168.141.188:8080',
target: 'http://192.168.204.205:8080', target: 'http://192.168.186.205:8080',
changeOrigin: true, changeOrigin: true,
rewrite: (p) => p.replace(/^\/bclan/, '') rewrite: (p) => p.replace(/^\/bclan/, '')
}, },
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论