diff --git a/.env.development b/.env.development index df3cbfc..325e8cd 100644 --- a/.env.development +++ b/.env.development @@ -4,4 +4,4 @@ VITE_SERVER_URL=https://server.gxwebsoft.com/api #VITE_API_URL=https://modules.gxwebsoft.com/api #VITE_SERVER_URL=http://127.0.0.1:9091/api -VITE_API_URL=http://127.0.0.1:9099/api +VITE_API_URL=http://127.0.0.1:9090/api diff --git a/src/api/cms/mp/index.ts b/src/api/cms/mp/index.ts new file mode 100644 index 0000000..dd8c8ce --- /dev/null +++ b/src/api/cms/mp/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Mp, MpParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询小程序信息 + */ +export async function pageMp(params: MpParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/mp/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询小程序信息列表 + */ +export async function listMp(params?: MpParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/mp', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加小程序信息 + */ +export async function addMp(data: Mp) { + const res = await request.post>( + MODULES_API_URL + '/cms/mp', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改小程序信息 + */ +export async function updateMp(data: Mp) { + const res = await request.put>( + MODULES_API_URL + '/cms/mp', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除小程序信息 + */ +export async function removeMp(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/mp/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除小程序信息 + */ +export async function removeBatchMp(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/mp/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询小程序信息 + */ +export async function getMp(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/mp/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/mp/model/index.ts b/src/api/cms/mp/model/index.ts new file mode 100644 index 0000000..9e76f41 --- /dev/null +++ b/src/api/cms/mp/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序信息 + */ +export interface Mp { + // ID + mpId?: 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 MpParam extends PageParam { + mpId?: number; + keywords?: string; +} diff --git a/src/api/cms/mpAd/index.ts b/src/api/cms/mpAd/index.ts new file mode 100644 index 0000000..379b06e --- /dev/null +++ b/src/api/cms/mpAd/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { MpAd, MpAdParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询小程序广告位 + */ +export async function pageMpAd(params: MpAdParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/mp-ad/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询小程序广告位列表 + */ +export async function listMpAd(params?: MpAdParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/mp-ad', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加小程序广告位 + */ +export async function addMpAd(data: MpAd) { + const res = await request.post>( + MODULES_API_URL + '/cms/mp-ad', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改小程序广告位 + */ +export async function updateMpAd(data: MpAd) { + const res = await request.put>( + MODULES_API_URL + '/cms/mp-ad', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除小程序广告位 + */ +export async function removeMpAd(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/mp-ad/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除小程序广告位 + */ +export async function removeBatchMpAd(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/mp-ad/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询小程序广告位 + */ +export async function getMpAd(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/mp-ad/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/mpAd/model/index.ts b/src/api/cms/mpAd/model/index.ts new file mode 100644 index 0000000..5ef6a62 --- /dev/null +++ b/src/api/cms/mpAd/model/index.ts @@ -0,0 +1,45 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序广告位 + */ +export interface MpAd { + // ID + adId?: number; + // 页面ID + pageId?: number; + // 广告类型 + adType?: string; + // 广告位名称 + name?: string; + // 宽 + width?: string; + // 高 + height?: string; + // 广告图片 + images?: string; + // 路由/链接地址 + path?: string; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; +} + +/** + * 小程序广告位搜索条件 + */ +export interface MpAdParam extends PageParam { + adId?: number; + keywords?: string; +} diff --git a/src/api/cms/mpField/index.ts b/src/api/cms/mpField/index.ts new file mode 100644 index 0000000..8edb923 --- /dev/null +++ b/src/api/cms/mpField/index.ts @@ -0,0 +1,132 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { MpField, MpFieldParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询小程序配置 + */ +export async function pageMpField(params: MpFieldParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/mp-field/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询小程序配置列表 + */ +export async function listMpField(params?: MpFieldParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/mp-field', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加小程序配置 + */ +export async function addMpField(data: MpField) { + const res = await request.post>( + MODULES_API_URL + '/cms/mp-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改小程序配置 + */ +export async function updateMpField(data: MpField) { + const res = await request.put>( + MODULES_API_URL + '/cms/mp-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除小程序配置 + */ +export async function removeMpField(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/mp-field/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除小程序配置 + */ +export async function removeBatchMpField(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/mp-field/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询小程序配置 + */ +export async function getMpField(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/mp-field/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 清除缓存 + */ +export async function removeMpInfoCache(key?: string) { + const res = await request.delete>( + MODULES_API_URL + '/cms/mp-field/clearMpInfo/' + key + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 恢复项目参数 + */ +export async function undeleteMpField(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/mp-field/undelete/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/mpField/model/index.ts b/src/api/cms/mpField/model/index.ts new file mode 100644 index 0000000..91ebdff --- /dev/null +++ b/src/api/cms/mpField/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序配置 + */ +export interface MpField { + // 自增ID + id?: number; + // 类型,0文本 1图片 2其他 + type?: number; + // 名称 + name?: string; + // 备注 + comments?: string; + // 名称 + value?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; +} + +/** + * 小程序配置搜索条件 + */ +export interface MpFieldParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/views/cms/mp/components/mpEdit.vue b/src/views/cms/mp/components/mpEdit.vue new file mode 100644 index 0000000..826296b --- /dev/null +++ b/src/views/cms/mp/components/mpEdit.vue @@ -0,0 +1,316 @@ + + + + diff --git a/src/views/cms/mp/components/search.vue b/src/views/cms/mp/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/mp/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/mp/index.vue b/src/views/cms/mp/index.vue new file mode 100644 index 0000000..f73d994 --- /dev/null +++ b/src/views/cms/mp/index.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/views/cms/mpAd/components/mpAdEdit.vue b/src/views/cms/mpAd/components/mpAdEdit.vue new file mode 100644 index 0000000..d7fc550 --- /dev/null +++ b/src/views/cms/mpAd/components/mpAdEdit.vue @@ -0,0 +1,260 @@ + + + + diff --git a/src/views/cms/mpAd/components/search.vue b/src/views/cms/mpAd/components/search.vue new file mode 100644 index 0000000..5b12a68 --- /dev/null +++ b/src/views/cms/mpAd/components/search.vue @@ -0,0 +1,60 @@ + + + + diff --git a/src/views/cms/mpAd/index.vue b/src/views/cms/mpAd/index.vue new file mode 100644 index 0000000..0358270 --- /dev/null +++ b/src/views/cms/mpAd/index.vue @@ -0,0 +1,245 @@ + + + + + + + diff --git a/src/views/cms/mpDesign/components/mpMenuEdit.vue b/src/views/cms/mpDesign/components/mpMenuEdit.vue index 13c4fad..a6205ef 100644 --- a/src/views/cms/mpDesign/components/mpMenuEdit.vue +++ b/src/views/cms/mpDesign/components/mpMenuEdit.vue @@ -162,6 +162,14 @@ // 表单验证规则 const rules = reactive({ + parentId: [ + { + required: true, + type: 'number', + message: '请选择分组', + trigger: 'blur' + } + ], title: [ { required: true, diff --git a/src/views/cms/mpField/components/mp-field-edit.vue b/src/views/cms/mpField/components/mp-field-edit.vue new file mode 100644 index 0000000..792c7f0 --- /dev/null +++ b/src/views/cms/mpField/components/mp-field-edit.vue @@ -0,0 +1,202 @@ + + + + diff --git a/src/views/cms/mpField/components/mp-field-search.vue b/src/views/cms/mpField/components/mp-field-search.vue new file mode 100644 index 0000000..c72d354 --- /dev/null +++ b/src/views/cms/mpField/components/mp-field-search.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/views/cms/mpField/index.vue b/src/views/cms/mpField/index.vue new file mode 100644 index 0000000..fbdd64a --- /dev/null +++ b/src/views/cms/mpField/index.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/src/views/cms/mpPages/index.vue b/src/views/cms/mpPages/index.vue index 3efbe5b..93498fb 100644 --- a/src/views/cms/mpPages/index.vue +++ b/src/views/cms/mpPages/index.vue @@ -133,12 +133,9 @@ // 表格列配置 const columns = ref([ { - key: 'index', - width: 48, - align: 'center', - fixed: 'left', - hideInSetting: true, - customRender: ({ index }) => index + (tableRef.value?.tableIndex ?? 0) + title: 'ID', + dataIndex: 'id', + width: 80 }, { title: '页面名称', diff --git a/src/views/shop/goods/add/index.vue b/src/views/shop/goods/add/index.vue index b7f30e8..ef68010 100644 --- a/src/views/shop/goods/add/index.vue +++ b/src/views/shop/goods/add/index.vue @@ -682,6 +682,8 @@ }; const chooseGoodsCategory = (item,value) => { + console.log(item); + console.log(value); form.categoryId = value[1].value; form.categoryParent = value[0].label; form.categoryChildren = value[1].label;