Commit 8638c301 authored by Mr.Tang's avatar Mr.Tang

国内车型树形结构图

parent 993d4ace
......@@ -9,29 +9,13 @@ export function listModel(query) {
})
}
// 查询国际车型列表
export function listInternationalModel(query) {
return request({
url: '/control/model/list/International',
method: 'get',
params: query,
})
}
// 查询国内车型详细
// 查询国内国际车型详细
export function getModel(id) {
return request({
url: '/control/model/' + id,
method: 'get',
})
}
// 查询国内车型详细
export function getInternationalModel(id) {
return request({
url: '/control/model/International/' + id,
method: 'get',
})
}
// 新增国内车型
export function addModel(data) {
......@@ -42,7 +26,7 @@ export function addModel(data) {
})
}
// 修改国内车型
// 修改国内国际车型
export function updateModel(data) {
return request({
url: '/control/model',
......@@ -58,3 +42,10 @@ export function delModel(id) {
method: 'delete',
})
}
export function treeListModel(query) {
return request({
url: '/control/model/treeList',
method: 'get',
params: query,
})
}
{
"handleAdd": "新建角色",
"serialNumber": "序号",
"permissionCharacters": "权限字符",
"order": "显示顺序",
"createTime": "创建时间",
"updateTime": "修改时间",
"operation":"操作",
"add": "新增",
"handleUpdate": "编辑",
"handleDelete": "删除",
"submitForm": "确定",
"cancel": "取消",
"handleQuery": "搜索按钮操作",
"resetQuery": "重置按钮操作",
"modifySuccess": "修改成功",
"addSuccess": "新增成功",
"deleteSuccess": "删除成功",
"confirmDelete": "是否确认删除该数据项?",
"pleaseEnter": "请输入",
"pleaseChoose": "请选择",
"roleName": "角色名称",
"roleState": "角色状态",
"search": "查询",
"reset": "重置",
"assignmentsMenu": "分配菜单"
}
\ No newline at end of file
{
"handleAdd": "Create New Role",
"serialNumber": "Serial Number",
"permissionCharacters": "PermissionCharacters",
"order": "order",
"createTime": "Create Time",
"updateTime": "Update Time",
"operation":"operation",
"add": "add",
"handleUpdate": "Edit",
"handleDelete": "Delete",
"submitForm": "Confirm",
"cancel": "Cancel",
"handleQuery": "Search Button Operation",
"resetQuery": "Reset Button Operation",
"modifySuccess": "Modification Successful",
"addSuccess": "Addition Successful",
"deleteSuccess": "Deletion Successful",
"confirmDelete": "Are you sure you want to delete this data item?",
"pleaseEnter": "PleaseEnter",
"pleaseChoose": "PleaseChoose",
"roleName": "Role Name",
"roleState": "Role State",
"search": "Search",
"reset": "Reset",
"assignmentsMenu": "Assignments Menu"
}
\ No newline at end of file
......@@ -46,21 +46,27 @@
style="width: 100px"
>
<el-option
v-for="dict in sys_manufacture"
:key="dict.value"
:label="dict.label"
:value="dict.value"
v-for="item in modelSeriesOptions"
:key="item"
:label="item"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="动力类型" prop="powerType">
<el-input
<el-select
v-model="queryParams.powerType"
placeholder="请输入"
placeholder="请选择"
clearable
style="width: 100px"
@keyup.enter="handleQuery"
>
<el-option
v-for="dict in power_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="是否维护" prop="isMaintained">
<el-select
......@@ -112,13 +118,19 @@
/>
</el-form-item>
<el-form-item label="制造工厂" prop="manufacturingPlant">
<el-input
<el-select
v-model="queryParams.manufacturingPlant"
placeholder="请选择"
clearable
style="width: 100px"
@keyup.enter="handleQuery"
>
<el-option
v-for="item in factoryOptions"
:key="item.id"
:label="item.factoryName"
:value="item.factoryName"
/>
</el-select>
</el-form-item>
<el-form-item label="CVN" prop="cvn">
<el-input
......@@ -336,15 +348,21 @@ import {
delModel,
addModel,
updateModel,
treeListModel,
} from '@/api/vehicleModelData/domestic'
import useAppStore from '@/store/modules/app'
import { getAllFactoryName } from '@/api/system/factory'
import { getAllBusinessUnitName } from '@/api/system/basicdata/businessunit'
import { getAllModelSeries } from '@/api/filingParameter/library.js'
import { computed, ref, toRefs, watch } from 'vue'
import { updateManufacturers } from '@/api/system/basicdata/manufacturer.js'
const appStore = useAppStore()
const { proxy } = getCurrentInstance()
const { vehicle_model_maintenance } = proxy.useDict('vehicle_model_maintenance')
const { vehicle_model_maintenance, power_type } = proxy.useDict(
'vehicle_model_maintenance',
'power_type',
)
const modelList = ref([])
const open = ref(false)
......@@ -396,31 +414,26 @@ const deptOptions = ref([
{
id: 11,
label: '请选择',
options: ['M36T', 'EHY', 'S56'],
},
],
},
{
id: 2,
label: '动力类型',
label: 'M36T',
children: [
{
id: 21,
label: '请选择',
type: 'select',
options: ['ICE', 'BEV'],
},
],
},
{
id: 3,
label: '是否维护',
label: 'M36T',
children: [
{
id: 31,
label: '请选择',
type: 'select',
options: ['是', '否'],
},
],
},
......@@ -458,6 +471,29 @@ const businessUnitOptions = ref([]) // 获取所有事业部列表
const quickSearchText = ref('')
// 原始数据副本
const originalModelList = ref([])
const factoryOptions = ref([])
const modelSeriesOptions = ref([])
const fetchModelSeries = async () => {
try {
const response = await getAllModelSeries()
modelSeriesOptions.value = response.data // 确保数据不为null
} catch (error) {
console.error('获取车型系列列表失败:', error)
modelSeriesOptions.value = [] // 出错时设为空数组
}
}
const factoryName = async () => {
try {
const response = await getAllFactoryName()
// 提取factoryName字段
factoryOptions.value = response.data || [] // 确保数据不为null
} catch (error) {
console.error('获取工厂列表失败:', error)
factoryOptions.value = [] // 出错时设为空数组
}
}
// 获取工厂数据的方法
const fetchFactories = async () => {
......@@ -497,6 +533,7 @@ watch(
},
{ immediate: true },
)
/** 查询国内车型列表 */
function getList() {
loading.value = true
......@@ -508,6 +545,28 @@ function getList() {
})
}
/** 查询国内车型列表 */
function getTreeList() {
loading.value = true
return treeListModel(queryParams.value).then((response) => {
// Transform the response data into the desired tree structure
deptOptions.value[0].children = Object.entries(response).map(
([modelCode, items]) => ({
id: modelCode,
label: modelCode,
children: items.map((item) => ({
id: item.modelAnnouncementNumber,
label: item.modelAnnouncementNumber || '未命名公告号',
originalData: item, // Keep reference to original data
})),
}),
)
loading.value = false
console.log('Tree data:', JSON.stringify(deptOptions.value, null, 2))
})
}
// 计算属性实现快速搜索
const filteredList = computed(() => {
if (!quickSearchText.value) return originalModelList.value
......@@ -656,6 +715,9 @@ function handleExport() {
onMounted(() => {
fetchFactories()
fetchBusinessUnit()
factoryName()
fetchModelSeries()
getTreeList()
})
getList()
</script>
......
......@@ -38,13 +38,19 @@
label-width="96px"
>
<el-form-item label="动力类型" prop="powerType">
<el-input
<el-select
v-model="queryParams.powerType"
placeholder="请输入"
placeholder="请选择"
clearable
style="width: 100px"
@keyup.enter="handleQuery"
>
<el-option
v-for="dict in power_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="发动机型号" prop="engineModel">
<el-input
......@@ -323,14 +329,18 @@ import {
delModel,
addModel,
updateModel,
listInternationalModel,
getInternationalModel,
listModel,
getModel,
treeListModel,
} from '@/api/vehicleModelData/domestic'
import { getAllFactoryName } from '@/api/system/factory'
import { getAllBusinessUnitName } from '@/api/system/basicdata/businessunit'
import { computed, ref, toRefs, watch } from 'vue'
const { proxy } = getCurrentInstance()
const { vehicle_model_maintenance } = proxy.useDict('vehicle_model_maintenance')
const { vehicle_model_maintenance, power_type } = proxy.useDict(
'vehicle_model_maintenance',
'power_type',
)
const modelList = ref([])
const open = ref(false)
......@@ -386,31 +396,26 @@ const deptOptions = ref([
{
id: 11,
label: '请选择',
options: ['M36T', 'EHY', 'S56'],
},
],
},
{
id: 2,
label: '动力类型',
label: 'M36T',
children: [
{
id: 21,
label: '请选择',
type: 'select',
options: ['ICE', 'BEV'],
},
],
},
{
id: 3,
label: '是否维护',
label: 'M36T',
children: [
{
id: 31,
label: '请选择',
type: 'select',
options: ['是', '否'],
},
],
},
......@@ -481,13 +486,35 @@ watch(
/** 查询国内车型列表 */
function getList() {
loading.value = true
listInternationalModel(queryParams.value).then((response) => {
listModel(queryParams.value).then((response) => {
modelList.value = response.rows
total.value = response.total
loading.value = false
})
}
/** 查询国内车型列表 */
function getTreeList() {
loading.value = true
return treeListModel(queryParams.value).then((response) => {
// Transform the response data into the desired tree structure
deptOptions.value[0].children = Object.entries(response).map(
([modelCode, items]) => ({
id: modelCode,
label: modelCode,
children: items.map((item) => ({
id: item.modelAnnouncementNumber,
label: item.modelAnnouncementNumber || '未命名公告号',
originalData: item, // Keep reference to original data
})),
}),
)
loading.value = false
console.log('Tree data:', JSON.stringify(deptOptions.value, null, 2))
})
}
// 取消按钮
function cancel() {
open.value = false
......@@ -561,7 +588,7 @@ const isEditMode = computed(() => {
function handleUpdate(row) {
reset()
const _id = row.id || ids.value
getInternationalModel(_id).then((response) => {
getModel(_id).then((response) => {
form.value = response.data
open.value = true
title.value = '补充信息'
......@@ -617,6 +644,7 @@ function handleExport() {
onMounted(() => {
fetchFactories()
fetchBusinessUnit()
getTreeList()
})
getList()
</script>
......
This diff is collapsed.
......@@ -10,7 +10,7 @@
<el-form-item label="" prop="roleName">
<el-input
v-model="queryParams.roleName"
placeholder="角色名称"
:placeholder="`${cn.roleName}/${en.roleName}`"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
......@@ -19,7 +19,7 @@
<el-form-item label="" prop="status">
<el-select
v-model="queryParams.status"
placeholder="角色状态"
:placeholder="`${cn.roleState}/${en.roleState}`"
clearable
style="width: 240px"
>
......@@ -33,10 +33,10 @@
</el-form-item>
<el-form-item>
<el-button class="btn-A" icon="Search" @click="handleQuery"
>查询</el-button
>{{ cn.search }}/{{ en.search }}</el-button
>
<el-button class="btn-B" icon="Refresh" @click="resetQuery"
>重置</el-button
>{{ cn.reset }}/{{ en.reset }}</el-button
>
</el-form-item>
<el-button
......@@ -45,7 +45,7 @@
icon="Plus"
style="float: right; background: #0154fb"
@click="handleAdd"
>新建角色</el-button
>{{ cn.handleAdd }}/{{ en.handleAdd }}</el-button
>
<!-- <el-button type="primary" plain @click="handleAdd">新建</el-button>-->
</el-form>
......@@ -58,28 +58,38 @@
@selection-change="handleSelectionChange"
>
<!-- <el-table-column type="selection" width="55" align="center" />-->
<el-table-column label="序号" prop="roleId" width="120" align="center" />
<el-table-column
label="角色名称"
:label="`${cn.serialNumber}/${en.serialNumber}`"
prop="roleId"
width="120"
align="center"
/>
<el-table-column
:label="`${cn.roleName}/${en.roleName}`"
prop="roleName"
:show-overflow-tooltip="true"
width="150"
align="center"
/>
<el-table-column
label="权限字符"
:label="`${cn.permissionCharacters}/${en.permissionCharacters}`"
prop="roleKey"
:show-overflow-tooltip="true"
width="150"
align="center"
/>
<el-table-column
label="显示顺序"
:label="`${cn.order}/${en.order}`"
prop="roleSort"
width="100"
align="center"
/>
<el-table-column label="角色状态" align="center" width="150" sortable>
<el-table-column
:label="`${cn.roleState}/${en.roleState}`"
align="center"
width="150"
sortable
>
<template #default="scope">
<el-switch
v-model="scope.row.status"
......@@ -90,7 +100,7 @@
</template>
</el-table-column>
<el-table-column
label="创建时间"
:label="`${cn.createTime}/${en.createTime}`"
align="center"
prop="createTime"
width="200"
......@@ -101,7 +111,7 @@
</template>
</el-table-column>
<el-table-column
label="修改时间"
:label="`${cn.updateTime}/${en.updateTime}`"
align="center"
prop="updateTime"
width="200"
......@@ -112,14 +122,14 @@
</template>
</el-table-column>
<el-table-column
label="操作"
:label="`${cn.operation}/${en.operation}`"
align="center"
class-name="small-padding fixed-width"
>
<template #default="scope">
<el-tooltip
v-if="scope.row.roleId !== 1"
content="编辑"
:content="`${cn.handleUpdate}/${en.handleUpdate}`"
placement="top"
>
<el-button
......@@ -128,12 +138,12 @@
type="primary"
icon="Edit"
@click="handleUpdate(scope.row)"
>编辑</el-button
>{{ cn.handleUpdate }}/{{ en.handleUpdate }}</el-button
>
</el-tooltip>
<el-tooltip
v-if="scope.row.roleId !== 1"
content="分配菜单"
:content="`${cn.assignmentsMenu}/${en.assignmentsMenu}`"
placement="top"
>
<el-button
......@@ -142,7 +152,7 @@
type="primary"
icon="CircleCheck"
@click="handleDataScope(scope.row)"
>分配菜单</el-button
>{{ cn.assignmentsMenu }}/{{ en.assignmentsMenu }}</el-button
>
</el-tooltip>
<!-- <el-tooltip
......@@ -160,7 +170,7 @@
</el-tooltip>-->
<el-tooltip
v-if="scope.row.roleId !== 1"
content="删除"
:content="`${cn.handleDelete}/${en.handleDelete}`"
placement="top"
>
<el-button
......@@ -169,7 +179,7 @@
type="danger"
icon="Delete"
@click="handleDelete(scope.row)"
>删除</el-button
>{{ cn.handleDelete }}/{{ en.handleDelete }}</el-button
>
</el-tooltip>
</template>
......@@ -342,7 +352,8 @@ import {
roleMenuTreeselect,
treeselect as menuTreeselect,
} from '@/api/system/menu'
import cn from '@/locales/system/role/cn.json'
import en from '@/locales/system/role/en.json'
const router = useRouter()
const { proxy } = getCurrentInstance()
const { sys_normal_disable } = proxy.useDict('sys_normal_disable')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment