更改id类型为string

This commit is contained in:
2026-03-19 15:41:02 +08:00
parent bbc10ce359
commit e94204423b
14 changed files with 75 additions and 53 deletions

View File

@@ -12,7 +12,7 @@ ENV = 'development'
# 主服务地址端口8808 # 主服务地址端口8808
# 用途: 系统管理、用户认证、权限控制、模块开通等原有功能 # 用途: 系统管理、用户认证、权限控制、模块开通等原有功能
VITE_API_URL = 'http://192.168.100.162:8808/' VITE_API_URL = 'http://192.168.3.11:8808/'
# 新功能服务地址端口8000 # 新功能服务地址端口8000
# 用途: 资产管理、分类、SKU、订单等新业务模块 # 用途: 资产管理、分类、SKU、订单等新业务模块
VITE_NEW_API_URL = 'http://192.168.100.162:8000/' VITE_NEW_API_URL = 'http://192.168.3.11:8000/'

View File

@@ -12,11 +12,11 @@ export function getCategoryTree(query?: Object) {
} }
// 获取分类详情 // 获取分类详情
export function getCategory(id: number) { export function getCategory(id: number | string) {
return newService({ return newService({
url: '/assets/category/getCategory', url: '/assets/category/getCategory',
method: 'get', method: 'get',
params: { id }, params: { id: id.toString() },
}); });
} }
@@ -56,19 +56,19 @@ export function updateCategory(data: object) {
} }
// 删除分类 // 删除分类
export function deleteCategory(id: number) { export function deleteCategory(id: number | string) {
return newService({ return newService({
url: '/assets/category/deleteCategory', url: '/assets/category/deleteCategory',
method: 'delete', method: 'delete',
params: { id }, params: { id: id.toString() },
}); });
} }
// 更新分类状态 // 更新分类状态
export function updateCategoryStatus(id: number, status: number) { export function updateCategoryStatus(id: number | string, status: number) {
return newService({ return newService({
url: '/assets/category/updateCategoryStatus', url: '/assets/category/updateCategoryStatus',
method: 'put', method: 'put',
data: { id, status }, data: { id: id.toString(), status },
}); });
} }

View File

@@ -9,7 +9,7 @@ export function getConfigList(query:Object) {
}) })
} }
export function getConfig(id:number) { export function getConfig(id:string) {
return request({ return request({
url: '/api/v1/system/config/get', url: '/api/v1/system/config/get',
method: 'get', method: 'get',
@@ -33,7 +33,7 @@ export function editConfig(data:any) {
}) })
} }
export function deleteConfig(ids:number[]) { export function deleteConfig(ids:string[]) {
return request({ return request({
url: '/api/v1/system/config/delete', url: '/api/v1/system/config/delete',
method: 'delete', method: 'delete',

View File

@@ -9,7 +9,7 @@ export function listSysUserOnline(query:object) {
}) })
} }
export function forceLogout(ids:number[]) { export function forceLogout(ids:string[]) {
return request({ return request({
url: '/api/v1/system/online/forceLogout', url: '/api/v1/system/online/forceLogout',
method: 'delete', method: 'delete',

View File

@@ -23,7 +23,7 @@ export function addRole(data:object) {
}) })
} }
export function getRole(id:number) { export function getRole(id:string) {
return request({ return request({
url: '/api/v1/system/role/get', url: '/api/v1/system/role/get',
method: 'get', method: 'get',
@@ -41,7 +41,7 @@ export function editRole(data:object) {
} }
export function deleteRole(id:number) { export function deleteRole(id:string) {
return request({ return request({
url: '/api/v1/system/role/delete', url: '/api/v1/system/role/delete',
method: 'delete', method: 'delete',
@@ -59,7 +59,7 @@ export function dataScope(data:any) {
// 根据角色ID查询部门树结构 // 根据角色ID查询部门树结构
export function roleDeptTreeSelect(roleId:number) { export function roleDeptTreeSelect(roleId:string) {
return request({ return request({
url: '/api/v1/system/role/deptTreeSelect', url: '/api/v1/system/role/deptTreeSelect',
method: 'get', method: 'get',

View File

@@ -129,7 +129,7 @@ import { getDicts } from '/@/api/system/dict/data';
import { createFormDiff } from '/@/utils/diffUtils'; import { createFormDiff } from '/@/utils/diffUtils';
interface CategoryRow { interface CategoryRow {
id: number; id: string;
name: string; name: string;
level: number; level: number;
options?: string[]; options?: string[];
@@ -163,7 +163,7 @@ interface DictValue {
} }
interface RuleForm { interface RuleForm {
id: number | ''; id: string | '';
parentId: string; parentId: string;
name: string; name: string;
sort: number; sort: number;
@@ -324,7 +324,18 @@ const openDialog = (row?: CategoryRow | string, edit?: boolean) => {
// 获取分类树数据 // 获取分类树数据
getCategoryTree().then((res: any) => { getCategoryTree().then((res: any) => {
categoryData.value = res.data?.tree ?? []; const tree = res.data?.tree ?? [];
// 递归函数将所有id字段转换为字符串
const convertIdsToString = (items: any[]): any[] => {
return items.map(item => ({
...item,
id: item.id?.toString(),
children: item.children && item.children.length > 0 ? convertIdsToString(item.children) : []
}));
};
categoryData.value = convertIdsToString(tree);
}); });
if (row && typeof row === 'object' && edit) { if (row && typeof row === 'object' && edit) {

View File

@@ -73,7 +73,7 @@ import OperationLogDialog from '../component/operationLogDialog.vue';
import { getCategoryTree, deleteCategory, updateCategoryStatus,listCategories } from '/@/api/assets/category'; import { getCategoryTree, deleteCategory, updateCategoryStatus,listCategories } from '/@/api/assets/category';
interface CategoryRow { interface CategoryRow {
id: number; id: string;
name: string; name: string;
level: number; level: number;
type: string; type: string;
@@ -102,7 +102,18 @@ const getCategoryList = () => {
.then((res: any) => { .then((res: any) => {
// 主类目不做展示直接取主类目的children // 主类目不做展示直接取主类目的children
const tree = res.data?.tree ?? []; const tree = res.data?.tree ?? [];
tableData.data = tree.length > 0 && tree[0].children ? tree[0].children : [];
// 递归函数将所有id字段转换为字符串
const convertIdsToString = (items: any[]): any[] => {
return items.map(item => ({
...item,
id: item.id?.toString(),
children: item.children && item.children.length > 0 ? convertIdsToString(item.children) : []
}));
};
const processedTree = convertIdsToString(tree);
tableData.data = processedTree.length > 0 && processedTree[0].children ? processedTree[0].children : [];
}) })
.catch(() => { .catch(() => {
tableData.data = []; tableData.data = [];

View File

@@ -111,7 +111,7 @@ import { ref, reactive, onMounted } from 'vue';
import { ElMessage, ElMessageBox } from 'element-plus'; import { ElMessage, ElMessageBox } from 'element-plus';
interface VideoItem { interface VideoItem {
id: number; id: string;
name: string; name: string;
thumbnail: string; thumbnail: string;
videoType: string; videoType: string;
@@ -141,7 +141,7 @@ const previewVideo = ref<VideoItem | null>(null);
// 模拟数据 // 模拟数据
const mockData: VideoItem[] = [ const mockData: VideoItem[] = [
{ {
id: 1, id: '1',
name: '商务男性数字人-产品介绍', name: '商务男性数字人-产品介绍',
thumbnail: 'https://picsum.photos/400/225?random=10', thumbnail: 'https://picsum.photos/400/225?random=10',
videoType: 'avatar', videoType: 'avatar',
@@ -154,7 +154,7 @@ const mockData: VideoItem[] = [
createdAt: '2024-01-15 10:30:00', createdAt: '2024-01-15 10:30:00',
}, },
{ {
id: 2, id: '2',
name: '甜美女性数字人-直播带货', name: '甜美女性数字人-直播带货',
thumbnail: 'https://picsum.photos/400/225?random=11', thumbnail: 'https://picsum.photos/400/225?random=11',
videoType: 'avatar', videoType: 'avatar',
@@ -167,7 +167,7 @@ const mockData: VideoItem[] = [
createdAt: '2024-01-14 14:20:00', createdAt: '2024-01-14 14:20:00',
}, },
{ {
id: 3, id: '3',
name: '科技感背景-蓝色粒子', name: '科技感背景-蓝色粒子',
thumbnail: 'https://picsum.photos/400/225?random=12', thumbnail: 'https://picsum.photos/400/225?random=12',
videoType: 'background', videoType: 'background',
@@ -180,7 +180,7 @@ const mockData: VideoItem[] = [
createdAt: '2024-01-13 09:15:00', createdAt: '2024-01-13 09:15:00',
}, },
{ {
id: 4, id: '4',
name: '办公室场景背景', name: '办公室场景背景',
thumbnail: 'https://picsum.photos/400/225?random=13', thumbnail: 'https://picsum.photos/400/225?random=13',
videoType: 'background', videoType: 'background',
@@ -193,7 +193,7 @@ const mockData: VideoItem[] = [
createdAt: '2024-01-12 16:45:00', createdAt: '2024-01-12 16:45:00',
}, },
{ {
id: 5, id: '5',
name: '转场特效-渐变', name: '转场特效-渐变',
thumbnail: 'https://picsum.photos/400/225?random=14', thumbnail: 'https://picsum.photos/400/225?random=14',
videoType: 'material', videoType: 'material',
@@ -206,7 +206,7 @@ const mockData: VideoItem[] = [
createdAt: '2024-01-11 11:00:00', createdAt: '2024-01-11 11:00:00',
}, },
{ {
id: 6, id: '6',
name: '知性女性数字人-新闻播报', name: '知性女性数字人-新闻播报',
thumbnail: 'https://picsum.photos/400/225?random=15', thumbnail: 'https://picsum.photos/400/225?random=15',
videoType: 'avatar', videoType: 'avatar',

View File

@@ -1,6 +1,6 @@
<template> <template>
<div class="system-edit-dic-container"> <div class="system-edit-dic-container">
<el-dialog :title="(ruleForm.configId!==0?'修改':'添加')+'参数'" v-model="isShowDialog" width="769px"> <el-dialog :title="(ruleForm.configId!==''?'修改':'添加')+'参数'" v-model="isShowDialog" width="769px">
<el-form :model="ruleForm" ref="formRef" :rules="rules" size="default" label-width="90px"> <el-form :model="ruleForm" ref="formRef" :rules="rules" size="default" label-width="90px">
<el-form-item label="参数名称" prop="configName"> <el-form-item label="参数名称" prop="configName">
<el-input v-model="ruleForm.configName" placeholder="请输入参数名称" /> <el-input v-model="ruleForm.configName" placeholder="请输入参数名称" />
@@ -27,7 +27,7 @@
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="onCancel" size="default"> </el-button> <el-button @click="onCancel" size="default"> </el-button>
<el-button type="primary" @click="onSubmit" size="default">{{ruleForm.configId!==0?'修 改':'添 加'}}</el-button> <el-button type="primary" @click="onSubmit" size="default">{{ruleForm.configId!==''?'修 改':'添 加'}}</el-button>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
@@ -39,7 +39,7 @@ import { reactive, toRefs, defineComponent,ref, unref } from 'vue';
import {ElMessage} from "element-plus"; import {ElMessage} from "element-plus";
import {addConfig, editConfig, getConfig} from "/@/api/system/config"; import {addConfig, editConfig, getConfig} from "/@/api/system/config";
interface RuleFormState { interface RuleFormState {
configId: number; configId: string;
configName: string; configName: string;
configKey: string; configKey: string;
configValue: string; configValue: string;
@@ -65,7 +65,7 @@ export default defineComponent({
const state = reactive<DicState>({ const state = reactive<DicState>({
isShowDialog: false, isShowDialog: false,
ruleForm: { ruleForm: {
configId: 0, configId: '',
configName: '', configName: '',
configKey: '', configKey: '',
configValue: '', configValue: '',
@@ -99,7 +99,7 @@ export default defineComponent({
}; };
const resetForm = ()=>{ const resetForm = ()=>{
state.ruleForm = { state.ruleForm = {
configId: 0, configId: '',
configName: '', configName: '',
configKey: '', configKey: '',
configValue: '', configValue: '',
@@ -121,7 +121,7 @@ export default defineComponent({
if (!formWrap) return; if (!formWrap) return;
formWrap.validate((valid: boolean) => { formWrap.validate((valid: boolean) => {
if (valid) { if (valid) {
if(state.ruleForm.configId!==0){ if(state.ruleForm.configId!==''){
//修改 //修改
editConfig(state.ruleForm).then(()=>{ editConfig(state.ruleForm).then(()=>{
ElMessage.success('参数修改成功'); ElMessage.success('参数修改成功');

View File

@@ -111,7 +111,7 @@ import {deleteConfig, getConfigList} from "/@/api/system/config";
// 定义接口来定义对象的类型 // 定义接口来定义对象的类型
interface TableDataRow { interface TableDataRow {
configId: number; configId: string;
configName: string; configName: string;
configKey: string; configKey: string;
configValue: string, configValue: string,
@@ -120,7 +120,7 @@ interface TableDataRow {
createdAt: string, createdAt: string,
} }
interface TableDataState { interface TableDataState {
ids:number[]; ids:string[];
tableData: { tableData: {
data: Array<TableDataRow>; data: Array<TableDataRow>;
total: number; total: number;
@@ -182,9 +182,9 @@ export default defineComponent({
// 删除参数row 为空表示批量删除) // 删除参数row 为空表示批量删除)
const onRowDel = (row?: TableDataRow | null) => { const onRowDel = (row?: TableDataRow | null) => {
let msg = '你确定要删除所选数据?'; let msg = '你确定要删除所选数据?';
let ids:number[] = [] ; let ids:string[] = [] ;
if(row){ if(row){
msg = `此操作将永久删除用户:${row.configName},是否继续?` msg = `此操作将永久删除用户:"${row.configName}",是否继续?`
ids = [row.configId] ids = [row.configId]
}else{ }else{
ids = state.ids ids = state.ids

View File

@@ -70,13 +70,13 @@ import {ElMessage} from "element-plus";
// 定义接口来定义对象的类型 // 定义接口来定义对象的类型
interface TableDataRow { interface TableDataRow {
deptName: string; deptName: string;
id: number; id: string;
parentId:number; parentId:string;
children?: TableDataRow[]; children?: TableDataRow[];
} }
interface RuleFormState { interface RuleFormState {
deptId:number; deptId:string;
parentId: number; parentId: string;
deptName: string; deptName: string;
orderNum: number; orderNum: number;
leader: string; leader: string;

View File

@@ -63,7 +63,7 @@ import {ElMessageBox, ElMessage, FormInstance} from 'element-plus';
import { forceLogout, listSysUserOnline} from "/@/api/system/monitor/userOnline"; import { forceLogout, listSysUserOnline} from "/@/api/system/monitor/userOnline";
// 定义接口来定义对象的类型 // 定义接口来定义对象的类型
interface TableData { interface TableData {
id: number; id: string;
uuid: string; uuid: string;
token: string; token: string;
createTime: string; createTime: string;
@@ -73,7 +73,7 @@ interface TableData {
os: string; os: string;
} }
interface TableDataState { interface TableDataState {
ids:number[]; ids:string[];
tableData: { tableData: {
data: Array<TableData>; data: Array<TableData>;
total: number; total: number;
@@ -124,7 +124,7 @@ export default defineComponent({
// 删除岗位 // 删除岗位
const onRowDel = (row?: TableData | null) => { const onRowDel = (row?: TableData | null) => {
let msg = '你确定要强制退出用户登录?'; let msg = '你确定要强制退出用户登录?';
let ids:number[] = [] ; let ids:string[] = [] ;
if(row){ if(row){
msg = `将强制用户下线,是否继续?` msg = `将强制用户下线,是否继续?`
ids = [row.id] ids = [row.id]

View File

@@ -1,6 +1,6 @@
<template> <template>
<div class="system-edit-role-container"> <div class="system-edit-role-container">
<el-dialog :title="(formData.id === 0 ? '添加' : '修改') + '角色'" v-model="isShowDialog" width="769px"> <el-dialog :title="(formData.id === '' ? '添加' : '修改') + '角色'" v-model="isShowDialog" width="769px">
<el-form ref="formRef" :model="formData" :rules="rules" size="default" label-width="90px"> <el-form ref="formRef" :model="formData" :rules="rules" size="default" label-width="90px">
<el-row :gutter="35"> <el-row :gutter="35">
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@@ -58,7 +58,7 @@
<template #footer> <template #footer>
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="onCancel" size="default"> </el-button> <el-button @click="onCancel" size="default"> </el-button>
<el-button type="primary" @click="onSubmit" size="default" :loading="loading">{{ formData.id === 0 ? '新 增' : '修 改' }}</el-button> <el-button type="primary" @click="onSubmit" size="default" :loading="loading">{{ formData.id === '' ? '新 增' : '修 改' }}</el-button>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
@@ -73,18 +73,18 @@ import { refreshBackEndControlRoutes } from '/@/router/backEnd';
// 定义接口来定义对象的类型 // 定义接口来定义对象的类型
interface MenuDataTree { interface MenuDataTree {
id: number; id: string;
pid: number; pid: string;
title: string; title: string;
children?: MenuDataTree[]; children?: MenuDataTree[];
} }
interface DialogRow { interface DialogRow {
id: number; id: string;
name: string; name: string;
status: number; status: number;
listOrder: number; listOrder: number;
remark: string; remark: string;
menuIds: Array<number>; menuIds: Array<string>;
} }
interface RoleState { interface RoleState {
loading: boolean; loading: boolean;
@@ -111,7 +111,7 @@ export default defineComponent({
loading: false, loading: false,
isShowDialog: false, isShowDialog: false,
formData: { formData: {
id: 0, id: '',
name: '', name: '',
status: 1, status: 1,
listOrder: 0, listOrder: 0,
@@ -161,7 +161,7 @@ export default defineComponent({
if (valid) { if (valid) {
state.loading = true; state.loading = true;
state.formData.menuIds = getMenuAllCheckedKeys(); state.formData.menuIds = getMenuAllCheckedKeys();
if (state.formData.id === 0) { if (state.formData.id === '') {
//添加 //添加
addRole(state.formData) addRole(state.formData)
.then(() => { .then(() => {
@@ -200,7 +200,7 @@ export default defineComponent({
state.menuExpand = false; state.menuExpand = false;
state.menuNodeAll = false; state.menuNodeAll = false;
state.formData = { state.formData = {
id: 0, id: '',
name: '', name: '',
status: 1, status: 1,
listOrder: 0, listOrder: 0,

View File

@@ -70,7 +70,7 @@ import EditRole from '/@/views/system/role/component/editRole.vue';
import { deleteRole, getRoleList } from '/@/api/system/role'; import { deleteRole, getRoleList } from '/@/api/system/role';
// 定义接口来定义对象的类型 // 定义接口来定义对象的类型
interface TableData { interface TableData {
id: number; id: string;
status: number; status: number;
listOrder: number; listOrder: number;
name: string; name: string;