优化
This commit is contained in:
18
package-lock.json
generated
18
package-lock.json
generated
@@ -11,6 +11,7 @@
|
||||
"axios": "^1.8.4",
|
||||
"core-js": "^3.8.3",
|
||||
"echarts": "^5.6.0",
|
||||
"echarts-gl": "^2.0.9",
|
||||
"element-plus": "^2.9.7",
|
||||
"pinia": "^3.0.1",
|
||||
"qwebchannel": "^6.2.0",
|
||||
@@ -5155,6 +5156,11 @@
|
||||
"node": ">=6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/claygl": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/claygl/-/claygl-1.3.0.tgz",
|
||||
"integrity": "sha512-+gGtJjT6SSHD2l2yC3MCubW/sCV40tZuSs5opdtn79vFSGUgp/lH139RNEQ6Jy078/L0aV8odCw8RSrUcMfLaQ=="
|
||||
},
|
||||
"node_modules/clean-css": {
|
||||
"version": "5.3.3",
|
||||
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
|
||||
@@ -6519,6 +6525,18 @@
|
||||
"zrender": "5.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/echarts-gl": {
|
||||
"version": "2.0.9",
|
||||
"resolved": "https://registry.npmjs.org/echarts-gl/-/echarts-gl-2.0.9.tgz",
|
||||
"integrity": "sha512-oKeMdkkkpJGWOzjgZUsF41DOh6cMsyrGGXimbjK2l6Xeq/dBQu4ShG2w2Dzrs/1bD27b2pLTGSaUzouY191gzA==",
|
||||
"dependencies": {
|
||||
"claygl": "^1.2.1",
|
||||
"zrender": "^5.1.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"echarts": "^5.1.2"
|
||||
}
|
||||
},
|
||||
"node_modules/echarts/node_modules/tslib": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
"axios": "^1.8.4",
|
||||
"core-js": "^3.8.3",
|
||||
"echarts": "^5.6.0",
|
||||
"echarts-gl": "^2.0.9",
|
||||
"element-plus": "^2.9.7",
|
||||
"pinia": "^3.0.1",
|
||||
"qwebchannel": "^6.2.0",
|
||||
|
||||
@@ -2,7 +2,7 @@ import { getAxios, postAxios, downFile } from '@/utils/axios.js'
|
||||
|
||||
//登录
|
||||
export function login(data) {
|
||||
return postAxios({ url: 'api/user/doLogin', data })
|
||||
return postAxios({ url: 'account/login', data })
|
||||
}
|
||||
|
||||
//ai
|
||||
|
||||
@@ -4,40 +4,39 @@ import HomeView from '../views/HomeView.vue'
|
||||
const routes = [
|
||||
{
|
||||
path: '/',
|
||||
name: 'home',
|
||||
name: 'login',
|
||||
component: HomeView
|
||||
},
|
||||
|
||||
{
|
||||
path: '/nav',
|
||||
name: 'nav',
|
||||
redirect: '/nav/Home', // 默认跳转
|
||||
component: () => import(/* webpackChunkName: "hostsList" */ '../views/nav.vue'),
|
||||
redirect: '/nav/home', // 默认跳转
|
||||
component: () => import( '../views/nav.vue'),
|
||||
children: [
|
||||
{
|
||||
path: 'Home',
|
||||
name: 'Home',
|
||||
component: () => import(/* webpackChunkName: "hostsList" */ '../views/hosts/Home.vue'),
|
||||
path: 'home',
|
||||
name: 'home',
|
||||
component: () => import( '../views/hosts/Home.vue'),
|
||||
},
|
||||
{
|
||||
path: 'scriptManagement',
|
||||
name: 'scriptManagement',
|
||||
component: () => import(/* webpackChunkName: "hostsList" */ '../views/hosts/ai/scriptManagement.vue'),
|
||||
component: () => import( '../views/hosts/ai/scriptManagement.vue'),
|
||||
},
|
||||
{
|
||||
path: 'LanguageManagement',
|
||||
name: 'LanguageManagement',
|
||||
component: () => import(/* webpackChunkName: "hostsList" */ '../views/hosts/ai/LanguageManagement.vue'),
|
||||
component: () => import( '../views/hosts/ai/LanguageManagement.vue'),
|
||||
},
|
||||
{
|
||||
path: 'miniAM',
|
||||
name: 'miniAM',
|
||||
component: () => import(/* webpackChunkName: "hostsList" */ '../views/hosts/mini/miniAM.vue'),
|
||||
component: () => import( '../views/hosts/mini/miniAM.vue'),
|
||||
},
|
||||
{
|
||||
path: 'miniIntegral',
|
||||
name: 'miniIntegral',
|
||||
component: () => import(/* webpackChunkName: "hostsList" */ '../views/hosts/mini/miniIntegral.vue'),
|
||||
component: () => import( '../views/hosts/mini/miniIntegral.vue'),
|
||||
},
|
||||
]
|
||||
}
|
||||
@@ -47,4 +46,22 @@ const router = createRouter({
|
||||
routes
|
||||
})
|
||||
|
||||
// 添加导航守卫
|
||||
router.beforeEach((to, from, next) => {
|
||||
// 假设你有一个方法来检查用户是否已登录
|
||||
const isAuthenticated = () => {
|
||||
return localStorage.getItem('token') == 1;
|
||||
};
|
||||
|
||||
// 定义需要登录才能访问的路由
|
||||
const requiresAuth = ['nav','home', 'scriptManagement', 'LanguageManagement', 'miniAM', 'miniIntegral'];
|
||||
|
||||
// 如果需要登录且用户未登录,则重定向到登录页面
|
||||
if (requiresAuth.includes(to.name) && !isAuthenticated()) {
|
||||
next({ name: 'login' });
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
});
|
||||
|
||||
export default router
|
||||
|
||||
@@ -30,9 +30,6 @@ if (process.env.NODE_ENV === 'development') {
|
||||
// 请求拦截器
|
||||
axios.interceptors.request.use((config) => {
|
||||
const url = sliceUrl(config.url)
|
||||
// if (!(config.url == 'templateList' || config.url == 'languageList')) {
|
||||
// config.headers['vvtoken'] = getToken();
|
||||
// }
|
||||
|
||||
// 请求超时时间 - 毫秒
|
||||
config.timeout = 60000
|
||||
@@ -49,10 +46,9 @@ axios.interceptors.response.use((response) => {
|
||||
if (response.data.code == '200') {
|
||||
return response.data.data
|
||||
} else {
|
||||
router.push('/')
|
||||
ElMessage.error(response.data.code + '' + response.data.message);
|
||||
ElMessage.error(response.data.code + '' + response.data.msg);
|
||||
return Promise.reject(response.data.msg);
|
||||
}
|
||||
|
||||
}, (error) => {
|
||||
// 可添加请求失败后的处理逻辑
|
||||
return Promise.reject(error)
|
||||
|
||||
@@ -69,10 +69,9 @@
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { login, getIdByName } from '@/api/account';
|
||||
import { getToken, setToken, setUser, setUserPass, getUserPass } from '@/utils/storage';
|
||||
import { login} from '@/api/account';
|
||||
import { setUserPass, getUserPass,setToken } from '@/utils/storage';
|
||||
import { ElLoading } from 'element-plus';
|
||||
import { usePythonBridge } from '@/utils/pythonBridge'
|
||||
|
||||
|
||||
// const { getVersion } = usePythonBridge();
|
||||
@@ -104,24 +103,19 @@ const onSubmit = () => {
|
||||
background: 'rgba(0, 0, 0, 0.7)',
|
||||
});
|
||||
setUserPass(formData.value);
|
||||
getIdByName(formData.value.tenantName).then((tenantId) => {
|
||||
console.log(tenantId)
|
||||
login({
|
||||
// tenantId: Number(tenantId),
|
||||
username: formData.value.userId,
|
||||
password: formData.value.password,
|
||||
account: formData.value.userId,
|
||||
pwd: formData.value.password,
|
||||
}).then((res) => {
|
||||
loading.close();
|
||||
console.log(res)
|
||||
setToken(res.tokenValue);
|
||||
setUser(res);
|
||||
router.push('/nav');
|
||||
if (res == 1) {
|
||||
setToken(res);
|
||||
router.push("/nav");
|
||||
}
|
||||
}).catch((err) => {
|
||||
loading.close();
|
||||
console.log(err);
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,31 +1,59 @@
|
||||
<template>
|
||||
<div class="home">
|
||||
|
||||
|
||||
<!-- <div id="main" class="main"></div> -->
|
||||
<div class="noData">
|
||||
暂无数据
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref, // 响应式基础
|
||||
watch, // 侦听器
|
||||
onMounted, // 组件挂载完成后执行
|
||||
onUpdated, // 组件更新后执行
|
||||
onUnmounted, // 组件销毁前执行
|
||||
} from "vue";
|
||||
const refname = ref('');
|
||||
watch(refname, async (newQuestion, oldQuestion) => {
|
||||
// 变化后执行
|
||||
});
|
||||
onMounted(() => {
|
||||
// 组件挂载完成后执行
|
||||
});
|
||||
onUpdated(() => {
|
||||
// 组件更新后执行
|
||||
});
|
||||
onUnmounted(() => {
|
||||
// 组件销毁前执行
|
||||
});
|
||||
// <script setup>
|
||||
// import { ref, watch, onMounted, onUpdated, onUnmounted } from "vue";
|
||||
// const refname = ref('');
|
||||
|
||||
// const echarts = require('echarts/lib/echarts');
|
||||
// require('echarts/lib/component/grid');
|
||||
// require('echarts/lib/chart/bar');
|
||||
|
||||
// const initChart = () => {
|
||||
// var chartDom = document.getElementById('main');
|
||||
// var myChart = echarts.init(chartDom);
|
||||
// var option = {
|
||||
// xAxis: {
|
||||
// type: 'category',
|
||||
// data: ['用户量', '123', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
||||
// },
|
||||
// yAxis: {
|
||||
// type: 'value'
|
||||
// },
|
||||
// series: [
|
||||
// {
|
||||
// data: [120, 200, 150, 80, 70, 110, 130],
|
||||
// type: 'bar'
|
||||
// }
|
||||
// ]
|
||||
// };
|
||||
// myChart.setOption(option);
|
||||
// };
|
||||
|
||||
// watch(refname, (newQuestion) => {
|
||||
// // 变化后执行
|
||||
// // 如果 refname 的变化影响图表数据,可以在这里更新 option 并调用 myChart.setOption(option)
|
||||
// });
|
||||
|
||||
// onMounted(() => {
|
||||
// initChart();
|
||||
// });
|
||||
|
||||
// onUpdated(() => {
|
||||
// // 组件更新后执行
|
||||
// // 如果需要根据更新重新初始化图表或更新数据,可以在这里添加逻辑
|
||||
// });
|
||||
|
||||
// onUnmounted(() => {
|
||||
// // 组件销毁前执行
|
||||
// // 如果需要销毁图表实例以释放资源,可以在这里添加逻辑
|
||||
// });
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@@ -34,5 +62,16 @@ onUnmounted(() => {
|
||||
height: 100%;
|
||||
background-color: #ffffff;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
</style>
|
||||
.noData{
|
||||
font-size: 20px;
|
||||
color: #999999;
|
||||
}
|
||||
.main{
|
||||
width: 40%;
|
||||
height: 40%;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -157,13 +157,13 @@ function handleSaveWordsAdd() {
|
||||
});
|
||||
return;
|
||||
}
|
||||
wordsAddStatus.value = false;
|
||||
addDialog(wordsAddData.value)
|
||||
.then(() => {
|
||||
ElMessage({
|
||||
type: "success",
|
||||
message: "添加成功",
|
||||
});
|
||||
wordsAddStatus.value = false;
|
||||
getLanguageListDataFn();
|
||||
})
|
||||
.catch(() => {
|
||||
@@ -224,8 +224,7 @@ function handleDelete(id) {
|
||||
function getLanguageListDataFn() {
|
||||
getDialogList().then((res) => {
|
||||
getDialogListData.value = res;
|
||||
});
|
||||
getLanguageList().then((res) => {
|
||||
getLanguageList().then((res) => {
|
||||
getLanguageListData.value = res;
|
||||
LanguageData.value = mergeArrays(
|
||||
getDialogListData.value,
|
||||
@@ -233,6 +232,7 @@ function getLanguageListDataFn() {
|
||||
);
|
||||
console.log("LanguageData", LanguageData.value);
|
||||
});
|
||||
});
|
||||
}
|
||||
watch(refname, async (newQuestion, oldQuestion) => {
|
||||
// 变化后执行
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
<template>
|
||||
<div class="miniAM">
|
||||
小程序账号管理
|
||||
<div class="noData">
|
||||
暂无数据
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -33,6 +35,13 @@ onUnmounted(() => {
|
||||
height: 100%;
|
||||
background-color: #ffffff;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.noData{
|
||||
font-size: 20px;
|
||||
color: #999999;
|
||||
}
|
||||
/* 样式定义 */
|
||||
</style>
|
||||
@@ -44,7 +44,7 @@
|
||||
<span>Ai管理</span>
|
||||
</template>
|
||||
<el-menu-item-group>
|
||||
<template #title><span>Ai</span></template>
|
||||
<template #title v-if="isCollapse"><span>Ai</span></template>
|
||||
<el-menu-item index="/nav/scriptManagement">话术管理</el-menu-item>
|
||||
<el-menu-item index="/nav/LanguageManagement">语言管理</el-menu-item>
|
||||
</el-menu-item-group>
|
||||
@@ -56,7 +56,7 @@
|
||||
<span>小程序管理</span>
|
||||
</template>
|
||||
<el-menu-item-group>
|
||||
<template #title><span>小程序</span></template>
|
||||
<template #title v-if="isCollapse"><span>小程序</span></template>
|
||||
<el-menu-item index="/nav/miniAM">账号管理</el-menu-item>
|
||||
<el-menu-item index="/nav/miniIntegral">积分配置</el-menu-item>
|
||||
</el-menu-item-group>
|
||||
|
||||
Reference in New Issue
Block a user