提交 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'
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'
......
......@@ -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
......@@ -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 {
......
<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 @@
</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
......@@ -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)
// 全局插件
......
......@@ -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
......@@ -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) {
......
......@@ -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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论