From d61e683d412bafffd0005af7b974eec6d29e96d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Mon, 17 Feb 2025 15:25:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E8=80=85=E4=B8=AD=E5=BF=83=E5=8A=9F=E8=83=BD=E3=80=81md?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8=E7=AD=89=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 14 + .env.development | 4 +- .env.production | 2 +- api/cms/cmsOrder/model/index.ts | 5 + api/cms/cmsWebsite/index.ts | 17 +- api/cms/cmsWebsite/model/index.ts | 16 + api/layout/index.ts | 2 +- components/AppFooter/SubMenu/SubMenu.vue | 2 +- components/AppHeader/Login/Login.vue | 4 +- components/ByteMdEditor/index.vue | 109 ++ components/CompanyList.vue | 98 - components/MHeader.vue | 17 +- components/SiteList.vue | 83 + components/TinymceEditor/index.vue | 242 +++ components/TinymceEditor/util.ts | 248 +++ config/index.ts | 6 +- package-lock.json | 935 +++++++++- package.json | 1 + pages/developer/[id].vue | 466 +++++ pages/developer/components/AppInfo.vue | 82 + pages/developer/components/Comments.vue | 195 ++ pages/developer/components/PageBanner.vue | 102 + pages/developer/components/SearchBar.vue | 45 + pages/developer/components/Statistic.vue | 74 + pages/developer/index.vue | 98 + pages/index.vue | 2 +- pages/m/order/test.vue | 292 +++ pages/market/[id].vue | 82 +- pages/market/components/AppInfo.vue | 55 +- pages/market/components/Comments.vue | 2 +- pages/market/components/PageBanner.vue | 1 - pages/market/index.vue | 98 +- pages/market/user/[id].vue | 223 +++ pages/order/[id].vue | 50 +- pages/user/components/Order.vue | 2 +- pages/user/index.vue | 81 +- pages/user/modify.vue | 177 ++ pnpm-lock.yaml | 1647 ++++++++++++++--- ...kJyvf_!!6000000001499-55-tps-70-70 (1).svg | 1 + utils/editor.ts | 47 + 40 files changed, 5036 insertions(+), 591 deletions(-) create mode 100644 .editorconfig create mode 100644 components/ByteMdEditor/index.vue delete mode 100644 components/CompanyList.vue create mode 100644 components/SiteList.vue create mode 100644 components/TinymceEditor/index.vue create mode 100644 components/TinymceEditor/util.ts create mode 100644 pages/developer/[id].vue create mode 100644 pages/developer/components/AppInfo.vue create mode 100644 pages/developer/components/Comments.vue create mode 100644 pages/developer/components/PageBanner.vue create mode 100644 pages/developer/components/SearchBar.vue create mode 100644 pages/developer/components/Statistic.vue create mode 100644 pages/developer/index.vue create mode 100644 pages/m/order/test.vue create mode 100644 pages/market/user/[id].vue create mode 100644 pages/user/modify.vue create mode 100644 public/assets/images/O1CN01yz6fEl1MwaRtkJyvf_!!6000000001499-55-tps-70-70 (1).svg create mode 100644 utils/editor.ts diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3454886 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/.env.development b/.env.development index ec1047f..2428309 100644 --- a/.env.development +++ b/.env.development @@ -1,3 +1,3 @@ # 应用模块接口 -#API_BASE=http://127.0.0.1:9001/api -API_BASE=https://cms-api.websoft.top/api +API_BASE=http://127.0.0.1:9001/api +#API_BASE=https://cms-api.websoft.top/api diff --git a/.env.production b/.env.production index 3ff109c..728c125 100644 --- a/.env.production +++ b/.env.production @@ -1,4 +1,4 @@ # 基础模块 -VITE_SERVER_URL=https://server.gxwebsoft.com/api +VITE_SERVER_URL=https://common-api.websoft.top/api # 应用模块 API_BASE=https://cms-api.websoft.top/api diff --git a/api/cms/cmsOrder/model/index.ts b/api/cms/cmsOrder/model/index.ts index 122f82f..ce7c809 100644 --- a/api/cms/cmsOrder/model/index.ts +++ b/api/cms/cmsOrder/model/index.ts @@ -16,6 +16,8 @@ export interface CmsOrder { type?: number; // 关联文章ID articleId?: number; + // 关联网站ID + websiteId?: number; // 真实姓名 realName?: string; // 手机号码 @@ -46,6 +48,8 @@ export interface CmsOrder { userId?: number; // 备注 comments?: string; + // 附件 + files?: string; // 排序号 sortNumber?: number; // 是否删除, 0否, 1是 @@ -65,5 +69,6 @@ export interface CmsOrder { */ export interface CmsOrderParam extends PageParam { orderId?: number; + websiteId?: number; keywords?: string; } diff --git a/api/cms/cmsWebsite/index.ts b/api/cms/cmsWebsite/index.ts index d356396..146604d 100644 --- a/api/cms/cmsWebsite/index.ts +++ b/api/cms/cmsWebsite/index.ts @@ -1,6 +1,7 @@ import request from '~/utils/request'; import type { ApiResult, PageResult } from '@/api'; import type { CmsWebsite, CmsWebsiteParam } from './model'; +import {COMMON_API_URL} from "~/config"; /** @@ -63,6 +64,20 @@ export async function updateCmsWebsite(data: CmsWebsite) { return Promise.reject(new Error(res.message)); } +/** + * 修改网站信息记录表 + */ +export async function updateCmsWebsiteAll(data: CmsWebsite) { + const res = await request.put>( + 'http://127.0.0.1:9002/api/cms/cms-website/updateAll', + data + ); + if (res.code === 0) { + return res.message; + } + return Promise.reject(new Error(res.message)); +} + /** * 删除网站信息记录表 */ @@ -97,7 +112,7 @@ export async function removeBatchCmsWebsite(data: (number | undefined)[]) { */ export async function getCmsWebsiteAll(id: number) { const res = await request.get>( - '/cms/cms-website/all/' + id + '/cms/cms-website/getAll/' + id ); if (res.code === 0 && res.data) { return res.data; diff --git a/api/cms/cmsWebsite/model/index.ts b/api/cms/cmsWebsite/model/index.ts index e825dfb..ff2a4bb 100644 --- a/api/cms/cmsWebsite/model/index.ts +++ b/api/cms/cmsWebsite/model/index.ts @@ -43,6 +43,12 @@ export interface CmsWebsite { adminUrl?: string; // 应用版本 10免费版 20专业版 30永久授权 version?: number; + // 应用价格 + price?: string, + // 交付方式 + deliveryMethod: number, + // 计费方式 + chargingMethod: number, // 服务到期时间 expirationTime?: string; // 模版ID @@ -77,8 +83,14 @@ export interface CmsWebsite { policeNo?: string; // 备注 comments?: string; + // 详细介绍 + content?: any; // 是否推荐 recommend?: number; + // 是否官方 + official?: boolean; + // 是否显示在插件市场 + market?: boolean; // 运行状态 running?: number; // 状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停 @@ -117,5 +129,9 @@ export interface CmsWebsiteParam extends PageParam { websiteId?: number; status?: number; recommend?: number; + official?: boolean; + market?: boolean; + websiteType?: string; + userId?: number; keywords?: string; } diff --git a/api/layout/index.ts b/api/layout/index.ts index 87b2285..f3948aa 100644 --- a/api/layout/index.ts +++ b/api/layout/index.ts @@ -26,7 +26,7 @@ export async function getSiteInfo(params: CmsWebsiteParam) { */ export async function getUserInfo(): Promise { const config = useRuntimeConfig(); - const res = await request.get>(config.public.apiServer + '/auth/user',{ + const res = await request.get>(COMMON_API_URL + '/auth/user',{ headers: { TenantId: `${localStorage.getItem('ServerTenantId')}` } diff --git a/components/AppFooter/SubMenu/SubMenu.vue b/components/AppFooter/SubMenu/SubMenu.vue index 8f734ad..b42c423 100644 --- a/components/AppFooter/SubMenu/SubMenu.vue +++ b/components/AppFooter/SubMenu/SubMenu.vue @@ -12,7 +12,7 @@ const config = useConfigInfo();
{{ item.title }}
diff --git a/components/AppHeader/Login/Login.vue b/components/AppHeader/Login/Login.vue index b7dccab..33a45a1 100644 --- a/components/AppHeader/Login/Login.vue +++ b/components/AppHeader/Login/Login.vue @@ -20,12 +20,12 @@ - {{ user?.tenantName }} + {{ user?.nickname }} + + diff --git a/pages/market/[id].vue b/pages/market/[id].vue index 2d5e2ed..9d72246 100644 --- a/pages/market/[id].vue +++ b/pages/market/[id].vue @@ -1,46 +1,43 @@ - diff --git a/pages/market/components/Comments.vue b/pages/market/components/Comments.vue index ac31439..9139709 100644 --- a/pages/market/components/Comments.vue +++ b/pages/market/components/Comments.vue @@ -15,7 +15,7 @@ status-icon > diff --git a/pages/market/index.vue b/pages/market/index.vue index 79839d1..07e9de5 100644 --- a/pages/market/index.vue +++ b/pages/market/index.vue @@ -8,26 +8,26 @@ - +
{{ item.websiteName }}
- {{ item.comments || '暂无描述' }} + + {{ id == item.websiteId ? item.domain : item.comments || '暂无描述' }} + 获取
- +
@@ -80,6 +82,7 @@ const i18n = useI18n(); const category = ref([]); const total = ref(0); const activeName = ref('2839'); +const id = ref(); // 获取状态 const page = usePage(); @@ -92,13 +95,45 @@ const where = reactive({ limit: 12, status: undefined, recommend: undefined, + market: true, + websiteType: undefined, categoryId: undefined, lang: undefined }); +const types = [ + { + value: '网站', + label: '网站', + }, + { + value: '小程序', + label: '小程序', + }, + { + value: 'MacOS', + label: 'MacOS', + }, + { + value: 'Windows', + label: 'Windows', + }, + { + value: 'App', + label: 'App', + }, +] + const goBack = () => { router.back(); } +const showDomain = (item: CmsWebsite) => { + id.value = Number(item.websiteId); +}; + +const hideDomain = () => { + id.value = 0; +}; // 加载页面数据 const reload = async () => { @@ -157,28 +192,11 @@ const handleClick = (tab: TabsPaneContext, event: Event) => { console.log(tab, event) } const value = ref('') -const options = [ - { - value: 'Option1', - label: 'Option1', - }, - { - value: 'Option2', - label: 'Option2', - }, - { - value: 'Option3', - label: 'Option3', - }, - { - value: 'Option4', - label: 'Option4', - }, - { - value: 'Option5', - label: 'Option5', - }, -] + +const onTypes = (value: string) => { + where.websiteType = value; + reload(); +} watch( () => route.params.id, @@ -200,3 +218,5 @@ watch( font-weight: 600; } + + diff --git a/pages/market/user/[id].vue b/pages/market/user/[id].vue new file mode 100644 index 0000000..32bc36e --- /dev/null +++ b/pages/market/user/[id].vue @@ -0,0 +1,223 @@ + + + + + diff --git a/pages/order/[id].vue b/pages/order/[id].vue index a459fda..2c3986c 100644 --- a/pages/order/[id].vue +++ b/pages/order/[id].vue @@ -13,32 +13,48 @@ - +
+ +
+ :value="item.websiteId" + > +
+ {{ item.websiteName }} + + {{ `${item.websiteCode}.websoft.top` }} + +
+
+ + + + + +
- + @@ -49,9 +65,9 @@ - - - + + + @@ -68,7 +84,7 @@
- +
@@ -123,6 +139,8 @@ const {form, resetFields} = useFormData({ type: undefined, // 关联项目ID,配合订单类型使用 articleId: undefined, + // 关联网站ID + websiteId: undefined, // 真实姓名 realName: undefined, // 手机号码 @@ -177,7 +195,7 @@ const rules = reactive>({ {required: true, message: '请输入联系人姓名', trigger: 'blur'}, ], content: [ - {required: true, message: '请输入留言内容', trigger: 'blur'}, + {required: true, message: '请输入您的开发需求', trigger: 'blur'}, ] }) @@ -196,11 +214,14 @@ const reload = async () => { layout.value.banner = data.banner; // 二级栏目分类 pageCmsWebsiteAll({ + official: true, + sort: 'websiteId', + order: 'asc' }).then(res => { siteList.value = res?.list || []; }) // 用户信息 - if(user.value){ + if (user.value) { form.realName = user.value.realName; form.phone = user.value.phone; form.email = user.value.email; @@ -215,6 +236,11 @@ const reload = async () => { }) } +const onWebsite = (item: CmsWebsite) => { + form.articleId = item.websiteId; + form.websiteId = item.websiteId; +} + // 提交表单 const submitForm = (formEl: FormInstance | undefined) => { if (!formEl) return diff --git a/pages/user/components/Order.vue b/pages/user/components/Order.vue index f5289e6..f227164 100644 --- a/pages/user/components/Order.vue +++ b/pages/user/components/Order.vue @@ -8,7 +8,7 @@ + 控制台 diff --git a/pages/user/index.vue b/pages/user/index.vue index a2b8e1e..f2eefb2 100644 --- a/pages/user/index.vue +++ b/pages/user/index.vue @@ -4,25 +4,35 @@ +