diff --git a/main/.env.pre b/main/.env.pre
new file mode 100644
index 0000000..896c31f
--- /dev/null
+++ b/main/.env.pre
@@ -0,0 +1,13 @@
+# 本地环境
+VITE_APP_NAME = 'daimp-front-main'
+VITE_APP_TITLE = '数字农业产业管理平台'
+VITE_APP_SUB_OS = '//localhost:8090/sub-operation-service/'
+VITE_APP_SUB_OA = '//localhost:8090/sub-operation-admin/'
+VITE_APP_SUB_GAS = '//localhost:8090/sub-government-affairs-service/'
+VITE_APP_SUB_GAA = '//localhost:8090/sub-government-admin/'
+VITE_APP_SUB_GSS = '//localhost:8090/sub-government-screen-service/'
+# 接口
+VITE_APP_BASE_API = '/apis'
+VITE_APP_BASE_URL = ''
+VITE_APP_UPLOAD_API = '/uploadApis'
+VITE_APP_UPLOAD_URL = ''
\ No newline at end of file
diff --git a/main/src/components/custom-echart-pie/index.vue b/main/src/components/custom-echart-pie/index.vue
index 95c85da..b00c971 100644
--- a/main/src/components/custom-echart-pie/index.vue
+++ b/main/src/components/custom-echart-pie/index.vue
@@ -33,7 +33,7 @@ export default {
emits: ['click'],
setup(props, { emit }) {
const chartRef = ref(null);
- const { setOptions, getInstance, resize } = useEcharts(chartRef);
+ const { setOptions, getInstance, resize, startAutoPlay } = useEcharts(chartRef);
const option = reactive({
tooltip: {
formatter: '{b} ({c})',
@@ -74,6 +74,11 @@ export default {
}
option.series[0].data = props.chartData;
setOptions(option);
+ startAutoPlay({
+ interval: 2000,
+ seriesIndex: 0,
+ showTooltip: true,
+ });
resize();
getInstance()?.off('click', onClick);
getInstance()?.on('click', onClick);
diff --git a/main/src/hooks/useEcharts.js b/main/src/hooks/useEcharts.js
index 7a78abd..4907ca7 100644
--- a/main/src/hooks/useEcharts.js
+++ b/main/src/hooks/useEcharts.js
@@ -6,6 +6,57 @@ import { useBreakpoint } from './useBreakpoint';
import echarts from '../utils/echarts';
export const useEcharts = (elRef, theme = 'default') => {
+ // 新增轮播相关状态
+ const autoPlayTimer = ref(null);
+ const currentIndex = ref(-1);
+ const dataLength = ref(0);
+
+ // 新增方法 - 启动轮播
+ const startAutoPlay = (options = {}) => {
+ const {
+ interval = 2000, // 轮播间隔(ms)
+ seriesIndex = 0, // 默认操作第一个系列
+ showTooltip = true, // 是否显示提示框
+ } = options;
+
+ stopAutoPlay(); // 先停止已有轮播
+
+ // 获取数据长度
+ const seriesData = unref(getOptions).series?.[seriesIndex]?.data;
+ dataLength.value = seriesData?.length || 0;
+ if (dataLength.value === 0) return;
+
+ autoPlayTimer.value = setInterval(() => {
+ currentIndex.value = (currentIndex.value + 1) % dataLength.value;
+
+ // 执行轮播动作
+ chartInstance?.dispatchAction({
+ type: 'downplay',
+ seriesIndex: seriesIndex,
+ });
+ chartInstance?.dispatchAction({
+ type: 'highlight',
+ seriesIndex: seriesIndex,
+ dataIndex: currentIndex.value,
+ });
+ if (showTooltip) {
+ chartInstance?.dispatchAction({
+ type: 'showTip',
+ seriesIndex: seriesIndex,
+ dataIndex: currentIndex.value,
+ });
+ }
+ }, interval);
+ };
+
+ // 新增方法 - 停止轮播
+ const stopAutoPlay = () => {
+ if (autoPlayTimer.value) {
+ clearInterval(autoPlayTimer.value);
+ autoPlayTimer.value = null;
+ }
+ };
+
const getDarkMode = computed(() => {
return theme === 'default' ? 'dark' : theme;
});
@@ -31,23 +82,39 @@ export const useEcharts = (elRef, theme = 'default') => {
if (!el || !unref(el)) {
return;
}
+ nextTick(() => {
+ if (el.offsetWidth === 0 || el.offsetHeight === 0) {
+ console.warn('图表容器不可见,延迟初始化');
+ useTimeoutFn(() => initCharts(t), 100);
+ return;
+ }
- chartInstance = echarts.init(el, t);
- const { removeEvent } = useEventListener({
- el: window,
- name: 'resize',
- listener: resizeFn,
+ chartInstance = echarts.init(el, t);
+ const { removeEvent } = useEventListener({
+ el: window,
+ name: 'resize',
+ listener: resizeFn,
+ });
+ removeResizeFn = removeEvent;
+ const { widthRef } = useBreakpoint();
+ if (unref(widthRef) <= 768 || el.offsetHeight === 0) {
+ useTimeoutFn(() => {
+ resizeFn();
+ }, 30);
+ }
});
- removeResizeFn = removeEvent;
- const { widthRef } = useBreakpoint();
- if (unref(widthRef) <= 768 || el.offsetHeight === 0) {
- useTimeoutFn(() => {
- resizeFn();
- }, 30);
- }
}
function setOptions(options = {}, clear = true) {
+ const mergedOptions = {
+ animation: true,
+ animationDuration: 3000,
+ animationEasing: 'cubicOut',
+ ...unref(options),
+ animationThreshold: 2000, // 数据量超过2000自动关闭动画
+ animationDelayUpdate: (idx) => idx * 50, // 数据项延迟
+ };
+ cacheOptions.value = mergedOptions;
cacheOptions.value = options;
if (unref(elRef)?.offsetHeight === 0) {
useTimeoutFn(() => {
@@ -98,6 +165,7 @@ export const useEcharts = (elRef, theme = 'default') => {
);
tryOnUnmounted(() => {
+ stopAutoPlay(); // 清理定时器
if (!chartInstance) return;
removeResizeFn();
chartInstance.dispose();
@@ -115,7 +183,9 @@ export const useEcharts = (elRef, theme = 'default') => {
setOptions,
resize,
echarts,
- getInstance,
+ getInstance: () => chartInstance,
registerMap,
+ startAutoPlay, // 暴露轮播方法
+ stopAutoPlay,
};
};
diff --git a/sub-government-affairs-service/.env.pre b/sub-government-affairs-service/.env.pre
new file mode 100644
index 0000000..47b0026
--- /dev/null
+++ b/sub-government-affairs-service/.env.pre
@@ -0,0 +1,9 @@
+# 本地环境
+VITE_APP_MIAN = 'daimp-front-main'
+VITE_APP_MIAN_URL = 'http://localhost:8090'
+VITE_APP_NAME = 'sub-government-affairs-service'
+# 接口
+VITE_APP_BASE_API = '/apis'
+VITE_APP_BASE_URL = ''
+VITE_APP_UPLOAD_API = '/uploadApis'
+VITE_APP_UPLOAD_URL = ''
diff --git a/sub-government-affairs-service/.gitignore b/sub-government-affairs-service/.gitignore
index bdeba94..c199e5e 100644
--- a/sub-government-affairs-service/.gitignore
+++ b/sub-government-affairs-service/.gitignore
@@ -69,7 +69,7 @@ web_modules/
.yarn-integrity
# dotenv environment variables file
-.env
+# .env
# parcel-bundler cache (https://parceljs.org/)
.cache
diff --git a/sub-government-affairs-service/package.json b/sub-government-affairs-service/package.json
index aa481ec..2fa4fe3 100644
--- a/sub-government-affairs-service/package.json
+++ b/sub-government-affairs-service/package.json
@@ -7,7 +7,7 @@
"dev": "vite --mode development",
"build": "vite build --mode production",
"test": "vite build --mode test",
- "local": "vite build --mode local",
+ "pre": "vite build --mode pre",
"preview": "vite preview",
"format": "prettier --write 'src/**/*.{vue,ts,tsx,js,jsx,css,less,scss,json,md}'",
"eslint": "npx eslint --init",
diff --git a/sub-government-screen-service/.env.pre b/sub-government-screen-service/.env.pre
new file mode 100644
index 0000000..c159260
--- /dev/null
+++ b/sub-government-screen-service/.env.pre
@@ -0,0 +1,9 @@
+# 本地环境
+VITE_APP_MIAN = 'daimp-front-main'
+VITE_APP_MIAN_URL = 'http://localhost:8090'
+VITE_APP_NAME = 'sub-government-screen-service'
+# 接口
+VITE_APP_BASE_API = '/apis'
+VITE_APP_BASE_URL = ''
+VITE_APP_UPLOAD_API = '/uploadApis'
+VITE_APP_UPLOAD_URL = ''
diff --git a/sub-government-screen-service/.gitignore b/sub-government-screen-service/.gitignore
index bdeba94..c199e5e 100644
--- a/sub-government-screen-service/.gitignore
+++ b/sub-government-screen-service/.gitignore
@@ -69,7 +69,7 @@ web_modules/
.yarn-integrity
# dotenv environment variables file
-.env
+# .env
# parcel-bundler cache (https://parceljs.org/)
.cache
diff --git a/sub-government-screen-service/components.d.ts b/sub-government-screen-service/components.d.ts
index ce9cfc8..ea50d1a 100644
--- a/sub-government-screen-service/components.d.ts
+++ b/sub-government-screen-service/components.d.ts
@@ -8,8 +8,10 @@ export {}
declare module 'vue' {
export interface GlobalComponents {
BaseBg: typeof import('./src/components/baseBg.vue')['default']
+ 'BaseBg copy': typeof import('./src/components/baseBg copy.vue')['default']
CenterMap: typeof import('./src/components/centerMap.vue')['default']
CodeDialog: typeof import('./src/components/code-dialog/index.vue')['default']
+ copy: typeof import('./src/components/baseBg copy.vue')['default']
CurrentTime: typeof import('./src/components/currentTime.vue')['default']
CustomBack: typeof import('./src/components/customBack.vue')['default']
CustomProgress: typeof import('./src/components/customProgress.vue')['default']
diff --git a/sub-government-screen-service/package.json b/sub-government-screen-service/package.json
index 0b9a15c..476dc80 100644
--- a/sub-government-screen-service/package.json
+++ b/sub-government-screen-service/package.json
@@ -7,7 +7,7 @@
"dev": "vite --mode development",
"build": "vite build --mode production",
"test": "vite build --mode test",
- "local": "vite build --mode local",
+ "pre": "vite build --mode pre",
"preview": "vite preview",
"format": "prettier --write 'src/**/*.{vue,ts,tsx,js,jsx,css,less,scss,json,md}'",
"eslint": "npx eslint --init",
diff --git a/sub-government-screen-service/src/components/baseBg copy.vue b/sub-government-screen-service/src/components/baseBg copy.vue
new file mode 100644
index 0000000..ea58702
--- /dev/null
+++ b/sub-government-screen-service/src/components/baseBg copy.vue
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+ {{ topTitle }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sub-government-screen-service/src/components/baseBg.vue b/sub-government-screen-service/src/components/baseBg.vue
index afb1d04..cc41b08 100644
--- a/sub-government-screen-service/src/components/baseBg.vue
+++ b/sub-government-screen-service/src/components/baseBg.vue
@@ -4,10 +4,51 @@
-
+
+
- {{ topTitle }}
+
+
+
+
+ {{ n.title }}
+
+
+
+
+
+
{{ '农业产业政务云平台' }}
+
+
+
+ {{ m.title }}
+
+
+
+
@@ -105,16 +146,72 @@ div {
}
.top-content {
width: calc(100% - 400px);
- line-height: 42px;
- text-align: center;
- font-size: 18px;
- font-weight: bold;
- transform: skewX(-8deg);
- background: linear-gradient(to bottom, '#ff7e5f', '#548fff');
- -webkit-background-clip: text;
- color: #fff;
- letter-spacing: 8px;
- text-shadow: -6px 0 0 1px #add8f1;
+ height: 100%;
+ display: inline-flex;
+ justify-content: center;
+ flex-direction: column;
+ .top-content-p {
+ width: 100%;
+ }
+ .title,
+ .b-nav-l,
+ .b-nav-r {
+ display: inline-block;
+ vertical-align: middle;
+ }
+ .b-nav-l,
+ .b-nav-r {
+ width: calc((100% - 300px) / 2);
+ }
+ .b-nav-r {
+ text-align: right;
+ }
+ .title {
+ width: 300px;
+ line-height: 38px;
+ text-align: center;
+ font-size: 22px;
+ font-weight: bold;
+ transform: skewX(-8deg);
+ background: linear-gradient(to bottom, '#ff7e5f', '#548fff');
+ -webkit-background-clip: text;
+ color: #fff;
+ letter-spacing: 8px;
+ text-shadow: -6px 0 0 1px #add8f1;
+ max-height: unset !important;
+ }
+ }
+ .b-nav-l,
+ .b-nav-r {
+ margin: auto;
+ display: inline-flex;
+ gap: 20px;
+ .b-nav-item {
+ display: inline-block;
+ cursor: pointer;
+ min-width: 132px;
+ height: 38px;
+ text-align: center;
+ line-height: 38px;
+ span {
+ font-size: 14px;
+ font-weight: bold;
+ display: inline-flex;
+ transform: skewX(-8deg);
+ background: linear-gradient(to bottom, '#ff7e5f', '#548fff');
+ -webkit-background-clip: text;
+
+ letter-spacing: 4px;
+ text-shadow: -2px 0 0 1px #add8f1;
+ }
+
+ &.nav-act {
+ color: rgba(255, 255, 255, 1);
+ }
+ &.nav-normal {
+ color: rgba(255, 255, 255, 0.6);
+ }
+ }
}
.top-left {
width: 200px;
@@ -127,7 +224,7 @@ div {
}
}
.bottom {
- height: 98px;
+ height: 80px;
text-align: center;
.b-nav {
@@ -163,7 +260,7 @@ div {
}
}
.content {
- height: calc(100% - 156px);
+ height: calc(100% - 60px);
}
}
}
diff --git a/sub-government-screen-service/src/layouts/component/Bottom/index.vue b/sub-government-screen-service/src/layouts/component/Bottom/index.vue
index 17f2904..3e3f118 100644
--- a/sub-government-screen-service/src/layouts/component/Bottom/index.vue
+++ b/sub-government-screen-service/src/layouts/component/Bottom/index.vue
@@ -71,9 +71,11 @@ const itemAct = (name) => {
bottom: 0;
z-index: 100;
.bottom {
- height: 98px;
+ height: 80px;
text-align: center;
-
+ display: inline-flex;
+ justify-content: center;
+ flex-direction: column;
.b-nav {
margin: auto;
display: inline-flex;
diff --git a/sub-government-screen-service/src/layouts/index.vue b/sub-government-screen-service/src/layouts/index.vue
index 853954d..b59a745 100644
--- a/sub-government-screen-service/src/layouts/index.vue
+++ b/sub-government-screen-service/src/layouts/index.vue
@@ -9,7 +9,7 @@
diff --git a/sub-government-screen-service/src/styles/style.scss b/sub-government-screen-service/src/styles/style.scss
index 5ee6df3..609757d 100644
--- a/sub-government-screen-service/src/styles/style.scss
+++ b/sub-government-screen-service/src/styles/style.scss
@@ -15,3 +15,24 @@
height: auto;
max-height: calc(100vh - 130px);
}
+.txt-ellipsis {
+ display: -webkit-inline-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ word-break: break-all;
+ white-space: normal;
+}
+.clamp1 {
+ line-clamp: 1;
+ -webkit-line-clamp: 1;
+ line-height: 1.5;
+ max-height: calc(1.5em * 1);
+}
+
+.clamp2 {
+ line-clamp: 2;
+ -webkit-line-clamp: 2;
+ line-height: 1.5;
+ max-height: calc(1.5em * 2);
+}
diff --git a/sub-government-screen-service/src/views/home/components/inputs.vue b/sub-government-screen-service/src/views/home/components/inputs.vue
index 64c862f..ff27ae6 100644
--- a/sub-government-screen-service/src/views/home/components/inputs.vue
+++ b/sub-government-screen-service/src/views/home/components/inputs.vue
@@ -50,12 +50,12 @@ let topTitle = ref('');
let pos = ref('');
const datalist = reactive([
- { label: '农机使用(台)', value: 8000, icon: 'farmuse.png' },
+ { label: '种子使用(吨)', value: 4800, icon: 'provenance.png' },
{ label: '农药使用(吨)', value: 5000, icon: 'pesticide.png' },
- { label: '肥料使用(吨)', value: 9000, icon: 'fertilizer.png' },
- { label: '种源使用', value: 4800, icon: 'provenance.png' },
- { label: '兽药(吨)', value: 10, icon: 'animalm.png' },
+ { label: '化肥使用(吨)', value: 9000, icon: 'fertilizer.png' },
{ label: '饲料(吨)', value: 88943, icon: 'feeduse.png' },
+ { label: '兽药(吨)', value: 10, icon: 'animalm.png' },
+ { label: '农机使用(台)', value: 8000, icon: 'farmuse.png' },
]);
onMounted(() => {
diff --git a/sub-government-screen-service/src/views/home/index.vue b/sub-government-screen-service/src/views/home/index.vue
index 91ff902..3cd8fa7 100644
--- a/sub-government-screen-service/src/views/home/index.vue
+++ b/sub-government-screen-service/src/views/home/index.vue
@@ -1,7 +1,7 @@
-
-
+
+
@@ -59,14 +59,16 @@
-
耿马县农产品销售情况
-
¥1284.624万
-
-
同比去年
-
¥4684.629
-
-
-
+
+
+
¥1284.624万
+
+ 同比去年
+ ¥4684.629
+
+
+
+
@@ -107,16 +109,26 @@ let rollDataList = reactive([
.data-home-index {
.home-index-top-warp {
position: fixed;
- top: 0;
+ top: 48px;
left: 0;
width: 100%;
- padding-top: 24px;
+ height: 120px;
text-align: center;
+ padding-top: 24px;
.home-index-top {
margin: auto;
+ width: calc(100% - 400px);
+ height: 100%;
background-repeat: no-repeat;
- background-position: center 28px;
+ background-position: center bottom;
background-size: contain;
+ position: relative;
+ .home-data-p {
+ position: absolute;
+ left: 0;
+ top: 13px;
+ width: 100%;
+ }
.home-title {
display: inline-block;
font-size: 18px;
@@ -133,7 +145,7 @@ let rollDataList = reactive([
font-weight: bold;
color: #fff;
letter-spacing: 8px;
- margin: 26px 0 0 0;
+ margin-bottom: 10px;
}
.home-data-contrast {
.tips {
diff --git a/sub-government-screen-service/src/views/trace/components/codeNumCharts.vue b/sub-government-screen-service/src/views/trace/components/codeNumCharts.vue
index 57cdf0b..f710c3f 100644
--- a/sub-government-screen-service/src/views/trace/components/codeNumCharts.vue
+++ b/sub-government-screen-service/src/views/trace/components/codeNumCharts.vue
@@ -1,14 +1,14 @@
-
-
+
+
{{ n.value }}
{{ n.name }}
-
-
+
+
@@ -271,13 +271,13 @@ div {
top: 50%;
width: 80%;
transform: translateY(-50%);
- background-size: contain;
+ background-size: 100% 100%;
background-repeat: no-repeat;
background-position: left center;
- height: 100%;
- .num-txt-pos {
+ height: 90%;
+ .num-txt-warp {
width: 100%;
- height: 100%;
+ height: calc((100% - 4px) / 2);
display: inline-flex;
justify-content: center;
flex-direction: column;
diff --git a/sub-government-screen-service/src/views/trace/components/mainPartCharts.vue b/sub-government-screen-service/src/views/trace/components/mainPartCharts.vue
index 9804243..6fe250b 100644
--- a/sub-government-screen-service/src/views/trace/components/mainPartCharts.vue
+++ b/sub-government-screen-service/src/views/trace/components/mainPartCharts.vue
@@ -1,19 +1,19 @@
-
-
+
+
- {{ n.name }}
+ {{ n.name }}
{{ n.value }}
{{ n.unit }}
-
-
+
+
@@ -265,26 +265,30 @@ div {
position: absolute;
right: 0;
top: 50%;
- width: 80%;
+ width: 60%;
transform: translateY(-50%);
- background-size: contain;
+ height: 90%;
+ background-size: 100% 100%;
background-repeat: no-repeat;
background-position: left center;
- height: 100%;
- padding: 10% 0 10% 18%;
- .num-txt-pos {
+ display: inline-flex;
+ justify-content: space-around;
+ flex-direction: column;
+ gap: 4;
+ .num-txt-warp {
width: 100%;
- height: 100%;
+ padding-left: 18%;
display: inline-flex;
justify-content: center;
flex-direction: column;
+ height: calc((100% - 8px) / 3);
}
.num-txt {
width: 72%;
display: inline-flex;
+
justify-content: space-between;
padding: 0 16px;
- line-height: 30px;
.val,
.label {
vertical-align: middle;
@@ -303,15 +307,20 @@ div {
}
}
.label {
- font-size: 12px;
- font-weight: bold;
display: inline-flex;
- transform: skewX(-8deg);
- background: linear-gradient(to bottom, '#ff7e5f', '#548fff');
- -webkit-background-clip: text;
- letter-spacing: 1px;
- color: #fff;
- text-shadow: -2px 0 0 1px #add8f1;
+ flex-direction: column;
+ justify-content: center;
+ .label-val {
+ font-size: 12px;
+ font-weight: bold;
+ display: inline-flex;
+ transform: skewX(-8deg);
+ background: linear-gradient(to bottom, '#ff7e5f', '#548fff');
+ -webkit-background-clip: text;
+ letter-spacing: 1px;
+ color: #fff;
+ text-shadow: -2px 0 0 1px #add8f1;
+ }
}
.unit {
diff --git a/sub-operation-admin/.env.pre b/sub-operation-admin/.env.pre
new file mode 100644
index 0000000..1f1baf4
--- /dev/null
+++ b/sub-operation-admin/.env.pre
@@ -0,0 +1,9 @@
+# 本地环境
+VITE_APP_MIAN = 'daimp-front-main'
+VITE_APP_MIAN_URL = 'http://localhost:8090'
+VITE_APP_NAME = 'sub-operation-admin'
+# 接口
+VITE_APP_BASE_API = '/apis'
+VITE_APP_BASE_URL = ''
+VITE_APP_UPLOAD_API = '/uploadApis'
+VITE_APP_UPLOAD_URL = ''
diff --git a/sub-operation-admin/.gitignore b/sub-operation-admin/.gitignore
index bb6e132..c199e5e 100644
--- a/sub-operation-admin/.gitignore
+++ b/sub-operation-admin/.gitignore
@@ -70,7 +70,6 @@ web_modules/
# dotenv environment variables file
# .env
-# .env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
diff --git a/sub-operation-admin/package.json b/sub-operation-admin/package.json
index 49a7f03..02a0bd1 100644
--- a/sub-operation-admin/package.json
+++ b/sub-operation-admin/package.json
@@ -7,7 +7,7 @@
"dev": "vite --mode development",
"build": "vite build --mode production",
"test": "vite build --mode test",
- "local": "vite build --mode local",
+ "pre": "vite build --mode pre",
"preview": "vite preview",
"format": "prettier --write 'src/**/*.{vue,ts,tsx,js,jsx,css,less,scss,json,md}'",
"eslint": "npx eslint --init",
diff --git a/sub-operation-service/.env.development b/sub-operation-service/.env.development
index e56ba5b..0aa1dcc 100644
--- a/sub-operation-service/.env.development
+++ b/sub-operation-service/.env.development
@@ -1,6 +1,5 @@
# 开发环境
VITE_PORT = 9526
-VITE_MODE = 'DEV'
VITE_APP_MIAN = 'daimp-front-main'
VITE_APP_MIAN_URL = 'http://localhost:9000'
VITE_APP_NAME = 'sub-operation-service'
diff --git a/sub-operation-service/.env.pre b/sub-operation-service/.env.pre
new file mode 100644
index 0000000..1b27143
--- /dev/null
+++ b/sub-operation-service/.env.pre
@@ -0,0 +1,9 @@
+# 本地环境
+VITE_APP_MIAN = 'daimp-front-main'
+VITE_APP_MIAN_URL = 'http://localhost:8090'
+VITE_APP_NAME = 'sub-operation-service'
+# 接口
+VITE_APP_BASE_API = '/apis'
+VITE_APP_BASE_URL = ''
+VITE_APP_UPLOAD_API = '/uploadApis'
+VITE_APP_UPLOAD_URL = ''
diff --git a/sub-operation-service/.gitignore b/sub-operation-service/.gitignore
index bdeba94..c199e5e 100644
--- a/sub-operation-service/.gitignore
+++ b/sub-operation-service/.gitignore
@@ -69,7 +69,7 @@ web_modules/
.yarn-integrity
# dotenv environment variables file
-.env
+# .env
# parcel-bundler cache (https://parceljs.org/)
.cache
diff --git a/sub-operation-service/package.json b/sub-operation-service/package.json
index 87a3571..5b02f67 100644
--- a/sub-operation-service/package.json
+++ b/sub-operation-service/package.json
@@ -7,7 +7,7 @@
"dev": "vite --mode development",
"build": "vite build --mode production",
"test": "vite build --mode test",
- "local": "vite build --mode local",
+ "pre": "vite build --mode pre",
"preview": "vite preview",
"format": "prettier --write 'src/**/*.{vue,ts,tsx,js,jsx,css,less,scss,json,md}'",
"eslint": "npx eslint --init",
@@ -21,7 +21,7 @@
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^5.1.12",
"axios": "^1.6.5",
- "echarts": "^5.5.0",
+ "echarts": "^5.6.0",
"element-plus": "^2.7.2",
"js-base64": "^3.7.6",
"lodash": "^4.17.21",
@@ -31,6 +31,7 @@
"pinia": "^2.1.7",
"pinia-plugin-persistedstate": "^3.2.1",
"screenfull": "^6.0.2",
+ "splitpanes": "^4.0.3",
"vue": "^3.3.11",
"vue-router": "^4.2.5"
},
diff --git a/sub-operation-service/src/App.vue b/sub-operation-service/src/App.vue
index 2244b0a..7a2b418 100644
--- a/sub-operation-service/src/App.vue
+++ b/sub-operation-service/src/App.vue
@@ -3,7 +3,7 @@
* @Author: zenghua.wang
* @Date: 2024-01-24 18:54:01
* @LastEditors: zenghua.wang
- * @LastEditTime: 2025-04-12 15:22:39
+ * @LastEditTime: 2025-02-28 11:31:12
-->
@@ -23,45 +23,5 @@ const size = computed(() => SettingStore.themeConfig.globalComSize);
diff --git a/sub-operation-service/src/assets/fonts/aliiconfont.css b/sub-operation-service/src/assets/fonts/aliiconfont.css
new file mode 100644
index 0000000..54ddc87
--- /dev/null
+++ b/sub-operation-service/src/assets/fonts/aliiconfont.css
@@ -0,0 +1,170 @@
+@font-face {
+ font-family: "iconfont"; /* Project id 4879313 */
+ src:
+ url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'),
+ url('data:font/ttf;charset=utf-8;base64,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ExL+rRMXDxUPCQFTExMBUwkPFQ8XE/6uEgF1BQT+kxMS/pMKEwgJCgFsJSUBbQoIAwMO/mQFBP6ECgkIEwoBfAoJBAMN1AQF/nUKCAcUCgGLCggEAw3XCA0DBAgKAX0JFAcICv6EBQ4PCwGpCg8PCv5XCw8Bcg8LfQsPDwt9Cw/+iAeCByEUAaoLDw8L/lYJBIEHB4EECQGqCw8PC/5WFCEHggcCVgGMBweMAwgUEwSMDg6MBBMKBwmhApIEFBMJBJMDFAoHCVECmAQTFAkEmQMUCgcJWgkHChMEkwQJFBMEkwEAAAAAEgDeAAEAAAAAAAAAEwAoAAEAAAAAAAEACABOAAEAAAAAAAIABwBnAAEAAAAAAAMACACBAAEAAAAAAAQACACcAAEAAAAAAAUACwC9AAEAAAAAAAYACADbAAEAAAAAAAoAKwE8AAEAAAAAAAsAEwGQAAMAAQQJAAAAJgAAAAMAAQQJAAEAEAA8AAMAAQQJAAIADgBXAAMAAQQJAAMAEABvAAMAAQQJAAQAEACKAAMAAQQJAAUAFgClAAMAAQQJAAYAEADJAAMAAQQJAAoAVgDkAAMAAQQJAAsAJgFoAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQAAENyZWF0ZWQgYnkgaWNvbmZvbnQAAGkAYwBvAG4AZgBvAG4AdAAAaWNvbmZvbnQAAFIAZQBnAHUAbABhAHIAAFJlZ3VsYXIAAGkAYwBvAG4AZgBvAG4AdAAAaWNvbmZvbnQAAGkAYwBvAG4AZgBvAG4AdAAAaWNvbmZvbnQAAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAAVmVyc2lvbiAxLjAAAGkAYwBvAG4AZgBvAG4AdAAAaWNvbmZvbnQAAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AAEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC4AAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAGh0dHA6Ly9mb250ZWxsby5jb20AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApAAAAAQACAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwdwcm9ibGVtCW9wZXJhdGlvbgRob21lBmFsaXBheQV3eHBheQR1c2VyBGVkaXQJYmlnU2NyZWVuBGNhcnQEc2lnbgRib29rBWxldmVsBmZpbmlzaAhsb2NhdGlvbgdjbGltYXRlBHRpbWUGYWNjZXB0B2JnLWNoYXQDc2VlBGF1dGgCY2kEc29pbAhsYW5kZm9ybQRtb3JlB3ZvdWNoZXIDY2FyC2xhbmRvcGVyYXRlB2ZpbmFuY2UEbGFuZAVvcmRlcglsb2dpc3RpY3MFYnJhbmQHc2hvcGNhcglzb3VjZWNvZGUIcGFzc3dvcmQFbGFib3INZmFybW1hY2hpbmVyeQdzb3J0aW5nAAAAAAAB//8AAgABAAAADAAAABYAAAACAAEAAwAoAAEABAAAAAIAAAAAAAAAAQAAAADinytGAAAAAOQiEzUAAAAA5CITNQ==') format('truetype');
+ font-weight: normal;
+ font-style: normal;
+ font-display: swap;
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-wxpay:before {
+ content: "\e653";
+}
+
+.icon-alipay:before {
+ content: "\e64f";
+}
+
+.icon-user:before {
+ content: "\e668";
+}
+
+.icon-problem:before {
+ content: "\e61d";
+}
+
+.icon-finance:before {
+ content: "\e761";
+}
+
+.icon-land:before {
+ content: "\e762";
+}
+
+.icon-order:before {
+ content: "\e763";
+}
+
+.icon-logistics:before {
+ content: "\e764";
+}
+
+.icon-brand:before {
+ content: "\e765";
+}
+
+.icon-shopcar:before {
+ content: "\e766";
+}
+
+.icon-soucecode:before {
+ content: "\e767";
+}
+
+.icon-password:before {
+ content: "\e768";
+}
+
+.icon-labor:before {
+ content: "\e769";
+}
+
+.icon-farmmachinery:before {
+ content: "\e76a";
+}
+
+.icon-sorting:before {
+ content: "\e76b";
+}
+
+.icon-voucher:before {
+ content: "\e75e";
+}
+
+.icon-car:before {
+ content: "\e75f";
+}
+
+.icon-landoperate:before {
+ content: "\e760";
+}
+
+.icon-climate:before {
+ content: "\e754";
+}
+
+.icon-soil:before {
+ content: "\e75b";
+}
+
+.icon-landform:before {
+ content: "\e75c";
+}
+
+.icon-more:before {
+ content: "\e75d";
+}
+
+.icon-home:before {
+ content: "\e639";
+}
+
+.icon-operation:before {
+ content: "\e638";
+}
+
+.icon-bigScreen:before {
+ content: "\e74d";
+}
+
+.icon-edit:before {
+ content: "\e74c";
+}
+
+.icon-cart:before {
+ content: "\e74e";
+}
+
+.icon-sign:before {
+ content: "\e74f";
+}
+
+.icon-book:before {
+ content: "\e750";
+}
+
+.icon-level:before {
+ content: "\e751";
+}
+
+.icon-finish:before {
+ content: "\e752";
+}
+
+.icon-location:before {
+ content: "\e753";
+}
+
+.icon-time:before {
+ content: "\e755";
+}
+
+.icon-accept:before {
+ content: "\e756";
+}
+
+.icon-bg-chat:before {
+ content: "\e757";
+}
+
+.icon-see:before {
+ content: "\e758";
+}
+
+.icon-auth:before {
+ content: "\e759";
+}
+
+.icon-ci:before {
+ content: "\e75a";
+}
+
diff --git a/sub-operation-service/src/assets/fonts/demo.css b/sub-operation-service/src/assets/fonts/demo.css
deleted file mode 100644
index 68ff312..0000000
--- a/sub-operation-service/src/assets/fonts/demo.css
+++ /dev/null
@@ -1,543 +0,0 @@
-/* Logo 字体 */
-@font-face {
- font-family: 'iconfont logo';
- src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
- src:
- url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
- url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
- url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
- url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
-}
-
-.logo {
- font-family: 'iconfont logo';
- font-size: 160px;
- font-style: normal;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-/* tabs */
-.nav-tabs {
- position: relative;
-}
-
-.nav-tabs .nav-more {
- position: absolute;
- right: 0;
- bottom: 0;
- height: 42px;
- line-height: 42px;
- color: #666;
-}
-
-#tabs {
- border-bottom: 1px solid #eee;
-}
-
-#tabs li {
- cursor: pointer;
- width: 100px;
- height: 40px;
- line-height: 40px;
- text-align: center;
- font-size: 16px;
- border-bottom: 2px solid transparent;
- position: relative;
- z-index: 1;
- margin-bottom: -1px;
- color: #666;
-}
-
-#tabs .active {
- border-bottom-color: #f00;
- color: #222;
-}
-
-.tab-container .content {
- display: none;
-}
-
-/* 页面布局 */
-.main {
- padding: 30px 100px;
- width: 960px;
- margin: 0 auto;
-}
-
-.main .logo {
- color: #333;
- text-align: left;
- margin-bottom: 30px;
- line-height: 1;
- height: 110px;
- margin-top: -50px;
- overflow: hidden;
- *zoom: 1;
-}
-
-.main .logo a {
- font-size: 160px;
- color: #333;
-}
-
-.helps {
- margin-top: 40px;
-}
-
-.helps pre {
- padding: 20px;
- margin: 10px 0;
- border: solid 1px #e7e1cd;
- background-color: #fffdef;
- overflow: auto;
-}
-
-.icon_lists {
- width: 100% !important;
- overflow: hidden;
- *zoom: 1;
-}
-
-.icon_lists li {
- width: 100px;
- margin-bottom: 10px;
- margin-right: 20px;
- text-align: center;
- list-style: none !important;
- cursor: default;
-}
-
-.icon_lists li .code-name {
- line-height: 1.2;
-}
-
-.icon_lists .icon {
- display: block;
- height: 100px;
- line-height: 100px;
- font-size: 42px;
- margin: 10px auto;
- color: #333;
- -webkit-transition:
- font-size 0.25s linear,
- width 0.25s linear;
- -moz-transition:
- font-size 0.25s linear,
- width 0.25s linear;
- transition:
- font-size 0.25s linear,
- width 0.25s linear;
-}
-
-.icon_lists .icon:hover {
- font-size: 100px;
-}
-
-.icon_lists .svg-icon {
- /* 通过设置 font-size 来改变图标大小 */
- width: 1em;
- /* 图标和文字相邻时,垂直对齐 */
- vertical-align: -0.15em;
- /* 通过设置 color 来改变 SVG 的颜色/fill */
- fill: currentColor;
- /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
- normalize.css 中也包含这行 */
- overflow: hidden;
-}
-
-.icon_lists li .name,
-.icon_lists li .code-name {
- color: #666;
-}
-
-/* markdown 样式 */
-.markdown {
- color: #666;
- font-size: 14px;
- line-height: 1.8;
-}
-
-.highlight {
- line-height: 1.5;
-}
-
-.markdown img {
- vertical-align: middle;
- max-width: 100%;
-}
-
-.markdown h1 {
- color: #404040;
- font-weight: 500;
- line-height: 40px;
- margin-bottom: 24px;
-}
-
-.markdown h2,
-.markdown h3,
-.markdown h4,
-.markdown h5,
-.markdown h6 {
- color: #404040;
- margin: 1.6em 0 0.6em 0;
- font-weight: 500;
- clear: both;
-}
-
-.markdown h1 {
- font-size: 28px;
-}
-
-.markdown h2 {
- font-size: 22px;
-}
-
-.markdown h3 {
- font-size: 16px;
-}
-
-.markdown h4 {
- font-size: 14px;
-}
-
-.markdown h5 {
- font-size: 12px;
-}
-
-.markdown h6 {
- font-size: 12px;
-}
-
-.markdown hr {
- height: 1px;
- border: 0;
- background: #e9e9e9;
- margin: 16px 0;
- clear: both;
-}
-
-.markdown p {
- margin: 1em 0;
-}
-
-.markdown > p,
-.markdown > blockquote,
-.markdown > .highlight,
-.markdown > ol,
-.markdown > ul {
- width: 80%;
-}
-
-.markdown ul > li {
- list-style: circle;
-}
-
-.markdown > ul li,
-.markdown blockquote ul > li {
- margin-left: 20px;
- padding-left: 4px;
-}
-
-.markdown > ul li p,
-.markdown > ol li p {
- margin: 0.6em 0;
-}
-
-.markdown ol > li {
- list-style: decimal;
-}
-
-.markdown > ol li,
-.markdown blockquote ol > li {
- margin-left: 20px;
- padding-left: 4px;
-}
-
-.markdown code {
- margin: 0 3px;
- padding: 0 5px;
- background: #eee;
- border-radius: 3px;
-}
-
-.markdown strong,
-.markdown b {
- font-weight: 600;
-}
-
-.markdown > table {
- border-collapse: collapse;
- border-spacing: 0px;
- empty-cells: show;
- border: 1px solid #e9e9e9;
- width: 95%;
- margin-bottom: 24px;
-}
-
-.markdown > table th {
- white-space: nowrap;
- color: #333;
- font-weight: 600;
-}
-
-.markdown > table th,
-.markdown > table td {
- border: 1px solid #e9e9e9;
- padding: 8px 16px;
- text-align: left;
-}
-
-.markdown > table th {
- background: #f7f7f7;
-}
-
-.markdown blockquote {
- font-size: 90%;
- color: #999;
- border-left: 4px solid #e9e9e9;
- padding-left: 0.8em;
- margin: 1em 0;
-}
-
-.markdown blockquote p {
- margin: 0;
-}
-
-.markdown .anchor {
- opacity: 0;
- transition: opacity 0.3s ease;
- margin-left: 8px;
-}
-
-.markdown .waiting {
- color: #ccc;
-}
-
-.markdown h1:hover .anchor,
-.markdown h2:hover .anchor,
-.markdown h3:hover .anchor,
-.markdown h4:hover .anchor,
-.markdown h5:hover .anchor,
-.markdown h6:hover .anchor {
- opacity: 1;
- display: inline-block;
-}
-
-.markdown > br,
-.markdown > p > br {
- clear: both;
-}
-
-.hljs {
- display: block;
- background: white;
- padding: 0.5em;
- color: #333333;
- overflow-x: auto;
-}
-
-.hljs-comment,
-.hljs-meta {
- color: #969896;
-}
-
-.hljs-string,
-.hljs-variable,
-.hljs-template-variable,
-.hljs-strong,
-.hljs-emphasis,
-.hljs-quote {
- color: #df5000;
-}
-
-.hljs-keyword,
-.hljs-selector-tag,
-.hljs-type {
- color: #a71d5d;
-}
-
-.hljs-literal,
-.hljs-symbol,
-.hljs-bullet,
-.hljs-attribute {
- color: #0086b3;
-}
-
-.hljs-section,
-.hljs-name {
- color: #63a35c;
-}
-
-.hljs-tag {
- color: #333333;
-}
-
-.hljs-title,
-.hljs-attr,
-.hljs-selector-id,
-.hljs-selector-class,
-.hljs-selector-attr,
-.hljs-selector-pseudo {
- color: #795da3;
-}
-
-.hljs-addition {
- color: #55a532;
- background-color: #eaffea;
-}
-
-.hljs-deletion {
- color: #bd2c00;
- background-color: #ffecec;
-}
-
-.hljs-link {
- text-decoration: underline;
-}
-
-/* 代码高亮 */
-/* PrismJS 1.15.0
-https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
-/**
- * prism.js default theme for JavaScript, CSS and HTML
- * Based on dabblet (http://dabblet.com)
- * @author Lea Verou
- */
-code[class*='language-'],
-pre[class*='language-'] {
- color: black;
- background: none;
- text-shadow: 0 1px white;
- font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
- text-align: left;
- white-space: pre;
- word-spacing: normal;
- word-break: normal;
- word-wrap: normal;
- line-height: 1.5;
-
- -moz-tab-size: 4;
- -o-tab-size: 4;
- tab-size: 4;
-
- -webkit-hyphens: none;
- -moz-hyphens: none;
- -ms-hyphens: none;
- hyphens: none;
-}
-
-pre[class*='language-']::-moz-selection,
-pre[class*='language-'] ::-moz-selection,
-code[class*='language-']::-moz-selection,
-code[class*='language-'] ::-moz-selection {
- text-shadow: none;
- background: #b3d4fc;
-}
-
-pre[class*='language-']::selection,
-pre[class*='language-'] ::selection,
-code[class*='language-']::selection,
-code[class*='language-'] ::selection {
- text-shadow: none;
- background: #b3d4fc;
-}
-
-@media print {
- code[class*='language-'],
- pre[class*='language-'] {
- text-shadow: none;
- }
-}
-
-/* Code blocks */
-pre[class*='language-'] {
- padding: 1em;
- margin: 0.5em 0;
- overflow: auto;
-}
-
-:not(pre) > code[class*='language-'],
-pre[class*='language-'] {
- background: #f5f2f0;
-}
-
-/* Inline code */
-:not(pre) > code[class*='language-'] {
- padding: 0.1em;
- border-radius: 0.3em;
- white-space: normal;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
- color: slategray;
-}
-
-.token.punctuation {
- color: #999;
-}
-
-.namespace {
- opacity: 0.7;
-}
-
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
- color: #905;
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
- color: #690;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
- color: #9a6e3a;
- background: hsla(0, 0%, 100%, 0.5);
-}
-
-.token.atrule,
-.token.attr-value,
-.token.keyword {
- color: #07a;
-}
-
-.token.function,
-.token.class-name {
- color: #dd4a68;
-}
-
-.token.regex,
-.token.important,
-.token.variable {
- color: #e90;
-}
-
-.token.important,
-.token.bold {
- font-weight: bold;
-}
-
-.token.italic {
- font-style: italic;
-}
-
-.token.entity {
- cursor: help;
-}
diff --git a/sub-operation-service/src/assets/fonts/demo_index.html b/sub-operation-service/src/assets/fonts/demo_index.html
deleted file mode 100644
index 24647ea..0000000
--- a/sub-operation-service/src/assets/fonts/demo_index.html
+++ /dev/null
@@ -1,1223 +0,0 @@
-
-
-
-
- iconfont Demo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - Unicode
- - Font class
- - Symbol
-
-
-
查看项目
-
-
-
-
-
-
- -
-
-
销售明细
- 
-
-
- -
-
-
销售明细
- 
-
-
- -
-
-
充值记录
- 
-
-
- -
-
-
充值规则
- 
-
-
- -
-
-
用户画像
- 
-
-
- -
-
-
成就
- 
-
-
- -
-
-
我的-段位
- 
-
-
- -
-
-
皮肤
- 
-
-
- -
-
-
个人中心-积分商城
- 
-
-
- -
-
-
价值投资
- 
-
-
- -
-
-
费用统计
- 
-
-
- -
-
-
数据报表
- 
-
-
- -
-
-
游戏管理
- 
-
-
- -
-
-
banner
- 
-
-
- -
-
-
核销码核销
- 
-
-
- -
-
-
结算管理
- 
-
-
- -
-
-
退货退款
- 
-
-
- -
-
-
wechat
- 
-
-
- -
-
-
alipay
- 
-
-
- -
-
-
会员
- 
-
-
- -
-
-
我的优惠券
- 
-
-
- -
-
-
会员等级
- 
-
-
- -
-
-
活动
- 
-
-
- -
-
-
门店
- 
-
-
- -
-
-
会员
- 
-
-
- -
-
-
会员充值
- 
-
-
- -
-
-
营销
- 
-
-
- -
-
-
商品规格
- 
-
-
- -
-
-
商家入驻
- 
-
-
- -
-
-
小店商品库
- 
-
-
- -
-
-
商家列表
- 
-
-
- -
-
-
订单
- 
-
-
- -
-
-
权限
- 
-
-
- -
-
-
06商品-线性
- 
-
-
- -
-
-
菜单
- 
-
-
- -
-
-
dictionary
- 
-
-
- -
-
-
dictionary
- 
-
-
- -
-
-
new-role
- 
-
-
- -
-
-
327全屏
- 
-
-
- -
-
-
328退出全屏
- 
-
-
- -
-
-
表格
- 
-
-
- -
-
-
测试
- 
-
-
- -
-
-
中英文
- 
-
-
- -
-
-
方案列表-默认
- 
-
-
- -
-
-
文字大小
- 
-
-
-
-
-
Unicode 引用
-
-
-
Unicode 是字体在网页端最原始的应用方式,特点是:
-
- - 支持按字体的方式去动态调整图标大小,颜色等等。
- - 默认情况下不支持多色,直接添加多色图标会自动去色。
-
-
- 注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)
-
-
Unicode 使用步骤如下:
-
第一步:拷贝项目下面生成的 @font-face
-
@font-face {
- font-family: 'iconfont';
- src: url('iconfont.woff2?t=1725879404188') format('woff2'),
- url('iconfont.woff?t=1725879404188') format('woff'),
- url('iconfont.ttf?t=1725879404188') format('truetype');
-}
-
-
第二步:定义使用 iconfont 的样式
-
.iconfont {
- font-family: "iconfont" !important;
- font-size: 16px;
- font-style: normal;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-
第三步:挑选相应图标并获取字体编码,应用于页面
-
-<span class="iconfont">3</span>
-
-
- "iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。
-
-
-
-
-
-
- -
-
-
- 销售明细
-
- .icon-data4
-
-
-
- -
-
-
- 销售明细
-
- .icon-data5
-
-
-
- -
-
-
- 充值记录
-
- .icon-recharge-record
-
-
-
- -
-
-
- 充值规则
-
- .icon-recharge-rule
-
-
-
- -
-
-
- 用户画像
-
- .icon-user-profile
-
-
-
- -
-
-
- 成就
-
- .icon-achieve
-
-
-
- -
-
-
- 我的-段位
-
- .icon-activity-level
-
-
-
- -
-
-
- 皮肤
-
- .icon-skins
-
-
-
- -
-
-
- 个人中心-积分商城
-
- .icon-data1
-
-
-
- -
-
-
- 价值投资
-
- .icon-data2
-
-
-
- -
-
-
- 费用统计
-
- .icon-data3
-
-
-
- -
-
-
- 数据报表
-
- .icon-data
-
-
-
- -
-
-
- 游戏管理
-
- .icon-game
-
-
-
- -
-
-
- banner
-
- .icon-banner
-
-
-
- -
-
-
- 核销码核销
-
- .icon-verification
-
-
-
- -
-
-
- 结算管理
-
- .icon-balance
-
-
-
- -
-
-
- 退货退款
-
- .icon-refund
-
-
-
- -
-
-
- wechat
-
- .icon-wechat
-
-
-
- -
-
-
- alipay
-
- .icon-alipay
-
-
-
- -
-
-
- 会员
-
- .icon-user
-
-
-
- -
-
-
- 我的优惠券
-
- .icon-coupon
-
-
-
- -
-
-
- 会员等级
-
- .icon-level
-
-
-
- -
-
-
- 活动
-
- .icon-activity
-
-
-
- -
-
-
- 门店
-
- .icon-shop
-
-
-
- -
-
-
- 会员
-
- .icon-member
-
-
-
- -
-
-
- 会员充值
-
- .icon-recharge
-
-
-
- -
-
-
- 营销
-
- .icon-marketing
-
-
-
- -
-
-
- 商品规格
-
- .icon-goods-sku
-
-
-
- -
-
-
- 商家入驻
-
- .icon-store
-
-
-
- -
-
-
- 小店商品库
-
- .icon-goods-store
-
-
-
- -
-
-
- 商家列表
-
- .icon-storer
-
-
-
- -
-
-
- 订单
-
- .icon-order
-
-
-
- -
-
-
- 权限
-
- .icon-permission
-
-
-
- -
-
-
- 06商品-线性
-
- .icon-goods
-
-
-
- -
-
-
- 菜单
-
- .icon-menu
-
-
-
- -
-
-
- dictionary
-
- .icon-dict-type
-
-
-
- -
-
-
- dictionary
-
- .icon-dictionary
-
-
-
- -
-
-
- new-role
-
- .icon-role
-
-
-
- -
-
-
- 327全屏
-
- .icon-fullscreen
-
-
-
- -
-
-
- 328退出全屏
-
- .icon-exit-fullscreen
-
-
-
- -
-
-
- 表格
-
- .icon-table
-
-
-
- -
-
-
- 测试
-
- .icon-test
-
-
-
- -
-
-
- 中英文
-
- .icon-lang
-
-
-
- -
-
-
- 方案列表-默认
-
- .icon-demo
-
-
-
- -
-
-
- 文字大小
-
- .icon-size
-
-
-
-
-
-
font-class 引用
-
-
-
font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。
-
与 Unicode 使用方式相比,具有如下特点:
-
- - 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
- - 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
-
-
使用步骤如下:
-
第一步:引入项目下面生成的 fontclass 代码:
-
<link rel="stylesheet" href="./iconfont.css">
-
-
第二步:挑选相应图标并获取类名,应用于页面:
-
<span class="iconfont icon-xxx"></span>
-
-
- "
- iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。
-
-
-
-
-
-
- -
-
-
销售明细
- #icon-data4
-
-
- -
-
-
销售明细
- #icon-data5
-
-
- -
-
-
充值记录
- #icon-recharge-record
-
-
- -
-
-
充值规则
- #icon-recharge-rule
-
-
- -
-
-
用户画像
- #icon-user-profile
-
-
- -
-
-
成就
- #icon-achieve
-
-
- -
-
-
我的-段位
- #icon-activity-level
-
-
- -
-
-
皮肤
- #icon-skins
-
-
- -
-
-
个人中心-积分商城
- #icon-data1
-
-
- -
-
-
价值投资
- #icon-data2
-
-
- -
-
-
费用统计
- #icon-data3
-
-
- -
-
-
数据报表
- #icon-data
-
-
- -
-
-
游戏管理
- #icon-game
-
-
- -
-
-
banner
- #icon-banner
-
-
- -
-
-
核销码核销
- #icon-verification
-
-
- -
-
-
结算管理
- #icon-balance
-
-
- -
-
-
退货退款
- #icon-refund
-
-
- -
-
-
wechat
- #icon-wechat
-
-
- -
-
-
alipay
- #icon-alipay
-
-
- -
-
-
会员
- #icon-user
-
-
- -
-
-
我的优惠券
- #icon-coupon
-
-
- -
-
-
会员等级
- #icon-level
-
-
- -
-
-
活动
- #icon-activity
-
-
- -
-
-
门店
- #icon-shop
-
-
- -
-
-
会员
- #icon-member
-
-
- -
-
-
会员充值
- #icon-recharge
-
-
- -
-
-
营销
- #icon-marketing
-
-
- -
-
-
商品规格
- #icon-goods-sku
-
-
- -
-
-
商家入驻
- #icon-store
-
-
- -
-
-
小店商品库
- #icon-goods-store
-
-
- -
-
-
商家列表
- #icon-storer
-
-
- -
-
-
订单
- #icon-order
-
-
- -
-
-
权限
- #icon-permission
-
-
- -
-
-
06商品-线性
- #icon-goods
-
-
- -
-
-
菜单
- #icon-menu
-
-
- -
-
-
dictionary
- #icon-dict-type
-
-
- -
-
-
dictionary
- #icon-dictionary
-
-
- -
-
-
new-role
- #icon-role
-
-
- -
-
-
327全屏
- #icon-fullscreen
-
-
- -
-
-
328退出全屏
- #icon-exit-fullscreen
-
-
- -
-
-
表格
- #icon-table
-
-
- -
-
-
测试
- #icon-test
-
-
- -
-
-
中英文
- #icon-lang
-
-
- -
-
-
方案列表-默认
- #icon-demo
-
-
- -
-
-
文字大小
- #icon-size
-
-
-
-
-
Symbol 引用
-
-
-
这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章
- 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:
-
- - 支持多色图标了,不再受单色限制。
- - 通过一些技巧,支持像字体那样,通过
font-size
, color
来调整样式。
- - 兼容性较差,支持 IE9+,及现代浏览器。
- - 浏览器渲染 SVG 的性能一般,还不如 png。
-
-
使用步骤如下:
-
第一步:引入项目下面生成的 symbol 代码:
-
<script src="./iconfont.js"></script>
-
-
第二步:加入通用 CSS 代码(引入一次就行):
-
<style>
-.icon {
- width: 1em;
- height: 1em;
- vertical-align: -0.15em;
- fill: currentColor;
- overflow: hidden;
-}
-</style>
-
-
第三步:挑选相应图标并获取类名,应用于页面:
-
<svg class="icon" aria-hidden="true">
- <use xlink:href="#icon-xxx"></use>
-</svg>
-
-
-
-
-
-
-
-
-
diff --git a/sub-operation-service/src/assets/fonts/iconfont.css b/sub-operation-service/src/assets/fonts/iconfont.css
deleted file mode 100644
index 2109d60..0000000
--- a/sub-operation-service/src/assets/fonts/iconfont.css
+++ /dev/null
@@ -1,195 +0,0 @@
-@font-face {
- font-family: 'iconfont'; /* Project id 4425172 */
- src:
- url('iconfont.woff2?t=1725879404188') format('woff2'),
- url('iconfont.woff?t=1725879404188') format('woff'),
- url('iconfont.ttf?t=1725879404188') format('truetype');
-}
-
-.iconfont {
- font-family: 'iconfont' !important;
- font-size: 16px;
- font-style: normal;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-.icon-data4:before {
- content: '\e60c';
-}
-
-.icon-data5:before {
- content: '\e6be';
-}
-
-.icon-recharge-record:before {
- content: '\e614';
-}
-
-.icon-recharge-rule:before {
- content: '\e628';
-}
-
-.icon-user-profile:before {
- content: '\e783';
-}
-
-.icon-achieve:before {
- content: '\e616';
-}
-
-.icon-activity-level:before {
- content: '\e61a';
-}
-
-.icon-skins:before {
- content: '\e790';
-}
-
-.icon-data1:before {
- content: '\e996';
-}
-
-.icon-data2:before {
- content: '\e661';
-}
-
-.icon-data3:before {
- content: '\e632';
-}
-
-.icon-data:before {
- content: '\e64e';
-}
-
-.icon-game:before {
- content: '\e6d0';
-}
-
-.icon-banner:before {
- content: '\e613';
-}
-
-.icon-verification:before {
- content: '\e601';
-}
-
-.icon-balance:before {
- content: '\e6b9';
-}
-
-.icon-refund:before {
- content: '\e7af';
-}
-
-.icon-wechat:before {
- content: '\e681';
-}
-
-.icon-alipay:before {
- content: '\e61e';
-}
-
-.icon-user:before {
- content: '\e67f';
-}
-
-.icon-coupon:before {
- content: '\e65a';
-}
-
-.icon-level:before {
- content: '\e7d8';
-}
-
-.icon-activity:before {
- content: '\e67b';
-}
-
-.icon-shop:before {
- content: '\e60a';
-}
-
-.icon-member:before {
- content: '\e640';
-}
-
-.icon-recharge:before {
- content: '\e799';
-}
-
-.icon-marketing:before {
- content: '\e765';
-}
-
-.icon-goods-sku:before {
- content: '\e6d7';
-}
-
-.icon-store:before {
- content: '\e62b';
-}
-
-.icon-goods-store:before {
- content: '\e6c6';
-}
-
-.icon-storer:before {
- content: '\e64a';
-}
-
-.icon-order:before {
- content: '\e737';
-}
-
-.icon-permission:before {
- content: '\e612';
-}
-
-.icon-goods:before {
- content: '\e889';
-}
-
-.icon-menu:before {
- content: '\e60e';
-}
-
-.icon-dict-type:before {
- content: '\e652';
-}
-
-.icon-dictionary:before {
- content: '\e600';
-}
-
-.icon-role:before {
- content: '\e604';
-}
-
-.icon-fullscreen:before {
- content: '\e8fa';
-}
-
-.icon-exit-fullscreen:before {
- content: '\e8fb';
-}
-
-.icon-table:before {
- content: '\e615';
-}
-
-.icon-test:before {
- content: '\e610';
-}
-
-.icon-lang:before {
- content: '\e649';
-}
-
-.icon-demo:before {
- content: '\e6ee';
-}
-
-.icon-size:before {
- content: '\e660';
-}
diff --git a/sub-operation-service/src/assets/fonts/iconfont.js b/sub-operation-service/src/assets/fonts/iconfont.js
deleted file mode 100644
index af9a4d8..0000000
--- a/sub-operation-service/src/assets/fonts/iconfont.js
+++ /dev/null
@@ -1,65 +0,0 @@
-(window._iconfont_svg_string_4425172 =
- ''),
- ((h) => {
- var c = (l = (l = document.getElementsByTagName('script'))[l.length - 1]).getAttribute('data-injectcss'),
- l = l.getAttribute('data-disable-injectsvg');
- if (!l) {
- var a,
- t,
- v,
- o,
- i,
- z = function (c, l) {
- l.parentNode.insertBefore(c, l);
- };
- if (c && !h.__iconfont__svg__cssinject__) {
- h.__iconfont__svg__cssinject__ = !0;
- try {
- document.write(
- ''
- );
- } catch (c) {
- console && console.log(c);
- }
- }
- (a = function () {
- var c,
- l = document.createElement('div');
- (l.innerHTML = h._iconfont_svg_string_4425172),
- (l = l.getElementsByTagName('svg')[0]) &&
- (l.setAttribute('aria-hidden', 'true'),
- (l.style.position = 'absolute'),
- (l.style.width = 0),
- (l.style.height = 0),
- (l.style.overflow = 'hidden'),
- (l = l),
- (c = document.body).firstChild ? z(l, c.firstChild) : c.appendChild(l));
- }),
- document.addEventListener
- ? ~['complete', 'loaded', 'interactive'].indexOf(document.readyState)
- ? setTimeout(a, 0)
- : ((t = function () {
- document.removeEventListener('DOMContentLoaded', t, !1), a();
- }),
- document.addEventListener('DOMContentLoaded', t, !1))
- : document.attachEvent &&
- ((v = a),
- (o = h.document),
- (i = !1),
- s(),
- (o.onreadystatechange = function () {
- 'complete' == o.readyState && ((o.onreadystatechange = null), m());
- }));
- }
- function m() {
- i || ((i = !0), v());
- }
- function s() {
- try {
- o.documentElement.doScroll('left');
- } catch (c) {
- return void setTimeout(s, 50);
- }
- m();
- }
- })(window);
diff --git a/sub-operation-service/src/assets/fonts/iconfont.json b/sub-operation-service/src/assets/fonts/iconfont.json
deleted file mode 100644
index 93b8c53..0000000
--- a/sub-operation-service/src/assets/fonts/iconfont.json
+++ /dev/null
@@ -1,324 +0,0 @@
-{
- "id": "4425172",
- "name": "sub-vue",
- "font_family": "iconfont",
- "css_prefix_text": "icon-",
- "description": "react/vue项目后台管理平台",
- "glyphs": [
- {
- "icon_id": "1218184",
- "name": "销售明细",
- "font_class": "data4",
- "unicode": "e60c",
- "unicode_decimal": 58892
- },
- {
- "icon_id": "2230090",
- "name": "销售明细",
- "font_class": "data5",
- "unicode": "e6be",
- "unicode_decimal": 59070
- },
- {
- "icon_id": "6882983",
- "name": "充值记录",
- "font_class": "recharge-record",
- "unicode": "e614",
- "unicode_decimal": 58900
- },
- {
- "icon_id": "34611004",
- "name": "充值规则",
- "font_class": "recharge-rule",
- "unicode": "e628",
- "unicode_decimal": 58920
- },
- {
- "icon_id": "15562252",
- "name": "用户画像",
- "font_class": "user-profile",
- "unicode": "e783",
- "unicode_decimal": 59267
- },
- {
- "icon_id": "18747445",
- "name": "成就",
- "font_class": "achieve",
- "unicode": "e616",
- "unicode_decimal": 58902
- },
- {
- "icon_id": "33848542",
- "name": "我的-段位",
- "font_class": "activity-level",
- "unicode": "e61a",
- "unicode_decimal": 58906
- },
- {
- "icon_id": "20406821",
- "name": "皮肤",
- "font_class": "skins",
- "unicode": "e790",
- "unicode_decimal": 59280
- },
- {
- "icon_id": "2214847",
- "name": "个人中心-积分商城",
- "font_class": "data1",
- "unicode": "e996",
- "unicode_decimal": 59798
- },
- {
- "icon_id": "14233304",
- "name": "价值投资",
- "font_class": "data2",
- "unicode": "e661",
- "unicode_decimal": 58977
- },
- {
- "icon_id": "23059951",
- "name": "费用统计",
- "font_class": "data3",
- "unicode": "e632",
- "unicode_decimal": 58930
- },
- {
- "icon_id": "2199049",
- "name": "数据报表",
- "font_class": "data",
- "unicode": "e64e",
- "unicode_decimal": 58958
- },
- {
- "icon_id": "36257316",
- "name": "游戏管理",
- "font_class": "game",
- "unicode": "e6d0",
- "unicode_decimal": 59088
- },
- {
- "icon_id": "11913396",
- "name": "banner",
- "font_class": "banner",
- "unicode": "e613",
- "unicode_decimal": 58899
- },
- {
- "icon_id": "35264323",
- "name": "核销码核销",
- "font_class": "verification",
- "unicode": "e601",
- "unicode_decimal": 58881
- },
- {
- "icon_id": "6514128",
- "name": "结算管理",
- "font_class": "balance",
- "unicode": "e6b9",
- "unicode_decimal": 59065
- },
- {
- "icon_id": "12025983",
- "name": "退货退款",
- "font_class": "refund",
- "unicode": "e7af",
- "unicode_decimal": 59311
- },
- {
- "icon_id": "1207908",
- "name": "wechat",
- "font_class": "wechat",
- "unicode": "e681",
- "unicode_decimal": 59009
- },
- {
- "icon_id": "27188513",
- "name": "alipay",
- "font_class": "alipay",
- "unicode": "e61e",
- "unicode_decimal": 58910
- },
- {
- "icon_id": "11111017",
- "name": "会员",
- "font_class": "user",
- "unicode": "e67f",
- "unicode_decimal": 59007
- },
- {
- "icon_id": "630079",
- "name": "我的优惠券",
- "font_class": "coupon",
- "unicode": "e65a",
- "unicode_decimal": 58970
- },
- {
- "icon_id": "2046370",
- "name": "会员等级",
- "font_class": "level",
- "unicode": "e7d8",
- "unicode_decimal": 59352
- },
- {
- "icon_id": "2569868",
- "name": "活动",
- "font_class": "activity",
- "unicode": "e67b",
- "unicode_decimal": 59003
- },
- {
- "icon_id": "2681698",
- "name": "门店",
- "font_class": "shop",
- "unicode": "e60a",
- "unicode_decimal": 58890
- },
- {
- "icon_id": "2811147",
- "name": "会员",
- "font_class": "member",
- "unicode": "e640",
- "unicode_decimal": 58944
- },
- {
- "icon_id": "4560182",
- "name": "会员充值",
- "font_class": "recharge",
- "unicode": "e799",
- "unicode_decimal": 59289
- },
- {
- "icon_id": "5880283",
- "name": "营销",
- "font_class": "marketing",
- "unicode": "e765",
- "unicode_decimal": 59237
- },
- {
- "icon_id": "6982618",
- "name": "商品规格",
- "font_class": "goods-sku",
- "unicode": "e6d7",
- "unicode_decimal": 59095
- },
- {
- "icon_id": "7307041",
- "name": "商家入驻",
- "font_class": "store",
- "unicode": "e62b",
- "unicode_decimal": 58923
- },
- {
- "icon_id": "11639867",
- "name": "小店商品库",
- "font_class": "goods-store",
- "unicode": "e6c6",
- "unicode_decimal": 59078
- },
- {
- "icon_id": "13872198",
- "name": "商家列表",
- "font_class": "storer",
- "unicode": "e64a",
- "unicode_decimal": 58954
- },
- {
- "icon_id": "577335",
- "name": "订单",
- "font_class": "order",
- "unicode": "e737",
- "unicode_decimal": 59191
- },
- {
- "icon_id": "736503",
- "name": "权限",
- "font_class": "permission",
- "unicode": "e612",
- "unicode_decimal": 58898
- },
- {
- "icon_id": "1727271",
- "name": "06商品-线性",
- "font_class": "goods",
- "unicode": "e889",
- "unicode_decimal": 59529
- },
- {
- "icon_id": "7587933",
- "name": "菜单",
- "font_class": "menu",
- "unicode": "e60e",
- "unicode_decimal": 58894
- },
- {
- "icon_id": "12758820",
- "name": "dictionary",
- "font_class": "dict-type",
- "unicode": "e652",
- "unicode_decimal": 58962
- },
- {
- "icon_id": "13768112",
- "name": "dictionary",
- "font_class": "dictionary",
- "unicode": "e600",
- "unicode_decimal": 58880
- },
- {
- "icon_id": "37734141",
- "name": "new-role",
- "font_class": "role",
- "unicode": "e604",
- "unicode_decimal": 58884
- },
- {
- "icon_id": "1727563",
- "name": "327全屏",
- "font_class": "fullscreen",
- "unicode": "e8fa",
- "unicode_decimal": 59642
- },
- {
- "icon_id": "1727566",
- "name": "328退出全屏",
- "font_class": "exit-fullscreen",
- "unicode": "e8fb",
- "unicode_decimal": 59643
- },
- {
- "icon_id": "11641852",
- "name": "表格",
- "font_class": "table",
- "unicode": "e615",
- "unicode_decimal": 58901
- },
- {
- "icon_id": "20104468",
- "name": "测试",
- "font_class": "test",
- "unicode": "e610",
- "unicode_decimal": 58896
- },
- {
- "icon_id": "26686335",
- "name": "中英文",
- "font_class": "lang",
- "unicode": "e649",
- "unicode_decimal": 58953
- },
- {
- "icon_id": "30012547",
- "name": "方案列表-默认",
- "font_class": "demo",
- "unicode": "e6ee",
- "unicode_decimal": 59118
- },
- {
- "icon_id": "37702310",
- "name": "文字大小",
- "font_class": "size",
- "unicode": "e660",
- "unicode_decimal": 58976
- }
- ]
-}
diff --git a/sub-operation-service/src/assets/fonts/iconfont.ttf b/sub-operation-service/src/assets/fonts/iconfont.ttf
deleted file mode 100644
index cdae45d..0000000
Binary files a/sub-operation-service/src/assets/fonts/iconfont.ttf and /dev/null differ
diff --git a/sub-operation-service/src/assets/fonts/iconfont.woff b/sub-operation-service/src/assets/fonts/iconfont.woff
deleted file mode 100644
index 441c64b..0000000
Binary files a/sub-operation-service/src/assets/fonts/iconfont.woff and /dev/null differ
diff --git a/sub-operation-service/src/assets/fonts/iconfont.woff2 b/sub-operation-service/src/assets/fonts/iconfont.woff2
deleted file mode 100644
index f10f094..0000000
Binary files a/sub-operation-service/src/assets/fonts/iconfont.woff2 and /dev/null differ
diff --git a/sub-operation-service/src/components/page-layout/index.vue b/sub-operation-service/src/components/page-layout/index.vue
new file mode 100644
index 0000000..13ebba5
--- /dev/null
+++ b/sub-operation-service/src/components/page-layout/index.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
diff --git a/sub-operation-service/src/components/page-menu/index-bak.vue b/sub-operation-service/src/components/page-menu/index-bak.vue
new file mode 100644
index 0000000..211e932
--- /dev/null
+++ b/sub-operation-service/src/components/page-menu/index-bak.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
diff --git a/sub-operation-service/src/components/page-menu/index.vue b/sub-operation-service/src/components/page-menu/index.vue
new file mode 100644
index 0000000..c5dfd6e
--- /dev/null
+++ b/sub-operation-service/src/components/page-menu/index.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
diff --git a/sub-operation-service/src/components/page-pagination/index.vue b/sub-operation-service/src/components/page-pagination/index.vue
new file mode 100644
index 0000000..6a5a058
--- /dev/null
+++ b/sub-operation-service/src/components/page-pagination/index.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
diff --git a/sub-operation-service/src/layouts/component/Header/index.vue b/sub-operation-service/src/layouts/component/Header/index.vue
index 155d9e1..a2f2e00 100644
--- a/sub-operation-service/src/layouts/component/Header/index.vue
+++ b/sub-operation-service/src/layouts/component/Header/index.vue
@@ -14,9 +14,13 @@