Commit d3847c16 authored by qiyaxin's avatar qiyaxin

Merge remote-tracking branch 'origin/dev' into dev

parents 5aa01e2a 0e6192e2
...@@ -9,29 +9,13 @@ export function listModel(query) { ...@@ -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) { export function getModel(id) {
return request({ return request({
url: '/control/model/' + id, url: '/control/model/' + id,
method: 'get', method: 'get',
}) })
} }
// 查询国内车型详细
export function getInternationalModel(id) {
return request({
url: '/control/model/International/' + id,
method: 'get',
})
}
// 新增国内车型 // 新增国内车型
export function addModel(data) { export function addModel(data) {
...@@ -42,7 +26,7 @@ export function addModel(data) { ...@@ -42,7 +26,7 @@ export function addModel(data) {
}) })
} }
// 修改国内车型 // 修改国内国际车型
export function updateModel(data) { export function updateModel(data) {
return request({ return request({
url: '/control/model', url: '/control/model',
...@@ -58,3 +42,10 @@ export function delModel(id) { ...@@ -58,3 +42,10 @@ export function delModel(id) {
method: 'delete', 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 @@ ...@@ -46,21 +46,27 @@
style="width: 100px" style="width: 100px"
> >
<el-option <el-option
v-for="dict in sys_manufacture" v-for="item in modelSeriesOptions"
:key="dict.value" :key="item"
:label="dict.label" :label="item"
:value="dict.value" :value="item"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="动力类型" prop="powerType"> <el-form-item label="动力类型" prop="powerType">
<el-input <el-select
v-model="queryParams.powerType" v-model="queryParams.powerType"
placeholder="请输入" placeholder="请选择"
clearable clearable
style="width: 100px" 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>
<el-form-item label="是否维护" prop="isMaintained"> <el-form-item label="是否维护" prop="isMaintained">
<el-select <el-select
...@@ -112,13 +118,19 @@ ...@@ -112,13 +118,19 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="制造工厂" prop="manufacturingPlant"> <el-form-item label="制造工厂" prop="manufacturingPlant">
<el-input <el-select
v-model="queryParams.manufacturingPlant" v-model="queryParams.manufacturingPlant"
placeholder="请选择" placeholder="请选择"
clearable clearable
style="width: 100px" 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>
<el-form-item label="CVN" prop="cvn"> <el-form-item label="CVN" prop="cvn">
<el-input <el-input
...@@ -336,15 +348,21 @@ import { ...@@ -336,15 +348,21 @@ import {
delModel, delModel,
addModel, addModel,
updateModel, updateModel,
treeListModel,
} from '@/api/vehicleModelData/domestic' } from '@/api/vehicleModelData/domestic'
import useAppStore from '@/store/modules/app' import useAppStore from '@/store/modules/app'
import { getAllFactoryName } from '@/api/system/factory' import { getAllFactoryName } from '@/api/system/factory'
import { getAllBusinessUnitName } from '@/api/system/basicdata/businessunit' import { getAllBusinessUnitName } from '@/api/system/basicdata/businessunit'
import { getAllModelSeries } from '@/api/filingParameter/library.js'
import { computed, ref, toRefs, watch } from 'vue' import { computed, ref, toRefs, watch } from 'vue'
import { updateManufacturers } from '@/api/system/basicdata/manufacturer.js'
const appStore = useAppStore() const appStore = useAppStore()
const { proxy } = getCurrentInstance() 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 modelList = ref([])
const open = ref(false) const open = ref(false)
...@@ -396,31 +414,26 @@ const deptOptions = ref([ ...@@ -396,31 +414,26 @@ const deptOptions = ref([
{ {
id: 11, id: 11,
label: '请选择', label: '请选择',
options: ['M36T', 'EHY', 'S56'],
}, },
], ],
}, },
{ {
id: 2, id: 2,
label: '动力类型', label: 'M36T',
children: [ children: [
{ {
id: 21, id: 21,
label: '请选择', label: '请选择',
type: 'select',
options: ['ICE', 'BEV'],
}, },
], ],
}, },
{ {
id: 3, id: 3,
label: '是否维护', label: 'M36T',
children: [ children: [
{ {
id: 31, id: 31,
label: '请选择', label: '请选择',
type: 'select',
options: ['是', '否'],
}, },
], ],
}, },
...@@ -458,6 +471,29 @@ const businessUnitOptions = ref([]) // 获取所有事业部列表 ...@@ -458,6 +471,29 @@ const businessUnitOptions = ref([]) // 获取所有事业部列表
const quickSearchText = ref('') const quickSearchText = ref('')
// 原始数据副本 // 原始数据副本
const originalModelList = 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 () => { const fetchFactories = async () => {
...@@ -497,6 +533,7 @@ watch( ...@@ -497,6 +533,7 @@ watch(
}, },
{ immediate: true }, { immediate: true },
) )
/** 查询国内车型列表 */ /** 查询国内车型列表 */
function getList() { function getList() {
loading.value = true loading.value = true
...@@ -508,6 +545,28 @@ function getList() { ...@@ -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(() => { const filteredList = computed(() => {
if (!quickSearchText.value) return originalModelList.value if (!quickSearchText.value) return originalModelList.value
...@@ -656,6 +715,9 @@ function handleExport() { ...@@ -656,6 +715,9 @@ function handleExport() {
onMounted(() => { onMounted(() => {
fetchFactories() fetchFactories()
fetchBusinessUnit() fetchBusinessUnit()
factoryName()
fetchModelSeries()
getTreeList()
}) })
getList() getList()
</script> </script>
......
...@@ -38,13 +38,19 @@ ...@@ -38,13 +38,19 @@
label-width="96px" label-width="96px"
> >
<el-form-item label="动力类型" prop="powerType"> <el-form-item label="动力类型" prop="powerType">
<el-input <el-select
v-model="queryParams.powerType" v-model="queryParams.powerType"
placeholder="请输入" placeholder="请选择"
clearable clearable
style="width: 100px" 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>
<el-form-item label="发动机型号" prop="engineModel"> <el-form-item label="发动机型号" prop="engineModel">
<el-input <el-input
...@@ -323,14 +329,18 @@ import { ...@@ -323,14 +329,18 @@ import {
delModel, delModel,
addModel, addModel,
updateModel, updateModel,
listInternationalModel, listModel,
getInternationalModel, getModel,
treeListModel,
} from '@/api/vehicleModelData/domestic' } from '@/api/vehicleModelData/domestic'
import { getAllFactoryName } from '@/api/system/factory' import { getAllFactoryName } from '@/api/system/factory'
import { getAllBusinessUnitName } from '@/api/system/basicdata/businessunit' import { getAllBusinessUnitName } from '@/api/system/basicdata/businessunit'
import { computed, ref, toRefs, watch } from 'vue' import { computed, ref, toRefs, watch } from 'vue'
const { proxy } = getCurrentInstance() 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 modelList = ref([])
const open = ref(false) const open = ref(false)
...@@ -386,31 +396,26 @@ const deptOptions = ref([ ...@@ -386,31 +396,26 @@ const deptOptions = ref([
{ {
id: 11, id: 11,
label: '请选择', label: '请选择',
options: ['M36T', 'EHY', 'S56'],
}, },
], ],
}, },
{ {
id: 2, id: 2,
label: '动力类型', label: 'M36T',
children: [ children: [
{ {
id: 21, id: 21,
label: '请选择', label: '请选择',
type: 'select',
options: ['ICE', 'BEV'],
}, },
], ],
}, },
{ {
id: 3, id: 3,
label: '是否维护', label: 'M36T',
children: [ children: [
{ {
id: 31, id: 31,
label: '请选择', label: '请选择',
type: 'select',
options: ['是', '否'],
}, },
], ],
}, },
...@@ -481,13 +486,35 @@ watch( ...@@ -481,13 +486,35 @@ watch(
/** 查询国内车型列表 */ /** 查询国内车型列表 */
function getList() { function getList() {
loading.value = true loading.value = true
listInternationalModel(queryParams.value).then((response) => { listModel(queryParams.value).then((response) => {
modelList.value = response.rows modelList.value = response.rows
total.value = response.total total.value = response.total
loading.value = false 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() { function cancel() {
open.value = false open.value = false
...@@ -561,7 +588,7 @@ const isEditMode = computed(() => { ...@@ -561,7 +588,7 @@ const isEditMode = computed(() => {
function handleUpdate(row) { function handleUpdate(row) {
reset() reset()
const _id = row.id || ids.value const _id = row.id || ids.value
getInternationalModel(_id).then((response) => { getModel(_id).then((response) => {
form.value = response.data form.value = response.data
open.value = true open.value = true
title.value = '补充信息' title.value = '补充信息'
...@@ -617,6 +644,7 @@ function handleExport() { ...@@ -617,6 +644,7 @@ function handleExport() {
onMounted(() => { onMounted(() => {
fetchFactories() fetchFactories()
fetchBusinessUnit() fetchBusinessUnit()
getTreeList()
}) })
getList() getList()
</script> </script>
......
This diff is collapsed.
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<el-form-item label="" prop="roleName"> <el-form-item label="" prop="roleName">
<el-input <el-input
v-model="queryParams.roleName" v-model="queryParams.roleName"
placeholder="角色名称" :placeholder="`${cn.roleName}/${en.roleName}`"
clearable clearable
style="width: 240px" style="width: 240px"
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<el-form-item label="" prop="status"> <el-form-item label="" prop="status">
<el-select <el-select
v-model="queryParams.status" v-model="queryParams.status"
placeholder="角色状态" :placeholder="`${cn.roleState}/${en.roleState}`"
clearable clearable
style="width: 240px" style="width: 240px"
> >
...@@ -33,10 +33,10 @@ ...@@ -33,10 +33,10 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button class="btn-A" icon="Search" @click="handleQuery" <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 class="btn-B" icon="Refresh" @click="resetQuery"
>重置</el-button >{{ cn.reset }}/{{ en.reset }}</el-button
> >
</el-form-item> </el-form-item>
<el-button <el-button
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
icon="Plus" icon="Plus"
style="float: right; background: #0154fb" style="float: right; background: #0154fb"
@click="handleAdd" @click="handleAdd"
>新建角色</el-button >{{ cn.handleAdd }}/{{ en.handleAdd }}</el-button
> >
<!-- <el-button type="primary" plain @click="handleAdd">新建</el-button>--> <!-- <el-button type="primary" plain @click="handleAdd">新建</el-button>-->
</el-form> </el-form>
...@@ -58,28 +58,38 @@ ...@@ -58,28 +58,38 @@
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<!-- <el-table-column type="selection" width="55" align="center" />--> <!-- <el-table-column type="selection" width="55" align="center" />-->
<el-table-column label="序号" prop="roleId" width="120" align="center" />
<el-table-column <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" prop="roleName"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
width="150" width="150"
align="center" align="center"
/> />
<el-table-column <el-table-column
label="权限字符" :label="`${cn.permissionCharacters}/${en.permissionCharacters}`"
prop="roleKey" prop="roleKey"
:show-overflow-tooltip="true" :show-overflow-tooltip="true"
width="150" width="150"
align="center" align="center"
/> />
<el-table-column <el-table-column
label="显示顺序" :label="`${cn.order}/${en.order}`"
prop="roleSort" prop="roleSort"
width="100" width="100"
align="center" 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"> <template #default="scope">
<el-switch <el-switch
v-model="scope.row.status" v-model="scope.row.status"
...@@ -90,7 +100,7 @@ ...@@ -90,7 +100,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="创建时间" :label="`${cn.createTime}/${en.createTime}`"
align="center" align="center"
prop="createTime" prop="createTime"
width="200" width="200"
...@@ -101,7 +111,7 @@ ...@@ -101,7 +111,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="修改时间" :label="`${cn.updateTime}/${en.updateTime}`"
align="center" align="center"
prop="updateTime" prop="updateTime"
width="200" width="200"
...@@ -112,14 +122,14 @@ ...@@ -112,14 +122,14 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="操作" :label="`${cn.operation}/${en.operation}`"
align="center" align="center"
class-name="small-padding fixed-width" class-name="small-padding fixed-width"
> >
<template #default="scope"> <template #default="scope">
<el-tooltip <el-tooltip
v-if="scope.row.roleId !== 1" v-if="scope.row.roleId !== 1"
content="编辑" :content="`${cn.handleUpdate}/${en.handleUpdate}`"
placement="top" placement="top"
> >
<el-button <el-button
...@@ -128,12 +138,12 @@ ...@@ -128,12 +138,12 @@
type="primary" type="primary"
icon="Edit" icon="Edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
>编辑</el-button >{{ cn.handleUpdate }}/{{ en.handleUpdate }}</el-button
> >
</el-tooltip> </el-tooltip>
<el-tooltip <el-tooltip
v-if="scope.row.roleId !== 1" v-if="scope.row.roleId !== 1"
content="分配菜单" :content="`${cn.assignmentsMenu}/${en.assignmentsMenu}`"
placement="top" placement="top"
> >
<el-button <el-button
...@@ -142,7 +152,7 @@ ...@@ -142,7 +152,7 @@
type="primary" type="primary"
icon="CircleCheck" icon="CircleCheck"
@click="handleDataScope(scope.row)" @click="handleDataScope(scope.row)"
>分配菜单</el-button >{{ cn.assignmentsMenu }}/{{ en.assignmentsMenu }}</el-button
> >
</el-tooltip> </el-tooltip>
<!-- <el-tooltip <!-- <el-tooltip
...@@ -160,7 +170,7 @@ ...@@ -160,7 +170,7 @@
</el-tooltip>--> </el-tooltip>-->
<el-tooltip <el-tooltip
v-if="scope.row.roleId !== 1" v-if="scope.row.roleId !== 1"
content="删除" :content="`${cn.handleDelete}/${en.handleDelete}`"
placement="top" placement="top"
> >
<el-button <el-button
...@@ -169,7 +179,7 @@ ...@@ -169,7 +179,7 @@
type="danger" type="danger"
icon="Delete" icon="Delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
>删除</el-button >{{ cn.handleDelete }}/{{ en.handleDelete }}</el-button
> >
</el-tooltip> </el-tooltip>
</template> </template>
...@@ -342,7 +352,8 @@ import { ...@@ -342,7 +352,8 @@ import {
roleMenuTreeselect, roleMenuTreeselect,
treeselect as menuTreeselect, treeselect as menuTreeselect,
} from '@/api/system/menu' } from '@/api/system/menu'
import cn from '@/locales/system/role/cn.json'
import en from '@/locales/system/role/en.json'
const router = useRouter() const router = useRouter()
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const { sys_normal_disable } = proxy.useDict('sys_normal_disable') 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