Browse Source

改造配置文件

dev
科技小王子 2 months ago
parent
commit
3f7696ac50
  1. 2
      .env
  2. 11
      .env.development
  3. 3
      .env.production
  4. 142
      src/api/system/website/field/index.ts
  5. 65
      src/api/system/website/field/model/index.ts
  6. 169
      src/api/system/website/index.ts
  7. 63
      src/api/system/website/model/index.ts
  8. 72
      src/components/ChooseWebsiteField/index.vue
  9. 74
      src/components/SelectWebsiteField/components/select-data.vue
  10. 6
      src/config/setting.ts
  11. 2
      src/store/modules/chat.ts
  12. 2
      src/views/cms/cmsArticle/components/search.vue
  13. 31
      src/views/cms/cmsNavigation/index.vue

2
.env

@ -1,2 +1,2 @@
VITE_APP_NAME=webSoft
VITE_APP_NAME=WSADMIN
VITE_API_URL=/api VITE_API_URL=/api

11
.env.development

@ -1,10 +1,7 @@
VITE_APP_NAME=后台管理系统
VITE_SOCKET_URL=wss://server.websoft.top
VITE_SERVER_URL=https://server.websoft.top/api
VITE_API_URL=https://cms.websoft.top/api
VITE_APP_NAME=后台管理(开发环境)
VITE_API_URL=https://cms-api.websoft.top/api
#VITE_SOCKET_URL=ws://127.0.0.1:9191
#VITE_SERVER_URL=http://127.0.0.1:8000/api
#VITE_API_URL=http://127.0.0.1:9000/api #VITE_API_URL=http://127.0.0.1:9000/api
#/booking/bookingItem

3
.env.production

@ -1,4 +1 @@
VITE_APP_NAME=后台管理系统
VITE_SOCKET_URL=wss://server.websoft.top
VITE_SERVER_URL=https://server.websoft.top/api
VITE_API_URL=https://cms.websoft.top/api VITE_API_URL=https://cms.websoft.top/api

142
src/api/system/website/field/index.ts

@ -1,142 +0,0 @@
import request from '@/utils/request';
import type {ApiResult, PageResult} from '@/api';
import type {
CmsWebsiteField,
CmsWebsiteFieldParam
} from '@/api/cms/cmsWebsiteField/model';
import {COMMON_API_URL, SERVER_API_URL} from '@/config/setting';
/**
*
*/
export async function pageWebsiteField(params: CmsWebsiteFieldParam) {
const res = await request.get<ApiResult<PageResult<CmsWebsiteField>>>(
COMMON_API_URL + '/system/website-field/page',
{
params
}
);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function listWebsiteField(params?: CmsWebsiteFieldParam) {
const res = await request.get<ApiResult<CmsWebsiteField[]>>(
SERVER_API_URL + '/system/website-field',
{
params
}
);
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* id查询项目参数
*/
export async function getWebsiteField(id: number) {
const res = await request.get<ApiResult<CmsWebsiteField>>(
SERVER_API_URL + '/system/website-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 addWebsiteField(data: CmsWebsiteField) {
const res = await request.post<ApiResult<unknown>>(
SERVER_API_URL + '/system/website-field',
data
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function updateWebsiteField(data: CmsWebsiteField) {
const res = await request.put<ApiResult<unknown>>(
SERVER_API_URL + '/system/website-field',
data
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function removeWebsiteField(id?: number) {
const res = await request.delete<ApiResult<unknown>>(
SERVER_API_URL + '/system/website-field/' + id
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function removeBatchWebsiteField(data: (number | undefined)[]) {
const res = await request.delete<ApiResult<unknown>>(
SERVER_API_URL + '/system/website-field/batch',
{
data
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* IP是否存在
*/
export async function checkExistence(
field: string,
value: string,
id?: number
) {
const res = await request.get<ApiResult<unknown>>(
SERVER_API_URL + '/system/website-field/existence',
{
params: {field, value, id}
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function undeleteWebsiteField(id?: number) {
const res = await request.delete<ApiResult<unknown>>(
SERVER_API_URL + '/system/website-field/undelete/' + id
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

65
src/api/system/website/field/model/index.ts

@ -1,65 +0,0 @@
import type { PageParam } from '@/api';
/**
*
*/
export interface WebsiteField {
id?: number;
name?: string;
value?: string;
comments?: string;
userId?: number;
template?: string;
defaultValue?: string;
modifyRange?: string;
type?: number;
status?: any;
sortNumber?: any;
createTime?: string;
deleted?: number;
style?: string;
}
// 约定的网站参数名称
export interface WebsiteParam {
// 网站名称
site_logo?: string;
// 登录页面标题
login_name?: string;
// 登录页面的背景图片
login_bg_img?: string;
}
// 约定的小程序参数名称
export interface MpWeixinParam {
// 小程序LOGO
site_logo?: string;
// 我的页面顶部背景图片
mp_user_top?: string;
}
/**
*
*/
export interface WebsiteFieldParam extends PageParam {
id?: number;
userId?: number;
name?: string;
websiteId?: number;
}
export interface Config {
siteName?: string;
siteLogo?: string;
domain?: string;
icpNo?: string;
copyright?: string;
loginBgImg?: string;
address?: string;
tel?: string;
kefu2?: string;
kefu1?: string;
email?: string;
loginTitle?: string;
sysLogo?: string;
}

169
src/api/system/website/index.ts

@ -1,169 +0,0 @@
import request from '@/utils/request';
import type { ApiResult, PageResult } from '@/api';
import type { Website, WebsiteParam } from './model';
import { MODULES_API_URL } from '@/config/setting';
/**
*
*/
export async function getSiteInfo() {
const res = await request.get<ApiResult<Website>>(
MODULES_API_URL + '/cms/website/getSiteInfo'
);
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function removeSiteInfoCache(key?: string) {
const res = await request.delete<ApiResult<unknown>>(
MODULES_API_URL + '/cms/website/clearSiteInfo/' + key
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function pageWebsite(params: WebsiteParam) {
const res = await request.get<ApiResult<PageResult<Website>>>(
MODULES_API_URL + '/cms/website/page',
{
params
}
);
if (res.data.code === 0) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function listWebsite(params?: WebsiteParam) {
const res = await request.get<ApiResult<Website[]>>(
MODULES_API_URL + '/cms/website',
{
params
}
);
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function addWebsite(data: Website) {
const res = await request.post<ApiResult<unknown>>(
MODULES_API_URL + '/cms/website',
data
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function updateWebsite(data: Website) {
const res = await request.put<ApiResult<unknown>>(
MODULES_API_URL + '/cms/website',
data
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function removeWebsite(id?: number) {
const res = await request.delete<ApiResult<unknown>>(
MODULES_API_URL + '/cms/website/' + id
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function removeBatchWebsite(data: (number | undefined)[]) {
const res = await request.delete<ApiResult<unknown>>(
MODULES_API_URL + '/cms/website/batch',
{
data
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
*
*/
export async function updateWebsiteStatus(websiteId?: number, status?: number) {
const res = await request.put<ApiResult<unknown>>(
MODULES_API_URL + '/cms/website/status',
{
websiteId,
status
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}
/**
* id查询网站
*/
export async function getWebsite(id: number) {
const res = await request.get<ApiResult<Website>>(
MODULES_API_URL + '/cms/website/' + id
);
if (res.data.code === 0 && res.data.data) {
return res.data.data;
}
return Promise.reject(new Error(res.data.message));
}
/**
* IP是否存在
*/
export async function checkExistence(
field: string,
value: string,
id?: number
) {
const res = await request.get<ApiResult<unknown>>(
MODULES_API_URL + '/cms/website/existence',
{
params: { field, value, id }
}
);
if (res.data.code === 0) {
return res.data.message;
}
return Promise.reject(new Error(res.data.message));
}

63
src/api/system/website/model/index.ts

@ -1,63 +0,0 @@
import { WebsiteField } from '@/api/cms/website/field/model';
import { Navigation } from '@/api/cms/navigation/model';
import { Link } from '@/api/cms/link/model';
import { ArrangeCategory } from '@/api/cms/category/model';
import { PageParam } from '@/api';
/**
*
*/
export interface Website {
websiteId?: number;
websiteName?: string;
websiteCode?: string;
websiteIcon?: string;
websiteLogo?: string;
websiteDarkLogo?: string;
keywords?: string;
address?: string;
phone?: string;
email?: string;
version?: number;
websiteType?: string;
expirationTime?: string;
templateId?: string;
industryParent?: string;
industryChild?: string;
companyId?: number;
prefix?: string;
domain?: string;
adminUrl?: string;
icpNo?: string;
policeNo?: string;
comments?: string;
statusText?: string;
sortNumber?: number;
createTime?: string;
disabled?: boolean;
country?: string;
province?: string;
city?: string;
region?: string;
appId?: number;
fields?: WebsiteField[];
status?: number;
tenantId?: number;
tenantName?: string;
navigations?: Navigation[];
categoryList?: ArrangeCategory[];
links?: Link[];
// 配置信息
config?: any;
style?: string;
}
/**
*
*/
export interface WebsiteParam extends PageParam {
title?: string;
path?: string;
authority?: string;
parentId?: number;
}

72
src/components/ChooseWebsiteField/index.vue

@ -1,72 +0,0 @@
<!-- 公共参数数据源 -->
<template>
<a-select
:allow-clear="allowClear"
show-search
optionFilterProp="label"
:options="data"
:value="value"
class="w-full"
:placeholder="placeholder"
@update:value="updateValue"
@change="change"
@blur="onBlur"
/>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import { listWebsiteField } from '@/api/system/website/field';
import { CmsWebsiteField } from '@/api/cms/cmsWebsiteField/model';
const emit = defineEmits<{
(e: 'update:value', value: string): void;
(e: 'index', index: number): void;
(e: 'blur'): void;
(e: 'done', item: CmsWebsiteField): void;
}>();
const props = withDefaults(
defineProps<{
value?: string;
placeholder?: string;
allowClear?: boolean;
width?: number;
index?: number;
}>(),
{
placeholder: '请选择'
}
);
const data = ref<CmsWebsiteField[]>();
/* 更新选中数据 */
const updateValue = (value: string) => {
emit('update:value', value);
emit('index', Number(props.index));
};
/* 失去焦点 */
const onBlur = () => {
emit('blur');
};
const change = (e, item) => {
emit('done', item);
};
const reload = () => {
data.value = [];
listWebsiteField({}).then((list) => {
data.value = list.map((d) => {
return {
label: d.name,
value: d.value
};
});
});
};
reload();
</script>

74
src/components/SelectWebsiteField/components/select-data.vue

@ -34,11 +34,11 @@
<div class="ele-text-placeholder">{{ record.comments }}</div> <div class="ele-text-placeholder">{{ record.comments }}</div>
</template> </template>
<template v-if="column.key === 'value'"> <template v-if="column.key === 'value'">
<a-image v-if="record.type === 1" :src="record.value" :width="120" />
<a-image v-if="record.type === 1" :src="record.value" :width="120"/>
<div v-else>{{ record.value }}</div> <div v-else>{{ record.value }}</div>
</template> </template>
<template v-if="column.key === 'defaultValue'"> <template v-if="column.key === 'defaultValue'">
<a-image v-if="record.type === 1" :src="record.value" :width="120" />
<a-image v-if="record.type === 1" :src="record.value" :width="120"/>
<div v-else>{{ record.value }}</div> <div v-else>{{ record.value }}</div>
</template> </template>
<template v-if="column.key === 'comments'"> <template v-if="column.key === 'comments'">
@ -46,7 +46,7 @@
<template #content> <template #content>
{{ record.comments }} {{ record.comments }}
</template> </template>
<ExclamationCircleOutlined />
<ExclamationCircleOutlined/>
</a-popover> </a-popover>
</template> </template>
<template v-if="column.key === 'action'"> <template v-if="column.key === 'action'">
@ -58,44 +58,44 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref } from 'vue';
import {
import {ref} from 'vue';
import {
ColumnItem, ColumnItem,
DatasourceFunction DatasourceFunction
} from 'ele-admin-pro/es/ele-pro-table/types';
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import { EleProTable } from 'ele-admin-pro';
import { Company, CompanyParam } from '@/api/system/company/model';
import { CmsWebsiteField } from '@/api/cms/cmsWebsiteField/model';
import {pageWebsiteField} from "@/api/system/website/field";
} from 'ele-admin-pro/es/ele-pro-table/types';
import {ExclamationCircleOutlined} from '@ant-design/icons-vue';
import {EleProTable} from 'ele-admin-pro';
import {Company, CompanyParam} from '@/api/system/company/model';
import {CmsWebsiteField} from '@/api/cms/cmsWebsiteField/model';
import {pageWebsiteField} from "@/api/system/website/field";
const props = defineProps<{
const props = defineProps<{
// //
visible: boolean; visible: boolean;
// //
title?: string; title?: string;
// //
data?: CmsWebsiteField | null; data?: CmsWebsiteField | null;
}>();
}>();
const emit = defineEmits<{
const emit = defineEmits<{
(e: 'done', data: Company): void; (e: 'done', data: Company): void;
(e: 'update:visible', visible: boolean): void; (e: 'update:visible', visible: boolean): void;
}>();
}>();
/* 更新visible */
const updateVisible = (value: boolean) => {
/* 更新visible */
const updateVisible = (value: boolean) => {
emit('update:visible', value); emit('update:visible', value);
};
};
//
const searchText = ref(null);
//
const searchText = ref(null);
//
const tableRef = ref<InstanceType<typeof EleProTable> | null>(null);
//
const tableRef = ref<InstanceType<typeof EleProTable> | null>(null);
//
const columns = ref<ColumnItem[]>([
//
const columns = ref<ColumnItem[]>([
{ {
title: '参数名', title: '参数名',
dataIndex: 'name', dataIndex: 'name',
@ -128,10 +128,10 @@
align: 'center', align: 'center',
hideInSetting: true hideInSetting: true
} }
]);
]);
//
const datasource: DatasourceFunction = ({ page, limit, where, orders }) => {
//
const datasource: DatasourceFunction = ({page, limit, where, orders}) => {
where = {}; where = {};
// //
if (searchText.value) { if (searchText.value) {
@ -143,20 +143,20 @@
page, page,
limit limit
}); });
};
};
/* 搜索 */
const reload = (where?: CompanyParam) => {
tableRef?.value?.reload({ page: 1, where });
};
/* 搜索 */
const reload = (where?: CompanyParam) => {
tableRef?.value?.reload({page: 1, where});
};
const onRadio = (record: Company) => {
const onRadio = (record: Company) => {
updateVisible(false); updateVisible(false);
emit('done', record); emit('done', record);
};
};
/* 自定义行属性 */
const customRow = (record: Company) => {
/* 自定义行属性 */
const customRow = (record: Company) => {
return { return {
// //
onDblclick: () => { onDblclick: () => {
@ -164,6 +164,6 @@
emit('done', record); emit('done', record);
} }
}; };
};
};
</script> </script>
<style lang="less"></style> <style lang="less"></style>

6
src/config/setting.ts

@ -4,12 +4,10 @@ export const TENANT_ID = import.meta.env.VITE_TENANT_ID;
export const TEMPLATE_ID = 10258; export const TEMPLATE_ID = 10258;
// appSecret // appSecret
export const APP_SECRET = 'ffd6eee985af45e4a75098422d1decbb'; export const APP_SECRET = 'ffd6eee985af45e4a75098422d1decbb';
// 开发商官方网站
export const domain = 'https://websoft.top'; export const domain = 'https://websoft.top';
// 基础模块
export const COMMON_API_URL = 'https://server.websoft.top/api';
// 主节点 // 主节点
export const SERVER_API_URL = import.meta.env.VITE_SERVER_URL;
export const SERVER_API_URL = 'https://server.gxwebsoft.com/api';
// 模块节点 // 模块节点
export const MODULES_API_URL = import.meta.env.VITE_API_URL; export const MODULES_API_URL = import.meta.env.VITE_API_URL;
export const THINK_API_URL = import.meta.env.VITE_THINK_URL; export const THINK_API_URL = import.meta.env.VITE_THINK_URL;

2
src/store/modules/chat.ts

@ -8,7 +8,7 @@ import {
} from '@/api/system/chat'; } from '@/api/system/chat';
import { emitter } from '@/utils/common'; import { emitter } from '@/utils/common';
const SOCKET_URL: string = import.meta.env.VITE_SOCKET_URL;
const SOCKET_URL: string = 'wss://server.gxwebsoft.com';
interface ConnectionOptions { interface ConnectionOptions {
token: string; token: string;

2
src/views/cms/cmsArticle/components/search.vue

@ -88,6 +88,7 @@ import {CmsNavigation} from '@/api/cms/cmsNavigation/model';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import Import from "./Import.vue"; import Import from "./Import.vue";
import {useWebsiteSettingStore} from "@/store/modules/setting"; import {useWebsiteSettingStore} from "@/store/modules/setting";
import {openUrl, push} from "@/utils/common";
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
@ -310,6 +311,7 @@ const reset = () => {
resetFields(); resetFields();
type.value = undefined; type.value = undefined;
reload(); reload();
openUrl(`/website/article`)
}; };
watch( watch(

31
src/views/cms/cmsNavigation/index.vue

@ -62,7 +62,7 @@
/> />
<a-button <a-button
type="text" type="text"
@click="openUrl('/website/model')"
@click="push('/website/model')"
>模型管理 >模型管理
</a-button </a-button
> >
@ -75,7 +75,14 @@
<template v-if="column.key === 'title'"> <template v-if="column.key === 'title'">
<a-space> <a-space>
<a-avatar v-if="record.icon" :size="22" :src="record.icon"/> <a-avatar v-if="record.icon" :size="22" :src="record.icon"/>
<a @click="openUrl(`/website/article?id=${record.navigationId}`)">{{ record.title }}</a>
<a @click="push({
path: `/website/article`,
query: {
id: record.navigationId,
name: record.title,
model: record.model
}
})">{{ record.title }}</a>
</a-space> </a-space>
<template v-if="record.model == 'page'"> <template v-if="record.model == 'page'">
<a-divider type="vertical"/> <a-divider type="vertical"/>
@ -244,18 +251,17 @@ import type {
CmsNavigation, CmsNavigation,
CmsNavigationParam CmsNavigationParam
} from '@/api/cms/cmsNavigation/model'; } from '@/api/cms/cmsNavigation/model';
import {copyText, getPageTitle, navTo, openUrl} from '@/utils/common';
import {copyText, getPageTitle} from '@/utils/common';
import {CmsDesign} from '@/api/cms/cmsDesign/model'; import {CmsDesign} from '@/api/cms/cmsDesign/model';
import {getSiteDomain} from '@/utils/domain';
import {removeSiteInfoCache} from '@/api/cms/cmsWebsite'; import {removeSiteInfoCache} from '@/api/cms/cmsWebsite';
import Extra from "./components/extra.vue"; import Extra from "./components/extra.vue";
import {useRouter} from 'vue-router';
import {listCmsModel} from "@/api/cms/cmsModel"; import {listCmsModel} from "@/api/cms/cmsModel";
import {CmsModel} from "@/api/cms/cmsModel/model"; import {CmsModel} from "@/api/cms/cmsModel/model";
const {push} = useRouter();
// //
const tableRef = ref<InstanceType<typeof EleProTable> | null>(null); const tableRef = ref<InstanceType<typeof EleProTable> | null>(null);
//
const domain = ref(getSiteDomain());
const modelList = ref<CmsModel[]>([]) const modelList = ref<CmsModel[]>([])
const websiteId = localStorage.getItem('WebsiteId') const websiteId = localStorage.getItem('WebsiteId')
const currentId = ref<number>(); const currentId = ref<number>();
@ -286,12 +292,6 @@ const columns = ref<ColumnItem[]>([
showSorterTooltip: false, showSorterTooltip: false,
ellipsis: true ellipsis: true
}, },
{
title: '模型',
dataIndex: 'model',
key: 'model',
align: 'center'
},
{ {
title: '路径', title: '路径',
dataIndex: 'path', dataIndex: 'path',
@ -303,6 +303,13 @@ const columns = ref<ColumnItem[]>([
hideInTable: true, hideInTable: true,
key: 'component' key: 'component'
}, },
{
title: '模型',
dataIndex: 'model',
key: 'model',
width: 120,
align: 'center'
},
{ {
title: 'banner', title: 'banner',
dataIndex: 'banner', dataIndex: 'banner',

Loading…
Cancel
Save