Compare commits

...

11 Commits

Author SHA1 Message Date
‘937886381’
3a39a4fa32 Merge branch 'master' into zhp 2023-06-30 17:04:21 +08:00
‘937886381’
3c93b8045a 修改bug 2023-06-30 17:03:47 +08:00
251345fad8 Merge pull request '更新8D管理中心' (#10) from zwq into master
Reviewed-on: #10
2023-06-30 16:29:45 +08:00
zwq
3e2dd63f36 更新8D管理中心 2023-06-30 16:29:32 +08:00
b11683e519 Merge pull request '更新8D处理中心' (#9) from zwq into master
Reviewed-on: #9
2023-06-30 11:14:46 +08:00
zwq
73578abfb4 更新8D处理中心 2023-06-30 11:14:09 +08:00
185a99ca2c Merge pull request '修改bug' (#8) from zwq into master
Reviewed-on: #8
2023-06-28 16:55:05 +08:00
zwq
0405ccfa25 修改bug 2023-06-28 16:54:46 +08:00
ec00c58c6c Merge pull request '更新中英文切换部分无效' (#7) from zwq into master
Reviewed-on: #7
2023-06-28 15:42:35 +08:00
zwq
6a03ac5a9e 更新中英文切换部分无效 2023-06-28 15:42:16 +08:00
zhp
a7df5e4bcd Merge pull request 'zhp' (#6) from zhp into master
Reviewed-on: #6
2023-06-28 14:24:11 +08:00
65 changed files with 3559 additions and 885 deletions

70
package-lock.json generated
View File

@ -3201,6 +3201,7 @@
"thread-loader": "^2.1.3", "thread-loader": "^2.1.3",
"url-loader": "^2.2.0", "url-loader": "^2.2.0",
"vue-loader": "^15.9.2", "vue-loader": "^15.9.2",
"vue-loader-v16": "npm:vue-loader@^16.1.0",
"vue-style-loader": "^4.1.2", "vue-style-loader": "^4.1.2",
"webpack": "^4.0.0", "webpack": "^4.0.0",
"webpack-bundle-analyzer": "^3.8.0", "webpack-bundle-analyzer": "^3.8.0",
@ -16945,6 +16946,75 @@
} }
} }
}, },
"vue-loader-v16": {
"version": "npm:vue-loader@16.8.3",
"resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
"integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true,
"optional": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"optional": true
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"vue-router": { "vue-router": {
"version": "3.0.7", "version": "3.0.7",
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.0.7.tgz", "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.0.7.tgz",

View File

@ -0,0 +1,35 @@
/*
* @Date: 2020-12-29 16:49:28
* @LastEditors: zwq
* @LastEditTime: 2023-01-05 15:49:17
* @FilePath: \basic-admin\src\filters\basicData\index.js
* @Description:
*/
import moment from 'moment'
const table = {
eightDisciplineType: {
1: '客诉问题',
2: '重大质量问题',
0: '重复发生问题',
},
examineStatus: {
1: '需要审批',
0: '不需要审批',
}
}
export function timeFormatter(timeObj) {
if (timeObj) {
return moment(timeObj).format('YYYY-MM-DD HH:mm:ss')
} else {
return '-'
}
}
export default function(dictTable) {
return function(val) {
return table?.[dictTable]?.[val]
}
}

View File

@ -1,4 +1,4 @@
import module from './en' import module from './eng'
const t = {} const t = {}
t.module = module t.module = module

View File

@ -573,13 +573,12 @@ t.code.code = '编码'
t.code.description = '描述' t.code.description = '描述'
t.code.eightDisciplineType = '8D类型' t.code.eightDisciplineType = '8D类型'
t.code.problemStatus = '状态' t.code.problemStatus = '状态'
t.code.eightDisciplineStatus = '状态'
t.code.actualResponsePeriod = '实际响应周期' t.code.actualResponsePeriod = '实际响应周期'
t.code.batchNumber = '批次数' t.code.batchNumber = '批次数'
t.code.customName = '客户' t.code.customName = '客户'
t.code.defectSource = '缺陷来源' t.code.defectSource = '缺陷来源'
t.code.eightDisciplineId = '8D来源id' t.code.eightDisciplineId = '8D来源id'
t.code.eightDisciplineStatus = '8D类型' t.code.eightDisciplineStatus = '8D状态'
t.code.productName = '产品名' t.code.productName = '产品名'
t.code.orderNo = '订单号' t.code.orderNo = '订单号'
t.code.productType = '产品类型' t.code.productType = '产品类型'
@ -646,57 +645,9 @@ t.code.uploaded = '已上传'
t.code.notUploaded = '未上传' t.code.notUploaded = '未上传'
t.code.Examiner = '检验人' t.code.Examiner = '检验人'
t.dictionary = {} t.dictionary = {}
t.dictionary.name = ' 名称' t.dictionary.name = ' 名称'
t.dictionary.code = ' 编码' t.dictionary.code = ' 编码'
export default t export default t

View File

@ -1,8 +1,8 @@
/* /*
* @Author: zwq * @Author: zwq
* @Date: 2022-08-24 11:19:43 * @Date: 2022-08-24 11:19:43
* @LastEditors: zhp * @LastEditors: zwq
* @LastEditTime: 2023-05-16 14:55:04 * @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

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-02-14 15:02:26 * @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-06-26 09:44:09 * @LastEditTime: 2023-06-30 16:58:55
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@ -20,7 +20,7 @@
<el-switch v-model="dataForm.incomingInspection" :active-value="1" :inactive-value="0"> <el-switch v-model="dataForm.incomingInspection" :active-value="1" :inactive-value="0">
</el-switch> </el-switch>
</el-form-item> </el-form-item>
<el-form-item prop="finishInspection" :label="$t('basic.stock')"> <el-form-item prop="finishInspection" :label="$t('basic.finishedProduct')">
<el-switch v-model="dataForm.finishInspection" :active-value="1" :inactive-value="0"> <el-switch v-model="dataForm.finishInspection" :active-value="1" :inactive-value="0">
</el-switch> </el-switch>
</el-form-item> </el-form-item>
@ -32,8 +32,8 @@
<el-switch v-model="dataForm.processInspection" :active-value="1" :inactive-value="0"> <el-switch v-model="dataForm.processInspection" :active-value="1" :inactive-value="0">
</el-switch> </el-switch>
</el-form-item> </el-form-item>
<el-form-item prop="customerTypeStatus" :label="$t('basic.status')"> <el-form-item prop="controlStatus" :label="$t('basic.status')">
<el-select v-model="dataForm.customerTypeStatus" :placeholder="$t('basic.status')"> <el-select v-model="dataForm.controlStatus" :placeholder="$t('basic.status')">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option> </el-option>
</el-select> </el-select>
@ -49,8 +49,8 @@ export default {
data() { data() {
return { return {
urlOptions: { urlOptions: {
submitURL: "/basic/qmsCustomerType", submitURL: "/basic/qmsControlMode",
infoURL: "/basic/qmsCustomerType/{id}", infoURL: "/basic/qmsControlMode/{id}",
getCodeURL: '/basic/qmsControlMode/getCode' getCodeURL: '/basic/qmsControlMode/getCode'
}, },
options: [{ options: [{
@ -66,7 +66,7 @@ export default {
id: "", id: "",
controlCode:null, controlCode:null,
controlName:null, controlName:null,
customerTypeStatus: null, controlStatus: null,
finishInspection: null, finishInspection: null,
incomingInspection: null, incomingInspection: null,
outInspection: null, outInspection: null,
@ -106,13 +106,14 @@ export default {
methods: { methods: {
init(id, ) { init(id, ) {
this.dataForm.id = id || "" this.dataForm.id = id || ""
this.getControlCode()
// this.dataForm.dictTypeId = dictTypeId || ""; // this.dataForm.dictTypeId = dictTypeId || "";
this.visible = true this.visible = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs["dataForm"].resetFields(); this.$refs["dataForm"].resetFields();
if (this.dataForm.id) { if (this.dataForm.id) {
this.getInfo(); this.getInfo();
} else {
this.getControlCode()
} }
}); });
}, },

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-01-04 10:29:40 * @Date: 2023-01-04 10:29:40
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2023-02-20 08:52:46 * @LastEditTime: 2023-06-29 16:59:18
* @Description: * @Description:
--> -->
<template> <template>
@ -126,7 +126,7 @@ export default {
}) })
}, },
handleConditionSearch() { handleConditionSearch() {
this.$emit("successSubmit", this.dataForm.key); this.$emit("successSubmit", this.dataForm);
}, },
// dataFormSubmitHandle: debounce( // dataFormSubmitHandle: debounce(
// function () { // function () {

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-31 09:49:36 * @Date: 2023-01-31 09:49:36
* @LastEditTime: 2023-05-17 15:00:50 * @LastEditTime: 2023-06-30 16:54:37
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@ -22,6 +22,7 @@ export default {
}, },
data() { data() {
return { return {
// injectData:{},
urlOptions: { urlOptions: {
syncURL: "/basic/qmsProduct/connectAllProduct" syncURL: "/basic/qmsProduct/connectAllProduct"
}, },
@ -30,21 +31,23 @@ export default {
methods: { methods: {
// //
emitClick() { emitClick() {
console.log(this.injectData)
const data = { const data = {
id: this.injectData.id, id: this.injectData.id,
finishInspection: this.injectData.finishInspection, finishInspection: this.injectData.finishInspection,
incomingInspection: this.injectData.incomingInspection, incomingInspection: this.injectData.incomingInspection,
outInspection: this.injectData.outInspection, outInspection: this.injectData.outInspection,
processInspection: this.injectData.outInspection processInspection: this.injectData.processInspection
} }
this.$http.put(this.urlOptions.syncURL, { data }).then(({ data }) => { this.$http.put(this.urlOptions.syncURL, data ).then(({ data }) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.$message({ this.$message({
message: "操作成功", message: "操作成功",
type: "success", type: "success",
duration: 1500, duration: 1500,
onClose: () => { onClose: () => {
this.$message.error(data.msg); this.$message.error(data.msg)
// this.$parent.$parent.$parent.$parent.getDataList()
}, },
}); });
} else { } else {

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-02-14 15:02:26 * @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-04-04 15:35:31 * @LastEditTime: 2023-06-30 08:57:14
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@ -42,8 +42,8 @@ export default {
data() { data() {
return { return {
urlOptions: { urlOptions: {
submitURL: "/basic/qmsProductType", submitURL: "/basic/qmsProduct",
infoURL: "/basic/qmsProductType/{id}", infoURL: "/basic/qmsProduct/{id}",
getCodeURL: '/basic/qmsProduct/getCode', getCodeURL: '/basic/qmsProduct/getCode',
getTypeListURL: '/basic/qmsProductType/page' getTypeListURL: '/basic/qmsProductType/page'
}, },
@ -111,7 +111,7 @@ export default {
.then(({ data: res }) => { .then(({ data: res }) => {
if (res.code === 0) { if (res.code === 0) {
console.log(res); console.log(res);
this.dataForm.productTypeCode = res.data this.dataForm.productCode = res.data
} }
}) })
.catch(() => { .catch(() => {
@ -130,7 +130,7 @@ export default {
// //
getInfo() { getInfo() {
this.$http this.$http
.get(`/basic/qmsProductType/${this.dataForm.id}`) .get(`/basic/qmsProduct/${this.dataForm.id}`)
.then(({ data: res }) => { .then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
return this.$message.error(res.msg); return this.$message.error(res.msg);

View File

@ -1,16 +1,16 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-31 14:12:10 * @Date: 2023-01-31 14:12:10
* @LastEditTime: 2023-01-31 16:47:32 * @LastEditTime: 2023-06-30 17:00:43
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
<template> <template>
<span> <span>
<el-radio v-model="injectData.incomingInspection" :label="1">{{ $t('basic.stock') }}</el-radio> <el-radio v-model="injectData.incomingInspection" :label="1">{{ $t('basic.stock') }}</el-radio>
<el-radio v-model="injectData.processInspection" :label="1">{{ $t('basic.course') }}</el-radio>
<el-radio v-model="injectData.finishInspection" :label="1">{{ $t('basic.finishedProduct') }}</el-radio> <el-radio v-model="injectData.finishInspection" :label="1">{{ $t('basic.finishedProduct') }}</el-radio>
<el-radio v-model="injectData.outInspection" :label="1">{{ $t('basic.shipment') }}</el-radio> <el-radio v-model="injectData.outInspection" :label="1">{{ $t('basic.shipment') }}</el-radio>
<el-radio v-model="injectData.processInspection" :label="1">{{ $t('basic.course') }}</el-radio>
</span> </span>
</template> </template>

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-01-04 10:29:40 * @Date: 2023-01-04 10:29:40
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2023-02-14 14:12:11 * @LastEditTime: 2023-06-30 16:39:46
* @Description: * @Description:
--> -->
<template> <template>
@ -122,7 +122,7 @@ export default {
}, },
methods: { methods: {
init(data) { init(data) {
console.log(); console.log(data)
// this.dataForm.id = id || ""; // this.dataForm.id = id || "";
this.productData = data? data: {} this.productData = data? data: {}
this.visible = true; this.visible = true;
@ -130,23 +130,28 @@ export default {
this.listQuery.controllerModeId = data ? data.id : null; this.listQuery.controllerModeId = data ? data.id : null;
// this.$refs["dataForm"].resetFields(); // this.$refs["dataForm"].resetFields();
// if (this.dataForm.id) { // if (this.dataForm.id) {
this.getDataList(); this.getDataList()
// } // }
}); });
}, },
handleClick() { handleClick(val) {
console.log(val)
if (val.type === "synchronous") { if (val.type === "synchronous") {
if (!this.listQuery.controllerModeId) { console.log(val)
console.log(this.listQuery.controllerModeId)
if (!this.listQuery.controllerModeId === null) {
this.$message({ this.$message({
message: '请先选择控制模式', message: '请先选择控制模式',
type: 'warning' type: 'warning'
}); });
} else { } else {
const data={ const data = {
controlCodeId: this.listQuery.controlCodeId, id:val.data.id,
controlCodeId: this.listQuery.controllerModeId,
finishInspection: this.productData.finishInspection, finishInspection: this.productData.finishInspection,
incomingInspection: this.productData.finishInspection, incomingInspection: this.productData.incomingInspection,
processInspection: this.productData.processInspection processInspection: this.productData.processInspection,
outInspection: this.productData.outInspection
} }
this.$http['put']('/basic/qmsProduct',data).then(({ data: res }) => { this.$http['put']('/basic/qmsProduct',data).then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
@ -157,8 +162,9 @@ export default {
type: 'success', type: 'success',
duration: 500, duration: 500,
onClose: () => { onClose: () => {
this.visible = false this.$nextTick(() => {
this.$emit('refreshDataList') this.getDataList()
})
} }
}) })
}).catch(() => { }) }).catch(() => { })
@ -170,10 +176,12 @@ export default {
// }); // });
} else if (val.type === 'cancel') { } else if (val.type === 'cancel') {
const data = { const data = {
controlCodeId: null, id: val.data.id,
finishInspection: null, controlCodeId: 0,
incomingInspection: null, finishInspection: 0,
processInspection: null incomingInspection: 0,
processInspection: 0,
outInspection:0
} }
this.$http['put']('/basic/qmsProduct', data).then(({ data: res }) => { this.$http['put']('/basic/qmsProduct', data).then(({ data: res }) => {
if (res.code !== 0) { if (res.code !== 0) {
@ -184,8 +192,10 @@ export default {
type: 'success', type: 'success',
duration: 500, duration: 500,
onClose: () => { onClose: () => {
this.visible = false this.$nextTick(() => {
this.$emit('refreshDataList') this.getDataList()
})
// this.$emit('refreshDataList')
} }
}) })
}).catch(() => { }) }).catch(() => { })

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-02-14 15:02:26 * @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-06-26 15:01:44 * @LastEditTime: 2023-06-30 09:58:35
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@ -33,9 +33,6 @@ export default {
chooseData: [], chooseData: [],
urlOptions: { urlOptions: {
submitURL: "/basic/qmsCustomer", submitURL: "/basic/qmsCustomer",
getCustomerPageListURL: "/basic/qmsCustomerType/page",
infoURL: "/basic/qmsCustomer/{id}",
getCodeURL: '/basic/qmsCustomer/getCode',
getTeamMemberURL: '/basic/qmsTeamMember/page', getTeamMemberURL: '/basic/qmsTeamMember/page',
getUserListURL: '/sys/user/page', getUserListURL: '/sys/user/page',
editTeamMemberListURL: '/basic/qmsTeamMember' editTeamMemberListURL: '/basic/qmsTeamMember'
@ -84,10 +81,40 @@ export default {
}; };
}, },
}, },
destroyed() {
this.notChooseData = []
this.chooseData = []
},
methods: { methods: {
init(id,) { init(id,) {
this.teamId = id || "" this.teamId = id || ""
this.notChooseData = []
this.chooseData = []
// this.dataForm.dictTypeId = dictTypeId || ""; // this.dataForm.dictTypeId = dictTypeId || "";
// this.$http
// .get(this.urlOptions.getTeamMemberURL, {
// params: {
// teamId: id
// }
// })
// .then(({ data: res }) => {
// console.log(res)
// this.dataListLoading = false;
// if (res.code === 0) {
// var data = res.data.memberDTOS
// for (let i = 0; i < data.length; i++) {
// this.chooseData.push(data[i].userId)
// }
// this.notChooseData = res.data.undefinedUserDTOS.map((item) => {
// return {
// key: item.id,
// label: item.userName
// }
// })
// console.log(this.chooseData)
// console.log(this.notChooseData)
// }
// })
this.$http this.$http
.get(this.urlOptions.getTeamMemberURL, { .get(this.urlOptions.getTeamMemberURL, {
params: { params: {
@ -179,6 +206,8 @@ export default {
duration: 500, duration: 500,
onClose: () => { onClose: () => {
this.visible = false this.visible = false
this.notChooseData = []
this.chooseData = []
this.$emit("refreshDataList") this.$emit("refreshDataList")
}, },
}); });

View File

@ -21,12 +21,12 @@
</base-dialog> </base-dialog>
<base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel" <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
@confirm="handleConfirm" :before-close="handleCancel"> @confirm="handleConfirm" :before-close="handleCancel">
<control-add ref="addOrUpdate" @successSubmit="successSubmit"></control-add> <control-add ref="addOrUpdate" @refreshDataList="successSubmit"></control-add>
<!-- <el-row slot="footer" type="flex" justify="end"> </el-row> --> <!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
</base-dialog> </base-dialog>
<base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel" <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
@confirm="handleSearchConfirm" :before-close="handleSearchCancel"> @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
<control-search ref="searchOrUpdate" @refreshDataList="conditionSearchSubmit"></control-search> <control-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit"></control-search>
<el-row slot="footer" type="flex" justify="end"> <el-row slot="footer" type="flex" justify="end">
<el-col :span="12"> <el-col :span="12">
<el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel"> <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
@ -189,12 +189,10 @@ export default {
// }, // },
// conditionSearchSubmit() {}, // conditionSearchSubmit() {},
conditionSearchSubmit(key) { conditionSearchSubmit(key) {
// console.log(key); this.listQuery.key = key
console.log(key); this.listQuery.page = 1
this.listQuery.key = key; this.getDataList(key)
this.listQuery.page = 1; this.searchOrUpdateVisible = false
this.getDataList(key);
this.searchOrUpdateVisible = false;
// console.log(11111); // console.log(11111);
// this.conditionSearchSubmit(); // this.conditionSearchSubmit();
}, },
@ -247,14 +245,14 @@ export default {
this.getDataList(); this.getDataList();
break; break;
case "correlation": case "correlation":
this.productOrEditTitle = "产品"; this.productOrEditTitle = "产品"
this.productOrUpdateVisible = true; this.productOrUpdateVisible = true
// this.searchOrUpdateHandle(this.productData); // this.searchOrUpdateHandle(this.productData);
// this.searchOrUpdateVisible = true; // this.searchOrUpdateVisible = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.productOrUpdate.init(this.productData); this.$refs.productOrUpdate.init(this.productData)
}); });
console.log(this.productId); // console.log(this.productId);
break; break;
case "add": case "add":
this.addOrEditTitle = '新增' this.addOrEditTitle = '新增'

View File

@ -83,7 +83,7 @@ export default {
return { return {
urlOptions: { urlOptions: {
getDataListURL: "/basic/qmsCustomer/page", getDataListURL: "/basic/qmsCustomer/page",
deleteURL: "/basic/qmsCustomerType", deleteURL: "/basic/qmsCustomer",
exportURL: '/basic/qmsCustomer/export' exportURL: '/basic/qmsCustomer/export'
}, },
tableProps, tableProps,
@ -166,7 +166,7 @@ export default {
// console.log(11111); // console.log(11111);
// this.conditionSearchSubmit(); // this.conditionSearchSubmit();
}, },
handleClick() { handleClick(val) {
console.log(val); console.log(val);
if (val.type === "delete") { if (val.type === "delete") {
this.$confirm(`确定对[名称=${val.data.customerName}]进行删除操作?`, "提示", { this.$confirm(`确定对[名称=${val.data.customerName}]进行删除操作?`, "提示", {

View File

@ -21,7 +21,7 @@
</base-dialog> </base-dialog>
<base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel" <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
@confirm="handleSearchConfirm" :before-close="handleSearchCancel"> @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
<customerType-search ref="searchOrUpdate" @refreshDataList="conditionSearchSubmit"></customerType-search> <customerType-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit"></customerType-search>
<el-row slot="footer" type="flex" justify="end"> <el-row slot="footer" type="flex" justify="end">
<el-col :span="12"> <el-col :span="12">
<el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel"> <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-20 15:37:39 * @LastEditTime: 2023-06-29 17:02:33
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@ -27,7 +27,7 @@
</base-dialog> </base-dialog>
<base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel" <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
@confirm="handleSearchConfirm" :before-close="handleSearchCancel"> @confirm="handleSearchConfirm" :before-close="handleSearchCancel">
<failureType-search ref="searchOrUpdate" @refreshDataList="conditionSearchSubmit"></failureType-search> <failureType-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit"></failureType-search>
<el-row slot="footer" type="flex" justify="end"> <el-row slot="footer" type="flex" justify="end">
<el-col :span="12"> <el-col :span="12">
<el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel"> <el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">

View File

@ -158,7 +158,7 @@ export default {
this.searchOrEditTitle = "搜索"; this.searchOrEditTitle = "搜索";
this.searchOrUpdateVisible = true; this.searchOrUpdateVisible = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.searchOrUpdate.init(); this.$refs.searchOrUpdate.init()
}); });
}, },
// handleConfirm() { // handleConfirm() {
@ -171,7 +171,7 @@ export default {
this.listQuery.productName = dataForm.productName this.listQuery.productName = dataForm.productName
this.listQuery.productCode = dataForm.productCode this.listQuery.productCode = dataForm.productCode
this.listQuery.page = 1; this.listQuery.page = 1;
this.getDataList(); this.getDataList()
this.searchOrUpdateVisible = false; this.searchOrUpdateVisible = false;
// console.log(11111); // console.log(11111);
// this.conditionSearchSubmit(); // this.conditionSearchSubmit();
@ -219,7 +219,8 @@ export default {
switch (val.btnName) { switch (val.btnName) {
case "search": case "search":
// this.listQuery.paramCode = val.paramCode; // this.listQuery.paramCode = val.paramCode;
this.listQuery.key = null; this.listQuery.productName = null
this.listQuery.productCode = null
// console.log(i18n); // console.log(i18n);
this.listQuery.page = 1; this.listQuery.page = 1;
this.getDataList(); this.getDataList();

View File

@ -7,7 +7,7 @@
--> -->
<template> <template>
<span> <span>
<el-tag v-if="injectData.problemStatus === 1" type="success">可用</el-tag> <el-tag v-if="injectData.eightDisciplineStatus === 1" type="success">可用</el-tag>
<el-tag v-else type="warning">不可用</el-tag> <el-tag v-else type="warning">不可用</el-tag>
</span> </span>
</template> </template>

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-02-14 15:02:26 * @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-06-01 14:22:21 * @LastEditTime: 2023-06-28 16:51:03
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
@ -48,15 +48,15 @@ export default {
}], }],
eightDisciplineTypeList: [ eightDisciplineTypeList: [
{ {
value: 0, value: '0',
label: '重复发生问题 ' label: '重复发生问题 '
}, },
{ {
value: 1, value: '1',
label: '1客诉问题' label: '客诉问题'
}, },
{ {
value: 2, value: '2',
label: '重大质量问题' label: '重大质量问题'
} }
], ],
@ -66,7 +66,7 @@ export default {
name: null, name: null,
code:null, code:null,
eightDisciplineType:null, eightDisciplineType:null,
eightDisciplineStatus: null, eightDisciplineStatus: 0,
}, },
}; };
}, },

View File

@ -0,0 +1,37 @@
<template>
<div class="tableInner">
<el-input v-model="list[itemProp]" @blur="changeInput" />
</div>
</template>
<script>
export default {
name: "InputArea",
props: {
injectData: {
type: Object,
default: () => ({}),
},
itemProp: {
type: String,
},
},
data() {
return {
list: this.injectData,
};
},
methods: {
changeInput() {
this.list.sType = 1
this.$emit("emitData", this.list,1);
},
},
};
</script>
<style scoped>
.tableInner .el-input__inner {
border: none;
padding: 0;
height: 33px;
}
</style>

View File

@ -0,0 +1,45 @@
<template>
<div class="tableInner">
<el-select v-model="list.string" @change="changeInput">
<el-option
v-for="item in injectData.roleList"
:key="item.id"
:label="item.username"
:value="item.id + '+' + item.username"
>
</el-option>
</el-select>
</div>
</template>
<script>
export default {
name: "InputArea",
props: {
injectData: {
type: Object,
default: () => ({}),
},
itemProp: {
type: String,
},
},
data() {
return {
list: this.injectData,
};
},
methods: {
changeInput() {
this.list.sType = 2
this.$emit("emitData", this.list);
},
},
};
</script>
<style scoped>
.tableInner .el-input__inner {
border: none;
padding: 0;
height: 33px;
}
</style>

View File

@ -0,0 +1,47 @@
<template>
<div class="tableInner">
<el-date-picker
@change="changeInput"
v-model="list.time"
type="date"
size="mini"
:style="{width:'100%'}"
format='yyyy-MM-dd'
valueFormat='yyyy-MM-ddTHH:mm:ss'
prefix-icon="none"
placeholder="选择日期">
</el-date-picker>
</div>
</template>
<script>
export default {
name: "InputArea",
props: {
injectData: {
type: Object,
default: () => ({}),
},
itemProp: {
type: String,
},
},
data() {
return {
list: this.injectData,
};
},
methods: {
changeInput() {
this.list.sType = 3
this.$emit("emitData", this.list);
},
},
};
</script>
<style scoped>
.tableInner .el-input__inner {
border: none;
padding: 0;
height: 33px;
}
</style>

View File

@ -1,137 +1,193 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-02-14 15:02:26 * @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-06-01 16:26:20 * @LastEditTime: 2023-06-29 10:54:23
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
<el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="130px"> <el-form
:model="dataForm"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
label-width="100px"
>
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="8"> <el-col :span="8">
<el-form-item prop="code" :label="$t('basic.code')"> <el-form-item prop="code" :label="$t('basic.code')">
<el-input v-model="dataForm.code" :placeholder="$t('basic.code')"> <el-input v-model="dataForm.code" :placeholder="$t('basic.code')"> </el-input>
</el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item prop="title" :label="$t('basic.title')"> <el-form-item prop="title" :label="$t('code.title')">
<el-input v-model="dataForm.title" :placeholder="$t('code.title')"></el-input> <el-input v-model="dataForm.title" :placeholder="$t('code.title')"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item prop="eightDisciplineType" :label="$t('code.eightDisciplineType')"> <el-form-item prop="eightDisciplineType" :label="$t('code.eightDisciplineType')">
<el-select v-model="dataForm.eightDisciplineType" :placeholder="$t('code.eightDisciplineType')"> <el-select
<el-option v-for="item in eightDisciplineTypeList" :key="item.value" :label="item.label" :style="{ width: '100%' }"
:value="item.value"> v-model="dataForm.eightDisciplineType"
:placeholder="$t('code.eightDisciplineType')"
>
<el-option
v-for="item in eightDisciplineTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item prop="occurrenceDate" :label="$t('code.occurrenceDate')">
<el-date-picker v-model="dataForm.occurrenceDate" type="datetime" :placeholder="$t('code.occurrenceDate')"
format='yyyy-MM-dd HH:mm:ss' valueFormat='yyyy-MM-ddTHH:mm:ss'>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="requestResponseCycle" :label="$t('code.requestResponseCycle')">
<el-input v-model="dataForm.requestResponseCycle" :placeholder="$t('code.requestResponseCycle')"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="finalCompletionDate" :label="$t('code.finalCompletionDate')">
<el-date-picker v-model="dataForm.finalCompletionDate" type="datetime"
:placeholder="$t('code.finalCompletionDate')" format='yyyy-MM-dd HH:mm:ss'
valueFormat='yyyy-MM-ddTHH:mm:ss'>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item prop="sampleAcceptanceTime" :label="$t('code.sampleAcceptanceTime')">
<el-date-picker v-model="dataForm.sampleAcceptanceTime" type="datetime"
:placeholder="$t('code.sampleAcceptanceTime')" format='yyyy-MM-dd HH:mm:ss'
valueFormat='yyyy-MM-ddTHH:mm:ss'>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="defectSourceId" :label="$t('code.defectSource')">
<el-select v-model="dataForm.defectSourceId" :placeholder="$t('code.defectSource')">
<el-option v-for="item in defectList" :key="item.dictTypeId" :label="item.dictLabel"
:value="item.dictTypeId">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="actualResponsePeriod" :label="$t('code.actualResponsePeriod')">
<el-input v-model="dataForm.actualResponsePeriod" :placeholder="$t('code.requestResponseCycle')"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="8"> <el-col :span="8">
<el-form-item prop="orderNo" :label="$t('code.orderNo')"> <el-form-item prop="orderNo" :label="$t('code.orderNo')">
<el-input v-model="dataForm.orderNo" :placeholder="$t('code.orderNo')"></el-input> <el-input v-model="dataForm.orderNo" :placeholder="$t('code.orderNo')"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item prop="requestResponseCycle" :label="$t('code.requestResponseCycle')">
<el-input
v-model="dataForm.requestResponseCycle"
:placeholder="$t('code.requestResponseCycle')"
></el-input>
</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item prop="batchNumber" :label="$t('code.batchNumber')"> <el-form-item prop="batchNumber" :label="$t('code.batchNumber')">
<el-input v-model="dataForm.batchNumber" :placeholder="$t('code.batchNumber')"></el-input> <el-input v-model="dataForm.batchNumber" :placeholder="$t('code.batchNumber')"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="8"> <el-col :span="8">
<el-form-item prop="responsibilityAttributionId" :label="$t('code.responsibilityAttribution')"> <el-form-item prop="sampleAcceptanceTime" :label="$t('code.sampleAcceptanceTime')">
<el-select v-model="dataForm.responsibilityAttributionId" :placeholder="$t('code.responsibilityAttribution')"> <el-date-picker
<el-option v-for="item in dutyList" :key="item.dictTypeId" :label="item.dictLabel" :value="item.dictTypeId"> :style="{ width: '100%' }"
v-model="dataForm.sampleAcceptanceTime"
type="datetime"
:placeholder="$t('code.sampleAcceptanceTime')"
format="yyyy-MM-dd HH:mm:ss"
valueFormat="yyyy-MM-ddTHH:mm:ss"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="defectSourceId" :label="$t('code.defectSource')">
<el-select
:style="{ width: '100%' }"
v-model="dataForm.defectSourceId"
:placeholder="$t('code.defectSource')"
>
<el-option
v-for="item in defectList"
:key="item.dictTypeId"
:label="item.dictLabel"
:value="item.dictTypeId"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item prop="actualResponsePeriod" :label="$t('code.actualResponsePeriod')">
<el-input
v-model="dataForm.actualResponsePeriod"
:placeholder="$t('code.requestResponseCycle')"
></el-input>
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="8">
<el-form-item prop="occurrenceDate" :label="$t('code.occurrenceDate')">
<el-date-picker
v-model="dataForm.occurrenceDate"
type="datetime"
:style="{ width: '100%' }"
:placeholder="$t('code.occurrenceDate')"
format="yyyy-MM-dd HH:mm:ss"
valueFormat="yyyy-MM-ddTHH:mm:ss"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item
prop="responsibilityAttributionId"
:label="$t('code.responsibilityAttribution')"
>
<el-select
:style="{ width: '100%' }"
v-model="dataForm.responsibilityAttributionId"
:placeholder="$t('code.responsibilityAttribution')"
>
<el-option
v-for="item in dutyList"
:key="item.dictTypeId"
:label="item.dictLabel"
:value="item.dictTypeId"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="finalCompletionDate" :label="$t('code.finalCompletionDate')">
<el-date-picker
:style="{ width: '100%' }"
v-model="dataForm.finalCompletionDate"
type="datetime"
:placeholder="$t('code.finalCompletionDate')"
format="yyyy-MM-dd HH:mm:ss"
valueFormat="yyyy-MM-ddTHH:mm:ss"
>
</el-date-picker>
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<el-form-item prop="examineStatus" :label="$t('code.examineStatus')">
<el-select
:style="{ width: '100%' }"
v-model="dataForm.examineStatus"
:placeholder="$t('code.examineStatus')">
<el-option
v-for="item in examineStatusList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col> -->
</el-row>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item prop="teamList" :label="$t('code.eightDTeam')">
<el-select
:style="{ width: '100%' }"
v-model="dataForm.teamList"
:placeholder="$t('code.eightDTeam')"
multiple>
<el-option
v-for="item in teamList"
:key="item.id"
:label="item.teamName"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item prop="description" :label="$t('code.description')"> <el-form-item prop="description" :label="$t('code.description')">
<el-input v-model="dataForm.description" :placeholder="$t('code.description')"></el-input> <el-input v-model="dataForm.description" :placeholder="$t('code.description')"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8">
<el-form-item prop="batchNumber" :label="$t('code.batchNumber')">
<el-input v-model="dataForm.batchNumber" :placeholder="$t('code.batchNumber')"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="responsibilityAttributionId" :label="$t('code.responsibilityAttribution')">
<el-select v-model="dataForm.responsibilityAttributionId" :placeholder="$t('code.responsibilityAttribution')">
<el-option v-for="item in dutyList" :key="item.dictTypeId" :label="item.dictLabel" :value="item.dictTypeId">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="8">
<el-form-item prop="examineStatus" :label="$t('code.examineStatus')">
<el-select v-model="dataForm.examineStatus" :placeholder="$t('code.examineStatus')">
<el-option v-for="item in examineStatusList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="teamList" :label="$t('code.eightDTeam')">
<el-select v-model="dataForm.teamList" :placeholder="$t('code.eightDTeam')" multiple>
<el-option v-for="item in teamList" :key="item.id" :label="item.teamName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row> </el-row>
</el-form> </el-form>
</template> </template>
@ -146,62 +202,64 @@ export default {
urlOptions: { urlOptions: {
submitURL: "/code/startEightDiscipline", submitURL: "/code/startEightDiscipline",
infoURL: "/code/startEightDiscipline/{id}", infoURL: "/code/startEightDiscipline/{id}",
getDictURL: '/sys/dict/data/page', getDictURL: "/sys/dict/data/page",
customerListURL: '/basic/qmsCustomer/page', customerListURL: "/basic/qmsCustomer/page",
productListURL: '/basic/qmsProduct/page', productListURL: "/basic/qmsProduct/page",
teamListURL: '/basic/qmsTeam/page', teamListURL: "/basic/qmsTeam/page",
}, },
defectList: [], defectList: [],
teamList:[], teamList: [],
customerList: [], customerList: [],
productList: [], productList: [],
dutyList: [], dutyList: [],
examineStatusList: [ examineStatusList: [
{ {
id: 0, id: 0,
name: '不需要审批' name: "不需要审批",
}, },
{ {
id: 1, id: 1,
name: '需要审批' name: "需要审批",
} },
], ],
options: [{ options: [
value: 0,
label: '不可用'
},
{
value: 1,
label: '可用'
}],
eightDisciplineTypeList: [
{ {
value: 0, value: 0,
label: '重复发生问题 ' label: "不可用",
}, },
{ {
value: 1, value: 1,
label: '1客诉问题' label: "可用",
},
],
eightDisciplineTypeList: [
{
value: '0',
label: "重复发生问题 ",
}, },
{ {
value: 2, value: '1',
label: '重大质量问题' label: "1客诉问题",
} },
{
value: '2',
label: "重大质量问题",
},
], ],
listQuery: { listQuery: {
limit: 10, limit: 10,
page: 1 page: 1,
}, },
visible: false, visible: false,
dataForm: { dataForm: {
actualResponsePeriod:null, actualResponsePeriod: null,
batchNumber: null, batchNumber: null,
code: null, code: null,
customId: null, customId: null,
defectSourceId: null, defectSourceId: null,
description: null, description: null,
eightDisciplineId: null, eightDisciplineId: null,
eightDisciplineStatus: null, eightDisciplineStatus: 0,
eightDisciplineType: null, eightDisciplineType: null,
examineStatus: null, examineStatus: null,
finalCompletionDate: null, finalCompletionDate: null,
@ -210,7 +268,7 @@ export default {
orderNo: null, orderNo: null,
productId: null, productId: null,
productTypeId: null, productTypeId: null,
teamList:undefined, teamList: undefined,
requestResponseCycle: null, requestResponseCycle: null,
responsibilityAttributionId: null, responsibilityAttributionId: null,
sampleAcceptanceTime: null, sampleAcceptanceTime: null,
@ -247,19 +305,19 @@ export default {
}; };
}, },
}, },
mounted () { mounted() {
this.getDict() this.getDict();
}, },
methods: { methods: {
init(id, ) { init(id) {
this.dataForm.id = id || "" this.dataForm.id = id || "";
// console.log(11111) // console.log(11111)
// this.dataForm.dictTypeId = dictTypeId || ""; // this.dataForm.dictTypeId = dictTypeId || "";
this.visible = true this.visible = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs["dataForm"].resetFields(); this.$refs["dataForm"].resetFields();
if (this.dataForm.id) { if (this.dataForm.id) {
this.getInfo() this.getInfo();
} else { } else {
} }
}); });
@ -280,50 +338,50 @@ export default {
.catch(() => {}); .catch(() => {});
}, },
getDict() { getDict() {
this.$http.get(this.urlOptions.teamListURL, { this.$http
params: { .get(this.urlOptions.teamListURL, {
limit: 999, params: {
page: 1, limit: 999,
} page: 1,
}) },
})
.then(({ data: res }) => { .then(({ data: res }) => {
if (res.code === 0) { if (res.code === 0) {
console.log(res); console.log(res);
this.teamList = res.data.list this.teamList = res.data.list;
} }
}) })
.catch(() => { .catch(() => {});
this.$http
.get(this.urlOptions.getDictURL, {
params: {
limit: 999,
page: 1,
dictTypeId: "1664162193896206337",
},
}) })
this.$http.get(this.urlOptions.getDictURL, {
params: {
limit: 999,
page: 1,
dictTypeId: '1664162193896206337'
}
})
.then(({ data: res }) => { .then(({ data: res }) => {
if (res.code === 0) { if (res.code === 0) {
console.log(res); console.log(res);
this.defectList = res.data.list this.defectList = res.data.list;
} }
}) })
.catch(() => { .catch(() => {});
this.$http
.get(this.urlOptions.getDictURL, {
params: {
limit: 999,
page: 1,
dictTypeId: "1664162455184568321",
},
}) })
this.$http.get(this.urlOptions.getDictURL, {
params: {
limit: 999,
page: 1,
dictTypeId: '1664162455184568321'
}
})
.then(({ data: res }) => { .then(({ data: res }) => {
if (res.code === 0) { if (res.code === 0) {
console.log(res); console.log(res);
this.dutyList = res.data.list this.dutyList = res.data.list;
} }
}) })
.catch(() => { .catch(() => {});
})
}, },
// //
dataFormSubmitHandle: debounce( dataFormSubmitHandle: debounce(

View File

@ -0,0 +1,207 @@
<!--
* @Author: zwq
* @Date: 2023-06-29 14:12:48
* @LastEditors: zwq
* @LastEditTime: 2023-06-30 09:03:53
* @Description:
-->
<template>
<base-table border :table-props="tableProps" :table-data="tableData" @emitFun="inputChange" />
</template>
<script>
import basicAdd from "@/mixins/basic-add";
import inputArea from "./inputArea";
import selectMember from "./selectMember";
import i18n from "@/i18n";
const tableProps = [
{
prop: "stepName",
label: i18n.t("disqualification.step"),
align: "center",
},
{
prop: "member",
label: "成员",
align: "center",
subcomponent: selectMember,
},
{
prop: "time",
label: "时间(小时)",
align: "center",
subcomponent: inputArea,
},
{
prop: "approver",
label: "审批人",
align: "center",
subcomponent: selectMember,
},
{
prop: "terminationApprover",
label: "终止审批人",
align: "center",
subcomponent: selectMember,
},
];
export default {
components: {
inputArea,
selectMember,
},
mixins: [basicAdd],
props: {
roleList: {
type: Array,
default: () => [],
},
},
data() {
return {
urlOptions: {
submitURL: "/code/startEightDisciplinePreliminaryAnalysis/",
},
tableProps,
visible: false,
tableData: [
{
stepName: "D3",
step: 3,
roleList: this.roleList,
},
{
stepName: "D4",
step: 4,
roleList: this.roleList,
},
{
stepName: "D5",
step: 5,
roleList: this.roleList,
},
{
stepName: "D6",
step: 6,
roleList: this.roleList,
},
{
stepName: "D7",
step: 7,
roleList: this.roleList,
},
{
stepName: "D8",
step: 8,
roleList: this.roleList,
},
],
id: "",
};
},
computed: {
dataRule() {
return {
// description: [{ required: true, message: this.$t("validate.required"), trigger: "blur" }],
};
},
},
methods: {
init(id) {
this.id = id;
this.visible = true;
this.$nextTick(() => {});
},
inputChange(data) {
switch (data.sType) {
case 1:
this.tableData[data._pageIndex - 1][data.prop] = data[data.prop];
break;
case 2:
this.tableData[data._pageIndex - 1][data.prop] = data.string
? data.string.split("+")[0]
: "";
this.tableData[data._pageIndex - 1][data.prop + "Name"] = data.string
? data.string.split("+")[1]
: "";
break;
default:
console.log(val);
}
},
formClear() {},
//
dataFormSubmit() {
let putData = {
eightDisciplineStatus: 3,
examineStatus: 1,
id: this.id,
};
this.$http.put("/code/startEightDiscipline", putData).then(({ data }) => {
if (data && data.code === 0) {
} else {
this.$message.error(data.msg);
}
});
this.tableData.forEach((item) => {
item.startEightDisciplineId = this.id;
});
this.$http.post("/code/startEightDisciplineCreateTeam/save/list", this.tableData)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.$message({
message: this.$t("prompt.success"),
type: "success",
duration: 500,
onClose: () => {
this.visible = false;
this.$emit("refreshDataList");
},
});
});
},
},
};
</script>
<style lang="scss">
.mod-sys__menu {
.menu-list,
.icon-list {
.el-input__inner,
.el-input__suffix {
cursor: pointer;
}
}
&-icon-popover {
width: 458px;
overflow: hidden;
}
&-icon-inner {
width: 478px;
max-height: 258px;
overflow-x: hidden;
overflow-y: auto;
}
&-icon-list {
width: 458px;
padding: 0;
margin: -8px 0 0 -8px;
> .el-button {
padding: 8px;
margin: 8px 0 0 8px;
> span {
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
font-size: 18px;
}
}
}
}
</style>

View File

@ -0,0 +1,117 @@
<template>
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="120px">
<el-form-item prop="description" :label="$t('code.description')">
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="dataForm.description">
</el-input>
</el-form-item>
</el-form>
</template>
<script>
import basicAdd from "@/mixins/basic-add";
export default {
mixins: [basicAdd],
data() {
return {
urlOptions: {
submitURL: "/code/startEightDisciplineDescriptionCorrectiveAction",
},
visible: false,
dataForm: {
description: "",
startEightDisciplineId: "",
},
};
},
computed: {
dataRule() {
return {
description: [{ required: true, message: this.$t("validate.required"), trigger: "blur" }],
};
},
},
methods: {
init(id) {
this.dataForm.startEightDisciplineId = id;
this.visible = true;
this.$nextTick(() => {
this.$refs["dataForm"].resetFields();
});
},
//
dataFormSubmit() {
this.$refs["dataForm"].validate((valid) => {
if (!valid) {
return false;
}
let putData = {
eightDisciplineStatus: 6,
examineStatus: 1,
id: this.dataForm.startEightDisciplineId,
};
this.$http.put("/code/startEightDiscipline", putData).then(({ data }) => {
if (data && data.code === 0) {
} else {
this.$message.error(data.msg);
}
});
this.$http
.post(this.urlOptions.submitURL, this.dataForm)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.$message({
message: this.$t("prompt.success"),
type: "success",
duration: 500,
onClose: () => {
this.visible = false;
this.$emit("refreshDataList");
},
});
})
.catch(() => {});
});
},
},
};
</script>
<style lang="scss">
.mod-sys__menu {
.menu-list,
.icon-list {
.el-input__inner,
.el-input__suffix {
cursor: pointer;
}
}
&-icon-popover {
width: 458px;
overflow: hidden;
}
&-icon-inner {
width: 478px;
max-height: 258px;
overflow-x: hidden;
overflow-y: auto;
}
&-icon-list {
width: 458px;
padding: 0;
margin: -8px 0 0 -8px;
> .el-button {
padding: 8px;
margin: 8px 0 0 8px;
> span {
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
font-size: 18px;
}
}
}
}
</style>

View File

@ -0,0 +1,117 @@
<template>
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="120px">
<el-form-item prop="description" :label="$t('code.description')">
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="dataForm.description">
</el-input>
</el-form-item>
</el-form>
</template>
<script>
import basicAdd from "@/mixins/basic-add";
export default {
mixins: [basicAdd],
data() {
return {
urlOptions: {
submitURL: "/code/startEightDisciplinePreliminaryAnalysis/",
},
visible: false,
dataForm: {
description: "",
startEightDisciplineId: "",
},
};
},
computed: {
dataRule() {
return {
description: [{ required: true, message: this.$t("validate.required"), trigger: "blur" }],
};
},
},
methods: {
init(data) {
this.dataForm.startEightDisciplineId = data.id;
this.visible = true;
this.$nextTick(() => {
this.$refs["dataForm"].resetFields();
});
},
//
dataFormSubmit() {
this.$refs["dataForm"].validate((valid) => {
if (!valid) {
return false;
}
let putData = {
eightDisciplineStatus: 2,
examineStatus: 1,
id: this.dataForm.startEightDisciplineId,
};
this.$http.put("/code/startEightDiscipline", putData).then(({ data }) => {
if (data && data.code === 0) {
} else {
this.$message.error(data.msg);
}
});
this.$http
.post(this.urlOptions.submitURL, this.dataForm)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.$message({
message: this.$t("prompt.success"),
type: "success",
duration: 500,
onClose: () => {
this.visible = false;
this.$emit("refreshDataList");
},
});
})
.catch(() => {});
});
},
},
};
</script>
<style lang="scss">
.mod-sys__menu {
.menu-list,
.icon-list {
.el-input__inner,
.el-input__suffix {
cursor: pointer;
}
}
&-icon-popover {
width: 458px;
overflow: hidden;
}
&-icon-inner {
width: 478px;
max-height: 258px;
overflow-x: hidden;
overflow-y: auto;
}
&-icon-list {
width: 458px;
padding: 0;
margin: -8px 0 0 -8px;
> .el-button {
padding: 8px;
margin: 8px 0 0 8px;
> span {
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
font-size: 18px;
}
}
}
}
</style>

View File

@ -0,0 +1,117 @@
<template>
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="120px">
<el-form-item prop="description" :label="$t('code.description')">
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="dataForm.description">
</el-input>
</el-form-item>
</el-form>
</template>
<script>
import basicAdd from "@/mixins/basic-add";
export default {
mixins: [basicAdd],
data() {
return {
urlOptions: {
submitURL: "/code/startEightDisciplinePreventRecurrence",
},
visible: false,
dataForm: {
description: "",
startEightDisciplineId: "",
},
};
},
computed: {
dataRule() {
return {
description: [{ required: true, message: this.$t("validate.required"), trigger: "blur" }],
};
},
},
methods: {
init(id) {
this.dataForm.startEightDisciplineId = id;
this.visible = true;
this.$nextTick(() => {
this.$refs["dataForm"].resetFields();
});
},
//
dataFormSubmit() {
this.$refs["dataForm"].validate((valid) => {
if (!valid) {
return false;
}
let putData = {
eightDisciplineStatus: 8,
examineStatus: 1,
id: this.dataForm.startEightDisciplineId,
};
this.$http.put("/code/startEightDiscipline", putData).then(({ data }) => {
if (data && data.code === 0) {
} else {
this.$message.error(data.msg);
}
});
this.$http
.post(this.urlOptions.submitURL, this.dataForm)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.$message({
message: this.$t("prompt.success"),
type: "success",
duration: 500,
onClose: () => {
this.visible = false;
this.$emit("refreshDataList");
},
});
})
.catch(() => {});
});
},
},
};
</script>
<style lang="scss">
.mod-sys__menu {
.menu-list,
.icon-list {
.el-input__inner,
.el-input__suffix {
cursor: pointer;
}
}
&-icon-popover {
width: 458px;
overflow: hidden;
}
&-icon-inner {
width: 478px;
max-height: 258px;
overflow-x: hidden;
overflow-y: auto;
}
&-icon-list {
width: 458px;
padding: 0;
margin: -8px 0 0 -8px;
> .el-button {
padding: 8px;
margin: 8px 0 0 8px;
> span {
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
font-size: 18px;
}
}
}
}
</style>

View File

@ -0,0 +1,117 @@
<template>
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="120px">
<el-form-item prop="problemType" label="问题类型">
<el-input type="textarea" :rows="2" placeholder="请输入工艺问题" v-model="dataForm.problemType">
</el-input>
</el-form-item>
</el-form>
</template>
<script>
import basicAdd from "@/mixins/basic-add";
export default {
mixins: [basicAdd],
data() {
return {
urlOptions: {
submitURL: "/code/startEightDisciplineRootCauseAnalysis",
},
visible: false,
dataForm: {
problemType: "",
startEightDisciplineId: "",
},
};
},
computed: {
dataRule() {
return {
problemType: [{ required: true, message: this.$t("validate.required"), trigger: "blur" }],
};
},
},
methods: {
init(data) {
this.dataForm.startEightDisciplineId = data.id;
this.visible = true;
this.$nextTick(() => {
this.$refs["dataForm"].resetFields();
});
},
//
dataFormSubmit() {
this.$refs["dataForm"].validate((valid) => {
if (!valid) {
return false;
}
let putData = {
eightDisciplineStatus: 5,
examineStatus: 1,
id: this.dataForm.startEightDisciplineId,
};
this.$http.put("/code/startEightDiscipline", putData).then(({ data }) => {
if (data && data.code === 0) {
} else {
this.$message.error(data.msg);
}
});
this.$http
.post(this.urlOptions.submitURL, this.dataForm)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.$message({
message: this.$t("prompt.success"),
type: "success",
duration: 500,
onClose: () => {
this.visible = false;
this.$emit("refreshDataList");
},
});
})
.catch(() => {});
});
},
},
};
</script>
<style lang="scss">
.mod-sys__menu {
.menu-list,
.icon-list {
.el-input__inner,
.el-input__suffix {
cursor: pointer;
}
}
&-icon-popover {
width: 458px;
overflow: hidden;
}
&-icon-inner {
width: 478px;
max-height: 258px;
overflow-x: hidden;
overflow-y: auto;
}
&-icon-list {
width: 458px;
padding: 0;
margin: -8px 0 0 -8px;
> .el-button {
padding: 8px;
margin: 8px 0 0 8px;
> span {
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
font-size: 18px;
}
}
}
}
</style>

View File

@ -0,0 +1,116 @@
<template>
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="120px">
<el-form-item prop="description" :label="$t('code.description')">
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="dataForm.description">
</el-input>
</el-form-item>
</el-form>
</template>
<script>
import basicAdd from "@/mixins/basic-add";
export default {
mixins: [basicAdd],
data() {
return {
urlOptions: {
submitURL: "/code/startEightDisciplineSummaryExperience",
},
visible: false,
dataForm: {
description: "",
startEightDisciplineId: "",
},
};
},
computed: {
dataRule() {
return {
description: [{ required: true, message: this.$t("validate.required"), trigger: "blur" }],
};
},
},
methods: {
init(id) {
this.dataForm.startEightDisciplineId = id;
this.visible = true;
this.$nextTick(() => {
this.$refs["dataForm"].resetFields();
});
},
//
dataFormSubmit() {
this.$refs["dataForm"].validate((valid) => {
if (!valid) {
return false;
}
let putData = {
eightDisciplineStatus: 9,
id: this.dataForm.startEightDisciplineId,
};
this.$http.put("/code/startEightDiscipline", putData).then(({ data }) => {
if (data && data.code === 0) {
} else {
this.$message.error(data.msg);
}
});
this.$http
.post(this.urlOptions.submitURL, this.dataForm)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.$message({
message: this.$t("prompt.success"),
type: "success",
duration: 500,
onClose: () => {
this.visible = false;
this.$emit("refreshDataList");
},
});
})
.catch(() => {});
});
},
},
};
</script>
<style lang="scss">
.mod-sys__menu {
.menu-list,
.icon-list {
.el-input__inner,
.el-input__suffix {
cursor: pointer;
}
}
&-icon-popover {
width: 458px;
overflow: hidden;
}
&-icon-inner {
width: 478px;
max-height: 258px;
overflow-x: hidden;
overflow-y: auto;
}
&-icon-list {
width: 458px;
padding: 0;
margin: -8px 0 0 -8px;
> .el-button {
padding: 8px;
margin: 8px 0 0 8px;
> span {
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
font-size: 18px;
}
}
}
}
</style>

View File

@ -0,0 +1,225 @@
<!--
* @Author: zwq
* @Date: 2023-06-29 14:12:48
* @LastEditors: zwq
* @LastEditTime: 2023-06-30 09:07:57
* @Description:
-->
<template>
<base-table border :table-props="tableProps" :table-data="tableData" @emitFun="inputChange" />
</template>
<script>
import basicAdd from "@/mixins/basic-add";
import inputArea from "./inputArea";
import selectMember from "./selectMember";
import selectTime from "./selectTime";
import i18n from "@/i18n";
const tableProps = [
{
prop: "containmentLocaleName",
label: "遏制区域设置",
align: "center",
},
{
prop: "developCountermeasuresName",
label: "拟定对策",
align: "center",
},
{
prop: "controlleQuantity",
label: "应受控数量",
align: "center",
subcomponent: inputArea,
},
{
prop: "actualQuantity",
label: "实际数量",
align: "center",
subcomponent: inputArea,
},
{
prop: "defectQuantity",
label: "不良数量",
align: "center",
subcomponent: inputArea,
},
{
prop: "userName",
label: "负责人",
align: "center",
subcomponent: selectMember,
},
{
prop: "completionDate",
label: "完成日期",
align: "center",
subcomponent: selectTime,
},
];
export default {
components: {
inputArea,
selectMember,
},
mixins: [basicAdd],
props: {
roleList: {
type: Array,
default: () => [],
},
},
data() {
return {
urlOptions: {
submitURL: "/code/startEightDisciplinePreliminaryAnalysis/",
},
tableProps,
visible: false,
tableData: [
{
containmentLocaleName: "装配线",
containmentLocale: 1,
developCountermeasuresName: "让步接收",
developCountermeasures: 1,
roleList: this.roleList,
},
{
containmentLocaleName: "生产线",
containmentLocale: 2,
developCountermeasuresName: "分选返工",
developCountermeasures: 2,
roleList: this.roleList,
},
{
containmentLocaleName: "实验室",
containmentLocale: 3,
developCountermeasuresName: "隔离",
developCountermeasures: 3,
roleList: this.roleList,
},
{
containmentLocaleName: "成品在途",
containmentLocale: 4,
developCountermeasuresName: "退换货",
developCountermeasures: 4,
roleList: this.roleList,
},
{
containmentLocaleName: "第三方中间商",
containmentLocale: 5,
developCountermeasuresName: "通知供应商",
developCountermeasures: 5,
roleList: this.roleList,
},
],
id: "",
};
},
computed: {
dataRule() {
return {
// description: [{ required: true, message: this.$t("validate.required"), trigger: "blur" }],
};
},
},
methods: {
init(id) {
this.id = id;
this.visible = true;
this.$nextTick(() => {});
},
inputChange(data) {
switch (data.sType) {
case 1:
this.tableData[data._pageIndex - 1][data.prop] = data[data.prop];
break;
case 2:
this.tableData[data._pageIndex - 1].userName = data.string
? data.string.split("+")[1]
: "";
this.tableData[data._pageIndex - 1].userId = data.string ? data.string.split("+")[0] : "";
break;
case 3:
this.tableData[data._pageIndex - 1][data.prop] = data.time;
break;
default:
console.log(val);
}
},
formClear() {},
//
dataFormSubmit() {
console.log(this.tableData);
let putData = {
eightDisciplineStatus: 4,
examineStatus: 1,
id: this.id,
};
this.$http.put("/code/startEightDiscipline", putData).then(({ data }) => {
if (data && data.code === 0) {
} else {
this.$message.error(data.msg);
}
});
this.tableData.forEach((item) => {
item.startEightDisciplineId = this.id;
});
this.$http.post("/code/startEightDisciplineTemporaryTreatmentMeasures/save/list", this.tableData)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.$message({
message: this.$t("prompt.success"),
type: "success",
duration: 500,
onClose: () => {
this.visible = false;
this.$emit("refreshDataList");
},
});
});
},
},
};
</script>
<style lang="scss">
.mod-sys__menu {
.menu-list,
.icon-list {
.el-input__inner,
.el-input__suffix {
cursor: pointer;
}
}
&-icon-popover {
width: 458px;
overflow: hidden;
}
&-icon-inner {
width: 478px;
max-height: 258px;
overflow-x: hidden;
overflow-y: auto;
}
&-icon-list {
width: 458px;
padding: 0;
margin: -8px 0 0 -8px;
> .el-button {
padding: 8px;
margin: 8px 0 0 8px;
> span {
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
font-size: 18px;
}
}
}
}
</style>

View File

@ -0,0 +1,117 @@
<template>
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="120px">
<el-form-item prop="description" :label="$t('code.description')">
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="dataForm.description">
</el-input>
</el-form-item>
</el-form>
</template>
<script>
import basicAdd from "@/mixins/basic-add";
export default {
mixins: [basicAdd],
data() {
return {
urlOptions: {
submitURL: "/code/startEightDisciplineValidation",
},
visible: false,
dataForm: {
description: "",
startEightDisciplineId: "",
},
};
},
computed: {
dataRule() {
return {
description: [{ required: true, message: this.$t("validate.required"), trigger: "blur" }],
};
},
},
methods: {
init(id) {
this.dataForm.startEightDisciplineId = id;
this.visible = true;
this.$nextTick(() => {
this.$refs["dataForm"].resetFields();
});
},
//
dataFormSubmit() {
this.$refs["dataForm"].validate((valid) => {
if (!valid) {
return false;
}
let putData = {
eightDisciplineStatus: 7,
examineStatus: 1,
id: this.dataForm.startEightDisciplineId,
};
this.$http.put("/code/startEightDiscipline", putData).then(({ data }) => {
if (data && data.code === 0) {
} else {
this.$message.error(data.msg);
}
});
this.$http
.post(this.urlOptions.submitURL, this.dataForm)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.$message({
message: this.$t("prompt.success"),
type: "success",
duration: 500,
onClose: () => {
this.visible = false;
this.$emit("refreshDataList");
},
});
})
.catch(() => {});
});
},
},
};
</script>
<style lang="scss">
.mod-sys__menu {
.menu-list,
.icon-list {
.el-input__inner,
.el-input__suffix {
cursor: pointer;
}
}
&-icon-popover {
width: 458px;
overflow: hidden;
}
&-icon-inner {
width: 478px;
max-height: 258px;
overflow-x: hidden;
overflow-y: auto;
}
&-icon-list {
width: 458px;
padding: 0;
margin: -8px 0 0 -8px;
> .el-button {
padding: 8px;
margin: 8px 0 0 8px;
> span {
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
font-size: 18px;
}
}
}
}
</style>

View File

@ -0,0 +1,208 @@
<!--
* @Author: zwq
* @Date: 2023-06-29 14:12:48
* @LastEditors: zwq
* @LastEditTime: 2023-06-30 10:58:16
* @Description:
-->
<template>
<base-table border show-summary :table-props="tableProps" :table-data="tableData" @emitFun="inputChange" />
</template>
<script>
import basicAdd from "@/mixins/basic-add";
import selectMember from "./selectMember";
import i18n from "@/i18n";
const tableProps = [
{
prop: "stepName",
label: i18n.t("disqualification.step"),
align: "center",
},
{
prop: "desc",
label: "打分项",
align: "center",
},
{
prop: "gradeList",
label: "打分",
align: "center",
subcomponent: selectMember,
},
{
prop: "grade",
label: "分数",
align: "center",
},
];
const gradeList = [
{ id: 1, username: "优" },
{ id: 2, username: "良" },
{ id: 3, username: "差" },
];
const score = [10, 8, 0];
export default {
components: {
selectMember,
},
mixins: [basicAdd],
data() {
return {
urlOptions: {
submitURL: "/code/startEightDisciplinePreliminaryAnalysis/",
},
tableProps,
score,
visible: false,
tableData: [
{
stepName: "D1",
step: 1,
desc: "初步分析",
roleList: gradeList,
},
{
stepName: "D2",
step: 2,
desc: "创建团队",
roleList: gradeList,
},
{
stepName: "D3",
step: 3,
desc: "临时处理措施",
roleList: gradeList,
},
{
stepName: "D4",
step: 4,
desc: "根本原因分析",
roleList: gradeList,
},
{
stepName: "D5",
step: 5,
desc: "纠正措施描述",
roleList: gradeList,
},
{
stepName: "D6",
step: 6,
desc: "有效性验证",
roleList: gradeList,
},
{
stepName: "D7",
step: 7,
desc: "预防再发生",
roleList: gradeList,
},
{
stepName: "D8",
step: 8,
desc: "总结与经验分享",
roleList: gradeList,
},
],
id: "",
};
},
computed: {
dataRule() {
return {
// description: [{ required: true, message: this.$t("validate.required"), trigger: "blur" }],
};
},
},
methods: {
init(id) {
this.id = id;
this.visible = true;
this.$nextTick(() => {});
},
inputChange(data) {
switch (data.sType) {
case 1:
this.tableData[data._pageIndex - 1][data.prop] = data[data.prop];
break;
case 2:
this.tableData[data._pageIndex - 1].gradeStatus = data.string
? data.string.split("+")[0]
: "";
if (this.tableData[data._pageIndex - 1].gradeStatus) {
this.$set(
this.tableData[data._pageIndex - 1],
'grade',
this.score[this.tableData[data._pageIndex - 1].gradeStatus - 1]
);
}
break;
default:
console.log(val);
}
},
formClear() {},
//
dataFormSubmit() {
this.tableData.forEach((item) => {
item.startEightDisciplineId = this.id;
});
this.$http.post("/code/startEightGrade/save/list", this.tableData)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.$message({
message: this.$t("prompt.success"),
type: "success",
duration: 500,
onClose: () => {
this.visible = false;
this.$emit("refreshDataList");
},
});
});
},
},
};
</script>
<style lang="scss">
.mod-sys__menu {
.menu-list,
.icon-list {
.el-input__inner,
.el-input__suffix {
cursor: pointer;
}
}
&-icon-popover {
width: 458px;
overflow: hidden;
}
&-icon-inner {
width: 478px;
max-height: 258px;
overflow-x: hidden;
overflow-y: auto;
}
&-icon-list {
width: 458px;
padding: 0;
margin: -8px 0 0 -8px;
> .el-button {
padding: 8px;
margin: 8px 0 0 8px;
> span {
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
font-size: 18px;
}
}
}
}
</style>

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-05 09:12:25 * @LastEditTime: 2023-06-28 16:06:37
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
@ -37,6 +37,7 @@ import eightDisciplineAdd from "./components/eightDiscipline-add"
// import disposalMethodSearch from "./components/disposalMethodSearch" // import disposalMethodSearch from "./components/disposalMethodSearch"
import available from "./components/available.vue" import available from "./components/available.vue"
import basicSearch from "@/mixins/basic-search" import basicSearch from "@/mixins/basic-search"
import codeFilter from '@/filters/code-filter'
import i18n from "@/i18n" import i18n from "@/i18n"
const tableProps = [ const tableProps = [
{ {
@ -52,7 +53,8 @@ const tableProps = [
{ {
prop: 'eightDisciplineType', prop: 'eightDisciplineType',
label: i18n.t("code.eightDisciplineType"), label: i18n.t("code.eightDisciplineType"),
align: 'center' align: 'center',
filter: codeFilter('eightDisciplineType'),
}, },
{ {
prop: 'problemStatus', prop: 'problemStatus',

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-05 09:12:12 * @LastEditTime: 2023-06-29 11:02:36
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
@ -14,7 +14,7 @@
</el-badge> --> </el-badge> -->
</SearchBar> </SearchBar>
<base-table :table-props="tableProps" :page="listQuery.page" :limit="listQuery.limit" :table-data="tableData"> <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="操作" :method-list="tableBtn" <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
<pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total" <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
@ -29,6 +29,8 @@ import basicPage from "@/mixins/basic-page"
// import transferSchemeAdd from "./components/transferScheme-add" // import transferSchemeAdd from "./components/transferScheme-add"
// import transferSchemeSearch from "./components/transferSchemeSearch.vue" // import transferSchemeSearch from "./components/transferSchemeSearch.vue"
import basicSearch from "@/mixins/basic-search" import basicSearch from "@/mixins/basic-search"
import { timeFormatter } from "@/filters/code-filter"
import codeFilter from '@/filters/code-filter'
import i18n from "@/i18n" import i18n from "@/i18n"
const tableProps = [ const tableProps = [
{ {
@ -39,12 +41,14 @@ const tableProps = [
{ {
prop: 'eightDisciplineType', prop: 'eightDisciplineType',
label: i18n.t("code.eightDisciplineType"), label: i18n.t("code.eightDisciplineType"),
align: 'center' align: 'center',
filter: codeFilter('eightDisciplineType'),
}, },
{ {
prop: 'occurrenceDate', prop: 'occurrenceDate',
label: i18n.t("code.occurrenceDate"), label: i18n.t("code.occurrenceDate"),
align: 'center' align: 'center',
filter: timeFormatter,
}, },
{ {
prop: 'productName', prop: 'productName',
@ -76,6 +80,10 @@ const tableBtn = [
type: "delete", type: "delete",
btnName: "删除", btnName: "删除",
}, },
{
type: "approve",
btnName: "审批",
},
]; ];
export default { export default {
mixins: [basicPage, basicSearch], mixins: [basicPage, basicSearch],
@ -94,7 +102,7 @@ export default {
listQuery: { listQuery: {
limit: 10, limit: 10,
page: 1, page: 1,
eightDisciplineStatus: 8 examineStatus:1
}, },
searchOrEditTitle: '', searchOrEditTitle: '',
searchOrUpdateVisible: false, searchOrUpdateVisible: false,
@ -105,23 +113,23 @@ export default {
placeholder: i18n.t('code.title'), placeholder: i18n.t('code.title'),
param: 'title' param: 'title'
}, },
{ // {
type: 'select', // type: 'select',
label: i18n.t('code.examineStatus'), // label: i18n.t('code.examineStatus'),
selectOptions: [ // selectOptions: [
{ // {
id: 0, // id: 0,
name: '不需要审批', // name: '',
}, // },
{ // {
id: 1, // id: 1,
name: '需要审批', // name: '',
} // }
], // ],
param: 'examineStatus', // param: 'examineStatus',
clearable: true, // clearable: true,
filterable: true // filterable: true
}, // },
{ {
type: "button", type: "button",
btnName: "搜索", btnName: "搜索",
@ -189,6 +197,33 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id); this.$refs.addOrUpdate.init(val.data.id);
}); });
} else if (val.type === "approve") {
this.$confirm(`确定对此条数据进行审批操作?`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let putData = {
examineStatus: 0,
id: val.data.id,
};
this.$http.put("/code/startEightDiscipline", putData).then(({ data }) => {
if (data && data.code === 0) {
this.$message({
message: "操作成功",
type: "success",
duration: 1500,
onClose: () => {
this.getDataList();
},
});
} else {
this.$message.error(data.msg);
}
});
})
.catch(() => {});
} }
}, },
buttonClick(val) { buttonClick(val) {

View File

@ -1,27 +1,48 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-05 09:11:52 * @LastEditTime: 2023-06-29 11:15:25
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
<el-card shadow="never" class="aui-card--fill"> <el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__user"> <div class="mod-sys__user">
<SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick"> <SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
<el-badge :value="1" class="item"> <!-- <el-badge :value="1" class="item">
<el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button> <el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button>
</el-badge> </el-badge> -->
</SearchBar> </SearchBar>
<base-table :table-props="tableProps" :page="listQuery.page" :limit="listQuery.limit" :table-data="tableData"> <base-table
<method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn" :table-props="tableProps"
@clickBtn="handleClick" /> :page="listQuery.page"
:limit="listQuery.limit"
:table-data="tableData"
>
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="150"
label="操作"
:method-list="tableBtn"
@clickBtn="handleClick"
/>
</base-table> </base-table>
<pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total" <pagination
@pagination="getDataList" /> :limit.sync="listQuery.limit"
:page.sync="listQuery.page"
:total="listQuery.total"
@pagination="getDataList"
/>
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel" <base-dialog
@confirm="handleConfirm" :before-close="handleCancel"> :dialogTitle="addOrEditTitle"
:dialogVisible="addOrUpdateVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
width="70%"
>
<startEightDiscipline-add ref="addOrUpdate" @refreshDataList="successSubmit"> <startEightDiscipline-add ref="addOrUpdate" @refreshDataList="successSubmit">
</startEightDiscipline-add> </startEightDiscipline-add>
<!-- <el-row slot="footer" type="flex" justify="end"> </el-row> --> <!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
@ -31,33 +52,37 @@
</template> </template>
<script> <script>
import basicPage from "@/mixins/basic-page" import basicPage from "@/mixins/basic-page";
import startEightDisciplineAdd from "./components/startEightDiscipline-add" import startEightDisciplineAdd from "./components/startEightDiscipline-add";
// import AddOrUpdate from './params-add-or-update' // import AddOrUpdate from './params-add-or-update'
// import customSamplingSearch from "./components/customSamplingSearch" // import customSamplingSearch from "./components/customSamplingSearch"
// import available from "./components/available.vue" // import available from "./components/available.vue"
import basicSearch from "@/mixins/basic-search" import basicSearch from "@/mixins/basic-search";
import i18n from "@/i18n" import codeFilter from "@/filters/code-filter";
import { timeFormatter } from "@/filters/code-filter";
import i18n from "@/i18n";
const tableProps = [ const tableProps = [
{ {
prop: 'title', prop: "title",
label: i18n.t("code.title"), label: i18n.t("code.title"),
align: 'center' align: "center",
}, },
{ {
prop: 'code', prop: "code",
label: i18n.t("code.code"), label: i18n.t("code.code"),
align: 'center' align: "center",
}, },
{ {
prop: 'eightDisciplineType', prop: "eightDisciplineType",
label: i18n.t("code.eightDisciplineType"), label: i18n.t("code.eightDisciplineType"),
align: 'center' align: "center",
filter: codeFilter("eightDisciplineType"),
}, },
{ {
prop: 'occurrenceDate', prop: "occurrenceDate",
label: i18n.t("code.occurrenceDate"), label: i18n.t("code.occurrenceDate"),
align: 'center' align: "center",
filter: timeFormatter,
}, },
// { // {
// prop: 'productName', // prop: 'productName',
@ -70,16 +95,17 @@ const tableProps = [
// align: 'center' // align: 'center'
// }, // },
{ {
prop: 'description', prop: "description",
label: i18n.t("code.description"), label: i18n.t("code.description"),
align: 'center' align: "center",
}, },
{ {
prop: 'userId', prop: "examineStatus",
label: i18n.t("code.userId"), label: i18n.t("code.examineStatus"),
align: 'center' align: "center",
} filter: codeFilter("examineStatus"),
] },
];
const tableBtn = [ const tableBtn = [
{ {
type: "edit", type: "edit",
@ -89,12 +115,16 @@ const tableBtn = [
type: "delete", type: "delete",
btnName: "删除", btnName: "删除",
}, },
{
type: "CAR",
btnName: "启动CAR",
},
]; ];
export default { export default {
mixins: [basicPage, basicSearch], mixins: [basicPage, basicSearch],
components: { components: {
// customSamplingSearch, // customSamplingSearch,
startEightDisciplineAdd startEightDisciplineAdd,
}, },
data() { data() {
return { return {
@ -104,9 +134,15 @@ export default {
}, },
tableProps, tableProps,
tableBtn, tableBtn,
searchOrEditTitle: '', searchOrEditTitle: "",
searchOrUpdateVisible: false, searchOrUpdateVisible: false,
formConfig: [ formConfig: [
{
type: "input",
label: i18n.t("code.title"),
placeholder: i18n.t("code.title"),
param: "title",
},
// { // {
// type: "", // type: "",
// label: i18n.t("params.paramCode"), // label: i18n.t("params.paramCode"),
@ -118,17 +154,24 @@ export default {
// }, // },
{ {
type: "button", type: "button",
btnName: "新增", btnName: "搜索",
name: "add", name: "search",
color: "primary", color: "primary",
}, },
{ {
type: "button", type: "button",
btnName: "搜索", btnName: "新增",
name: "search", name: "add",
color: "primary", color: "primary",
} },
], ],
listQuery: {
limit: 10,
page: 1,
total: 1,
eightDisciplineStatus: 0,
examineStatus: 0
},
}; };
}, },
// components: { // components: {
@ -148,19 +191,19 @@ export default {
this.searchOrEditTitle = "搜索"; this.searchOrEditTitle = "搜索";
this.searchOrUpdateVisible = true; this.searchOrUpdateVisible = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.searchOrUpdate.init() this.$refs.searchOrUpdate.init();
}); });
}, },
conditionSearchSubmit(dataForm) { conditionSearchSubmit(dataForm) {
// console.log(key); // console.log(key);
// console.log(key); // console.log(key);
// this.listQuery.key = key; // this.listQuery.key = key;
this.listQuery.customSamplingCode = dataForm.customSamplingCode this.listQuery.customSamplingCode = dataForm.customSamplingCode;
// this.listQuery.name = dataForm.name // this.listQuery.name = dataForm.name
// this.listQuery.failureTypeStatus = dataForm.failureTypeStatus // this.listQuery.failureTypeStatus = dataForm.failureTypeStatus
this.listQuery.page = 1 this.listQuery.page = 1;
this.getDataList() this.getDataList();
this.searchOrUpdateVisible = false this.searchOrUpdateVisible = false;
// console.log(11111); // console.log(11111);
// this.conditionSearchSubmit(); // this.conditionSearchSubmit();
}, },
@ -173,7 +216,43 @@ export default {
type: "warning", type: "warning",
}) })
.then(() => { .then(() => {
this.$http.delete(this.urlOptions.deleteURL, { data: [val.data.id] }).then(({ data }) => { this.$http
.delete(this.urlOptions.deleteURL, { data: [val.data.id] })
.then(({ data }) => {
if (data && data.code === 0) {
this.$message({
message: "操作成功",
type: "success",
duration: 1500,
onClose: () => {
this.getDataList();
},
});
} else {
this.$message.error(data.msg);
}
});
})
.catch(() => {});
} else if (val.type === "edit") {
this.addOrUpdateVisible = true;
this.addOrEditTitle = this.$t("edit");
this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id);
});
} else if (val.type === "CAR") {
this.$confirm(`确定对此条数据进行启动CAR操作?`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let putData = {
eightDisciplineStatus: 1,
examineStatus: 1,
id: val.data.id,
};
this.$http.put("/code/startEightDiscipline", putData).then(({ data }) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.$message({ this.$message({
message: "操作成功", message: "操作成功",
@ -188,13 +267,7 @@ export default {
} }
}); });
}) })
.catch(() => { }); .catch(() => {});
} else if (val.type === 'edit') {
this.addOrUpdateVisible = true
this.addOrEditTitle = this.$t('edit')
this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id);
});
} }
}, },
buttonClick(val) { buttonClick(val) {
@ -202,20 +275,20 @@ export default {
case "search": case "search":
// this.listQuery.paramCode = val.paramCode; // this.listQuery.paramCode = val.paramCode;
this.listQuery.page = 1; this.listQuery.page = 1;
this.listQuery.code = null this.listQuery.title = val.title ? val.title : "";
this.listQuery.name = null this.listQuery.failureTypeStatus = null;
this.listQuery.failureTypeStatus = null this.listQuery.eightDisciplineStatus = 0;
this.getDataList(); this.getDataList();
break; break;
case "add": case "add":
this.addOrEditTitle = this.$t('add') this.addOrEditTitle = this.$t("add");
this.addOrUpdateVisible = true; this.addOrUpdateVisible = true;
this.addOrUpdateHandle() this.addOrUpdateHandle();
break; break;
default: default:
console.log(val) console.log(val);
} }
}, },
} },
}; };
</script> </script>

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-05 09:11:39 * @LastEditTime: 2023-06-29 15:56:04
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
@ -13,62 +13,94 @@
<el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button> <el-button type="primary" size="small" @click="conditionSearch">条件搜索</el-button>
</el-badge> --> </el-badge> -->
</SearchBar> </SearchBar>
<base-table :table-props="tableProps" :page="listQuery.page" :limit="listQuery.limit" :table-data="tableData"> <base-table
<method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn" :table-props="tableProps"
@clickBtn="handleClick" /> :page="listQuery.page"
:limit="listQuery.limit"
:table-data="tableData"
>
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="120"
label="操作"
:method-list="tableBtn"
@clickBtn="handleClick"
/>
</base-table> </base-table>
<pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total" <pagination
@pagination="getDataList" /> :limit.sync="listQuery.limit"
:page.sync="listQuery.page"
:total="listQuery.total"
@pagination="getDataList"
/>
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog
:dialogTitle="teamSetTitle"
:dialogVisible="teamSetVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
>
<add-or-update
ref="teamSet"
:roleList="roleList"
@refreshDataList="successSubmit"
></add-or-update>
</base-dialog>
</div> </div>
</el-card> </el-card>
</template> </template>
<script> <script>
import basicPage from "@/mixins/basic-page" import basicPage from "@/mixins/basic-page";
// import transferRecordsAdd from "./components/transferRecords-add" // import transferRecordsAdd from "./components/transferRecords-add"
// import AddOrUpdate from './params-add-or-update' import AddOrUpdate from "./components/startEightDisciplineCreateTeam-add";
// import transferRecordsSearch from "./components/transferRecordsSearch" // import transferRecordsSearch from "./components/transferRecordsSearch"
// import available from "./components/available.vue" // import available from "./components/available.vue"
import basicSearch from "@/mixins/basic-search" import basicSearch from "@/mixins/basic-search";
import i18n from "@/i18n" import { timeFormatter } from "@/filters/code-filter";
import codeFilter from "@/filters/code-filter";
import i18n from "@/i18n";
const tableProps = [ const tableProps = [
{ {
prop: 'productName', prop: "title",
label: i18n.t("quality.productName"), label: i18n.t("code.title"),
align: 'center' align: "center",
}, },
{ {
prop: 'supplierName', prop: "eightDisciplineType",
label: i18n.t("quality.supplierName"), label: i18n.t("oss.type"),
align: 'center' align: "center",
filter: codeFilter("eightDisciplineType"),
}, },
{ {
prop: 'transferOutName', prop: "occurrenceDate",
label: i18n.t("quality.transferOutName"), label: i18n.t("gage.createDate"),
align: 'center' align: "center",
}, filter: timeFormatter,
{
prop: 'transferInName',
label: i18n.t("quality.transferInName"),
align: 'center'
}, },
{ {
prop: 'dataSources', prop: "productName",
label: i18n.t("quality.dataSources"), label: i18n.t("code.productName"),
align: 'center' align: "center",
},
{
prop: 'remark',
label: i18n.t("quality.remark"),
align: 'center'
}, },
{ {
prop: 'userName', prop: "customName",
label: i18n.t("quality.userName"), label: i18n.t("gage.connection"),
align: 'center' align: "center",
} },
] {
prop: "description",
label: i18n.t("basic.remark"),
align: "center",
},
{
prop: "userId",
label: i18n.t("code.userId"),
align: "center",
},
];
const tableBtn = [ const tableBtn = [
{ {
type: "edit", type: "edit",
@ -78,12 +110,15 @@ const tableBtn = [
type: "delete", type: "delete",
btnName: "删除", btnName: "删除",
}, },
{
type: "team",
btnName: "团队",
},
]; ];
export default { export default {
mixins: [basicPage, basicSearch], mixins: [basicPage, basicSearch],
components: { components: {
// transferRecordsSearch, AddOrUpdate,
// transferRecordsAdd
}, },
data() { data() {
return { return {
@ -93,12 +128,16 @@ export default {
}, },
tableProps, tableProps,
tableBtn, tableBtn,
teamSetTitle: "",
teamSetVisible: false,
listQuery: { listQuery: {
limit: 10, limit: 10,
page: 1, page: 1,
eightDisciplineStatus: 2 eightDisciplineStatus: 2,
examineStatus: 0,
}, },
searchOrEditTitle: '', roleList: [],
searchOrEditTitle: "",
searchOrUpdateVisible: false, searchOrUpdateVisible: false,
formConfig: [ formConfig: [
// { // {
@ -111,23 +150,20 @@ export default {
// type: "separate", // type: "separate",
// }, // },
{ {
type: 'input', type: "input",
label: i18n.t('code.title'), label: i18n.t("code.title"),
placeholder: i18n.t('code.title'), placeholder: i18n.t("code.title"),
param: 'title' param: "title",
}, },
{ {
type: "button", type: "button",
btnName: "搜索", btnName: "搜索",
name: "search", name: "search",
color: "primary", color: "primary",
} },
], ],
}; };
}, },
// components: {
// AddOrUpdate,
// },
methods: { methods: {
//search-bar //search-bar
handleProductCancel() { handleProductCancel() {
@ -161,47 +197,71 @@ export default {
type: "warning", type: "warning",
}) })
.then(() => { .then(() => {
this.$http.delete(this.urlOptions.deleteURL, { data: [val.data.id] }).then(({ data }) => { this.$http
if (data && data.code === 0) { .delete(this.urlOptions.deleteURL, { data: [val.data.id] })
this.$message({ .then(({ data }) => {
message: "操作成功", if (data && data.code === 0) {
type: "success", this.$message({
duration: 1500, message: "操作成功",
onClose: () => { type: "success",
this.getDataList(); duration: 1500,
}, onClose: () => {
}); this.getDataList();
} else { },
this.$message.error(data.msg); });
} } else {
}); this.$message.error(data.msg);
}
});
}) })
.catch(() => { }); .catch(() => {});
} else if (val.type === 'edit') { } else if (val.type === "edit") {
this.addOrUpdateVisible = true this.addOrUpdateVisible = true;
this.addOrEditTitle = this.$t('edit') this.addOrEditTitle = this.$t("edit");
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id); this.$refs.addOrUpdate.init(val.data.id);
}); });
} else if (val.type === "team") {
this.$http
.get("/sys/user/list")
.then(({ data: res }) => {
if (res.code === 0) {
this.roleList = res.data;
this.teamSetVisible = true;
this.teamSetTitle = "团队";
this.$nextTick(() => {
this.$refs.teamSet.init(val.data.id);
});
}
})
.catch(() => {});
} }
}, },
handleCancel() {
this.$refs.teamSet.formClear();
this.teamSetVisible = false;
this.teamSetTitle = "";
},
handleConfirm() {
this.$refs.teamSet.dataFormSubmit();
},
buttonClick(val) { buttonClick(val) {
switch (val.btnName) { switch (val.btnName) {
case "search": case "search":
// this.listQuery.paramCode = val.paramCode; // this.listQuery.paramCode = val.paramCode;
this.listQuery.page = 1; this.listQuery.page = 1;
this.listQuery.title = val.title ? val.title : '' this.listQuery.title = val.title ? val.title : "";
this.getDataList(); this.getDataList();
break; break;
case "add": case "add":
this.addOrEditTitle = this.$t('add') this.addOrEditTitle = this.$t("add");
this.addOrUpdateVisible = true; this.addOrUpdateVisible = true;
this.addOrUpdateHandle() this.addOrUpdateHandle();
break; break;
default: default:
console.log(val) console.log(val);
} }
}, },
} },
}; };
</script> </script>

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-05 09:11:18 * @LastEditTime: 2023-06-30 09:26:26
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
@ -14,12 +14,21 @@
</el-badge> --> </el-badge> -->
</SearchBar> </SearchBar>
<base-table :table-props="tableProps" :page="listQuery.page" :limit="listQuery.limit" :table-data="tableData"> <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="操作" :method-list="tableBtn" <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
<pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total" <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
@pagination="getDataList" /> @pagination="getDataList" />
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog
:dialogTitle="addOrEditTitle"
:dialogVisible="addOrUpdateVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
>
<add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update>
</base-dialog>
</div> </div>
</el-card> </el-card>
</template> </template>
@ -31,7 +40,10 @@ import basicPage from "@/mixins/basic-page"
// import AddOrUpdate from './params-add-or-update' // import AddOrUpdate from './params-add-or-update'
// import transferSchemeSearch from "./components/transferSchemeSearch.vue" // import transferSchemeSearch from "./components/transferSchemeSearch.vue"
// import available from "./components/available.vue" // import available from "./components/available.vue"
import AddOrUpdate from './components/startEightDisciplineDescriptionCorrectiveAction-add.vue'
import basicSearch from "@/mixins/basic-search" import basicSearch from "@/mixins/basic-search"
import codeFilter from '@/filters/code-filter'
import { timeFormatter } from "@/filters/code-filter"
import i18n from "@/i18n" import i18n from "@/i18n"
const tableProps = [ const tableProps = [
{ {
@ -47,12 +59,14 @@ const tableProps = [
{ {
prop: 'eightDisciplineType', prop: 'eightDisciplineType',
label: i18n.t("code.eightDisciplineType"), label: i18n.t("code.eightDisciplineType"),
align: 'center' align: 'center',
filter: codeFilter('eightDisciplineType'),
}, },
{ {
prop: 'occurrenceDate', prop: 'occurrenceDate',
label: i18n.t("code.occurrenceDate"), label: i18n.t("code.occurrenceDate"),
align: 'center' align: 'center',
filter: timeFormatter,
}, },
// { // {
// prop: 'productName', // prop: 'productName',
@ -84,12 +98,15 @@ const tableBtn = [
type: "delete", type: "delete",
btnName: "删除", btnName: "删除",
}, },
{
type: "corrective",
btnName: "纠正",
},
]; ];
export default { export default {
mixins: [basicPage, basicSearch], mixins: [basicPage, basicSearch],
components: { components: {
// transferSchemeSearch, AddOrUpdate,
// transferSchemeAdd
}, },
data() { data() {
return { return {
@ -102,7 +119,8 @@ export default {
listQuery: { listQuery: {
limit: 10, limit: 10,
page: 1, page: 1,
eightDisciplineStatus: 5 eightDisciplineStatus: 5,
examineStatus: 0
}, },
searchOrEditTitle: '', searchOrEditTitle: '',
searchOrUpdateVisible: false, searchOrUpdateVisible: false,
@ -180,6 +198,12 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id); this.$refs.addOrUpdate.init(val.data.id);
}); });
} else if (val.type === "corrective") {
this.addOrUpdateVisible = true
this.addOrEditTitle = "纠正措施描述"
this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id);
});
} }
}, },
buttonClick(val) { buttonClick(val) {

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-05 09:11:07 * @LastEditTime: 2023-06-29 13:57:15
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
@ -14,12 +14,21 @@
</el-badge> --> </el-badge> -->
</SearchBar> </SearchBar>
<base-table :table-props="tableProps" :page="listQuery.page" :limit="listQuery.limit" :table-data="tableData"> <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="操作" :method-list="tableBtn" <method-btn v-if="tableBtn.length" slot="handleBtn" :width="110" label="操作" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
<pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total" <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
@pagination="getDataList" /> @pagination="getDataList" />
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog
:dialogTitle="addOrEditTitle"
:dialogVisible="addOrUpdateVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
>
<add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update>
</base-dialog>
</div> </div>
</el-card> </el-card>
</template> </template>
@ -27,11 +36,13 @@
<script> <script>
import basicPage from "@/mixins/basic-page" import basicPage from "@/mixins/basic-page"
// import InspectionPositionAdd from "./components/InspectionPosition-add" // import InspectionPositionAdd from "./components/InspectionPosition-add"
// import AddOrUpdate from './params-add-or-update' import AddOrUpdate from './components/startEightDisciplinePreliminaryAnalysis-add.vue'
// import failureTypeSearch from "./components/failureTypeSearch" // import failureTypeSearch from "./components/failureTypeSearch"
// import available from "./components/available.vue" // import available from "./components/available.vue"
import basicSearch from "@/mixins/basic-search" import basicSearch from "@/mixins/basic-search"
import i18n from "@/i18n" import i18n from "@/i18n"
import codeFilter from '@/filters/code-filter'
import { timeFormatter } from "@/filters/code-filter"
const tableProps = [ const tableProps = [
{ {
prop: 'title', prop: 'title',
@ -46,12 +57,14 @@ const tableProps = [
{ {
prop: 'eightDisciplineType', prop: 'eightDisciplineType',
label: i18n.t("code.eightDisciplineType"), label: i18n.t("code.eightDisciplineType"),
align: 'center' align: 'center',
filter: codeFilter('eightDisciplineType'),
}, },
{ {
prop: 'occurrenceDate', prop: 'occurrenceDate',
label: i18n.t("code.occurrenceDate"), label: i18n.t("code.occurrenceDate"),
align: 'center' align: 'center',
filter: timeFormatter,
}, },
// { // {
// prop: 'productName', // prop: 'productName',
@ -83,12 +96,15 @@ const tableBtn = [
type: "delete", type: "delete",
btnName: "删除", btnName: "删除",
}, },
{
type: "analysis",
btnName: "分析",
},
]; ];
export default { export default {
mixins: [basicPage, basicSearch], mixins: [basicPage, basicSearch],
components: { components: {
// failureTypeSearch, AddOrUpdate,
// InspectionPositionAdd
}, },
data() { data() {
return { return {
@ -102,7 +118,8 @@ export default {
listQuery: { listQuery: {
limit: 10, limit: 10,
page: 1, page: 1,
eightDisciplineStatus:1 eightDisciplineStatus:1,
examineStatus: 0
}, },
searchOrUpdateVisible: false, searchOrUpdateVisible: false,
formConfig: [ formConfig: [
@ -188,6 +205,12 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id); this.$refs.addOrUpdate.init(val.data.id);
}); });
} else if (val.type === "analysis") {
this.addOrUpdateVisible = true
this.addOrEditTitle = "初步分析"
this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data);
});
} }
}, },
buttonClick(val) { buttonClick(val) {

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-05 09:10:50 * @LastEditTime: 2023-06-30 09:34:16
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
@ -14,12 +14,21 @@
</el-badge> --> </el-badge> -->
</SearchBar> </SearchBar>
<base-table :table-props="tableProps" :page="listQuery.page" :limit="listQuery.limit" :table-data="tableData"> <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="操作" :method-list="tableBtn" <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
<pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total" <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
@pagination="getDataList" /> @pagination="getDataList" />
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog
:dialogTitle="addOrEditTitle"
:dialogVisible="addOrUpdateVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
>
<add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update>
</base-dialog>
</div> </div>
</el-card> </el-card>
</template> </template>
@ -31,7 +40,10 @@ import basicPage from "@/mixins/basic-page"
// import AddOrUpdate from './params-add-or-update' // import AddOrUpdate from './params-add-or-update'
// import transferSchemeSearch from "./components/transferSchemeSearch.vue" // import transferSchemeSearch from "./components/transferSchemeSearch.vue"
// import available from "./components/available.vue" // import available from "./components/available.vue"
import AddOrUpdate from './components/startEightDisciplinePreventRecurrence-add.vue'
import basicSearch from "@/mixins/basic-search" import basicSearch from "@/mixins/basic-search"
import { timeFormatter } from "@/filters/code-filter"
import codeFilter from '@/filters/code-filter'
import i18n from "@/i18n" import i18n from "@/i18n"
const tableProps = [ const tableProps = [
{ {
@ -47,12 +59,14 @@ const tableProps = [
{ {
prop: 'eightDisciplineType', prop: 'eightDisciplineType',
label: i18n.t("code.eightDisciplineType"), label: i18n.t("code.eightDisciplineType"),
align: 'center' align: 'center',
filter: codeFilter('eightDisciplineType'),
}, },
{ {
prop: 'occurrenceDate', prop: 'occurrenceDate',
label: i18n.t("code.occurrenceDate"), label: i18n.t("code.occurrenceDate"),
align: 'center' align: 'center',
filter: timeFormatter,
}, },
// { // {
// prop: 'productName', // prop: 'productName',
@ -84,12 +98,15 @@ const tableBtn = [
type: "delete", type: "delete",
btnName: "删除", btnName: "删除",
}, },
{
type: "prevent",
btnName: "预防",
},
]; ];
export default { export default {
mixins: [basicPage, basicSearch], mixins: [basicPage, basicSearch],
components: { components: {
// transferSchemeSearch, AddOrUpdate,
// transferSchemeAdd
}, },
data() { data() {
return { return {
@ -102,7 +119,8 @@ export default {
listQuery: { listQuery: {
limit: 10, limit: 10,
page: 1, page: 1,
eightDisciplineStatus: 6 eightDisciplineStatus: 7,
examineStatus: 0
}, },
searchOrEditTitle: '', searchOrEditTitle: '',
searchOrUpdateVisible: false, searchOrUpdateVisible: false,
@ -180,6 +198,12 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id); this.$refs.addOrUpdate.init(val.data.id);
}); });
} else if (val.type === "prevent") {
this.addOrUpdateVisible = true
this.addOrEditTitle = "预防再发生"
this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id);
});
} }
}, },
buttonClick(val) { buttonClick(val) {

View File

@ -0,0 +1,155 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__user">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
<base-table
:table-props="tableProps"
:page="listQuery.page"
:limit="listQuery.limit"
:table-data="tableData"
>
</base-table>
<pagination
:limit.sync="listQuery.limit"
:page.sync="listQuery.page"
:total="listQuery.total"
@pagination="getDataList"
/>
</div>
</el-card>
</template>
<script>
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: 'productName',
// label: i18n.t("code.productName"),
// align: 'center'
// },
// {
// prop: 'customName',
// label: i18n.t("code.customName"),
// align: 'center'
// },
{
prop: "description",
label: i18n.t("code.description"),
align: "center",
},
{
prop: "examineStatus",
label: i18n.t("code.examineStatus"),
align: "center",
filter: codeFilter("examineStatus"),
},
];
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: [basicPage],
data() {
return {
urlOptions: {
getDataListURL: "/code/startEightDiscipline/page",
deleteURL: "/code/startEightDiscipline",
},
tableProps,
eightDisciplineStatusArr,
tableData: [],
formConfig: [
{
type: "select",
label: "状态",
selectOptions: eightDisciplineStatusArr,
param: "status",
defaultSelect: "",
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
},
],
};
},
methods: {
//search-bar
buttonClick(val) {
switch (val.btnName) {
case "search":
this.listQuery.eightDisciplineStatus = val.status;
this.listQuery.page = 1;
this.getDataList();
break;
default:
console.log(val);
}
},
},
};
</script>

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-05 09:10:40 * @LastEditTime: 2023-06-30 09:21:25
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
@ -14,12 +14,21 @@
</el-badge> --> </el-badge> -->
</SearchBar> </SearchBar>
<base-table :table-props="tableProps" :page="listQuery.page" :limit="listQuery.limit" :table-data="tableData"> <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="操作" :method-list="tableBtn" <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
<pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total" <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
@pagination="getDataList" /> @pagination="getDataList" />
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog
:dialogTitle="addOrEditTitle"
:dialogVisible="addOrUpdateVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
>
<add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update>
</base-dialog>
</div> </div>
</el-card> </el-card>
</template> </template>
@ -30,7 +39,10 @@ import basicPage from "@/mixins/basic-page"
// import AddOrUpdate from './params-add-or-update' // import AddOrUpdate from './params-add-or-update'
// import transferSchemeSearch from "./components/transferSchemeSearch.vue" // import transferSchemeSearch from "./components/transferSchemeSearch.vue"
// import available from "./components/available.vue" // import available from "./components/available.vue"
import AddOrUpdate from './components/startEightDisciplineRootCauseAnalysis-add.vue'
import basicSearch from "@/mixins/basic-search" import basicSearch from "@/mixins/basic-search"
import { timeFormatter } from "@/filters/code-filter"
import codeFilter from '@/filters/code-filter'
import i18n from "@/i18n" import i18n from "@/i18n"
const tableProps = [ const tableProps = [
{ {
@ -46,12 +58,14 @@ const tableProps = [
{ {
prop: 'eightDisciplineType', prop: 'eightDisciplineType',
label: i18n.t("code.eightDisciplineType"), label: i18n.t("code.eightDisciplineType"),
align: 'center' align: 'center',
filter: codeFilter('eightDisciplineType'),
}, },
{ {
prop: 'occurrenceDate', prop: 'occurrenceDate',
label: i18n.t("code.occurrenceDate"), label: i18n.t("code.occurrenceDate"),
align: 'center' align: 'center',
filter: timeFormatter,
}, },
// { // {
// prop: 'productName', // prop: 'productName',
@ -83,12 +97,15 @@ const tableBtn = [
type: "delete", type: "delete",
btnName: "删除", btnName: "删除",
}, },
{
type: "analysis",
btnName: "分析",
},
]; ];
export default { export default {
mixins: [basicPage, basicSearch], mixins: [basicPage, basicSearch],
components: { components: {
// transferSchemeSearch, AddOrUpdate,
// transferSchemeAdd
}, },
data() { data() {
return { return {
@ -101,7 +118,8 @@ export default {
listQuery: { listQuery: {
limit: 10, limit: 10,
page: 1, page: 1,
eightDisciplineStatus: 4 eightDisciplineStatus: 4,
examineStatus: 0
}, },
searchOrEditTitle: '', searchOrEditTitle: '',
searchOrUpdateVisible: false, searchOrUpdateVisible: false,
@ -179,6 +197,12 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id); this.$refs.addOrUpdate.init(val.data.id);
}); });
} else if (val.type === "analysis") {
this.addOrUpdateVisible = true
this.addOrEditTitle = "根本原因分析"
this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data);
});
} }
}, },
buttonClick(val) { buttonClick(val) {

View File

@ -2,8 +2,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-05 09:10:30 * @LastEditTime: 2023-06-30 09:37:58
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
@ -15,12 +15,21 @@
</el-badge> --> </el-badge> -->
</SearchBar> </SearchBar>
<base-table :table-props="tableProps" :page="listQuery.page" :limit="listQuery.limit" :table-data="tableData"> <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="操作" :method-list="tableBtn" <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
<pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total" <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
@pagination="getDataList" /> @pagination="getDataList" />
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog
:dialogTitle="addOrEditTitle"
:dialogVisible="addOrUpdateVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
>
<add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update>
</base-dialog>
</div> </div>
</el-card> </el-card>
</template> </template>
@ -31,7 +40,10 @@ import basicPage from "@/mixins/basic-page"
// import AddOrUpdate from './params-add-or-update' // import AddOrUpdate from './params-add-or-update'
// import transferSchemeSearch from "./components/transferSchemeSearch.vue" // import transferSchemeSearch from "./components/transferSchemeSearch.vue"
// import available from "./components/available.vue" // import available from "./components/available.vue"
import AddOrUpdate from './components/startEightDisciplineSummaryExperience-add.vue'
import basicSearch from "@/mixins/basic-search" import basicSearch from "@/mixins/basic-search"
import { timeFormatter } from "@/filters/code-filter"
import codeFilter from '@/filters/code-filter'
import i18n from "@/i18n" import i18n from "@/i18n"
const tableProps = [ const tableProps = [
{ {
@ -47,12 +59,14 @@ const tableProps = [
{ {
prop: 'eightDisciplineType', prop: 'eightDisciplineType',
label: i18n.t("code.eightDisciplineType"), label: i18n.t("code.eightDisciplineType"),
align: 'center' align: 'center',
filter: codeFilter('eightDisciplineType'),
}, },
{ {
prop: 'occurrenceDate', prop: 'occurrenceDate',
label: i18n.t("code.occurrenceDate"), label: i18n.t("code.occurrenceDate"),
align: 'center' align: 'center',
filter: timeFormatter,
}, },
// { // {
// prop: 'productName', // prop: 'productName',
@ -84,12 +98,15 @@ const tableBtn = [
type: "delete", type: "delete",
btnName: "删除", btnName: "删除",
}, },
{
type: "summary",
btnName: "总结",
},
]; ];
export default { export default {
mixins: [basicPage, basicSearch], mixins: [basicPage, basicSearch],
components: { components: {
// transferSchemeSearch, AddOrUpdate,
// transferSchemeAdd
}, },
data() { data() {
return { return {
@ -102,7 +119,8 @@ export default {
listQuery: { listQuery: {
limit: 10, limit: 10,
page: 1, page: 1,
eightDisciplineStatus: 8 eightDisciplineStatus: 8,
examineStatus: 0
}, },
searchOrEditTitle: '', searchOrEditTitle: '',
searchOrUpdateVisible: false, searchOrUpdateVisible: false,
@ -180,6 +198,12 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id); this.$refs.addOrUpdate.init(val.data.id);
}); });
} else if (val.type === "summary") {
this.addOrUpdateVisible = true
this.addOrEditTitle = "总结与经验分享"
this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id);
});
} }
}, },
buttonClick(val) { buttonClick(val) {

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-05 09:13:01 * @LastEditTime: 2023-06-29 16:48:05
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
@ -14,23 +14,41 @@
</el-badge> --> </el-badge> -->
</SearchBar> </SearchBar>
<base-table :table-props="tableProps" :page="listQuery.page" :limit="listQuery.limit" :table-data="tableData"> <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="操作" :method-list="tableBtn" <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
<pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total" <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
@pagination="getDataList" /> @pagination="getDataList" />
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog
:dialogTitle="teamSetTitle"
:dialogVisible="teamSetVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
width=70%
>
<add-or-update
ref="teamSet"
:roleList="roleList"
@refreshDataList="successSubmit"
></add-or-update>
</base-dialog>
</div> </div>
</el-card> </el-card>
</template> </template>
<script> <script>
import basicPage from "@/mixins/basic-page" import basicPage from "@/mixins/basic-page"
import AddOrUpdate from "./components/startEightDisciplineTemporaryTreatmentMeasures-add";
// import samplingPlanAdd from "./components/samplingPlan-add" // import samplingPlanAdd from "./components/samplingPlan-add"
// import AddOrUpdate from './params-add-or-update' // import AddOrUpdate from './params-add-or-update'
// import failureTypeSearch from "./components/failureTypeSearch" // import failureTypeSearch from "./components/failureTypeSearch"
// import available from "./components/available.vue" // import available from "./components/available.vue"
import basicSearch from "@/mixins/basic-search" import basicSearch from "@/mixins/basic-search"
import { timeFormatter } from "@/filters/code-filter"
import codeFilter from '@/filters/code-filter'
import i18n from "@/i18n" import i18n from "@/i18n"
const tableProps = [ const tableProps = [
{ {
@ -46,12 +64,14 @@ const tableProps = [
{ {
prop: 'eightDisciplineType', prop: 'eightDisciplineType',
label: i18n.t("code.eightDisciplineType"), label: i18n.t("code.eightDisciplineType"),
align: 'center' align: 'center',
filter: codeFilter('eightDisciplineType'),
}, },
{ {
prop: 'occurrenceDate', prop: 'occurrenceDate',
label: i18n.t("code.occurrenceDate"), label: i18n.t("code.occurrenceDate"),
align: 'center' align: 'center',
filter: timeFormatter,
}, },
// { // {
// prop: 'productName', // prop: 'productName',
@ -83,12 +103,15 @@ const tableBtn = [
type: "delete", type: "delete",
btnName: "删除", btnName: "删除",
}, },
{
type: "measure",
btnName: "措施",
},
]; ];
export default { export default {
mixins: [basicPage, basicSearch], mixins: [basicPage, basicSearch],
components: { components: {
// failureTypeSearch, AddOrUpdate,
// samplingPlanAdd
}, },
data() { data() {
return { return {
@ -96,10 +119,14 @@ export default {
getDataListURL: "/code/startEightDiscipline/page", getDataListURL: "/code/startEightDiscipline/page",
deleteURL: "/code/startEightDiscipline", deleteURL: "/code/startEightDiscipline",
}, },
roleList: [],
teamSetTitle: "",
teamSetVisible: false,
listQuery: { listQuery: {
limit: 10, limit: 10,
page: 1, page: 1,
eightDisciplineStatus: 3 eightDisciplineStatus: 3,
examineStatus: 0
}, },
tableProps, tableProps,
tableBtn, tableBtn,
@ -188,8 +215,30 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id); this.$refs.addOrUpdate.init(val.data.id);
}); });
} else if (val.type === "measure") {
this.$http
.get("/sys/user/list")
.then(({ data: res }) => {
if (res.code === 0) {
this.roleList = res.data;
this.teamSetVisible = true;
this.teamSetTitle = "措施";
this.$nextTick(() => {
this.$refs.teamSet.init(val.data.id);
});
}
})
.catch(() => {});
} }
}, },
handleCancel() {
this.$refs.teamSet.formClear();
this.teamSetVisible = false;
this.teamSetTitle = "";
},
handleConfirm() {
this.$refs.teamSet.dataFormSubmit();
},
buttonClick(val) { buttonClick(val) {
switch (val.btnName) { switch (val.btnName) {
case "search": case "search":

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-05 09:09:59 * @LastEditTime: 2023-06-30 09:31:04
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
@ -14,12 +14,21 @@
</el-badge> --> </el-badge> -->
</SearchBar> </SearchBar>
<base-table :table-props="tableProps" :page="listQuery.page" :limit="listQuery.limit" :table-data="tableData"> <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="操作" :method-list="tableBtn" <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
<pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total" <pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total"
@pagination="getDataList" /> @pagination="getDataList" />
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog
:dialogTitle="addOrEditTitle"
:dialogVisible="addOrUpdateVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
>
<add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update>
</base-dialog>
</div> </div>
</el-card> </el-card>
</template> </template>
@ -30,7 +39,10 @@ import basicPage from "@/mixins/basic-page"
// import AddOrUpdate from './params-add-or-update' // import AddOrUpdate from './params-add-or-update'
// import transferSchemeSearch from "./components/transferSchemeSearch.vue" // import transferSchemeSearch from "./components/transferSchemeSearch.vue"
// import available from "./components/available.vue" // import available from "./components/available.vue"
import AddOrUpdate from './components/startEightDisciplineValidation-add.vue'
import basicSearch from "@/mixins/basic-search" import basicSearch from "@/mixins/basic-search"
import { timeFormatter } from "@/filters/code-filter"
import codeFilter from '@/filters/code-filter'
import i18n from "@/i18n" import i18n from "@/i18n"
const tableProps = [ const tableProps = [
{ {
@ -46,12 +58,14 @@ const tableProps = [
{ {
prop: 'eightDisciplineType', prop: 'eightDisciplineType',
label: i18n.t("code.eightDisciplineType"), label: i18n.t("code.eightDisciplineType"),
align: 'center' align: 'center',
filter: codeFilter('eightDisciplineType'),
}, },
{ {
prop: 'occurrenceDate', prop: 'occurrenceDate',
label: i18n.t("code.occurrenceDate"), label: i18n.t("code.occurrenceDate"),
align: 'center' align: 'center',
filter: timeFormatter,
}, },
// { // {
// prop: 'productName', // prop: 'productName',
@ -83,12 +97,15 @@ const tableBtn = [
type: "delete", type: "delete",
btnName: "删除", btnName: "删除",
}, },
{
type: "validation",
btnName: "验证",
},
]; ];
export default { export default {
mixins: [basicPage, basicSearch], mixins: [basicPage, basicSearch],
components: { components: {
// transferSchemeSearch, AddOrUpdate,
// transferSchemeAdd
}, },
data() { data() {
return { return {
@ -101,7 +118,8 @@ export default {
listQuery: { listQuery: {
limit: 10, limit: 10,
page: 1, page: 1,
eightDisciplineStatus: 7 eightDisciplineStatus: 6,
examineStatus: 0
}, },
searchOrEditTitle: '', searchOrEditTitle: '',
searchOrUpdateVisible: false, searchOrUpdateVisible: false,
@ -179,6 +197,12 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id); this.$refs.addOrUpdate.init(val.data.id);
}); });
} else if (val.type === "validation") {
this.addOrUpdateVisible = true
this.addOrEditTitle = "有效性验证"
this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id);
});
} }
}, },
buttonClick(val) { buttonClick(val) {

View File

@ -0,0 +1,139 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__user">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
<base-table
:table-props="tableProps"
:page="listQuery.page"
:limit="listQuery.limit"
:table-data="tableData"
>
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="60"
: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="addOrEditTitle"
:dialogVisible="addOrUpdateVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
>
<add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update>
</base-dialog>
</div>
</el-card>
</template>
<script>
import AddOrUpdate from "./components/startEightGrade-add";
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: "grade",
btnName: "打分",
},
];
export default {
mixins: [basicPage],
data() {
return {
urlOptions: {
getDataListURL: "/code/startEightDiscipline/page",
deleteURL: "/code/startEightDiscipline",
},
tableProps,
tableBtn,
listQuery: {
limit: 10,
page: 1,
total: 1,
eightDisciplineStatus: 9,
examineStatus: 0,
},
tableData: [],
formConfig: [
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
},
],
};
},
components: {
AddOrUpdate,
},
methods: {
//search-bar
buttonClick(val) {
switch (val.btnName) {
case "search":
this.listQuery.page = 1;
this.getDataList();
break;
default:
console.log(val);
}
},
otherMethods(val) {
this.addOrEditTitle = "打分";
this.addOrUpdateVisible = true;
this.addOrUpdateHandle(val.data.id);
},
},
};
</script>

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-02-14 15:02:26 * @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-06-28 14:15:42 * @LastEditTime: 2023-06-29 16:36:33
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@ -126,13 +126,96 @@
</el-col> </el-col>
</el-row> </el-row>
<el-button @click="getTableData()" type="primary">{{ $t('gage.tabularComputations') }}</el-button> <el-button @click="getTableData()" type="primary">{{ $t('gage.tabularComputations') }}</el-button>
<base-table :table-props="tableProps" :table-data="tableData" :page="1" :limit="20" /> <base-table :table-props="tableProps" :table-data="tableData" />
</el-form> </el-form>
</template> </template>
<script> <script>
import debounce from "lodash/debounce"; import debounce from "lodash/debounce";
import basicAdd from "@/mixins/basic-add"; import basicAdd from "@/mixins/basic-add";
import available from "./available";
// const tableProps = [
// {
// prop: 'equipmentName',
// label: ''
// },
// // {
// // prop: 'lineA',
// // label: '(h)',
// // children: [
// // {
// // prop: 'workTime',
// // label: ''
// // },
// // {
// // prop: 'workTimeRate',
// // label: ''
// // }
// // ]
// // },
// // {
// // prop: 'lineB',
// // label: '(h)',
// // children: [
// // {
// // prop: 'downTime',
// // label: ''
// // },
// // {
// // prop: 'downTimeRate',
// // label: ''
// // }
// // ]
// // },
// // {
// // prop: 'lineC',
// // label: '',
// // children: [
// // {
// // prop: 'faultTime',
// // label: ''
// // },
// // {
// // prop: 'faultTimeRate',
// // label: ''
// // }
// // ]
// // },
// // {
// // prop: 'lineD',
// // label: '',
// // children: [
// // {
// // prop: 'actualProcessingSpeed',
// // label: ''
// // },
// // {
// // prop: 'theoreticalProcessingSpeed',
// // label: ''
// // },
// // {
// // prop: 'speedActuationRate',
// // label: ''
// // }
// // ]
// // }
// ]
const tableProps = [
{
prop: 'testUserName',
label: '人员'
},
{
prop: 'orderNumber',
label: '序号'
},
{
prop: 'test',
label: '零件',
children: [
]
}
]
export default { export default {
mixins: [basicAdd], mixins: [basicAdd],
data() { data() {
@ -147,10 +230,11 @@ export default {
getCustomerListURL: '/basic/qmsCustomer/page', getCustomerListURL: '/basic/qmsCustomer/page',
getTabularComputationsURL: '/gage/qmsGageGrrTester/table' getTabularComputationsURL: '/gage/qmsGageGrrTester/table'
}, },
trueTableProps: [],
gageList: [], gageList: [],
userList: [], userList: [],
tableProps,
customerList: [], customerList: [],
tableProps: [],
tableData:[], tableData:[],
gageTypeList:[], gageTypeList:[],
departmentList: [], departmentList: [],
@ -217,6 +301,8 @@ export default {
} }
], ],
visible: false, visible: false,
// tableProp2,
chartDataArr: [],
dataForm: { dataForm: {
connection:null, connection:null,
corporation: null, corporation: null,
@ -271,6 +357,10 @@ export default {
mounted () { mounted () {
this.getData(); this.getData();
}, },
destroyed () {
this.tableData = []
this.tableProps = []
},
methods: { methods: {
getTableData() { getTableData() {
this.$http.get(this.urlOptions.getTabularComputationsURL, { this.$http.get(this.urlOptions.getTabularComputationsURL, {
@ -278,119 +368,131 @@ export default {
gageGrrId:this.dataForm.id gageGrrId:this.dataForm.id
}, },
}) })
.then(({ data: res }) => { .then(({ data: result }) => {
if (res.code === 0) { if (result.code === 0) {
console.log(res) console.log(result)
let arr = []
// let aa = []
// let moreData = [
// // {
// // testUserName: null,
// // data: [
// // {
// // orderNumber: result.data.qmsGageGrrTesterDTOList[i].list[j].orderNumber,
// // data: aa
// // },
// // {
// // equipmentName: '',
// // data: aa
// // },
// // {
// // equipmentName: '',
// // data: aa
// // },
// // {
// // equipmentName: '',
// // data: aa
// // }
// // ]
// // },
// ]
for (let i = 0; i < result.data.qmsGageGrrTesterDTOList.length; i++){
// console.log(result.data.qmsGageGrrTesterDTOList[i].orderMapList)
Object.keys(result.data.qmsGageGrrTesterDTOList[i].partMapList).forEach((item) => {
this.tableProps[2].children.push({
label: String(item),
prop: 'measuredData'+String(item),
})
})
Object.keys(result.data.qmsGageGrrTesterDTOList[i].orderMapList).forEach((item) => {
let measuredData = 'measuredData' + String(item)
this.tableData.push({
testUserName: result.data.qmsGageGrrTesterDTOList[i].testUserName,
orderNumber: item,
[measuredData]: '',
})
result.data.qmsGageGrrTesterDTOList[i].orderMapList[item].forEach((ele, index, arr) => {
// console.log(arr)
// console.log(ele)
// console.log(this.tableProps[2].children.prop);
// console.log(this.tableProps[2].children[item - 1].prop)
console.log(ele)
let measuredData = 'measuredData' + item
console.log(measuredData)
console.log(this.tableData[item - 1])
this.tableData[item - 1][measuredData] = ele
// console.log(this.tableData[item - 1])
})
})
}
console.log(this.tableProps)
console.log(this.tableData)
// console.log(this.table)
// console.log(moreData,'1111')
// for (let i = 0; i < 30; i++) {
// let a = {
// time: '2022-11-' + i,
// eqCT: 0.01,
// eqTT: 0.62,
// lineCT: 0.73,
// lineTT: 0.45
// }
// aa.push(a)
// }
// this.numArr = []
// let num = 0
// const tableConfig = []
// this.chartDataArr = []
// const dataArr = moreData.map((item, index) => {
// let dataArr = []
// if (item.data) {
// this.chartDataArr = this.chartDataArr.concat(item.data)
// num += item.data.length
// this.numArr.push(num)
// dataArr = item.data.map((z, idx) => {
// const dataArr = {}
// z.data.forEach((i) => {
// // tableConfig
// if (index === 0 && idx === 0) {
// tableConfig.push({
// label: i.time,
// prop: i.time,
// children: [
// { prop: i.time + 'eqCT', label: 'CT', subcomponent: available },
// { prop: i.time + 'eqTT', label: 'TT' },
// { prop: i.time + 'lineCT', label: '线CT' },
// {
// prop: i.time + 'lineTT',
// label: '线TT',
// // subcomponent: demo3Sub
// }
// ]
// })
// }
// //
// dataArr[i.time + 'eqCT'] = i.eqCT
// dataArr[i.time + 'eqTT'] = i.eqTT
// dataArr[i.time + 'lineCT'] = i.lineCT
// dataArr[i.time + 'lineTT'] = i.lineTT
// dataArr.testUserName = item.testUserName
// dataArr.orderNumber = z.orderNumber
// })
// console.log(dataArr)
// return dataArr
// })
// }
// return dataArr
// })
// console.log(tableConfig)
// this.trueTableProps = this.tableProp2.concat(tableConfig)
// console.log(this.trueTableProps,'22112112')
// this.tableData = this.flatten(dataArr)
// console.log(this.tableData)
} }
}) })
.catch(() => { .catch(() => {
}) })
let aa = []
let moreData = [
{
process: '综合',
data: [
{
equipmentName: '上片投入数量',
data: aa
},
{
equipmentName: '机器人投入数',
data: aa
},
{
equipmentName: '良品总投入数',
data: aa
},
{
equipmentName: '工序损耗',
data: aa
}
]
},
{
process: '上片',
data: [
{
equipmentName: '上片损失',
data: aa
}
]
},
{
process: '精切',
data: [
{
equipmentName: '精切损失',
data: aa
},
{
equipmentName: '精切抽检',
data: aa
}
]
}
]
for (let i = 0; i < 30; i++) {
let a = {
time: '2022-11-' + i,
eqCT: 0.01,
eqTT: 0.62,
lineCT: 0.73,
lineTT: 0.45
}
aa.push(a)
}
this.numArr = []
let num = 0
const tableConfig = []
this.chartDataArr = []
const dataArr = moreData.map((item, index) => {
let dataArr = []
if (item.data) {
this.chartDataArr = this.chartDataArr.concat(item.data)
num += item.data.length
this.numArr.push(num)
dataArr = item.data.map((z, idx) => {
const dataArr = {}
z.data.forEach((i) => {
// tableConfig
if (index === 0 && idx === 0) {
tableConfig.push({
label: i.time,
prop: i.time,
children: [
{ prop: i.time + 'eqCT', label: '设备CT' },
{ prop: i.time + 'eqTT', label: '设备TT' },
{ prop: i.time + 'lineCT', label: '产线CT' },
{
prop: i.time + 'lineTT',
label: '产线TT',
subcomponent: demo3Sub
}
]
})
}
//
dataArr[i.time + 'eqCT'] = i.eqCT
dataArr[i.time + 'eqTT'] = i.eqTT
dataArr[i.time + 'lineCT'] = i.lineCT
dataArr[i.time + 'lineTT'] = i.lineTT
dataArr.process = item.process
dataArr.equipmentName = z.equipmentName
})
console.log(dataArr)
return dataArr
})
}
return dataArr
})
console.log(tableConfig)
this.trueTableProps = this.tableProp2.concat(tableConfig)
console.log(this.trueTableProps)
this.tableData = this.flatten(dataArr)
console.log(this.tableData)
}, },
// tree->[] // tree->[]
flatten(arr) { flatten(arr) {

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-02-14 15:02:26 * @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-06-27 15:38:27 * @LastEditTime: 2023-06-28 14:27:59
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@ -216,3 +216,34 @@ export default {
}, },
}; };
</script> </script>
<style scoped>
td{
width: 400px;
}
table {
border-collapse: collapse;
margin: 0 auto;
text-align: center;
}
table td,
table th {
border: 1px solid #cad9ea;
color: #666;
height: 30px;
}
table thead th {
background-color: #CCE8EB;
width: 100px;
}
table tr:nth-child(odd) {
background: #fff;
}
table tr:nth-child(even) {
background: #F5FAFA;
}
</style>

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-27 14:51:34 * @LastEditTime: 2023-06-28 14:27:57
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@ -327,34 +327,3 @@ export default {
} }
}; };
</script> </script>
<style>
td{
width: 400px;
}
table {
border-collapse: collapse;
margin: 0 auto;
text-align: center;
}
table td,
table th {
border: 1px solid #cad9ea;
color: #666;
height: 30px;
}
table thead th {
background-color: #CCE8EB;
width: 100px;
}
table tr:nth-child(odd) {
background: #fff;
}
table tr:nth-child(even) {
background: #F5FAFA;
}
</style>

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-20 15:52:27 * @LastEditTime: 2023-06-28 15:52:07
* @LastEditors: zhp * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
@ -42,7 +42,7 @@
<el-input v-model="dataForm.sampleSize" :placeholder="$t('code.sampleSize')"></el-input> <el-input v-model="dataForm.sampleSize" :placeholder="$t('code.sampleSize')"></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="getOriginalData">{{ $t('code.originalData') }}}</el-button> <el-button type="primary" @click="getOriginalData">{{ $t('code.originalData') }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -1,76 +0,0 @@
<!--
* @Author: zwq
* @Date: 2021-11-18 14:16:25
* @LastEditors: zwq
* @LastEditTime: 2023-01-05 10:54:13
* @Description:
-->
<template>
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px">
<el-form-item label="编码" prop="code">
<el-input v-model="dataForm.code" placeholder="编码"></el-input>
</el-form-item>
<el-form-item label="名称" prop="name">
<el-input v-model="dataForm.name" placeholder="名称"></el-input>
</el-form-item>
<el-form-item label="单位分类" prop="type">
<el-select
v-model="dataForm.type"
filterable
placeholder="请选择单位分类"
>
<el-option
v-for="item in typeArr"
:key="item.value"
:label="item.name"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-form>
</template>
<script>
import basicAdd from '@/mixins/basic-add'
export default {
mixins: [basicAdd],
data() {
return {
urlOptions: {
submitURL: '/basic/unit/',
infoURL: '/basic/unit'
},
dataForm: {
id: '',
code: '',
name: '',
type: ''
},
typeArr: [
{
name: '不可计数',
value: 2
},
{
name: '可计数',
value: 1
}
],
dataRule: {
code: [
{ required: true, message: '编码不能为空', trigger: 'blur' }
],
name: [
{ required: true, message: '名称不能为空', trigger: 'blur' }
],
type: [
{ required: true, message: '单位分类不能为空', trigger: 'change' }
]
}
}
},
methods: {
}
}
</script>

View File

@ -1,177 +0,0 @@
<!--
* @Author: zwq
* @Date: 2023-01-04 10:29:40
* @LastEditors: zwq
* @LastEditTime: 2023-01-06 09:54:57
* @Description:
-->
<template>
<el-card shadow="never" class="aui-card--fill">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
<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="操作"
:method-list="tableBtn"
@clickBtn="handleClick"
/>
</base-table>
<pagination
:limit.sync="listQuery.limit"
:page.sync="listQuery.page"
:total="listQuery.total"
@pagination="getDataList"
/>
<!-- 弹窗, 新增 / 修改 -->
<base-dialog
:dialogTitle="addOrEditTitle"
:dialogVisible="addOrUpdateVisible"
@cancel="handleCancel"
@confirm="handleConfirm"
:before-close="handleCancel"
>
<add-or-update ref="addOrUpdate" @successSubmit="successSubmit" />
</base-dialog>
</el-card>
</template>
<script>
import AddOrUpdate from "./components/unitList-add";
import basicPage from "@/mixins/basic-page";
const tableProps = [
{
prop: "date",
label: "日期",
},
{
prop: "name",
label: "姓名",
},
{
prop: "sex",
label: "性别",
},
{
prop: "age",
label: "年龄",
},
{
prop: "address",
label: "地址",
},
];
const tableBtn = [
{
type: "edit",
btnName: "编辑",
},
{
type: "delete",
btnName: "删除",
},
];
export default {
mixins: [basicPage],
data() {
return {
urlOptions: {
getDataListURL: "/basic/unit/page",
deleteURL: "/basic/unit",
statusUrl: "/basic/unit/status",
exportUrl: "/basic/unit/export",
},
tableProps,
tableBtn,
tableData: [
{
date: "2016-05-02",
name: "王小虎",
sex: "男",
id:111,
age: 18,
address: "上海市普陀区金沙江路 1518 弄",
},
{
date: "2016-05-04",
name: "王小虎",
sex: "男",
age: 18,
address: "上海市普陀区金沙江路 1517 弄",
},
{
date: "2016-05-01",
name: "王小虎",
sex: "男",
age: 18,
address: "上海市普陀区金沙江路 1519 弄",
},
{
date: "2016-05-03",
name: "王小虎",
sex: "男",
age: 18,
address: "上海市普陀区金沙江路 1516 弄",
},
],
formConfig: [
{
type: "input",
label: "名称",
placeholder: "请输入名称",
param: "xm1",
},
{
type: "input",
label: "编码",
placeholder: "请输入编码",
param: "xm2",
},
{
type: "button",
btnName: "查询",
name: "search",
color: "primary",
},
{
type: "button",
btnName: "新增",
name: "add",
color: "primary",
plain: true,
},
],
};
},
components: {
AddOrUpdate,
},
methods: {
//search-bar
buttonClick(val) {
switch (val.btnName) {
case "search":
this.listQuery.xm1 = val.xm1;
this.listQuery.xm2 = val.xm2;
this.listQuery.page = 1;
this.getDataList();
break;
case "add":
this.addOrEditTitle = '新增'
this.addOrUpdateVisible = true;
this.addOrUpdateHandle()
break;
default:
console.log(val)
}
},
},
};
</script>