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

国内车型树形结构图

parent 993d4ace
...@@ -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>
......
<template> <template>
<div class="app-container"> <div class="app-container">
<div
style="
<div style="width: 100%;display: flex;align-items: center;justify-content: flex-end"> width: 100%;
<el-button display: flex;
plain align-items: center;
class="btn-C" justify-content: flex-end;
@click="handleAdd" "
style="" >
>{{cn.handleAdd}}/{{en.handleAdd}}</el-button> <el-button plain class="btn-C" style="" @click="handleAdd"
>{{ cn.handleAdd }}/{{ en.handleAdd }}</el-button
>
</div> </div>
<el-table style="margin-top: 15px" border v-loading="loading" :data="brandDataList" @selection-change="handleSelectionChange"> <el-table
<el-table-column type="index" label="序号" width="175" align="center" > v-loading="loading"
style="margin-top: 15px"
border
:data="brandDataList"
@selection-change="handleSelectionChange"
>
<el-table-column type="index" label="序号" width="175" align="center">
<template #header> <template #header>
<div style="display: flex;flex-direction: column"> <div style="display: flex; flex-direction: column">
<div>{{cn.serialNumber}}</div> <div>{{ cn.serialNumber }}</div>
<div>{{en.serialNumber}}</div> <div>{{ en.serialNumber }}</div>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="类型" align="center" prop="type" > <el-table-column label="类型" align="center" prop="type">
<template #header> <template #header>
<div style="display: flex;flex-direction: column"> <div style="display: flex; flex-direction: column">
<div>{{cn.type}}</div> <div>{{ cn.type }}</div>
<div>{{en.type}}</div> <div>{{ en.type }}</div>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="品牌" align="center" prop="brand" > <el-table-column label="品牌" align="center" prop="brand">
<template #header> <template #header>
<div style="display: flex;flex-direction: column"> <div style="display: flex; flex-direction: column">
<div>{{cn.brand}}</div> <div>{{ cn.brand }}</div>
<div>{{en.brand}}</div> <div>{{ en.brand }}</div>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="更新人" align="center" prop="updateUserName" > <el-table-column label="更新人" align="center" prop="updateUserName">
<template #header> <template #header>
<div style="display: flex;flex-direction: column"> <div style="display: flex; flex-direction: column">
<div>{{cn.updateUserName}}</div> <div>{{ cn.updateUserName }}</div>
<div>{{en.updateUserName}}</div> <div>{{ en.updateUserName }}</div>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="更新时间" align="center" prop="updateTime"> <el-table-column label="更新时间" align="center" prop="updateTime">
<template #header> <template #header>
<div style="display: flex;flex-direction: column"> <div style="display: flex; flex-direction: column">
<div>{{cn.updateTime}}</div> <div>{{ cn.updateTime }}</div>
<div>{{en.updateTime}}</div> <div>{{ en.updateTime }}</div>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" prop="remark" > <el-table-column label="备注" align="center" prop="remark">
<template #header> <template #header>
<div style="display: flex;flex-direction: column"> <div style="display: flex; flex-direction: column">
<div>{{cn.remark}}</div> <div>{{ cn.remark }}</div>
<div>{{en.remark}}</div> <div>{{ en.remark }}</div>
</div> </div>
</template> </template>
<template #default="scope"> <template #default="scope">
{{scope.row.remark || '--'}} {{ scope.row.remark || '--' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template #header> <template #header>
<div style="display: flex;flex-direction: column"> <div style="display: flex; flex-direction: column">
<div>{{cn.operation}}</div> <div>{{ cn.operation }}</div>
<div>{{en.operation}}</div> <div>{{ en.operation }}</div>
</div> </div>
</template> </template>
<template #default="scope"> <template #default="scope">
<el-button link type="primary" @click="handleUpdate(scope.row)" >{{cn.handleUpdate}}/{{en.handleUpdate}}</el-button> <el-button link type="primary" @click="handleUpdate(scope.row)"
<el-button link type="danger" @click="handleDelete(scope.row)" >{{cn.handleDelete}}/{{en.handleDelete}}</el-button> >{{ cn.handleUpdate }}/{{ en.handleUpdate }}</el-button
>
<el-button link type="danger" @click="handleDelete(scope.row)"
>{{ cn.handleDelete }}/{{ en.handleDelete }}</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" v-model:limit="queryParams.pageSize"
:total="total"
@pagination="getList" @pagination="getList"
/> />
<!-- 添加或修改国内品牌数据对话框 --> <!-- 添加或修改国内品牌数据对话框 -->
<el-dialog top="30" :title="title" v-model="open" width="500px" append-to-body> <el-dialog
<el-form ref="brandDataRef" label-position="top" :model="form" :rules="rules" label-width="80px"> v-model="open"
top="30"
:title="title"
width="500px"
append-to-body
>
<el-form
ref="brandDataRef"
label-position="top"
:model="form"
:rules="rules"
label-width="80px"
>
<el-form-item :label="`${cn.type}/${en.type}`" prop="type"> <el-form-item :label="`${cn.type}/${en.type}`" prop="type">
<el-input v-model="form.type" disabled placeholder="请输入类型" /> <el-input v-model="form.type" disabled placeholder="请输入类型" />
</el-form-item> </el-form-item>
...@@ -101,67 +128,72 @@ ...@@ -101,67 +128,72 @@
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button class="btn-A" type="primary" @click="submitForm">{{cn.submitForm}}/{{en.submitForm}}</el-button> <el-button class="btn-A" type="primary" @click="submitForm"
<el-button class="btn-B" @click="cancel">{{cn.cancel}}/{{en.cancel}}</el-button> >{{ cn.submitForm }}/{{ en.submitForm }}</el-button
>
<el-button class="btn-B" @click="cancel"
>{{ cn.cancel }}/{{ en.cancel }}</el-button
>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script setup > <script setup>
import { listBrandData, getBrandData, delBrandData, addBrandData, updateBrandData } from "@/api/brandData/brandData"; import {
import cn from "@/locales/system/domesticBrand/cn.json" listBrandData,
import en from "@/locales/system/domesticBrand/en.json" getBrandData,
const { proxy } = getCurrentInstance(); delBrandData,
addBrandData,
updateBrandData,
} from '@/api/brandData/brandData'
import cn from '@/locales/system/domesticBrand/cn.json'
import en from '@/locales/system/domesticBrand/en.json'
const { proxy } = getCurrentInstance()
const brandDataList = ref([]); const brandDataList = ref([])
const open = ref(false); const open = ref(false)
const loading = ref(true); const loading = ref(true)
const showSearch = ref(true); const showSearch = ref(true)
const ids = ref([]); const ids = ref([])
const single = ref(true); const single = ref(true)
const multiple = ref(true); const multiple = ref(true)
const total = ref(0); const total = ref(0)
const title = ref(""); const title = ref('')
const form = ref({ const form = ref({
type:'国内' type: '国内',
}) })
const data = reactive({ const data = reactive({
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
type:"国内" type: '国内',
}, },
rules: { rules: {
type: [ type: [{ required: true, message: '类型不能为空', trigger: 'blur' }],
{ required: true, message: "类型不能为空", trigger: "blur" } brand: [{ required: true, message: '品牌不能为空', trigger: 'blur' }],
], },
brand: [ })
{ required: true, message: "品牌不能为空", trigger: "blur" }
],
}
});
const { queryParams, rules } = toRefs(data); const { queryParams, rules } = toRefs(data)
/** 查询国内品牌数据列表 */ /** 查询国内品牌数据列表 */
function getList() { function getList() {
loading.value = true; loading.value = true
listBrandData(queryParams.value).then(response => { listBrandData(queryParams.value).then((response) => {
brandDataList.value = response.rows; brandDataList.value = response.rows
total.value = response.total; total.value = response.total
loading.value = false; loading.value = false
}); })
} }
// 取消按钮 // 取消按钮
function cancel() { function cancel() {
open.value = false; open.value = false
reset(); reset()
} }
// 表单重置 // 表单重置
...@@ -169,87 +201,95 @@ function reset() { ...@@ -169,87 +201,95 @@ function reset() {
form.value = { form.value = {
brand: null, brand: null,
remark: null, remark: null,
type:"国内" type: '国内',
}; }
} }
/** 搜索按钮操作 */ /** 搜索按钮操作 */
function handleQuery() { function handleQuery() {
queryParams.value.pageNum = 1; queryParams.value.pageNum = 1
getList(); getList()
} }
/** 重置按钮操作 */ /** 重置按钮操作 */
function resetQuery() { function resetQuery() {
proxy.resetForm("queryRef"); proxy.resetForm('queryRef')
handleQuery(); handleQuery()
} }
// 多选框选中数据 // 多选框选中数据
function handleSelectionChange(selection) { function handleSelectionChange(selection) {
ids.value = selection.map(item => item.id); ids.value = selection.map((item) => item.id)
single.value = selection.length != 1; single.value = selection.length != 1
multiple.value = !selection.length; multiple.value = !selection.length
} }
/** 新增按钮操作 */ /** 新增按钮操作 */
function handleAdd() { function handleAdd() {
reset(); reset()
open.value = true; open.value = true
title.value = cn.add + '/' + en.add; title.value = cn.add + '/' + en.add
} }
/** 修改按钮操作 */ /** 修改按钮操作 */
function handleUpdate(row) { function handleUpdate(row) {
reset(); reset()
const _id = row.id || ids.value const _id = row.id || ids.value
getBrandData(_id).then(response => { getBrandData(_id).then((response) => {
form.value = response.data; form.value = response.data
open.value = true; open.value = true
title.value = cn.handleUpdate + "/" +en.handleUpdate; title.value = cn.handleUpdate + '/' + en.handleUpdate
}); })
} }
/** 提交按钮 */ /** 提交按钮 */
function submitForm() { function submitForm() {
proxy.$refs["brandDataRef"].validate(valid => { proxy.$refs['brandDataRef'].validate((valid) => {
if (valid) { if (valid) {
if (form.value.id != null) { if (form.value.id != null) {
updateBrandData(form.value).then(response => { updateBrandData(form.value).then((response) => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess('修改成功')
open.value = false; open.value = false
getList(); getList()
}); })
} else { } else {
addBrandData(form.value).then(response => { addBrandData(form.value).then((response) => {
proxy.$modal.msgSuccess("新增成功"); proxy.$modal.msgSuccess('新增成功')
open.value = false; open.value = false
getList(); getList()
}); })
} }
} }
}); })
} }
/** 删除按钮操作 */ /** 删除按钮操作 */
function handleDelete(row) { function handleDelete(row) {
const _ids = row.id || ids.value; const _ids = row.id || ids.value
proxy.$modal.confirm('是否确认删除该数据项?').then(function() { proxy.$modal
return delBrandData(_ids); .confirm('是否确认删除该数据项?')
}).then(() => { .then(function () {
getList(); return delBrandData(_ids)
proxy.$modal.msgSuccess("删除成功"); })
}).catch(() => {}); .then(() => {
getList()
proxy.$modal.msgSuccess('删除成功')
})
.catch(() => {})
} }
/** 导出按钮操作 */ /** 导出按钮操作 */
function handleExport() { function handleExport() {
proxy.download('brandData/brandData/export', { proxy.download(
...queryParams.value 'brandData/brandData/export',
}, `brandData_${new Date().getTime()}.xlsx`) {
...queryParams.value,
},
`brandData_${new Date().getTime()}.xlsx`,
)
} }
getList(); getList()
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
:deep(.el-pagination) { :deep(.el-pagination) {
...@@ -258,8 +298,7 @@ getList(); ...@@ -258,8 +298,7 @@ getList();
width: 100%; width: 100%;
margin-top: 24px; margin-top: 24px;
} }
:deep(.el-pagination.is-background .el-pager li.is-active){ :deep(.el-pagination.is-background .el-pager li.is-active) {
background-color: #0154FB; background-color: #0154fb;
} }
</style> </style>
...@@ -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