Compare commits

..

3 Commits

Author SHA1 Message Date
‘937886381’
05c4374d36 Merge branch 'master' into zhp 2023-07-19 09:24:03 +08:00
‘937886381’
b810720fbd 修改bug 2023-07-19 09:23:37 +08:00
zhp
cdca6407ff Merge pull request 'zhp' (#23) from zhp into master
Reviewed-on: #23
2023-07-17 17:01:46 +08:00
43 changed files with 1910 additions and 467 deletions

View File

@ -2,7 +2,7 @@
* @Author: zwq
* @Date: 2022-08-22 14:57:50
* @LastEditors: zhp
* @LastEditTime: 2023-07-17 10:36:32
* @LastEditTime: 2023-07-18 08:46:34
* @Description:
-->
<!DOCTYPE html>

View File

@ -0,0 +1,46 @@
/*
* @Date: 2020-12-29 16:49:28
* @LastEditors: zhp
* @LastEditTime: 2023-07-18 14:08:41
* @FilePath: \basic-admin\src\filters\DataDict\index.js
* @Description: 部分常量的数据字典定义
*/
import i18n from "@/i18n"
const table = {
monitor: {
0: '否',
1:'是',
},
characteristicsType: {
0: '计量',
1:'计数',
},
VerifyType: {
0: i18n.t('gage.insideVerify'),
1: i18n.t('gage.outsideVerify')
},
inspectionType: {
0: '监控',
1:'电芯来料检验',
2: 'IQC抽检',
3: 'IQC抽检2',
4: '原料抽检',
5: '进货外观检验',
6: '库内原料检验',
7: '来料检验',
8: '胶片',
9: '抽检',
10: '巡检',
11: '首检',
12: '末检',
13: '实时监测',
14: 'FQC抽检',
15: 'OQC抽检'
}
}
export default function (dictTable) {
return function (val) {
return table?.[dictTable]?.[val]
}
}

View File

@ -303,6 +303,10 @@ t.basic.course = '过程检验'
t.basic.shipment = '出货检验'
t.basic.userName = '用户名'
t.basic.departName = '部门名'
t.basic.productCode = '产品编码'
t.basic.productName = '产品名称'
@ -363,7 +367,23 @@ t.quality.sampleRangeHigh = '取样范围高'
t.quality.inspectionLevel = '检验水平'
t.quality.sampleSizeCode = '样本量字码'
t.quality.sampleSize = '样本量'
t.quality.inspectionPlan = '是否有检验计划'
t.quality.analyzeDrawings = '分析图形'
t.quality.characteristicsType = '特性类型'
t.quality.company = '单位'
t.quality.decimalDigits = '小数位数'
t.quality.measuringToolsType = '量具类型'
t.quality.monitor = '是否监控'
t.quality.parameterName = '参数名称'
t.quality.parameterCode = ' 参数编码'
t.quality.sampleSize = '样本大小'
t.quality.source = '来源'
t.quality.specificationCenterline = 'SL'
t.quality.specificationOffline = 'LSL'
t.quality.specifications = '规格'
t.quality.targetCpk = '目标CPK'
t.quality.targetPpk = '目标PPK'
t.quality.upperSpecificationLimit = 'USL'
@ -585,6 +605,8 @@ t.laboratory.trainContent = '培训内容'
t.laboratory.trainDate = '培训日期'
t.laboratory.trainDuration = '培训时长'
t.laboratory.trainType = '培训类型'
t.laboratory.timeSlot = '时间段'
t.code = {}
@ -725,6 +747,15 @@ t.customerquality.confirmDeliveryDate = '确认交付日期'
t.customerquality.deliveryRequiredDate = '要求交付日期'
t.customerquality.status = '状态'
t.customerquality.file = '清单文件'
t.customerquality.previousVersionCode = '上一版本号'
t.customerquality.first = '首次'
t.customerquality.confidentialityAgreement = '保密协议'
t.customerquality.ppapGrade = ' ppap等级'
t.customerquality.version = ' 版本'

View File

@ -1,20 +1,21 @@
<!--
* @Author: zhp
* @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-07-12 13:49:47
* @LastEditTime: 2023-07-18 16:55:42
* @LastEditors: zhp
* @Description:
-->
<template>
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()" label-width="120px">
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
label-width="120px">
<el-form-item prop="controlCode" :label="$t('basic.code')">
<el-input v-model="dataForm.controlCode" :placeholder="$t('basic.code')"></el-input>
<el-input clearable v-model="dataForm.controlCode" :placeholder="$t('basic.code')"></el-input>
</el-form-item>
<el-form-item prop="controlName" :label="$t('basic.name')">
<el-input v-model="dataForm.controlName" :placeholder="$t('basic.name')"></el-input>
<el-input clearable v-model="dataForm.controlName" :placeholder="$t('basic.name')"></el-input>
</el-form-item>
<el-form-item prop="specifications" :label="$t('basic.specification')">
<el-input v-model="dataForm.specifications" :placeholder="$t('basic.specification')"></el-input>
<el-input clearable v-model="dataForm.specifications" :placeholder="$t('basic.specification')"></el-input>
</el-form-item>
<el-form-item prop="incomingInspection" :label="$t('basic.stock')">
<el-switch v-model="dataForm.incomingInspection" :active-value="1" :inactive-value="0">
@ -33,13 +34,13 @@
</el-switch>
</el-form-item>
<el-form-item prop="controlStatus" :label="$t('basic.status')">
<el-select v-model="dataForm.controlStatus" :placeholder="$t('basic.status')">
<el-select clearable 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>
</el-select>
</el-form-item>
<el-form-item prop="remark" :label="$t('basic.remark')">
<el-input v-model="dataForm.remark" :placeholder="$t('basic.remark')"></el-input>
<el-input clearable v-model="dataForm.remark" :placeholder="$t('basic.remark')"></el-input>
</el-form-item>
</el-form>
</template>

View File

@ -1,26 +1,27 @@
<!--
* @Author: zhp
* @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-07-12 13:57:14
* @LastEditTime: 2023-07-18 16:55:57
* @LastEditors: zhp
* @Description:
-->
<template>
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()" label-width="120px">
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
label-width="120px">
<el-form-item prop="customerCode" :label="$t('basic.code')">
<el-input v-model="dataForm.customerCode" :placeholder="$t('basic.code')"></el-input>
<el-input clearable v-model="dataForm.customerCode" :placeholder="$t('basic.code')"></el-input>
</el-form-item>
<el-form-item prop="customerName" :label="$t('basic.name')">
<el-input v-model="dataForm.customerName" :placeholder="$t('basic.name')"></el-input>
</el-form-item>
<el-form-item prop="customerTypeId" :label="$t('basic.customerTypeName')">
<el-select v-model="dataForm.customerTypeId" :placeholder="$t('basic.customerTypeName')">
<el-select clearable v-model="dataForm.customerTypeId" :placeholder="$t('basic.customerTypeName')">
<el-option v-for="item in customerTypeList" :key="item.id" :label="item.customerTypeName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="customerTypeStatus" :label="$t('basic.status')">
<el-select v-model="dataForm.customerTypeStatus" :placeholder="$t('basic.status')">
<el-select clearable v-model="dataForm.customerTypeStatus" :placeholder="$t('basic.status')">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-07-12 13:55:20
* @LastEditTime: 2023-07-18 16:56:08
* @LastEditors: zhp
* @Description:
-->
@ -9,13 +9,13 @@
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
label-width="120px">
<el-form-item prop="customerTypeCode" :label="$t('basic.code')">
<el-input v-model="dataForm.customerTypeCode" :placeholder="$t('basic.code')"></el-input>
<el-input clearable v-model="dataForm.customerTypeCode" :placeholder="$t('basic.code')"></el-input>
</el-form-item>
<el-form-item prop="customerTypeName" :label="$t('basic.name')">
<el-input v-model="dataForm.customerTypeName" :placeholder="$t('basic.name')"></el-input>
<el-input clearable v-model="dataForm.customerTypeName" :placeholder="$t('basic.name')"></el-input>
</el-form-item>
<el-form-item prop="customerTypeStatus" :label="$t('basic.status')">
<el-select v-model="dataForm.customerTypeStatus" :placeholder="$t('basic.status')">
<el-select clearable v-model="dataForm.customerTypeStatus" :placeholder="$t('basic.status')">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-07-12 13:52:25
* @LastEditTime: 2023-07-18 16:56:16
* @LastEditors: zhp
* @Description:
-->
@ -9,13 +9,13 @@
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
label-width="120px">
<el-form-item prop="failureTypeCode" :label="$t('basic.code')">
<el-input v-model="dataForm.failureTypeCode" :placeholder="$t('basic.code')"></el-input>
<el-input clearable v-model="dataForm.failureTypeCode" :placeholder="$t('basic.code')"></el-input>
</el-form-item>
<el-form-item prop="failureTypeName" :label="$t('basic.name')">
<el-input v-model="dataForm.failureTypeName" :placeholder="$t('basic.name')"></el-input>
<el-input clearable v-model="dataForm.failureTypeName" :placeholder="$t('basic.name')"></el-input>
</el-form-item>
<el-form-item prop="failureTypeStatus" :label="$t('basic.status')">
<el-select v-model="dataForm.failureTypeStatus" :placeholder="$t('basic.status')">
<el-select clearable v-model="dataForm.failureTypeStatus" :placeholder="$t('basic.status')">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>

View File

@ -121,13 +121,6 @@ export default {
param: 'name',
clearable:true
},
{
type: "button",
btnName: "新增",
name: "add",
color: 'success',
plain:true
},
{
type: "button",
btnName: "搜索",
@ -135,6 +128,13 @@ export default {
color: "primary",
// plain: true,
},
{
type: "button",
btnName: "新增",
name: "add",
color: 'success',
plain:true
},
{
type: "button",
btnName: "关联产品列表",

View File

@ -147,17 +147,17 @@ export default {
},
{
type: "button",
btnName: "新增",
name: "add",
color: 'success',
plain: true
btnName: "搜索",
name: "search",
color: "primary",
// plain: true,
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
btnName: "新增",
name: "add",
color: 'success',
plain: true
// plain: true,
},
{

View File

@ -128,17 +128,17 @@ export default {
},
{
type: "button",
btnName: "新增",
name: "add",
color: 'success',
plain: true
btnName: "搜索",
name: "search",
color: "primary",
// plain: true,
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
btnName: "新增",
name: "add",
color: 'success',
plain: true
// plain: true,
},
{

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-07-11 10:07:22
* @LastEditTime: 2023-07-18 10:19:11
* @LastEditors: zhp
* @Description:
-->
@ -128,17 +128,17 @@ export default {
},
{
type: "button",
btnName: "新增",
name: "add",
color: 'success',
plain: true
btnName: "搜索",
name: "search",
color: "primary",
// plain: true,
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
btnName: "新增",
name: "add",
color: 'success',
plain: true
// plain: true,
}
],

View File

@ -120,17 +120,17 @@ export default {
},
{
type: "button",
btnName: "新增",
name: "add",
color: 'success',
plain: true
btnName: "搜索",
name: "search",
color: "primary",
// plain: true,
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
btnName: "新增",
name: "add",
color: 'success',
plain: true
// plain: true,
},
{

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-02-21 14:30:17
* @LastEditTime: 2023-07-11 10:24:01
* @LastEditTime: 2023-07-18 10:19:37
* @LastEditors: zhp
* @Description:
-->
@ -135,17 +135,17 @@ export default {
// },
{
type: "button",
btnName: "新增",
name: "add",
color: 'success',
plain: true
btnName: "搜索",
name: "search",
color: "primary",
// plain: true,
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
btnName: "新增",
name: "add",
color: 'success',
plain: true
// plain: true,
},
{

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-02-21 14:30:17
* @LastEditTime: 2023-07-11 10:16:26
* @LastEditTime: 2023-07-18 10:19:49
* @LastEditors: zhp
* @Description:
-->
@ -151,17 +151,17 @@ export default {
},
{
type: "button",
btnName: "新增",
name: "add",
color: 'success',
plain: true
btnName: "搜索",
name: "search",
color: "primary",
// plain: true,
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
btnName: "新增",
name: "add",
color: 'success',
plain: true
// plain: true,
},
{

View File

@ -1,109 +0,0 @@
<!--
* @Author: zhp
* @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-26 13:39:19
* @LastEditors: zhp
* @Description:
-->
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__user">
<SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
<!-- <el-button type="primary" size="small" plain>导入</el-button> -->
</SearchBar>
<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">
<teamMember-add ref="addOrUpdate" @successSubmit="successSubmit"></teamMember-add>
</base-dialog>
</div>
</el-card>
</template>
<script>
import basicPage from "@/mixins/basic-page";
import teamMemberAdd from './components/teamMember-add'
import i18n from "@/i18n";
const tableProps = [
{
prop: "paramCode",
label: i18n.t("params.paramCode"),
},
{
prop: "paramValue",
label: i18n.t("params.paramValue"),
},
{
prop: "remark",
label: i18n.t("params.remark"),
},
];
const tableBtn = [
{
type: "edit",
btnName: "编辑",
},
{
type: "delete",
btnName: "删除",
},
];
export default {
mixins: [basicPage],
data() {
return {
urlOptions: {
getDataListURL: "/basic/qmsTeamMember/page",
deleteURL: "/basic/qmsControlMode",
},
tableProps,
tableBtn,
formConfig: [
// {
// type: "",
// label: i18n.t("params.paramCode"),
// placeholder: i18n.t("params.paramCode"),
// param: "paramCode",
// },
// {
// type: "separate",
// },
{
type: "button",
btnName: "新增",
name: "add",
color: "primary",
},
],
};
},
components: {
teamMemberAdd,
},
methods:{
//search-bar
buttonClick(val) {
switch (val.btnName) {
case "search":
// this.listQuery.paramCode = val.paramCode;
this.listQuery.page = 1;
this.getDataList();
break;
case "add":
this.addOrEditTitle = '新增'
this.addOrUpdateVisible = true;
this.addOrUpdateHandle()
break;
default:
console.log(val)
}
},
}
};
</script>

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-07-14 13:44:46
* @LastEditTime: 2023-07-17 15:51:39
* @LastEditTime: 2023-07-18 16:53:52
* @LastEditors: zhp
* @Description:
-->
@ -12,14 +12,16 @@
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
label-width="120px">
<el-form-item prop="requirementListId" :label="$t('customerquality.requirementListName')">
<el-select v-model="dataForm.requirementListId" :placeholder="$t('customerquality.requirementListName')">
<el-select clearable v-model="dataForm.requirementListId"
:placeholder="$t('customerquality.requirementListName')">
<el-option v-for="item in requirementList" :key="item.id" :label="item.requirementListName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="knowledgeBaseId" :label="$t('customerquality.knowledgeBaseName')">
<el-select v-model="dataForm.knowledgeBaseId" :placeholder="$t('customerquality.knowledgeBaseName')">
<el-select clearable v-model="dataForm.knowledgeBaseId"
:placeholder="$t('customerquality.knowledgeBaseName')">
<el-option v-for="item in knowledgeBaseList" :key="item.id" :label="item.knowledgeBaseName"
:value="item.id">
</el-option>
@ -84,8 +86,10 @@ export default {
this.getDict()
},
methods: {
init(id) {
this.dataForm.id = id || ''
init(obj) {
this.dataForm.knowledgeBaseId = obj.knowledgeBaseId || ''
this.dataForm.requirementListId = obj.requirementListId || ''
this.dataForm.id = obj.id || ''
this.innerDrawer = true
this.$nextTick(() => {
this.$refs["dataForm"].resetFields()

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-07-14 13:44:46
* @LastEditTime: 2023-07-17 15:59:27
* @LastEditTime: 2023-07-18 14:25:05
* @LastEditors: zhp
* @Description:
-->
@ -106,8 +106,10 @@ export default {
}
},
methods: {
init(id) {
this.listQuery.knowledgeBaseId = id || ""
init(obj) {
this.listQuery.knowledgeBaseId = obj.knowledgeBaseId || ""
this.listQuery.requirementListId = obj.requirementListId || ""
// this.dataForm.dictTypeId = dictTypeId || "";
this.drawer = true
this.$nextTick(() => {
@ -135,8 +137,12 @@ export default {
// this.addOrEditTitle = ''
// this.addOrUpdateVisible = true;
this.baseConfigAddShow = true
const obj = {
knowledgeBaseId: this.listQuery.knowledgeBaseId,
requirementListId: this.listQuery.requirementListId
}
this.$nextTick(() => {
this.$refs.baseConfigAddList.init()
this.$refs.baseConfigAddList.init(obj)
})
// this.addOrUpdateHandle()
break;
@ -189,8 +195,13 @@ export default {
.catch(() => { });
} else if (val.type === 'edit') {
this.baseConfigAddShow = true
const obj = {
knowledgeBaseId: this.listQuery.knowledgeBaseId,
requirementListId: this.listQuery.requirementListId,
id:val.data.id
}
this.$nextTick(() => {
this.$refs.baseConfigAddList.init(val.data.id)
this.$refs.baseConfigAddList.init(obj)
})
}
},

View File

@ -1,29 +1,31 @@
<!--
* @Author: zhp
* @Date: 2023-07-14 13:44:46
* @LastEditTime: 2023-07-17 16:55:03
* @LastEditTime: 2023-07-18 16:53:36
* @LastEditors: zhp
* @Description:
-->
<template>
<div>
<el-drawer close-on-press-escape:title="$t('add')" :append-to-body="true" :before-close="handleClose"
<el-drawer close-on-press-escape :title="$t('add')" :append-to-body="true" :before-close="handleClose"
:visible.sync="innerDrawer">
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
label-width="120px">
<el-form-item prop="requirementListId" :label="$t('customerquality.requirementListName')">
<el-select v-model="dataForm.requirementListId" :placeholder="$t('customerquality.requirementListName')">
<el-option v-for="item in requirementList" :key="item.id" :label="item.requirementListName"
<el-form-item prop="knowledgeBaseFileId" :label="$t('customerquality.knowledgeBaseFileId')">
<el-select clearable v-model="dataForm.knowledgeBaseFileId"
:placeholder="$t('customerquality.knowledgeBaseFileId')">
<el-option v-for="item in categoryList" :key="item.id" :label="item.dataDictionaryDetailName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="knowledgeBaseId" :label="$t('customerquality.knowledgeBaseName')">
<el-select v-model="dataForm.knowledgeBaseId" :placeholder="$t('customerquality.knowledgeBaseName')">
<el-option v-for="item in knowledgeBaseList" :key="item.id" :label="item.knowledgeBaseName"
:value="item.id">
</el-option>
</el-select>
<el-form-item prop="title" :label="$t('customerquality.title')">
<el-input clearable v-model="dataForm.title" :placeholder="$t('customerquality.title')">
</el-input>
</el-form-item>
<el-form-item prop="accessPath" :label="$t('customerquality.accessPath')">
<el-input clearable v-model="dataForm.accessPath" :placeholder="$t('customerquality.accessPath')">
</el-input>
</el-form-item>
<el-form-item>
<el-button @click="innerDrawer = false">{{ $t('cancel') }} </el-button>
@ -38,24 +40,28 @@
import i18n from "@/i18n"
import basicAdd from "@/mixins/basic-add"
import debounce from "lodash/debounce"
export default {
mixins: [basicAdd],
data() {
return {
urlOptions: {
submitURL: "/customerquality/qmsKnowledgeBaseRequirementList",
getRequirementListURL: "/customerquality/qmsCustomerQualityRequirementList/page",
getKnowledgeBaseURL: "/customerquality/qmsKnowledgeBase/page"
submitURL: "/customerquality/knowledgeBaseRequirementListData",
getDictDataDetail: '/mutual/qmsDataDictionaryDetail/page'
},
dataForm: {
knowledgeBaseId: null,
requirementListId:null
accessPath:null,
id: null,
knowledgeBaseFileId: null,
knowledgeBaseRequirementListId: null,
title: null,
},
innerDrawer: false,
listQuery: {
limit: 10,
page:1,
},
categoryList:[],
requirementList: [],
knowledgeBaseList:[],
}
@ -82,10 +88,14 @@ export default {
},
mounted () {
this.getDict()
this.getAccessPath()
},
methods: {
init(id) {
this.dataForm.id = id || ''
init(obj) {
this.dataForm.knowledgeBaseRequirementListId = obj.knowledgeBaseRequirementListId || ''
this.dataForm.knowledgeBaseRequirementListId = obj.knowledgeBaseRequirementListId || ''
this.dataForm.id = obj.id || ''
this.innerDrawer = true
this.$nextTick(() => {
this.$refs["dataForm"].resetFields()
@ -96,13 +106,43 @@ export default {
}
})
},
getDict() {
this.$http
.get(this.urlOptions.getDictDataDetail, {
params: {
limit: 999,
page: 1,
dataDictionaryId: '1679670942635122690',
}
})
.then(({ data: res }) => {
// this.dataListLoading = false;
if (res.code === 0) {
this.categoryList = res.data.list
}
})
},
getAccessPath() {
const now = new Date();
const year = now.getFullYear();
const month = ('0' + (now.getMonth() + 1)).slice(-2);
const day = ('0' + now.getDate()).slice(-2);
const hours = ('0' + now.getHours()).slice(-2);
const minutes = ('0' + now.getMinutes()).slice(-2);
const formattedTime = year + month + day + hours + minutes
console.log(formattedTime)
var str = Math.random().toString(36).slice(-5)
// console.log(str)
this.dataForm.accessPath = formattedTime+ str
},
handleClose() {
this.innerDrawer = true
this.$refs.dataForm.resetFields()
},
getInfo() {
this.$http
.get(`/customerquality/qmsKnowledgeBaseRequirementList/${this.dataForm.id}`)
.get(`/customerquality/knowledgeBaseRequirementListData/${this.dataForm.id}`)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
@ -114,32 +154,6 @@ export default {
})
.catch(() => { });
},
getDict() {
this.$http
.get(this.urlOptions.getRequirementListURL, {
params: this.listQuery
})
.then(({ data: res }) => {
if (res.code === 0) {
console.log(res);
this.requirementList = res.data.list
}
})
.catch(() => {
})
this.$http
.get(this.urlOptions.getKnowledgeBaseURL, {
params: this.listQuery
})
.then(({ data: res }) => {
if (res.code === 0) {
console.log(res);
this.knowledgeBaseList = res.data.list
}
})
.catch(() => {
})
},
//
dataFormSubmit() {
this.$refs["dataForm"].validate((valid) => {

View File

@ -1,45 +1,101 @@
<!--
* @Author: zhp
* @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-07-14 14:28:32
* @LastEditTime: 2023-07-19 09:00:49
* @LastEditors: zhp
* @Description:
-->
<template>
<el-dialog title="提示" :visible.sync="visible" width="50%" :before-close="handleClose">
<el-tabs @tab-click="handleClick" v-model="title" tab-position="left" style="margin-bottom: 30px;">
<el-tab-pane label="项目概述" name="first">
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
label-width="120px">
<el-form-item prop="code" :label="$t('customerquality.code')">
<el-input v-model="dataForm.code" :placeholder="$t('customerquality.code')"></el-input>
</el-form-item>
<el-form-item prop="knowledgeBaseName" :label="$t('customerquality.knowledgeBaseName')">
<el-input v-model="dataForm.knowledgeBaseName" :placeholder="$t('customerquality.knowledgeBaseName')"></el-input>
</el-form-item>
<!-- <el-form-item prop="knowledgeBaseName" :label="$t('basic.status')">
<el-select v-model="dataForm.currentStage" :placeholder="$t('basic.status')">
<el-option v-for="item in currentStageList" :key="item.value" :label="item.label" :value="item.value">
<el-form-item prop="productId" :label="$t('basic.productName')">
<el-select v-model="dataForm.productId" :placeholder="$t('basic.productName')" clearable>
<el-option v-for="item in productList" :key="item.id" :label="item.productName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="serialNumber" :label="$t('customerquality.serialNumber')">
<el-input v-model="dataForm.serialNumber" :placeholder="$t('customerquality.serialNumber')"></el-input>
</el-form-item>
<el-form-item prop="description" :label="$t('customerquality.description')">
<el-input v-model="dataForm.description" :placeholder="$t('customerquality.description')"></el-input>
</el-form-item>
<el-form-item prop="questionType" :label="$t('customerquality.questionType')">
<el-select v-model="dataForm.questionType" :placeholder="$t('customerquality.questionType')">
<el-option v-for="item in questionTypeList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item> -->
<el-form-item prop="category" :label="$t('customerquality.category')">
<el-select v-model="dataForm.category" :placeholder="$t('customerquality.category')">
<el-option v-for="item in categoryList" :key="item.id" :label="item.dataDictionaryDetailName"
<el-form-item prop="knowledgeBaseId" :label="$t('customerquality.knowledgeBase')">
<el-select v-model="dataForm.knowledgeBaseId" :placeholder="$t('customerquality.knowledgeBase')" clearable>
<el-option v-for="item in knowledgeBaseList" :key="item.id" :label="item.knowledgeBaseName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="customerId" :label="$t('customerquality.customerName')">
<el-select v-model="dataForm.customerId" :placeholder="$t('customerquality.customerName')" clearable>
<el-option v-for="item in customerList" :key="item.id" :label="item.customerName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="qualityAcceptanceDate" :label="$t('customerquality.qualityAcceptanceDate')">
<el-date-picker clearable v-model="dataForm.qualityAcceptanceDate" type="datetime"
:placeholder="$t('customerquality.qualityAcceptanceDate')">
</el-date-picker>
</el-form-item>
<el-form-item prop="deliveryRequiredDate" :label="$t('customerquality.deliveryRequiredDate')">
<el-date-picker clearable v-model="dataForm.deliveryRequiredDate" type="datetime"
:placeholder="$t('customerquality.deliveryRequiredDate')">
</el-date-picker>
</el-form-item>
<el-form-item prop="confirmDeliveryDate" :label="$t('customerquality.confirmDeliveryDate')">
<el-date-picker clearable v-model="dataForm.confirmDeliveryDate" type="datetime"
:placeholder="$t('customerquality.confirmDeliveryDate')">
</el-date-picker>
</el-form-item>
<el-form-item prop="first" :label="$t('customerquality.first')">
<el-select clearable v-model="dataForm.first" :placeholder="$t('customerquality.first')">
<el-option v-for="item in firstList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="previousVersionCode" :label="$t('customerquality.previousVersionCode')">
<el-input clearable v-model="dataForm.previousVersionCode"
:placeholder="$t('customerquality.previousVersionCode')">
</el-input>
</el-form-item>
<el-form-item prop="confidentialityAgreement" :label="$t('customerquality.first')">
<el-select clearable v-model="dataForm.confidentialityAgreement" :placeholder="$t('customerquality.first')">
<el-option v-for="item in confidentialityAgreementList" :key="item.id" :label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="ppapGrade" :label="$t('customerquality.ppapGrade')">
<el-select clearable v-model="dataForm.ppapGrade" :placeholder="$t('customerquality.ppapGrade')">
<el-option v-for="item in ppapGradeList" :key="item.id" :label="item.dataDictionaryDetailName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="version" :label="$t('customerquality.version')">
<el-input clearable v-model="dataForm.version" :placeholder="$t('customerquality.version')">
</el-input>
</el-form-item>
<el-form-item prop="description" :label="$t('customerquality.description')">
<el-input clearable v-model="dataForm.description" :placeholder="$t('customerquality.description')">
</el-input>
</el-form-item>
</el-form>
<span style="float: right;" class="dialog-footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmit()"> {{ $t('save') }} </el-button>
</span>
</el-tab-pane>
<el-tab-pane :disabled="tabDisable" label="要求清单" name="second">
<el-tree :data="treeData" show-checkbox @check="handleCheckChange" node-key="id">
</el-tree>
</el-tab-pane>
<el-tab-pane :disabled="tabDisable" label="封面生成" name="three">
33333
</el-tab-pane>
<el-tab-pane :disabled="tabDisable" label="提交" name="four">
4444
</el-tab-pane>
</el-tabs>
</el-dialog>
</template>
<script>
@ -52,8 +108,38 @@ export default {
urlOptions: {
submitURL: "/customerquality/qmsCustomerQualityProjectList",
infoURL: "/customerquality/qmsCustomerQualityProjectList//{id}",
getDictDataDetail: '/mutual/qmsCustomerQualityProjectList/page'
getDictDataDetail: '/mutual/qmsDataDictionaryDetail/page',
getProductURL: '/basic/qmsProduct/page',
getKnowledgeBaseURL: '/customerquality/qmsKnowledgeBase/page',
getCustomerURL: '/basic/qmsCustomer/page',
getRequirementListURL: '/customerquality/qmsCustomerQualityRequirementList/page'
},
customerQualityProjectListId:null,
productList: [],
title:'first',
customerList: [],
ppapGradeList:[],
knowledgeBaseList: [],
firstList: [
{
id: '0',
name:'否',
},
{
id: '1',
name: '是',
}
],
confidentialityAgreementList: [
{
id: '0',
name: '否',
},
{
id: '1',
name: '是',
}
],
categoryList:[],
typeList:[],
visible: false,
@ -61,25 +147,68 @@ export default {
limit: 999,
page:1
},
treeData: [{
label: '必选项目',
// id:1,
children: []
}],
tabDisable:true,
dataForm: {
id: "",
code: null,
category: null,
knowledgeBaseName:null
confidentialityAgreement:null,
confirmDeliveryDate: null,
customerId: null,
deliveryRequiredDate: null,
description:null,
first: null,
id: undefined,
knowledgeBaseId: null,
ppapGrade: null,
previousVersionCode: null,
productId: null,
qualityAcceptanceDate: null,
version: null,
},
};
},
computed: {
dataRule() {
return {
code: [
productId: [
{
required: true,
message: this.$t("validate.required"),
trigger: "blur",
trigger: "change",
},
],
knowledgeBaseName: [
knowledgeBaseId: [
{
required: true,
message: this.$t("validate.required"),
trigger: "change",
},
],
customerId: [
{
required: true,
message: this.$t("validate.required"),
trigger: "change",
},
],
qualityAcceptanceDate: [
{
required: true,
message: this.$t("validate.required"),
trigger: "change",
},
],
deliveryRequiredDate: [
{
required: true,
message: this.$t("validate.required"),
trigger: "change",
},
],
ppapGrade: [
{
required: true,
message: this.$t("validate.required"),
@ -91,8 +220,15 @@ export default {
},
mounted () {
this.getDict()
this.getSecondData()
},
methods: {
handleClick(val) {
if (this.customerQualityProjectListId === null) {
this.title = 'first'
console.log(this.title)
}
},
init(id) {
this.dataForm.id = id || ""
// this.dataForm.dictTypeId = dictTypeId || "";
@ -100,13 +236,16 @@ export default {
this.$nextTick(() => {
this.$refs["dataForm"].resetFields()
if (this.dataForm.id) {
this.getInfo();
this.getInfo()
} else {
// this.getCode()
}
});
},
//
handleClose() {
this.$refs["dataForm"].resetFields()
},
getInfo() {
this.$http
.get(`/customerquality/qmsCustomerQualityProjectList/${this.dataForm.id}`)
@ -117,25 +256,118 @@ export default {
this.dataForm = {
...this.dataForm,
...res.data,
};
}
this.customerQualityProjectListId = res.data.id
this.tabDisable = false
})
.catch(() => {});
},
getSecondData() {
this.$http
.get(this.urlOptions.getRequirementListURL, {
params: {
limit: 999,
page: 1,
}
})
.then(({ data: res }) => {
// this.dataListLoading = false;
if (res.code === 0) {
this.treeData[0].children = res.data.list.map((item) => {
return {
label: item.requirementListName,
id:item.id
}
})
console.log(this.treeData);
}
})
},
getDict() {
this.$http
.get(this.urlOptions.getDictDataDetail, {
params: {
limit: 999,
page: 1,
dataDictionaryId:'1679670942635122690',
dataDictionaryId:'1681202200846499841',
}
})
.then(({ data: res }) => {
this.dataListLoading = false;
// this.dataListLoading = false;
if (res.code === 0) {
this.categoryList = res.data.list
this.ppapGradeList = res.data.list
}
})
this.$http
.get(this.urlOptions.getProductURL, {
params: {
limit: 999,
page: 1,
}
})
.then(({ data: res }) => {
// this.dataListLoading = false;
if (res.code === 0) {
this.productList = res.data.list
}
})
this.$http
.get(this.urlOptions.getKnowledgeBaseURL, {
params: {
limit: 999,
page: 1,
}
})
.then(({ data: res }) => {
// this.dataListLoading = false;
if (res.code === 0) {
this.knowledgeBaseList = res.data.list
}
})
this.$http
.get(this.urlOptions.getCustomerURL, {
params: {
limit: 999,
page: 1,
}
})
.then(({ data: res }) => {
// this.dataListLoading = false;
if (res.code === 0) {
this.customerList = res.data.list
}
})
},
handleCheckChange(data, v) {
this.checkArr = v.checkedKeys
console.log(v)
},
// handleNodeClick(data) {
// console.log(data)
// },
dataFormSubmit() {
this.$refs["dataForm"].validate((valid) => {
if (!valid) {
return false;
}
this.$http[!this.dataForm.id ? "post" : "put"](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.title = 'second'
this.tabDisable = false
this.customerQualityProjectListId = res.data
},
});
})
.catch(() => { });
});
},
//
dataFormSubmitHandle: debounce(

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-07-14 10:06:36
* @LastEditTime: 2023-07-18 16:54:14
* @LastEditors: zhp
* @Description:
-->
@ -9,10 +9,11 @@
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
label-width="120px">
<el-form-item prop="code" :label="$t('customerquality.code')">
<el-input v-model="dataForm.code" :placeholder="$t('customerquality.code')"></el-input>
<el-input clearable v-model="dataForm.code" :placeholder="$t('customerquality.code')"></el-input>
</el-form-item>
<el-form-item prop="requirementListName" :label="$t('customerquality.requirementListName')">
<el-input v-model="dataForm.requirementListName" :placeholder="$t('customerquality.requirementListName')">
<el-input clearable v-model="dataForm.requirementListName"
:placeholder="$t('customerquality.requirementListName')">
</el-input>
</el-form-item>
<el-form-item prop="uploadFiles" :label="$t('customerquality.uploadFiles')">
@ -40,7 +41,7 @@
</el-select>
</el-form-item> -->
<el-form-item prop="category" :label="$t('customerquality.category')">
<el-select v-model="dataForm.category" :placeholder="$t('customerquality.category')">
<el-select clearable v-model="dataForm.category" :placeholder="$t('customerquality.category')">
<el-option v-for="item in categoryList" :key="item.id" :label="item.dataDictionaryDetailName" :value="item.id">
</el-option>
</el-select>

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-04-18 09:19:02
* @LastEditTime: 2023-07-17 16:59:22
* @LastEditTime: 2023-07-18 09:52:45
* @LastEditors: zhp
* @Description:
-->
@ -14,53 +14,41 @@
</el-badge> -->
</SearchBar>
<base-table id="palletTable" :table-props="tableProps" ref="palletTable1" :table-data="tableData">
<method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
@clickBtn="handleClick" />
</base-table>
<i slot="reference" class="el-icon-plus" @click="showInnerTable(injectData.id)" />
</el-popover>
<baseConfigFile-add ref="baseConfigFileAddList" v-if="baseConfigFileAddShow" @refreshDataList="getDataList"></baseConfigFile-add>
<baseConfigFile-add ref="baseConfigFileAddList" v-if="baseConfigFileAddShow" @refreshDataList="getDataList">
</baseConfigFile-add>
</div>
</template>
<script>
import i18n from "@/i18n"
import { timeFormatter } from '@/filters'
import baseConfigFileAdd from "./baseConfigFile-add"
const tableBtn = [
{
type: "edit",
btnName: i18n.t('edit'),
},
{
type: "delete",
btnName: i18n.t('delete'),
},
{
type: "configuration",
btnName: i18n.t('configuration'),
}
];
const tableProps = [
{
prop: "stageOneName",
label: i18n.t('researchquality.stageOneName'),
prop: "title",
label: i18n.t('customerquality.title'),
},
{
prop: "stageOneDate",
label: i18n.t('researchquality.stageOneDate'),
filter: timeFormatter
},
{
prop: "stageTwoName",
label: i18n.t('researchquality.stageTwoName'),
},,
{
prop: "stageTwoDate",
label: i18n.t('researchquality.stageTwoDate'),
filter: timeFormatter
},
{
prop: "stageThreeName",
label: i18n.t('researchquality.stageThreeName'),
},
{
prop: "stageThreeDate",
label: i18n.t('researchquality.stageThreeDate'),
filter: timeFormatter
},
{
prop: "stageFourName",
label: i18n.t('researchquality.stageFourName'),
},
{
prop: "stageFourDate",
label: i18n.t('researchquality.stageFourDate'),
filter: timeFormatter
prop: "accessPath",
label: i18n.t('customerquality.accessPath'),
}
];
export default {
@ -79,11 +67,10 @@ export default {
tableProps,
list: this.injectData,
urlOptions: {
submitURL: "/customerquality/qmsPublicDocuments",
infoURL: "/customerquality/qmsPublicDocuments//{id}",
getCodeURL: '/customerquality/qmsPublicDocuments/getCode',
getDataListURL: '/customerquality/knowledgeBaseRequirementListData/page'
getDataListURL: '/customerquality/knowledgeBaseRequirementListData/page',
deleteURL: '/customerquality/knowledgeBaseRequirementListData/page'
},
tableBtn,
baseConfigFileAddShow:false,
tableData: [],
listQuery: {
@ -128,13 +115,51 @@ export default {
// this.addOrUpdateVisible = true;
this.baseConfigFileAddShow = true
this.$nextTick(() => {
this.$refs.baseConfigFileAddList.init(this.injectData.id)
const obj = {
knowledgeBaseRequirementListId :this.injectData.id
}
this.$refs.baseConfigFileAddList.init(obj)
})
// this.addOrUpdateHandle()
break;
default:
}
},
handleClick(val) {
if (val.type === "delete") {
this.$confirm(`确定对[标题为${val.data.title}]进行删除操作?`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
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.baseConfigFileAddShow = true
this.$nextTick(() => {
const obj = {
knowledgeBaseRequirementListId: this.injectData.id,
id:val.data.id
}
this.$refs.baseConfigFileAddList.init(obj)
})
}
},
showInnerTable() {
this.listQuery.knowledgeBaseRequirementListId = this.injectData.id
this.getDataList()

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-07-17 15:50:39
* @LastEditTime: 2023-07-18 16:54:28
* @LastEditors: zhp
* @Description:
-->
@ -9,10 +9,12 @@
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
label-width="120px">
<el-form-item prop="title" :label="$t('customerquality.title')">
<el-input :disabled="isDetail" v-model="dataForm.title" :placeholder="$t('customerquality.title')"></el-input>
<el-input clearable :disabled="isDetail" v-model="dataForm.title" :placeholder="$t('customerquality.title')">
</el-input>
</el-form-item>
<el-form-item prop="accessPath" :label="$t('customerquality.accessPath')">
<el-input :disabled="isDetail" v-model="dataForm.accessPath" :placeholder="$t('customerquality.accessPath')">
<el-input clearable :disabled="isDetail" v-model="dataForm.accessPath"
:placeholder="$t('customerquality.accessPath')">
</el-input>
</el-form-item>
<!-- <el-form-item prop="knowledgeBaseName" :label="$t('basic.status')">
@ -34,7 +36,7 @@
</el-select>
</el-form-item> -->
<el-form-item prop="knowledgeBaseFileId" :label="$t('customerquality.knowledgeBaseFileId')">
<el-select :disabled="isDetail" v-model="dataForm.knowledgeBaseFileId"
<el-select clearable :disabled="isDetail" v-model="dataForm.knowledgeBaseFileId"
:placeholder="$t('customerquality.knowledgeBaseFileId')">
<el-option v-for="item in categoryList" :key="item.id" :label="item.dataDictionaryDetailName" :value="item.id">
</el-option>
@ -143,7 +145,7 @@ export default {
}
})
.then(({ data: res }) => {
this.dataListLoading = false;
// this.dataListLoading = false;
if (res.code === 0) {
this.categoryList = res.data.list
}

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-07-14 10:06:39
* @LastEditTime: 2023-07-18 16:54:41
* @LastEditors: zhp
* @Description:
-->
@ -9,10 +9,11 @@
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
label-width="120px">
<el-form-item prop="code" :label="$t('customerquality.code')">
<el-input v-model="dataForm.code" :placeholder="$t('customerquality.code')"></el-input>
<el-input clearable v-model="dataForm.code" :placeholder="$t('customerquality.code')"></el-input>
</el-form-item>
<el-form-item prop="knowledgeBaseName" :label="$t('customerquality.knowledgeBaseName')">
<el-input v-model="dataForm.knowledgeBaseName" :placeholder="$t('customerquality.knowledgeBaseName')"></el-input>
<el-input clearable v-model="dataForm.knowledgeBaseName" :placeholder="$t('customerquality.knowledgeBaseName')">
</el-input>
</el-form-item>
<!-- <el-form-item prop="knowledgeBaseName" :label="$t('basic.status')">
<el-select v-model="dataForm.currentStage" :placeholder="$t('basic.status')">
@ -33,9 +34,8 @@
</el-select>
</el-form-item> -->
<el-form-item prop="category" :label="$t('customerquality.category')">
<el-select v-model="dataForm.category" :placeholder="$t('customerquality.category')">
<el-option v-for="item in categoryList" :key="item.id" :label="item.dataDictionaryDetailName"
:value="item.id">
<el-select clearable v-model="dataForm.category" :placeholder="$t('customerquality.category')">
<el-option v-for="item in categoryList" :key="item.id" :label="item.dataDictionaryDetailName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
@ -131,7 +131,7 @@ export default {
}
})
.then(({ data: res }) => {
this.dataListLoading = false;
// this.dataListLoading = false;
if (res.code === 0) {
this.categoryList = res.data.list
}

View File

@ -1,24 +1,25 @@
<!--
* @Author: zhp
* @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-07-13 11:01:20
* @LastEditTime: 2023-07-18 16:55:16
* @LastEditors: zhp
* @Description:
-->
<template>
<el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="120px">
<el-form-item prop="title" :label="$t('researchquality.title')">
<el-input v-model="dataForm.title" :placeholder="$t('researchquality.title')">
<el-input clearable v-model="dataForm.title" :placeholder="$t('researchquality.title')">
</el-input>
</el-form-item>
<el-form-item prop="requirementListGroupId" :label="$t('researchquality.requirementListGroupId')">
<el-select v-model="dataForm.requirementListGroupId" :placeholder="$t('researchquality.requirementListGroupId')">
<el-select clearable v-model="dataForm.requirementListGroupId"
:placeholder="$t('researchquality.requirementListGroupId')">
<el-option v-for="item in projectTypeList" :key="item.id" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="description" :label="$t('researchquality.description')">
<el-input v-model="dataForm.description" :placeholder="$t('researchquality.description')">
<el-input clearable v-model="dataForm.description" :placeholder="$t('researchquality.description')">
</el-input>
</el-form-item>
</el-form>

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-06-08 14:29:46
* @LastEditTime: 2023-07-14 14:28:20
* @LastEditTime: 2023-07-18 14:37:28
* @LastEditors: zhp
* @Description:
-->
@ -21,13 +21,11 @@
<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">
<qmsKnowledgeBase-add ref="addOrUpdate" @refreshDataList="successSubmit">
</qmsKnowledgeBase-add>
<customerQualityProjectList-add v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="successSubmit">
</customerQualityProjectList-add>
<!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
</base-dialog>
<baseConfig ref="baseConfigOrList" v-if="baseConfigShow"></baseConfig>
<!-- </base-dialog> -->
<!-- <baseConfig ref="baseConfigOrList" v-if="baseConfigShow"></baseConfig> -->
<!-- <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
@confirm="handleSearchConfirm" :before-close="handleSearchCancel">
<projectType-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit">
@ -54,9 +52,9 @@
import basicPage from "@/mixins/basic-page"
// import basicSearch from "@/mixins/basic-search"
// import projectTypeSearch from "./components/projectTypeSearch.vue"
import customerquality from '@/filters/customerquality'
import qmsKnowledgeBaseAdd from "./components/qmsKnowledgeBase-add.vue"
import baseConfig from "./components/baseConfig"
// import customerquality from '@/filters/customerquality'
import customerQualityProjectListAdd from "./components/customerQualityProjectList-add.vue"
// import baseConfig from "./components/baseConfig"
import i18n from "@/i18n"
@ -193,8 +191,8 @@ export default {
};
},
components: {
qmsKnowledgeBaseAdd,
baseConfig
customerQualityProjectListAdd,
// baseConfig
},
methods: {
//search-bar
@ -294,11 +292,6 @@ export default {
this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id);
})
} else if (val.type === 'configuration') {
this.baseConfigShow = true
this.$nextTick(() => {
this.$refs.baseConfigOrList.init(val.data.id)
});
}
},
// addOrUpdateHandle(productData) {
@ -320,9 +313,10 @@ export default {
this.exportHandle()
break;
case "add":
this.addOrEditTitle = '新增'
this.addOrUpdateVisible = true;
this.addOrUpdateHandle()
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init()
})
break;
default:
}

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-06-08 14:29:46
* @LastEditTime: 2023-07-14 10:08:05
* @LastEditTime: 2023-07-18 14:20:43
* @LastEditors: zhp
* @Description:
-->
@ -27,6 +27,8 @@
</customerQualityRequirementList-add>
<!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
</base-dialog>
<baseConfig ref="baseConfigOrList" v-if="baseConfigShow"></baseConfig>
<!-- <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
@confirm="handleSearchConfirm" :before-close="handleSearchCancel">
<projectType-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit">
@ -56,6 +58,7 @@ import basicPage from "@/mixins/basic-page"
import customerquality from '@/filters/customerquality'
import customerQualityRequirementListAdd from "./components/customerQualityRequirementList-add.vue"
import i18n from "@/i18n"
import baseConfig from "./components/baseConfig"
// import i18n from "@/i18n";
const tableProps = [
{
@ -83,6 +86,10 @@ const tableBtn = [
{
type: "delete",
btnName: i18n.t('delete'),
},
{
type: "configuration",
btnName: i18n.t('configuration'),
}
];
export default {
@ -95,6 +102,7 @@ export default {
exportURL: '/customerquality/qmsCustomerQualityRequirementList/export'
},
tableProps,
baseConfigShow:false,
tableBtn,
productData: {},
dataForm:{
@ -166,7 +174,8 @@ export default {
};
},
components: {
customerQualityRequirementListAdd
customerQualityRequirementListAdd,
baseConfig
},
methods: {
//search-bar
@ -196,12 +205,12 @@ export default {
// this.$refs.addOrUpdate.dataFormSubmitHandle();
// },
// conditionSearchSubmit() {},
conditionSearchSubmit(dataForm) {
conditionSearchSubmit() {
// console.log(key);
// console.log(key);
this.listQuery.page = 1;
this.getDataList();
this.searchOrUpdateVisible = false;
this.searchOrUpdateVisible = false
// console.log(11111);
// this.conditionSearchSubmit();
},
@ -209,10 +218,6 @@ export default {
this.$http.get(this.urlOptions.exportURL, { responseType: 'blob' }, {
...this.dataForm
}).then((res) => {
console.log(res)
// if (res !== 0) {
// return this.$message.error(res.msg)
// }
let fileName = ''
const contentDisposition = res.headers['content-disposition']
if (contentDisposition) {
@ -266,6 +271,14 @@ export default {
this.$nextTick(() => {
this.$refs.addOrUpdate.init(val.data.id);
});
} else if (val.type === 'configuration') {
this.baseConfigShow = true
const obj = {
requirementListId:val.data.id
}
this.$nextTick(() => {
this.$refs.baseConfigOrList.init(obj)
});
}
},
// addOrUpdateHandle(productData) {

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-06-08 14:29:46
* @LastEditTime: 2023-07-14 13:58:32
* @LastEditTime: 2023-07-18 14:20:57
* @LastEditors: zhp
* @Description:
-->
@ -284,8 +284,11 @@ export default {
})
} else if (val.type === 'configuration') {
this.baseConfigShow = true
const obj = {
knowledgeBaseId: val.data.id
}
this.$nextTick(() => {
this.$refs.baseConfigOrList.init(val.data.id)
this.$refs.baseConfigOrList.init(obj)
});
}
},

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-05-15 14:35:31
* @LastEditTime: 2023-07-18 10:14:38
* @LastEditors: zhp
* @Description:
-->
@ -19,10 +19,10 @@
<el-input v-model="dataForm.responsibilitie" :placeholder="$t('laboratory.responsibilitie')">
</el-input>
</el-form-item>
<el-form-item prop="expectedReturnDate" :label="$t('gage.expectedReturnDate')">
<el-date-picker v-model="dataForm.expectedReturnDate" type="datetime" :placeholder="$t('gage.expectedReturnDate')"
format='yyyy-MM-dd HH:mm:ss' valueFormat='yyyy-MM-ddTHH:mm:ss'>
</el-date-picker>
<el-form-item :label="$t('laboratory.timeSlot')" prop="timeSlot">
<el-date-picker v-model="dataForm.timeSlot" size="small" type="datetimerange" format='yyyy-MM-dd HH:mm:ss'
valueFormat='yyyy-MM-ddTHH:mm:ss' :start-placeholder="$t('gage.startTime')"
:end-placeholder="$t('gage.endTime')" :range-separator="$t('gage.to')" clearable />
</el-form-item>
</el-form>
</template>
@ -35,8 +35,8 @@ export default {
data() {
return {
urlOptions: {
submitURL: "/gage/qmsLaboratoryEmployeeResume",
infoURL: "/gage/qmsLaboratoryEmployeeResume/{ id }",
submitURL: "/laboratory/qmsLaboratoryEmployeeResume",
infoURL: "/laboratory/qmsLaboratoryEmployeeResume/{ id }",
dictionaryDetailList: '/mutual/qmsDataDictionaryDetail/page',
getUserList: '/sys/user/page'
// getTeamListURL: '/basic/qmsTeam/gape',
@ -91,13 +91,13 @@ export default {
department:null,
endDate: null,
id: null,
timeSlot:undefined,
laboratoryTesterId: null,
position: null,
remark: null,
responsibilitie: null,
startDate: null,
id: null,
laboratoryTesterId:null,
},
};
},
@ -133,13 +133,14 @@ export default {
},
methods: {
init(data) {
console.log(data)
this.dataForm.id = data.id ? data.id : ''
this.dataForm.laboratoryTesterId = data.laboratoryTesterId ? data.laboratoryTesterId : ''
// console.log(11111)
// this.dataForm.dictTypeId = dictTypeId || "";
this.visible = true
this.$nextTick(() => {
this.$refs["dataForm"].resetFields();
this.$refs["dataForm"].resetFields()
if (this.dataForm.id) {
this.getInfo()
} else {
@ -183,7 +184,7 @@ export default {
//
getInfo() {
this.$http
.get(`/gage/qmsLaboratoryEmployeeResume/${this.dataForm.id}`)
.get(`/laboratory/qmsLaboratoryEmployeeResume/${this.dataForm.id}`)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
@ -195,6 +196,31 @@ export default {
})
.catch(() => { })
},
dataFormSubmit() {
this.dataForm.endDate = this.dataForm.timeSlot ? this.dataForm.timeSlot[1] :undefined
this.dataForm.startDate = this.dataForm.timeSlot ? this.dataForm.timeSlot[0] : undefined
this.$refs["dataForm"].validate((valid) => {
if (!valid) {
return false;
}
this.$http[!this.dataForm.id ? "post" : "put"](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(() => { });
});
},
//
dataFormSubmitHandle: debounce(
function () {

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-07-17 16:17:07
* @LastEditTime: 2023-07-18 10:52:15
* @LastEditors: zhp
* @Description:
-->
@ -110,15 +110,13 @@ export default {
searchOrEditTitle: '',
searchOrUpdateVisible: false,
formConfig: [
// {
// type: "",
// label: i18n.t("params.paramCode"),
// placeholder: i18n.t("params.paramCode"),
// param: "paramCode",
// },
// {
// type: "separate",
// },
{
type: 'input',
label: i18n.t('basic.name'),
placeholder: i18n.t('basic.name'),
param: 'name',
clearable: true
},
{
type: "button",
btnName: i18n.t('search'),
@ -198,7 +196,7 @@ export default {
buttonClick(val) {
switch (val.btnName) {
case "search":
// this.listQuery.paramCode = val.paramCode;
this.listQuery.name = val.name ?val.name : null
this.listQuery.page = 1
this.getDataList();
break;

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-07-14 09:53:37
* @LastEditTime: 2023-07-18 15:22:30
* @LastEditors: zhp
* @Description:
-->
@ -117,12 +117,6 @@ export default {
name: "add",
color: "primary",
},
{
type: "button",
btnName: i18n.t('export'),
name: "export",
color: "primary",
},
{
type: "button",
btnName: i18n.t('search'),

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-07-14 09:53:46
* @LastEditTime: 2023-07-18 15:22:25
* @LastEditors: zhp
* @Description:
-->
@ -113,12 +113,6 @@ export default {
name: "add",
color: "primary",
},
{
type: "button",
btnName: i18n.t('export'),
name: "export",
color: "primary",
},
{
type: "button",
btnName: i18n.t('search'),

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-20 15:34:33
* @LastEditTime: 2023-07-18 15:22:19
* @LastEditors: zhp
* @Description:
-->
@ -112,12 +112,6 @@ export default {
name: "add",
color: "primary",
},
{
type: "button",
btnName: i18n.t('export'),
name: "export",
color: "primary",
},
{
type: "button",
btnName: i18n.t('search'),

View File

@ -0,0 +1,264 @@
<!--
* @Author: zhp
* @Date: 2023-07-18 10:25:03
* @LastEditTime: 2023-07-18 11:23:59
* @LastEditors: zhp
* @Description:
-->
<template>
<el-card shadow="never" class="aui-card--fill">
<div class="mod-sys__user">
<SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
</SearchBar>
<base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
: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">
<!-- <product-add ref="addOrUpdate" @refreshDataList="successSubmit"></product-add> -->
<!-- <el-row slot="footer" type="flex" justify="end"> </el-row> -->
</base-dialog>
<characterShow ref="characterShowList" v-if="characterShowList" @refreshDataList="getDataList">
</characterShow>
<!-- <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
@confirm="handleSearchConfirm" :before-close="handleSearchCancel">
<product-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit"></product-search>
<el-row slot="footer" type="flex" justify="end">
<el-col :span="12">
<el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
{{ $t("close") }}
</el-button>
<el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{ $t("reset")
}}</el-button>
<el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
{{ $t("search") }}
</el-button>
</el-col>
</el-row>
</base-dialog> -->
</div>
</el-card>
</template>
<script>
import basicPage from "@/mixins/basic-page";
// import basicSearch from "@/mixins/basic-search";
// import productSearch from "./components/productSearch.vue";
// import productAdd from "./components/product-add.vue";
import isHave from "./components/isHave.vue";
import characterShow from "./components/character-show.vue";
// import radio from "./components/radio.vue";
import i18n from "@/i18n";
// import i18n from "@/i18n";
const tableProps = [
{
prop: "productCode",
label: i18n.t('basic.code'),
},
{
prop: "productName",
label: i18n.t('basic.name'),
},
{
prop: "productSpecs",
label: i18n.t('basic.specification'),
},
{
prop: "productTypeName",
label: i18n.t('basic.productTypeName'),
},
// {
// prop: "detail",
// label: i18n.t('basic.InspectionStage'),
// subcomponent: radio,
// },
{
prop: "inspectionPlan",
label: i18n.t('quality.inspectionPlan'),
subcomponent: isHave,
},
];
const tableBtn = [
{
type: "characteristics",
btnName: i18n.t('code.characteristics'),
}
];
export default {
mixins: [basicPage],
data() {
return {
urlOptions: {
getDataListURL: "/basic/qmsProduct/page",
deleteURL: "/basic/qmsProduct",
exportURL: '/basic/qmsProduct/export',
getProductTypeURL: '/basic/qmsProductType/page'
},
tableProps,
tableBtn,
productData: {},
characterShowList:false,
searchOrEditTitle: "",
searchOrUpdateVisible: false,
productOrEditTitle: "",
addOrEditTitle: '',
addOrUpdateVisible: false,
productOrUpdateVisible: false,
formConfig: [
{
type: 'input',
label: i18n.t('basic.productCode'),
placeholder: i18n.t('basic.productCode'),
param: 'productName',
clearable: true
},
{
type: 'input',
label: i18n.t('basic.productName'),
placeholder: i18n.t('basic.productName'),
param: 'productCode',
clearable: true
},
{
type: 'input',
label: i18n.t('basic.specification'),
placeholder: i18n.t('basic.specification'),
param: 'productSpecs',
clearable: true
},
{
type: 'select',
label: i18n.t('code.inspectionPlan'),
placeholder: i18n.t('code.inspectionPlan'),
param: 'inspectionPlan',
selectOptions: [
{
id: '0',
name: '没有'
},
{
id: '1',
name: '有'
},
],
clearable: true,
filterable: true
},
{
type: 'select',
label: i18n.t('code.productType'),
placeholder: i18n.t('code.productType'),
param: 'productTypeId',
selectOptions: [],
clearable: true,
filterable: true
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
// plain: true,
}
],
};
},
components: {
// productAdd
characterShow
},
mounted () {
this.getDict()
},
methods: {
//search-bar
handleProductCancel() {
this.productOrUpdateVisible = false;
this.productOrEditTitle = "";
},
setCurrent(index) {
this.$refs.palletTable1.setCurrent("palletTable", index);
},
// handleSearchCancel() {
// this.searchOrEditTitle = "";
// this.searchOrUpdateVisible = false;
// },
conditionSearch() {
this.searchOrEditTitle = "搜索";
this.searchOrUpdateVisible = true;
this.$nextTick(() => {
this.$refs.searchOrUpdate.init()
});
},
// handleConfirm() {
// this.$refs.addOrUpdate.dataFormSubmitHandle();
// },
// conditionSearchSubmit() {},
// conditionSearchSubmit(dataForm) {
// // console.log(key);
// // console.log(key);
// this.listQuery.productName = dataForm.productName
// this.listQuery.productCode = dataForm.productCode
// this.listQuery.page = 1;
// this.getDataList()
// this.searchOrUpdateVisible = false;
// // console.log(11111);
// // this.conditionSearchSubmit();
// },
handleClick(val) {
if (val.type === 'characteristics') {
this.characterShowList = true
this.$nextTick(() => {
this.$refs.characterShowList.init(val.data.id)
})
}
},
getDict() {
this.$http
.get(this.urlOptions.getProductTypeURL, {
params: this.listQuery,
})
.then(({ data: res }) => {
if (res.code == 0) {
this.formConfig[4].selectOptions = res.data.list.map((item) => {
return {
id:item.id,
name: item.productTypeName,
}
})
}
})
},
buttonClick(val) {
console.log(val);
switch (val.btnName) {
case "search":
// this.listQuery.paramCode = val.paramCode;
this.listQuery.productName = val.productName ? val.productName : null
this.listQuery.productCode = val.productCode ? val.productCode : null
this.listQuery.productTypeId = val.productTypeId ? val.productTypeId : null
this.listQuery.productSpecs = val.productSpecs ? val.productSpecs : null
this.listQuery.inspectionPlan = val.inspectionPlan ? val.inspectionPlan : null
// console.log(i18n);
this.listQuery.page = 1;
this.getDataList();
break;
case "add":
this.addOrEditTitle = '新增'
this.addOrUpdateVisible = true
this.addOrUpdateHandle()
break;
default:
console.log(val);
}
},
},
};
</script>

View File

@ -0,0 +1,351 @@
<!--
* @Author: zhp
* @Date: 2023-07-18 10:25:03
* @LastEditTime: 2023-07-18 14:14:55
* @LastEditors: zhp
* @Description:
-->
<template>
<el-drawer title="特性" :visible.sync="drawer" size="70%">
<div class="mod-sys__user">
<SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick">
</SearchBar>
<base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1"
: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" />
<!-- 弹窗, 新增 / 修改 -->
<characterShowAdd ref="characterShowAddList" v-if="characterShowAddList" @refreshDataList="getDataList">
</characterShowAdd>
<!-- <base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel"
@confirm="handleSearchConfirm" :before-close="handleSearchCancel">
<product-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit"></product-search>
<el-row slot="footer" type="flex" justify="end">
<el-col :span="12">
<el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel">
{{ $t("close") }}
</el-button>
<el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{ $t("reset")
}}</el-button>
<el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
{{ $t("search") }}
</el-button>
</el-col>
</el-row>
</base-dialog> -->
</div>
</el-drawer>
</template>
<script>
import basicPage from "@/mixins/basic-page";
// import basicSearch from "@/mixins/basic-search";
// import productSearch from "./components/productSearch.vue";
import characterShowAdd from "./characterShow-add.vue";
import quality from '@/filters/quality'
import i18n from "@/i18n";
// import i18n from "@/i18n";
const tableProps = [
{
prop: "processName",
label: i18n.t('researchquality.processName'),
},
{
prop: "productName",
label: i18n.t('basic.productName'),
},
{
prop: "inspectionType",
label: i18n.t('quality.inspectionType'),
filter: quality('inspectionType')
},
{
prop: "parameterCode",
label: i18n.t('quality.parameterCode'),
},
{
prop: "parameterName",
label: i18n.t('quality.parameterName'),
},
{
prop: "measuringToolsType",
label: i18n.t('quality.measuringToolsType'),
},
{
prop: "specifications",
label: i18n.t('quality.specifications'),
},
{
prop: "characteristicsType",
label: i18n.t('quality.characteristicsType'),
filter: quality('characteristicsType')
},
{
prop: "source",
label: i18n.t('quality.source'),
},
{
prop: "company",
label: i18n.t('quality.company'),
},
{
prop: "sampleSize",
label: i18n.t('quality.sampleSize'),
},
{
prop: "decimalDigits",
label: i18n.t('quality.decimalDigits'),
},
{
prop: "monitor",
label: i18n.t('quality.monitor'),
filter: quality('monitor')
},
{
prop: "analyzeDrawings",
label: i18n.t('quality.analyzeDrawings'),
},
{
prop: "upperSpecificationLimit",
label: i18n.t('quality.upperSpecificationLimit'),
},
{
prop: "specificationCenterline",
label: i18n.t('quality.specificationCenterline'),
},
{
prop: "specificationOffline",
label: i18n.t('quality.specificationOffline'),
},
{
prop: "targetCpk",
label: i18n.t('quality.targetCpk'),
},
{
prop: "targetPpk",
label: i18n.t('quality.targetPpk'),
},
];
const tableBtn = [
{
type: "edit",
btnName: i18n.t('edit'),
},
{
type: "delete",
btnName: i18n.t('delete'),
}
];
export default {
mixins: [basicPage],
data() {
return {
urlOptions: {
getDataListURL: "/code/characteristics/page",
deleteURL: "/code/characteristics",
exportURL: '/code/characteristics/export',
// getProductTypeURL: '/basic/qmsProductType/page'
},
drawer:false,
tableProps,
characterShowAddList:false,
tableBtn,
productData: {},
searchOrEditTitle: "",
searchOrUpdateVisible: false,
productOrEditTitle: "",
addOrEditTitle: '',
addOrUpdateVisible: false,
productOrUpdateVisible: false,
formConfig: [
// {
// type: 'input',
// label: i18n.t('basic.productCode'),
// placeholder: i18n.t('basic.productCode'),
// param: 'name',
// clearable: true
// },
// {
// type: 'input',
// label: i18n.t('basic.productName'),
// placeholder: i18n.t('basic.productName'),
// param: 'code',
// clearable: true
// },
// {
// type: 'input',
// label: i18n.t('basic.specification'),
// placeholder: i18n.t('basic.specification'),
// param: 'code',
// clearable: true
// },
// {
// type: 'select',
// label: i18n.t('basic.inspectionPlan'),
// placeholder: i18n.t('basic.inspectionPlan'),
// param: 'code',
// selectOptions: [
// {
// id: '0',
// name: ''
// },
// {
// id: '1',
// name: ''
// },
// ],
// clearable: true,
// filterable: true
// },
// {
// type: 'select',
// label: i18n.t('code.productType'),
// placeholder: i18n.t('code.productType'),
// param: 'code',
// selectOptions: [],
// clearable: true,
// filterable: true
// },
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
// plain: true,
},
{
type: "button",
btnName: "新增",
name: "add",
color: "success",
plain: true
}
],
};
},
components: {
// productAdd
characterShowAdd
},
mounted() {
// this.getDict()
},
methods: {
//search-bar
handleProductCancel() {
this.productOrUpdateVisible = false;
this.productOrEditTitle = "";
},
// handleSearchCancel() {
// this.searchOrEditTitle = "";
// this.searchOrUpdateVisible = false;
// },
init(id) {
this.listQuery.productId = id || ""
// console.log(11111)
// this.dataForm.dictTypeId = dictTypeId || "";
this.drawer = true
this.$nextTick(() => {
// if (this.dataForm.id) {
this.getDataList()
// } else {
// this.getCode()
// }
});
},
conditionSearch() {
this.searchOrEditTitle = "搜索";
this.searchOrUpdateVisible = true;
this.$nextTick(() => {
this.$refs.searchOrUpdate.init()
});
},
// handleConfirm() {
// this.$refs.addOrUpdate.dataFormSubmitHandle();
// },
// conditionSearchSubmit() {},
conditionSearchSubmit(dataForm) {
// console.log(key);
// console.log(key);
this.listQuery.productName = dataForm.productName
this.listQuery.productCode = dataForm.productCode
this.listQuery.page = 1;
this.getDataList()
this.searchOrUpdateVisible = false;
// console.log(11111);
// this.conditionSearchSubmit();
},
handleClick(val) {
console.log(val);
if (val.type === "delete") {
this.$confirm(`确定对名称${val.data.productName}]进行删除操作?`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
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.characterShowAddList = true
const obj = {
productId: this.listQuery.productId,
id:val.data.id
}
this.$nextTick(() => {
this.$refs.characterShowAddList.init(obj)
});
}
},
// getDict() {
// this.$http
// .get(this.urlOptions.getProductTypeURL, {
// params: this.listQuery,
// })
// .then(({ data: res }) => {
// if (res.code == 0) {
// this.formConfig[4].selectOptions = res.data.list
// }
// })
// },
buttonClick(val) {
console.log(val);
switch (val.btnName) {
case "search":
this.listQuery.page = 1
this.getDataList()
break;
case "add":
this.characterShowAddList = true
const obj = {
productId:this.listQuery.productId
}
this.$nextTick(() => {
this.$refs.characterShowAddList.init(obj)
})
break;
default:
console.log(val);
}
},
},
};
</script>

View File

@ -0,0 +1,380 @@
<!--
* @Author: zhp
* @Date: 2023-07-14 13:44:46
* @LastEditTime: 2023-07-18 15:01:40
* @LastEditors: zhp
* @Description:
-->
<template>
<div>
<el-drawer close-on-press-escape :title="$t('add')" :append-to-body="true" :before-close="handleClose"
:visible.sync="innerDrawer">
<el-form :model="dataForm" ref="dataForm" :rules="dataRule" @keyup.enter.native="dataFormSubmitHandle()"
label-width="120px">
<el-form-item prop="productId" :label="$t('basic.productName')">
<el-select v-model="dataForm.productId" :placeholder="$t('basic.productName')">
<el-option v-for="item in productList" :key="item.id" :label="item.productName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="processId" :label="$t('researchquality.processName')">
<el-select v-model="dataForm.processId" :placeholder="$t('researchquality.processName')">
<el-option v-for="item in processList" :key="item.id" :label="item.processName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="measuringToolsType" :label="$t('quality.measuringToolsType')">
<el-select v-model="dataForm.measuringToolsType" :placeholder="$t('quality.measuringToolsType')">
<el-option v-for="item in gageTypeList" :key="item.id" :label="item.name" :value="item.name">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="monitor" :label="$t('quality.monitor')">
<el-select v-model="dataForm.monitor" :placeholder="$t('quality.monitor')">
<el-option v-for="item in monitorList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="characteristicsType" :label="$t('quality.characteristicsType')">
<el-select v-model="dataForm.characteristicsType" :placeholder="$t('quality.characteristicsType')">
<el-option v-for="item in characteristicsTypeList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="inspectionType" :label="$t('quality.inspectionType')">
<el-select v-model="dataForm.inspectionType" :placeholder="$t('quality.inspectionType')">
<el-option v-for="item in inspectionTypeList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="parameterCode" :label="$t('quality.parameterCode')">
<el-input v-model="dataForm.parameterCode" :placeholder="$t('quality.parameterCode')">
</el-input>
</el-form-item>
<el-form-item prop="parameterName" :label="$t('quality.parameterName')">
<el-input v-model="dataForm.parameterName" :placeholder="$t('quality.parameterName')">
</el-input>
</el-form-item>
<el-form-item prop="specifications" :label="$t('quality.specifications')">
<el-input v-model="dataForm.specifications" :placeholder="$t('quality.specifications')">
</el-input>
</el-form-item>
<el-form-item prop="source" :label="$t('quality.source')">
<el-input v-model="dataForm.source" :placeholder="$t('quality.source')">
</el-input>
</el-form-item>
<el-form-item prop="company" :label="$t('quality.company')">
<el-input v-model="dataForm.company" :placeholder="$t('quality.company')">
</el-input>
</el-form-item>
<el-form-item prop="decimalDigits" :label="$t('quality.decimalDigits')">
<el-input v-model="dataForm.decimalDigits" :placeholder="$t('quality.decimalDigits')">
</el-input>
</el-form-item>
<el-form-item prop="sampleSize" :label="$t('quality.sampleSize')">
<el-input v-model="dataForm.sampleSize" :placeholder="$t('quality.sampleSize')">
</el-input>
</el-form-item>
<el-form-item prop="analyzeDrawings" :label="$t('quality.analyzeDrawings')">
<el-input v-model="dataForm.analyzeDrawings" :placeholder="$t('quality.analyzeDrawings')">
</el-input>
</el-form-item>
<el-form-item prop="upperSpecificationLimit" :label="$t('quality.upperSpecificationLimit')">
<el-input v-model="dataForm.upperSpecificationLimit" :placeholder="$t('quality.upperSpecificationLimit')">
</el-input>
</el-form-item>
<el-form-item prop="specificationCenterline" :label="$t('quality.specificationCenterline')">
<el-input v-model="dataForm.specificationCenterline" :placeholder="$t('quality.specificationCenterline')">
</el-input>
</el-form-item>
<el-form-item prop="specificationOffline" :label="$t('quality.specificationOffline')">
<el-input v-model="dataForm.specificationOffline" :placeholder="$t('quality.specificationOffline')">
</el-input>
</el-form-item>
<el-form-item prop="targetCpk" :label="$t('quality.targetCpk')">
<el-input v-model="dataForm.targetCpk" :placeholder="$t('quality.targetCpk')">
</el-input>
</el-form-item>
<el-form-item prop="targetPpk" :label="$t('quality.targetPpk')">
<el-input v-model="dataForm.targetPpk" :placeholder="$t('quality.targetPpk')">
</el-input>
</el-form-item>
<el-form-item>
<el-button @click="innerDrawer = false">{{ $t('cancel') }} </el-button>
<el-button type="primary" @click="dataFormSubmit"> {{ $t('confirm') }}</el-button>
</el-form-item>
</el-form>
</el-drawer>
</div>
</template>
<script>
import i18n from "@/i18n"
import basicAdd from "@/mixins/basic-add"
import debounce from "lodash/debounce"
export default {
mixins: [basicAdd],
data() {
return {
urlOptions: {
submitURL: "/code/characteristics",
getDictDataDetail: '/mutual/qmsDataDictionaryDetail/page',
getProductListURL: '/basic/qmsProduct/page',
getProcessURL: '/basic/qmsProcess/page',
getGageTypeURL: "/gage/qmsGageType/page",
},
monitorList: [
{
value: 0,
label: '否'
},
{
value: 1,
label: '是'
},
],
characteristicsTypeList: [
{
value: 0,
label: '计量'
},
{
value: 1,
label: '计数'
},
],
inspectionTypeList: [{
value: 0,
label: '监控'
},
{
value: 1,
label: '电芯来料检验'
},
{
value: 2,
label: 'IQC抽检'
},
{
value: 3,
label: 'IQC抽检2'
},
{
value: 4,
label: '原料抽检'
},
{
value: 5,
label: '进货外观检验'
},
{
value: 6,
label: '库内原料检验'
},
{
value: 7,
label: '来料检验'
},
{
value: 8,
label: '胶片'
},
{
value: 9,
label: '抽检'
},
{
value: 10,
label: '巡检'
}, {
value: 11,
label: '首检'
},
{
value: 12,
label: '末检'
},
{
value: 13,
label: '实时监测'
},
{
value: 14,
label: 'FQC抽检'
},
{
value: 15,
label: 'OQC抽检'
},
],
processList: [],
productList: [],
gageTypeList:[],
dataForm: {
analyzeDrawings:null,
characteristicsType: null,
company: null,
decimalDigits: null,
id: null,
inspectionType: null,
measuringToolsType: null,
monitor: null,
parameterName: null,
parameterCode: null,
processId: null,
productId: null,
remark: null,
sampleSize: null,
serialNo: null,
source: null,
specificationCenterline: null,
specificationOffline: null,
specifications: null,
targetCpk: null,
targetPpk: null,
upperSpecificationLimit: null,
},
innerDrawer: false,
listQuery: {
limit: 10,
page:1,
},
categoryList:[],
requirementList: [],
knowledgeBaseList:[],
}
},
computed: {
dataRule() {
return {
productId: [
{
required: true,
message: this.$t("validate.required"),
trigger: "change",
},
],
parameterCode: [
{
required: true,
message: this.$t("validate.required"),
trigger: "blur",
},
],
parameterName: [
{
required: true,
message: this.$t("validate.required"),
trigger: "blur",
},
]
};
},
},
mounted () {
this.getDict()
// this.getAccessPath()
},
methods: {
init(obj) {
this.dataForm.productId = obj.productId || ''
this.dataForm.id = obj.id || ''
this.innerDrawer = true
this.$nextTick(() => {
this.$refs["dataForm"].resetFields()
if (this.dataForm.id) {
this.getInfo()
} else {
// this.getCode()
}
})
},
handleClose() {
this.innerDrawer = true
this.$refs.dataForm.resetFields()
},
getDict() {
this.$http
.get(this.urlOptions.getProductListURL, {
params: {
limit: 999,
page: 1,
}
})
.then(({ data: res }) => {
if (res.code === 0) {
this.productList = res.data.list
}
})
this.$http
.get(this.urlOptions.getProcessURL, {
params: {
limit: 999,
page: 1,
}
})
.then(({ data: res }) => {
if (res.code === 0) {
this.processList = res.data.list
}
})
this.$http
.get(this.urlOptions.getGageTypeURL, {
params: {
limit: 999,
page: 1,
}
})
.then(({ data: res }) => {
if (res.code === 0) {
this.gageTypeList = res.data.list
}
})
},
getInfo() {
this.$http
.get(`/code/characteristics/${this.dataForm.id}`)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.dataForm = {
...this.dataForm,
...res.data,
};
})
.catch(() => { });
},
//
dataFormSubmit() {
this.$refs["dataForm"].validate((valid) => {
if (!valid) {
return false;
}
this.$http[!this.dataForm.id ? "post" : "put"](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.innerDrawer = false;
this.$emit("refreshDataList");
},
});
})
.catch(() => { });
});
},
},
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -0,0 +1,42 @@
<!--
* @Author: zhp
* @Date: 2023-01-31 09:49:36
* @LastEditTime: 2023-07-18 10:28:40
* @LastEditors: zhp
* @Description:
-->
<template>
<span>
<el-tag v-if="injectData.inspectionPlan === 1" type="success"></el-tag>
<el-tag v-else type="warning">没有</el-tag>
</span>
</template>
<script>
// import { addDynamicRoute } from '@/router'
export default {
props: {
injectData: {
type: Object,
default: () => ({})
}
},
methods: {
//
// emitClick () {
// //
// const routeParams = {
// routeName: `${this.$route.name}__${this.injectData.id}`,
// title: `${this.$route.meta.title} - ${this.injectData.dictType}`,
// path: 'sys/dict-data',
// params: {
// dictTypeId: this.injectData.id
// }
// }
// //
// addDynamicRoute(routeParams, this.$router)
// }
}
}
</script>

View File

@ -0,0 +1,130 @@
<!--
* @Author: zhp
* @Date: 2023-02-21 14:44:31
* @LastEditTime: 2023-04-04 14:39:49
* @LastEditors: zhp
* @Description:
-->
<template>
<el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="120px">
<el-form-item prop="productCode" :label="$t('basic.code')">
<el-input v-model="dataForm.productCode" :placeholder="$t('basic.code')" clearable></el-input>
</el-form-item>
<el-form-item prop="productName" :label="$t('basic.name')">
<el-input v-model="dataForm.productName" :placeholder="$t('basic.name')" clearable></el-input>
</el-form-item>
</el-form>
</template>
<script>
import debounce from "lodash/debounce";
import basicAdd from "@/mixins/basic-add";
export default {
mixins: [basicAdd],
data() {
return {
// urlOptions: {
// submitURL: "/sys/params/",
// infoURL: "/sys/params",
// },
visible: false,
options: [{
value: '0',
label: '不可用'
},
{
value: '1',
label: '可用'
}],
dataForm: {
productName: null,
productCode: null
},
};
},
computed: {
// dataRule() {
// return {
// paramCode: [
// {
// required: true,
// message: this.$t("validate.required"),
// trigger: "blur",
// },
// ],
// paramValue: [
// {
// required: true,
// message: this.$t("validate.required"),
// trigger: "blur",
// },
// ],
// };
// },
},
methods: {
// init(id) {
// this.dataForm.id = id || "";
// this.visible = true;
// this.$nextTick(() => {
// this.$refs["dataForm"].resetFields();
// if (this.dataForm.id) {
// this.getInfo();
// }
// });
// },
//
// getInfo() {
// this.$http
// .get(`/sys/params/${this.dataForm.id}`)
// .then(({ data: res }) => {
// if (res.code !== 0) {
// return this.$message.error(res.msg);
// }
// this.dataForm = {
// ...this.dataForm,
// ...res.data,
// };
// })
// .catch(() => {});
// },
//
handleConditionSearch() {
this.$emit("successSubmit", this.dataForm);
},
// dataFormSubmitHandle: debounce(
// function () {
// // console.log(1111);
// // this.visible = false;
// this.$emit("successSubmit", this.dataForm.key);
// // this.$refs["dataForm"].validate((valid) => {
// // if (!valid) {
// // return false;
// // }
// // this.$http[!this.dataForm.id ? "post" : "put"](
// // "/sys/params",
// // 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: () => {
// // },
// // });
// // })
// // .catch(() => {});
// // });
// },
// 1000,
// { leading: true, trailing: false }
// ),
},
};
</script>

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-07-12 14:30:40
* @LastEditTime: 2023-07-18 10:20:59
* @LastEditors: zhp
* @Description:
-->
@ -185,18 +185,18 @@ export default {
param: 'customSamplingCode',
clearable: true
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
},
{
type: "button",
btnName: "新增",
name: "add",
color: "success",
plain: true
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
}
],
};

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-07-11 15:38:25
* @LastEditTime: 2023-07-18 10:21:09
* @LastEditors: zhp
* @Description:
-->
@ -129,17 +129,17 @@ export default {
},
{
type: "button",
btnName: "新增",
name: "add",
color: 'success',
plain: true
btnName: "搜索",
name: "search",
color: "primary",
// plain: true,
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
btnName: "新增",
name: "add",
color: 'success',
plain: true
// plain: true,
}
],

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-07-12 14:43:09
* @LastEditTime: 2023-07-18 10:21:26
* @LastEditors: zhp
* @Description:
-->
@ -114,18 +114,18 @@ export default {
param: 'name',
clearable: true
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
},
{
type: "button",
btnName: "新增",
name: "add",
color: "success",
plain: true
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
}
],
};

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-07-12 14:22:56
* @LastEditTime: 2023-07-18 10:21:38
* @LastEditors: zhp
* @Description:
-->
@ -218,17 +218,17 @@ export default {
},
{
type: "button",
btnName: "新增",
name: "add",
color: 'success',
plain: true
btnName: "搜索",
name: "search",
color: "primary",
// plain: true,
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
btnName: "新增",
name: "add",
color: 'success',
plain: true
// plain: true,
}
],

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-07-12 14:30:03
* @LastEditTime: 2023-07-18 10:21:47
* @LastEditors: zhp
* @Description:
-->
@ -129,18 +129,18 @@ export default {
// {
// type: "separate",
// },
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
},
{
type: "button",
btnName: "新增",
name: "add",
color: "success",
plain: true
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
}
],
};

View File

@ -1,7 +1,7 @@
<!--
* @Author: zhp
* @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-07-12 14:32:41
* @LastEditTime: 2023-07-18 10:21:55
* @LastEditors: zhp
* @Description:
-->
@ -137,18 +137,18 @@ export default {
param: 'code',
clearable: true
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
},
{
type: "button",
btnName: "新增",
name: "add",
color: "success",
plain: true
},
{
type: "button",
btnName: "搜索",
name: "search",
color: "primary",
}
],
};