Commit d64e45c6 authored by Mr.Tang's avatar Mr.Tang

国际控制计划部分页面

parent 1e7f05e8
...@@ -28,6 +28,14 @@ ...@@ -28,6 +28,14 @@
"operation":"操作", "operation":"操作",
"taskProcessingProgress": "任务处理进展", "taskProcessingProgress": "任务处理进展",
"viewChangeHistory": "查看变更履历", "viewChangeHistory": "查看变更履历",
"preparation/changeTime": "编制/变更时间",
"preparation/changeInstructions": "编制/变更说明",
"preChangeVersion": "变更前版本",
"modifiedVersion": "变更后版本",
"changeOfPerson": "变更人",
"changeDetailedContentNumber": "变更详细内容序号",
"standardNumber": "标准编号",
"standardName": "标准名称",
"add": "新增", "add": "新增",
"handleUpdate": "编辑", "handleUpdate": "编辑",
"handleDelete": "删除", "handleDelete": "删除",
......
...@@ -28,6 +28,14 @@ ...@@ -28,6 +28,14 @@
"operation":"Operation", "operation":"Operation",
"taskProcessingProgress": "Task Processing Progress", "taskProcessingProgress": "Task Processing Progress",
"viewChangeHistory": "View Change History", "viewChangeHistory": "View Change History",
"preparation/changeTime": "Preparation/Change Time",
"preparation/changeInstructions": "Preparation/Change Instructions",
"preChangeVersion": "Pre change version",
"modifiedVersion": "Modified Version",
"changeOfPerson": "Change of person",
"changeDetailedContentNumber": "Change detailed content number",
"standardNumber": "Standard Number",
"standardName": "Standard Name",
"add": "add", "add": "add",
"handleUpdate": "Edit", "handleUpdate": "Edit",
"handleDelete": "Delete", "handleDelete": "Delete",
......
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="top">
<div style="display: flex; align-items: center; width: 70%">
<el-button type="primary" @click="goBack">返回</el-button>
<span style="margin-left: 20px">事业部:奇瑞</span>
<span style="margin-left: 20px">市场组:欧盟</span>
<span style="margin-left: 20px">版本号:A0</span>
</div>
</div>
<div class="tab-components"> <div class="tab-components">
<span class="components-span">变更履历表</span> <span class="components-span">变更履历表</span>
<el-row>
<el-button style="width: 280px" class="btn-A" @click="handleQuery"
>{{ cn.taskProcessingProgress }}/{{
en.taskProcessingProgress
}}</el-button
>
<el-button
style="width: 280px"
class="btn-A"
@click="
$router.push('/control/InternationalControlPlan/revisionHistory')
"
>{{ cn.viewChangeHistory }}/{{ en.viewChangeHistory }}</el-button
>
</el-row>
</div> </div>
<el-button style="width: 280px" class="btn-A" @click="handleQuery"
>{{ cn.taskProcessingProgress }}/{{
en.taskProcessingProgress
}}</el-button
>
<el-button
style="width: 280px"
class="btn-A"
@click="$router.push('/control/InternationalControlPlan/revisionHistory')"
>{{ cn.viewChangeHistory }}/{{ en.viewChangeHistory }}</el-button
>
<table class="info-table"> <table class="info-table">
<tr> <tr>
<td>市场:</td> <td>市场:</td>
...@@ -159,6 +172,7 @@ ...@@ -159,6 +172,7 @@
v-show="isExpanded" v-show="isExpanded"
v-loading="loading" v-loading="loading"
:data="planList" :data="planList"
border
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column label="序号" align="center" width="150" fixed="left"> <el-table-column label="序号" align="center" width="150" fixed="left">
...@@ -346,23 +360,12 @@ const data = reactive({ ...@@ -346,23 +360,12 @@ const data = reactive({
], ],
}, },
}) })
// 表格数据配置
const headers = [
'序号',
'类型描述',
'二级类型描述',
'方法',
'频次',
'分工',
'实施',
'记录',
'归档',
'填写人',
'填写状态',
]
const { queryParams, form, rules } = toRefs(data) const { queryParams, form, rules } = toRefs(data)
function goBack() {
router.go(-1)
}
/** 查询控制计划-国际保证书管理列表 */ /** 查询控制计划-国际保证书管理列表 */
function getList() { function getList() {
//loading.value = true //loading.value = true
...@@ -492,10 +495,30 @@ function handleExport() { ...@@ -492,10 +495,30 @@ function handleExport() {
</script> </script>
<style scoped> <style scoped>
.top {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 14px;
margin-bottom: 20px;
}
.form-container {
display: flex;
flex-wrap: wrap;
align-items: center;
}
.right-align {
margin-left: auto; /* 让该元素靠右 */
}
.info-table { .info-table {
width: 100%; width: 100%;
border-collapse: collapse; border-collapse: collapse;
border: 1px solid #ddd; border: 1px solid #ddd;
margin-bottom: 20px;
background: white;
} }
.info-table td { .info-table td {
...@@ -508,6 +531,7 @@ function handleExport() { ...@@ -508,6 +531,7 @@ function handleExport() {
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin-top: 20px; margin-top: 20px;
margin-bottom: 20px;
.components-span { .components-span {
border-left: 5px solid #409eff; border-left: 5px solid #409eff;
padding-left: 5px; padding-left: 5px;
...@@ -515,17 +539,12 @@ function handleExport() { ...@@ -515,17 +539,12 @@ function handleExport() {
color: #409eff; color: #409eff;
} }
} }
.container {
border: 1px solid #e0e0e0;
border-radius: 4px;
margin: 16px;
}
.header-row { .header-row {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 12px 16px; padding: 12px 16px;
background: #f8f9fa; background: aliceblue;
cursor: pointer; cursor: pointer;
transition: background 0.2s; transition: background 0.2s;
} }
...@@ -553,12 +572,6 @@ function handleExport() { ...@@ -553,12 +572,6 @@ function handleExport() {
transform: rotate(90deg); transform: rotate(90deg);
} }
.data-table {
width: 100%;
border-collapse: collapse;
background: white;
}
.data-table th, .data-table th,
.data-table td { .data-table td {
padding: 12px; padding: 12px;
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
ref="queryRef" ref="queryRef"
:model="queryParams" :model="queryParams"
:inline="true" :inline="true"
label-width="68px"
> >
<el-form-item label="市场组" prop="marketGroup"> <el-form-item label="市场组" prop="marketGroup">
<el-input <el-input
...@@ -67,6 +66,7 @@ ...@@ -67,6 +66,7 @@
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="planList" :data="planList"
border
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column label="序号" align="center" width="150" fixed="left"> <el-table-column label="序号" align="center" width="150" fixed="left">
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
ref="queryRef" ref="queryRef"
:model="queryParams" :model="queryParams"
:inline="true" :inline="true"
label-width="68px"
> >
<el-form-item label="市场组" prop="marketGroup"> <el-form-item label="市场组" prop="marketGroup">
<el-input <el-input
...@@ -83,11 +82,21 @@ ...@@ -83,11 +82,21 @@
}}</el-button }}</el-button
> >
</el-col> </el-col>
<el-col :span="1.5">
<el-button
class="btn-C"
@click="
$router.push('/control/InternationalControlPlan/finalConfirmation')
"
>最终确认</el-button
>
</el-col>
</el-row> </el-row>
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="planList" :data="planList"
border
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<el-table-column label="序号" align="center" width="150" fixed="left"> <el-table-column label="序号" align="center" width="150" fixed="left">
...@@ -254,6 +263,45 @@ ...@@ -254,6 +263,45 @@
<el-form-item label="版本号" prop="versionNumber"> <el-form-item label="版本号" prop="versionNumber">
<el-input v-model="form.versionNumber" placeholder="" /> <el-input v-model="form.versionNumber" placeholder="" />
</el-form-item> </el-form-item>
<div class="tab-components">
<span class="components-span">01.制造工厂</span>
</div>
<el-form-item label="编制负责人" prop="versionNumber">
<el-input v-model="form.versionNumber" placeholder="请选择人员" />
<el-button class="btn-A" @click="openDialog"
>选择用户(多选)</el-button
>
<select-role
v-if="deptList.length > 0"
v-model="selectRole"
:dept-list="deptList"
name-list-key="nameList"
name-key="name"
name-id-key="id"
dept-key="dept"
:selection-mode="selectType"
@submit="handleSelectionSubmit"
@close="() => (selectRole = false)"
/>
</el-form-item>
<div class="tab-components">
<span class="components-span">02.供应商品质保证</span>
</div>
<el-form-item label="编制负责人" prop="versionNumber">
<el-input v-model="form.versionNumber" placeholder="请选择人员" />
<el-button class="btn-A" @click="openDialog"
>选择用户(多选)</el-button
>
</el-form-item>
<div class="tab-components">
<span class="components-span">03.质量管理中心</span>
</div>
<el-form-item label="编制负责人" prop="versionNumber">
<el-input v-model="form.versionNumber" placeholder="请选择人员" />
<el-button class="btn-A" @click="openDialog"
>选择用户(多选)</el-button
>
</el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
...@@ -275,6 +323,9 @@ ...@@ -275,6 +323,9 @@
} from '@/api/control/plan'*/ } from '@/api/control/plan'*/
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
const router = useRouter() const router = useRouter()
//引入组件
import SelectRole from '@/components/SelectRole/index.vue'
import { listUser } from '@/api/system/user'
import cn from '@/locales/controlPlan/InternationalControlPlan/EnsurePlanManagement/cn.json' import cn from '@/locales/controlPlan/InternationalControlPlan/EnsurePlanManagement/cn.json'
import en from '@/locales/controlPlan/InternationalControlPlan/EnsurePlanManagement/en.json' import en from '@/locales/controlPlan/InternationalControlPlan/EnsurePlanManagement/en.json'
...@@ -289,12 +340,20 @@ const single = ref(true) ...@@ -289,12 +340,20 @@ 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 selectRole = ref(false) //组件控制,默认关闭
const goToPage = () => { const selectType = ref('multiple') //默认多选
router.push( const deptList = ref([])
'controlPlan/InternationalControlPlan/EnsurePlanManagement/history', //多选
) const openDialog = async () => {
await getDeptList() // 先加载数据
selectRole.value = true // 再打开对话框
selectType.value = 'multiple'
} }
//提交方法
const handleSelectionSubmit = (selectedItems) => {
console.log('已选中的项:', selectedItems) // 处理已选择的用户
}
const data = reactive({ const data = reactive({
form: {}, form: {},
queryParams: { queryParams: {
...@@ -322,6 +381,32 @@ const data = reactive({ ...@@ -322,6 +381,32 @@ const data = reactive({
const { queryParams, form, rules } = toRefs(data) const { queryParams, form, rules } = toRefs(data)
// 获取用户列表
// 获取用户数据并转换为部门树
const getDeptList = async () => {
try {
const res = await listUser({})
// 转换数据结构:将用户按部门分组
const deptMap = new Map()
res.rows.forEach((user) => {
const deptName = user.dept?.deptName || '未分配部门'
if (!deptMap.has(deptName)) {
deptMap.set(deptName, {
dept: deptName, // 对应dept-key="dept"
nameList: [], // 对应name-list-key="nameList"
deptId: user.deptId, // 用于展开项标识
})
}
deptMap.get(deptName).nameList.push({
name: user.nickName, // 对应name-key="name"
id: user.userId, // 对应name-id-key="id"
})
})
deptList.value = Array.from(deptMap.values())
} catch (error) {
console.error('获取部门数据失败', error)
}
}
/** 查询控制计划-国际保证书管理列表 */ /** 查询控制计划-国际保证书管理列表 */
function getList() { function getList() {
//loading.value = true //loading.value = true
...@@ -449,3 +534,17 @@ function handleExport() { ...@@ -449,3 +534,17 @@ function handleExport() {
//getList() //getList()
</script> </script>
<style lang="scss" scoped>
.tab-components {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 20px;
.components-span {
border-left: 5px solid #409eff;
padding-left: 5px;
font-weight: 800;
color: #409eff;
}
}
</style>
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