Compare commits
25 Commits
dev-report
...
6246d46d53
| Author | SHA1 | Date | |
|---|---|---|---|
| 6246d46d53 | |||
| 98a5d374a4 | |||
| dd049320f6 | |||
| 696e96a0c0 | |||
| ee770b9e60 | |||
| 6908183a36 | |||
| af9bcb7024 | |||
| 5c6c3df4d0 | |||
| acdcc670de | |||
| 9472c5ea56 | |||
| 4f150b0912 | |||
| f76d6dce66 | |||
| dd4bdb0786 | |||
| 477a279867 | |||
| c87637cc78 | |||
| a544840679 | |||
| 247c6ed4a0 | |||
| 769c901954 | |||
| 18bfc7d353 | |||
| fb6b341242 | |||
| fea69da8ed | |||
| 125f6f28ad | |||
| 39cddaa8e0 | |||
| ffd15e2433 | |||
| 2bebd0480e |
@@ -4,7 +4,7 @@ VITE_NODE_ENV=development
|
|||||||
VITE_DEV=true
|
VITE_DEV=true
|
||||||
|
|
||||||
# 请求路径
|
# 请求路径
|
||||||
VITE_BASE_URL='http://118.31.23.45:48080'
|
VITE_BASE_URL='http://localhost:48080'
|
||||||
# VITE_BASE_URL='http://114.55.169.15:48080'
|
# VITE_BASE_URL='http://114.55.169.15:48080'
|
||||||
|
|
||||||
# 上传路径
|
# 上传路径
|
||||||
|
|||||||
@@ -2,7 +2,3 @@ import request from '@/config/axios'
|
|||||||
export const getList = async (data) => {
|
export const getList = async (data) => {
|
||||||
return await request.post({ url: '/admin-api/crm/sch-clue/clueQuality/report', data })
|
return await request.post({ url: '/admin-api/crm/sch-clue/clueQuality/report', data })
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getPeriodList = async (data) => {
|
|
||||||
return await request.post({ url: '/admin-api/crm/sch-clue/clueQuality/period/report', data })
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ const props = defineProps({
|
|||||||
// fileType: propTypes.array.def(['doc', 'xls', 'ppt', 'txt', 'pdf']), // 文件类型, 例如['png', 'jpg', 'jpeg']
|
// fileType: propTypes.array.def(['doc', 'xls', 'ppt', 'txt', 'pdf']), // 文件类型, 例如['png', 'jpg', 'jpeg']
|
||||||
fileType: propTypes.array.def([]),
|
fileType: propTypes.array.def([]),
|
||||||
accept: propTypes.string.def('*'),
|
accept: propTypes.string.def('*'),
|
||||||
fileSize: propTypes.number.def(100), // 大小限制(MB)
|
fileSize: propTypes.number.def(5), // 大小限制(MB)
|
||||||
limit: propTypes.number.def(5), // 数量限制
|
limit: propTypes.number.def(5), // 数量限制
|
||||||
autoUpload: propTypes.bool.def(true), // 自动上传
|
autoUpload: propTypes.bool.def(true), // 自动上传
|
||||||
drag: propTypes.bool.def(false), // 拖拽上传
|
drag: propTypes.bool.def(false), // 拖拽上传
|
||||||
|
|||||||
@@ -13,12 +13,7 @@ export const useMessage = () => {
|
|||||||
},
|
},
|
||||||
// 成功消息
|
// 成功消息
|
||||||
success(content: string) {
|
success(content: string) {
|
||||||
// ElMessage.success(content)
|
ElMessage.success(content)
|
||||||
ElMessage({
|
|
||||||
message: content,
|
|
||||||
duration: 1500,
|
|
||||||
type: 'success'
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
// 警告消息
|
// 警告消息
|
||||||
warning(content: string) {
|
warning(content: string) {
|
||||||
|
|||||||
@@ -106,6 +106,7 @@ const remainingRouter: AppRouteRecordRaw[] = [
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
// {
|
// {
|
||||||
// path: '/dict',
|
// path: '/dict',
|
||||||
// component: Layout,
|
// component: Layout,
|
||||||
|
|||||||
@@ -11,9 +11,9 @@
|
|||||||
end-placeholder="选择日期"
|
end-placeholder="选择日期"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="成交周期" prop="periodNumber">
|
<el-form-item label="成交周期" prop="period">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="searchForm.periodNumber"
|
v-model="searchForm.period"
|
||||||
:min="1"
|
:min="1"
|
||||||
:controls="false"
|
:controls="false"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
@@ -62,9 +62,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="ChannelPeriod">
|
<script setup name="ChannelPeriod">
|
||||||
import { getPeriodList } from '@/api/home/reportChannel'
|
import * as reportApi from '@/api/home/reportChannel'
|
||||||
import { removeNullField } from '@/utils'
|
import { removeNullField } from '@/utils'
|
||||||
import { formatDate } from '@/utils/formatTime'
|
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
sourceOptions: {
|
sourceOptions: {
|
||||||
@@ -83,25 +82,22 @@ const defaultProps = {
|
|||||||
const searchRef = ref()
|
const searchRef = ref()
|
||||||
|
|
||||||
const searchRules = {
|
const searchRules = {
|
||||||
// consultDate: { required: true, type: 'array', message: '请选择咨询日期', trigger: 'change,blur' },
|
consultDate: { required: true, type: 'array', message: '请选择咨询日期', trigger: 'change,blur' },
|
||||||
periodNumber: { required: true, message: '请输入成交周期', trigger: 'blur' }
|
period: { required: true, message: '请输入成交周期', trigger: 'blur' }
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getOptions()
|
getOptions()
|
||||||
handleReset()
|
handleReset()
|
||||||
handleSearch()
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const searchForm = ref({})
|
const searchForm = ref({})
|
||||||
|
|
||||||
function handleReset() {
|
function handleReset() {
|
||||||
const date = new Date()
|
|
||||||
date.setDate(1)
|
|
||||||
searchForm.value = {
|
searchForm.value = {
|
||||||
sourceId: undefined,
|
sourceId: undefined,
|
||||||
periodNumber: 30,
|
period: 30,
|
||||||
consultDate: [formatDate(date), formatDate(new Date())]
|
consultDate: []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,12 +110,7 @@ async function handleSearch() {
|
|||||||
const valid = await searchRef.value.validate()
|
const valid = await searchRef.value.validate()
|
||||||
if (!valid) return
|
if (!valid) return
|
||||||
loading.value = true
|
loading.value = true
|
||||||
const params = { ...searchForm.value }
|
const data = await reportApi.getList(removeNullField(searchForm.value))
|
||||||
if (params.consultDate && params.consultDate.length) {
|
|
||||||
params.startDateTime = params.consultDate[0]
|
|
||||||
params.endDateTime = params.consultDate[1]
|
|
||||||
}
|
|
||||||
const data = await getPeriodList(removeNullField(params))
|
|
||||||
tableList.value = data
|
tableList.value = data
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
|
|||||||
@@ -36,27 +36,15 @@
|
|||||||
<el-button @click="handleReset">重置</el-button>
|
<el-button @click="handleReset">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-table :data="tableList" border stripe show-summary :summary-method="getSummaries">
|
<el-table :data="tableList" border stripe>
|
||||||
<el-table-column label="周期" prop="period" width="110px" />
|
<el-table-column label="周期" prop="period" width="110px" />
|
||||||
<el-table-column prop="signNumber" label="成交数" />
|
<el-table-column prop="signNumber" label="成交数" />
|
||||||
<el-table-column prop="signPrice" label="成交额" />
|
<el-table-column prop="signPrice" label="成交额" />
|
||||||
<el-table-column
|
<el-table-column prop="signPriceSequentialGrowth" label="成交额环比增长" />
|
||||||
prop="signPriceSequentialGrowth"
|
<el-table-column prop="signPriceSamePeriodCompareGrowth" label="成交额同比增长" />
|
||||||
label="成交额环比增长"
|
|
||||||
:formatter="parseRate"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
prop="signPriceSamePeriodCompareGrowth"
|
|
||||||
label="成交额同比增长"
|
|
||||||
:formatter="parseRate"
|
|
||||||
/>
|
|
||||||
<el-table-column prop="profit" label="利润" />
|
<el-table-column prop="profit" label="利润" />
|
||||||
<el-table-column prop="profitSequentialGrowth" label="利润环比增长" :formatter="parseRate" />
|
<el-table-column prop="profitSequentialGrowth" label="利润环比增长" />
|
||||||
<el-table-column
|
<el-table-column prop="profitSamePeriodCompareGrowth" label="利润同比增长" />
|
||||||
prop="profitSamePeriodCompareGrowth"
|
|
||||||
label="利润同比增长"
|
|
||||||
:formatter="parseRate"
|
|
||||||
/>
|
|
||||||
<el-table-column prop="notReceivedMoney" label="未到账金额" />
|
<el-table-column prop="notReceivedMoney" label="未到账金额" />
|
||||||
<el-table-column prop="receivedMoney" label="已到账金额" />
|
<el-table-column prop="receivedMoney" label="已到账金额" />
|
||||||
<el-table-column prop="waitSettleMoney" label="待结算金额" />
|
<el-table-column prop="waitSettleMoney" label="待结算金额" />
|
||||||
@@ -112,38 +100,6 @@ async function handleSearch() {
|
|||||||
loading.value = false
|
loading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseRate(row, column) {
|
|
||||||
return Number(row[column.property] * 100).toFixed(2) + '%'
|
|
||||||
}
|
|
||||||
|
|
||||||
function getSummaries({ columns, data }) {
|
|
||||||
let sums = []
|
|
||||||
columns.forEach((column, index) => {
|
|
||||||
if (index == 0) {
|
|
||||||
sums[index] = '合计'
|
|
||||||
return
|
|
||||||
}
|
|
||||||
const values = data.map((item) => Number(item[column.property]))
|
|
||||||
if (!values.every((value) => Number.isNaN(value))) {
|
|
||||||
if (column.property.includes('Growth')) {
|
|
||||||
sums[index] = ''
|
|
||||||
} else {
|
|
||||||
sums[index] = values.reduce((prev, curr) => {
|
|
||||||
const value = Number(curr)
|
|
||||||
if (!Number.isNaN(value)) {
|
|
||||||
return prev + curr
|
|
||||||
} else {
|
|
||||||
return prev
|
|
||||||
}
|
|
||||||
}, 0)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
sums[index] = ''
|
|
||||||
}
|
|
||||||
})
|
|
||||||
return sums
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped></style>
|
<style lang="scss" scoped></style>
|
||||||
|
|||||||
Reference in New Issue
Block a user