Merge remote-tracking branch 'yudao/dev' into dev-crm

This commit is contained in:
puhui999 2024-03-02 23:26:26 +08:00
commit a31c995508
92 changed files with 228 additions and 29 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -202,6 +202,12 @@ _前端基于 crmeb uniapp 经过授权重构,优化代码实现,接入芋
演示地址:<https://doc.iocoder.cn/erp-preview/> 演示地址:<https://doc.iocoder.cn/erp-preview/>
### CRM 系统
![功能图](/.image/common/crm-feature.png)
演示地址:<https://doc.iocoder.cn/crm-preview/>
## 🐷 演示图 ## 🐷 演示图
### 系统功能 ### 系统功能

View File

@ -1,4 +1,5 @@
import dayjs from 'dayjs' import dayjs from 'dayjs'
import type { TableColumnCtx } from 'element-plus'
/** /**
* el-date-picker * el-date-picker
@ -68,10 +69,7 @@ export function formatDate(date: Date, format?: string): string {
return '' return ''
} }
// 日期存在,则进行格式化 // 日期存在,则进行格式化
if (format === undefined) { return date ? dayjs(date).format(format ?? 'YYYY-MM-DD HH:mm:ss') : ''
format = 'YYYY-MM-DD HH:mm:ss'
}
return dayjs(date).format(format)
} }
/** /**
@ -171,7 +169,7 @@ export function formatAxis(param: Date): string {
* @param ms * @param ms
* @returns {string} * @returns {string}
*/ */
export function formatPast2(ms) { export function formatPast2(ms: number): string {
const day = Math.floor(ms / (24 * 60 * 60 * 1000)) const day = Math.floor(ms / (24 * 60 * 60 * 1000))
const hour = Math.floor(ms / (60 * 60 * 1000) - day * 24) const hour = Math.floor(ms / (60 * 60 * 1000) - day * 24)
const minute = Math.floor(ms / (60 * 1000) - day * 24 * 60 - hour * 60) const minute = Math.floor(ms / (60 * 1000) - day * 24 * 60 - hour * 60)
@ -199,12 +197,8 @@ export function formatPast2(ms) {
* @param column * @param column
* @param cellValue * @param cellValue
*/ */
// @ts-ignore export function dateFormatter(_row: any, _column: TableColumnCtx<any>, cellValue: any): string {
export const dateFormatter = (row, column, cellValue): string => { return cellValue ? formatDate(cellValue) : ''
if (!cellValue) {
return ''
}
return formatDate(cellValue)
} }
/** /**
@ -214,12 +208,8 @@ export const dateFormatter = (row, column, cellValue): string => {
* @param column * @param column
* @param cellValue * @param cellValue
*/ */
// @ts-ignore export function dateFormatter2(_row: any, _column: TableColumnCtx<any>, cellValue: any): string {
export const dateFormatter2 = (row, column, cellValue) => { return cellValue ? formatDate(cellValue, 'YYYY-MM-DD') : ''
if (!cellValue) {
return
}
return formatDate(cellValue, 'YYYY-MM-DD')
} }
/** /**
@ -227,7 +217,7 @@ export const dateFormatter2 = (row, column, cellValue) => {
* @param param * @param param
* @returns 带时间00:00:00 * @returns 带时间00:00:00
*/ */
export function beginOfDay(param: Date) { export function beginOfDay(param: Date): Date {
return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 0, 0, 0) return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 0, 0, 0)
} }
@ -236,7 +226,7 @@ export function beginOfDay(param: Date) {
* @param param * @param param
* @returns 带时间23:59:59 * @returns 带时间23:59:59
*/ */
export function endOfDay(param: Date) { export function endOfDay(param: Date): Date {
return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 23, 59, 59) return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 23, 59, 59)
} }
@ -245,7 +235,7 @@ export function endOfDay(param: Date) {
* @param param1 1 * @param param1 1
* @param param2 2 * @param param2 2
*/ */
export function betweenDay(param1: Date, param2: Date) { export function betweenDay(param1: Date, param2: Date): number {
param1 = convertDate(param1) param1 = convertDate(param1)
param2 = convertDate(param2) param2 = convertDate(param2)
// 计算差值 // 计算差值
@ -257,7 +247,7 @@ export function betweenDay(param1: Date, param2: Date) {
* @param param1 * @param param1
* @param param2 * @param param2
*/ */
export function addTime(param1: Date, param2: number) { export function addTime(param1: Date, param2: number): Date {
param1 = convertDate(param1) param1 = convertDate(param1)
return new Date(param1.getTime() + param2) return new Date(param1.getTime() + param2)
} }
@ -266,7 +256,7 @@ export function addTime(param1: Date, param2: number) {
* *
* @param param * @param param
*/ */
export function convertDate(param: Date | string) { export function convertDate(param: Date | string): Date {
if (typeof param === 'string') { if (typeof param === 'string') {
return new Date(param) return new Date(param)
} }

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="工作流手册" url="https://doc.iocoder.cn/bpm/" />
<ContentWrap> <ContentWrap>
<el-table v-loading="loading" :data="list"> <el-table v-loading="loading" :data="list">
<el-table-column label="定义编号" align="center" prop="id" width="400" /> <el-table-column label="定义编号" align="center" prop="id" width="400" />

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="工作流手册" url="https://doc.iocoder.cn/bpm/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="工作流手册" url="https://doc.iocoder.cn/bpm/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="工作流手册" url="https://doc.iocoder.cn/bpm/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="工作流手册" url="https://doc.iocoder.cn/bpm/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="工作流手册" url="https://doc.iocoder.cn/bpm/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="工作流手册" url="https://doc.iocoder.cn/bpm/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="工作流手册" url="https://doc.iocoder.cn/bpm/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form
@ -75,7 +77,7 @@
:total="total" :total="total"
@pagination="getList" @pagination="getList"
/> />
<TaskCCDialogForm ref="taskCCDialogForm"/> <TaskCCDialogForm ref="taskCCDialogForm" />
</ContentWrap> </ContentWrap>
</template> </template>

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【通用】跟进记录、待办事项" url="https://doc.iocoder.cn/crm/follow-up/" />
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="4" class="min-w-[200px]"> <el-col :span="4" class="min-w-[200px]">
<div class="side-item-list"> <div class="side-item-list">

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【商机】商机管理、商机状态" url="https://doc.iocoder.cn/crm/business/" />
<doc-alert title="【通用】数据权限" url="https://doc.iocoder.cn/crm/permission/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【商机】商机管理、商机状态" url="https://doc.iocoder.cn/crm/business/" />
<doc-alert title="【通用】数据权限" url="https://doc.iocoder.cn/crm/permission/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【线索】线索管理" url="https://doc.iocoder.cn/crm/clue/" />
<doc-alert title="【通用】数据权限" url="https://doc.iocoder.cn/crm/permission/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【客户】客户管理、公海客户" url="https://doc.iocoder.cn/crm/customer/" />
<doc-alert title="【通用】数据权限" url="https://doc.iocoder.cn/crm/permission/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【合同】合同管理、合同提醒" url="https://doc.iocoder.cn/crm/contract/" />
<doc-alert title="【通用】数据权限" url="https://doc.iocoder.cn/crm/permission/" />
<ContentWrap> <ContentWrap>
<el-form <el-form
ref="formRef" ref="formRef"

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【合同】合同管理、合同提醒" url="https://doc.iocoder.cn/crm/contract/" />
<doc-alert title="【通用】数据权限" url="https://doc.iocoder.cn/crm/permission/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【客户】客户管理、公海客户" url="https://doc.iocoder.cn/crm/customer/" />
<doc-alert title="【通用】数据权限" url="https://doc.iocoder.cn/crm/permission/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【客户】客户管理、公海客户" url="https://doc.iocoder.cn/crm/customer/" />
<doc-alert title="【通用】数据权限" url="https://doc.iocoder.cn/crm/permission/" />
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-tabs> <el-tabs>

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【客户】客户管理、公海客户" url="https://doc.iocoder.cn/crm/customer/" />
<doc-alert title="【通用】数据权限" url="https://doc.iocoder.cn/crm/permission/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【客户】客户管理、公海客户" url="https://doc.iocoder.cn/crm/customer/" />
<doc-alert title="【通用】数据权限" url="https://doc.iocoder.cn/crm/permission/" />
<ContentWrap> <ContentWrap>
<el-form <el-form
ref="formRef" ref="formRef"

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【产品】产品管理、产品分类" url="https://doc.iocoder.cn/crm/product/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【产品】产品管理、产品分类" url="https://doc.iocoder.cn/crm/product/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -186,6 +186,8 @@ const open = async (
formLoading.value = true formLoading.value = true
try { try {
formData.value = await ReceivableApi.getReceivable(id) formData.value = await ReceivableApi.getReceivable(id)
await handleCustomerChange(formData.value.customerId)
formData.value.contractId = formData.value.contract.id
} finally { } finally {
formLoading.value = false formLoading.value = false
} }

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【回款】回款管理、回款计划" url="https://doc.iocoder.cn/crm/receivable/" />
<doc-alert title="【通用】数据权限" url="https://doc.iocoder.cn/crm/permission/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【回款】回款管理、回款计划" url="https://doc.iocoder.cn/crm/receivable/" />
<doc-alert title="【通用】数据权限" url="https://doc.iocoder.cn/crm/permission/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,9 @@
<template> <template>
<doc-alert
title="【财务】采购付款、销售收款"
url="https://doc.iocoder.cn/sale/finance-payment-receipt/"
/>
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,9 @@
<template> <template>
<doc-alert
title="【财务】采购付款、销售收款"
url="https://doc.iocoder.cn/sale/finance-payment-receipt/"
/>
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,9 @@
<template> <template>
<doc-alert
title="【财务】采购付款、销售收款"
url="https://doc.iocoder.cn/sale/finance-payment-receipt/"
/>
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="ERP 手册(功能开启)" url="https://doc.iocoder.cn/erp/build/" />
<div class="flex flex-col"> <div class="flex flex-col">
<!-- 销售/采购的全局统计 --> <!-- 销售/采购的全局统计 -->
<el-row :gutter="16" class="row"> <el-row :gutter="16" class="row">

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【产品】产品信息、分类、单位" url="https://doc.iocoder.cn/erp/product/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,5 +1,7 @@
<!-- ERP 产品列表 --> <!-- ERP 产品列表 -->
<template> <template>
<doc-alert title="【产品】产品信息、分类、单位" url="https://doc.iocoder.cn/erp/product/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【产品】产品信息、分类、单位" url="https://doc.iocoder.cn/erp/product/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【采购】采购订单、入库、退货" url="https://doc.iocoder.cn/erp/purchase/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【采购】采购订单、入库、退货" url="https://doc.iocoder.cn/erp/purchase/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【采购】采购订单、入库、退货" url="https://doc.iocoder.cn/erp/purchase/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【采购】采购订单、入库、退货" url="https://doc.iocoder.cn/erp/purchase/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【销售】销售订单、出库、退货" url="https://doc.iocoder.cn/erp/sale/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【销售】销售订单、出库、退货" url="https://doc.iocoder.cn/erp/sale/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【销售】销售订单、出库、退货" url="https://doc.iocoder.cn/erp/sale/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【销售】销售订单、出库、退货" url="https://doc.iocoder.cn/erp/sale/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,9 @@
<template> <template>
<doc-alert
title="【库存】库存调拨、库存盘点"
url="https://doc.iocoder.cn/erp/stock-move-check/"
/>
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【库存】其它入库、其它出库" url="https://doc.iocoder.cn/erp/stock-in-out/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,9 @@
<template> <template>
<doc-alert
title="【库存】库存调拨、库存盘点"
url="https://doc.iocoder.cn/erp/stock-move-check/"
/>
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【库存】其它入库、其它出库" url="https://doc.iocoder.cn/erp/stock-in-out/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,5 +1,7 @@
<!-- ERP 产品库存明细列表 --> <!-- ERP 产品库存明细列表 -->
<template> <template>
<doc-alert title="【库存】产品库存、库存明细" url="https://doc.iocoder.cn/erp/stock/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,5 +1,7 @@
<!-- ERP 产品库存列表 --> <!-- ERP 产品库存列表 -->
<template> <template>
<doc-alert title="【库存】产品库存、库存明细" url="https://doc.iocoder.cn/erp/stock/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,5 +1,7 @@
<!-- ERP 仓库列表 --> <!-- ERP 仓库列表 -->
<template> <template>
<doc-alert title="【库存】产品库存、库存明细" url="https://doc.iocoder.cn/erp/stock/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="WebSocket 实时通信" url="https://doc.iocoder.cn/websocket/" />
<div class="flex"> <div class="flex">
<!-- 左侧建立连接发送消息 --> <!-- 左侧建立连接发送消息 -->
<el-card :gutter="12" class="w-1/2" shadow="always"> <el-card :gutter="12" class="w-1/2" shadow="always">

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="商城手册(功能开启)" url="https://doc.iocoder.cn/mall/build/" />
<div class="flex flex-col"> <div class="flex flex-col">
<!-- 数据对照 --> <!-- 数据对照 -->
<el-row :gutter="16" class="row"> <el-row :gutter="16" class="row">

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="商城手册(功能开启)" url="https://doc.iocoder.cn/mall/build/" />
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<ContentWrap> <ContentWrap>
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【商品】商品分类" url="https://doc.iocoder.cn/mall/product-category/" />
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<ContentWrap> <ContentWrap>
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【商品】商品评价" url="https://doc.iocoder.cn/mall/product-comment/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【商品】商品属性" url="https://doc.iocoder.cn/mall/product-property/" />
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<ContentWrap> <ContentWrap>
<el-form <el-form

View File

@ -1,5 +1,7 @@
<!-- 商品中心 - 商品列表 --> <!-- 商品中心 - 商品列表 -->
<template> <template>
<doc-alert title="【商品】商品 SPU 与 SKU" url="https://doc.iocoder.cn/mall/product-spu-sku/" />
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<ContentWrap> <ContentWrap>
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【营销】内容管理" url="https://doc.iocoder.cn/mall/promotion-content/" />
<Dialog v-model="dialogVisible" :title="dialogTitle"> <Dialog v-model="dialogVisible" :title="dialogTitle">
<el-form <el-form
ref="formRef" ref="formRef"

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【营销】内容管理" url="https://doc.iocoder.cn/mall/promotion-content/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【营销】内容管理" url="https://doc.iocoder.cn/mall/promotion-content/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【营销】砍价活动" url="https://doc.iocoder.cn/mall/promotion-bargain/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【营销】砍价活动" url="https://doc.iocoder.cn/mall/promotion-bargain/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【营销】拼团活动" url="https://doc.iocoder.cn/mall/promotion-combination/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【营销】拼团活动" url="https://doc.iocoder.cn/mall/promotion-combination/" />
<!-- 统计信息展示 --> <!-- 统计信息展示 -->
<el-row :gutter="12"> <el-row :gutter="12">
<el-col :span="6"> <el-col :span="6">

View File

@ -1,5 +1,5 @@
<template> <template>
<doc-alert title="功能开启" url="https://doc.iocoder.cn/mall/build/" /> <doc-alert title="【营销】优惠劵" url="https://doc.iocoder.cn/mall/promotion-coupon/" />
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<ContentWrap> <ContentWrap>

View File

@ -1,5 +1,5 @@
<template> <template>
<doc-alert title="功能开启" url="https://doc.iocoder.cn/mall/build/" /> <doc-alert title="【营销】优惠劵" url="https://doc.iocoder.cn/mall/promotion-coupon/" />
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<ContentWrap> <ContentWrap>

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【营销】限时折扣" url="https://doc.iocoder.cn/mall/promotion-discount/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【营销】商城装修" url="https://doc.iocoder.cn/mall/diy/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【营销】商城装修" url="https://doc.iocoder.cn/mall/diy/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【营销】满减送" url="https://doc.iocoder.cn/mall/promotion-record/" />
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<ContentWrap> <ContentWrap>
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【营销】秒杀活动" url="https://doc.iocoder.cn/mall/promotion-seckill/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,5 +1,5 @@
<template> <template>
<doc-alert title="功能开启" url="https://doc.iocoder.cn/mall/build/" /> <doc-alert title="【营销】秒杀活动" url="https://doc.iocoder.cn/mall/promotion-seckill/" />
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<ContentWrap> <ContentWrap>

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【统计】会员、商品、交易统计" url="https://doc.iocoder.cn/mall/statistics/" />
<div class="flex flex-col"> <div class="flex flex-col">
<el-row :gutter="16" class="summary"> <el-row :gutter="16" class="summary">
<el-col :sm="6" :xs="12" v-loading="loading"> <el-col :sm="6" :xs="12" v-loading="loading">
@ -269,8 +271,9 @@ const getMemberSexStatisticsList = async () => {
const dictDataList = getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX) const dictDataList = getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX)
dictDataList.push({ label: '未知', value: null } as any) dictDataList.push({ label: '未知', value: null } as any)
sexChartOptions.series![0].data = dictDataList.map((dictData: DictDataType) => { sexChartOptions.series![0].data = dictDataList.map((dictData: DictDataType) => {
const userCount = list.find((item: MemberSexStatisticsRespVO) => item.sex === dictData.value) const userCount = list.find(
?.userCount (item: MemberSexStatisticsRespVO) => item.sex === dictData.value
)?.userCount
return { return {
name: dictData.label, name: dictData.label,
value: userCount || 0 value: userCount || 0

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【统计】会员、商品、交易统计" url="https://doc.iocoder.cn/mall/statistics/" />
<!-- 商品概览 --> <!-- 商品概览 -->
<ProductSummary /> <ProductSummary />
<!-- 商品排行 --> <!-- 商品排行 -->

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【统计】会员、商品、交易统计" url="https://doc.iocoder.cn/mall/statistics/" />
<div class="flex flex-col"> <div class="flex flex-col">
<el-row :gutter="16" class="summary"> <el-row :gutter="16" class="summary">
<el-col :sm="6" :xs="12"> <el-col :sm="6" :xs="12">

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【交易】售后退款" url="https://doc.iocoder.cn/mall/trade-aftersale/" />
<!-- 搜索 --> <!-- 搜索 -->
<ContentWrap> <ContentWrap>
<el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="68px"> <el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="68px">

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【交易】分销返佣" url="https://doc.iocoder.cn/mall/trade-brokerage/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【交易】分销返佣" url="https://doc.iocoder.cn/mall/trade-brokerage/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【交易】分销返佣" url="https://doc.iocoder.cn/mall/trade-brokerage/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【交易】交易订单" url="https://doc.iocoder.cn/mall/trade-order/" />
<doc-alert title="【交易】购物车" url="https://doc.iocoder.cn/mall/trade-cart/" />
<ContentWrap> <ContentWrap>
<el-form <el-form
ref="formRef" ref="formRef"

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【交易】快递发货" url="https://doc.iocoder.cn/mall/trade-delivery-express/" />
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<ContentWrap> <ContentWrap>
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【交易】快递发货" url="https://doc.iocoder.cn/mall/trade-delivery-express/" />
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<ContentWrap> <ContentWrap>
<el-form <el-form

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【交易】交易订单" url="https://doc.iocoder.cn/mall/trade-order/" />
<doc-alert title="【交易】购物车" url="https://doc.iocoder.cn/mall/trade-cart/" />
<!-- 搜索 --> <!-- 搜索 -->
<ContentWrap> <ContentWrap>
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="【交易】快递发货" url="https://doc.iocoder.cn/mall/trade-delivery-express/" />
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<ContentWrap> <ContentWrap>
<el-form ref="queryFormRef" :inline="true" :model="queryParams" class="-mb-15px"> <el-form ref="queryFormRef" :inline="true" :model="queryParams" class="-mb-15px">

View File

@ -1,4 +1,7 @@
<template> <template>
<doc-alert title="【交易】交易订单" url="https://doc.iocoder.cn/mall/trade-order/" />
<doc-alert title="【交易】购物车" url="https://doc.iocoder.cn/mall/trade-cart/" />
<!-- 搜索 --> <!-- 搜索 -->
<ContentWrap> <ContentWrap>
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="会员手册(功能开启)" url="https://doc.iocoder.cn/member/build/" />
<ContentWrap> <ContentWrap>
<el-form <el-form
ref="formRef" ref="formRef"

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="会员用户、标签、分组" url="https://doc.iocoder.cn/member/user/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="会员等级、积分、签到" url="https://doc.iocoder.cn/member/level/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="会员等级、积分、签到" url="https://doc.iocoder.cn/member/level/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,6 +1,8 @@
<template> <template>
<doc-alert title="会员等级、积分、签到" url="https://doc.iocoder.cn/member/level/" />
<!-- 搜索工作栏 -->
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 -->
<el-button <el-button
type="primary" type="primary"
plain plain

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="会员等级、积分、签到" url="https://doc.iocoder.cn/member/level/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="会员用户、标签、分组" url="https://doc.iocoder.cn/member/user/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form

View File

@ -1,4 +1,6 @@
<template> <template>
<doc-alert title="会员用户、标签、分组" url="https://doc.iocoder.cn/member/user/" />
<ContentWrap> <ContentWrap>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form <el-form