feat(user): 新增收货地址管理及售后申请页面
- 新增地址类型定义,增强前端地址数据结构 - 新增地址编辑页面,支持地址智能识别和定位选点功能 - 地址编辑支持省市区选择及默认地址设置 - 新增地址列表页面,支持地址展示、删除、编辑和选择功能 - 实现售后申请页面,支持选择售后类型和退款原因 - 售后申请支持商品选择、退款金额计算和凭证上传 - 新增售后详情页面,支持售后状态展示及申请取消 - 优化页面加载和用户交互体验,增加错误提示和权限处理
This commit is contained in:
1
.workbuddy/memory/2026-07-01.md
Normal file
1
.workbuddy/memory/2026-07-01.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
- 修改 `src/pages/user/about/index.tsx`:根据截图将“广西金炜建设工程有限公司”的简介更新为“玉林市玉州区鑫龙家电经营部”相关内容,包括头部品牌、公司简介、核心业务、联系信息及版权。
|
||||||
@@ -1,44 +1,40 @@
|
|||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
import type { ApiResult } from '@/api'
|
||||||
import type { ShopGoodsFavorite, ShopGoodsFavoriteParam } from './model'
|
import type { ShopGoodsFavorite, ShopGoodsFavoriteParam } from './model'
|
||||||
|
|
||||||
/**
|
// 添加收藏(关闭全局错误提示,由调用方自行处理)
|
||||||
* 解包 API 响应
|
|
||||||
* request 工具默认 returnRaw=true,返回完整 {code, message, data} 包装
|
|
||||||
* 此函数提取内层 data 字段,兼容 data 为 null/undefined 的情况
|
|
||||||
*/
|
|
||||||
function unwrap<T>(res: any): T {
|
|
||||||
if (res && typeof res === 'object' && 'data' in res) {
|
|
||||||
return res.data as T
|
|
||||||
}
|
|
||||||
return res as T
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加收藏
|
|
||||||
export async function addShopGoodsFavorite(data: { goodsId: number }) {
|
export async function addShopGoodsFavorite(data: { goodsId: number }) {
|
||||||
const res = await request.post('/shop/goods/favorite/add', data)
|
const res = await request.post<ApiResult<boolean>>('/shop/goods/favorite/add', data, { showError: false })
|
||||||
return unwrap<boolean>(res)
|
if (res.code === 0) {
|
||||||
|
return res.data
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 取消收藏
|
// 取消收藏(关闭全局错误提示,由调用方自行处理)
|
||||||
export async function removeShopGoodsFavorite(data: { goodsId: number }) {
|
export async function removeShopGoodsFavorite(data: { goodsId: number }) {
|
||||||
const res = await request.post('/shop/goods/favorite/remove', data)
|
const res = await request.post<ApiResult<boolean>>('/shop/goods/favorite/remove', data, { showError: false })
|
||||||
return unwrap<boolean>(res)
|
if (res.code === 0) {
|
||||||
|
return res.data
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询收藏状态(返回 boolean:true=已收藏, false=未收藏)
|
// 查询收藏状态
|
||||||
export async function getShopGoodsFavoriteStatus(params: { goodsId: number }) {
|
export async function getShopGoodsFavoriteStatus(params: { goodsId: number }) {
|
||||||
const res = await request.get('/shop/goods/favorite/status', params)
|
const res = await request.get<ApiResult<boolean>>('/shop/goods/favorite/status', params)
|
||||||
return !!unwrap<boolean>(res) // 确保返回纯布尔值
|
if (res.code === 0) {
|
||||||
|
return res.data
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 收藏列表
|
// 收藏列表
|
||||||
export async function listShopGoodsFavorite(params: ShopGoodsFavoriteParam) {
|
export function listShopGoodsFavorite(params: ShopGoodsFavoriteParam) {
|
||||||
const res = await request.get('/shop/goods/favorite/list', params)
|
return request.get<ShopGoodsFavorite[]>('/shop/goods/favorite/list', params)
|
||||||
return unwrap<ShopGoodsFavorite[]>(res) || []
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 收藏列表(分页)
|
// 收藏列表(分页)
|
||||||
export async function pageShopGoodsFavorite(params: ShopGoodsFavoriteParam) {
|
export function pageShopGoodsFavorite(params: ShopGoodsFavoriteParam) {
|
||||||
const res = await request.get('/shop/goods/favorite/page', params)
|
return request.get<{ list: ShopGoodsFavorite[]; total: number }>('/shop/goods/favorite/page', params)
|
||||||
return unwrap<{ list: ShopGoodsFavorite[]; total: number }>(res) || { list: [], total: 0 }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,42 +1,8 @@
|
|||||||
import request from '@/utils/request';
|
import request from '@/utils/request';
|
||||||
import type { ShopUserAddress } from './shopUserAddress/model';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 解析地址列表响应
|
|
||||||
* 兼容多种后端返回格式:
|
|
||||||
* 1. 直接数组 ShopUserAddress[]
|
|
||||||
* 2. 标准包装 { code, message, data: ShopUserAddress[] }
|
|
||||||
* 3. 标准包装 + 分页 { code, message, data: { list: [], count } }
|
|
||||||
* 4. code 为 0 或 200 都视为成功
|
|
||||||
*/
|
|
||||||
function parseAddressList(res: any): ShopUserAddress[] {
|
|
||||||
if (Array.isArray(res)) {
|
|
||||||
return res as ShopUserAddress[];
|
|
||||||
}
|
|
||||||
if (res && typeof res === 'object') {
|
|
||||||
const code = (res as any).code;
|
|
||||||
if (code === 0 || code === 200) {
|
|
||||||
const data = (res as any).data;
|
|
||||||
if (Array.isArray(data)) {
|
|
||||||
return data as ShopUserAddress[];
|
|
||||||
}
|
|
||||||
if (data && Array.isArray(data.list)) {
|
|
||||||
return data.list as ShopUserAddress[];
|
|
||||||
}
|
|
||||||
// code 成功但 data 为空
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 收货地址列表 */
|
/** 收货地址列表 */
|
||||||
export async function listShopUserAddress(params?: any) {
|
export function listShopUserAddress(params?: any) {
|
||||||
const res: any = await request.get('/shop/shop-user-address', params);
|
return request.get('/shop/shop-user-address', params);
|
||||||
// 调试日志:微信开发者工具 console 可见,便于核对返回结构
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.log('[listShopUserAddress] raw response:', JSON.stringify(res)?.substring(0, 500));
|
|
||||||
return parseAddressList(res);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取收货地址详情 */
|
/** 获取收货地址详情 */
|
||||||
@@ -66,7 +32,7 @@ export function removeBatchShopUserAddress(ids: number[]) {
|
|||||||
|
|
||||||
/** 设置默认收货地址 */
|
/** 设置默认收货地址 */
|
||||||
export function setDefaultAddress(id: number) {
|
export function setDefaultAddress(id: number) {
|
||||||
return request.post(`/shop/shop-user-address/set-default/${id}`);
|
return request.put(`/shop/shop-user-address/set-default/${id}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取默认收货地址 */
|
/** 获取默认收货地址 */
|
||||||
|
|||||||
@@ -24,30 +24,10 @@ export async function listShopUserAddress(params?: ShopUserAddressParam) {
|
|||||||
'/shop/shop-user-address',
|
'/shop/shop-user-address',
|
||||||
params
|
params
|
||||||
);
|
);
|
||||||
console.log('[listShopUserAddress] raw response:', JSON.stringify(res)?.substring(0, 300))
|
if (res.code === 0 && res.data) {
|
||||||
// 兼容多种响应格式
|
return res.data;
|
||||||
// 1. 直接返回数组
|
|
||||||
if (Array.isArray(res)) {
|
|
||||||
return res as ShopUserAddress[];
|
|
||||||
}
|
}
|
||||||
// 2. 标准包装 { code, data, message }
|
return Promise.reject(new Error(res.message));
|
||||||
if (res && typeof res === 'object') {
|
|
||||||
// 兼容 code: 0 和 code: 200
|
|
||||||
const isSuccess = res.code === 0 || res.code === 200
|
|
||||||
if (isSuccess) {
|
|
||||||
// data 是数组
|
|
||||||
if (Array.isArray(res.data)) {
|
|
||||||
return res.data;
|
|
||||||
}
|
|
||||||
// data 是分页对象 { list, count }
|
|
||||||
if (res.data && Array.isArray((res.data as any).list)) {
|
|
||||||
return (res.data as any).list as ShopUserAddress[];
|
|
||||||
}
|
|
||||||
// data 为 null/undefined 但 code 成功,返回空数组
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Promise.reject(new Error((res as any)?.message || '获取地址列表失败'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
17
src/api/shop/shopUserAddress/model.ts
Normal file
17
src/api/shop/shopUserAddress/model.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
/** 收货地址 */
|
||||||
|
export interface ShopUserAddress {
|
||||||
|
id?: number;
|
||||||
|
userId?: number;
|
||||||
|
name?: string; // 收货人姓名
|
||||||
|
phone?: string; // 收货人电话
|
||||||
|
province?: string; // 省份
|
||||||
|
city?: string; // 城市
|
||||||
|
district?: string; // 区县
|
||||||
|
region?: string; // 区域(部分接口用 region)
|
||||||
|
detail?: string; // 详细地址
|
||||||
|
lng?: string; // 经度
|
||||||
|
lat?: string; // 纬度
|
||||||
|
isDefault?: number; // 是否默认 0-否 1-是
|
||||||
|
createTime?: string;
|
||||||
|
updateTime?: string;
|
||||||
|
}
|
||||||
@@ -42,7 +42,7 @@ export default {
|
|||||||
'pages/user/wallet',
|
'pages/user/wallet',
|
||||||
'pages/user/recharge',
|
'pages/user/recharge',
|
||||||
'pages/user/recharge-record/index',
|
'pages/user/recharge-record/index',
|
||||||
'pages/user/withdraw/index',
|
// 'pages/user/withdraw/index',
|
||||||
'pages/user/balance-log/index',
|
'pages/user/balance-log/index',
|
||||||
'pages/user/coupon-list',
|
'pages/user/coupon-list',
|
||||||
'pages/user/points-record',
|
'pages/user/points-record',
|
||||||
@@ -56,7 +56,7 @@ export default {
|
|||||||
'pages/user/register-pay/index',
|
'pages/user/register-pay/index',
|
||||||
'pages/user/promotion/index',
|
'pages/user/promotion/index',
|
||||||
'pages/user/commission/index',
|
'pages/user/commission/index',
|
||||||
// 'pages/user/withdraw-list/index',
|
'pages/user/withdraw-list/index',
|
||||||
'pages/user/team/index',
|
'pages/user/team/index',
|
||||||
'pages/user/invite-record/index',
|
'pages/user/invite-record/index',
|
||||||
'pages/user/favorite-list/index',
|
'pages/user/favorite-list/index',
|
||||||
@@ -65,6 +65,8 @@ export default {
|
|||||||
'pages/user/help-detail/index',
|
'pages/user/help-detail/index',
|
||||||
'pages/user/customer-service/index',
|
'pages/user/customer-service/index',
|
||||||
'pages/user/redeem/index',
|
'pages/user/redeem/index',
|
||||||
|
// 关于我们
|
||||||
|
'pages/user/about/index',
|
||||||
// 会员权益包页面
|
// 会员权益包页面
|
||||||
'pages/user/benefit-packages/index',
|
'pages/user/benefit-packages/index',
|
||||||
'pages/user/benefit-exchange-confirm/index',
|
'pages/user/benefit-exchange-confirm/index',
|
||||||
@@ -114,7 +116,7 @@ export default {
|
|||||||
// 分享返利页面
|
// 分享返利页面
|
||||||
'pages/share/index',
|
'pages/share/index',
|
||||||
'pages/rebate/records/index',
|
'pages/rebate/records/index',
|
||||||
// 'pages/rebate/withdraw/index',
|
'pages/rebate/withdraw/index',
|
||||||
// 数据统计页面
|
// 数据统计页面
|
||||||
'pages/statistics/dashboard/index',
|
'pages/statistics/dashboard/index',
|
||||||
'pages/statistics/sales/index',
|
'pages/statistics/sales/index',
|
||||||
|
|||||||
@@ -10,12 +10,11 @@ interface PayModalProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const PAY_TYPES = [
|
const PAY_TYPES = [
|
||||||
{ id: 1, name: '微信支付', desc: '推荐使用', icon: 'pay-wechat' },
|
{ id: 0, name: '货到付款', desc: '送达时支付', icon: 'pay-cod' },
|
||||||
{ id: 0, name: '货到付款', desc: '使用账户余额', icon: 'pay-balance' },
|
|
||||||
]
|
]
|
||||||
|
|
||||||
const PayModal: React.FC<PayModalProps> = ({ visible, amount, onClose, onConfirm }) => {
|
const PayModal: React.FC<PayModalProps> = ({ visible, amount, onClose, onConfirm }) => {
|
||||||
const [selected, setSelected] = useState<number>(1)
|
const [selected, setSelected] = useState<number>(0)
|
||||||
const [showOverlay, setShowOverlay] = useState(false)
|
const [showOverlay, setShowOverlay] = useState(false)
|
||||||
const [slideUp, setSlideUp] = useState(false)
|
const [slideUp, setSlideUp] = useState(false)
|
||||||
|
|
||||||
@@ -60,7 +59,7 @@ const PayModal: React.FC<PayModalProps> = ({ visible, amount, onClose, onConfirm
|
|||||||
<View className='p-4'>
|
<View className='p-4'>
|
||||||
{/* 关闭按钮 */}
|
{/* 关闭按钮 */}
|
||||||
<View className='flex justify-end mb-2'>
|
<View className='flex justify-end mb-2'>
|
||||||
<View
|
<View
|
||||||
className='w-6 h-6 rounded-full bg-gray-100 flex items-center justify-center'
|
className='w-6 h-6 rounded-full bg-gray-100 flex items-center justify-center'
|
||||||
onClick={handleClose}
|
onClick={handleClose}
|
||||||
>
|
>
|
||||||
@@ -86,7 +85,7 @@ const PayModal: React.FC<PayModalProps> = ({ visible, amount, onClose, onConfirm
|
|||||||
<View className='flex items-center gap-3'>
|
<View className='flex items-center gap-3'>
|
||||||
<View className='w-8 h-8 rounded-full bg-green-50 flex items-center justify-center'>
|
<View className='w-8 h-8 rounded-full bg-green-50 flex items-center justify-center'>
|
||||||
<Text className='text-sm'>
|
<Text className='text-sm'>
|
||||||
{item.id === 1 ? '微' : '余'}
|
{item.id === 0 ? '货' : (item.id === 1 ? '微' : '余')}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
<View>
|
<View>
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ const SkuSelector: React.FC<SkuSelectorProps> = ({
|
|||||||
const fakeSku: ShopGoodsSku = {
|
const fakeSku: ShopGoodsSku = {
|
||||||
id: 0,
|
id: 0,
|
||||||
goodsId: product.goodsId!,
|
goodsId: product.goodsId!,
|
||||||
price: product.price || product.salePrice,
|
price: product.salePrice || product.price,
|
||||||
salePrice: product.salePrice || product.price,
|
salePrice: product.salePrice || product.price,
|
||||||
stock: product.stock,
|
stock: product.stock,
|
||||||
image: product.image,
|
image: product.image,
|
||||||
@@ -187,11 +187,7 @@ const SkuSelector: React.FC<SkuSelectorProps> = ({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 价格优先级:SKU售价 > SKU原价 > 商品售价 > 商品原价 > 0
|
const currentPrice = selectedSku?.salePrice || selectedSku?.price || product?.salePrice || product?.price || '0'
|
||||||
// 注意:ShopGoods 模型中 price=商品价格(低), salePrice=销售/市场价(高)
|
|
||||||
// ShopGoodsSku 模型中 price=商品价格, salePrice=市场价格(高)
|
|
||||||
// 统一以 price 为准,salePrice 仅作兜底展示
|
|
||||||
const currentPrice = selectedSku?.price || selectedSku?.salePrice || product?.price || product?.salePrice || '0'
|
|
||||||
const currentStock = selectedSku?.stock ?? product?.stock ?? 0
|
const currentStock = selectedSku?.stock ?? product?.stock ?? 0
|
||||||
const currentImage = selectedSku?.image || product?.image || (product?.files?.split(',')[0]) || ''
|
const currentImage = selectedSku?.image || product?.image || (product?.files?.split(',')[0]) || ''
|
||||||
|
|
||||||
|
|||||||
@@ -29,14 +29,10 @@ export function useAddress(): UseAddressReturn {
|
|||||||
setLoading(true)
|
setLoading(true)
|
||||||
try {
|
try {
|
||||||
const list = await listShopUserAddress()
|
const list = await listShopUserAddress()
|
||||||
// 调试日志:可看到解析后的地址数量与首项
|
const actualList = Array.isArray(list) ? list : (list as any)?.data || []
|
||||||
// eslint-disable-next-line no-console
|
setAddresses(actualList)
|
||||||
console.log('[useAddress] loaded addresses:', Array.isArray(list) ? list.length : 0,
|
} catch (error) {
|
||||||
list && (list as any[]).length > 0 ? JSON.stringify(list[0])?.substring(0, 200) : '(empty)')
|
console.error('Load addresses error:', error)
|
||||||
setAddresses(Array.isArray(list) ? list : [])
|
|
||||||
} catch (error: any) {
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.error('[useAddress] Load addresses error:', error?.message || error)
|
|
||||||
setAddresses([])
|
setAddresses([])
|
||||||
} finally {
|
} finally {
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ const helpData: HelpCategory[] = [
|
|||||||
title: '支付与退款',
|
title: '支付与退款',
|
||||||
icon: '💰',
|
icon: '💰',
|
||||||
questions: [
|
questions: [
|
||||||
{ id: 201, title: '支持哪些支付方式?', content: '我们支持微信支付、支付宝支付(如有)、货到付款、积分抵扣等多种支付方式。' },
|
{ id: 201, title: '支持哪些支付方式?', content: '我们支持微信支付、支付宝支付(如有)、余额支付、积分抵扣等多种支付方式。' },
|
||||||
{ id: 202, title: '如何申请退款?', content: '在订单详情页点击"申请退款"按钮,填写退款原因和说明,提交后等待商家审核。' },
|
{ id: 202, title: '如何申请退款?', content: '在订单详情页点击"申请退款"按钮,填写退款原因和说明,提交后等待商家审核。' },
|
||||||
{ id: 203, title: '退款多久到账?', content: '退款审核通过后,原路退回您的支付账户。微信支付一般1-3个工作日到账,余额支付即时到账。' },
|
{ id: 203, title: '退款多久到账?', content: '退款审核通过后,原路退回您的支付账户。微信支付一般1-3个工作日到账,余额支付即时到账。' },
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -29,10 +29,10 @@ const IndexPage: React.FC = () => {
|
|||||||
// 功能入口(8个)
|
// 功能入口(8个)
|
||||||
const featureEntries = [
|
const featureEntries = [
|
||||||
{ icon: '🎁', label: '全部商品', url: '/pages/shop/index' },
|
{ icon: '🎁', label: '全部商品', url: '/pages/shop/index' },
|
||||||
{ icon: '🎯', label: '限时秒杀', url: '/pages/shop/seckill-list/index' },
|
{ icon: '🤝', label: '收货地址', url: '/pages/user/address-list' },
|
||||||
{ icon: '🎫', label: '领券中心', url: '/pages/index/coupon-center/index' },
|
{ icon: '🎫', label: '领券中心', url: '/pages/index/coupon-center/index' },
|
||||||
{ icon: '⭐', label: '我的收藏', url: '/pages/user/favorite-list/index' },
|
{ icon: '⭐', label: '我的收藏', url: '/pages/user/favorite-list/index' },
|
||||||
{ icon: '👑', label: '会员中心', url: '/pages/user/member/index' },
|
{ icon: '👑', label: '关于我们', url: '/pages/user/about/index' },
|
||||||
{ icon: '💰', label: '积分商城', url: '/pages/points/index' },
|
{ icon: '💰', label: '积分商城', url: '/pages/points/index' },
|
||||||
{ icon: '🏪', label: '门店信息', url: '/pages/store/list/index' },
|
{ icon: '🏪', label: '门店信息', url: '/pages/store/list/index' },
|
||||||
{ icon: '❓', label: '帮助中心', url: '/pages/user/help-center/index' },
|
{ icon: '❓', label: '帮助中心', url: '/pages/user/help-center/index' },
|
||||||
@@ -86,7 +86,7 @@ const IndexPage: React.FC = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// tabBar 页面列表
|
// tabBar 页面列表
|
||||||
const tabBarPages = ['/pages/index/index', '/pages/shop/index', '/pages/user/user']
|
const tabBarPages = ['/pages/index/index', '/pages/shop/index', '/pages/order/list', '/pages/user/user']
|
||||||
|
|
||||||
const handleFeatureClick = (url: string) => {
|
const handleFeatureClick = (url: string) => {
|
||||||
if (tabBarPages.includes(url)) {
|
if (tabBarPages.includes(url)) {
|
||||||
@@ -231,7 +231,7 @@ const IndexPage: React.FC = () => {
|
|||||||
<Image
|
<Image
|
||||||
style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }}
|
style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }}
|
||||||
src={item.image}
|
src={item.image}
|
||||||
mode='aspectFit'
|
mode='aspectFill'
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<View style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} className='bg-gray-100 flex items-center justify-center'>
|
<View style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }} className='bg-gray-100 flex items-center justify-center'>
|
||||||
@@ -239,20 +239,20 @@ const IndexPage: React.FC = () => {
|
|||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
</View>
|
</View>
|
||||||
<View className='p-2'>
|
<View className='p-2'>
|
||||||
<Text className='text-sm text-gray-700 truncate block'>{item.goodsName || item.name}</Text>
|
<Text className='text-sm text-gray-700 truncate block'>{item.goodsName || item.name}</Text>
|
||||||
<View className='flex items-center mt-1'>
|
<View className='flex items-center mt-1'>
|
||||||
<Price
|
<Price
|
||||||
price={item.price || '0'}
|
price={item.price || '0'}
|
||||||
original={item.salePrice && item.salePrice !== item.price ? item.salePrice : undefined}
|
original={item.salePrice && item.salePrice !== item.price ? item.salePrice : undefined}
|
||||||
size='small'
|
size='small'
|
||||||
loginMask
|
loginMask
|
||||||
/>
|
/>
|
||||||
|
</View>
|
||||||
|
{item.sales !== undefined && item.sales > 0 && (
|
||||||
|
<Text className='text-xs text-gray-400 mt-1'>已售 {item.sales}</Text>
|
||||||
|
)}
|
||||||
</View>
|
</View>
|
||||||
{item.sales !== undefined && item.sales > 0 && (
|
|
||||||
<Text className='text-xs text-gray-400 mt-1'>已售 {item.sales}</Text>
|
|
||||||
)}
|
|
||||||
</View>
|
|
||||||
</View>
|
</View>
|
||||||
))
|
))
|
||||||
) : (
|
) : (
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ const SearchPage: React.FC = () => {
|
|||||||
if (!q.trim()) return
|
if (!q.trim()) return
|
||||||
setLoading(true)
|
setLoading(true)
|
||||||
try {
|
try {
|
||||||
const params: ShopGoodsParam = { keywords: q, status: 0, page: 1, limit: 20 }
|
const params: ShopGoodsParam = { keywords: q, isShow: 1, page: 1, limit: 20 }
|
||||||
const res = await pageShopGoods(params)
|
const res = await pageShopGoods(params)
|
||||||
setList(res?.list || [])
|
setList(res?.list || [])
|
||||||
// 保存搜索历史
|
// 保存搜索历史
|
||||||
|
|||||||
@@ -112,12 +112,12 @@ const StoreListPage: React.FC = () => {
|
|||||||
>
|
>
|
||||||
<Text className='text-xs text-green-500'>📍 导航到店</Text>
|
<Text className='text-xs text-green-500'>📍 导航到店</Text>
|
||||||
</View>
|
</View>
|
||||||
{/*<View*/}
|
<View
|
||||||
{/* className='flex-1 py-2 bg-orange-50 rounded-lg text-center'*/}
|
className='flex-1 py-2 bg-orange-50 rounded-lg text-center'
|
||||||
{/* onClick={() => handleBooking(store.id!)}*/}
|
onClick={() => handleBooking(store.id!)}
|
||||||
{/*>*/}
|
>
|
||||||
{/* <Text className='text-xs text-orange-500'>📅 立即预约</Text>*/}
|
<Text className='text-xs text-orange-500'>📅 立即预约</Text>
|
||||||
{/*</View>*/}
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
))}
|
))}
|
||||||
|
|||||||
@@ -30,7 +30,12 @@ interface TabState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const OrderListPage: React.FC = () => {
|
const OrderListPage: React.FC = () => {
|
||||||
const { tab: initTab } = Taro.getCurrentInstance().router?.params || {}
|
const initTab = Taro.getCurrentInstance().router?.params?.tab
|
||||||
|
?? Taro.getStorageSync('order_tab')
|
||||||
|
// 读取后清除,避免影响下次进入
|
||||||
|
if (Taro.getStorageSync('order_tab') !== '') {
|
||||||
|
Taro.removeStorageSync('order_tab')
|
||||||
|
}
|
||||||
const [tabIndex, setTabIndex] = useState(Number(initTab) || 0)
|
const [tabIndex, setTabIndex] = useState(Number(initTab) || 0)
|
||||||
|
|
||||||
// 每个 tab 独立维护状态
|
// 每个 tab 独立维护状态
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
export default {
|
export default {
|
||||||
navigationBarTitleText: '分享好友',
|
navigationBarTitleText: '分销推广',
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,26 +91,14 @@ const SeckillDetailPage: React.FC = () => {
|
|||||||
setCountdown(`${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`)
|
setCountdown(`${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleBuyClick = () => {
|
const handleBuyNow = () => {
|
||||||
if (!seckill) return
|
if (!seckill) return
|
||||||
|
|
||||||
if (seckill.status === 0) {
|
|
||||||
Taro.showToast({ title: '活动尚未开始,请耐心等待', icon: 'none' })
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (seckill.status === 2 || new Date(seckill.endTime).getTime() <= Date.now()) {
|
|
||||||
Taro.showToast({ title: '活动已结束,下次再来', icon: 'none' })
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (seckill.stock <= 0) {
|
if (seckill.stock <= 0) {
|
||||||
Taro.showToast({ title: '已抢光,下次再来', icon: 'none' })
|
Taro.showToast({ title: '已抢光', icon: 'none' })
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (submitting) return
|
|
||||||
|
|
||||||
// 先拉取商品规格(如果没有的话)
|
// 先拉取商品规格(如果没有的话)
|
||||||
if (!product && seckill.goodsId) {
|
if (!product && seckill.goodsId) {
|
||||||
Taro.showLoading({ title: '加载规格...' })
|
Taro.showLoading({ title: '加载规格...' })
|
||||||
@@ -267,11 +255,8 @@ const SeckillDetailPage: React.FC = () => {
|
|||||||
<View className="bg-white border-t border-gray-100 px-4 py-3">
|
<View className="bg-white border-t border-gray-100 px-4 py-3">
|
||||||
<View
|
<View
|
||||||
className="w-full py-3 rounded-full text-white text-center text-base font-medium"
|
className="w-full py-3 rounded-full text-white text-center text-base font-medium"
|
||||||
style={{
|
style={{ backgroundColor: isActive ? '#ef4444' : '#d1d5db' }}
|
||||||
backgroundColor: isActive && !submitting ? '#ef4444' : '#d1d5db',
|
onClick={isActive && !submitting ? handleBuyNow : undefined}
|
||||||
opacity: submitting ? 0.7 : 1,
|
|
||||||
}}
|
|
||||||
onClick={handleBuyClick}
|
|
||||||
>
|
>
|
||||||
<Text>
|
<Text>
|
||||||
{submitting ? '抢购中...' : isActive ? (seckill.stock > 0 ? '立即抢购' : '已抢光') : seckill.status === 0 ? '即将开始' : '已结束'}
|
{submitting ? '抢购中...' : isActive ? (seckill.stock > 0 ? '立即抢购' : '已抢光') : seckill.status === 0 ? '即将开始' : '已结束'}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { useScrollHeight } from '@/hooks/useScrollHeight'
|
|||||||
import { getMyAvailableCoupons } from '@/api/shop/shopUserCoupon'
|
import { getMyAvailableCoupons } from '@/api/shop/shopUserCoupon'
|
||||||
import AddressCard from '@/components/business/AddressCard'
|
import AddressCard from '@/components/business/AddressCard'
|
||||||
import CouponCard from '@/components/business/CouponCard'
|
import CouponCard from '@/components/business/CouponCard'
|
||||||
import { createOrder, type WxPayResult } from '@/api/shop/shopOrder'
|
import { createOrder } from '@/api/shop/shopOrder'
|
||||||
import type { ShopOrder } from '@/api/shop/shopOrder/model'
|
import type { ShopOrder } from '@/api/shop/shopOrder/model'
|
||||||
import { listShopGoods } from '@/api/shop/shopGoods'
|
import { listShopGoods } from '@/api/shop/shopGoods'
|
||||||
import type { ShopGoods } from '@/api/shop/shopGoods/model'
|
import type { ShopGoods } from '@/api/shop/shopGoods/model'
|
||||||
@@ -124,8 +124,7 @@ const CheckoutPage: React.FC = () => {
|
|||||||
const [rushBuyProducts, setRushBuyProducts] = useState<ShopGoods[]>([])
|
const [rushBuyProducts, setRushBuyProducts] = useState<ShopGoods[]>([])
|
||||||
|
|
||||||
// 支付方式相关状态
|
// 支付方式相关状态
|
||||||
// payType: 1=微信支付, 0=货到付款(默认)
|
const [payType, setPayType] = useState<number>(0) // 0: 货到付款
|
||||||
const [payType, setPayType] = useState<number>(0)
|
|
||||||
|
|
||||||
// 从本地存储获取立即购买的数据
|
// 从本地存储获取立即购买的数据
|
||||||
const buyNowItems = useMemo(() => {
|
const buyNowItems = useMemo(() => {
|
||||||
@@ -217,7 +216,7 @@ const CheckoutPage: React.FC = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 加载凑单推荐商品
|
// 选择地址
|
||||||
const handleSelectAddress = () => {
|
const handleSelectAddress = () => {
|
||||||
Taro.navigateTo({
|
Taro.navigateTo({
|
||||||
url: '/pages/user/address-list?from=checkout',
|
url: '/pages/user/address-list?from=checkout',
|
||||||
@@ -271,21 +270,18 @@ const CheckoutPage: React.FC = () => {
|
|||||||
|
|
||||||
const res = await createOrder(orderParams)
|
const res = await createOrder(orderParams)
|
||||||
|
|
||||||
// 清理购物车数据(无论哪种支付方式都需清理)
|
// 货到付款 - 只需创建订单,无需调用支付接口
|
||||||
|
console.log('订单创建成功', res)
|
||||||
|
|
||||||
|
// 清理数据
|
||||||
if (fromBuyNow) {
|
if (fromBuyNow) {
|
||||||
Taro.removeStorageSync('buy_now')
|
Taro.removeStorageSync('buy_now')
|
||||||
} else {
|
} else {
|
||||||
await removeSelected()
|
await removeSelected()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据支付方式处理
|
// 显示成功提示
|
||||||
if (payType === 1) {
|
Taro.showToast({ title: '订单已提交', icon: 'success' })
|
||||||
// 微信支付 - res 是 WxPayResult
|
|
||||||
await handleWxPay(res as WxPayResult)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 货到付款(payType=0)无需在线支付,直接下单成功
|
|
||||||
Taro.showToast({ title: payType === 0 ? '下单成功' : '支付成功', icon: 'success' })
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
Taro.switchTab({ url: '/pages/order/list' })
|
Taro.switchTab({ url: '/pages/order/list' })
|
||||||
}, 1500)
|
}, 1500)
|
||||||
@@ -296,25 +292,6 @@ const CheckoutPage: React.FC = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 微信支付
|
|
||||||
const handleWxPay = async (payData: WxPayResult & { paid?: string }) => {
|
|
||||||
// 后端返回已支付(回调丢失自动修复场景)
|
|
||||||
if (payData.paid === 'true') {
|
|
||||||
return // 直接视为支付成功
|
|
||||||
}
|
|
||||||
return new Promise<void>((resolve, reject) => {
|
|
||||||
Taro.requestPayment({
|
|
||||||
timeStamp: payData.timeStamp,
|
|
||||||
nonceStr: payData.nonceStr,
|
|
||||||
package: payData.package,
|
|
||||||
signType: payData.signType,
|
|
||||||
paySign: payData.paySign,
|
|
||||||
success: () => resolve(),
|
|
||||||
fail: (err) => reject(new Error('支付取消'))
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 安全的数字格式化
|
// 安全的数字格式化
|
||||||
const formatPrice = (price: number | string): string => {
|
const formatPrice = (price: number | string): string => {
|
||||||
const num = typeof price === 'string' ? parseFloat(price) : price
|
const num = typeof price === 'string' ? parseFloat(price) : price
|
||||||
@@ -462,49 +439,23 @@ const CheckoutPage: React.FC = () => {
|
|||||||
<View className='bg-white rounded-lg mt-3 p-3'>
|
<View className='bg-white rounded-lg mt-3 p-3'>
|
||||||
<Text className='text-sm font-medium text-gray-800 mb-3 block'>支付方式</Text>
|
<Text className='text-sm font-medium text-gray-800 mb-3 block'>支付方式</Text>
|
||||||
|
|
||||||
{/* 微信支付 */}
|
|
||||||
{/*<View*/}
|
|
||||||
{/* className='flex items-center py-3 px-2 rounded-lg mb-2'*/}
|
|
||||||
{/* style={{ backgroundColor: payType === 1 ? '#f0fdf4' : '#f9fafb' }}*/}
|
|
||||||
{/* onClick={() => setPayType(1)}*/}
|
|
||||||
{/*>*/}
|
|
||||||
{/* <View className='w-8 h-8 rounded-full bg-green-50 flex items-center justify-center mr-3'>*/}
|
|
||||||
{/* <Text className='text-sm'>微</Text>*/}
|
|
||||||
{/* </View>*/}
|
|
||||||
{/* <View className='flex-1'>*/}
|
|
||||||
{/* <Text className='text-sm text-gray-800 block'>微信支付</Text>*/}
|
|
||||||
{/* <Text className='text-xs text-gray-400 block'>推荐使用</Text>*/}
|
|
||||||
{/* </View>*/}
|
|
||||||
{/* <View*/}
|
|
||||||
{/* className='w-5 h-5 rounded-full border-2 flex items-center justify-center'*/}
|
|
||||||
{/* style={{ borderColor: payType === 1 ? '#22c55e' : '#d1d5db' }}*/}
|
|
||||||
{/* >*/}
|
|
||||||
{/* {payType === 1 && (*/}
|
|
||||||
{/* <View className='w-2 h-2 rounded-full' style={{ backgroundColor: '#22c55e' }} />*/}
|
|
||||||
{/* )}*/}
|
|
||||||
{/* </View>*/}
|
|
||||||
{/*</View>*/}
|
|
||||||
|
|
||||||
{/* 货到付款 */}
|
{/* 货到付款 */}
|
||||||
<View
|
<View
|
||||||
className='flex items-center py-3 px-2 rounded-lg'
|
className='flex items-center py-3 px-2 rounded-lg'
|
||||||
style={{ backgroundColor: payType === 0 ? '#f0fdf4' : '#f9fafb' }}
|
style={{ backgroundColor: '#f0fdf4' }}
|
||||||
onClick={() => setPayType(0)}
|
|
||||||
>
|
>
|
||||||
<View className='w-8 h-8 rounded-full bg-blue-50 flex items-center justify-center mr-3'>
|
<View className='w-8 h-8 rounded-full bg-blue-50 flex items-center justify-center mr-3'>
|
||||||
<Text className='text-sm'>货</Text>
|
<Text className='text-sm'>货</Text>
|
||||||
</View>
|
</View>
|
||||||
<View className='flex-1'>
|
<View className='flex-1'>
|
||||||
<Text className='text-sm text-gray-800 block'>货到付款</Text>
|
<Text className='text-sm text-gray-800 block'>货到付款</Text>
|
||||||
<Text className='text-xs text-gray-400 block'>商品送达后付款</Text>
|
<Text className='text-xs text-gray-400 block'>送达时支付</Text>
|
||||||
</View>
|
</View>
|
||||||
<View
|
<View
|
||||||
className='w-5 h-5 rounded-full border-2 flex items-center justify-center'
|
className='w-5 h-5 rounded-full border-2 flex items-center justify-center'
|
||||||
style={{ borderColor: payType === 0 ? '#22c55e' : '#d1d5db' }}
|
style={{ borderColor: '#22c55e' }}
|
||||||
>
|
>
|
||||||
{payType === 0 && (
|
<View className='w-2 h-2 rounded-full' style={{ backgroundColor: '#22c55e' }} />
|
||||||
<View className='w-2 h-2 rounded-full' style={{ backgroundColor: '#22c55e' }} />
|
|
||||||
)}
|
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import type { ShopGroupBuy, ShopGroupBuyRecord } from '@/api/shop/shopGroupBuy/m
|
|||||||
import type { ShopGoods } from '@/api/shop/shopGoods/model'
|
import type { ShopGoods } from '@/api/shop/shopGoods/model'
|
||||||
import type { ShopGoodsSku } from '@/api/shop/shopGoodsSku/model'
|
import type { ShopGoodsSku } from '@/api/shop/shopGoodsSku/model'
|
||||||
import SkuSelector from '@/components/business/SkuSelector'
|
import SkuSelector from '@/components/business/SkuSelector'
|
||||||
import Price from '@/components/common/Price'
|
|
||||||
|
|
||||||
definePageConfig({
|
definePageConfig({
|
||||||
navigationBarTitleText: '拼团详情',
|
navigationBarTitleText: '拼团详情',
|
||||||
@@ -193,12 +192,12 @@ const GroupBuyDetailPage: React.FC = () => {
|
|||||||
{groupBuy.goodsName || groupBuy.product?.name}
|
{groupBuy.goodsName || groupBuy.product?.name}
|
||||||
</Text>
|
</Text>
|
||||||
<View className="flex items-baseline gap-2">
|
<View className="flex items-baseline gap-2">
|
||||||
<Price
|
<Text className="text-2xl font-bold text-red-500">
|
||||||
price={groupBuy.groupPrice}
|
¥{groupBuy.groupPrice}
|
||||||
original={groupBuy.product?.price || 0}
|
</Text>
|
||||||
size='large'
|
<Text className="text-xs text-gray-400 line-through">
|
||||||
loginMask
|
¥{groupBuy.product?.price || 0}
|
||||||
/>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
<View className="flex items-center gap-2 mt-1">
|
<View className="flex items-center gap-2 mt-1">
|
||||||
{isActive && remaining > 0 && (
|
{isActive && remaining > 0 && (
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import Taro from '@tarojs/taro'
|
|||||||
import { pageShopGroupBuy } from '@/api/shop/shopGroupBuy'
|
import { pageShopGroupBuy } from '@/api/shop/shopGroupBuy'
|
||||||
import type { ShopGroupBuy } from '@/api/shop/shopGroupBuy/model'
|
import type { ShopGroupBuy } from '@/api/shop/shopGroupBuy/model'
|
||||||
import EmptyState from '@/components/common/EmptyState'
|
import EmptyState from '@/components/common/EmptyState'
|
||||||
import Price from '@/components/common/Price'
|
|
||||||
|
|
||||||
definePageConfig({
|
definePageConfig({
|
||||||
navigationBarTitleText: '拼团活动',
|
navigationBarTitleText: '拼团活动',
|
||||||
@@ -92,12 +91,12 @@ const GroupBuyListPage: React.FC = () => {
|
|||||||
|
|
||||||
<View className='flex items-center justify-between mt-1'>
|
<View className='flex items-center justify-between mt-1'>
|
||||||
<View className='flex items-baseline gap-1'>
|
<View className='flex items-baseline gap-1'>
|
||||||
<Price
|
<Text className='text-lg font-bold text-red-500'>
|
||||||
price={item.groupPrice}
|
{'\u00A5'}{item.groupPrice}
|
||||||
original={item.product?.price || 0}
|
</Text>
|
||||||
size='small'
|
<Text className='text-xs text-gray-400 line-through'>
|
||||||
loginMask
|
{'\u00A5'}{item.product?.price || 0}
|
||||||
/>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
<View
|
<View
|
||||||
className='px-3 py-1 rounded-full text-white text-xs'
|
className='px-3 py-1 rounded-full text-white text-xs'
|
||||||
|
|||||||
@@ -85,15 +85,8 @@ const ProductDetailPage: React.FC = () => {
|
|||||||
setIsFavorite(true)
|
setIsFavorite(true)
|
||||||
Taro.showToast({ title: '收藏成功', icon: 'success' })
|
Taro.showToast({ title: '收藏成功', icon: 'success' })
|
||||||
}
|
}
|
||||||
} catch (err: any) {
|
} catch (e: any) {
|
||||||
// 接口报错时仍更新UI状态,避免状态不一致
|
Taro.showToast({ title: e?.message || '操作失败', icon: 'none' })
|
||||||
console.error('[ProductDetail] 收藏操作失败:', err?.message || err)
|
|
||||||
if (isFavorite) {
|
|
||||||
setIsFavorite(false)
|
|
||||||
} else {
|
|
||||||
setIsFavorite(true)
|
|
||||||
}
|
|
||||||
// 不再额外弹toast(handleError已经弹了后端返回的错误信息)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,12 +158,10 @@ const ProductDetailPage: React.FC = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const handleGoCart = () => {
|
const handleGoCart = () => {
|
||||||
// 购物车不是 tabBar 页面,使用 navigateTo;路径与 app.config.ts 中注册的 'pages/shop/cart' 对应
|
|
||||||
Taro.navigateTo({ url: '/pages/shop/cart' })
|
Taro.navigateTo({ url: '/pages/shop/cart' })
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleContactService = () => {
|
const handleContactService = () => {
|
||||||
// 直接跳转到在线客服页面(已实现完整功能:微信客服按钮 + 历史消息 + 热线 + 微信留言)
|
|
||||||
Taro.navigateTo({ url: '/pages/user/customer-service/index' })
|
Taro.navigateTo({ url: '/pages/user/customer-service/index' })
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,7 +205,6 @@ const ProductDetailPage: React.FC = () => {
|
|||||||
'<img src="$2" mode="widthFix" style="max-width:100%;display:block;" />'
|
'<img src="$2" mode="widthFix" style="max-width:100%;display:block;" />'
|
||||||
)
|
)
|
||||||
// 兜底:如果内容里直接包含 http(s) 图片链接(非 img 标签包裹的),也尝试转成图片
|
// 兜底:如果内容里直接包含 http(s) 图片链接(非 img 标签包裹的),也尝试转成图片
|
||||||
// 匹配独立的 https://xxx.jpg/png/gif 链接
|
|
||||||
if (html.includes('http') && !html.includes('<img')) {
|
if (html.includes('http') && !html.includes('<img')) {
|
||||||
html = html.replace(
|
html = html.replace(
|
||||||
/(https?:\/\/[^\s\)]+\.(jpg|jpeg|png|gif|webp)(\?[^\s\)]*)?)/gi,
|
/(https?:\/\/[^\s\)]+\.(jpg|jpeg|png|gif|webp)(\?[^\s\)]*)?)/gi,
|
||||||
@@ -229,44 +219,44 @@ const ProductDetailPage: React.FC = () => {
|
|||||||
<ScrollView scrollY style={{ height: scrollHeight }}>
|
<ScrollView scrollY style={{ height: scrollHeight }}>
|
||||||
|
|
||||||
{/* 图片轮播 */}
|
{/* 图片轮播 */}
|
||||||
<Swiper
|
<Swiper
|
||||||
className='w-full'
|
className='w-full'
|
||||||
style={{ height: `${swiperHeight}px` }}
|
style={{ height: `${swiperHeight}px` }}
|
||||||
indicatorDots
|
indicatorDots
|
||||||
indicatorColor='#e5e7eb'
|
indicatorColor='#e5e7eb'
|
||||||
indicatorActiveColor='#0e932e'
|
indicatorActiveColor='#0e932e'
|
||||||
autoplay
|
autoplay
|
||||||
circular
|
circular
|
||||||
>
|
>
|
||||||
{images.map((img, idx) => (
|
{images.map((img, idx) => (
|
||||||
<SwiperItem key={idx}>
|
<SwiperItem key={idx}>
|
||||||
<Image
|
<Image
|
||||||
className='w-full'
|
className='w-full'
|
||||||
style={{ display: 'block' }}
|
style={{ display: 'block' }}
|
||||||
src={img}
|
src={img}
|
||||||
mode='widthFix'
|
mode='widthFix'
|
||||||
onLoad={(e: any) => {
|
onLoad={(e: any) => {
|
||||||
// 根据第一张图片的实际宽高比动态设置 Swiper 高度
|
// 根据第一张图片的实际宽高比动态设置 Swiper 高度
|
||||||
if (idx === 0) {
|
if (idx === 0) {
|
||||||
const { width, height } = e.detail
|
const { width, height } = e.detail
|
||||||
if (width > 0) {
|
if (width > 0) {
|
||||||
const screenWidth = Taro.getSystemInfoSync().windowWidth
|
const screenWidth = Taro.getSystemInfoSync().windowWidth
|
||||||
setSwiperHeight(Math.round((height / width) * screenWidth))
|
setSwiperHeight(Math.round((height / width) * screenWidth))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
onClick={() => Taro.previewImage({ current: img, urls: images })}
|
onClick={() => Taro.previewImage({ current: img, urls: images })}
|
||||||
/>
|
/>
|
||||||
</SwiperItem>
|
</SwiperItem>
|
||||||
))}
|
))}
|
||||||
{images.length === 0 && (
|
{images.length === 0 && (
|
||||||
<SwiperItem>
|
<SwiperItem>
|
||||||
<View className='w-full h-full bg-gray-100 flex items-center justify-center'>
|
<View className='w-full h-full bg-gray-100 flex items-center justify-center'>
|
||||||
<Text className='text-gray-300 text-sm'>暂无图片</Text>
|
<Text className='text-gray-300 text-sm'>暂无图片</Text>
|
||||||
</View>
|
</View>
|
||||||
</SwiperItem>
|
</SwiperItem>
|
||||||
)}
|
)}
|
||||||
</Swiper>
|
</Swiper>
|
||||||
|
|
||||||
{/* 价格区域 */}
|
{/* 价格区域 */}
|
||||||
<View className='bg-white p-4'>
|
<View className='bg-white p-4'>
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import type { ShopSeckill } from '@/api/shop/shopSeckill/model'
|
|||||||
import type { ShopGoods } from '@/api/shop/shopGoods/model'
|
import type { ShopGoods } from '@/api/shop/shopGoods/model'
|
||||||
import type { ShopGoodsSku } from '@/api/shop/shopGoodsSku/model'
|
import type { ShopGoodsSku } from '@/api/shop/shopGoodsSku/model'
|
||||||
import SkuSelector from '@/components/business/SkuSelector'
|
import SkuSelector from '@/components/business/SkuSelector'
|
||||||
import Price from '@/components/common/Price'
|
|
||||||
|
|
||||||
definePageConfig({
|
definePageConfig({
|
||||||
navigationBarTitleText: '秒杀详情',
|
navigationBarTitleText: '秒杀详情',
|
||||||
@@ -92,26 +91,14 @@ const SeckillDetailPage: React.FC = () => {
|
|||||||
setCountdown(`${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`)
|
setCountdown(`${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleBuyClick = () => {
|
const handleBuyNow = () => {
|
||||||
if (!seckill) return
|
if (!seckill) return
|
||||||
|
|
||||||
if (seckill.status === 0) {
|
|
||||||
Taro.showToast({ title: '活动尚未开始,请耐心等待', icon: 'none' })
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (seckill.status === 2 || new Date(seckill.endTime).getTime() <= Date.now()) {
|
|
||||||
Taro.showToast({ title: '活动已结束,下次再来', icon: 'none' })
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (seckill.stock <= 0) {
|
if (seckill.stock <= 0) {
|
||||||
Taro.showToast({ title: '已抢光,下次再来', icon: 'none' })
|
Taro.showToast({ title: '已抢光', icon: 'none' })
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (submitting) return
|
|
||||||
|
|
||||||
// 先拉取商品规格(如果没有的话)
|
// 先拉取商品规格(如果没有的话)
|
||||||
if (!product && seckill.goodsId) {
|
if (!product && seckill.goodsId) {
|
||||||
Taro.showLoading({ title: '加载规格...' })
|
Taro.showLoading({ title: '加载规格...' })
|
||||||
@@ -200,13 +187,12 @@ const SeckillDetailPage: React.FC = () => {
|
|||||||
{/* 价格和倒计时 */}
|
{/* 价格和倒计时 */}
|
||||||
<View className="px-4 py-4" style={{ background: 'linear-gradient(135deg, #ef4444 0%, #dc2626 100%)' }}>
|
<View className="px-4 py-4" style={{ background: 'linear-gradient(135deg, #ef4444 0%, #dc2626 100%)' }}>
|
||||||
<View className="flex items-baseline gap-2">
|
<View className="flex items-baseline gap-2">
|
||||||
<Price
|
<Text className="text-3xl font-bold text-white">
|
||||||
price={seckill.seckillPrice}
|
¥{seckill.seckillPrice}
|
||||||
original={seckill.product?.price || 0}
|
</Text>
|
||||||
size='large'
|
<Text className="text-sm text-red-200 line-through">
|
||||||
color='#ffffff'
|
¥{seckill.product?.price || 0}
|
||||||
loginMask
|
</Text>
|
||||||
/>
|
|
||||||
</View>
|
</View>
|
||||||
<View className="flex items-center justify-between mt-3">
|
<View className="flex items-center justify-between mt-3">
|
||||||
<View className="bg-white rounded px-2 py-1">
|
<View className="bg-white rounded px-2 py-1">
|
||||||
@@ -269,11 +255,8 @@ const SeckillDetailPage: React.FC = () => {
|
|||||||
<View className="bg-white border-t border-gray-100 px-4 py-3">
|
<View className="bg-white border-t border-gray-100 px-4 py-3">
|
||||||
<View
|
<View
|
||||||
className="w-full py-3 rounded-full text-white text-center text-base font-medium"
|
className="w-full py-3 rounded-full text-white text-center text-base font-medium"
|
||||||
style={{
|
style={{ backgroundColor: isActive ? '#ef4444' : '#d1d5db' }}
|
||||||
backgroundColor: isActive && !submitting ? '#ef4444' : '#d1d5db',
|
onClick={isActive && !submitting ? handleBuyNow : undefined}
|
||||||
opacity: submitting ? 0.7 : 1,
|
|
||||||
}}
|
|
||||||
onClick={handleBuyClick}
|
|
||||||
>
|
>
|
||||||
<Text>
|
<Text>
|
||||||
{submitting ? '抢购中...' : isActive ? (seckill.stock > 0 ? '立即抢购' : '已抢光') : seckill.status === 0 ? '即将开始' : '已结束'}
|
{submitting ? '抢购中...' : isActive ? (seckill.stock > 0 ? '立即抢购' : '已抢光') : seckill.status === 0 ? '即将开始' : '已结束'}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import Taro from '@tarojs/taro'
|
|||||||
import { pageShopSeckill } from '@/api/shop/shopSeckill'
|
import { pageShopSeckill } from '@/api/shop/shopSeckill'
|
||||||
import type { ShopSeckill } from '@/api/shop/shopSeckill/model'
|
import type { ShopSeckill } from '@/api/shop/shopSeckill/model'
|
||||||
import EmptyState from '@/components/common/EmptyState'
|
import EmptyState from '@/components/common/EmptyState'
|
||||||
import Price from '@/components/common/Price'
|
|
||||||
|
|
||||||
definePageConfig({
|
definePageConfig({
|
||||||
navigationBarTitleText: '限时秒杀',
|
navigationBarTitleText: '限时秒杀',
|
||||||
@@ -122,12 +121,12 @@ const SeckillListPage: React.FC = () => {
|
|||||||
|
|
||||||
<View className='flex items-center justify-between mt-1'>
|
<View className='flex items-center justify-between mt-1'>
|
||||||
<View className='flex items-baseline gap-1'>
|
<View className='flex items-baseline gap-1'>
|
||||||
<Price
|
<Text className='text-lg font-bold text-red-500'>
|
||||||
price={item.seckillPrice}
|
{'\u00A5'}{item.seckillPrice}
|
||||||
original={item.product?.price || 0}
|
</Text>
|
||||||
size='small'
|
<Text className='text-xs text-gray-400 line-through'>
|
||||||
loginMask
|
{'\u00A5'}{item.product?.price || 0}
|
||||||
/>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
<View
|
<View
|
||||||
className='px-3 py-1 rounded-full text-white text-xs'
|
className='px-3 py-1 rounded-full text-white text-xs'
|
||||||
|
|||||||
@@ -300,7 +300,7 @@ const StoreListPage: React.FC = () => {
|
|||||||
) : (
|
) : (
|
||||||
<View className='flex items-center mb-1'>
|
<View className='flex items-center mb-1'>
|
||||||
<Text className='text-xs text-gray-400 mr-1 shrink-0'>🕐</Text>
|
<Text className='text-xs text-gray-400 mr-1 shrink-0'>🕐</Text>
|
||||||
<Text className='text-xs text-gray-400'>营业时间未设置</Text>
|
<Text className='text-xs text-gray-400'>营业时间:9:00 ~ 18:00</Text>
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|||||||
3
src/pages/user/about/index.config.ts
Normal file
3
src/pages/user/about/index.config.ts
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
export default {
|
||||||
|
navigationBarTitleText: '关于我们',
|
||||||
|
}
|
||||||
85
src/pages/user/about/index.tsx
Normal file
85
src/pages/user/about/index.tsx
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
import React from 'react'
|
||||||
|
import { View, Text, ScrollView } from '@tarojs/components'
|
||||||
|
|
||||||
|
definePageConfig({
|
||||||
|
navigationBarTitleText: '关于我们',
|
||||||
|
})
|
||||||
|
|
||||||
|
const AboutPage: React.FC = () => {
|
||||||
|
return (
|
||||||
|
<ScrollView scrollY className='min-h-screen bg-gray-50'>
|
||||||
|
{/* 头部品牌区 */}
|
||||||
|
<View className='bg-white py-10 flex flex-col items-center'>
|
||||||
|
<View className='w-20 h-20 rounded-2xl bg-gradient-to-br from-blue-400 to-blue-600 flex items-center justify-center shadow-lg mb-4'>
|
||||||
|
<Text className='text-white text-4xl font-bold'>鑫</Text>
|
||||||
|
</View>
|
||||||
|
<Text className='text-xl font-bold text-gray-800'>玉林市玉州区鑫龙家电经营部</Text>
|
||||||
|
<Text className='text-sm text-gray-400 mt-1'>鑫龙家电 v1.0.0</Text>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
{/* 公司简介 */}
|
||||||
|
<View className='bg-white mx-3 mt-3 rounded-xl p-4' style={{ boxShadow: '0 2px 8px rgba(0,0,0,0.04)' }}>
|
||||||
|
<Text className='text-base font-medium text-gray-800 mb-3 block'>公司简介</Text>
|
||||||
|
<Text className='text-sm text-gray-600 leading-relaxed'>
|
||||||
|
玉林市玉州区鑫龙家电经营部是一家专注于家用电器销售、安装及维修服务的本地经营部。
|
||||||
|
我们提供冰箱、洗衣机、空调、电视、厨房电器、生活小家电等多种品类,涵盖售前咨询、
|
||||||
|
售后安装、维护保养及故障维修等一站式家电服务。
|
||||||
|
</Text>
|
||||||
|
<Text className='text-sm text-gray-600 leading-relaxed mt-2'>
|
||||||
|
经营部秉承"诚信经营、服务至上"的理念,以优质的产品和贴心的服务赢得了本地客户的信赖。
|
||||||
|
我们致力于让每一位顾客都能买得放心、用得安心,享受便捷的家电生活体验。
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
{/* 核心业务 */}
|
||||||
|
<View className='bg-white mx-3 mt-3 rounded-xl p-4' style={{ boxShadow: '0 2px 8px rgba(0,0,0,0.04)' }}>
|
||||||
|
<Text className='text-base font-medium text-gray-800 mb-3 block'>核心业务</Text>
|
||||||
|
{[
|
||||||
|
{ icon: '📺', title: '家电零售', desc: '电视、冰箱、洗衣机等全品类家电销售' },
|
||||||
|
{ icon: '❄️', title: '空调服务', desc: '空调销售、安装、加氟、清洗及维修' },
|
||||||
|
{ icon: '🍳', title: '厨房电器', desc: '油烟机、燃气灶、热水器等厨卫电器' },
|
||||||
|
{ icon: '🛠️', title: '安装维修', desc: '专业师傅上门安装、检测及故障维修' },
|
||||||
|
{ icon: '🔧', title: '保养维护', desc: '定期清洗保养,延长家电使用寿命' },
|
||||||
|
{ icon: '✅', title: '品质保障', desc: '正品货源、透明报价、售后无忧' },
|
||||||
|
].map((item, idx) => (
|
||||||
|
<View
|
||||||
|
key={idx}
|
||||||
|
className={`flex items-start gap-3 py-3 ${idx < 5 ? 'border-b border-gray-50' : ''}`}
|
||||||
|
>
|
||||||
|
<Text className='text-2xl mt-0.5'>{item.icon}</Text>
|
||||||
|
<View className='flex-1'>
|
||||||
|
<Text className='text-sm font-medium text-gray-700'>{item.title}</Text>
|
||||||
|
<Text className='text-xs text-gray-400 mt-0.5'>{item.desc}</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
))}
|
||||||
|
</View>
|
||||||
|
|
||||||
|
{/* 联系我们 */}
|
||||||
|
<View className='bg-white mx-3 mt-3 rounded-xl p-4' style={{ boxShadow: '0 2px 8px rgba(0,0,0,0.04)' }}>
|
||||||
|
<Text className='text-base font-medium text-gray-800 mb-3 block'>联系我们</Text>
|
||||||
|
<View className='flex flex-col gap-2'>
|
||||||
|
{[
|
||||||
|
{ label: '经营部名称', value: '玉林市玉州区鑫龙家电经营部' },
|
||||||
|
{ label: '经营地址', value: '大新里南718号' },
|
||||||
|
{ label: '联系电话', value: '13260472256' },
|
||||||
|
{ label: '营业时间', value: '9:00 ~ 18:00' },
|
||||||
|
].map((item, idx) => (
|
||||||
|
<View key={idx} className='flex items-start justify-between'>
|
||||||
|
<Text className='text-sm text-gray-500 flex-shrink-0'>{item.label}</Text>
|
||||||
|
<Text className='text-sm text-gray-700 text-right ml-2'>{item.value}</Text>
|
||||||
|
</View>
|
||||||
|
))}
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
{/* 底部版权 */}
|
||||||
|
<View className='flex flex-col items-center py-8'>
|
||||||
|
<Text className='text-xs text-gray-400'>Copyright © 2024 玉林市玉州区鑫龙家电经营部</Text>
|
||||||
|
<Text className='text-xs text-gray-400 mt-1'>All Rights Reserved</Text>
|
||||||
|
</View>
|
||||||
|
</ScrollView>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AboutPage
|
||||||
@@ -5,7 +5,6 @@ import { listShopGoodsFavorite } from '@/api/shop/shopGoodsFavorite'
|
|||||||
import type { ShopGoodsFavorite } from '@/api/shop/shopGoodsFavorite/model'
|
import type { ShopGoodsFavorite } from '@/api/shop/shopGoodsFavorite/model'
|
||||||
import EmptyState from '@/components/common/EmptyState'
|
import EmptyState from '@/components/common/EmptyState'
|
||||||
import LoadMore from '@/components/common/LoadMore'
|
import LoadMore from '@/components/common/LoadMore'
|
||||||
import Price from '@/components/common/Price'
|
|
||||||
|
|
||||||
definePageConfig({
|
definePageConfig({
|
||||||
navigationBarTitleText: '我的收藏',
|
navigationBarTitleText: '我的收藏',
|
||||||
@@ -77,9 +76,9 @@ const FavoriteListPage: React.FC = () => {
|
|||||||
<Text className='text-sm text-gray-800 line-clamp-2 block'>
|
<Text className='text-sm text-gray-800 line-clamp-2 block'>
|
||||||
{item.goodsName}
|
{item.goodsName}
|
||||||
</Text>
|
</Text>
|
||||||
<View className='mt-1'>
|
<Text className='text-red-500 text-sm font-medium mt-1 block'>
|
||||||
<Price price={item.salePrice || '0'} size='small' loginMask />
|
¥{item.salePrice || '0'}
|
||||||
</View>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
))}
|
))}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ const helpData: HelpCategory[] = [
|
|||||||
title: '支付与退款',
|
title: '支付与退款',
|
||||||
icon: '💰',
|
icon: '💰',
|
||||||
questions: [
|
questions: [
|
||||||
{ id: 201, title: '支持哪些支付方式?', content: '我们支持微信支付、支付宝支付(如有)、货到付款、积分抵扣等多种支付方式。' },
|
{ id: 201, title: '支持哪些支付方式?', content: '我们支持微信支付、支付宝支付(如有)、余额支付、积分抵扣等多种支付方式。' },
|
||||||
{ id: 202, title: '如何申请退款?', content: '在订单详情页点击"申请退款"按钮,填写退款原因和说明,提交后等待商家审核。' },
|
{ id: 202, title: '如何申请退款?', content: '在订单详情页点击"申请退款"按钮,填写退款原因和说明,提交后等待商家审核。' },
|
||||||
{ id: 203, title: '退款多久到账?', content: '退款审核通过后,原路退回您的支付账户。微信支付一般1-3个工作日到账,余额支付即时到账。' },
|
{ id: 203, title: '退款多久到账?', content: '退款审核通过后,原路退回您的支付账户。微信支付一般1-3个工作日到账,余额支付即时到账。' },
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -7,6 +7,17 @@ import MemberBadge from '@/components/business/MemberBadge'
|
|||||||
const UserPage: React.FC = () => {
|
const UserPage: React.FC = () => {
|
||||||
const { user, isLoggedIn } = useUser()
|
const { user, isLoggedIn } = useUser()
|
||||||
|
|
||||||
|
// TabBar 页面列表
|
||||||
|
const tabBarPages = ['/pages/index/index', '/pages/shop/index', '/pages/order/list', '/pages/user/user']
|
||||||
|
|
||||||
|
const handleNavigate = (url: string) => {
|
||||||
|
if (tabBarPages.includes(url)) {
|
||||||
|
Taro.switchTab({ url })
|
||||||
|
} else {
|
||||||
|
Taro.navigateTo({ url })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const menuItems = [
|
const menuItems = [
|
||||||
{ icon: '📦', label: '我的订单', url: '/pages/order/list' },
|
{ icon: '📦', label: '我的订单', url: '/pages/order/list' },
|
||||||
{ icon: '📅', label: '预约订单', url: '/pages/booking/list' },
|
{ icon: '📅', label: '预约订单', url: '/pages/booking/list' },
|
||||||
@@ -30,68 +41,56 @@ const UserPage: React.FC = () => {
|
|||||||
<ScrollView scrollY className='flex-1'>
|
<ScrollView scrollY className='flex-1'>
|
||||||
{/* 顶部渐变背景区域 */}
|
{/* 顶部渐变背景区域 */}
|
||||||
<View className='relative'>
|
<View className='relative'>
|
||||||
{/* 渐变背景 — 绿色系 */}
|
{/* 渐变背景 */}
|
||||||
<View
|
<View
|
||||||
className='absolute inset-0'
|
className='absolute inset-0'
|
||||||
style={{
|
style={{
|
||||||
background: 'linear-gradient(135deg, #0d9488 0%, #059669 50%, #10b981 100%)',
|
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 50%, #f093fb 100%)',
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{/* 装饰圆形 */}
|
{/* 装饰圆形 */}
|
||||||
<View
|
<View
|
||||||
className='absolute'
|
className='absolute'
|
||||||
style={{
|
style={{
|
||||||
width: '240px',
|
width: '200px',
|
||||||
height: '240px',
|
height: '200px',
|
||||||
borderRadius: '120px',
|
borderRadius: '100px',
|
||||||
|
background: 'rgba(255, 255, 255, 0.1)',
|
||||||
|
top: '-80px',
|
||||||
|
right: '-60px',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<View
|
||||||
|
className='absolute'
|
||||||
|
style={{
|
||||||
|
width: '150px',
|
||||||
|
height: '150px',
|
||||||
|
borderRadius: '75px',
|
||||||
background: 'rgba(255, 255, 255, 0.08)',
|
background: 'rgba(255, 255, 255, 0.08)',
|
||||||
top: '-100px',
|
top: '-40px',
|
||||||
right: '-80px',
|
left: '-40px',
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<View
|
|
||||||
className='absolute'
|
|
||||||
style={{
|
|
||||||
width: '180px',
|
|
||||||
height: '180px',
|
|
||||||
borderRadius: '90px',
|
|
||||||
background: 'rgba(255, 255, 255, 0.06)',
|
|
||||||
top: '-60px',
|
|
||||||
left: '-60px',
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<View
|
|
||||||
className='absolute'
|
|
||||||
style={{
|
|
||||||
width: '120px',
|
|
||||||
height: '120px',
|
|
||||||
borderRadius: '60px',
|
|
||||||
background: 'rgba(255, 255, 255, 0.05)',
|
|
||||||
bottom: '20px',
|
|
||||||
right: '-30px',
|
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* 用户信息卡片 */}
|
{/* 用户信息卡片 */}
|
||||||
<View className='relative mx-3 mt-3 p-4 rounded-2xl' style={{
|
<View className='relative mx-3 mt-3 p-4 rounded-2xl' style={{
|
||||||
background: 'rgba(255, 255, 255, 0.15)',
|
background: 'rgba(255, 255, 255, 0.95)',
|
||||||
backdropFilter: 'blur(10px)',
|
boxShadow: '0 8px 32px rgba(0, 0, 0, 0.1)',
|
||||||
border: '1px solid rgba(255, 255, 255, 0.2)',
|
|
||||||
}}>
|
}}>
|
||||||
<View className='flex items-center gap-4' onClick={handleLogin}>
|
<View className='flex items-center gap-4' onClick={handleLogin}>
|
||||||
{/* 头像区域 */}
|
{/* 头像区域 */}
|
||||||
<View className='relative'>
|
<View className='relative'>
|
||||||
{isLoggedIn && user?.avatar ? (
|
{isLoggedIn && user?.avatar ? (
|
||||||
<Image
|
<Image
|
||||||
className='w-16 h-16 rounded-full border-3 border-white/30'
|
className='w-16 h-16 rounded-full border-4 border-white'
|
||||||
style={{ boxShadow: '0 4px 16px rgba(0, 0, 0, 0.2)' }}
|
style={{ boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)' }}
|
||||||
src={user.avatar}
|
src={user.avatar}
|
||||||
mode='aspectFill'
|
mode='aspectFill'
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<View
|
<View
|
||||||
className='w-16 h-16 rounded-full border-3 border-white/30 flex items-center justify-center'
|
className='w-16 h-16 rounded-full border-4 border-white flex items-center justify-center'
|
||||||
style={{ background: 'rgba(255, 255, 255, 0.25)', boxShadow: '0 4px 16px rgba(0, 0, 0, 0.2)' }}
|
style={{ background: 'linear-gradient(135deg, #667eea, #764ba2)', boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)' }}
|
||||||
>
|
>
|
||||||
<Text className='text-2xl text-white'>👤</Text>
|
<Text className='text-2xl text-white'>👤</Text>
|
||||||
</View>
|
</View>
|
||||||
@@ -100,7 +99,7 @@ const UserPage: React.FC = () => {
|
|||||||
{isLoggedIn && user?.memberLevelName && (
|
{isLoggedIn && user?.memberLevelName && (
|
||||||
<View
|
<View
|
||||||
className='absolute -bottom-1 -right-1 px-1 py-1 rounded text-xs text-white'
|
className='absolute -bottom-1 -right-1 px-1 py-1 rounded text-xs text-white'
|
||||||
style={{ background: 'linear-gradient(135deg, #fbbf24, #f59e0b)' }}
|
style={{ background: 'linear-gradient(135deg, #f093fb, #f5576c)' }}
|
||||||
>
|
>
|
||||||
VIP
|
VIP
|
||||||
</View>
|
</View>
|
||||||
@@ -110,7 +109,7 @@ const UserPage: React.FC = () => {
|
|||||||
{/* 用户信息 */}
|
{/* 用户信息 */}
|
||||||
<View className='flex-1'>
|
<View className='flex-1'>
|
||||||
<View className='flex items-center gap-2'>
|
<View className='flex items-center gap-2'>
|
||||||
<Text className='text-lg font-bold text-white'>
|
<Text className='text-lg font-bold text-gray-800'>
|
||||||
{isLoggedIn ? (user?.nickname || user?.phone || '用户') : '点击登录'}
|
{isLoggedIn ? (user?.nickname || user?.phone || '用户') : '点击登录'}
|
||||||
</Text>
|
</Text>
|
||||||
{isLoggedIn && user?.memberLevelName && (
|
{isLoggedIn && user?.memberLevelName && (
|
||||||
@@ -118,59 +117,50 @@ const UserPage: React.FC = () => {
|
|||||||
)}
|
)}
|
||||||
</View>
|
</View>
|
||||||
{isLoggedIn ? (
|
{isLoggedIn ? (
|
||||||
<Text className='text-xs text-white/60 mt-1'>ID: {(user as any)?.id || '暂无'}</Text>
|
<Text className='text-xs text-gray-400 mt-1'>ID: {(user as any)?.id || '暂无'}</Text>
|
||||||
) : (
|
) : (
|
||||||
<Text className='text-xs text-white/60 mt-1'>登录后享受更多服务</Text>
|
<Text className='text-xs text-gray-400 mt-1'>登录后享受更多服务</Text>
|
||||||
)}
|
)}
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
{/* 箭头 */}
|
{/* 箭头 */}
|
||||||
<View className='w-6 h-6 rounded-full bg-white/20 flex items-center justify-center'>
|
<View className='w-6 h-6 rounded-full bg-gray-100 flex items-center justify-center'>
|
||||||
<Text className='text-white/80 text-xs'>{'>'}</Text>
|
<Text className='text-gray-400 text-xs'>{'>'}</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
{/* 数据概览 — 4列白色文字 */}
|
{/* 数据概览 */}
|
||||||
{isLoggedIn && (
|
{isLoggedIn && (
|
||||||
<View
|
<View
|
||||||
className='grid grid-cols-4 gap-2 mt-4 pt-4'
|
className='grid grid-cols-3 gap-2 mt-4 pt-4 rounded-xl'
|
||||||
style={{ borderTop: '1px solid rgba(255, 255, 255, 0.2)' }}
|
style={{ background: 'rgba(102, 126, 234, 0.05)' }}
|
||||||
>
|
>
|
||||||
<View
|
<View
|
||||||
className='text-center py-2'
|
className='text-center py-2 rounded-lg'
|
||||||
onClick={() => Taro.navigateTo({ url: '/pages/user/wallet' })}
|
onClick={() => Taro.switchTab({ url: '/pages/points/index' })}
|
||||||
>
|
>
|
||||||
<Text className='text-xl font-bold text-white'>
|
<Text className='text-xl font-bold text-transparent' style={{ background: 'linear-gradient(135deg, #667eea, #764ba2)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent' }}>
|
||||||
¥{((user as any)?.balance || '0.00')}
|
|
||||||
</Text>
|
|
||||||
<Text className='text-xs text-white/70 mt-1 block'>余额</Text>
|
|
||||||
</View>
|
|
||||||
<View
|
|
||||||
className='text-center py-2'
|
|
||||||
onClick={() => Taro.navigateTo({ url: '/pages/points/index' })}
|
|
||||||
>
|
|
||||||
<Text className='text-xl font-bold text-white'>
|
|
||||||
{(user as any)?.points || 0}
|
{(user as any)?.points || 0}
|
||||||
</Text>
|
</Text>
|
||||||
<Text className='text-xs text-white/70 mt-1 block'>积分</Text>
|
<Text className='text-xs text-gray-500 mt-1'>积分</Text>
|
||||||
</View>
|
</View>
|
||||||
<View
|
<View
|
||||||
className='text-center py-2'
|
className='text-center py-2 rounded-lg'
|
||||||
onClick={() => Taro.navigateTo({ url: '/pages/user/coupon-list' })}
|
onClick={() => Taro.navigateTo({ url: '/pages/user/coupon-list' })}
|
||||||
>
|
>
|
||||||
<Text className='text-xl font-bold text-white'>
|
<Text className='text-xl font-bold text-transparent' style={{ background: 'linear-gradient(135deg, #f093fb, #f5576c)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent' }}>
|
||||||
0
|
0
|
||||||
</Text>
|
</Text>
|
||||||
<Text className='text-xs text-white/70 mt-1 block'>优惠券</Text>
|
<Text className='text-xs text-gray-500 mt-1'>优惠券</Text>
|
||||||
</View>
|
</View>
|
||||||
<View
|
<View
|
||||||
className='text-center py-2'
|
className='text-center py-2 rounded-lg'
|
||||||
onClick={() => Taro.navigateTo({ url: '/pages/order/list' })}
|
onClick={() => Taro.switchTab({ url: '/pages/order/list' })}
|
||||||
>
|
>
|
||||||
<Text className='text-xl font-bold text-white'>
|
<Text className='text-xl font-bold text-transparent' style={{ background: 'linear-gradient(135deg, #4facfe, #00f2fe)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent' }}>
|
||||||
0
|
0
|
||||||
</Text>
|
</Text>
|
||||||
<Text className='text-xs text-white/70 mt-1 block'>订单</Text>
|
<Text className='text-xs text-gray-500 mt-1'>订单</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
@@ -182,7 +172,7 @@ const UserPage: React.FC = () => {
|
|||||||
<View className='bg-white rounded-xl mx-3 mt-3 p-4' style={{ boxShadow: '0 2px 8px rgba(0, 0, 0, 0.05)' }}>
|
<View className='bg-white rounded-xl mx-3 mt-3 p-4' style={{ boxShadow: '0 2px 8px rgba(0, 0, 0, 0.05)' }}>
|
||||||
<View className='flex justify-between items-center mb-3'>
|
<View className='flex justify-between items-center mb-3'>
|
||||||
<Text className='text-base font-medium text-gray-800'>我的订单</Text>
|
<Text className='text-base font-medium text-gray-800'>我的订单</Text>
|
||||||
<Text className='text-xs text-gray-400' onClick={() => Taro.navigateTo({ url: '/pages/order/list' })}>
|
<Text className='text-xs text-gray-400' onClick={() => Taro.switchTab({ url: '/pages/order/list' })}>
|
||||||
全部订单 {'>'}
|
全部订单 {'>'}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
@@ -197,7 +187,7 @@ const UserPage: React.FC = () => {
|
|||||||
key={item.status}
|
key={item.status}
|
||||||
className='flex flex-col items-center py-2 rounded-lg'
|
className='flex flex-col items-center py-2 rounded-lg'
|
||||||
style={{ background: `${item.color}10` }}
|
style={{ background: `${item.color}10` }}
|
||||||
onClick={() => Taro.navigateTo({ url: `/pages/order/list?tab=${item.status}` })}
|
onClick={() => { Taro.setStorageSync('order_tab', item.status); Taro.switchTab({ url: '/pages/order/list' }) }}
|
||||||
>
|
>
|
||||||
<Text className='text-xl mb-1'>{item.icon}</Text>
|
<Text className='text-xl mb-1'>{item.icon}</Text>
|
||||||
<Text className='text-xs text-gray-600'>{item.label}</Text>
|
<Text className='text-xs text-gray-600'>{item.label}</Text>
|
||||||
@@ -213,7 +203,7 @@ const UserPage: React.FC = () => {
|
|||||||
className={`flex items-center justify-between px-4 py-3 ${
|
className={`flex items-center justify-between px-4 py-3 ${
|
||||||
idx < menuItems.length - 1 ? 'border-b border-gray-50' : ''
|
idx < menuItems.length - 1 ? 'border-b border-gray-50' : ''
|
||||||
}`}
|
}`}
|
||||||
onClick={() => Taro.navigateTo({ url: item.url })}
|
onClick={() => handleNavigate(item.url)}
|
||||||
>
|
>
|
||||||
<View className='flex items-center gap-3'>
|
<View className='flex items-center gap-3'>
|
||||||
<Text className='text-base'>{item.icon}</Text>
|
<Text className='text-base'>{item.icon}</Text>
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ const SettingPage: React.FC = () => {
|
|||||||
|
|
||||||
const menuItems = [
|
const menuItems = [
|
||||||
{ label: '清除缓存', action: handleClearCache },
|
{ label: '清除缓存', action: handleClearCache },
|
||||||
{ label: '关于我们', action: () => Taro.showToast({ title: 'v1.0.0', icon: 'none' }) },
|
{ label: '关于我们', action: () => Taro.navigateTo({ url: '/pages/user/about/index' }) },
|
||||||
{ label: '用户协议', action: () => Taro.navigateTo({ url: '/passport/agreement' }) },
|
{ label: '用户协议', action: () => Taro.navigateTo({ url: '/passport/agreement' }) },
|
||||||
{ label: '隐私政策', action: () => Taro.navigateTo({ url: '/passport/agreement' }) },
|
{ label: '隐私政策', action: () => Taro.navigateTo({ url: '/passport/agreement' }) },
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ const UserPage: React.FC = () => {
|
|||||||
<View className='bg-white rounded-xl mx-3 mt-3 p-4'>
|
<View className='bg-white rounded-xl mx-3 mt-3 p-4'>
|
||||||
<View className='flex justify-between items-center mb-3'>
|
<View className='flex justify-between items-center mb-3'>
|
||||||
<Text className='text-base font-medium text-gray-800'>我的订单</Text>
|
<Text className='text-base font-medium text-gray-800'>我的订单</Text>
|
||||||
<Text className='text-xs text-gray-400' onClick={() => Taro.navigateTo({ url: '/pages/order/list' })}>
|
<Text className='text-xs text-gray-400' onClick={() => Taro.switchTab({ url: '/pages/order/list' })}>
|
||||||
全部订单 {'>'}
|
全部订单 {'>'}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
@@ -169,7 +169,7 @@ const UserPage: React.FC = () => {
|
|||||||
<View
|
<View
|
||||||
key={item.status}
|
key={item.status}
|
||||||
className='flex flex-col items-center py-2 relative'
|
className='flex flex-col items-center py-2 relative'
|
||||||
onClick={() => Taro.navigateTo({ url: `/pages/order/list?tab=${item.status}` })}
|
onClick={() => { Taro.setStorageSync('order_tab', item.status); Taro.switchTab({ url: '/pages/order/list' }) }}
|
||||||
>
|
>
|
||||||
<Text className='text-xl mb-1'>{item.icon}</Text>
|
<Text className='text-xl mb-1'>{item.icon}</Text>
|
||||||
<Text className='text-xs text-gray-600'>{item.label}</Text>
|
<Text className='text-xs text-gray-600'>{item.label}</Text>
|
||||||
|
|||||||
@@ -45,10 +45,17 @@ const WalletPage: React.FC = () => {
|
|||||||
<View
|
<View
|
||||||
className='flex-1 py-2 rounded-full text-center'
|
className='flex-1 py-2 rounded-full text-center'
|
||||||
style={{ backgroundColor: 'rgba(255,255,255,0.2)' }}
|
style={{ backgroundColor: 'rgba(255,255,255,0.2)' }}
|
||||||
onClick={() => Taro.navigateTo({ url: '/pages/user/recharge' })}
|
onClick={() => Taro.navigateTo({ url: '/pages/user/redeem/index' })}
|
||||||
>
|
>
|
||||||
<Text className='text-white text-sm font-medium'>充值</Text>
|
<Text className='text-white text-sm font-medium'>充值</Text>
|
||||||
</View>
|
</View>
|
||||||
|
{/*<View*/}
|
||||||
|
{/* className='flex-1 py-2 rounded-full text-center'*/}
|
||||||
|
{/* style={{ backgroundColor: 'rgba(255,255,255,0.2)' }}*/}
|
||||||
|
{/* onClick={() => Taro.navigateTo({ url: '/pages/user/withdraw/index' })}*/}
|
||||||
|
{/*>*/}
|
||||||
|
{/* <Text className='text-white text-sm font-medium'>提现</Text>*/}
|
||||||
|
{/*</View>*/}
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
@@ -76,6 +83,13 @@ const WalletPage: React.FC = () => {
|
|||||||
<Text className='text-lg mb-1'>🎫</Text>
|
<Text className='text-lg mb-1'>🎫</Text>
|
||||||
<Text className='text-xs text-gray-600'>兑换码</Text>
|
<Text className='text-xs text-gray-600'>兑换码</Text>
|
||||||
</View>
|
</View>
|
||||||
|
{/*<View*/}
|
||||||
|
{/* className='flex-1 flex flex-col items-center py-2'*/}
|
||||||
|
{/* onClick={() => Taro.navigateTo({ url: '/pages/user/withdraw/index' })}*/}
|
||||||
|
{/*>*/}
|
||||||
|
{/* <Text className='text-lg mb-1'>💰</Text>*/}
|
||||||
|
{/* <Text className='text-xs text-gray-600'>提现记录</Text>*/}
|
||||||
|
{/*</View>*/}
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
|
|||||||
@@ -1,76 +1,28 @@
|
|||||||
.withdraw-page {
|
.withdraw-page {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
min-height: 100vh;
|
height: 100vh;
|
||||||
background: #f5f6fa;
|
background: #f5f5f5;
|
||||||
padding-bottom: env(safe-area-inset-bottom);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ========== 余额卡片 ========== */
|
|
||||||
.balance-card {
|
|
||||||
margin: 24rpx;
|
|
||||||
padding: 40rpx 32rpx 32rpx;
|
|
||||||
background: linear-gradient(135deg, #ff6b35 0%, #ff8c42 100%);
|
|
||||||
border-radius: 20rpx;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.balance-header {
|
|
||||||
margin-bottom: 16rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.balance-label {
|
|
||||||
font-size: 26rpx;
|
|
||||||
color: rgba(255, 255, 255, 0.85);
|
|
||||||
}
|
|
||||||
|
|
||||||
.balance-amount-row {
|
|
||||||
display: flex;
|
|
||||||
align-items: baseline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.currency-symbol-lg {
|
|
||||||
font-size: 40rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #fff;
|
|
||||||
margin-right: 8rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.balance-number {
|
|
||||||
font-size: 72rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #fff;
|
|
||||||
line-height: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.balance-tips {
|
|
||||||
margin-top: 16rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.balance-tip-text {
|
|
||||||
font-size: 24rpx;
|
|
||||||
color: rgba(255, 255, 255, 0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ========== 提现输入卡片 ========== */
|
|
||||||
.withdraw-card {
|
.withdraw-card {
|
||||||
margin: 24rpx;
|
margin: 24rpx;
|
||||||
padding: 32rpx;
|
padding: 32rpx;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border-radius: 20rpx;
|
border-radius: 16rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-title {
|
.card-title {
|
||||||
font-size: 30rpx;
|
font-size: 28rpx;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: #333;
|
color: #333;
|
||||||
margin-bottom: 28rpx;
|
margin-bottom: 32rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.amount-input-wrap {
|
.amount-input-wrap {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 20rpx 0;
|
padding: 24rpx 0;
|
||||||
border-bottom: 2rpx solid #eee;
|
border-bottom: 2rpx solid #eee;
|
||||||
margin-bottom: 16rpx;
|
margin-bottom: 16rpx;
|
||||||
}
|
}
|
||||||
@@ -89,162 +41,65 @@
|
|||||||
color: #333;
|
color: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.all-withdraw {
|
.amount-tips {
|
||||||
flex-shrink: 0;
|
display: flex;
|
||||||
padding: 8rpx 20rpx;
|
justify-content: space-between;
|
||||||
background: #fff3ee;
|
align-items: center;
|
||||||
color: #ff6b35;
|
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.all-withdraw {
|
||||||
|
color: #ff6b35;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
border-radius: 24rpx;
|
|
||||||
border: 2rpx solid #ffd4bc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.fee-tips {
|
.fee-tips {
|
||||||
display: flex;
|
margin-top: 12rpx;
|
||||||
align-items: center;
|
font-size: 22rpx;
|
||||||
gap: 8rpx;
|
color: #ff9a56;
|
||||||
margin-top: 16rpx;
|
|
||||||
padding: 12rpx 16rpx;
|
|
||||||
font-size: 24rpx;
|
|
||||||
color: #e67e22;
|
|
||||||
background: #fef9f5;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.fee-free {
|
.config-card {
|
||||||
color: #27ae60;
|
|
||||||
background: #f0faf4;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fee-icon {
|
|
||||||
font-size: 24rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ========== 提现规则区域(核心审核项)========== */
|
|
||||||
.rules-section {
|
|
||||||
margin: 0 24rpx 24rpx;
|
margin: 0 24rpx 24rpx;
|
||||||
|
padding: 24rpx 32rpx;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border-radius: 20rpx;
|
border-radius: 16rpx;
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 标题栏 */
|
.config-item {
|
||||||
.rules-header {
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
|
||||||
gap: 12rpx;
|
|
||||||
padding: 28rpx 32rpx 20rpx;
|
|
||||||
background: linear-gradient(135deg, #fef0eb 0%, #fff8f5 100%);
|
|
||||||
border-bottom: 2rpx solid #fce8e1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rules-header-icon {
|
|
||||||
font-size: 36rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rules-header-title {
|
|
||||||
font-size: 30rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #c0392b;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 规则网格 - 两列 */
|
|
||||||
.rules-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr 1fr;
|
|
||||||
padding: 24rpx 24rpx 8rpx;
|
|
||||||
gap: 16rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rule-cell {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 20rpx 12rpx;
|
|
||||||
background: #fafafa;
|
|
||||||
border-radius: 12rpx;
|
|
||||||
border: 2rpx solid #f0f0f0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rule-cell-wide {
|
|
||||||
grid-column: span 2;
|
|
||||||
flex-direction: row;
|
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
padding: 18rpx 24rpx;
|
padding: 16rpx 0;
|
||||||
|
border-bottom: 1rpx solid #f5f5f5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.rule-cell-label {
|
.config-item:last-child {
|
||||||
font-size: 23rpx;
|
border-bottom: none;
|
||||||
color: #999;
|
|
||||||
margin-bottom: 8rpx;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.rule-cell-value {
|
.config-label {
|
||||||
font-size: 28rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.rule-cell-wide .rule-cell-label {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 详细规则文字列表 */
|
|
||||||
.rules-detail {
|
|
||||||
padding: 20rpx 32rpx 28rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-item {
|
|
||||||
display: flex;
|
|
||||||
align-items: flex-start;
|
|
||||||
gap: 10rpx;
|
|
||||||
padding: 10rpx 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-bullet {
|
|
||||||
flex-shrink: 0;
|
|
||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
color: #ff6b35;
|
|
||||||
margin-top: 2rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-text {
|
|
||||||
font-size: 25rpx;
|
|
||||||
color: #666;
|
color: #666;
|
||||||
line-height: 1.7;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ========== 底部按钮区 ========== */
|
.config-value {
|
||||||
.bottom-area {
|
font-size: 26rpx;
|
||||||
margin-top: auto;
|
color: #333;
|
||||||
padding: 20rpx 40rpx 40rpx;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.submit-btn {
|
.submit-btn {
|
||||||
width: 100%;
|
margin: 48rpx 24rpx;
|
||||||
padding: 26rpx 0;
|
padding: 24rpx 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: linear-gradient(135deg, #ff6b35 0%, #ff9a56 100%);
|
background: linear-gradient(135deg, #ff6b35 0%, #ff9a56 100%);
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
border-radius: 48rpx;
|
border-radius: 48rpx;
|
||||||
box-shadow: 0 8rpx 24rpx rgba(255, 107, 53, 0.35);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.submit-btn.disabled {
|
.submit-btn.disabled {
|
||||||
opacity: 0.45;
|
opacity: 0.5;
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-disclaimer {
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.disclaimer-text {
|
|
||||||
font-size: 22rpx;
|
|
||||||
color: #bbb;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,9 +24,9 @@ export default function WithdrawPage() {
|
|||||||
|
|
||||||
const loadConfig = async () => {
|
const loadConfig = async () => {
|
||||||
try {
|
try {
|
||||||
const res: any = await getWithdrawConfig();
|
const res = await getWithdrawConfig();
|
||||||
if (res.code === 200 || res.code === 0) {
|
if (res.code === 200) {
|
||||||
setConfig(res.data || {});
|
setConfig(res.data);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('加载配置失败', error);
|
console.error('加载配置失败', error);
|
||||||
@@ -35,25 +35,15 @@ export default function WithdrawPage() {
|
|||||||
|
|
||||||
const loadStats = async () => {
|
const loadStats = async () => {
|
||||||
try {
|
try {
|
||||||
const res: any = await getWithdrawStats();
|
const res = await getWithdrawStats();
|
||||||
if (res.code === 200 || res.code === 0) {
|
if (res.code === 200) {
|
||||||
setStats(res.data || {});
|
setStats(res.data);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('加载统计失败', error);
|
console.error('加载统计失败', error);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 从配置或默认值读取
|
|
||||||
const minAmount = config.withdraw_min_amount || '10';
|
|
||||||
const maxAmount = config.withdraw_max_amount || '200';
|
|
||||||
const dailyLimit = config.withdraw_daily_limit || '2000';
|
|
||||||
const dailyCount = config.withdraw_daily_count || 3;
|
|
||||||
const timeStart = config.withdraw_time_start || '';
|
|
||||||
const timeEnd = config.withdraw_time_end || '';
|
|
||||||
const feeRate = config.withdraw_fee_rate || '0';
|
|
||||||
const arrivalTime = config.arrival_time || '';
|
|
||||||
|
|
||||||
const handleWithdraw = () => {
|
const handleWithdraw = () => {
|
||||||
if (!amount || parseFloat(amount) <= 0) {
|
if (!amount || parseFloat(amount) <= 0) {
|
||||||
Taro.showToast({ title: '请输入提现金额', icon: 'none' });
|
Taro.showToast({ title: '请输入提现金额', icon: 'none' });
|
||||||
@@ -61,12 +51,15 @@ export default function WithdrawPage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const amountNum = parseFloat(amount);
|
const amountNum = parseFloat(amount);
|
||||||
if (amountNum < parseFloat(minAmount)) {
|
const minAmount = parseFloat(config.withdraw_min_amount || '10');
|
||||||
|
const maxAmount = parseFloat(config.withdraw_max_amount || '200');
|
||||||
|
|
||||||
|
if (amountNum < minAmount) {
|
||||||
Taro.showToast({ title: `最低提现金额为${minAmount}元`, icon: 'none' });
|
Taro.showToast({ title: `最低提现金额为${minAmount}元`, icon: 'none' });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (amountNum > parseFloat(maxAmount)) {
|
if (amountNum > maxAmount) {
|
||||||
Taro.showToast({ title: `单次最大提现金额为${maxAmount}元`, icon: 'none' });
|
Taro.showToast({ title: `单次最大提现金额为${maxAmount}元`, icon: 'none' });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -76,12 +69,12 @@ export default function WithdrawPage() {
|
|||||||
|
|
||||||
const handlePayConfirm = async (payType: number) => {
|
const handlePayConfirm = async (payType: number) => {
|
||||||
setShowPayModal(false);
|
setShowPayModal(false);
|
||||||
if (payType !== 0) return;
|
if (payType !== 0) return; // 0微信支付
|
||||||
|
|
||||||
setSubmitting(true);
|
setSubmitting(true);
|
||||||
try {
|
try {
|
||||||
const res: any = await applyWithdraw({ amount: parseFloat(amount) });
|
const res = await applyWithdraw({ amount: parseFloat(amount) });
|
||||||
if (res.code === 200 || res.code === 0) {
|
if (res.code === 200) {
|
||||||
Taro.showToast({ title: '提现申请已提交', icon: 'success' });
|
Taro.showToast({ title: '提现申请已提交', icon: 'success' });
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
Taro.navigateBack();
|
Taro.navigateBack();
|
||||||
@@ -98,156 +91,65 @@ export default function WithdrawPage() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleAllWithdraw = () => {
|
const handleAllWithdraw = () => {
|
||||||
const available = stats.withdrawingTotal || stats.balance || '0.00';
|
// 可提现余额
|
||||||
|
const available = stats.withdrawingTotal || '0';
|
||||||
setAmount(available);
|
setAmount(available);
|
||||||
};
|
};
|
||||||
|
|
||||||
const availableBalance = stats.withdrawingTotal || stats.balance || '0.00';
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View className="withdraw-page">
|
<View className="withdraw-page">
|
||||||
{/* 余额卡片 */}
|
|
||||||
<View className="balance-card">
|
|
||||||
<View className="balance-header">
|
|
||||||
<Text className="balance-label">可提现余额(元)</Text>
|
|
||||||
</View>
|
|
||||||
<View className="balance-amount-row">
|
|
||||||
<Text className="currency-symbol-lg">¥</Text>
|
|
||||||
<Text className="balance-number">{availableBalance}</Text>
|
|
||||||
</View>
|
|
||||||
<View className="balance-tips">
|
|
||||||
<Text className="balance-tip-text">佣金已结算,可申请提现</Text>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
|
|
||||||
{/* 提现输入 */}
|
|
||||||
<View className="withdraw-card">
|
<View className="withdraw-card">
|
||||||
<View className="card-title">提现金额</View>
|
<View className="card-title">提现金额</View>
|
||||||
|
|
||||||
<View className="amount-input-wrap">
|
<View className="amount-input-wrap">
|
||||||
<Text className="currency-symbol">¥</Text>
|
<Text className="currency-symbol">¥</Text>
|
||||||
<Input
|
<Input
|
||||||
className="amount-input"
|
className="amount-input"
|
||||||
type="digit"
|
type="digit"
|
||||||
placeholder={`最低 ${minAmount} 元`}
|
placeholder="请输入提现金额"
|
||||||
value={amount}
|
value={amount}
|
||||||
onInput={(e) => setAmount(e.detail.value)}
|
onInput={(e) => setAmount(e.detail.value)}
|
||||||
/>
|
/>
|
||||||
<Text
|
</View>
|
||||||
className="all-withdraw"
|
|
||||||
onClick={handleAllWithdraw}
|
<View className="amount-tips">
|
||||||
>
|
<Text>可提现佣金: ¥{stats.withdrawingTotal || '0.00'}</Text>
|
||||||
|
<Text className="all-withdraw" onClick={handleAllWithdraw}>
|
||||||
全部提现
|
全部提现
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
{feeRate && parseFloat(feeRate) > 0 ? (
|
|
||||||
|
{config.withdraw_fee_rate && parseFloat(config.withdraw_fee_rate) > 0 && (
|
||||||
<View className="fee-tips">
|
<View className="fee-tips">
|
||||||
<Text className="fee-icon">⚠️</Text>
|
手续费: {config.withdraw_fee_rate}%
|
||||||
<Text>本次提现将收取 {feeRate}% 手续费</Text>
|
|
||||||
</View>
|
|
||||||
) : (
|
|
||||||
<View className="fee-tips fee-free">
|
|
||||||
<Text className="fee-icon">✅</Text>
|
|
||||||
<Text>当前免收提现手续费</Text>
|
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
{/* ====== 提现规则展示(核心审核项)====== */}
|
<View className="config-card">
|
||||||
<View className="rules-section">
|
<View className="config-item">
|
||||||
{/* 标题栏 */}
|
<Text className="config-label">单次限额</Text>
|
||||||
<View className="rules-header">
|
<Text className="config-value">¥{config.withdraw_max_amount || '200'}</Text>
|
||||||
<Text className="rules-header-icon">📋</Text>
|
|
||||||
<Text className="rules-header-title">提现规则说明</Text>
|
|
||||||
</View>
|
</View>
|
||||||
|
<View className="config-item">
|
||||||
{/* 规则网格 - 两列布局更醒目 */}
|
<Text className="config-label">每日限额</Text>
|
||||||
<View className="rules-grid">
|
<Text className="config-value">¥{config.withdraw_daily_limit || '2000'}</Text>
|
||||||
<View className="rule-cell">
|
</View>
|
||||||
<Text className="rule-cell-label">最低提现</Text>
|
{config.withdraw_time_start && (
|
||||||
<Text className="rule-cell-value">{minAmount} 元起</Text>
|
<View className="config-item">
|
||||||
</View>
|
<Text className="config-label">提现时间</Text>
|
||||||
<View className="rule-cell">
|
<Text className="config-value">
|
||||||
<Text className="rule-cell-label">单次限额</Text>
|
{config.withdraw_time_start} - {config.withdraw_time_end}
|
||||||
<Text className="rule-cell-value">{maxAmount} 元/次</Text>
|
|
||||||
</View>
|
|
||||||
<View className="rule-cell">
|
|
||||||
<Text className="rule-cell-label">每日限额</Text>
|
|
||||||
<Text className="rule-cell-value">{dailyLimit} 元/天</Text>
|
|
||||||
</View>
|
|
||||||
<View className="rule-cell">
|
|
||||||
<Text className="rule-cell-label">每日次数</Text>
|
|
||||||
<Text className="rule-cell-value">{dailyCount} 次/天</Text>
|
|
||||||
</View>
|
|
||||||
<View className="rule-cell">
|
|
||||||
<Text className="rule-cell-label">提现时间</Text>
|
|
||||||
<Text className="rule-cell-value">{timeStart && timeEnd ? `${timeStart}-${timeEnd}` : '全天可提'}</Text>
|
|
||||||
</View>
|
|
||||||
<View className="rule-cell">
|
|
||||||
<Text className="rule-cell-label">到账时间</Text>
|
|
||||||
<Text className="rule-cell-value">{arrivalTime || '1-3个工作日'}</Text>
|
|
||||||
</View>
|
|
||||||
<View className="rule-cell rule-cell-wide">
|
|
||||||
<Text className="rule-cell-label">手续费</Text>
|
|
||||||
<Text className="rule-cell-value">
|
|
||||||
{feeRate && parseFloat(feeRate) > 0 ? `${feeRate}%` : '免手续费'}
|
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
)}
|
||||||
|
|
||||||
{/* 详细规则文字 */}
|
|
||||||
<View className="rules-detail">
|
|
||||||
<View className="detail-item">
|
|
||||||
<Text className="detail-bullet">●</Text>
|
|
||||||
<Text className="detail-text">提现金额范围为 ¥{minAmount} ~ ¥{maxAmount},超出范围无法提交</Text>
|
|
||||||
</View>
|
|
||||||
<View className="detail-item">
|
|
||||||
<Text className="detail-bullet">●</Text>
|
|
||||||
<Text className="detail-text">每日最多可提现 {dailyCount} 次,累计不超过 ¥{dailyLimit}</Text>
|
|
||||||
</View>
|
|
||||||
{timeStart && timeEnd ? (
|
|
||||||
<View className="detail-item">
|
|
||||||
<Text className="detail-bullet">●</Text>
|
|
||||||
<Text className="detail-text">仅在每日 {timeStart} 至 {timeEnd} 期间可发起提现申请</Text>
|
|
||||||
</View>
|
|
||||||
) : (
|
|
||||||
<View className="detail-item">
|
|
||||||
<Text className="detail-bullet">●</Text>
|
|
||||||
<Text className="detail-text">支持全天 24 小时发起提现申请</Text>
|
|
||||||
</View>
|
|
||||||
)}
|
|
||||||
<View className="detail-item">
|
|
||||||
<Text className="detail-bullet">●</Text>
|
|
||||||
<Text className="detail-text">提现申请提交后将在 {arrivalTime || '1-3个工作日'} 内审核到账,遇国家法定节假日顺延</Text>
|
|
||||||
</View>
|
|
||||||
{feeRate && parseFloat(feeRate) > 0 ? (
|
|
||||||
<View className="detail-item">
|
|
||||||
<Text className="detail-bullet">●</Text>
|
|
||||||
<Text className="detail-text">每笔提现将收取 {feeRate}% 的服务手续费,从提现金额中直接扣除</Text>
|
|
||||||
</View>
|
|
||||||
) : (
|
|
||||||
<View className="detail-item">
|
|
||||||
<Text className="detail-bullet">●</Text>
|
|
||||||
<Text className="detail-text">当前活动期间免收提现手续费,全额到账</Text>
|
|
||||||
</View>
|
|
||||||
)}
|
|
||||||
<View className="detail-item">
|
|
||||||
<Text className="detail-bullet">●</Text>
|
|
||||||
<Text className="detail-text">提现金额将原路退回至您的支付账户,请确保账户状态正常</Text>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
{/* 底部按钮 */}
|
<View
|
||||||
<View className="bottom-area">
|
className={`submit-btn ${amount && !submitting ? '' : 'disabled'}`}
|
||||||
<View
|
onClick={handleWithdraw}
|
||||||
className={`submit-btn ${amount && !submitting ? '' : 'disabled'}`}
|
>
|
||||||
onClick={handleWithdraw}
|
{submitting ? '提交中...' : '确认提现'}
|
||||||
>
|
|
||||||
{submitting ? '提交中...' : '确认提现'}
|
|
||||||
</View>
|
|
||||||
<View className="submit-disclaimer">
|
|
||||||
<Text className="disclaimer-text">提交即表示您已阅读并同意以上提现规则</Text>
|
|
||||||
</View>
|
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<PayModal
|
<PayModal
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ const responseInterceptor = <T>(response: any, config: RequestConfig): T => {
|
|||||||
if (typeof data === 'object' && data !== null && 'code' in data) {
|
if (typeof data === 'object' && data !== null && 'code' in data) {
|
||||||
const apiResponse = data as ApiResponse<T>
|
const apiResponse = data as ApiResponse<T>
|
||||||
|
|
||||||
if (apiResponse.code === 0 || apiResponse.code === 200) {
|
if (apiResponse.code === 0) {
|
||||||
return (config.returnRaw ? data : apiResponse.data) as T
|
return (config.returnRaw ? data : apiResponse.data) as T
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
115
src_bak/api/cms/cmsAd/index.ts
Normal file
115
src_bak/api/cms/cmsAd/index.ts
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsAd, CmsAdParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询广告位
|
||||||
|
*/
|
||||||
|
export async function pageCmsAd(params: CmsAdParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsAd>>>(
|
||||||
|
'/cms/cms-ad/page',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询广告位列表
|
||||||
|
*/
|
||||||
|
export async function listCmsAd(params?: CmsAdParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsAd[]>>(
|
||||||
|
'/cms/cms-ad',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加广告位
|
||||||
|
*/
|
||||||
|
export async function addCmsAd(data: CmsAd) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-ad',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改广告位
|
||||||
|
*/
|
||||||
|
export async function updateCmsAd(data: CmsAd) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-ad',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除广告位
|
||||||
|
*/
|
||||||
|
export async function removeCmsAd(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-ad/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除广告位
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsAd(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-ad/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询广告位
|
||||||
|
*/
|
||||||
|
export async function getCmsAd(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsAd>>(
|
||||||
|
'/cms/cms-ad/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据code查询广告位
|
||||||
|
*/
|
||||||
|
export async function getCmsAdByCode(code: string) {
|
||||||
|
const res = await request.get<ApiResult<CmsAd>>(
|
||||||
|
'/cms/cms-ad/getByCode/' + code
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
60
src_bak/api/cms/cmsAd/model/index.ts
Normal file
60
src_bak/api/cms/cmsAd/model/index.ts
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 广告位
|
||||||
|
*/
|
||||||
|
export interface CmsAd {
|
||||||
|
// ID
|
||||||
|
adId?: number;
|
||||||
|
// 页面ID
|
||||||
|
designId?: number;
|
||||||
|
// 广告类型
|
||||||
|
adType?: string;
|
||||||
|
// 广告类型
|
||||||
|
type?: string;
|
||||||
|
// 广告位名称
|
||||||
|
name?: string;
|
||||||
|
// 宽
|
||||||
|
width?: string;
|
||||||
|
// 高
|
||||||
|
height?: string;
|
||||||
|
// 广告图片
|
||||||
|
images?: string;
|
||||||
|
// 图片列表
|
||||||
|
imageList?: any[];
|
||||||
|
// 路由/链接地址
|
||||||
|
path?: string;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 页面ID
|
||||||
|
pageId?: number;
|
||||||
|
// 页面名称
|
||||||
|
pageName?: string;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 状态, 0正常, 1冻结
|
||||||
|
status?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
merchantId?: number;
|
||||||
|
// 图片数组
|
||||||
|
imgArr?: any[];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 广告位搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsAdParam extends PageParam {
|
||||||
|
adId?: number;
|
||||||
|
adType?: string;
|
||||||
|
pageId?: number;
|
||||||
|
pageName?: string;
|
||||||
|
status?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsAdRecord/index.ts
Normal file
106
src_bak/api/cms/cmsAdRecord/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsAdRecord, CmsAdRecordParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询广告图片
|
||||||
|
*/
|
||||||
|
export async function pageCmsAdRecord(params: CmsAdRecordParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsAdRecord>>>(
|
||||||
|
'/cms/cms-ad-record/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询广告图片列表
|
||||||
|
*/
|
||||||
|
export async function listCmsAdRecord(params?: CmsAdRecordParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsAdRecord[]>>(
|
||||||
|
'/cms/cms-ad-record',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加广告图片
|
||||||
|
*/
|
||||||
|
export async function addCmsAdRecord(data: CmsAdRecord) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-ad-record',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改广告图片
|
||||||
|
*/
|
||||||
|
export async function updateCmsAdRecord(data: CmsAdRecord) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-ad-record',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除广告图片
|
||||||
|
*/
|
||||||
|
export async function removeCmsAdRecord(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-ad-record/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除广告图片
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsAdRecord(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-ad-record/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询广告图片
|
||||||
|
*/
|
||||||
|
export async function getCmsAdRecord(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsAdRecord>>(
|
||||||
|
'/cms/cms-ad-record/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
35
src_bak/api/cms/cmsAdRecord/model/index.ts
Normal file
35
src_bak/api/cms/cmsAdRecord/model/index.ts
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 广告图片
|
||||||
|
*/
|
||||||
|
export interface CmsAdRecord {
|
||||||
|
// ID
|
||||||
|
adRecordId?: number;
|
||||||
|
// 广告标题
|
||||||
|
title?: string;
|
||||||
|
// 图片地址
|
||||||
|
path?: string;
|
||||||
|
// 链接地址
|
||||||
|
url?: string;
|
||||||
|
// 广告位ID
|
||||||
|
adId?: number;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 状态, 0正常, 1冻结
|
||||||
|
status?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 广告图片搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsAdRecordParam extends PageParam {
|
||||||
|
adRecordId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
218
src_bak/api/cms/cmsArticle/index.ts
Normal file
218
src_bak/api/cms/cmsArticle/index.ts
Normal file
@@ -0,0 +1,218 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type {ApiResult, PageResult} from '@/api';
|
||||||
|
import type {CmsArticle, CmsArticleParam} from './model';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询文章
|
||||||
|
*/
|
||||||
|
export async function pageCmsArticle(params: CmsArticleParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsArticle>>>(
|
||||||
|
'/cms/cms-article/page',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询文章列表
|
||||||
|
*/
|
||||||
|
export async function listCmsArticle(params?: CmsArticleParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticle[]>>(
|
||||||
|
'/cms/cms-article',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加文章
|
||||||
|
*/
|
||||||
|
export async function addCmsArticle(data: CmsArticle) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改文章
|
||||||
|
*/
|
||||||
|
export async function updateCmsArticle(data: CmsArticle) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除文章
|
||||||
|
*/
|
||||||
|
export async function removeCmsArticle(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除文章
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsArticle(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询文章
|
||||||
|
*/
|
||||||
|
export async function getCmsArticle(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticle>>(
|
||||||
|
'/cms/cms-article/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getCount(params?: CmsArticleParam) {
|
||||||
|
const res = await request.get<ApiResult<unknown>>('/cms/cms-article/data', {
|
||||||
|
params
|
||||||
|
});
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上一篇
|
||||||
|
* @param params
|
||||||
|
*/
|
||||||
|
export async function getPrevious(params?: CmsArticleParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticle>>(
|
||||||
|
'/cms/cms-article/getPrevious/' + params?.articleId,
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下一篇
|
||||||
|
* @param params
|
||||||
|
*/
|
||||||
|
export async function getNext(params?: CmsArticleParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticle>>(
|
||||||
|
'/cms/cms-article/getNext/' + params?.articleId,
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证文章密码
|
||||||
|
* @param params
|
||||||
|
*/
|
||||||
|
export async function checkArticlePassword(params?: CmsArticleParam) {
|
||||||
|
const res = await request.get<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article/checkArticlePassword',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function findTags(params?: CmsArticleParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticle[]>>(
|
||||||
|
'/cms/cms-article/findTags',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function pageTags(params?: CmsArticleParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticle[]>>(
|
||||||
|
'/cms/cms-article/pageTags',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按IDS查询文章
|
||||||
|
* @param params
|
||||||
|
*/
|
||||||
|
export async function getByIds(params?: CmsArticleParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticle[]>>(
|
||||||
|
'/cms/cms-article/getByIds',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据code查询文章
|
||||||
|
*/
|
||||||
|
export async function getByCode(code: string) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticle>>(
|
||||||
|
'/cms/cms-article/getByCode/' + code
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
132
src_bak/api/cms/cmsArticle/model/index.ts
Normal file
132
src_bak/api/cms/cmsArticle/model/index.ts
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
import type { PageParam } from '@/api/index';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文章
|
||||||
|
*/
|
||||||
|
export interface CmsArticle {
|
||||||
|
// 文章ID
|
||||||
|
articleId?: number;
|
||||||
|
// 文章标题
|
||||||
|
title?: string;
|
||||||
|
// 文章类型 0常规 1视频
|
||||||
|
type?: number;
|
||||||
|
// 文章模型
|
||||||
|
model?: string;
|
||||||
|
// 文章详情页模板
|
||||||
|
detail?: string;
|
||||||
|
// banner图片
|
||||||
|
banner?: string;
|
||||||
|
// 列表显示方式(10小图展示 20大图展示)
|
||||||
|
showType?: number;
|
||||||
|
// 话题
|
||||||
|
topic?: string;
|
||||||
|
// 标签
|
||||||
|
tags?: any;
|
||||||
|
// 栏目ID
|
||||||
|
categoryId?: number;
|
||||||
|
// 栏目名称
|
||||||
|
categoryName?: string;
|
||||||
|
// 封面图
|
||||||
|
image?: string;
|
||||||
|
// 价格
|
||||||
|
price?: number;
|
||||||
|
startTime?: any;
|
||||||
|
endTime?: any;
|
||||||
|
// 缩列图
|
||||||
|
thumbnail?: string;
|
||||||
|
// 来源
|
||||||
|
source?: string;
|
||||||
|
// 产品概述
|
||||||
|
overview?: string;
|
||||||
|
// 虚拟阅读量(仅用作展示)
|
||||||
|
virtualViews?: number;
|
||||||
|
// 实际阅读量
|
||||||
|
actualViews?: number;
|
||||||
|
// 购买人数
|
||||||
|
bmUsers?: number;
|
||||||
|
// 浏览权限(0公开 1会员 2密码)
|
||||||
|
permission?: number;
|
||||||
|
// 访问密码
|
||||||
|
password?: string;
|
||||||
|
// 确认密码
|
||||||
|
password2?: string;
|
||||||
|
// 发布来源客户端 (APP、H5、小程序等)
|
||||||
|
platform?: string;
|
||||||
|
// 文章附件
|
||||||
|
files?: string;
|
||||||
|
// 视频地址
|
||||||
|
video?: string;
|
||||||
|
// 接受的文件类型
|
||||||
|
accept?: string;
|
||||||
|
// 经度
|
||||||
|
longitude?: string;
|
||||||
|
// 纬度
|
||||||
|
latitude?: string;
|
||||||
|
// 所在省份
|
||||||
|
province?: string;
|
||||||
|
// 所在城市
|
||||||
|
city?: string;
|
||||||
|
// 所在辖区
|
||||||
|
region?: string;
|
||||||
|
// 街道地址
|
||||||
|
address?: string;
|
||||||
|
// 点赞数
|
||||||
|
likes?: number;
|
||||||
|
// pdf地址
|
||||||
|
pdfUrl?: string;
|
||||||
|
// 评论数
|
||||||
|
commentNumbers?: number;
|
||||||
|
// 提醒谁看
|
||||||
|
toUsers?: string;
|
||||||
|
// 文章内容
|
||||||
|
content?: string;
|
||||||
|
// 是否推荐
|
||||||
|
recommend?: number;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 状态, 0已发布, 1待审核 2已驳回 3违规内容
|
||||||
|
status?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 修改时间
|
||||||
|
updateTime?: string;
|
||||||
|
// 父级id
|
||||||
|
parentId?: number;
|
||||||
|
nickname?: string;
|
||||||
|
username?: string;
|
||||||
|
author?: string;
|
||||||
|
shopId?: number;
|
||||||
|
tenantName?: string;
|
||||||
|
logo?: string;
|
||||||
|
fileList?: any;
|
||||||
|
// 编辑器类型
|
||||||
|
editor?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文章搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsArticleParam extends PageParam {
|
||||||
|
articleId?: number;
|
||||||
|
articleIds?: string;
|
||||||
|
categoryId?: number;
|
||||||
|
parentId?: number;
|
||||||
|
status?: number;
|
||||||
|
// 是否推荐
|
||||||
|
recommend?: number;
|
||||||
|
keywords?: string;
|
||||||
|
// 验证密码
|
||||||
|
password?: string;
|
||||||
|
password2?: string;
|
||||||
|
tags?: string;
|
||||||
|
detail?: string;
|
||||||
|
sceneType?: string;
|
||||||
|
}
|
||||||
108
src_bak/api/cms/cmsArticleCategory/index.ts
Normal file
108
src_bak/api/cms/cmsArticleCategory/index.ts
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsArticleCategory, CmsArticleCategoryParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询文章分类表
|
||||||
|
*/
|
||||||
|
export async function pageCmsArticleCategory(params: CmsArticleCategoryParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsArticleCategory>>>(
|
||||||
|
'/cms/cms-article-category/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询文章分类表列表
|
||||||
|
*/
|
||||||
|
export async function listCmsArticleCategory(params?: CmsArticleCategoryParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticleCategory[]>>(
|
||||||
|
'/cms/cms-article-category',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加文章分类表
|
||||||
|
*/
|
||||||
|
export async function addCmsArticleCategory(data: CmsArticleCategory) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-category',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改文章分类表
|
||||||
|
*/
|
||||||
|
export async function updateCmsArticleCategory(data: CmsArticleCategory) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-category',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除文章分类表
|
||||||
|
*/
|
||||||
|
export async function removeCmsArticleCategory(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-category/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除文章分类表
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsArticleCategory(
|
||||||
|
data: (number | undefined)[]
|
||||||
|
) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-category/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询文章分类表
|
||||||
|
*/
|
||||||
|
export async function getCmsArticleCategory(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticleCategory>>(
|
||||||
|
'/cms/cms-article-category/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
59
src_bak/api/cms/cmsArticleCategory/model/index.ts
Normal file
59
src_bak/api/cms/cmsArticleCategory/model/index.ts
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
import type { PageParam } from '@/api/index';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文章分类表
|
||||||
|
*/
|
||||||
|
export interface CmsArticleCategory {
|
||||||
|
// 文章分类ID
|
||||||
|
categoryId?: number;
|
||||||
|
// 分类标识
|
||||||
|
categoryCode?: string;
|
||||||
|
// 分类名称
|
||||||
|
title?: string;
|
||||||
|
// 类型 0列表 1单页 2外链
|
||||||
|
type?: number;
|
||||||
|
// 分类图片
|
||||||
|
image?: string;
|
||||||
|
// 上级分类ID
|
||||||
|
parentId?: number;
|
||||||
|
// 路由/链接地址
|
||||||
|
path?: string;
|
||||||
|
// 组件路径
|
||||||
|
component?: string;
|
||||||
|
// 绑定的页面
|
||||||
|
pageId?: number;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 文章数量
|
||||||
|
count?: number;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)
|
||||||
|
hide?: number;
|
||||||
|
// 是否推荐
|
||||||
|
recommend?: number;
|
||||||
|
// 是否显示在首页
|
||||||
|
showIndex?: number;
|
||||||
|
// 状态, 0正常, 1禁用
|
||||||
|
status?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 修改时间
|
||||||
|
updateTime?: string;
|
||||||
|
value?: number;
|
||||||
|
label?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文章分类表搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsArticleCategoryParam extends PageParam {
|
||||||
|
categoryId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsArticleComment/index.ts
Normal file
106
src_bak/api/cms/cmsArticleComment/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsArticleComment, CmsArticleCommentParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询文章评论表
|
||||||
|
*/
|
||||||
|
export async function pageCmsArticleComment(params: CmsArticleCommentParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsArticleComment>>>(
|
||||||
|
'/cms/cms-article-comment/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询文章评论表列表
|
||||||
|
*/
|
||||||
|
export async function listCmsArticleComment(params?: CmsArticleCommentParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticleComment[]>>(
|
||||||
|
'/cms/cms-article-comment',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加文章评论表
|
||||||
|
*/
|
||||||
|
export async function addCmsArticleComment(data: CmsArticleComment) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-comment',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改文章评论表
|
||||||
|
*/
|
||||||
|
export async function updateCmsArticleComment(data: CmsArticleComment) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-comment',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除文章评论表
|
||||||
|
*/
|
||||||
|
export async function removeCmsArticleComment(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-comment/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除文章评论表
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsArticleComment(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-comment/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询文章评论表
|
||||||
|
*/
|
||||||
|
export async function getCmsArticleComment(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticleComment>>(
|
||||||
|
'/cms/cms-article-comment/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
47
src_bak/api/cms/cmsArticleComment/model/index.ts
Normal file
47
src_bak/api/cms/cmsArticleComment/model/index.ts
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文章评论表
|
||||||
|
*/
|
||||||
|
export interface CmsArticleComment {
|
||||||
|
// 评价ID
|
||||||
|
commentId?: number;
|
||||||
|
// 文章ID
|
||||||
|
articleId?: number;
|
||||||
|
// 评分 (10好评 20中评 30差评)
|
||||||
|
score?: number;
|
||||||
|
// 评价内容
|
||||||
|
content?: string;
|
||||||
|
// 是否为图片评价
|
||||||
|
isPicture?: number;
|
||||||
|
// 评论者ID
|
||||||
|
userId?: number;
|
||||||
|
// 被评价者ID
|
||||||
|
toUserId?: number;
|
||||||
|
// 回复的评论ID
|
||||||
|
replyCommentId?: number;
|
||||||
|
// 回复者ID
|
||||||
|
replyUserId?: number;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 状态, 0未读, 1已读
|
||||||
|
status?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 修改时间
|
||||||
|
updateTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文章评论表搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsArticleCommentParam extends PageParam {
|
||||||
|
commentId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsArticleContent/index.ts
Normal file
106
src_bak/api/cms/cmsArticleContent/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsArticleContent, CmsArticleContentParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询文章记录表
|
||||||
|
*/
|
||||||
|
export async function pageCmsArticleContent(params: CmsArticleContentParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsArticleContent>>>(
|
||||||
|
'/cms/cms-article-content/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询文章记录表列表
|
||||||
|
*/
|
||||||
|
export async function listCmsArticleContent(params?: CmsArticleContentParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticleContent[]>>(
|
||||||
|
'/cms/cms-article-content',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加文章记录表
|
||||||
|
*/
|
||||||
|
export async function addCmsArticleContent(data: CmsArticleContent) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-content',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改文章记录表
|
||||||
|
*/
|
||||||
|
export async function updateCmsArticleContent(data: CmsArticleContent) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-content',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除文章记录表
|
||||||
|
*/
|
||||||
|
export async function removeCmsArticleContent(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-content/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除文章记录表
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsArticleContent(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-content/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询文章记录表
|
||||||
|
*/
|
||||||
|
export async function getCmsArticleContent(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticleContent>>(
|
||||||
|
'/cms/cms-article-content/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
25
src_bak/api/cms/cmsArticleContent/model/index.ts
Normal file
25
src_bak/api/cms/cmsArticleContent/model/index.ts
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文章记录表
|
||||||
|
*/
|
||||||
|
export interface CmsArticleContent {
|
||||||
|
//
|
||||||
|
id?: number;
|
||||||
|
// 文章ID
|
||||||
|
articleId?: number;
|
||||||
|
// 文章内容
|
||||||
|
content?: string;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文章记录表搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsArticleContentParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsArticleCount/index.ts
Normal file
106
src_bak/api/cms/cmsArticleCount/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsArticleCount, CmsArticleCountParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询点赞文章
|
||||||
|
*/
|
||||||
|
export async function pageCmsArticleCount(params: CmsArticleCountParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsArticleCount>>>(
|
||||||
|
'/cms/cms-article-count/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询点赞文章列表
|
||||||
|
*/
|
||||||
|
export async function listCmsArticleCount(params?: CmsArticleCountParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticleCount[]>>(
|
||||||
|
'/cms/cms-article-count',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加点赞文章
|
||||||
|
*/
|
||||||
|
export async function addCmsArticleCount(data: CmsArticleCount) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-count',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改点赞文章
|
||||||
|
*/
|
||||||
|
export async function updateCmsArticleCount(data: CmsArticleCount) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-count',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除点赞文章
|
||||||
|
*/
|
||||||
|
export async function removeCmsArticleCount(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-count/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除点赞文章
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsArticleCount(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-count/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询点赞文章
|
||||||
|
*/
|
||||||
|
export async function getCmsArticleCount(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticleCount>>(
|
||||||
|
'/cms/cms-article-count/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
25
src_bak/api/cms/cmsArticleCount/model/index.ts
Normal file
25
src_bak/api/cms/cmsArticleCount/model/index.ts
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点赞文章
|
||||||
|
*/
|
||||||
|
export interface CmsArticleCount {
|
||||||
|
// 主键ID
|
||||||
|
id?: number;
|
||||||
|
// 文章ID
|
||||||
|
articleId?: number;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点赞文章搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsArticleCountParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsArticleLike/index.ts
Normal file
106
src_bak/api/cms/cmsArticleLike/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsArticleLike, CmsArticleLikeParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询点赞文章
|
||||||
|
*/
|
||||||
|
export async function pageCmsArticleLike(params: CmsArticleLikeParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsArticleLike>>>(
|
||||||
|
'/cms/cms-article-like/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询点赞文章列表
|
||||||
|
*/
|
||||||
|
export async function listCmsArticleLike(params?: CmsArticleLikeParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticleLike[]>>(
|
||||||
|
'/cms/cms-article-like',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加点赞文章
|
||||||
|
*/
|
||||||
|
export async function addCmsArticleLike(data: CmsArticleLike) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-like',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改点赞文章
|
||||||
|
*/
|
||||||
|
export async function updateCmsArticleLike(data: CmsArticleLike) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-like',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除点赞文章
|
||||||
|
*/
|
||||||
|
export async function removeCmsArticleLike(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-like/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除点赞文章
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsArticleLike(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-article-like/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询点赞文章
|
||||||
|
*/
|
||||||
|
export async function getCmsArticleLike(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsArticleLike>>(
|
||||||
|
'/cms/cms-article-like/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
25
src_bak/api/cms/cmsArticleLike/model/index.ts
Normal file
25
src_bak/api/cms/cmsArticleLike/model/index.ts
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点赞文章
|
||||||
|
*/
|
||||||
|
export interface CmsArticleLike {
|
||||||
|
// 主键ID
|
||||||
|
id?: number;
|
||||||
|
// 文章ID
|
||||||
|
articleId?: number;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点赞文章搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsArticleLikeParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsComponents/index.ts
Normal file
106
src_bak/api/cms/cmsComponents/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsComponents, CmsComponentsParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询组件
|
||||||
|
*/
|
||||||
|
export async function pageCmsComponents(params: CmsComponentsParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsComponents>>>(
|
||||||
|
'/cms/cms-components/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询组件列表
|
||||||
|
*/
|
||||||
|
export async function listCmsComponents(params?: CmsComponentsParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsComponents[]>>(
|
||||||
|
'/cms/cms-components',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加组件
|
||||||
|
*/
|
||||||
|
export async function addCmsComponents(data: CmsComponents) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-components',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改组件
|
||||||
|
*/
|
||||||
|
export async function updateCmsComponents(data: CmsComponents) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-components',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除组件
|
||||||
|
*/
|
||||||
|
export async function removeCmsComponents(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-components/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除组件
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsComponents(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-components/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询组件
|
||||||
|
*/
|
||||||
|
export async function getCmsComponents(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsComponents>>(
|
||||||
|
'/cms/cms-components/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
43
src_bak/api/cms/cmsComponents/model/index.ts
Normal file
43
src_bak/api/cms/cmsComponents/model/index.ts
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组件
|
||||||
|
*/
|
||||||
|
export interface CmsComponents {
|
||||||
|
// ID
|
||||||
|
id?: number;
|
||||||
|
// 组件标题
|
||||||
|
title?: string;
|
||||||
|
// 关联导航ID
|
||||||
|
navigationId?: number;
|
||||||
|
// 组件类型
|
||||||
|
type?: string;
|
||||||
|
// 页面关键词
|
||||||
|
keywords?: string;
|
||||||
|
// 页面描述
|
||||||
|
description?: string;
|
||||||
|
// 组件路径
|
||||||
|
path?: string;
|
||||||
|
// 组件图标
|
||||||
|
icon?: string;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 状态, 0正常, 1冻结
|
||||||
|
status?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组件搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsComponentsParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
102
src_bak/api/cms/cmsDesign/index.ts
Normal file
102
src_bak/api/cms/cmsDesign/index.ts
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsDesign, CmsDesignParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询页面管理记录表
|
||||||
|
*/
|
||||||
|
export async function pageCmsDesign(params: CmsDesignParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsDesign>>>(
|
||||||
|
'/cms/cms-design/page',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询页面管理记录表列表
|
||||||
|
*/
|
||||||
|
export async function listCmsDesign(params?: CmsDesignParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsDesign[]>>(
|
||||||
|
'/cms/cms-design',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加页面管理记录表
|
||||||
|
*/
|
||||||
|
export async function addCmsDesign(data: CmsDesign) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-design',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改页面管理记录表
|
||||||
|
*/
|
||||||
|
export async function updateCmsDesign(data: CmsDesign) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-design',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除页面管理记录表
|
||||||
|
*/
|
||||||
|
export async function removeCmsDesign(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-design/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除页面管理记录表
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsDesign(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-design/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询页面管理记录表
|
||||||
|
*/
|
||||||
|
export async function getCmsDesign(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsDesign>>(
|
||||||
|
'/cms/cms-design/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
60
src_bak/api/cms/cmsDesign/model/index.ts
Normal file
60
src_bak/api/cms/cmsDesign/model/index.ts
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
import type { PageParam } from '@/api/index';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面管理记录表
|
||||||
|
*/
|
||||||
|
export interface CmsDesign {
|
||||||
|
pageId?: number;
|
||||||
|
name?: string;
|
||||||
|
keywords?: string;
|
||||||
|
description?: string;
|
||||||
|
path?: string;
|
||||||
|
component?: string;
|
||||||
|
photo?: string;
|
||||||
|
content?: string;
|
||||||
|
// 类型
|
||||||
|
type?: string;
|
||||||
|
categoryId?: number;
|
||||||
|
// 宽
|
||||||
|
width?: string;
|
||||||
|
// 高
|
||||||
|
height?: string;
|
||||||
|
// 页面样式
|
||||||
|
style?: string;
|
||||||
|
// 附件
|
||||||
|
images?: string;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 设为首页
|
||||||
|
home?: number;
|
||||||
|
// 排序
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 状态
|
||||||
|
status?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 更新时间
|
||||||
|
updateTime?: string;
|
||||||
|
// 页面布局
|
||||||
|
layout?: string;
|
||||||
|
backgroundColor?: string;
|
||||||
|
// 关联网站导航ID
|
||||||
|
navigationId?: number;
|
||||||
|
showLayout?: boolean;
|
||||||
|
btn?: any[];
|
||||||
|
showBanner?: boolean;
|
||||||
|
buyUrl?: string;
|
||||||
|
demoUrl?: string;
|
||||||
|
account?: string;
|
||||||
|
docUrl?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面管理记录表搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsDesignParam extends PageParam {
|
||||||
|
pageId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsDesignRecord/index.ts
Normal file
106
src_bak/api/cms/cmsDesignRecord/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsDesignRecord, CmsDesignRecordParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询页面组件表
|
||||||
|
*/
|
||||||
|
export async function pageCmsDesignRecord(params: CmsDesignRecordParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsDesignRecord>>>(
|
||||||
|
'/cms/cms-design-record/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询页面组件表列表
|
||||||
|
*/
|
||||||
|
export async function listCmsDesignRecord(params?: CmsDesignRecordParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsDesignRecord[]>>(
|
||||||
|
'/cms/cms-design-record',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加页面组件表
|
||||||
|
*/
|
||||||
|
export async function addCmsDesignRecord(data: CmsDesignRecord) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-design-record',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改页面组件表
|
||||||
|
*/
|
||||||
|
export async function updateCmsDesignRecord(data: CmsDesignRecord) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-design-record',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除页面组件表
|
||||||
|
*/
|
||||||
|
export async function removeCmsDesignRecord(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-design-record/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除页面组件表
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsDesignRecord(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-design-record/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询页面组件表
|
||||||
|
*/
|
||||||
|
export async function getCmsDesignRecord(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsDesignRecord>>(
|
||||||
|
'/cms/cms-design-record/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
51
src_bak/api/cms/cmsDesignRecord/model/index.ts
Normal file
51
src_bak/api/cms/cmsDesignRecord/model/index.ts
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面组件表
|
||||||
|
*/
|
||||||
|
export interface CmsDesignRecord {
|
||||||
|
// ID
|
||||||
|
id?: number;
|
||||||
|
// 关联导航ID
|
||||||
|
navigationId?: number;
|
||||||
|
parentId?: number;
|
||||||
|
pageId?: number;
|
||||||
|
// 组件
|
||||||
|
title?: string;
|
||||||
|
// 组件标识
|
||||||
|
dictCode?: string;
|
||||||
|
// 组件样式
|
||||||
|
styles?: string;
|
||||||
|
// 卡片阴影显示时机
|
||||||
|
shadow?: string;
|
||||||
|
// 页面关键词
|
||||||
|
keywords?: string;
|
||||||
|
// 页面描述
|
||||||
|
description?: string;
|
||||||
|
// 页面路由地址
|
||||||
|
path?: string;
|
||||||
|
// 缩列图
|
||||||
|
photo?: string;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 状态, 0正常, 1冻结
|
||||||
|
status?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 所属期次
|
||||||
|
periodId?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面组件表搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsDesignRecordParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsDocs/index.ts
Normal file
106
src_bak/api/cms/cmsDocs/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsDocs, CmsDocsParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询文档管理记录表
|
||||||
|
*/
|
||||||
|
export async function pageCmsDocs(params: CmsDocsParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsDocs>>>(
|
||||||
|
'/cms/cms-docs/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询文档管理记录表列表
|
||||||
|
*/
|
||||||
|
export async function listCmsDocs(params?: CmsDocsParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsDocs[]>>(
|
||||||
|
'/cms/cms-docs',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加文档管理记录表
|
||||||
|
*/
|
||||||
|
export async function addCmsDocs(data: CmsDocs) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-docs',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改文档管理记录表
|
||||||
|
*/
|
||||||
|
export async function updateCmsDocs(data: CmsDocs) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-docs',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除文档管理记录表
|
||||||
|
*/
|
||||||
|
export async function removeCmsDocs(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-docs/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除文档管理记录表
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsDocs(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-docs/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询文档管理记录表
|
||||||
|
*/
|
||||||
|
export async function getCmsDocs(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsDocs>>(
|
||||||
|
'/cms/cms-docs/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
45
src_bak/api/cms/cmsDocs/model/index.ts
Normal file
45
src_bak/api/cms/cmsDocs/model/index.ts
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文档管理记录表
|
||||||
|
*/
|
||||||
|
export interface CmsDocs {
|
||||||
|
// 文档ID
|
||||||
|
docsId?: number;
|
||||||
|
// 文档标题
|
||||||
|
title?: string;
|
||||||
|
// 上级目录
|
||||||
|
parentId?: number;
|
||||||
|
// 书籍ID
|
||||||
|
bookId?: number;
|
||||||
|
// 可见性(public,private,protected)
|
||||||
|
visibility?: string;
|
||||||
|
// 虚拟阅读量(仅用作展示)
|
||||||
|
virtualViews?: number;
|
||||||
|
// 实际阅读量
|
||||||
|
actualViews?: number;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 状态, 0正常, 1冻结
|
||||||
|
status?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 修改时间
|
||||||
|
updateTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文档管理记录表搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsDocsParam extends PageParam {
|
||||||
|
docsId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsDocsBook/index.ts
Normal file
106
src_bak/api/cms/cmsDocsBook/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsDocsBook, CmsDocsBookParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询书籍记录表
|
||||||
|
*/
|
||||||
|
export async function pageCmsDocsBook(params: CmsDocsBookParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsDocsBook>>>(
|
||||||
|
'/cms/cms-docs-book/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询书籍记录表列表
|
||||||
|
*/
|
||||||
|
export async function listCmsDocsBook(params?: CmsDocsBookParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsDocsBook[]>>(
|
||||||
|
'/cms/cms-docs-book',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加书籍记录表
|
||||||
|
*/
|
||||||
|
export async function addCmsDocsBook(data: CmsDocsBook) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-docs-book',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改书籍记录表
|
||||||
|
*/
|
||||||
|
export async function updateCmsDocsBook(data: CmsDocsBook) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-docs-book',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除书籍记录表
|
||||||
|
*/
|
||||||
|
export async function removeCmsDocsBook(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-docs-book/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除书籍记录表
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsDocsBook(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-docs-book/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询书籍记录表
|
||||||
|
*/
|
||||||
|
export async function getCmsDocsBook(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsDocsBook>>(
|
||||||
|
'/cms/cms-docs-book/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
37
src_bak/api/cms/cmsDocsBook/model/index.ts
Normal file
37
src_bak/api/cms/cmsDocsBook/model/index.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 书籍记录表
|
||||||
|
*/
|
||||||
|
export interface CmsDocsBook {
|
||||||
|
// ID
|
||||||
|
bookId?: number;
|
||||||
|
// 书籍名称
|
||||||
|
name?: string;
|
||||||
|
// 书籍标识
|
||||||
|
code?: string;
|
||||||
|
// 封面图
|
||||||
|
photo?: string;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 文档内容
|
||||||
|
content?: string;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 状态, 0正常, 1冻结
|
||||||
|
status?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 书籍记录表搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsDocsBookParam extends PageParam {
|
||||||
|
bookId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsDocsContent/index.ts
Normal file
106
src_bak/api/cms/cmsDocsContent/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsDocsContent, CmsDocsContentParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询文档内容记录表
|
||||||
|
*/
|
||||||
|
export async function pageCmsDocsContent(params: CmsDocsContentParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsDocsContent>>>(
|
||||||
|
'/cms/cms-docs-content/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询文档内容记录表列表
|
||||||
|
*/
|
||||||
|
export async function listCmsDocsContent(params?: CmsDocsContentParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsDocsContent[]>>(
|
||||||
|
'/cms/cms-docs-content',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加文档内容记录表
|
||||||
|
*/
|
||||||
|
export async function addCmsDocsContent(data: CmsDocsContent) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-docs-content',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改文档内容记录表
|
||||||
|
*/
|
||||||
|
export async function updateCmsDocsContent(data: CmsDocsContent) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-docs-content',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除文档内容记录表
|
||||||
|
*/
|
||||||
|
export async function removeCmsDocsContent(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-docs-content/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除文档内容记录表
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsDocsContent(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-docs-content/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询文档内容记录表
|
||||||
|
*/
|
||||||
|
export async function getCmsDocsContent(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsDocsContent>>(
|
||||||
|
'/cms/cms-docs-content/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
25
src_bak/api/cms/cmsDocsContent/model/index.ts
Normal file
25
src_bak/api/cms/cmsDocsContent/model/index.ts
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文档内容记录表
|
||||||
|
*/
|
||||||
|
export interface CmsDocsContent {
|
||||||
|
// ID
|
||||||
|
id?: number;
|
||||||
|
// 文档ID
|
||||||
|
docsId?: number;
|
||||||
|
// 文档内容
|
||||||
|
content?: string;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文档内容记录表搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsDocsContentParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
151
src_bak/api/cms/cmsDomain/index.ts
Normal file
151
src_bak/api/cms/cmsDomain/index.ts
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsDomain, CmsDomainParam } from './model';
|
||||||
|
import {SERVER_API_URL} from "@/utils/server";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询网站域名记录表
|
||||||
|
*/
|
||||||
|
export async function pageCmsDomain(params: CmsDomainParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsDomain>>>(
|
||||||
|
SERVER_API_URL + '/cms/cms-domain/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询网站域名记录表列表
|
||||||
|
*/
|
||||||
|
export async function listCmsDomain(params?: CmsDomainParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsDomain[]>>(
|
||||||
|
SERVER_API_URL + '/cms/cms-domain',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加网站域名记录表
|
||||||
|
*/
|
||||||
|
export async function addCmsDomain(data: CmsDomain) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
SERVER_API_URL + '/cms/cms-domain',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改网站域名记录表
|
||||||
|
*/
|
||||||
|
export async function updateCmsDomain(data: CmsDomain) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
SERVER_API_URL + '/cms/cms-domain/domain',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除网站域名记录表
|
||||||
|
*/
|
||||||
|
export async function removeCmsDomain(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
SERVER_API_URL + '/cms/cms-domain/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除网站域名记录表
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsDomain(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
SERVER_API_URL + '/cms/cms-domain/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询网站域名记录表
|
||||||
|
*/
|
||||||
|
export async function getCmsDomain(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsDomain>>(
|
||||||
|
SERVER_API_URL + '/cms/cms-domain/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查IP是否存在
|
||||||
|
*/
|
||||||
|
export async function checkExistence(
|
||||||
|
field: string,
|
||||||
|
value: string,
|
||||||
|
id?: number
|
||||||
|
) {
|
||||||
|
const res = await request.get<ApiResult<unknown>>(
|
||||||
|
SERVER_API_URL + '/cms/domain/existence',
|
||||||
|
{
|
||||||
|
params: { field, value, id }
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function resolvable(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsDomain>>(
|
||||||
|
SERVER_API_URL + '/cms/domain/resolvable/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getTenantIdByDomain(params: CmsDomainParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsDomain>>>(
|
||||||
|
SERVER_API_URL + '/cms/cms-domain/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
44
src_bak/api/cms/cmsDomain/model/index.ts
Normal file
44
src_bak/api/cms/cmsDomain/model/index.ts
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 网站域名记录表
|
||||||
|
*/
|
||||||
|
export interface CmsDomain {
|
||||||
|
// ID
|
||||||
|
id?: number;
|
||||||
|
// 类型 0赠送域名 1绑定域名
|
||||||
|
type?: number;
|
||||||
|
// 域名
|
||||||
|
domain?: string;
|
||||||
|
// 主机记录
|
||||||
|
hostName?: string;
|
||||||
|
// 记录值
|
||||||
|
hostValue?: string;
|
||||||
|
// 状态
|
||||||
|
status?: number;
|
||||||
|
// 排序号
|
||||||
|
sortNumber?: number;
|
||||||
|
// 网站ID
|
||||||
|
websiteId?: number;
|
||||||
|
// 租户ID
|
||||||
|
appId?: number;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 修改时间
|
||||||
|
updateTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 网站域名记录表搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsDomainParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
domain?: string;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsForm/index.ts
Normal file
106
src_bak/api/cms/cmsForm/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsForm, CmsFormParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询表单设计表
|
||||||
|
*/
|
||||||
|
export async function pageCmsForm(params: CmsFormParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsForm>>>(
|
||||||
|
'/cms/cms-form/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询表单设计表列表
|
||||||
|
*/
|
||||||
|
export async function listCmsForm(params?: CmsFormParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsForm[]>>(
|
||||||
|
'/cms/cms-form',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加表单设计表
|
||||||
|
*/
|
||||||
|
export async function addCmsForm(data: CmsForm) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-form',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改表单设计表
|
||||||
|
*/
|
||||||
|
export async function updateCmsForm(data: CmsForm) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-form',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除表单设计表
|
||||||
|
*/
|
||||||
|
export async function removeCmsForm(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-form/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除表单设计表
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsForm(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-form/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询表单设计表
|
||||||
|
*/
|
||||||
|
export async function getCmsForm(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsForm>>(
|
||||||
|
'/cms/cms-form/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
53
src_bak/api/cms/cmsForm/model/index.ts
Normal file
53
src_bak/api/cms/cmsForm/model/index.ts
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表单设计表
|
||||||
|
*/
|
||||||
|
export interface CmsForm {
|
||||||
|
// ID
|
||||||
|
formId?: number;
|
||||||
|
// 表单标题
|
||||||
|
name?: string;
|
||||||
|
// 顶部图片
|
||||||
|
photo?: string;
|
||||||
|
// 背景图片
|
||||||
|
background?: string;
|
||||||
|
// 视频文件
|
||||||
|
video?: string;
|
||||||
|
// 提交次数
|
||||||
|
submitNumber?: number;
|
||||||
|
// 页面布局
|
||||||
|
layout?: string;
|
||||||
|
// 是否隐藏顶部图片
|
||||||
|
hidePhoto?: number;
|
||||||
|
// 是否隐藏背景图片
|
||||||
|
hideBackground?: number;
|
||||||
|
// 是否隐藏视频
|
||||||
|
hideVideo?: number;
|
||||||
|
// 背景图片透明度
|
||||||
|
opacity?: string;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 商户ID
|
||||||
|
merchantId?: number;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 状态, 0正常, 1冻结
|
||||||
|
status?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表单设计表搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsFormParam extends PageParam {
|
||||||
|
formId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsFormRecord/index.ts
Normal file
106
src_bak/api/cms/cmsFormRecord/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsFormRecord, CmsFormRecordParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询表单数据记录表
|
||||||
|
*/
|
||||||
|
export async function pageCmsFormRecord(params: CmsFormRecordParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsFormRecord>>>(
|
||||||
|
'/cms/cms-form-record/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询表单数据记录表列表
|
||||||
|
*/
|
||||||
|
export async function listCmsFormRecord(params?: CmsFormRecordParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsFormRecord[]>>(
|
||||||
|
'/cms/cms-form-record',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加表单数据记录表
|
||||||
|
*/
|
||||||
|
export async function addCmsFormRecord(data: CmsFormRecord) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-form-record',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改表单数据记录表
|
||||||
|
*/
|
||||||
|
export async function updateCmsFormRecord(data: CmsFormRecord) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-form-record',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除表单数据记录表
|
||||||
|
*/
|
||||||
|
export async function removeCmsFormRecord(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-form-record/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除表单数据记录表
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsFormRecord(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-form-record/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询表单数据记录表
|
||||||
|
*/
|
||||||
|
export async function getCmsFormRecord(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsFormRecord>>(
|
||||||
|
'/cms/cms-form-record/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
41
src_bak/api/cms/cmsFormRecord/model/index.ts
Normal file
41
src_bak/api/cms/cmsFormRecord/model/index.ts
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
import type { PageParam } from '@/api/index';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表单数据记录表
|
||||||
|
*/
|
||||||
|
export interface CmsFormRecord {
|
||||||
|
// ID
|
||||||
|
formRecordId?: number;
|
||||||
|
// 手机号
|
||||||
|
phone?: string;
|
||||||
|
// 表单数据
|
||||||
|
formData?: string;
|
||||||
|
// 表单ID
|
||||||
|
formId?: number;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 商户ID
|
||||||
|
merchantId?: number;
|
||||||
|
// 姓名
|
||||||
|
name?: string;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 状态, 0正常, 1冻结
|
||||||
|
status?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 表单数据记录表搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsFormRecordParam extends PageParam {
|
||||||
|
formRecordId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
105
src_bak/api/cms/cmsLang/index.ts
Normal file
105
src_bak/api/cms/cmsLang/index.ts
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsLang, CmsLangParam } from './model';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询国际化
|
||||||
|
*/
|
||||||
|
export async function pageCmsLang(params: CmsLangParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsLang>>>(
|
||||||
|
'/cms/cms-lang/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询国际化列表
|
||||||
|
*/
|
||||||
|
export async function listCmsLang(params?: CmsLangParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsLang[]>>(
|
||||||
|
'/cms/cms-lang',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加国际化
|
||||||
|
*/
|
||||||
|
export async function addCmsLang(data: CmsLang) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-lang',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改国际化
|
||||||
|
*/
|
||||||
|
export async function updateCmsLang(data: CmsLang) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-lang',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除国际化
|
||||||
|
*/
|
||||||
|
export async function removeCmsLang(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-lang/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除国际化
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsLang(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-lang/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询国际化
|
||||||
|
*/
|
||||||
|
export async function getCmsLang(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsLang>>(
|
||||||
|
'/cms/cms-lang/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
39
src_bak/api/cms/cmsLang/model/index.ts
Normal file
39
src_bak/api/cms/cmsLang/model/index.ts
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际化
|
||||||
|
*/
|
||||||
|
export interface CmsLang {
|
||||||
|
// ID
|
||||||
|
id?: number;
|
||||||
|
// 名称
|
||||||
|
name?: string;
|
||||||
|
// 菜单组件地址, 目录可为空
|
||||||
|
code?: string;
|
||||||
|
// 启用语言
|
||||||
|
lang?: string;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 0禁用 1启用
|
||||||
|
enable?: boolean;
|
||||||
|
// 状态, 0禁用 1启用
|
||||||
|
status?: boolean;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 修改时间
|
||||||
|
updateTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际化搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsLangParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
105
src_bak/api/cms/cmsLangLog/index.ts
Normal file
105
src_bak/api/cms/cmsLangLog/index.ts
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsLangLog, CmsLangLogParam } from './model';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询国际化记录启用
|
||||||
|
*/
|
||||||
|
export async function pageCmsLangLog(params: CmsLangLogParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsLangLog>>>(
|
||||||
|
'/cms/cms-lang-log/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询国际化记录启用列表
|
||||||
|
*/
|
||||||
|
export async function listCmsLangLog(params?: CmsLangLogParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsLangLog[]>>(
|
||||||
|
'/cms/cms-lang-log',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加国际化记录启用
|
||||||
|
*/
|
||||||
|
export async function addCmsLangLog(data: CmsLangLog) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-lang-log',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改国际化记录启用
|
||||||
|
*/
|
||||||
|
export async function updateCmsLangLog(data: CmsLangLog) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-lang-log',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除国际化记录启用
|
||||||
|
*/
|
||||||
|
export async function removeCmsLangLog(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-lang-log/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除国际化记录启用
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsLangLog(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-lang-log/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询国际化记录启用
|
||||||
|
*/
|
||||||
|
export async function getCmsLangLog(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsLangLog>>(
|
||||||
|
'/cms/cms-lang-log/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
27
src_bak/api/cms/cmsLangLog/model/index.ts
Normal file
27
src_bak/api/cms/cmsLangLog/model/index.ts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际化记录启用
|
||||||
|
*/
|
||||||
|
export interface CmsLangLog {
|
||||||
|
// ID
|
||||||
|
id?: number;
|
||||||
|
// 关联ID
|
||||||
|
langId?: number;
|
||||||
|
// 编码
|
||||||
|
code?: string;
|
||||||
|
// 名称
|
||||||
|
lang?: string;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国际化记录启用搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsLangLogParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsLink/index.ts
Normal file
106
src_bak/api/cms/cmsLink/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsLink, CmsLinkParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询常用链接
|
||||||
|
*/
|
||||||
|
export async function pageCmsLink(params: CmsLinkParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsLink>>>(
|
||||||
|
'/cms/cms-link/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询常用链接列表
|
||||||
|
*/
|
||||||
|
export async function listCmsLink(params?: CmsLinkParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsLink[]>>(
|
||||||
|
'/cms/cms-link',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加常用链接
|
||||||
|
*/
|
||||||
|
export async function addCmsLink(data: CmsLink) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-link',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改常用链接
|
||||||
|
*/
|
||||||
|
export async function updateCmsLink(data: CmsLink) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-link',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除常用链接
|
||||||
|
*/
|
||||||
|
export async function removeCmsLink(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-link/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除常用链接
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsLink(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-link/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询常用链接
|
||||||
|
*/
|
||||||
|
export async function getCmsLink(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsLink>>(
|
||||||
|
'/cms/cms-link/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
43
src_bak/api/cms/cmsLink/model/index.ts
Normal file
43
src_bak/api/cms/cmsLink/model/index.ts
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 常用链接
|
||||||
|
*/
|
||||||
|
export interface CmsLink {
|
||||||
|
// 自增ID
|
||||||
|
id?: number;
|
||||||
|
// 链接名称
|
||||||
|
name?: string;
|
||||||
|
// 图标
|
||||||
|
icon?: string;
|
||||||
|
// 链接地址
|
||||||
|
url?: string;
|
||||||
|
// 链接分类
|
||||||
|
linkType?: string;
|
||||||
|
// 应用ID
|
||||||
|
appId?: number;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 是否推荐
|
||||||
|
recommend?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 状态, 0正常, 1待确认
|
||||||
|
status?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 常用链接搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsLinkParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsModel/index.ts
Normal file
106
src_bak/api/cms/cmsModel/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsModel, CmsModelParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询模型
|
||||||
|
*/
|
||||||
|
export async function pageCmsModel(params: CmsModelParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsModel>>>(
|
||||||
|
'/cms/cms-model/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询模型列表
|
||||||
|
*/
|
||||||
|
export async function listCmsModel(params?: CmsModelParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsModel[]>>(
|
||||||
|
'/cms/cms-model',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加模型
|
||||||
|
*/
|
||||||
|
export async function addCmsModel(data: CmsModel) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-model',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改模型
|
||||||
|
*/
|
||||||
|
export async function updateCmsModel(data: CmsModel) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-model',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除模型
|
||||||
|
*/
|
||||||
|
export async function removeCmsModel(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-model/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除模型
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsModel(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-model/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询模型
|
||||||
|
*/
|
||||||
|
export async function getCmsModel(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsModel>>(
|
||||||
|
'/cms/cms-model/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
57
src_bak/api/cms/cmsModel/model/index.ts
Normal file
57
src_bak/api/cms/cmsModel/model/index.ts
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
import type { PageParam } from '@/api/index';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模型
|
||||||
|
*/
|
||||||
|
export interface CmsModel {
|
||||||
|
// ID
|
||||||
|
modelId?: number;
|
||||||
|
// 模型名称
|
||||||
|
name?: string;
|
||||||
|
// 唯一标识
|
||||||
|
model?: string;
|
||||||
|
// 菜单路由地址
|
||||||
|
path?: string;
|
||||||
|
// 菜单组件地址, 目录可为空
|
||||||
|
component?: string;
|
||||||
|
// 模型banner图片
|
||||||
|
banner?: string;
|
||||||
|
// 缩列图
|
||||||
|
thumb?: string;
|
||||||
|
// 封面图宽
|
||||||
|
imageWidth?: string;
|
||||||
|
// 封面图高
|
||||||
|
imageHeight?: string;
|
||||||
|
// 样式
|
||||||
|
style?: string;
|
||||||
|
// Banner上的标题
|
||||||
|
title?: string;
|
||||||
|
// Banner上的描述
|
||||||
|
desc?: string;
|
||||||
|
// 列表显示方式(10小图展示 20大图展示)
|
||||||
|
showType?: number;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 状态, 0已发布, 1待审核 2已驳回 3违规内容
|
||||||
|
status?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 修改时间
|
||||||
|
updateTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模型搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsModelParam extends PageParam {
|
||||||
|
modelId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsMp/index.ts
Normal file
106
src_bak/api/cms/cmsMp/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsMp, CmsMpParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询小程序信息
|
||||||
|
*/
|
||||||
|
export async function pageCmsMp(params: CmsMpParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsMp>>>(
|
||||||
|
'/cms/cms-mp/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询小程序信息列表
|
||||||
|
*/
|
||||||
|
export async function listCmsMp(params?: CmsMpParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsMp[]>>(
|
||||||
|
'/cms/cms-mp',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加小程序信息
|
||||||
|
*/
|
||||||
|
export async function addCmsMp(data: CmsMp) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改小程序信息
|
||||||
|
*/
|
||||||
|
export async function updateCmsMp(data: CmsMp) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除小程序信息
|
||||||
|
*/
|
||||||
|
export async function removeCmsMp(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除小程序信息
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsMp(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询小程序信息
|
||||||
|
*/
|
||||||
|
export async function getCmsMp(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsMp>>(
|
||||||
|
'/cms/cms-mp/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
61
src_bak/api/cms/cmsMp/model/index.ts
Normal file
61
src_bak/api/cms/cmsMp/model/index.ts
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序信息
|
||||||
|
*/
|
||||||
|
export interface CmsMp {
|
||||||
|
// ID
|
||||||
|
mpId?: number;
|
||||||
|
// 是否主账号
|
||||||
|
type?: number;
|
||||||
|
// 小程序ID
|
||||||
|
appId?: string;
|
||||||
|
// 小程序密钥
|
||||||
|
appSecret?: string;
|
||||||
|
// 小程序名称
|
||||||
|
mpName?: string;
|
||||||
|
// 小程序简称
|
||||||
|
shortName?: string;
|
||||||
|
// 头像
|
||||||
|
avatar?: string;
|
||||||
|
// 小程序码
|
||||||
|
mpQrcode?: string;
|
||||||
|
// 微信认证
|
||||||
|
authentication?: number;
|
||||||
|
// 主体信息
|
||||||
|
companyName?: string;
|
||||||
|
// 小程序备案
|
||||||
|
icpNo?: string;
|
||||||
|
// 登录邮箱
|
||||||
|
email?: string;
|
||||||
|
// 登录密码
|
||||||
|
password?: string;
|
||||||
|
// 原始ID
|
||||||
|
ghId?: string;
|
||||||
|
// 入口页面
|
||||||
|
mainPath?: string;
|
||||||
|
// 过期时间
|
||||||
|
expirationTime?: string;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 介绍
|
||||||
|
comments?: string;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 状态, 0正常, 1冻结
|
||||||
|
status?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序信息搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsMpParam extends PageParam {
|
||||||
|
mpId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsMpAd/index.ts
Normal file
106
src_bak/api/cms/cmsMpAd/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsMpAd, CmsMpAdParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询小程序广告位
|
||||||
|
*/
|
||||||
|
export async function pageCmsMpAd(params: CmsMpAdParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsMpAd>>>(
|
||||||
|
'/cms/cms-mp-ad/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询小程序广告位列表
|
||||||
|
*/
|
||||||
|
export async function listCmsMpAd(params?: CmsMpAdParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsMpAd[]>>(
|
||||||
|
'/cms/cms-mp-ad',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加小程序广告位
|
||||||
|
*/
|
||||||
|
export async function addCmsMpAd(data: CmsMpAd) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-ad',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改小程序广告位
|
||||||
|
*/
|
||||||
|
export async function updateCmsMpAd(data: CmsMpAd) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-ad',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除小程序广告位
|
||||||
|
*/
|
||||||
|
export async function removeCmsMpAd(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-ad/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除小程序广告位
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsMpAd(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-ad/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询小程序广告位
|
||||||
|
*/
|
||||||
|
export async function getCmsMpAd(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsMpAd>>(
|
||||||
|
'/cms/cms-mp-ad/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
47
src_bak/api/cms/cmsMpAd/model/index.ts
Normal file
47
src_bak/api/cms/cmsMpAd/model/index.ts
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序广告位
|
||||||
|
*/
|
||||||
|
export interface CmsMpAd {
|
||||||
|
// ID
|
||||||
|
adId?: number;
|
||||||
|
// 页面ID
|
||||||
|
pageId?: number;
|
||||||
|
// 广告类型
|
||||||
|
adType?: string;
|
||||||
|
// 广告位名称
|
||||||
|
name?: string;
|
||||||
|
// 宽
|
||||||
|
width?: string;
|
||||||
|
// 高
|
||||||
|
height?: string;
|
||||||
|
// 广告图片
|
||||||
|
images?: string;
|
||||||
|
// 路由/链接地址
|
||||||
|
path?: string;
|
||||||
|
// 页面名称
|
||||||
|
pageName?: string;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 状态, 0正常, 1冻结
|
||||||
|
status?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序广告位搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsMpAdParam extends PageParam {
|
||||||
|
adId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsMpField/index.ts
Normal file
106
src_bak/api/cms/cmsMpField/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsMpField, CmsMpFieldParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询小程序配置
|
||||||
|
*/
|
||||||
|
export async function pageCmsMpField(params: CmsMpFieldParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsMpField>>>(
|
||||||
|
'/cms/cms-mp-field/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询小程序配置列表
|
||||||
|
*/
|
||||||
|
export async function listCmsMpField(params?: CmsMpFieldParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsMpField[]>>(
|
||||||
|
'/cms/cms-mp-field',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加小程序配置
|
||||||
|
*/
|
||||||
|
export async function addCmsMpField(data: CmsMpField) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-field',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改小程序配置
|
||||||
|
*/
|
||||||
|
export async function updateCmsMpField(data: CmsMpField) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-field',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除小程序配置
|
||||||
|
*/
|
||||||
|
export async function removeCmsMpField(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-field/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除小程序配置
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsMpField(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-field/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询小程序配置
|
||||||
|
*/
|
||||||
|
export async function getCmsMpField(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsMpField>>(
|
||||||
|
'/cms/cms-mp-field/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
35
src_bak/api/cms/cmsMpField/model/index.ts
Normal file
35
src_bak/api/cms/cmsMpField/model/index.ts
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序配置
|
||||||
|
*/
|
||||||
|
export interface CmsMpField {
|
||||||
|
// 自增ID
|
||||||
|
id?: number;
|
||||||
|
// 类型,0文本 1图片 2其他
|
||||||
|
type?: number;
|
||||||
|
// 名称
|
||||||
|
name?: string;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 名称
|
||||||
|
value?: string;
|
||||||
|
// 页面ID
|
||||||
|
pageId?: number;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序配置搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsMpFieldParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsMpMenu/index.ts
Normal file
106
src_bak/api/cms/cmsMpMenu/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsMpMenu, CmsMpMenuParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询小程序端菜单
|
||||||
|
*/
|
||||||
|
export async function pageCmsMpMenu(params: CmsMpMenuParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsMpMenu>>>(
|
||||||
|
'/cms/cms-mp-menu/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询小程序端菜单列表
|
||||||
|
*/
|
||||||
|
export async function listCmsMpMenu(params?: CmsMpMenuParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsMpMenu[]>>(
|
||||||
|
'/cms/cms-mp-menu',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加小程序端菜单
|
||||||
|
*/
|
||||||
|
export async function addCmsMpMenu(data: CmsMpMenu) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-menu',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改小程序端菜单
|
||||||
|
*/
|
||||||
|
export async function updateCmsMpMenu(data: CmsMpMenu) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-menu',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除小程序端菜单
|
||||||
|
*/
|
||||||
|
export async function removeCmsMpMenu(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-menu/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除小程序端菜单
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsMpMenu(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-menu/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询小程序端菜单
|
||||||
|
*/
|
||||||
|
export async function getCmsMpMenu(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsMpMenu>>(
|
||||||
|
'/cms/cms-mp-menu/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
79
src_bak/api/cms/cmsMpMenu/model/index.ts
Normal file
79
src_bak/api/cms/cmsMpMenu/model/index.ts
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序端菜单
|
||||||
|
*/
|
||||||
|
export interface CmsMpMenu {
|
||||||
|
// ID
|
||||||
|
menuId?: number;
|
||||||
|
// 上级id, 0是顶级
|
||||||
|
parentId?: number;
|
||||||
|
// 菜单名称
|
||||||
|
title?: string;
|
||||||
|
// 类型 0功能图标 1订单状态图标 2首页导航图标 3 商城导航图标 4管理人员功能图标
|
||||||
|
type?: number;
|
||||||
|
// 是否微信小程序菜单
|
||||||
|
isMpWeixin?: string;
|
||||||
|
// 菜单路由地址
|
||||||
|
path?: string;
|
||||||
|
// 菜单组件地址, 目录可为空
|
||||||
|
component?: string;
|
||||||
|
// 打开位置
|
||||||
|
target?: string;
|
||||||
|
// 菜单图标
|
||||||
|
avatar?: string;
|
||||||
|
// 图标颜色
|
||||||
|
color?: string;
|
||||||
|
// 上传图标
|
||||||
|
icon?: string;
|
||||||
|
// 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)
|
||||||
|
hide?: number;
|
||||||
|
// 位置 0不限 1顶部 2底部
|
||||||
|
position?: number;
|
||||||
|
// 0 第一行 1第二行
|
||||||
|
rows?: number;
|
||||||
|
// 菜单侧栏选中的path
|
||||||
|
active?: string;
|
||||||
|
// 其它路由元信息
|
||||||
|
meta?: string;
|
||||||
|
// 绑定的页面
|
||||||
|
pageId?: number;
|
||||||
|
// 绑定的文章分类ID
|
||||||
|
articleCategoryId?: number;
|
||||||
|
// 绑定的文章ID
|
||||||
|
articleId?: number;
|
||||||
|
// 绑定的表单ID
|
||||||
|
formId?: number;
|
||||||
|
// 绑定的书籍标识
|
||||||
|
bookCode?: string;
|
||||||
|
// 绑定的商品分类ID
|
||||||
|
goodsCategoryId?: number;
|
||||||
|
// 绑定的商品ID
|
||||||
|
goodsId?: number;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 是否管理人员可见
|
||||||
|
adminShow?: number;
|
||||||
|
// 设为首页
|
||||||
|
home?: number;
|
||||||
|
// 分组名称
|
||||||
|
groupName?: string;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 状态, 0正常, 1冻结
|
||||||
|
status?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序端菜单搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsMpMenuParam extends PageParam {
|
||||||
|
menuId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsMpPages/index.ts
Normal file
106
src_bak/api/cms/cmsMpPages/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsMpPages, CmsMpPagesParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询小程序页面
|
||||||
|
*/
|
||||||
|
export async function pageCmsMpPages(params: CmsMpPagesParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsMpPages>>>(
|
||||||
|
'/cms/cms-mp-pages/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询小程序页面列表
|
||||||
|
*/
|
||||||
|
export async function listCmsMpPages(params?: CmsMpPagesParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsMpPages[]>>(
|
||||||
|
'/cms/cms-mp-pages',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加小程序页面
|
||||||
|
*/
|
||||||
|
export async function addCmsMpPages(data: CmsMpPages) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-pages',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改小程序页面
|
||||||
|
*/
|
||||||
|
export async function updateCmsMpPages(data: CmsMpPages) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-pages',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除小程序页面
|
||||||
|
*/
|
||||||
|
export async function removeCmsMpPages(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-pages/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除小程序页面
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsMpPages(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-mp-pages/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询小程序页面
|
||||||
|
*/
|
||||||
|
export async function getCmsMpPages(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsMpPages>>(
|
||||||
|
'/cms/cms-mp-pages/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
47
src_bak/api/cms/cmsMpPages/model/index.ts
Normal file
47
src_bak/api/cms/cmsMpPages/model/index.ts
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序页面
|
||||||
|
*/
|
||||||
|
export interface CmsMpPages {
|
||||||
|
// ID
|
||||||
|
id?: number;
|
||||||
|
// 上级id, 0是顶级
|
||||||
|
parentId?: number;
|
||||||
|
// 页面名称
|
||||||
|
title?: string;
|
||||||
|
// 页面路径
|
||||||
|
path?: string;
|
||||||
|
// 设为首页
|
||||||
|
home?: number;
|
||||||
|
// 分包
|
||||||
|
subpackage?: string;
|
||||||
|
// 图标
|
||||||
|
icon?: string;
|
||||||
|
// 未选中图标
|
||||||
|
iconPath?: string;
|
||||||
|
// 选中的图标
|
||||||
|
selectedIconPath?: string;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 状态, 0正常, 1冻结
|
||||||
|
status?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小程序页面搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsMpPagesParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
138
src_bak/api/cms/cmsNavigation/index.ts
Normal file
138
src_bak/api/cms/cmsNavigation/index.ts
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsNavigation, CmsNavigationParam } from './model';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询网站导航记录表
|
||||||
|
*/
|
||||||
|
export async function pageCmsNavigation(params: CmsNavigationParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsNavigation>>>(
|
||||||
|
'/cms/cms-navigation/page',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询网站导航记录表列表
|
||||||
|
*/
|
||||||
|
export async function listCmsNavigation(params?: CmsNavigationParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsNavigation[]>>(
|
||||||
|
'/cms/cms-navigation',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询导航列表(树形结构)
|
||||||
|
*/
|
||||||
|
export async function treeNavigation(params?: CmsNavigationParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsNavigation[]>>(
|
||||||
|
'/cms/cms-navigation/tree',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 添加网站导航记录表
|
||||||
|
*/
|
||||||
|
export async function addCmsNavigation(data: CmsNavigation) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-navigation',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改网站导航记录表
|
||||||
|
*/
|
||||||
|
export async function updateCmsNavigation(data: CmsNavigation) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-navigation',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除网站导航记录表
|
||||||
|
*/
|
||||||
|
export async function removeCmsNavigation(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-navigation/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除网站导航记录表
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsNavigation(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-navigation/batch',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询网站导航记录表
|
||||||
|
*/
|
||||||
|
export async function getCmsNavigation(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsNavigation>>(
|
||||||
|
'/cms/cms-navigation/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getNavigationByPath(params: CmsNavigationParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsNavigation>>(
|
||||||
|
'/cms/cms-navigation/getNavigationByPath',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据code查询导航
|
||||||
|
*/
|
||||||
|
export async function getByCode(code: string) {
|
||||||
|
const res = await request.get<ApiResult<CmsNavigation>>(
|
||||||
|
'/cms/cms-navigation/getByCode/' + code
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
117
src_bak/api/cms/cmsNavigation/model/index.ts
Normal file
117
src_bak/api/cms/cmsNavigation/model/index.ts
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
import type {PageParam} from '@/api/index';
|
||||||
|
import type {CmsDesign} from "@/api/cms/cmsDesign/model";
|
||||||
|
import type {CmsModel} from "@/api/cms/cmsModel/model";
|
||||||
|
import {CmsArticle} from "@/api/cms/cmsArticle/model";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 网站导航记录表
|
||||||
|
*/
|
||||||
|
export interface CmsNavigation {
|
||||||
|
// ID
|
||||||
|
navigationId?: number;
|
||||||
|
// 上级id, 0是顶级
|
||||||
|
parentId?: number;
|
||||||
|
// 菜单名称
|
||||||
|
title?: string;
|
||||||
|
// 模型
|
||||||
|
model?: string;
|
||||||
|
// 标识
|
||||||
|
code?: string;
|
||||||
|
// 菜单路由地址
|
||||||
|
path?: string;
|
||||||
|
// 菜单组件地址, 目录可为空
|
||||||
|
component?: string;
|
||||||
|
// 组件路径
|
||||||
|
componentPath?: string;
|
||||||
|
// 打开位置
|
||||||
|
target?: string;
|
||||||
|
// 菜单图标
|
||||||
|
icon?: string;
|
||||||
|
// banner图片
|
||||||
|
banner?: string;
|
||||||
|
// 图标颜色
|
||||||
|
color?: string;
|
||||||
|
// 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)
|
||||||
|
hide?: number;
|
||||||
|
// 可见类型 0所有人 1登录可见 2密码可见
|
||||||
|
permission?: number;
|
||||||
|
// 访问密码
|
||||||
|
password?: string;
|
||||||
|
// 位置 0不限 1顶部 2底部
|
||||||
|
position?: number;
|
||||||
|
// 仅在顶部显示
|
||||||
|
top?: number;
|
||||||
|
// 仅在底部显示
|
||||||
|
bottom?: number;
|
||||||
|
// 菜单侧栏选中的path
|
||||||
|
active?: string;
|
||||||
|
// 其它路由元信息
|
||||||
|
meta?: string;
|
||||||
|
// css样式
|
||||||
|
style?: string;
|
||||||
|
// 父级栏目路由
|
||||||
|
parentPath?: string;
|
||||||
|
// 父级栏目名称
|
||||||
|
parentName?: string;
|
||||||
|
// 模型名称
|
||||||
|
modelName?: string;
|
||||||
|
// 类型(模型)
|
||||||
|
type?: string;
|
||||||
|
// 绑定的页面(已废弃)
|
||||||
|
pageId?: number;
|
||||||
|
// 项目ID
|
||||||
|
itemId?: number;
|
||||||
|
// 是否微信小程序菜单
|
||||||
|
isMpWeixin?: string;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 设为首页
|
||||||
|
home?: number;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 状态, 0正常, 1冻结
|
||||||
|
status?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 父级栏目
|
||||||
|
parent?: CmsNavigation;
|
||||||
|
// 子级栏目
|
||||||
|
children?: CmsNavigation[];
|
||||||
|
// 模型信息
|
||||||
|
modelInfo?: CmsModel;
|
||||||
|
// 栏目名称
|
||||||
|
categoryName?: string;
|
||||||
|
// 是否禁用
|
||||||
|
disabled?: boolean;
|
||||||
|
// 链接地址
|
||||||
|
design?: CmsDesign;
|
||||||
|
// 子级数量
|
||||||
|
childHeight?: number,
|
||||||
|
// 是否展开
|
||||||
|
showChild?: boolean
|
||||||
|
// 布局
|
||||||
|
layout?: any;
|
||||||
|
// 标题
|
||||||
|
label?: string;
|
||||||
|
// 值
|
||||||
|
value?: number;
|
||||||
|
// 文章列表
|
||||||
|
articles?: CmsArticle[];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 网站导航记录表搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsNavigationParam extends PageParam {
|
||||||
|
navigationId?: number;
|
||||||
|
parentId?: number;
|
||||||
|
hide?: number;
|
||||||
|
model?: string;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsOrder/index.ts
Normal file
106
src_bak/api/cms/cmsOrder/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsOrder, CmsOrderParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询订单
|
||||||
|
*/
|
||||||
|
export async function pageCmsOrder(params: CmsOrderParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsOrder>>>(
|
||||||
|
'/cms/cms-order/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询订单列表
|
||||||
|
*/
|
||||||
|
export async function listCmsOrder(params?: CmsOrderParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsOrder[]>>(
|
||||||
|
'/cms/cms-order',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加订单
|
||||||
|
*/
|
||||||
|
export async function addCmsOrder(data: CmsOrder) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-order',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改订单
|
||||||
|
*/
|
||||||
|
export async function updateCmsOrder(data: CmsOrder) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-order',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除订单
|
||||||
|
*/
|
||||||
|
export async function removeCmsOrder(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-order/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除订单
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsOrder(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-order/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询订单
|
||||||
|
*/
|
||||||
|
export async function getCmsOrder(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsOrder>>(
|
||||||
|
'/cms/cms-order/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
69
src_bak/api/cms/cmsOrder/model/index.ts
Normal file
69
src_bak/api/cms/cmsOrder/model/index.ts
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
import type { PageParam } from '@/api/index';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单
|
||||||
|
*/
|
||||||
|
export interface CmsOrder {
|
||||||
|
// 订单号
|
||||||
|
orderId?: number;
|
||||||
|
// 关联模型
|
||||||
|
model?: string;
|
||||||
|
// 订单标题
|
||||||
|
title?: string;
|
||||||
|
// 订单编号
|
||||||
|
orderNo?: string;
|
||||||
|
// 订单类型,0商城 1询价 2留言
|
||||||
|
type?: number;
|
||||||
|
// 关联文章ID
|
||||||
|
articleId?: number;
|
||||||
|
// 真实姓名
|
||||||
|
realName?: string;
|
||||||
|
// 手机号码
|
||||||
|
phone?: string;
|
||||||
|
// 电子邮箱
|
||||||
|
email?: string;
|
||||||
|
// 收货地址
|
||||||
|
address?: string;
|
||||||
|
// 订单内容
|
||||||
|
content?: string;
|
||||||
|
// 订单总额
|
||||||
|
totalPrice?: string;
|
||||||
|
// 实际付款
|
||||||
|
payPrice?: string;
|
||||||
|
// 报价询价
|
||||||
|
price?: string;
|
||||||
|
// 购买数量
|
||||||
|
totalNum?: number;
|
||||||
|
// 二维码地址,保存订单号,支付成功后才生成
|
||||||
|
qrcode?: string;
|
||||||
|
// 下单渠道,0网站 1小程序 2其他
|
||||||
|
channel?: number;
|
||||||
|
// 过期时间
|
||||||
|
expirationTime?: string;
|
||||||
|
// 订单是否已结算(0未结算 1已结算)
|
||||||
|
isSettled?: number;
|
||||||
|
// 用户id
|
||||||
|
userId?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 排序号
|
||||||
|
sortNumber?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 图像验证码
|
||||||
|
code?: string;
|
||||||
|
// 图像验证码内容
|
||||||
|
text?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsOrderParam extends PageParam {
|
||||||
|
orderId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsSpec/index.ts
Normal file
106
src_bak/api/cms/cmsSpec/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsSpec, CmsSpecParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询规格
|
||||||
|
*/
|
||||||
|
export async function pageCmsSpec(params: CmsSpecParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsSpec>>>(
|
||||||
|
'/cms/cms-spec/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询规格列表
|
||||||
|
*/
|
||||||
|
export async function listCmsSpec(params?: CmsSpecParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsSpec[]>>(
|
||||||
|
'/cms/cms-spec',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加规格
|
||||||
|
*/
|
||||||
|
export async function addCmsSpec(data: CmsSpec) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-spec',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改规格
|
||||||
|
*/
|
||||||
|
export async function updateCmsSpec(data: CmsSpec) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-spec',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除规格
|
||||||
|
*/
|
||||||
|
export async function removeCmsSpec(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-spec/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除规格
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsSpec(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-spec/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询规格
|
||||||
|
*/
|
||||||
|
export async function getCmsSpec(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsSpec>>(
|
||||||
|
'/cms/cms-spec/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
35
src_bak/api/cms/cmsSpec/model/index.ts
Normal file
35
src_bak/api/cms/cmsSpec/model/index.ts
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 规格
|
||||||
|
*/
|
||||||
|
export interface CmsSpec {
|
||||||
|
// 规格ID
|
||||||
|
specId?: number;
|
||||||
|
// 规格名称
|
||||||
|
specName?: string;
|
||||||
|
// 规格值
|
||||||
|
specValue?: string;
|
||||||
|
// 创建用户
|
||||||
|
userId?: number;
|
||||||
|
// 更新者
|
||||||
|
updater?: number;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 状态, 0正常, 1待修,2异常已修,3异常未修
|
||||||
|
status?: number;
|
||||||
|
// 排序号
|
||||||
|
sortNumber?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 规格搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsSpecParam extends PageParam {
|
||||||
|
specId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
106
src_bak/api/cms/cmsSpecValue/index.ts
Normal file
106
src_bak/api/cms/cmsSpecValue/index.ts
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsSpecValue, CmsSpecValueParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询规格值
|
||||||
|
*/
|
||||||
|
export async function pageCmsSpecValue(params: CmsSpecValueParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsSpecValue>>>(
|
||||||
|
'/cms/cms-spec-value/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询规格值列表
|
||||||
|
*/
|
||||||
|
export async function listCmsSpecValue(params?: CmsSpecValueParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsSpecValue[]>>(
|
||||||
|
'/cms/cms-spec-value',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加规格值
|
||||||
|
*/
|
||||||
|
export async function addCmsSpecValue(data: CmsSpecValue) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-spec-value',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改规格值
|
||||||
|
*/
|
||||||
|
export async function updateCmsSpecValue(data: CmsSpecValue) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-spec-value',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除规格值
|
||||||
|
*/
|
||||||
|
export async function removeCmsSpecValue(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-spec-value/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除规格值
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsSpecValue(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-spec-value/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询规格值
|
||||||
|
*/
|
||||||
|
export async function getCmsSpecValue(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsSpecValue>>(
|
||||||
|
'/cms/cms-spec-value/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
29
src_bak/api/cms/cmsSpecValue/model/index.ts
Normal file
29
src_bak/api/cms/cmsSpecValue/model/index.ts
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 规格值
|
||||||
|
*/
|
||||||
|
export interface CmsSpecValue {
|
||||||
|
// 规格值ID
|
||||||
|
specValueId?: number;
|
||||||
|
// 规格组ID
|
||||||
|
specId?: number;
|
||||||
|
// 规格值
|
||||||
|
specValue?: string;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 排序号
|
||||||
|
sortNumber?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 规格值搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsSpecValueParam extends PageParam {
|
||||||
|
specValueId?: number;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
147
src_bak/api/cms/cmsWebsite/index.ts
Normal file
147
src_bak/api/cms/cmsWebsite/index.ts
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { CmsWebsite, CmsWebsiteParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询网站信息记录表
|
||||||
|
*/
|
||||||
|
export async function pageCmsWebsite(params: CmsWebsiteParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsWebsite>>>(
|
||||||
|
'/cms/cms-website/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询网站
|
||||||
|
*/
|
||||||
|
export async function getCmsWebsiteAll(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsWebsite>>(
|
||||||
|
'/cms/cms-website/getAll/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询网站信息记录表列表
|
||||||
|
*/
|
||||||
|
export async function listCmsWebsite(params?: CmsWebsiteParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsWebsite[]>>(
|
||||||
|
'/cms/cms-website',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加网站信息记录表
|
||||||
|
*/
|
||||||
|
export async function addCmsWebsite(data: CmsWebsite) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-website',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改网站信息记录表
|
||||||
|
*/
|
||||||
|
export async function updateCmsWebsite(data: CmsWebsite) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-website',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除网站信息记录表
|
||||||
|
*/
|
||||||
|
export async function removeCmsWebsite(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-website/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除网站信息记录表
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsWebsite(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-website/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询网站信息记录表
|
||||||
|
*/
|
||||||
|
export async function getCmsWebsite(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsWebsite>>(
|
||||||
|
'/cms/cms-website/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清除缓存
|
||||||
|
*/
|
||||||
|
export async function removeSiteInfoCache(key?: string) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-website/clearSiteInfo/' + key
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询网站信息记录表
|
||||||
|
* @param params
|
||||||
|
*/
|
||||||
|
export async function pageCmsWebsiteAll(params: CmsWebsiteParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsWebsite>>>(
|
||||||
|
'/cms/cms-website/pageAll',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
138
src_bak/api/cms/cmsWebsite/model/index.ts
Normal file
138
src_bak/api/cms/cmsWebsite/model/index.ts
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
import type { PageParam } from '@/api/index';
|
||||||
|
import type {CmsNavigation} from "@/api/cms/cmsNavigation/model";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 网站信息记录表
|
||||||
|
*/
|
||||||
|
export interface CmsWebsite {
|
||||||
|
// 站点ID
|
||||||
|
websiteId?: number;
|
||||||
|
// 网站名称
|
||||||
|
websiteName?: string;
|
||||||
|
// 网站标识
|
||||||
|
websiteCode?: string;
|
||||||
|
// 网站LOGO
|
||||||
|
websiteIcon?: string;
|
||||||
|
// 网站LOGO
|
||||||
|
websiteLogo?: string;
|
||||||
|
// 网站LOGO(深色模式)
|
||||||
|
websiteDarkLogo?: string;
|
||||||
|
// 网站类型
|
||||||
|
websiteType?: string;
|
||||||
|
// 网站关键词
|
||||||
|
keywords?: string;
|
||||||
|
// 域名前缀
|
||||||
|
prefix?: string;
|
||||||
|
// 绑定域名
|
||||||
|
domain?: string;
|
||||||
|
// 全局样式
|
||||||
|
style?: string;
|
||||||
|
// 后台管理地址
|
||||||
|
adminUrl?: string;
|
||||||
|
// 应用版本 10免费版 20专业版 30永久授权
|
||||||
|
version?: number;
|
||||||
|
// 服务到期时间
|
||||||
|
expirationTime?: string;
|
||||||
|
// 模版ID
|
||||||
|
templateId?: number;
|
||||||
|
// 行业类型(父级)
|
||||||
|
industryParent?: string;
|
||||||
|
// 行业类型(子级)
|
||||||
|
industryChild?: string;
|
||||||
|
// 企业ID
|
||||||
|
companyId?: number;
|
||||||
|
// 所在国家
|
||||||
|
country?: string;
|
||||||
|
// 所在省份
|
||||||
|
province?: string;
|
||||||
|
// 所在城市
|
||||||
|
city?: string;
|
||||||
|
// 所在辖区
|
||||||
|
region?: string;
|
||||||
|
// 经度
|
||||||
|
longitude?: string;
|
||||||
|
// 纬度
|
||||||
|
latitude?: string;
|
||||||
|
// 街道地址
|
||||||
|
address?: string;
|
||||||
|
// 联系电话
|
||||||
|
phone?: string;
|
||||||
|
// 电子邮箱
|
||||||
|
email?: string;
|
||||||
|
// ICP备案号
|
||||||
|
icpNo?: string;
|
||||||
|
// 公安备案
|
||||||
|
policeNo?: string;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// 是否推荐
|
||||||
|
recommend?: number;
|
||||||
|
// 运行状态
|
||||||
|
running?: number;
|
||||||
|
// 状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停
|
||||||
|
status?: number;
|
||||||
|
// 维护说明
|
||||||
|
statusText?: string;
|
||||||
|
// 关闭说明
|
||||||
|
statusClose?: string;
|
||||||
|
// 状态图标
|
||||||
|
statusIcon?: string;
|
||||||
|
// 全局样式
|
||||||
|
styles?: string;
|
||||||
|
// 排序号
|
||||||
|
sortNumber?: number;
|
||||||
|
// 用户ID
|
||||||
|
userId?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
// 修改时间
|
||||||
|
updateTime?: string;
|
||||||
|
// 网站配置
|
||||||
|
config?: any;
|
||||||
|
topNavs?: CmsNavigation[];
|
||||||
|
bottomNavs?: CmsNavigation[];
|
||||||
|
loginUser?: any;
|
||||||
|
search?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export interface AppInfo {
|
||||||
|
appId?: number;
|
||||||
|
appName?: string;
|
||||||
|
description?: string;
|
||||||
|
keywords?: string;
|
||||||
|
appCode?: string;
|
||||||
|
mpQrCode?: string;
|
||||||
|
title?: string;
|
||||||
|
logo?: string;
|
||||||
|
icon?: string;
|
||||||
|
domain?: string;
|
||||||
|
running?: number;
|
||||||
|
version?: number;
|
||||||
|
expirationTime?: string;
|
||||||
|
expired?: boolean;
|
||||||
|
expiredDays?: number;
|
||||||
|
soon?: number;
|
||||||
|
statusIcon?: string;
|
||||||
|
statusText?: string;
|
||||||
|
config?: Object;
|
||||||
|
serverTime?: Object;
|
||||||
|
topNavs?: CmsNavigation[];
|
||||||
|
bottomNavs?: CmsNavigation[];
|
||||||
|
setting?: Object;
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 网站信息记录表搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsWebsiteParam extends PageParam {
|
||||||
|
websiteId?: number;
|
||||||
|
status?: number;
|
||||||
|
phone?: string;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
129
src_bak/api/cms/cmsWebsiteField/index.ts
Normal file
129
src_bak/api/cms/cmsWebsiteField/index.ts
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type {CmsWebsiteField, CmsWebsiteFieldParam, Config} from './model';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询应用参数
|
||||||
|
*/
|
||||||
|
export async function pageCmsWebsiteField(params: CmsWebsiteFieldParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<CmsWebsiteField>>>(
|
||||||
|
'/cms/cms-website-field/page',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询应用参数列表
|
||||||
|
*/
|
||||||
|
export async function listCmsWebsiteField(params?: CmsWebsiteFieldParam) {
|
||||||
|
const res = await request.get<ApiResult<CmsWebsiteField[]>>(
|
||||||
|
'/cms/cms-website-field',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加应用参数
|
||||||
|
*/
|
||||||
|
export async function addCmsWebsiteField(data: CmsWebsiteField) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-website-field',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改应用参数
|
||||||
|
*/
|
||||||
|
export async function updateCmsWebsiteField(data: CmsWebsiteField) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-website-field',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除应用参数
|
||||||
|
*/
|
||||||
|
export async function removeCmsWebsiteField(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-website-field/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除应用参数
|
||||||
|
*/
|
||||||
|
export async function removeBatchCmsWebsiteField(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/cms-website-field/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据id查询应用参数
|
||||||
|
*/
|
||||||
|
export async function getCmsWebsiteField(id: number) {
|
||||||
|
const res = await request.get<ApiResult<CmsWebsiteField>>(
|
||||||
|
'/cms/cms-website-field/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 恢复项目参数
|
||||||
|
*/
|
||||||
|
export async function undeleteWebsiteField(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/cms/website-field/undelete/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目参数列表
|
||||||
|
*/
|
||||||
|
export async function configWebsiteField(params?: CmsWebsiteFieldParam) {
|
||||||
|
const res = await request.get<ApiResult<Config>>(
|
||||||
|
'/cms/cms-website-field/config',
|
||||||
|
params
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
63
src_bak/api/cms/cmsWebsiteField/model/index.ts
Normal file
63
src_bak/api/cms/cmsWebsiteField/model/index.ts
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
import type { PageParam } from '@/api/index';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用参数
|
||||||
|
*/
|
||||||
|
export interface CmsWebsiteField {
|
||||||
|
// 自增ID
|
||||||
|
id?: number;
|
||||||
|
// 类型,0文本 1图片 2其他
|
||||||
|
type?: number;
|
||||||
|
// 名称
|
||||||
|
name?: string;
|
||||||
|
// 默认值
|
||||||
|
defaultValue?: string;
|
||||||
|
// 可修改的值 [on|off]
|
||||||
|
modifyRange?: string;
|
||||||
|
// 备注
|
||||||
|
comments?: string;
|
||||||
|
// css样式
|
||||||
|
style?: string;
|
||||||
|
// 名称
|
||||||
|
value?: string;
|
||||||
|
// 排序(数字越小越靠前)
|
||||||
|
sortNumber?: number;
|
||||||
|
// 是否删除, 0否, 1是
|
||||||
|
deleted?: number;
|
||||||
|
// 租户id
|
||||||
|
tenantId?: number;
|
||||||
|
// 创建时间
|
||||||
|
createTime?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 应用参数搜索条件
|
||||||
|
*/
|
||||||
|
export interface CmsWebsiteFieldParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
name?: string;
|
||||||
|
keywords?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Config {
|
||||||
|
siteName?: string;
|
||||||
|
siteLogo?: string;
|
||||||
|
domain?: string;
|
||||||
|
icpNo?: string;
|
||||||
|
copyright?: string;
|
||||||
|
loginBgImg?: string;
|
||||||
|
address?: string;
|
||||||
|
tel?: string;
|
||||||
|
theme?: string;
|
||||||
|
workDay?: string;
|
||||||
|
kefu2?: string;
|
||||||
|
kefu1?: string;
|
||||||
|
email?: string;
|
||||||
|
loginTitle?: string;
|
||||||
|
sysLogo?: string;
|
||||||
|
vipText?: string;
|
||||||
|
vipComments?: string;
|
||||||
|
deliveryText?: string;
|
||||||
|
guaranteeText?: string;
|
||||||
|
openComments?: string;
|
||||||
|
}
|
||||||
113
src_bak/api/cms/link/index.ts
Normal file
113
src_bak/api/cms/link/index.ts
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
|
import type { Link, LinkParam } from './model';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询链接
|
||||||
|
*/
|
||||||
|
export async function pageLink(params: LinkParam) {
|
||||||
|
const res = await request.get<ApiResult<PageResult<Link>>>(
|
||||||
|
'/oa/link/page',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询链接列表
|
||||||
|
*/
|
||||||
|
export async function listLink(params?: LinkParam) {
|
||||||
|
const res = await request.get<ApiResult<Link[]>>(
|
||||||
|
'/oa/link',
|
||||||
|
{
|
||||||
|
params
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0 && res.data) {
|
||||||
|
return res.data;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加链接
|
||||||
|
*/
|
||||||
|
export async function addLink(data: Link) {
|
||||||
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
|
'/oa/link',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改链接
|
||||||
|
*/
|
||||||
|
export async function updateLink(data: Link) {
|
||||||
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
|
'/oa/link',
|
||||||
|
data
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除链接
|
||||||
|
*/
|
||||||
|
export async function removeLink(id?: number) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/oa/link/' + id
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除链接
|
||||||
|
*/
|
||||||
|
export async function removeBatchLink(data: (number | undefined)[]) {
|
||||||
|
const res = await request.del<ApiResult<unknown>>(
|
||||||
|
'/oa/link/batch',
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查IP是否存在
|
||||||
|
*/
|
||||||
|
export async function checkExistence(
|
||||||
|
field: string,
|
||||||
|
value: string,
|
||||||
|
id?: number
|
||||||
|
) {
|
||||||
|
const res = await request.get<ApiResult<unknown>>(
|
||||||
|
'/oa/link/existence',
|
||||||
|
{
|
||||||
|
params: { field, value, id }
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if (res.code === 0) {
|
||||||
|
return res.message;
|
||||||
|
}
|
||||||
|
return Promise.reject(new Error(res.message));
|
||||||
|
}
|
||||||
31
src_bak/api/cms/link/model/index.ts
Normal file
31
src_bak/api/cms/link/model/index.ts
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
import type { PageParam } from '@/api/index';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 链接
|
||||||
|
*/
|
||||||
|
export interface Link {
|
||||||
|
id?: number;
|
||||||
|
name?: string;
|
||||||
|
icon?: string;
|
||||||
|
url?: string;
|
||||||
|
linkType?: string;
|
||||||
|
appId?: number;
|
||||||
|
categoryId?: number;
|
||||||
|
userId?: number;
|
||||||
|
comments?: string;
|
||||||
|
recommend?: number;
|
||||||
|
sortNumber?: number;
|
||||||
|
deleted?: number;
|
||||||
|
status?: number;
|
||||||
|
createTime?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 链接搜索条件
|
||||||
|
*/
|
||||||
|
export interface LinkParam extends PageParam {
|
||||||
|
id?: number;
|
||||||
|
linkType?: string;
|
||||||
|
categoryId?: number;
|
||||||
|
name?: string;
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user