@@ -1,8 +1,8 @@ | |||||
/* | /* | ||||
* @Author: zwq | * @Author: zwq | ||||
* @Date: 2022-08-24 11:19:43 | * @Date: 2022-08-24 11:19:43 | ||||
* @LastEditors: zhp | |||||
* @LastEditTime: 2023-05-16 14:55:04 | |||||
* @LastEditors: zwq | |||||
* @LastEditTime: 2023-06-30 15:00:20 | |||||
* @Description: | * @Description: | ||||
*/ | */ | ||||
export default { | export default { | ||||
@@ -15,7 +15,6 @@ export default { | |||||
statusUrl: '', | statusUrl: '', | ||||
exportURL: '' | exportURL: '' | ||||
}, | }, | ||||
addOrEditTitle: '', | |||||
tableData: [], | tableData: [], | ||||
listQuery: { | listQuery: { | ||||
limit: 10, | limit: 10, | ||||
@@ -23,7 +22,10 @@ export default { | |||||
total: 1, | total: 1, | ||||
}, | }, | ||||
dataListLoading: false, | dataListLoading: false, | ||||
addOrEditTitle: '', | |||||
addOrUpdateVisible: false, | addOrUpdateVisible: false, | ||||
searchsTitle: '', | |||||
searchsVisible: false, | |||||
} | } | ||||
}, | }, | ||||
created() { | created() { | ||||
@@ -71,6 +73,13 @@ export default { | |||||
this.$refs.addOrUpdate.init(id); | this.$refs.addOrUpdate.init(id); | ||||
}); | }); | ||||
}, | }, | ||||
// 条件搜索 | |||||
searchsHandle() { | |||||
this.searchsVisible = true; | |||||
this.$nextTick(() => { | |||||
this.$refs.searchsRef.init(); | |||||
}); | |||||
}, | |||||
cancel(id) { | cancel(id) { | ||||
this.$refs["popover-" + id].showPopper = false; | this.$refs["popover-" + id].showPopper = false; | ||||
}, | }, | ||||
@@ -158,13 +167,26 @@ export default { | |||||
this.addOrUpdateVisible = false | this.addOrUpdateVisible = false | ||||
this.addOrEditTitle = '' | this.addOrEditTitle = '' | ||||
}, | }, | ||||
searchsCancel(){ | |||||
this.$refs.searchsRef.formClear() | |||||
this.searchsVisible = false | |||||
this.searchsTitle = '' | |||||
}, | |||||
handleConfirm() { | handleConfirm() { | ||||
this.$refs.addOrUpdate.dataFormSubmit() | this.$refs.addOrUpdate.dataFormSubmit() | ||||
}, | }, | ||||
searchsConfirm(){ | |||||
this.$refs.searchsRef.dataFormSubmit() | |||||
}, | |||||
successSubmit() { | successSubmit() { | ||||
this.handleCancel() | this.handleCancel() | ||||
this.getDataList() | this.getDataList() | ||||
}, | }, | ||||
searchsSubmit(obj){ | |||||
this.listQuery = {...this.listQuery,...obj} | |||||
this.searchsCancel() | |||||
this.getDataList() | |||||
}, | |||||
// 导出 | // 导出 | ||||
exportHandle(name) { | exportHandle(name) { | ||||
this.$http | this.$http | ||||
@@ -0,0 +1,53 @@ | |||||
<!-- | |||||
* @Author: zwq | |||||
* @Date: 2021-11-18 14:16:25 | |||||
* @LastEditors: zwq | |||||
* @LastEditTime: 2023-06-30 16:23:19 | |||||
* @Description: | |||||
--> | |||||
<template> | |||||
<el-descriptions title=""> | |||||
<el-descriptions-item label="标题">{{ dataInfo.title }}</el-descriptions-item> | |||||
<el-descriptions-item label="产品">{{ dataInfo.productName }}</el-descriptions-item> | |||||
<el-descriptions-item label="发生日期">{{ dataInfo.occurrenceDate | timeFormatter }}</el-descriptions-item> | |||||
<el-descriptions-item label="配套产品/系统">{{ dataInfo.supportProducts }}</el-descriptions-item> | |||||
<el-descriptions-item label="启动人">{{ dataInfo.userName }}</el-descriptions-item> | |||||
<el-descriptions-item label="8D类型">{{ eightDisciplineType[dataInfo.eightDisciplineType] }}</el-descriptions-item> | |||||
</el-descriptions> | |||||
</template> | |||||
<script> | |||||
import codeFilter from "@/filters/code-filter"; | |||||
import { timeFormatter } from "@/filters/code-filter"; | |||||
export default { | |||||
data() { | |||||
return { | |||||
dataInfo: '', | |||||
eightDisciplineType: { | |||||
1: '客诉问题', | |||||
2: '重大质量问题', | |||||
0: '重复发生问题', | |||||
}, | |||||
} | |||||
}, | |||||
methods: { | |||||
init(id) { | |||||
console.log(codeFilter('eightDisciplineType')) | |||||
this.$nextTick(() => { | |||||
this.$http | |||||
.get(`/code/startEightDiscipline/${id}`) | |||||
.then(({ data: res }) => { | |||||
this.dataListLoading = false; | |||||
if (res.code !== 0) { | |||||
this.dataInfo = ''; | |||||
return this.$message.error(res.msg); | |||||
} | |||||
this.dataInfo = res.data; | |||||
}) | |||||
.catch(() => { | |||||
}) | |||||
}); | |||||
}, | |||||
} | |||||
} | |||||
</script> |
@@ -0,0 +1,129 @@ | |||||
<!-- | |||||
* @Author: zwq | |||||
* @Date: 2023-01-04 10:29:40 | |||||
* @LastEditors: zwq | |||||
* @LastEditTime: 2023-06-30 16:24:04 | |||||
* @Description: | |||||
--> | |||||
<template> | |||||
<el-tabs v-model="activeName" type="border-card" @tab-click="handleClick"> | |||||
<el-tab-pane label="(D0)启动CAR" name="D0"> | |||||
<tabD0 | |||||
v-show="D0Visible" | |||||
ref="D0Ref" | |||||
/> | |||||
</el-tab-pane> | |||||
<el-tab-pane label="(D1)初步分析" name="D1"> | |||||
<tabD1 | |||||
v-show="D1Visible" | |||||
ref="D1Ref" | |||||
/> | |||||
</el-tab-pane> | |||||
<el-tab-pane label="(D2)创建团队" name="D2"> | |||||
<tabD2 | |||||
v-show="D2Visible" | |||||
ref="D2Ref" | |||||
/> | |||||
</el-tab-pane> | |||||
<el-tab-pane label="(D3)临时处理措施" name="D3"> | |||||
<tabD3 | |||||
v-show="D3Visible" | |||||
ref="D3Ref" | |||||
/> | |||||
</el-tab-pane> | |||||
<el-tab-pane label="(D4)根本原因分析" name="D4"> | |||||
<tabD4 | |||||
v-show="D4Visible" | |||||
ref="D4Ref" | |||||
/> | |||||
</el-tab-pane> | |||||
<el-tab-pane label="(D5)纠正措施描述" name="D5"> | |||||
<tabD5 | |||||
v-show="D5Visible" | |||||
ref="D5Ref" | |||||
/> | |||||
</el-tab-pane> | |||||
<el-tab-pane label="(D6)有效性验证" name="D6"> | |||||
<tabD6 | |||||
v-show="D6Visible" | |||||
ref="D6Ref" | |||||
/> | |||||
</el-tab-pane> | |||||
<el-tab-pane label="(D7)预防再发生" name="D7"> | |||||
<tabD7 | |||||
v-show="D7Visible" | |||||
ref="D7Ref" | |||||
/> | |||||
</el-tab-pane> | |||||
<el-tab-pane label="(D8)总结与经验分享" name="D8"> | |||||
<tabD8 | |||||
v-show="D8Visible" | |||||
ref="D8Ref" | |||||
/> | |||||
</el-tab-pane> | |||||
</el-tabs> | |||||
</template> | |||||
<script> | |||||
import tabD0 from "./eightDisciplineList-D0" | |||||
import tabD1 from "./eightDisciplineList-D1" | |||||
import tabD2 from "./eightDisciplineList-D2" | |||||
import tabD3 from "./eightDisciplineList-D3" | |||||
import tabD4 from "./eightDisciplineList-D4" | |||||
import tabD5 from "./eightDisciplineList-D5" | |||||
import tabD6 from "./eightDisciplineList-D6" | |||||
import tabD7 from "./eightDisciplineList-D7" | |||||
import tabD8 from "./eightDisciplineList-D8" | |||||
export default { | |||||
components: { | |||||
tabD0,tabD1,tabD2, | |||||
tabD3,tabD4,tabD5, | |||||
tabD6,tabD7,tabD8, | |||||
}, | |||||
data() { | |||||
return { | |||||
visible: false, | |||||
activeName: "D0", | |||||
D0Visible: false, | |||||
D1Visible: false, | |||||
D2Visible: false, | |||||
D3Visible: false, | |||||
D4Visible: false, | |||||
D5Visible: false, | |||||
D6Visible: false, | |||||
D7Visible: false, | |||||
D8Visible: false, | |||||
}; | |||||
}, | |||||
computed: { | |||||
dataRule() { | |||||
return { | |||||
id: '' | |||||
}; | |||||
}, | |||||
}, | |||||
methods: { | |||||
init(id) { | |||||
this.id = id | |||||
this.visible = true; | |||||
this.D0Visible = true | |||||
this.oldTab = 'D0Visible' | |||||
this.$nextTick(() => { | |||||
this.$refs.D0Ref.init(this.id); | |||||
}); | |||||
}, | |||||
handleClick(val) { | |||||
this[this.oldTab] = false; | |||||
this[val.name+'Visible'] = true; | |||||
this.oldTab = val.name+'Visible' | |||||
this.$nextTick(() => { | |||||
this.$refs[val.name+'Ref'].init(this.id); | |||||
}); | |||||
}, | |||||
dataFormSubmit() { | |||||
this.$emit("refreshDataList"); | |||||
}, | |||||
formClear() {}, | |||||
}, | |||||
}; | |||||
</script> |
@@ -0,0 +1,150 @@ | |||||
<!-- | |||||
* @Author: zwq | |||||
* @Date: 2023-01-04 10:29:40 | |||||
* @LastEditors: zwq | |||||
* @LastEditTime: 2023-06-30 14:53:49 | |||||
* @Description: | |||||
--> | |||||
<template> | |||||
<el-form :model="dataForm" ref="dataForm" label-width="120px"> | |||||
<el-form-item prop="title" :label="$t('code.title')"> | |||||
<el-input v-model="dataForm.title" :placeholder="$t('code.title')" clearable></el-input> | |||||
</el-form-item> | |||||
<el-form-item prop="customId" label="客户"> | |||||
<el-select v-model="dataForm.customId" filterable clearable placeholder="请选择客户"> | |||||
<el-option | |||||
v-for="item in this.urlOptions.optionArr.arr0" | |||||
:key="item.id" | |||||
:label="item.customerName" | |||||
:value="item.id" | |||||
> | |||||
</el-option> | |||||
</el-select> | |||||
</el-form-item> | |||||
<el-form-item prop="productId" label="产品"> | |||||
<el-select v-model="dataForm.productId" filterable clearable placeholder="请选择产品"> | |||||
<el-option | |||||
v-for="item in this.urlOptions.optionArr.arr1" | |||||
:key="item.id" | |||||
:label="item.productName" | |||||
:value="item.id" | |||||
> | |||||
</el-option> | |||||
</el-select> | |||||
</el-form-item> | |||||
<el-form-item prop="eightDisciplineStatus" label="步骤"> | |||||
<el-select | |||||
v-model="dataForm.eightDisciplineStatus" | |||||
filterable | |||||
clearable | |||||
placeholder="请选择步骤" | |||||
> | |||||
<el-option | |||||
v-for="item in eightDisciplineStatusArr" | |||||
:key="item.id" | |||||
:label="item.name" | |||||
:value="item.id" | |||||
> | |||||
</el-option> | |||||
</el-select> | |||||
</el-form-item> | |||||
<el-form-item prop="occurrenceDate" label="发生时间"> | |||||
<el-date-picker | |||||
v-model="dataForm.occurrenceDate" | |||||
type="date" | |||||
:style="{ width: '100%' }" | |||||
format="yyyy-MM-dd" | |||||
valueFormat="yyyy-MM-ddTHH:mm:ss" | |||||
placeholder="选择日期" | |||||
> | |||||
</el-date-picker> | |||||
</el-form-item> | |||||
</el-form> | |||||
</template> | |||||
<script> | |||||
import basicAdd from "@/mixins/basic-add"; | |||||
const eightDisciplineStatusArr = [ | |||||
{ | |||||
name: "D0", | |||||
id: 0, | |||||
}, | |||||
{ | |||||
name: "D1", | |||||
id: 1, | |||||
}, | |||||
{ | |||||
name: "D2", | |||||
id: 2, | |||||
}, | |||||
{ | |||||
name: "D3", | |||||
id: 3, | |||||
}, | |||||
{ | |||||
name: "D4", | |||||
id: 4, | |||||
}, | |||||
{ | |||||
name: "D5", | |||||
id: 5, | |||||
}, | |||||
{ | |||||
name: "D6", | |||||
id: 6, | |||||
}, | |||||
{ | |||||
name: "D7", | |||||
id: 7, | |||||
}, | |||||
{ | |||||
name: "D8", | |||||
id: 8, | |||||
}, | |||||
]; | |||||
export default { | |||||
mixins: [basicAdd], | |||||
data() { | |||||
return { | |||||
urlOptions: { | |||||
optionArrUrl: ["/basic/qmsCustomer/page", "/basic/qmsProduct/page"], | |||||
}, | |||||
visible: false, | |||||
eightDisciplineStatusArr, | |||||
dataForm: { | |||||
title: "", | |||||
eightDisciplineStatus: "", | |||||
occurrenceDate: "", | |||||
customId: "", | |||||
productId: "", | |||||
}, | |||||
}; | |||||
}, | |||||
computed: { | |||||
dataRule() { | |||||
return { | |||||
// paramCode: [ | |||||
// { | |||||
// required: true, | |||||
// message: this.$t("validate.required"), | |||||
// trigger: "blur", | |||||
// }, | |||||
// ], | |||||
}; | |||||
}, | |||||
}, | |||||
methods: { | |||||
init() { | |||||
this.visible = true; | |||||
this.$nextTick(() => { | |||||
this.$refs["dataForm"].resetFields(); | |||||
this.getArr(); | |||||
}); | |||||
}, | |||||
dataFormSubmit() { | |||||
this.$emit("refreshDataList", this.dataForm); | |||||
}, | |||||
}, | |||||
}; | |||||
</script> |
@@ -0,0 +1,189 @@ | |||||
<template> | |||||
<el-card shadow="never" class="aui-card--fill"> | |||||
<div class="mod-sys__user"> | |||||
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick"> | |||||
<el-badge :value="5" class="item"> | |||||
<el-button type="primary" size="small" @click="searchsClick">条件搜索</el-button> | |||||
</el-badge> | |||||
</search-bar> | |||||
<base-table | |||||
:table-props="tableProps" | |||||
:page="listQuery.page" | |||||
:limit="listQuery.limit" | |||||
:table-data="tableData" | |||||
> | |||||
<method-btn | |||||
v-if="tableBtn.length" | |||||
slot="handleBtn" | |||||
:width="100" | |||||
:label="$t('handle')" | |||||
:method-list="tableBtn" | |||||
@clickBtn="handleClick" | |||||
/> | |||||
</base-table> | |||||
<pagination | |||||
:limit.sync="listQuery.limit" | |||||
:page.sync="listQuery.page" | |||||
:total="listQuery.total" | |||||
@pagination="getDataList" | |||||
/> | |||||
<!-- 弹窗, 条件搜索--> | |||||
<base-dialog | |||||
:dialogTitle="searchsTitle" | |||||
:dialogVisible="searchsVisible" | |||||
@cancel="searchsCancel" | |||||
@confirm="searchsConfirm" | |||||
:before-close="searchsCancel" | |||||
> | |||||
<searchs ref="searchsRef" @refreshDataList="searchsSubmit"></searchs> | |||||
</base-dialog> | |||||
<!-- 弹窗, 新增 / 修改 --> | |||||
<base-dialog | |||||
:dialogTitle="addOrEditTitle" | |||||
:dialogVisible="addOrUpdateVisible" | |||||
@cancel="handleCancel" | |||||
@confirm="handleConfirm" | |||||
:before-close="handleCancel" | |||||
width=80% | |||||
> | |||||
<add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update> | |||||
</base-dialog> | |||||
</div> | |||||
</el-card> | |||||
</template> | |||||
<script> | |||||
import AddOrUpdate from "./components/eightDisciplineList-detail"; | |||||
import Searchs from "./components/searchs"; | |||||
import basicPage from "@/mixins/basic-page"; | |||||
import codeFilter from "@/filters/code-filter"; | |||||
import { timeFormatter } from "@/filters/code-filter"; | |||||
import i18n from "@/i18n"; | |||||
const tableProps = [ | |||||
{ | |||||
prop: "title", | |||||
label: i18n.t("code.title"), | |||||
align: "center", | |||||
}, | |||||
{ | |||||
prop: "code", | |||||
label: i18n.t("code.code"), | |||||
align: "center", | |||||
}, | |||||
{ | |||||
prop: "eightDisciplineType", | |||||
label: i18n.t("code.eightDisciplineType"), | |||||
align: "center", | |||||
filter: codeFilter("eightDisciplineType"), | |||||
}, | |||||
{ | |||||
prop: "occurrenceDate", | |||||
label: i18n.t("code.occurrenceDate"), | |||||
align: "center", | |||||
filter: timeFormatter, | |||||
}, | |||||
{ | |||||
prop: "description", | |||||
label: i18n.t("code.description"), | |||||
align: "center", | |||||
}, | |||||
{ | |||||
prop: "examineStatus", | |||||
label: i18n.t("code.examineStatus"), | |||||
align: "center", | |||||
filter: codeFilter("examineStatus"), | |||||
}, | |||||
]; | |||||
const tableBtn = [ | |||||
{ | |||||
type: "delete", | |||||
btnName: i18n.t("delete"), | |||||
}, | |||||
{ | |||||
type: "detail", | |||||
btnName: "详情", | |||||
}, | |||||
]; | |||||
export default { | |||||
mixins: [basicPage], | |||||
data() { | |||||
return { | |||||
urlOptions: { | |||||
getDataListURL: "/code/startEightDiscipline/eight/page", | |||||
deleteURL: "/code/startEightDiscipline", | |||||
}, | |||||
tableProps, | |||||
tableBtn, | |||||
tableData: [], | |||||
formConfig: [ | |||||
{ | |||||
type: "button", | |||||
btnName: "搜索", | |||||
name: "search", | |||||
color: "primary", | |||||
}, | |||||
{ | |||||
type: "button", | |||||
btnName: i18n.t("export"), | |||||
name: "export", | |||||
color: "primary", | |||||
plain: true, | |||||
}, | |||||
], | |||||
}; | |||||
}, | |||||
components: { | |||||
AddOrUpdate, | |||||
Searchs, | |||||
}, | |||||
methods: { | |||||
// 获取数据列表 | |||||
getDataList() { | |||||
this.dataListLoading = true; | |||||
this.$http | |||||
.post(this.urlOptions.getDataListURL, this.listQuery) | |||||
.then(({ data: res }) => { | |||||
this.dataListLoading = false; | |||||
if (res.code !== 0) { | |||||
this.tableData = []; | |||||
this.listQuery.total = 0; | |||||
return this.$message.error(res.msg); | |||||
} | |||||
this.tableData = res.data.list; | |||||
this.listQuery.total = res.data.total; | |||||
}) | |||||
.catch(() => { | |||||
this.dataListLoading = false; | |||||
}); | |||||
}, | |||||
//search-bar点击 | |||||
searchsClick() { | |||||
this.searchsTitle = "条件搜索"; | |||||
this.searchsHandle(); | |||||
}, | |||||
buttonClick(val) { | |||||
switch (val.btnName) { | |||||
case "search": | |||||
this.listQuery = {}; | |||||
this.listQuery.page = 1; | |||||
this.listQuery.limit = 10; | |||||
this.listQuery.total = 1; | |||||
this.getDataList(); | |||||
break; | |||||
case "export": | |||||
this.exportHandle("工厂管理"); | |||||
break; | |||||
default: | |||||
console.log(val); | |||||
} | |||||
}, | |||||
otherMethods(val) { | |||||
this.addOrEditTitle = "详情"; | |||||
this.addOrUpdateVisible = true; | |||||
this.addOrUpdateHandle(val.data.id); | |||||
}, | |||||
}, | |||||
}; | |||||
</script> |