Commit 41278f3d authored by Mr.Tang's avatar Mr.Tang

角色管理操作修改 国内车型页面

parent d663358f
import request from '@/utils/request'
// 查询国内车型列表
export function listModel(query) {
return request({
url: '/control/model/list',
method: 'get',
params: query,
})
}
// 查询国内车型详细
export function getModel(id) {
return request({
url: '/control/model/' + id,
method: 'get',
})
}
// 新增国内车型
export function addModel(data) {
return request({
url: '/control/model',
method: 'post',
data: data,
})
}
// 修改国内车型
export function updateModel(data) {
return request({
url: '/control/model',
method: 'put',
data: data,
})
}
// 删除国内车型
export function delModel(id) {
return request({
url: '/control/model/' + id,
method: 'delete',
})
}
<template>
<div class="app-container">
<el-form
v-show="showSearch"
ref="queryRef"
:model="queryParams"
:inline="true"
label-width="68px"
>
<el-form-item label="车型代码" prop="modelCode">
<el-input
v-model="queryParams.modelCode"
placeholder="请输入车型代码"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="车型公告号" prop="modelAnnouncementNumber">
<el-input
v-model="queryParams.modelAnnouncementNumber"
placeholder="请输入车型公告号"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="车型系列" prop="modelSeries">
<el-input
v-model="queryParams.modelSeries"
placeholder="请输入车型系列"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="是否维护" prop="isMaintained">
<el-select
v-model="queryParams.isMaintained"
placeholder="请选择"
clearable
style="width: 100px"
>
<el-option
v-for="item in vehicle_model_maintenance"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="事业部" prop="brand">
<el-input
v-model="queryParams.brand"
placeholder="请输入品牌"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="发动机型号" prop="engineModel">
<el-input
v-model="queryParams.engineModel"
placeholder="请输入发动机型号"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="认证申报生产地址" prop="productionAddress">
<el-input
v-model="queryParams.productionAddress"
placeholder="请输入生产地址"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="制造工厂" prop="manufacturingPlant">
<el-input
v-model="queryParams.manufacturingPlant"
placeholder="请输入制造工厂"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="CVN" prop="cvn">
<el-input
v-model="queryParams.cvn"
placeholder="请输入CVN"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="CALID" prop="calid">
<el-input
v-model="queryParams.calid"
placeholder="请输入CALID"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"
>搜索</el-button
>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
v-hasPermi="['control:model:add']"
type="primary"
plain
icon="Plus"
@click="handleAdd"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
v-hasPermi="['control:model:export']"
type="warning"
plain
icon="Download"
@click="handleExport"
>导出</el-button
>
</el-col>
<right-toolbar
v-model:show-search="showSearch"
@query-table="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
border
:data="modelList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" align="center" prop="id" />
<el-table-column label="事业部" align="center" prop="brand" />
<el-table-column label="车型代码" align="center" prop="modelCode" />
<el-table-column label="车型系列" align="center" prop="modelSeries" />
<el-table-column
label="车型公告号"
align="center"
prop="modelAnnouncementNumber"
/>
<el-table-column label="品牌" align="center" prop="brand" />
<el-table-column label="是否维护" align="center" prop="isMaintained" />
<el-table-column label="发动机型号" align="center" prop="engineModel" />
<el-table-column
label="车型代码今年累计产量"
align="center"
prop="modelCodeYearlyProduction"
/>
<el-table-column
label="车型公告号今年累计产量"
align="center"
prop="announcementYearlyProduction"
/>
<el-table-column label="CVN" align="center" prop="cvn" />
<el-table-column label="CALID" align="center" prop="calid" />
<el-table-column
label="认证申报生产地址"
align="center"
prop="productionAddress"
/>
<el-table-column
prop="manufacturingPlant"
align="center"
label="制造工厂"
>
</el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template #default="scope">
<el-button
v-hasPermi="['control:model:edit']"
link
type="primary"
icon="Edit"
@click="handleUpdate(scope.row)"
>修改</el-button
>
<el-button
v-hasPermi="['control:model:remove']"
link
type="primary"
icon="Delete"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
:total="total"
@pagination="getList"
/>
<!-- 添加或修改国内车型对话框 -->
<el-dialog v-model="open" :title="title" width="500px" append-to-body>
<el-form ref="modelRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="车型代码" prop="modelCode">
<el-input v-model="form.modelCode" placeholder="请输入车型代码" />
</el-form-item>
<el-form-item label="车型系列" prop="modelSeries">
<el-input v-model="form.modelSeries" placeholder="请输入车型系列" />
</el-form-item>
<el-form-item label="车型公告号" prop="modelAnnouncementNumber">
<el-input
v-model="form.modelAnnouncementNumber"
placeholder="请输入车型公告号"
/>
</el-form-item>
<el-form-item label="是否维护" prop="isMaintained">
<el-input v-model="form.isMaintained" placeholder="请输入是否维护" />
</el-form-item>
<el-form-item label="生产地址" prop="productionAddress">
<el-input
v-model="form.productionAddress"
placeholder="请输入生产地址"
/>
</el-form-item>
<el-form-item label="制造工厂" prop="manufacturingPlant">
<el-checkbox-group v-model="selectedFactories">
<div style="display: flex; flex-wrap: wrap">
<div
v-for="(factory, index) in allFactories"
:key="index"
style="width: 33%; margin-bottom: 10px"
>
<el-checkbox :label="factory">{{ factory }}</el-checkbox>
</div>
</div>
</el-checkbox-group>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="Model">
import {
listModel,
getModel,
delModel,
addModel,
updateModel,
} from '@/api/vehicleModelData/domestic'
import { getAllFactoryName } from '@/api/system/factory'
import { ref, toRefs, watch } from 'vue'
const { proxy } = getCurrentInstance()
const { vehicle_model_maintenance } = proxy.useDict('vehicle_model_maintenance')
const modelList = ref([])
const open = ref(false)
const loading = ref(true)
const showSearch = ref(true)
const ids = ref([])
const single = ref(true)
const multiple = ref(true)
const total = ref(0)
const title = ref('')
const data = reactive({
form: {
manufacturingPlant: '', // 字符串类型,存储选中的工厂
},
queryParams: {
pageNum: 1,
pageSize: 10,
brand: null,
modelCode: null,
modelSeries: null,
modelAnnouncementNumber: null,
isMaintained: null,
engineModel: null,
modelCodeYearlyProduction: null,
announcementYearlyProduction: null,
cvn: null,
calid: null,
productionAddress: null,
manufacturingPlant: null,
},
rules: {},
})
const allFactories = ref([]) // 所有工厂列表
const selectedFactories = ref([]) // 当前选中的工厂数组
// 监听表单数据变化,初始化选中的工厂
const { queryParams, form, rules } = toRefs(data)
// 获取工厂数据的方法
const fetchFactories = async () => {
try {
const response = await getAllFactoryName()
// 提取factoryName字段
allFactories.value = response.data.map((item) => item.factoryName)
} catch (error) {
console.error('获取工厂列表失败:', error)
}
}
// 监听选中的工厂变化,更新表单字符串数据(使用顿号分隔)
watch(
selectedFactories,
(newVal) => {
// 将数组转换为顿号分隔的字符串
form.value.manufacturingPlant = newVal.join('、') // 注意这里是中文顿号
},
{ deep: true },
)
// 初始化时从字符串转为数组(用于编辑时回显)
watch(
() => form.value.manufacturingPlant,
(newVal) => {
// 使用顿号分割字符串
selectedFactories.value = newVal ? newVal.split('、') : []
},
{ immediate: true },
)
/** 查询国内车型列表 */
function getList() {
loading.value = true
listModel(queryParams.value).then((response) => {
modelList.value = response.rows
total.value = response.total
loading.value = false
})
}
// 取消按钮
function cancel() {
open.value = false
reset()
}
// 表单重置
function reset() {
form.value = {
id: null,
brand: null,
modelCode: null,
modelSeries: null,
modelAnnouncementNumber: null,
isMaintained: null,
engineModel: null,
modelCodeYearlyProduction: null,
announcementYearlyProduction: null,
cvn: null,
calid: null,
productionAddress: null,
manufacturingPlant: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null,
delFlag: null,
}
proxy.resetForm('modelRef')
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1
getList()
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm('queryRef')
handleQuery()
}
// 多选框选中数据
function handleSelectionChange(selection) {
ids.value = selection.map((item) => item.id)
single.value = selection.length != 1
multiple.value = !selection.length
}
/** 新增按钮操作 */
function handleAdd() {
reset()
open.value = true
title.value = '添加国内车型'
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset()
const _id = row.id || ids.value
getModel(_id).then((response) => {
form.value = response.data
open.value = true
title.value = '修改国内车型'
})
}
/** 提交按钮 */
function submitForm() {
proxy.$refs['modelRef'].validate((valid) => {
if (valid) {
if (form.value.id != null) {
updateModel(form.value).then((response) => {
proxy.$modal.msgSuccess('修改成功')
open.value = false
getList()
})
} else {
addModel(form.value).then((response) => {
proxy.$modal.msgSuccess('新增成功')
open.value = false
getList()
})
}
}
})
}
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value
proxy.$modal
.confirm('是否确认删除国内车型编号为"' + _ids + '"的数据项?')
.then(function () {
return delModel(_ids)
})
.then(() => {
getList()
proxy.$modal.msgSuccess('删除成功')
})
.catch(() => {})
}
/** 导出按钮操作 */
function handleExport() {
proxy.download(
'control/model/export',
{
...queryParams.value,
},
`model_${new Date().getTime()}.xlsx`,
)
}
onMounted(() => {
fetchFactories()
})
getList()
</script>
<template>
国际车型
</template>
<script>
export default {
name: 'index',
}
</script>
<style scoped>
</style>
<template> <template>
<div class="app-container"> <div class="app-container">
<div> <div>
<el-button type="primary" plain style="float: right;margin: 12px 0;border: 1px solid #0154fb;color: #0154fb;" @click="handleAdd">新建</el-button> <el-button style="float: right;margin: 12px 0;border: 1px solid #0154fb;color: #0154fb;" @click="handleAdd">新建</el-button>
</div> </div>
<el-table v-loading="loading" :data="unitList" @selection-change="handleSelectionChange" border> <el-table v-loading="loading" :data="unitList" @selection-change="handleSelectionChange" border>
...@@ -56,8 +56,8 @@ ...@@ -56,8 +56,8 @@
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button> <el-button @click="cancel">取 消</el-button>
<el-button type="primary" @click="submitForm">保 存</el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
:inline="true" :inline="true"
label-width="68px" label-width="68px"
> >
<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="角色名称"
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<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="角色状态"
...@@ -32,28 +32,35 @@ ...@@ -32,28 +32,35 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery" style='background: #0154fb;'>查询</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
<el-button <el-button
v-hasPermi="['system:role:add']"
type="primary" type="primary"
icon="Plus" icon="Search"
@click="handleAdd" style="background: #0154fb"
style="float: right;background: #0154fb;" @click="handleQuery"
>新建角色</el-button> >查询</el-button
<!-- <el-button type="primary" plain @click="handleAdd">新建</el-button>--> >
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
<el-button
v-hasPermi="['system:role:add']"
type="primary"
icon="Plus"
style="float: right; background: #0154fb"
@click="handleAdd"
>新建角色</el-button
>
<!-- <el-button type="primary" plain @click="handleAdd">新建</el-button>-->
</el-form> </el-form>
<!-- 表格数据 --> <!-- 表格数据 -->
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="roleList" :data="roleList"
border
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
border> >
<!-- <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 label="序号" prop="roleId" width="120" align="center" />
<el-table-column <el-table-column
label="角色名称" label="角色名称"
prop="roleName" prop="roleName"
...@@ -68,7 +75,12 @@ ...@@ -68,7 +75,12 @@
width="150" width="150"
align="center" align="center"
/> />
<el-table-column label="显示顺序" prop="roleSort" width="100" align="center"/> <el-table-column
label="显示顺序"
prop="roleSort"
width="100"
align="center"
/>
<el-table-column label="角色状态" align="center" width="150" sortable> <el-table-column label="角色状态" align="center" width="150" sortable>
<template #default="scope"> <template #default="scope">
<el-switch <el-switch
...@@ -79,12 +91,24 @@ ...@@ -79,12 +91,24 @@
></el-switch> ></el-switch>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="200" sortable> <el-table-column
label="创建时间"
align="center"
prop="createTime"
width="200"
sortable
>
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="修改时间" align="center" prop="updateTime" width="200" sortable> <el-table-column
label="修改时间"
align="center"
prop="updateTime"
width="200"
sortable
>
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.updateTime) }}</span> <span>{{ parseTime(scope.row.updateTime) }}</span>
</template> </template>
...@@ -106,7 +130,8 @@ ...@@ -106,7 +130,8 @@
type="primary" type="primary"
icon="Edit" icon="Edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
>编辑</el-button> >编辑</el-button
>
</el-tooltip> </el-tooltip>
<el-tooltip <el-tooltip
v-if="scope.row.roleId !== 1" v-if="scope.row.roleId !== 1"
...@@ -119,9 +144,10 @@ ...@@ -119,9 +144,10 @@
type="primary" type="primary"
icon="CircleCheck" icon="CircleCheck"
@click="handleDataScope(scope.row)" @click="handleDataScope(scope.row)"
>分配菜单</el-button> >分配菜单</el-button
>
</el-tooltip> </el-tooltip>
<el-tooltip <!-- <el-tooltip
v-if="scope.row.roleId !== 1" v-if="scope.row.roleId !== 1"
content="分配用户" content="分配用户"
placement="top" placement="top"
...@@ -133,7 +159,7 @@ ...@@ -133,7 +159,7 @@
icon="User" icon="User"
@click="handleAuthUser(scope.row)" @click="handleAuthUser(scope.row)"
>分配用户</el-button> >分配用户</el-button>
</el-tooltip> </el-tooltip>-->
<el-tooltip <el-tooltip
v-if="scope.row.roleId !== 1" v-if="scope.row.roleId !== 1"
content="删除" content="删除"
...@@ -145,7 +171,8 @@ ...@@ -145,7 +171,8 @@
type="danger" type="danger"
icon="Delete" icon="Delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
>删除</el-button> >删除</el-button
>
</el-tooltip> </el-tooltip>
</template> </template>
</el-table-column> </el-table-column>
...@@ -674,7 +701,7 @@ function cancelDataScope() { ...@@ -674,7 +701,7 @@ function cancelDataScope() {
getList() getList()
</script> </script>
<style scoped> <style scoped>
.addRoleBtn{ .addRoleBtn {
margin-left: 420px; margin-left: 420px;
margin-right: 0px; margin-right: 0px;
} }
......
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