Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qr-consistency-vue3
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
刘怀志
qr-consistency-vue3
Commits
1f0df9c8
Commit
1f0df9c8
authored
Apr 28, 2025
by
lwy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CQC通用和事业部内容维护
parent
8598af0d
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
831 additions
and
53 deletions
+831
-53
cn.json
...ontrolPlan/relationshipManagement/maintainContent/cn.json
+36
-0
en.json
...ontrolPlan/relationshipManagement/maintainContent/en.json
+31
-0
CCAPMaintainContent.vue
...nshipManagement/CCAPCriticalParts/CCAPMaintainContent.vue
+119
-37
CQCMaintainContent.vue
...ionshipManagement/CQCCriticalParts/CQCMaintainContent.vue
+633
-5
index.vue
...rolPlan/relationshipManagement/CQCCriticalParts/index.vue
+12
-11
No files found.
src/locales/controlPlan/relationshipManagement/maintainContent/cn.json
0 → 100644
View file @
1f0df9c8
{
"back"
:
"返回"
,
"addPart"
:
"新增零件"
,
"bulkEdit"
:
"批量编辑"
,
"professionalDepartment"
:
"专业部门"
,
"cccCertificationMark"
:
"3C认证标志"
,
"totalTableProjectModel"
:
"总表项目-型号"
,
"totalTableProjectManufacturerName"
:
"总表项目-生产厂"
,
"totalTableProjectCertificateNumber"
:
"总表项目-证书编号"
,
"p8PostMassProductionUnit"
:
"P8后批量生产单位"
,
"source"
:
"来源"
,
"sort"
:
"排序"
,
"edit"
:
"编辑"
,
"delete"
:
"删除"
,
"submit"
:
"提交"
,
"cancel"
:
"取消"
,
"updateSuccess"
:
"修改成功"
,
"addSuccess"
:
"新增成功"
,
"partLevelOneName"
:
"零部件一级名称"
,
"partLevelTwoName"
:
"零部件二级名称"
,
"partName"
:
"零件名称"
,
"partType"
:
"零件类型"
,
"copyAndAdd"
:
"复制新增"
,
"addBusinessUnit"
:
"添加事业部"
,
"search"
:
"搜索"
,
"reset"
:
"重置"
,
"Submit"
:
"提交"
,
"Index"
:
"序号"
,
"pleaseChoose"
:
"请选择"
,
"pleaseInput"
:
"请输入"
,
"pleaseChooseOrInput"
:
"请选择或输入"
,
"businessDivision"
:
"事业部"
,
"BusinessUnit"
:
"事业部"
,
"Operations"
:
"操作"
,
"Delete"
:
"删除"
}
src/locales/controlPlan/relationshipManagement/maintainContent/en.json
0 → 100644
View file @
1f0df9c8
{
"back"
:
"Back"
,
"addPart"
:
"Add Part"
,
"bulkEdit"
:
"Bulk Edit"
,
"professionalDepartment"
:
"Professional Department"
,
"cccCertificationMark"
:
"3C Certification Mark"
,
"totalTableProjectModel"
:
"Master Table Project Model"
,
"totalTableProjectManufacturerName"
:
"Master Table Project Manufacturer"
,
"totalTableProjectCertificateNumber"
:
"Master Table Project Certificate No."
,
"p8PostMassProductionUnit"
:
"P8 Post-Mass Production Unit"
,
"source"
:
"Source"
,
"sort"
:
"Sort"
,
"edit"
:
"Edit"
,
"submit"
:
"Submit"
,
"cancel"
:
"Cancel"
,
"partLevelOneName"
:
"Level One Part Name"
,
"partLevelTwoName"
:
"Level Two Part Name"
,
"partName"
:
"Part Name"
,
"partType"
:
"Part Type"
,
"search"
:
"Search"
,
"reset"
:
"Reset"
,
"Submit"
:
"Submit"
,
"Index"
:
"Index"
,
"pleaseChoose"
:
"Please Choose"
,
"pleaseInput"
:
"Please Input"
,
"pleaseChooseOrInput"
:
"Please choose or input"
,
"businessDivision"
:
"Business division"
,
"BusinessUnit"
:
"Business Unit"
,
"Operations"
:
"Operations"
,
"Delete"
:
"Delete"
}
src/views/controlPlan/relationshipManagement/CCAPCriticalParts/CCAPMaintainContent.vue
View file @
1f0df9c8
...
...
@@ -19,10 +19,10 @@
<!-- 搜索栏 -->
<el-form
:model=
"queryParams"
ref=
"queryRef"
:inline=
"true"
v-show=
"showSearch"
>
<el-form-item
label=
"零部件一级名称"
prop=
"partLevelOneName"
>
<el-form-item
:label=
"`$
{cn.partLevelOneName}/${en.partLevelOneName}`"
prop="partLevelOneName">
<el-select
v-model=
"queryParams.partLevelOneName"
placeholder=
"请选择
"
:placeholder=
"`$
{cn.pleaseChoose}/${en.pleaseChoose}`
"
clearable
style="width: 200px"
>
...
...
@@ -34,18 +34,18 @@
/>
</el-select>
</el-form-item>
<el-form-item
label=
"零部件二级名称
"
prop=
"partLevelTwoName"
>
<el-form-item
:label=
"`$
{cn.partLevelTwoName}/${en.partLevelTwoName}`
" prop="partLevelTwoName">
<el-input
v-model=
"queryParams.partLevelTwoName"
placeholder=
"请输入
"
:placeholder=
"`$
{cn.pleaseInput}/${en.pleaseInput}`
"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item
label=
"零件类型
"
prop=
"partType"
>
<el-form-item
:label=
"`$
{cn.partType}/${en.partType}`
" prop="partType">
<el-select
v-model=
"queryParams.partType"
placeholder=
"请选择
"
:placeholder=
"`$
{cn.pleaseChoose}/${en.pleaseChoose}`
"
clearable
style="width: 200px"
>
...
...
@@ -57,19 +57,19 @@
/>
</el-select>
</el-form-item>
<el-form-item
label=
"专业部门
"
prop=
"professionalDepartment"
>
<el-form-item
:label=
"`$
{cn.professionalDepartment}/${en.professionalDepartment}`
" prop="professionalDepartment">
<el-input
v-model=
"queryParams.professionalDepartment"
placeholder=
"请输入
"
:placeholder=
"`$
{cn.pleaseInput}/${en.pleaseInput}`
"
clearable
style="width: 200px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item
label=
"3C认证标志:
"
prop=
"cccCertificationMark"
>
<el-form-item
:label=
"`$
{cn.cccCertificationMark}/${en.cccCertificationMark}`
" prop="cccCertificationMark">
<el-select
v-model=
"queryParams.cccCertificationMark"
placeholder=
"请选择
"
:placeholder=
"`$
{cn.pleaseChoose}/${en.pleaseChoose}`
"
clearable
style="width: 200px"
>
...
...
@@ -81,34 +81,34 @@
/>
</el-select>
</el-form-item>
<el-form-item
label=
"总表项目-型号
"
prop=
"totalTableProjectModel"
>
<el-form-item
:label=
"`$
{cn.totalTableProjectModel}/${en.totalTableProjectModel}`
" prop="totalTableProjectModel">
<el-input
v-model=
"queryParams.totalTableProjectModel"
placeholder=
"请输入
"
:placeholder=
"`$
{cn.pleaseInput}/${en.pleaseInput}`
"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item
label=
"总表项目-生产厂
"
prop=
"totalTableProjectManufacturerName"
>
<el-form-item
:label=
"`$
{cn.totalTableProjectManufacturerName}/${en.totalTableProjectManufacturerName}`
" prop="totalTableProjectManufacturerName">
<el-input
v-model=
"queryParams.totalTableProjectManufacturerName"
placeholder=
"请输入
"
:placeholder=
"`$
{cn.pleaseInput}/${en.pleaseInput}`
"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item
label=
"总表项目-证书编号
"
prop=
"totalTableProjectCertificateNumber"
>
<el-form-item
:label=
"`$
{cn.totalTableProjectCertificateNumber}/${en.totalTableProjectCertificateNumber}`
" prop="totalTableProjectCertificateNumber">
<el-input
v-model=
"queryParams.totalTableProjectCertificateNumber"
placeholder=
"请输入
"
:placeholder=
"`$
{cn.pleaseInput}/${en.pleaseInput}`
"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item
label=
"P8后批量生产单位
"
prop=
"p8PostMassProductionUnit"
>
<el-form-item
:label=
"`$
{cn.p8PostMassProductionUnit}/${en.p8PostMassProductionUnit}`
" prop="p8PostMassProductionUnit">
<el-select
v-model=
"queryParams.p8PostMassProductionUnit"
placeholder=
"请选择
"
:placeholder=
"`$
{cn.pleaseChoose}/${en.pleaseChoose}`
"
clearable
style="width: 200px"
>
...
...
@@ -120,10 +120,10 @@
/>
</el-select>
</el-form-item>
<el-form-item
label=
"来源
"
prop=
"source"
>
<el-form-item
:label=
"`$
{cn.source}/${en.source}`
" prop="source">
<el-select
v-model=
"queryParams.source"
placeholder=
"请选择
"
:placeholder=
"`$
{cn.pleaseChoose}/${en.pleaseChoose}`
"
clearable
style="width: 200px"
>
...
...
@@ -136,8 +136,8 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button
class=
"btn-A"
icon=
"Search"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
class=
"btn-B"
icon=
"Refresh"
@
click=
"resetQuery"
>
重置
</el-button>
<el-button
class=
"btn-A"
icon=
"Search"
@
click=
"handleQuery"
>
{{
cn
.
search
}}
/
{{
en
.
search
}}
</el-button>
<el-button
class=
"btn-B"
icon=
"Refresh"
@
click=
"resetQuery"
>
{{
cn
.
reset
}}
/
{{
en
.
reset
}}
</el-button>
</el-form-item>
<el-button
style=
"border: 1px solid #0154fb;color: #0154fb;float: right;margin-bottom: 24px;"
...
...
@@ -145,14 +145,14 @@
v-show=
"isDefault === '1'"
@
click=
"handleAdd"
v-hasPermi=
"['control:config:add']"
>
新增零件
</el-button>
>
{{
cn
.
addPart
}}
/
{{
en
.
addPart
}}
</el-button>
<el-button
style=
"border: 1px solid #0154fb;color: #0154fb;float: right;margin-bottom: 24px;"
plain
v-show=
"isDefault === '0'"
@
click=
"bulkEdit"
v-hasPermi=
"['control:config:add']"
>
批量编辑
</el-button>
>
{{
cn
.
bulkEdit
}}
/
{{
en
.
bulkEdit
}}
</el-button>
</el-form
>
...
...
@@ -171,33 +171,111 @@
align=
"center"
/>
<el-table-column
label=
"序号"
type=
"index"
align=
"center"
width=
"75"
>
<template
#
header
>
<div>
<div>
{{
cn
.
Index
}}
</div>
<div>
{{
en
.
Index
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"零部件一级名称"
align=
"center"
prop=
"partLevelOneName"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
partLevelOneName
}}
</div>
<div>
{{
en
.
partLevelOneName
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"零部件二级名称"
align=
"center"
prop=
"partLevelTwoName"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
partLevelTwoName
}}
</div>
<div>
{{
en
.
partLevelTwoName
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"零件类型"
align=
"center"
prop=
"partType"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
partType
}}
</div>
<div>
{{
en
.
partType
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"专业部门"
align=
"center"
prop=
"professionalDepartment"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
professionalDepartment
}}
</div>
<div>
{{
en
.
professionalDepartment
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"3C认证标志"
align=
"center"
prop=
"cccCertificationMark"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
cccCertificationMark
}}
</div>
<div>
{{
en
.
cccCertificationMark
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"总表项目-型号规格"
align=
"center"
prop=
"totalTableProjectModel"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
totalTableProjectModel
}}
</div>
<div>
{{
en
.
totalTableProjectModel
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"总表项目-生产厂"
align=
"center"
prop=
"totalTableProjectManufacturerName"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
totalTableProjectManufacturerName
}}
</div>
<div>
{{
en
.
totalTableProjectManufacturerName
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"总表项目-证书编号"
align=
"center"
prop=
"totalTableProjectCertificateNumber"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
totalTableProjectCertificateNumber
}}
</div>
<div>
{{
en
.
totalTableProjectCertificateNumber
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"P8后批量生产单位"
align=
"center"
prop=
"p8PostMassProductionUnit"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
p8PostMassProductionUnit
}}
</div>
<div>
{{
en
.
p8PostMassProductionUnit
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"排序"
align=
"center"
prop=
"sort"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
sort
}}
</div>
<div>
{{
en
.
sort
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"来源"
align=
"center"
prop=
"source"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
source
}}
</div>
<div>
{{
en
.
source
}}
</div>
</div>
</
template
>
<
template
#
default=
"scope"
>
<dict-tag
:options=
"parts_source"
:value=
"scope.row.source"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
fixed=
"right"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
Operations
}}
</div>
<div>
{{
en
.
Operations
}}
</div>
</div>
</
template
>
<
template
#
default=
"scope"
>
<el-button
link
style=
"color: rgb(0,0,255)"
type=
"primary"
@
click=
"handleUpdate(scope.row)"
v-hasPermi=
"['control:config:edit']"
>
编辑
</el-button>
<el-button
link
type=
"danger"
@
click=
"handleDelete(scope.row)"
v-show=
"scope.row.source === '1'"
>
...
...
@@ -221,7 +299,7 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"p8后
端
批量生产单位"
prop=
"p8PostMassProductionUnit"
>
<el-form-item
label=
"p8后批量生产单位"
prop=
"p8PostMassProductionUnit"
>
<el-select
v-model=
"form.p8PostMassProductionUnit"
placeholder=
"请选择"
>
<el-option
v-for=
"dict in p8_post_production_unit"
...
...
@@ -242,8 +320,10 @@
</el-drawer>
<!-- 通用和事业部添加或修改抽屉-->
<el-drawer
v-model=
"open"
size=
"800px"
direction=
"rtl"
:title=
"title"
>
<!-- 通用添加或修改抽屉-->
<el-drawer
v-model=
"open"
direction=
"rtl"
:title=
"title"
>
<
template
#
default
>
<el-form
ref=
"partsRef"
:model=
"form"
:rules=
"rules"
label-width=
"150px"
>
<el-form-item
label=
"零件一级名称:"
prop=
"partLevelOneName"
filterable
allow-create
v-show=
"isDefault === '1'"
>
...
...
@@ -302,7 +382,7 @@
<el-form-item
label=
"总表项目-证书编号:"
prop=
"totalTableProjectCertificateNumber"
v-show=
"isDefault === '1'"
>
<el-input
v-model=
"form.totalTableProjectCertificateNumber"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"p8后
端
批量生产单位"
prop=
"p8PostMassProductionUnit"
>
<el-form-item
label=
"p8后批量生产单位"
prop=
"p8PostMassProductionUnit"
>
<el-select
v-model=
"form.p8PostMassProductionUnit"
placeholder=
"请选择"
>
<el-option
v-for=
"dict in p8_post_production_unit"
...
...
@@ -327,17 +407,17 @@
</div>
</template>
<
script
setup
name=
"C
onfig
"
>
<
script
setup
name=
"C
CAPMaintainContent
"
>
import
{
getPartsList
}
from
"@/api/RelationManagement/relation.js"
;
import
{
useRoute
}
from
'vue-router'
;
import
{
useRouter
}
from
'vue-router'
;
import
{
addParts
,
listPartLevelOneName
,
deleteCriticalPart
,
getPartsDetail
,
editParts
,
listProfessionalDepartment
,
batchUpdateSpecialConfig
}
from
"@/api/RelationManagement/maintainContent.js"
;
import
cn
from
"@/locales/controlPlan/relationshipManagement/
CCAPCriticalParts
/cn.json"
;
import
en
from
"@/locales/controlPlan/relationshipManagement/
CCAPCriticalParts
/en.json"
;
import
cn
from
"@/locales/controlPlan/relationshipManagement/
maintainContent
/cn.json"
;
import
en
from
"@/locales/controlPlan/relationshipManagement/
maintainContent
/en.json"
;
import
{
ArrowLeft
}
from
"@element-plus/icons-vue"
;
import
{
ref
}
from
"vue"
;
import
useUserStore
from
"@/store/modules/user.js"
;
// 新增导入
import
useUserStore
from
"@/store/modules/user.js"
;
const
route
=
useRoute
();
const
router
=
useRouter
();
const
{
proxy
}
=
getCurrentInstance
();
...
...
@@ -365,13 +445,10 @@ const divisionName = ref(null);
const
updateName
=
ref
(
route
.
query
.
updateName
||
'--'
);
//是否通用(0-否,1-是)
const
isDefault
=
ref
(
route
.
query
.
isDefault
);
console
.
log
(
"cn"
+
cn
.
cancel
)
const
userStore
=
useUserStore
();
// 获取 Store 实例
const
data
=
reactive
({
form
:
{},
queryParams
:
{
...
...
@@ -421,7 +498,6 @@ const data = reactive({
],
}
});
const
{
queryParams
,
form
,
rules
}
=
toRefs
(
data
);
/** 查询关键零部件下事业部特殊配置列表 */
...
...
@@ -725,3 +801,9 @@ onMounted(() => {
getList
();
</
script
>
<
style
scoped
>
.custom-left
.el-form-item__content
{
text-align
:
left
;
}
</
style
>
src/views/controlPlan/relationshipManagement/CQCCriticalParts/CQCMaintainContent.vue
View file @
1f0df9c8
<
script
setup
>
<
template
>
<div
class=
"app-container"
>
<div
style=
"margin-bottom: 20px;margin-right: 16px"
>
<el-button
link
@
click=
"back"
style=
"font-size: 16px;margin-right: 16px"
>
<el-icon>
<ArrowLeft/>
</el-icon>
返回
</el-button>
<span
style=
"margin-right:16px"
>
事业部:
{{
divisionName
||
'--'
}}
</span>
<!-- 在模板中使用安全表达式 -->
<span>
更新人:
{{
(
updateName
.
value
||
route
.
query
.
updateName
)
||
'--'
}}
</span>
</
script
>
</div
>
<
template
>
<p>
CQC内容维护
</p>
<!-- 搜索栏 -->
<el-form
:model=
"queryParams"
ref=
"queryRef"
:inline=
"true"
v-show=
"showSearch"
>
<el-form-item
:label=
"`$
{cn.partName}/${en.partName}`" prop="partLevelTwoName">
<el-input
v-model=
"queryParams.partLevelTwoName"
:placeholder=
"`$
{cn.pleaseInput}/${en.pleaseInput}`"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"`$
{cn.partType}/${en.partType}`" prop="partType">
<el-select
v-model=
"queryParams.partType"
:placeholder=
"`$
{cn.pleaseChoose}/${en.pleaseChoose}`"
clearable
style="width: 200px"
>
<el-option
v-for=
"dict in part_type"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"`$
{cn.cccCertificationMark}/${en.cccCertificationMark}`" prop="cccCertificationMark">
<el-select
v-model=
"queryParams.cccCertificationMark"
:placeholder=
"`$
{cn.pleaseChoose}/${en.pleaseChoose}`"
clearable
style="width: 200px"
>
<el-option
v-for=
"dict in ccc_certification_mark"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"`$
{cn.totalTableProjectModel}/${en.totalTableProjectModel}`" prop="totalTableProjectModel">
<el-input
v-model=
"queryParams.totalTableProjectModel"
:placeholder=
"`$
{cn.pleaseInput}/${en.pleaseInput}`"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"`$
{cn.totalTableProjectManufacturerName}/${en.totalTableProjectManufacturerName}`" prop="totalTableProjectManufacturerName">
<el-input
v-model=
"queryParams.totalTableProjectManufacturerName"
:placeholder=
"`$
{cn.pleaseInput}/${en.pleaseInput}`"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"`$
{cn.totalTableProjectCertificateNumber}/${en.totalTableProjectCertificateNumber}`" prop="totalTableProjectCertificateNumber">
<el-input
v-model=
"queryParams.totalTableProjectCertificateNumber"
:placeholder=
"`$
{cn.pleaseInput}/${en.pleaseInput}`"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item
:label=
"`$
{cn.p8PostMassProductionUnit}/${en.p8PostMassProductionUnit}`" prop="p8PostMassProductionUnit">
<el-select
v-model=
"queryParams.p8PostMassProductionUnit"
:placeholder=
"`$
{cn.pleaseChoose}/${en.pleaseChoose}`"
clearable
style="width: 200px"
>
<el-option
v-for=
"dict in p8_post_production_unit"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"`$
{cn.source}/${en.source}`" prop="source">
<el-select
v-model=
"queryParams.source"
:placeholder=
"`$
{cn.pleaseChoose}/${en.pleaseChoose}`"
clearable
style="width: 200px"
>
<el-option
v-for=
"dict in parts_source"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button
class=
"btn-A"
icon=
"Search"
@
click=
"handleQuery"
>
{{
cn
.
search
}}
/
{{
en
.
search
}}
</el-button>
<el-button
class=
"btn-B"
icon=
"Refresh"
@
click=
"resetQuery"
>
{{
cn
.
reset
}}
/
{{
en
.
reset
}}
</el-button>
</el-form-item>
<el-button
style=
"border: 1px solid #0154fb;color: #0154fb;float: right;margin-bottom: 24px;"
plain
v-if=
"isDefault === '1'"
@
click=
"handleAdd"
v-hasPermi=
"['control:config:add']"
>
{{
cn
.
addPart
}}
/
{{
en
.
addPart
}}
</el-button>
</el-form
>
<!--表格内容-->
<el-table
v-loading=
"loading"
:data=
"partsList"
border
>
<el-table-column
label=
"序号"
type=
"index"
align=
"center"
width=
"75"
>
<template
#
header
>
<div>
<div>
{{
cn
.
Index
}}
</div>
<div>
{{
en
.
Index
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"零件名称"
align=
"center"
prop=
"partLevelTwoName"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
partName
}}
</div>
<div>
{{
en
.
partName
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"专业部门"
align=
"center"
prop=
"professionalDepartment"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
professionalDepartment
}}
</div>
<div>
{{
en
.
professionalDepartment
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"3C认证标志"
align=
"center"
prop=
"cccCertificationMark"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
cccCertificationMark
}}
</div>
<div>
{{
en
.
cccCertificationMark
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"总表项目-型号规格"
align=
"center"
prop=
"totalTableProjectModel"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
totalTableProjectModel
}}
</div>
<div>
{{
en
.
totalTableProjectModel
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"总表项目-生产厂"
align=
"center"
prop=
"totalTableProjectManufacturerName"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
totalTableProjectManufacturerName
}}
</div>
<div>
{{
en
.
totalTableProjectManufacturerName
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"总表项目-证书编号"
align=
"center"
prop=
"totalTableProjectCertificateNumber"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
totalTableProjectCertificateNumber
}}
</div>
<div>
{{
en
.
totalTableProjectCertificateNumber
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"P8后批量生产单位"
align=
"center"
prop=
"p8PostMassProductionUnit"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
p8PostMassProductionUnit
}}
</div>
<div>
{{
en
.
p8PostMassProductionUnit
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"排序"
align=
"center"
prop=
"sort"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
sort
}}
</div>
<div>
{{
en
.
sort
}}
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"来源"
align=
"center"
prop=
"source"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
source
}}
</div>
<div>
{{
en
.
source
}}
</div>
</div>
</
template
>
<
template
#
default=
"scope"
>
<dict-tag
:options=
"parts_source"
:value=
"scope.row.source"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
fixed=
"right"
>
<
template
#
header
>
<div>
<div>
{{
cn
.
Operations
}}
</div>
<div>
{{
en
.
Operations
}}
</div>
</div>
</
template
>
<
template
#
default=
"scope"
>
<el-button
link
style=
"color: rgb(0,0,255)"
type=
"primary"
@
click=
"handleUpdate(scope.row)"
>
编辑
</el-button>
</
template
>
</el-table-column>
</el-table>
<!-- CQC事业部编辑弹窗 -->
<el-dialog
v-model=
"openEdit"
:title=
"title"
>
<el-form
:model=
"form"
ref=
"partsRef"
:rules=
"rules"
>
<
template
#
default
>
<el-form
ref=
"partsRef"
:model=
"form"
:rules=
"rules"
>
<el-form-item
label=
"专业部门"
prop=
"professionalDepartment"
filterable
>
<el-select
v-model=
"form.professionalDepartment"
placeholder=
"请选择或输入"
filterable
allow-create
>
<el-option
v-for=
"dict in professionalDepartmentOptions"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"p8后批量生产单位"
prop=
"p8PostMassProductionUnit"
>
<el-select
v-model=
"form.p8PostMassProductionUnit"
placeholder=
"请选择"
>
<el-option
v-for=
"dict in p8_post_production_unit"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
></el-option>
</el-select>
</el-form-item>
</el-form>
</
template
>
</el-form>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
class=
"btn-B"
@
click=
"cancel"
>
取消
</el-button>
<el-button
class=
"btn-A"
type=
"primary"
@
click=
"submitForm"
>
确定
</el-button>
</div>
</
template
>
</el-dialog>
<!-- 通用和事业部添加或修改抽屉-->
<el-drawer
v-model=
"open"
:title=
"title"
>
<
template
#
default
>
<el-form
ref=
"partsRef"
:model=
"form"
:rules=
"rules"
label-width=
"150px"
>
<el-form-item
label=
"零件名称"
prop=
"partLevelTwoName"
v-show=
"isDefault === '1' "
>
<el-input
:disabled=
"title === '编辑零件'"
v-model=
"form.partLevelTwoName"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"p8后批量生产单位"
prop=
"professionalDepartment"
filterable
>
<el-select
v-model=
"form.professionalDepartment"
placeholder=
"请选择或输入"
filterable
allow-create
>
<el-option
v-for=
"dict in professionalDepartmentOptions"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"3C认证标志:"
prop=
"cccCertificationMark"
filterable
v-show=
"isDefault === '1'"
>
<el-select
v-model=
"form.cccCertificationMark"
placeholder=
"请选择"
>
<el-option
v-for=
"dict in ccc_certification_mark"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"总表项目-型号规格:"
prop=
"totalTableProjectModel"
v-show=
"isDefault === '1'"
>
<el-input
v-model=
"form.totalTableProjectModel"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"总表项目-生产厂:"
prop=
"totalTableProjectManufacturerName"
v-show=
"isDefault=== '1'"
>
<el-input
v-model=
"form.totalTableProjectManufacturerName"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"总表项目-证书编号:"
prop=
"totalTableProjectCertificateNumber"
v-show=
"isDefault === '1'"
>
<el-input
v-model=
"form.totalTableProjectCertificateNumber"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"p8后批量生产单位"
prop=
"p8PostMassProductionUnit"
>
<el-select
v-model=
"form.p8PostMassProductionUnit"
placeholder=
"请选择"
>
<el-option
v-for=
"dict in p8_post_production_unit"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"排序"
prop=
"sort"
v-show=
"isDefault === '1'"
>
<el-input
v-model=
"form.sort"
type=
"number"
/>
</el-form-item>
</el-form>
</
template
>
<
template
#
footer
>
<div
style=
"flex: auto"
>
<el-button
class=
"btn-A"
@
click=
"cancel"
>
取消
</el-button>
<el-button
class=
"btn-B"
@
click=
"submitForm"
>
提交
</el-button>
</div>
</
template
>
</el-drawer>
</div>
</template>
<
style
scoped
lang=
"scss"
>
<
script
setup
name=
"CQCMaintainContent"
>
import
{
getPartsList
}
from
"@/api/RelationManagement/relation.js"
;
import
{
useRoute
}
from
'vue-router'
;
import
{
useRouter
}
from
'vue-router'
;
import
{
addParts
,
listPartLevelOneName
,
getPartsDetail
,
editParts
,
listProfessionalDepartment
,
batchUpdateSpecialConfig
}
from
"@/api/RelationManagement/maintainContent.js"
;
import
cn
from
"@/locales/controlPlan/relationshipManagement/maintainContent/cn.json"
;
import
en
from
"@/locales/controlPlan/relationshipManagement/maintainContent/en.json"
;
import
{
ArrowLeft
}
from
"@element-plus/icons-vue"
;
import
{
ref
}
from
"vue"
;
import
useUserStore
from
"@/store/modules/user.js"
;
const
route
=
useRoute
();
const
router
=
useRouter
();
const
{
proxy
}
=
getCurrentInstance
();
const
{
part_type
,
parts_source
,
ccc_certification_mark
,
p8_post_production_unit
}
=
proxy
.
useDict
(
'part_type'
,
'parts_source'
,
'ccc_certification_mark'
,
'p8_post_production_unit'
)
const
partsList
=
ref
([]);
const
open
=
ref
(
false
);
const
openEdit
=
ref
(
false
);
const
loading
=
ref
(
true
);
const
partsRef
=
ref
(
null
);
const
showSearch
=
ref
(
true
);
const
ids
=
ref
([]);
const
single
=
ref
(
true
);
const
multiple
=
ref
(
true
);
const
total
=
ref
(
0
);
const
title
=
ref
(
""
);
const
professionalDepartmentOptions
=
ref
([])
const
partLevelOneNameOptions
=
ref
([])
const
divisionName
=
ref
(
null
);
const
updateName
=
ref
(
route
.
query
.
updateName
||
'--'
);
//是否通用(0-否,1-是)
const
isDefault
=
ref
(
route
.
query
.
isDefault
);
const
userStore
=
useUserStore
();
// 获取 Store 实例
const
data
=
reactive
({
form
:
{},
queryParams
:
{
pageNum
:
1
,
pageSize
:
10
,
partLevelOneName
:
null
,
partLevelTwoName
:
null
,
partType
:
null
,
professionalDepartment
:
null
,
cccCertificationMark
:
null
,
totalTableProjectModel
:
null
,
totalTableProjectManufacturerName
:
null
,
totalTableProjectCertificateNumber
:
null
,
p8PostMassProductionUnit
:
null
,
source
:
null
,
certificationBody
:
route
.
query
.
certificationBody
,
businessRelationId
:
route
.
query
.
businessRelationId
,
businessId
:
null
},
rules
:
{
partLevelOneName
:
[
{
required
:
true
,
message
:
"零部件一级名称不能为空"
,
trigger
:
"blur"
}
],
partLevelTwoName
:
[
{
required
:
true
,
message
:
"零部件二级名称不能为空"
,
trigger
:
"blur"
}
],
partType
:
[
{
required
:
true
,
message
:
"零件类型不能为空"
,
trigger
:
"blur"
}
],
professionalDepartment
:
[
{
required
:
true
,
message
:
"专业部门不能为空"
,
trigger
:
"blur"
}
],
cccCertificationMark
:
[
{
required
:
true
,
message
:
"3C认证标志不能为空"
,
trigger
:
"blur"
}
],
totalTableProjectModel
:
[
{
required
:
true
,
message
:
"总表项目-型号规格不能为空"
,
trigger
:
"blur"
}
],
totalTableProjectManufacturerName
:
[
{
required
:
true
,
message
:
"总表项目-生产厂不能为空"
,
trigger
:
"blur"
}
],
totalTableProjectCertificateNumber
:
[
{
required
:
true
,
message
:
"总表项目-证书编号不能为空"
,
trigger
:
"blur"
}
],
sort
:
[
{
required
:
true
,
message
:
"排序不能为空"
,
trigger
:
"blur"
}
],
}
});
const
{
queryParams
,
form
,
rules
}
=
toRefs
(
data
);
// 监听路由参数变化
watch
(
()
=>
route
.
query
.
isDefault
,
(
newVal
)
=>
{
isDefault
.
value
=
newVal
;
// 更新isDefault
getList
();
// 重新加载数据
},
{
immediate
:
true
}
// 立即执行初始化
);
function
getList
()
{
loading
.
value
=
true
;
const
queryDivisionName
=
route
.
query
.
divisionName
||
''
;
// 安全处理divisionName
if
(
Array
.
isArray
(
queryDivisionName
))
{
divisionName
.
value
=
queryDivisionName
.
join
(
'、'
);
}
else
if
(
typeof
queryDivisionName
===
'string'
)
{
divisionName
.
value
=
queryDivisionName
.
replace
(
/
[
"
\[\]]
/g
,
''
).
split
(
','
).
join
(
'、'
);
}
else
{
divisionName
.
value
=
'--'
;
// 非预期类型时设置默认值
}
updateName
.
value
=
route
.
query
.
updateName
||
'--'
;
/* isDefault.value = route.query.isDefault*/
getPartsList
(
queryParams
.
value
).
then
(
response
=>
{
partsList
.
value
=
response
.
data
;
total
.
value
=
response
.
total
;
loading
.
value
=
false
;
});
}
// 取消按钮
function
cancel
()
{
open
.
value
=
false
;
openEdit
.
value
=
false
;
reset
();
}
// 表单重置
function
reset
()
{
form
.
value
=
{
id
:
null
,
partLevelOneName
:
null
,
partLevelTwoName
:
null
,
partType
:
null
,
professionalDepartment
:
null
,
cccCertificationMark
:
null
,
totalTableProjectModel
:
null
,
totalTableProjectManufacturerName
:
null
,
totalTableProjectCertificateNumber
:
null
,
p8PostMassProductionUnit
:
'制造'
,
source
:
null
,
certificationBody
:
route
.
query
.
certificationBody
,
businessRelationId
:
route
.
query
.
businessRelationId
,
businessId
:
null
};
proxy
.
resetForm
(
"partsRef"
);
}
// 返回CCAP关键零部件管理
function
back
()
{
router
.
push
({
path
:
'/control/relationshipManagement/CQCCriticalParts'
})
}
// 获取零部件一级名称的方法
const
getPartLevelOneNameList
=
async
()
=>
{
try
{
const
res
=
await
listPartLevelOneName
();
partLevelOneNameOptions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
item
,
label
:
item
}));
}
catch
(
error
)
{
console
.
error
(
'获取零部件一级名称失败:'
,
error
);
partLevelOneNameOptions
.
value
=
[];
}
};
//获取专业部门
const
getProfessionalDepartmentList
=
async
()
=>
{
try
{
const
businessRelationId
=
route
.
query
.
businessRelationId
;
// 从路由参数获取
const
res
=
await
listProfessionalDepartment
(
businessRelationId
);
// 将接口返回数据转为 { value, label } 格式
professionalDepartmentOptions
.
value
=
res
.
data
.
map
(
item
=>
({
value
:
item
,
label
:
item
}));
}
catch
(
error
)
{
console
.
error
(
'获取专业部门失败:'
,
error
);
professionalDepartmentOptions
.
value
=
[];
}
};
/** 搜索按钮操作 */
function
handleQuery
()
{
queryParams
.
value
.
pageNum
=
1
;
getList
();
}
/** 重置按钮操作 */
function
resetQuery
()
{
proxy
.
resetForm
(
"queryRef"
);
handleQuery
();
}
/** 新增按钮操作 */
function
handleAdd
()
{
reset
();
open
.
value
=
true
;
title
.
value
=
"新增零件"
;
// 确保默认值生效(防止重置覆盖)
form
.
value
.
p8PostMassProductionUnit
=
'制造'
;
}
/** 修改按钮操作 */
function
handleUpdate
(
row
)
{
reset
();
//判断是否默认 1默认 0非默认
if
(
isDefault
.
value
===
'1'
){
title
.
value
=
"编辑零件"
;
open
.
value
=
true
;
// 打开抽屉
}
else
{
title
.
value
=
"编辑"
;
//CQC事业部内容维护页编辑
openEdit
.
value
=
true
;
}
// 从当前行数据中提取参数
const
{
partNameId
}
=
row
;
const
businessRelationId
=
route
.
query
.
businessRelationId
;
// 从路由参数获取
getPartsDetail
(
partNameId
,
businessRelationId
).
then
(
response
=>
{
form
.
value
=
response
.
data
;
console
.
log
(
"partsList数据结构:"
,
partsList
.
value
);
// 检查数据中的字段名
}).
catch
(
error
=>
{
proxy
.
$modal
.
msgError
(
"获取详情失败:"
+
error
.
message
);
});
}
/** 提交按钮 */
function
submitForm
()
{
partsRef
.
value
.
validate
(
valid
=>
{
if
(
valid
)
{
if
(
isDefault
.
value
===
'1'
){
if
(
form
.
value
.
partNameId
!=
null
)
{
//编辑--通用
editParts
(
form
.
value
).
then
(
response
=>
{
proxy
.
$modal
.
msgSuccess
(
"修改成功"
);
updateName
.
value
=
userStore
.
name
;
open
.
value
=
false
;
getList
();
});
}
else
if
(
form
.
value
.
id
==
null
)
{
addParts
(
form
.
value
).
then
(
response
=>
{
//新增--通用
proxy
.
$modal
.
msgSuccess
(
"新增成功"
);
updateName
.
value
=
userStore
.
name
;
open
.
value
=
false
;
getList
();
});
}
}
else
if
(
isDefault
.
value
===
'0'
){
//编辑--事业部
const
data
=
{
ids
:
[
form
.
value
.
partNameId
],
professionalDepartment
:
form
.
value
.
professionalDepartment
,
p8PostMassProductionUnit
:
form
.
value
.
p8PostMassProductionUnit
||
'制造'
,
businessRelationId
:
route
.
query
.
businessRelationId
};
batchUpdateSpecialConfig
(
data
).
then
(()
=>
{
proxy
.
$modal
.
msgSuccess
(
"更新成功"
);
openEdit
.
value
=
false
;
getList
();
});
}
}
});
}
/** 导出按钮操作 */
function
handleExport
()
{
proxy
.
download
(
'control/config/export'
,
{
...
queryParams
.
value
},
`config_
${
new
Date
().
getTime
()}
.xlsx`
)
}
onMounted
(()
=>
{
// 加载用户信息
userStore
.
getInfo
();
updateName
.
value
=
route
.
query
.
updateName
||
'--'
;
getPartLevelOneNameList
();
getProfessionalDepartmentList
();
});
getList
();
</
script
>
<
style
scoped
>
.custom-left
.el-form-item__content
{
text-align
:
left
;
}
</
style
>
src/views/controlPlan/relationshipManagement/CQCCriticalParts/index.vue
View file @
1f0df9c8
...
...
@@ -200,6 +200,7 @@ import { useRouter } from 'vue-router';
import
{
ElMessage
}
from
"element-plus"
;
const
{
proxy
}
=
getCurrentInstance
();
// 对话框
const
tableDialogVisible
=
ref
(
false
)
...
...
@@ -347,20 +348,19 @@ function handleBusinessSelect(selectedId) {
}
// 维护模板内容
function
handleMaintainContentView
(
row
)
{
proxy
.
$router
.
push
({
path
:
'CQCMaintainContent'
path
:
'/control/relationshipManagement/CQCMaintainContent'
,
query
:
{
isDefault
:
row
.
isDefault
,
businessRelationId
:
row
.
id
,
certificationBody
:
row
.
certificationBody
,
divisionName
:
row
.
divisionName
,
updateName
:
row
.
updateName
,
}
})}
/** 新增按钮操作 */
function
handleAdd
()
{
reset
();
open
.
value
=
true
;
title
.
value
=
"添加关键零部件和事业部关系"
;
}
//复制新增按钮
function
handleCopyAdd
(
row
){
...
...
@@ -488,8 +488,9 @@ const handleDelete = (row) => {
onMounted
(()
=>
{
getBusinessUnitList
()
getBusinessUnitList
();
getList
();
})
getList
();
</
script
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment