Merge branch 'master' into zhp

This commit is contained in:
‘937886381’ 2023-07-17 17:00:50 +08:00
commit f002123cf5
40 changed files with 2025 additions and 667 deletions

View File

@ -15,7 +15,7 @@
"axios": "^0.19.2", "axios": "^0.19.2",
"babel-eslint": "^8.0.1", "babel-eslint": "^8.0.1",
"babel-plugin-component": "^1.1.1", "babel-plugin-component": "^1.1.1",
"code-brick-zj": "0.0.7", "code-brick-zj": "1.0.2",
"core-js": "^3.6.5", "core-js": "^3.6.5",
"echarts": "^5.4.2", "echarts": "^5.4.2",
"element-theme": "^2.0.1", "element-theme": "^2.0.1",

View File

@ -18,6 +18,10 @@ const table = {
1: '需要审批', 1: '需要审批',
0: '不需要审批', 0: '不需要审批',
}, },
gradeFinish: {
1: '已打分',
0: '未打分',
},
step: { step: {
0: 'D0', 0: 'D0',
1: 'D1', 1: 'D1',

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2022-08-22 14:57:51 * @Date: 2022-08-22 14:57:51
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-05-12 12:46:50 * @LastEditTime: 2023-07-14 15:53:17
* @Description: * @Description:
--> -->
<template> <template>
@ -39,7 +39,8 @@
<use xlink:href="#icon-home"></use> <use xlink:href="#icon-home"></use>
</svg> </svg>
</el-menu-item> </el-menu-item>
<el-menu-item index="7"> <!-- 中英文 -->
<!-- <el-menu-item index="7">
<el-dropdown trigger="click" class="international" @command="handleSetLanguage"> <el-dropdown trigger="click" class="international" @command="handleSetLanguage">
<div> <div>
<svg class="icon-svg aui-navbar__icon-menu" aria-hidden="true"> <svg class="icon-svg aui-navbar__icon-menu" aria-hidden="true">
@ -55,7 +56,7 @@
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</el-menu-item> </el-menu-item> -->
<el-menu-item index="4" @click="fullscreenHandle()"> <el-menu-item index="4" @click="fullscreenHandle()">
<svg class="icon-svg aui-navbar__icon-menu" aria-hidden="true"> <svg class="icon-svg aui-navbar__icon-menu" aria-hidden="true">
<use xlink:href="#icon-fullscreen"></use> <use xlink:href="#icon-fullscreen"></use>

View File

@ -1,15 +1,20 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-02-14 15:02:26 * @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-07-14 10:17:44 * @LastEditTime: 2023-07-17 10:21:47
* @LastEditors: zwq * @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"
:rules="dataRule"
@keyup.enter.native="dataFormSubmitHandle()"
label-width="130px"
>
<el-form-item prop="name" :label="$t('code.name')"> <el-form-item prop="name" :label="$t('code.name')">
<el-input v-model="dataForm.name" :placeholder="$t('code.name')"> <el-input v-model="dataForm.name" :placeholder="$t('code.name')"> </el-input>
</el-input>
</el-form-item> </el-form-item>
<el-form-item prop="code" :label="$t('code.code')"> <el-form-item prop="code" :label="$t('code.code')">
<el-input v-model="dataForm.code" :placeholder="$t('code.code')"></el-input> <el-input v-model="dataForm.code" :placeholder="$t('code.code')"></el-input>
@ -19,8 +24,16 @@
</el-switch> </el-switch>
</el-form-item> </el-form-item>
<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" :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>
@ -36,36 +49,38 @@ export default {
return { return {
urlOptions: { urlOptions: {
submitURL: "/code/eightDiscipline", submitURL: "/code/eightDiscipline",
infoURL: "/code/eightDiscipline" infoURL: "/code/eightDiscipline",
}, },
options: [{ options: [
{
value: 0, value: 0,
label: '不可用' label: "不可用",
}, },
{ {
value: 1, value: 1,
label: '可用' label: "可用",
}], },
],
eightDisciplineTypeList: [ eightDisciplineTypeList: [
{ {
value: '0', value: "0",
label: '重复发生问题 ' label: "重复发生问题 ",
}, },
{ {
value: '1', value: "1",
label: '客诉问题' label: "客诉问题",
}, },
{ {
value: '2', value: "2",
label: '重大质量问题' label: "重大质量问题",
} },
], ],
visible: false, visible: false,
dataForm: { dataForm: {
id: null, id: null,
name: null, name: null,
code:null, code: null,
eightDisciplineType:null, eightDisciplineType: null,
eightDisciplineStatus: 0, eightDisciplineStatus: 0,
}, },
}; };
@ -73,40 +88,33 @@ export default {
computed: { computed: {
dataRule() { dataRule() {
return { return {
// dictLabel: [ code: [
// { {
// required: true, required: true,
// message: this.$t("validate.required"), message: "请输入编码",
// trigger: "blur", trigger: "blur",
// }, },
// ], ],
// dictValue: [ name: [
// { {
// required: true, required: true,
// message: this.$t("validate.required"), message: "请输入名称",
// trigger: "blur", trigger: "blur",
// }, },
// ], ],
// sort: [
// {
// required: true,
// message: this.$t("validate.required"),
// trigger: "blur",
// },
// ],
}; };
}, },
}, },
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 {
// this.getCode() // this.getCode()
} }

View File

@ -1,15 +1,20 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-02-14 15:02:26 * @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-07-14 13:41:37 * @LastEditTime: 2023-07-17 10:23:23
* @LastEditors: zwq * @LastEditors: zwq
* @Description: * @Description:
--> -->
<template> <template>
<el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="130px"> <el-form
:model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
label-width="130px"
>
<el-form-item prop="name" :label="$t('code.name')"> <el-form-item prop="name" :label="$t('code.name')">
<el-input v-model="dataForm.name" :placeholder="$t('code.name')"> <el-input v-model="dataForm.name" :placeholder="$t('code.name')"> </el-input>
</el-input>
</el-form-item> </el-form-item>
<el-form-item prop="code" :label="$t('code.code')"> <el-form-item prop="code" :label="$t('code.code')">
<el-input v-model="dataForm.code" :placeholder="$t('code.code')"></el-input> <el-input v-model="dataForm.code" :placeholder="$t('code.code')"></el-input>
@ -22,24 +27,24 @@
<el-input v-model="dataForm.description" placeholder="描述"></el-input> <el-input v-model="dataForm.description" placeholder="描述"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
<script> <script>
import basicAdd from "@/mixins/basic-add"; import basicAdd from "@/mixins/basic-add";
export default { export default {
mixins: [basicAdd], mixins: [basicAdd],
data() { data() {
return { return {
urlOptions: { urlOptions: {
submitURL: "/code/problemType", submitURL: "/code/problemType",
infoURL: "/code/problemType" infoURL: "/code/problemType",
}, },
visible: false, visible: false,
dataForm: { dataForm: {
id: null, id: null,
name: null, name: null,
code:null, code: null,
description:null, description: null,
problemStatus: 0, problemStatus: 0,
}, },
}; };
@ -47,32 +52,23 @@
computed: { computed: {
dataRule() { dataRule() {
return { return {
// dictLabel: [ code: [
// { {
// required: true, required: true,
// message: this.$t("validate.required"), message: "请输入编码",
// trigger: "blur", trigger: "blur",
// }, },
// ], ],
// dictValue: [ name: [
// { {
// required: true, required: true,
// message: this.$t("validate.required"), message: "请输入名称",
// trigger: "blur", trigger: "blur",
// }, },
// ], ],
// sort: [
// {
// required: true,
// message: this.$t("validate.required"),
// trigger: "blur",
// },
// ],
}; };
}, },
}, },
methods: { methods: {},
} };
}; </script>
</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-07-14 10:20:02 * @LastEditTime: 2023-07-17 10:27:00
* @LastEditors: zwq * @LastEditors: zwq
* @Description: * @Description:
--> -->
@ -9,6 +9,7 @@
<el-form <el-form
:model="dataForm" :model="dataForm"
ref="dataForm" ref="dataForm"
:rules="dataRule"
@keyup.enter.native="dataFormSubmitHandle()" @keyup.enter.native="dataFormSubmitHandle()"
label-width="100px" label-width="100px"
> >
@ -271,7 +272,7 @@ export default {
}, },
{ {
value: '1', value: '1',
label: "1客诉问题", label: "客诉问题",
}, },
{ {
value: '2', value: '2',
@ -317,27 +318,48 @@ export default {
computed: { computed: {
dataRule() { dataRule() {
return { return {
// dictLabel: [ code: [
// { {
// required: true, required: true,
// message: this.$t("validate.required"), message: "请输入编码",
// trigger: "blur", trigger: "blur",
// }, },
// ], ],
// dictValue: [ title: [
// { {
// required: true, required: true,
// message: this.$t("validate.required"), message: "请输入标题",
// trigger: "blur", trigger: "blur",
// }, },
// ], ],
// sort: [ eightDisciplineType: [
// { {
// required: true, required: true,
// message: this.$t("validate.required"), message: "请选择8D类型",
// trigger: "blur", trigger: "change",
// }, },
// ], ],
defectSourceId: [
{
required: true,
message: "请选择缺陷来源",
trigger: "change",
},
],
occurrenceDate: [
{
required: true,
message: "请选择发生日期",
trigger: "change",
},
],
product: [
{
required: true,
message: "请选择产品",
trigger: "change",
},
],
}; };
}, },
}, },

View File

@ -2,11 +2,17 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-06-29 14:12:48 * @Date: 2023-06-29 14:12:48
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-06-30 10:58:16 * @LastEditTime: 2023-07-17 13:30:04
* @Description: * @Description:
--> -->
<template> <template>
<base-table border show-summary :table-props="tableProps" :table-data="tableData" @emitFun="inputChange" /> <base-table
border
show-summary
:table-props="tableProps"
:table-data="tableData"
@emitFun="inputChange"
/>
</template> </template>
<script> <script>
@ -134,7 +140,7 @@ export default {
if (this.tableData[data._pageIndex - 1].gradeStatus) { if (this.tableData[data._pageIndex - 1].gradeStatus) {
this.$set( this.$set(
this.tableData[data._pageIndex - 1], this.tableData[data._pageIndex - 1],
'grade', "grade",
this.score[this.tableData[data._pageIndex - 1].gradeStatus - 1] this.score[this.tableData[data._pageIndex - 1].gradeStatus - 1]
); );
} }
@ -149,8 +155,17 @@ export default {
this.tableData.forEach((item) => { this.tableData.forEach((item) => {
item.startEightDisciplineId = this.id; item.startEightDisciplineId = this.id;
}); });
this.$http.post("/code/startEightGrade/save/list", this.tableData) let putData = {
.then(({ data: res }) => { gradeFinish: 1,
id: this.id,
};
this.$http.put("/code/startEightDiscipline", putData).then(({ data }) => {
if (data && data.code === 0) {
} else {
this.$message.error(data.msg);
}
});
this.$http.post("/code/startEightGrade/save/list", this.tableData).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,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-07-14 14:06:53 * @LastEditTime: 2023-07-17 09:08:38
* @LastEditors: zwq * @LastEditors: zwq
* @Description: * @Description:
--> -->
@ -9,9 +9,6 @@
<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="3" class="item">
<el-button type="primary" size="small" @click="searchsClick">条件搜索</el-button>
</el-badge>
</SearchBar> </SearchBar>
<base-table <base-table
:table-props="tableProps" :table-props="tableProps"
@ -35,7 +32,7 @@
@pagination="getDataList" @pagination="getDataList"
/> />
<!-- 弹窗, 条件搜索--> <!-- 弹窗, 条件搜索-->
<base-dialog <!-- <base-dialog
:dialogTitle="searchsTitle" :dialogTitle="searchsTitle"
:dialogVisible="searchsVisible" :dialogVisible="searchsVisible"
@cancel="searchsCancel" @cancel="searchsCancel"
@ -43,7 +40,7 @@
:before-close="searchsCancel" :before-close="searchsCancel"
> >
<searchs ref="searchsRef" @refreshDataList="searchsSubmit"></searchs> <searchs ref="searchsRef" @refreshDataList="searchsSubmit"></searchs>
</base-dialog> </base-dialog> -->
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog <base-dialog
:dialogTitle="addOrEditTitle" :dialogTitle="addOrEditTitle"
@ -64,7 +61,7 @@
import basicPage from "@/mixins/basic-page"; import basicPage from "@/mixins/basic-page";
import eightDisciplineAdd from "./components/eightDiscipline-add"; import eightDisciplineAdd from "./components/eightDiscipline-add";
import available from "./components/available.vue"; import available from "./components/available.vue";
import Searchs from "./components/eightDiscipline-searchs"; // import Searchs from "./components/eightDiscipline-searchs";
import codeFilter from "@/filters/code-filter"; import codeFilter from "@/filters/code-filter";
import i18n from "@/i18n"; import i18n from "@/i18n";
const tableProps = [ const tableProps = [
@ -105,7 +102,7 @@ export default {
mixins: [basicPage], mixins: [basicPage],
components: { components: {
eightDisciplineAdd, eightDisciplineAdd,
Searchs // Searchs,
}, },
data() { data() {
return { return {
@ -117,10 +114,26 @@ export default {
tableBtn, tableBtn,
formConfig: [ formConfig: [
{ {
type: "button", type: "input",
btnName: "新增", label: i18n.t("code.name"),
name: "add", placeholder: i18n.t("code.name"),
color: "primary", param: "name",
},
{
type: "input",
label: i18n.t("code.code"),
placeholder: i18n.t("code.code"),
param: "code",
},
{
type: "select",
label: i18n.t('code.eightDisciplineStatus'),
selectOptions: [
{ id: 1, name: "可用" },
{ id: 0, name: "不可用" },
],
param: "eightDisciplineStatus",
defaultSelect: "",
}, },
{ {
type: "button", type: "button",
@ -128,6 +141,12 @@ export default {
name: "search", name: "search",
color: "primary", color: "primary",
}, },
{
type: "button",
btnName: "新增",
name: "add",
color: "primary",
},
], ],
}; };
}, },
@ -142,9 +161,9 @@ 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.code = val.code;
this.listQuery.name = null; this.listQuery.name = val.name;
this.listQuery.eightDisciplineStatus = null; this.listQuery.eightDisciplineStatus = val.eightDisciplineStatus;
this.getDataList(); this.getDataList();
break; break;
case "add": case "add":

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-07-14 10:15:45 * @LastEditTime: 2023-07-17 10:38:22
* @LastEditors: zwq * @LastEditors: zwq
* @Description: * @Description:
--> -->
@ -66,20 +66,20 @@ const tableProps = [
align: 'center' align: 'center'
}, },
{ {
prop: 'userId', prop: 'userName',
label: i18n.t("code.userId"), label: i18n.t("code.userId"),
align: 'center' align: 'center'
} }
] ]
const tableBtn = [ const tableBtn = [
{ // {
type: "edit", // type: "edit",
btnName: "编辑", // btnName: "",
}, // },
{ // {
type: "delete", // type: "delete",
btnName: "删除", // btnName: "",
}, // },
{ {
type: "approve", type: "approve",
btnName: "审批", btnName: "审批",

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-07-14 10:16:41 * @LastEditTime: 2023-07-17 10:39:16
* @LastEditors: zwq * @LastEditors: zwq
* @Description: * @Description:
--> -->
@ -96,20 +96,20 @@ const tableProps = [
align: "center", align: "center",
}, },
{ {
prop: "userId", prop: 'userName',
label: i18n.t("code.userId"), label: i18n.t("code.userId"),
align: "center", align: "center",
}, },
]; ];
const tableBtn = [ const tableBtn = [
{ // {
type: "edit", // type: "edit",
btnName: "编辑", // btnName: "",
}, // },
{ // {
type: "delete", // type: "delete",
btnName: "删除", // btnName: "",
}, // },
{ {
type: "team", type: "team",
btnName: "团队", btnName: "团队",

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-07-14 10:16:46 * @LastEditTime: 2023-07-17 10:38:45
* @LastEditors: zwq * @LastEditors: zwq
* @Description: * @Description:
--> -->
@ -84,20 +84,20 @@ const tableProps = [
align: 'center' align: 'center'
}, },
{ {
prop: 'userId', prop: 'userName',
label: i18n.t("code.userId"), label: i18n.t("code.userId"),
align: 'center' align: 'center'
} }
] ]
const tableBtn = [ const tableBtn = [
{ // {
type: "edit", // type: "edit",
btnName: "编辑", // btnName: "",
}, // },
{ // {
type: "delete", // type: "delete",
btnName: "删除", // btnName: "",
}, // },
{ {
type: "corrective", type: "corrective",
btnName: "纠正", btnName: "纠正",

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-07-14 10:16:53 * @LastEditTime: 2023-07-17 10:39:03
* @LastEditors: zwq * @LastEditors: zwq
* @Description: * @Description:
--> -->
@ -82,7 +82,7 @@ const tableProps = [
align: 'center' align: 'center'
}, },
{ {
prop: 'userId', prop: 'userName',
label: i18n.t("code.userId"), label: i18n.t("code.userId"),
align: 'center' align: 'center'
} }
@ -92,10 +92,10 @@ const tableBtn = [
// type: "edit", // type: "edit",
// btnName: "", // btnName: "",
// }, // },
{ // {
type: "delete", // type: "delete",
btnName: "删除", // btnName: "",
}, // },
{ {
type: "analysis", type: "analysis",
btnName: "分析", btnName: "分析",

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-07-14 10:16:58 * @LastEditTime: 2023-07-17 10:38:34
* @LastEditors: zwq * @LastEditors: zwq
* @Description: * @Description:
--> -->
@ -84,20 +84,20 @@ const tableProps = [
align: 'center' align: 'center'
}, },
{ {
prop: 'userId', prop: 'userName',
label: i18n.t("code.userId"), label: i18n.t("code.userId"),
align: 'center' align: 'center'
} }
] ]
const tableBtn = [ const tableBtn = [
{ // {
type: "edit", // type: "edit",
btnName: "编辑", // btnName: "",
}, // },
{ // {
type: "delete", // type: "delete",
btnName: "删除", // btnName: "",
}, // },
{ {
type: "prevent", type: "prevent",
btnName: "预防", btnName: "预防",

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-30 09:21:25 * @LastEditTime: 2023-07-17 10:38:50
* @LastEditors: zwq * @LastEditors: zwq
* @Description: * @Description:
--> -->
@ -83,20 +83,20 @@ const tableProps = [
align: 'center' align: 'center'
}, },
{ {
prop: 'userId', prop: 'userName',
label: i18n.t("code.userId"), label: i18n.t("code.userId"),
align: 'center' align: 'center'
} }
] ]
const tableBtn = [ const tableBtn = [
{ // {
type: "edit", // type: "edit",
btnName: "编辑", // btnName: "",
}, // },
{ // {
type: "delete", // type: "delete",
btnName: "删除", // btnName: "",
}, // },
{ {
type: "analysis", type: "analysis",
btnName: "分析", btnName: "分析",

View File

@ -2,7 +2,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-01-11 09:24:58 * @Date: 2023-01-11 09:24:58
* @LastEditTime: 2023-06-30 09:37:58 * @LastEditTime: 2023-07-17 10:38:29
* @LastEditors: zwq * @LastEditors: zwq
* @Description: * @Description:
--> -->
@ -84,20 +84,20 @@ const tableProps = [
align: 'center' align: 'center'
}, },
{ {
prop: 'userId', prop: 'userName',
label: i18n.t("code.userId"), label: i18n.t("code.userId"),
align: 'center' align: 'center'
} }
] ]
const tableBtn = [ const tableBtn = [
{ // {
type: "edit", // type: "edit",
btnName: "编辑", // btnName: "",
}, // },
{ // {
type: "delete", // type: "delete",
btnName: "删除", // btnName: "",
}, // },
{ {
type: "summary", type: "summary",
btnName: "总结", btnName: "总结",

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-07-14 10:17:04 * @LastEditTime: 2023-07-17 10:39:25
* @LastEditors: zwq * @LastEditors: zwq
* @Description: * @Description:
--> -->
@ -89,20 +89,20 @@ const tableProps = [
align: 'center' align: 'center'
}, },
{ {
prop: 'userId', prop: 'userName',
label: i18n.t("code.userId"), label: i18n.t("code.userId"),
align: 'center' align: 'center'
} }
] ]
const tableBtn = [ const tableBtn = [
{ // {
type: "edit", // type: "edit",
btnName: "编辑", // btnName: "",
}, // },
{ // {
type: "delete", // type: "delete",
btnName: "删除", // btnName: "",
}, // },
{ {
type: "measure", type: "measure",
btnName: "措施", btnName: "措施",

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-30 09:31:04 * @LastEditTime: 2023-07-17 10:38:40
* @LastEditors: zwq * @LastEditors: zwq
* @Description: * @Description:
--> -->
@ -83,20 +83,20 @@ const tableProps = [
align: 'center' align: 'center'
}, },
{ {
prop: 'userId', prop: 'userName',
label: i18n.t("code.userId"), label: i18n.t("code.userId"),
align: 'center' align: 'center'
} }
] ]
const tableBtn = [ const tableBtn = [
{ // {
type: "edit", // type: "edit",
btnName: "编辑", // btnName: "",
}, // },
{ // {
type: "delete", // type: "delete",
btnName: "删除", // btnName: "",
}, // },
{ {
type: "validation", type: "validation",
btnName: "验证", btnName: "验证",

View File

@ -1,7 +1,7 @@
<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">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" /> <!-- <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" /> -->
<base-table <base-table
:table-props="tableProps" :table-props="tableProps"
:page="listQuery.page" :page="listQuery.page"
@ -73,10 +73,10 @@ const tableProps = [
align: "center", align: "center",
}, },
{ {
prop: "examineStatus", prop: "gradeFinish",
label: i18n.t("code.examineStatus"), label: "打分状态",
align: "center", align: "center",
filter: codeFilter("examineStatus"), filter: codeFilter("gradeFinish"),
}, },
]; ];
const tableBtn = [ const tableBtn = [
@ -130,9 +130,16 @@ export default {
} }
}, },
otherMethods(val) { otherMethods(val) {
if(val.data.gradeFinish){
this.$message({
message: '该数据已完成打分操作,请勿重复打分!',
type: 'warning'
});
}else{
this.addOrEditTitle = "打分"; this.addOrEditTitle = "打分";
this.addOrUpdateVisible = true; this.addOrUpdateVisible = true;
this.addOrUpdateHandle(val.data.id); this.addOrUpdateHandle(val.data.id);
}
}, },
}, },
}; };

View File

@ -1,11 +1,7 @@
<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">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick"> <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 <base-table
:table-props="tableProps" :table-props="tableProps"
:page="listQuery.page" :page="listQuery.page"
@ -28,7 +24,7 @@
@pagination="getDataList" @pagination="getDataList"
/> />
<!-- 弹窗, 条件搜索--> <!-- 弹窗, 条件搜索-->
<base-dialog <!-- <base-dialog
:dialogTitle="searchsTitle" :dialogTitle="searchsTitle"
:dialogVisible="searchsVisible" :dialogVisible="searchsVisible"
@cancel="searchsCancel" @cancel="searchsCancel"
@ -36,7 +32,7 @@
:before-close="searchsCancel" :before-close="searchsCancel"
> >
<searchs ref="searchsRef" @refreshDataList="searchsSubmit"></searchs> <searchs ref="searchsRef" @refreshDataList="searchsSubmit"></searchs>
</base-dialog> </base-dialog> -->
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog <base-dialog
:dialogTitle="addOrEditTitle" :dialogTitle="addOrEditTitle"
@ -54,7 +50,7 @@
<script> <script>
import AddOrUpdate from "./components/eightDisciplineList-detail"; import AddOrUpdate from "./components/eightDisciplineList-detail";
import Searchs from "./components/searchs1"; // import Searchs from "./components/searchs1";
import basicPage from "@/mixins/basic-page"; import basicPage from "@/mixins/basic-page";
import codeFilter from "@/filters/code-filter"; import codeFilter from "@/filters/code-filter";
import { timeFormatter } from "@/filters/code-filter"; import { timeFormatter } from "@/filters/code-filter";
@ -81,11 +77,11 @@ const tableProps = [
label: "关键字", label: "关键字",
align: "center", align: "center",
}, },
{ // {
prop: "associationNumber", // prop: "associationNumber",
label: "关联次数", // label: "",
align: "center", // align: "center",
}, // },
]; ];
const tableBtn = [ const tableBtn = [
{ {
@ -104,7 +100,37 @@ export default {
tableProps, tableProps,
tableBtn, tableBtn,
tableData: [], tableData: [],
optionArrUrl: ["/basic/qmsProduct/page","/code/problemType/page"],
formConfig: [ formConfig: [
{
type: "input",
label: i18n.t("code.title"),
placeholder: i18n.t("code.title"),
param: "title",
},
{
type: "select",
label: "产品",
selectOptions: [],
param: "productId",
defaultSelect: "",
labelField: "productName",
filterable: true,
},
{
type: "select",
label: "缺陷",
selectOptions: [],
param: "defectId",
defaultSelect: "",
filterable: true,
},
{
type: "input",
label: "关键字",
placeholder: "关键字",
param: "description",
},
{ {
type: "button", type: "button",
btnName: "搜索", btnName: "搜索",
@ -116,9 +142,30 @@ export default {
}, },
components: { components: {
AddOrUpdate, AddOrUpdate,
Searchs, // Searchs,
},
created() {
this.getArr();
}, },
methods: { methods: {
getArr() {
this.optionArrUrl.forEach((item, index) => {
this.$http
.get(item, {
params: {
page: 1,
limit: 500,
},
})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.formConfig[index + 1].selectOptions = res.data.list;
})
.catch(() => {});
});
},
// //
getDataList() { getDataList() {
this.dataListLoading = true; this.dataListLoading = true;
@ -146,15 +193,14 @@ export default {
buttonClick(val) { buttonClick(val) {
switch (val.btnName) { switch (val.btnName) {
case "search": case "search":
this.listQuery = {};
this.listQuery.page = 1; this.listQuery.page = 1;
this.listQuery.limit = 10; this.listQuery.limit = 10;
this.listQuery.total = 1; this.listQuery.title = val.title;
this.listQuery.description = val.description;
this.listQuery.defectId = val.defectId;
this.listQuery.productId = val.productId;
this.getDataList(); this.getDataList();
break; break;
case "export":
this.exportHandle("工厂管理");
break;
default: default:
console.log(val); console.log(val);
} }

View File

@ -83,7 +83,7 @@ export default {
series: [], series: [],
}; };
this.dataList.forEach((item) => { this.dataList.forEach((item) => {
const i = option.series.findIndex((c) => c.id === item.productTypeId); const i = option.series.findIndex((c) => c.id === (this.eType?item.problemTypeId:item.productTypeId));
if (i >= 0) { if (i >= 0) {
option.series[i].data.push(this.eType?item.problemTypeNumber:item.productTypeNumber); option.series[i].data.push(this.eType?item.problemTypeNumber:item.productTypeNumber);
} else { } else {
@ -104,7 +104,6 @@ export default {
option.series.push(obj); option.series.push(obj);
} }
}) })
console.log(option.series)
this.lineChart = echarts.init(document.getElementById("lineChart")) this.lineChart = echarts.init(document.getElementById("lineChart"))
this.lineChart.setOption(option); this.lineChart.setOption(option);
window.addEventListener("resize", () => { window.addEventListener("resize", () => {
@ -117,10 +116,10 @@ export default {
<style lang="scss"> <style lang="scss">
.mod-demo-echarts { .mod-demo-echarts {
> .el-row { // > .el-row {
.el-col { // .el-col {
} // }
} // }
.chart-box { .chart-box {
min-height: 400px; min-height: 400px;
} }

View File

@ -0,0 +1,49 @@
<!--
* @Author: zhp
* @Date: 2023-01-31 09:49:36
* @LastEditTime: 2023-07-17 10:16:41
* @LastEditors: zwq
* @Description:
-->
<template>
<span>
<el-avatar
v-if="injectData.eightDisciplineStatus > injectData.num"
size="small"
style="background: #409EFF;"
icon="el-icon-check"
></el-avatar>
<el-avatar
v-else size="small"
icon="el-icon-close"
></el-avatar>
</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

@ -1,11 +1,11 @@
<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">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick"> <search-bar
<el-badge :value="5" class="item"> :formConfigs="formConfig"
<el-button type="primary" size="small" @click="searchsClick">条件搜索</el-button> ref="searchBarForm"
</el-badge> @headBtnClick="buttonClick"
</search-bar> />
<base-table <base-table
:table-props="tableProps" :table-props="tableProps"
:page="listQuery.page" :page="listQuery.page"
@ -28,7 +28,7 @@
@pagination="getDataList" @pagination="getDataList"
/> />
<!-- 弹窗, 条件搜索--> <!-- 弹窗, 条件搜索-->
<base-dialog <!-- <base-dialog
:dialogTitle="searchsTitle" :dialogTitle="searchsTitle"
:dialogVisible="searchsVisible" :dialogVisible="searchsVisible"
@cancel="searchsCancel" @cancel="searchsCancel"
@ -36,7 +36,7 @@
:before-close="searchsCancel" :before-close="searchsCancel"
> >
<searchs ref="searchsRef" @refreshDataList="searchsSubmit"></searchs> <searchs ref="searchsRef" @refreshDataList="searchsSubmit"></searchs>
</base-dialog> </base-dialog> -->
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog <base-dialog
:dialogTitle="addOrEditTitle" :dialogTitle="addOrEditTitle"
@ -44,7 +44,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width=80% width="80%"
> >
<add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update> <add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update>
</base-dialog> </base-dialog>
@ -54,7 +54,7 @@
<script> <script>
import AddOrUpdate from "./components/eightDisciplineList-detail"; import AddOrUpdate from "./components/eightDisciplineList-detail";
import Searchs from "./components/searchs"; // import Searchs from "./components/searchs";
import basicPage from "@/mixins/basic-page"; import basicPage from "@/mixins/basic-page";
import codeFilter from "@/filters/code-filter"; import codeFilter from "@/filters/code-filter";
import { timeFormatter } from "@/filters/code-filter"; import { timeFormatter } from "@/filters/code-filter";
@ -93,11 +93,11 @@ const tableProps = [
label: i18n.t("code.description"), label: i18n.t("code.description"),
align: "center", align: "center",
}, },
{ // {
prop: "userName", // prop: "userName",
label: "启动人", // label: "",
align: "center", // align: "center",
}, // },
{ {
prop: "eightDisciplineStatus", prop: "eightDisciplineStatus",
label: "步骤", label: "步骤",
@ -112,6 +112,44 @@ const tableBtn = [
}, },
]; ];
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 { export default {
mixins: [basicPage], mixins: [basicPage],
data() { data() {
@ -122,8 +160,52 @@ export default {
}, },
tableProps, tableProps,
tableBtn, tableBtn,
eightDisciplineStatusArr,
tableData: [], tableData: [],
optionArrUrl: ["/basic/qmsCustomer/page", "/basic/qmsProduct/page"],
formConfig: [ formConfig: [
{
type: "input",
label: i18n.t("code.title"),
placeholder: i18n.t("code.title"),
param: "title",
},
{
type: "select",
label: "客户",
selectOptions: [],
param: "customId",
defaultSelect: "",
labelField: "customerName",
filterable: true,
},
{
type: "select",
label: "产品",
selectOptions: [],
param: "productId",
defaultSelect: "",
labelField: "productName",
filterable: true,
},
{
type: "select",
label: "步骤",
selectOptions: eightDisciplineStatusArr,
param: "eightDisciplineStatus",
defaultSelect: "",
filterable: true,
},
{
type: "datePicker",
label: "日期",
dateType: "date",
format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-ddTHH:mm:ss",
placeholder: "日期",
param: "occurrenceDate",
width: 170,
},
{ {
type: "button", type: "button",
btnName: "搜索", btnName: "搜索",
@ -135,9 +217,30 @@ export default {
}, },
components: { components: {
AddOrUpdate, AddOrUpdate,
Searchs, // Searchs,
},
created() {
this.getArr();
}, },
methods: { methods: {
getArr() {
this.optionArrUrl.forEach((item, index) => {
this.$http
.get(item, {
params: {
page: 1,
limit: 500,
},
})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.formConfig[index + 1].selectOptions = res.data.list;
})
.catch(() => {});
});
},
// //
getDataList() { getDataList() {
this.dataListLoading = true; this.dataListLoading = true;
@ -165,15 +268,15 @@ export default {
buttonClick(val) { buttonClick(val) {
switch (val.btnName) { switch (val.btnName) {
case "search": case "search":
this.listQuery = {};
this.listQuery.page = 1; this.listQuery.page = 1;
this.listQuery.limit = 10; this.listQuery.limit = 10;
this.listQuery.total = 1; this.listQuery.title = val.title;
this.listQuery.eightDisciplineStatus = val.eightDisciplineStatus;
this.listQuery.customId = val.customId;
this.listQuery.productId = val.productId;
this.listQuery.occurrenceDate = val.occurrenceDate;
this.getDataList(); this.getDataList();
break; break;
case "export":
this.exportHandle("工厂管理");
break;
default: default:
console.log(val); console.log(val);
} }

View File

@ -1,11 +1,7 @@
<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">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick"> <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 <base-table
:table-props="tableProps" :table-props="tableProps"
:page="listQuery.page" :page="listQuery.page"
@ -28,7 +24,7 @@
@pagination="getDataList" @pagination="getDataList"
/> />
<!-- 弹窗, 条件搜索--> <!-- 弹窗, 条件搜索-->
<base-dialog <!-- <base-dialog
:dialogTitle="searchsTitle" :dialogTitle="searchsTitle"
:dialogVisible="searchsVisible" :dialogVisible="searchsVisible"
@cancel="searchsCancel" @cancel="searchsCancel"
@ -36,7 +32,7 @@
:before-close="searchsCancel" :before-close="searchsCancel"
> >
<searchs ref="searchsRef" @refreshDataList="searchsSubmit"></searchs> <searchs ref="searchsRef" @refreshDataList="searchsSubmit"></searchs>
</base-dialog> </base-dialog> -->
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog <base-dialog
:dialogTitle="addOrEditTitle" :dialogTitle="addOrEditTitle"
@ -44,7 +40,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width=80% width="80%"
> >
<add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update> <add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update>
</base-dialog> </base-dialog>
@ -54,7 +50,8 @@
<script> <script>
import AddOrUpdate from "./components/eightDisciplineList-detail"; import AddOrUpdate from "./components/eightDisciplineList-detail";
import Searchs from "./components/searchs"; // import Searchs from "./components/searchs";
import processStatus from "./components/processStatus"
import basicPage from "@/mixins/basic-page"; import basicPage from "@/mixins/basic-page";
import codeFilter from "@/filters/code-filter"; import codeFilter from "@/filters/code-filter";
import { timeFormatter } from "@/filters/code-filter"; import { timeFormatter } from "@/filters/code-filter";
@ -85,42 +82,58 @@ const tableProps = [
{ {
prop: "D1", prop: "D1",
label: "D1", label: "D1",
num: 1,
align: "center", align: "center",
subcomponent: processStatus,
}, },
{ {
prop: "D2", prop: "D2",
label: "D2", label: "D2",
num: 2,
align: "center", align: "center",
subcomponent: processStatus,
}, },
{ {
prop: "D3", prop: "D3",
label: "D3", label: "D3",
num: 3,
align: "center", align: "center",
subcomponent: processStatus,
}, },
{ {
prop: "D4", prop: "D4",
label: "D4", label: "D4",
num: 4,
align: "center", align: "center",
subcomponent: processStatus,
}, },
{ {
prop: "D5", prop: "D5",
label: "D5", label: "D5",
num: 5,
align: "center", align: "center",
subcomponent: processStatus,
}, },
{ {
prop: "D6", prop: "D6",
label: "D6", label: "D6",
num: 6,
align: "center", align: "center",
subcomponent: processStatus,
}, },
{ {
prop: "D7", prop: "D7",
label: "D7", label: "D7",
num: 7,
align: "center", align: "center",
subcomponent: processStatus,
}, },
{ {
prop: "D8", prop: "D8",
label: "D8", label: "D8",
num: 8,
align: "center", align: "center",
subcomponent: processStatus,
}, },
]; ];
const tableBtn = [ const tableBtn = [
@ -130,6 +143,44 @@ const tableBtn = [
}, },
]; ];
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 { export default {
mixins: [basicPage], mixins: [basicPage],
data() { data() {
@ -140,8 +191,52 @@ export default {
}, },
tableProps, tableProps,
tableBtn, tableBtn,
eightDisciplineStatusArr,
tableData: [], tableData: [],
optionArrUrl: ["/basic/qmsCustomer/page", "/basic/qmsProduct/page"],
formConfig: [ formConfig: [
{
type: "input",
label: i18n.t("code.title"),
placeholder: i18n.t("code.title"),
param: "title",
},
{
type: "select",
label: "客户",
selectOptions: [],
param: "customId",
defaultSelect: "",
labelField: "customerName",
filterable: true,
},
{
type: "select",
label: "产品",
selectOptions: [],
param: "productId",
defaultSelect: "",
labelField: "productName",
filterable: true,
},
{
type: "select",
label: "步骤",
selectOptions: eightDisciplineStatusArr,
param: "eightDisciplineStatus",
defaultSelect: "",
filterable: true,
},
{
type: "datePicker",
label: "日期",
dateType: "date",
format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-ddTHH:mm:ss",
placeholder: "日期",
param: "occurrenceDate",
width: 170,
},
{ {
type: "button", type: "button",
btnName: "搜索", btnName: "搜索",
@ -153,9 +248,31 @@ export default {
}, },
components: { components: {
AddOrUpdate, AddOrUpdate,
Searchs, processStatus,
// Searchs,
},
created() {
this.getArr();
}, },
methods: { methods: {
getArr() {
this.optionArrUrl.forEach((item, index) => {
this.$http
.get(item, {
params: {
page: 1,
limit: 500,
},
})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.formConfig[index + 1].selectOptions = res.data.list;
})
.catch(() => {});
});
},
// //
getDataList() { getDataList() {
this.dataListLoading = true; this.dataListLoading = true;
@ -183,15 +300,15 @@ export default {
buttonClick(val) { buttonClick(val) {
switch (val.btnName) { switch (val.btnName) {
case "search": case "search":
this.listQuery = {};
this.listQuery.page = 1; this.listQuery.page = 1;
this.listQuery.limit = 10; this.listQuery.limit = 10;
this.listQuery.total = 1; this.listQuery.title = val.title;
this.listQuery.eightDisciplineStatus = val.eightDisciplineStatus;
this.listQuery.customId = val.customId;
this.listQuery.productId = val.productId;
this.listQuery.occurrenceDate = val.occurrenceDate;
this.getDataList(); this.getDataList();
break; break;
case "export":
this.exportHandle("工厂管理");
break;
default: default:
console.log(val); console.log(val);
} }

View File

@ -1,11 +1,12 @@
<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">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick"> <search-bar
<el-badge :value="5" class="item"> :isFold="true"
<el-button type="primary" size="small" @click="searchsClick">条件搜索</el-button> :formConfigs="formConfig"
</el-badge> ref="searchBarForm"
</search-bar> @headBtnClick="buttonClick"
/>
<base-table <base-table
:table-props="tableProps" :table-props="tableProps"
:page="listQuery.page" :page="listQuery.page"
@ -28,7 +29,7 @@
@pagination="getDataList" @pagination="getDataList"
/> />
<!-- 弹窗, 条件搜索--> <!-- 弹窗, 条件搜索-->
<base-dialog <!-- <base-dialog
:dialogTitle="searchsTitle" :dialogTitle="searchsTitle"
:dialogVisible="searchsVisible" :dialogVisible="searchsVisible"
@cancel="searchsCancel" @cancel="searchsCancel"
@ -36,7 +37,7 @@
:before-close="searchsCancel" :before-close="searchsCancel"
> >
<searchs ref="searchsRef" :show-obj=showObj @refreshDataList="searchsSubmit"></searchs> <searchs ref="searchsRef" :show-obj=showObj @refreshDataList="searchsSubmit"></searchs>
</base-dialog> </base-dialog> -->
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<base-dialog <base-dialog
:dialogTitle="addOrEditTitle" :dialogTitle="addOrEditTitle"
@ -44,7 +45,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width=80% width="80%"
> >
<add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update> <add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update>
</base-dialog> </base-dialog>
@ -54,7 +55,7 @@
<script> <script>
import AddOrUpdate from "./components/eightDisciplineList-detail"; import AddOrUpdate from "./components/eightDisciplineList-detail";
import Searchs from "./components/searchs"; // import Searchs from "./components/searchs";
import basicPage from "@/mixins/basic-page"; import basicPage from "@/mixins/basic-page";
import codeFilter from "@/filters/code-filter"; import codeFilter from "@/filters/code-filter";
import { timeFormatter } from "@/filters/code-filter"; import { timeFormatter } from "@/filters/code-filter";
@ -87,11 +88,11 @@ const tableProps = [
label: i18n.t("code.description"), label: i18n.t("code.description"),
align: "center", align: "center",
}, },
{ // {
prop: "userName", // prop: "userName",
label: "启动人", // label: "",
align: "center", // align: "center",
}, // },
]; ];
const tableBtn = [ const tableBtn = [
{ {
@ -100,6 +101,62 @@ const tableBtn = [
}, },
]; ];
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,
},
];
const roleArr = [
{
name: "启动人",
id: 1,
},
{
name: "分析人",
id: 2,
},
{
name: "负责人",
id: 3,
},
{
name: "处理人",
id: 4,
},
];
export default { export default {
mixins: [basicPage], mixins: [basicPage],
data() { data() {
@ -109,11 +166,65 @@ export default {
}, },
tableProps, tableProps,
tableBtn, tableBtn,
eightDisciplineStatusArr,
roleArr,
tableData: [], tableData: [],
showObj: { optionArrUrl: ["/basic/qmsCustomer/page", "/basic/qmsProduct/page"],
role: true // showObj: {
}, // role: true
// },
formConfig: [ formConfig: [
{
type: "input",
label: i18n.t("code.title"),
placeholder: i18n.t("code.title"),
param: "title",
},
{
type: "select",
label: "客户",
selectOptions: [],
param: "customId",
defaultSelect: "",
labelField: "customerName",
filterable: true,
},
{
type: "select",
label: "产品",
selectOptions: [],
param: "productId",
defaultSelect: "",
labelField: "productName",
filterable: true,
},
{
type: "select",
label: "步骤",
selectOptions: eightDisciplineStatusArr,
param: "eightDisciplineStatus",
defaultSelect: "",
filterable: true,
},
{
type: "select",
label: "角色",
selectOptions: roleArr,
param: "role",
defaultSelect: "",
filterable: true,
},
{
type: "datePicker",
label: "日期",
dateType: "date",
format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-ddTHH:mm:ss",
placeholder: "日期",
param: "occurrenceDate",
width: 170,
},
{ {
type: "button", type: "button",
btnName: "搜索", btnName: "搜索",
@ -125,9 +236,30 @@ export default {
}, },
components: { components: {
AddOrUpdate, AddOrUpdate,
Searchs, // Searchs,
},
created() {
this.getArr();
}, },
methods: { methods: {
getArr() {
this.optionArrUrl.forEach((item, index) => {
this.$http
.get(item, {
params: {
page: 1,
limit: 500,
},
})
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.formConfig[index + 1].selectOptions = res.data.list;
})
.catch(() => {});
});
},
// //
getDataList() { getDataList() {
this.dataListLoading = true; this.dataListLoading = true;
@ -155,15 +287,16 @@ export default {
buttonClick(val) { buttonClick(val) {
switch (val.btnName) { switch (val.btnName) {
case "search": case "search":
this.listQuery = {};
this.listQuery.page = 1; this.listQuery.page = 1;
this.listQuery.limit = 10; this.listQuery.limit = 10;
this.listQuery.total = 1; this.listQuery.title = val.title;
this.listQuery.eightDisciplineStatus = val.eightDisciplineStatus;
this.listQuery.customId = val.customId;
this.listQuery.productId = val.productId;
this.listQuery.occurrenceDate = val.occurrenceDate;
this.listQuery.role = val.role;
this.getDataList(); this.getDataList();
break; break;
case "export":
this.exportHandle("工厂管理");
break;
default: default:
console.log(val); console.log(val);
} }

View File

@ -74,7 +74,7 @@
label: "日期", label: "日期",
dateType: "daterange", dateType: "daterange",
format: "yyyy-MM-dd", format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-ddTHH:mm:ss", valueFormat: "yyyy-MM-dd",
rangeSeparator: "-", rangeSeparator: "-",
startPlaceholder: "开始时间", startPlaceholder: "开始时间",
endPlaceholder: "结束时间", endPlaceholder: "结束时间",

View File

@ -2,15 +2,15 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-07-03 15:21:14 * @Date: 2023-07-03 15:21:14
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-07-04 08:53:10 * @LastEditTime: 2023-07-14 16:50:39
* @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">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" /> <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
<div style="height:20px;width:100%"></div> <div style="height: 20px; width: 100%"></div>
<el-row :gutter="4" style="margin-top:20px"> <el-row :gutter="4" style="margin-top: 20px">
<el-col :span="12" v-if="pieVisible"> <el-col :span="12" v-if="pieVisible">
<pie-chart <pie-chart
v-loading="pieLoading" v-loading="pieLoading"
@ -72,7 +72,7 @@ export default {
label: "日期", label: "日期",
dateType: "daterange", dateType: "daterange",
format: "yyyy-MM-dd", format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-ddTHH:mm:ss", valueFormat: "yyyy-MM-dd",
rangeSeparator: "-", rangeSeparator: "-",
startPlaceholder: "开始时间", startPlaceholder: "开始时间",
endPlaceholder: "结束时间", endPlaceholder: "结束时间",
@ -179,7 +179,7 @@ export default {
<style lang="scss"> <style lang="scss">
.mod-sys__user { .mod-sys__user {
> .el-row { > .el-row {
display:flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
.el-col { .el-col {
} }

View File

@ -0,0 +1,249 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="标题" prop="title">
<el-input v-model="ruleForm.title"></el-input>
</el-form-item>
<el-form-item label="评估类型" prop="evaluationType">
<el-radio-group v-model="ruleForm.evaluationType">
<el-radio-button :label="0">年度</el-radio-button>
<el-radio-button :label="1">季度</el-radio-button>
<el-radio-button :label="2">月度</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="评估模板" prop="evaluationTemplateId">
<el-select v-model="ruleForm.evaluationTemplateId" filterable clearable placeholder="评估模板">
<el-option
v-for="item in modalOptions"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="说明" prop="description">
<el-input type="textarea" v-model="ruleForm.description"></el-input>
</el-form-item>
提醒时间
<el-form-item label="月" prop="reminderTimeMonth">
<el-radio-group v-model="ruleForm.reminderTimeMonth" @change="setDay">
<el-radio-button v-for="(item, index) in monthList" :key="index" :label="item"></el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="日" prop="reminderTimeDay">
<el-radio-group v-model="ruleForm.reminderTimeDay">
<el-radio-button v-for="(item, index) in dayList" :key="index" :label="item"></el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="评估人" prop="evaluator">
<el-radio-group v-model="ruleForm.evaluator">
<el-radio v-for="(item, index) in userList" :key="index" :label="item.id">{{ item.username }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="提醒人" prop="reminder">
<el-select v-model="ruleForm.reminder" filterable clearable placeholder="提醒人">
<el-option
v-for="item in userList"
:key="item.id"
:label="item.username"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="待评估供应商" prop="chooseSupplierList">
<el-select v-model="chooseSupplierList" filterable multiple clearable placeholder="待评估供应商">
<el-option
v-for="item in supplierList"
:key="item.id"
:label="item.supplierTypeName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')">保存</el-button>
<el-button @click="resetForm('ruleForm')">取消</el-button>
</el-form-item>
</el-form>
</el-card>
</template>
<script>
export default {
data() {
return {
urlOptions: {
addURL: '/supplier/qmsEvaluationPlan',
getTemplateListURL: '/supplier/qmsEvaluationTemplate/page',
getSupplierURL: '/supplier/qmsSupplier/page',
getUserURL: '/sys/user/page',
addQmsRelation: '/supplier/qmsEvaluationPlanSupplier'
},
ruleForm: {
title: '',
evaluationType: '',
evaluationTemplateId: '',
description: '',
reminderTimeMonth: 1,
reminderTimeDay: 1,
evaluationType: '',
evaluator: '',
reminder: ''
},
chooseSupplierList: [],
monthList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
dayList: 30,
modalOptions: [],
userList: [],
supplierList: [],
rules: {
title: [
{ required: true, message: '请输入活动名称', trigger: 'blur' }
]
}
}
},
mounted() {
this.getTemplate()
this.getSupplier()
this.getUser()
},
methods: {
setDay() {
switch (this.ruleForm.reminderTimeMonth) {
case 2:
this.dayList = 28
break
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
this.dayList = 31
break
case 4:
case 6:
case 9:
case 11:
this.dayList = 30
break
}
},
getUser() {
this.$http
.get(this.urlOptions.getUserURL, {
params: {
limit: 999,
page: 1
},
})
.then(({ data: res }) => {
this.dataListLoading = false;
if (res.code !== 0) {
this.userList = [];
return this.$message.error(res.msg);
}
this.userList = res.data.list;
})
.catch(() => {
this.dataListLoading = false;
});
},
getSupplier() {
this.$http
.get(this.urlOptions.getSupplierURL, {
params: {
limit: 999,
page: 1
},
})
.then(({ data: res }) => {
this.dataListLoading = false;
if (res.code !== 0) {
this.supplierList = [];
return this.$message.error(res.msg);
}
this.supplierList = res.data.list;
})
.catch(() => {
this.dataListLoading = false;
});
},
getTemplate() {
this.$http
.get(this.urlOptions.getTemplateListURL, {
params: {
limit: 999,
page: 1
},
})
.then(({ data: res }) => {
this.dataListLoading = false;
if (res.code !== 0) {
this.modalOptions = [];
return this.$message.error(res.msg);
}
this.modalOptions = res.data.list;
})
.catch(() => {
this.dataListLoading = false;
});
},
submitForm(formName) {
console.log('啊啊啊啊啊', this.ruleForm)
console.log('nich ', this.chooseSupplierList)
this.$refs[formName].validate((valid) => {
if (valid) {
this.$http["post"](this.urlOptions.addURL, this.ruleForm)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
if (this.chooseSupplierList.length > 0) {
this.chooseSupplierList.forEach(item => {
let param = {
supplierId: item,
evaluationPlanId: res.data
}
this.$http["post"](this.urlOptions.addQmsRelation, param)
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
console.log('添加成功')
// this.$message({
// message: this.$t("prompt.success"),
// type: "success",
// duration: 500
// })
})
})
}
this.$message({
message: this.$t("prompt.success"),
type: "success",
duration: 500,
onClose: () => {
console.log(1111, res);
this.$emit("refreshDataList");
this.addRelation()
},
})
})
} else {
console.log('error submit!!');
return false;
}
});
},
addRelation() {
},
resetForm(formName) {
this.$refs[formName].resetFields();
}
}
}
</script>

View File

@ -0,0 +1,36 @@
<!--
* @Author: Do not edit
* @Date: 2023-07-04 09:34:07
* @LastEditTime: 2023-07-05 15:03:52
* @LastEditors: DY
* @Description:
-->
<template>
<el-card shadow="never" class="aui-card--fill">
<el-tabs tab-position="left" style="min-height: 200px;">
<el-tab-pane label="项目概述">
<first></first>
</el-tab-pane>
<el-tab-pane label="配置管理">配置管理</el-tab-pane>
<el-tab-pane label="角色管理">角色管理</el-tab-pane>
<el-tab-pane label="定时任务补偿">定时任务补偿</el-tab-pane>
</el-tabs>
</el-card>
</template>
<script>
import first from './first.vue'
export default {
components: { first },
data() {
return {
}
},
mounted() {
},
methods: {
}
}
</script>

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: Do not edit * @Author: Do not edit
* @Date: 2023-06-19 14:59:34 * @Date: 2023-06-19 14:59:34
* @LastEditTime: 2023-06-27 15:00:33 * @LastEditTime: 2023-07-11 14:22:43
* @LastEditors: DY * @LastEditors: DY
* @Description: * @Description:
--> -->
@ -159,6 +159,7 @@ export default {
getTypeListURL: '/supplier/qmsProjectType/page', getTypeListURL: '/supplier/qmsProjectType/page',
saveDataURL: '/supplier/qmsEvaluationTemplateProjectType/saveAll' saveDataURL: '/supplier/qmsEvaluationTemplateProjectType/saveAll'
}, },
evaluationTemplateId: '',
visibleList: [true, false, false, false, false], visibleList: [true, false, false, false, false],
activeStep: 0, activeStep: 0,
ruleForm: { ruleForm: {
@ -315,13 +316,18 @@ export default {
} }
const typeList = Array.from(new Set(temp)) const typeList = Array.from(new Set(temp))
console.log('aaaaaaa', typeList) console.log('aaaaaaa', typeList)
for (let type of typeList) { for (let key of typeList) {
let obj = {} let obj = {}
obj.projectTypeName = type obj.projectTypeName = typeList[key]
obj.dragVisible = false obj.dragVisible = false
obj.list = this.multipleSelection.filter(ele => { obj.sort = key
if (ele.projectTypeName === type) { obj.list = this.multipleSelection.filter((ele, index) => {
if (ele.projectTypeName === typeList[key]) {
obj.projectTypeId = ele.projectTypeId obj.projectTypeId = ele.projectTypeId
obj.evaluationTemplateId = this.evaluationTemplateId
ele.evaluationTemplateId = this.evaluationTemplateId
ele.projectId = ele.id
ele.sort = index
return ele return ele
} }
}) })
@ -416,6 +422,8 @@ export default {
this.$emit("refreshDataList"); this.$emit("refreshDataList");
}, },
}) })
console.log('新增结果', res.data)
this.evaluationTemplateId = res.data
this.activeStep ++ this.activeStep ++
// this.visibleList[0] = false // this.visibleList[0] = false
// this.visibleList[1] = true // this.visibleList[1] = true

View File

@ -0,0 +1,213 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="标题" prop="title">
<el-input v-model="ruleForm.title"></el-input>
</el-form-item>
<el-form-item label="物料" prop="productName">
<el-select v-model="ruleForm.productName" filterable clearable placeholder="物料">
<el-option
v-for="item in productList"
:key="item.id"
:label="item.productName"
:value="item.productName">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="供应商" prop="supplierName">
<el-select v-model="ruleForm.supplierName" filterable clearable placeholder="供应商">
<el-option
v-for="item in supplierList"
:key="item.id"
:label="item.name"
:value="item.name">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="负责人" prop="personLiableName">
<el-select v-model="ruleForm.personLiableName" filterable clearable placeholder="供应商">
<el-option
v-for="item in userList"
:key="item.id"
:label="item.username"
:value="item.username">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="时间节点">
<el-date-picker
v-model="timeSlot"
type="daterange"
value-format="yyyy-MM-ddTHH:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="背景" prop="background">
<el-input type="textarea" v-model="ruleForm.background"></el-input>
</el-form-item>
<el-form-item label="状态" prop="ment">
<el-select v-model="ruleForm.ment" filterable clearable placeholder="状态">
<el-option
v-for="item in mentList"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')">保存</el-button>
</el-form-item>
</el-form>
</el-card>
</template>
<script>
export default {
data() {
return {
urlOptions: {
addURL: '/supplier/qmsSupplierProjectList',
getProductURL: '/basic/qmsProduct/page',
getSupplierURL: '/supplier/qmsSupplier/page',
getUserURL: '/sys/user/page'
},
ruleForm: {
title: '',
productName: '',
supplierName: '',
personLiableName: '',
background: '',
ment: 0,
timeNodeStart: undefined,
timeNodeEnd: undefined
},
mentList: [
{
id: 0,
name: '实施中'
},
{
id: 1,
name: '已完成'
}
],
timeSlot: null,
productList: [],
userList: [],
supplierList: [],
rules: {
title: [
{ required: true, message: '请输入活动名称', trigger: 'blur' },
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
]
}
}
},
mounted() {
this.getProduct()
this.getSupplier()
this.getUser()
},
methods: {
getUser() {
this.$http
.get(this.urlOptions.getUserURL, {
params: {
limit: 999,
page: 1
},
})
.then(({ data: res }) => {
this.dataListLoading = false;
if (res.code !== 0) {
this.userList = [];
return this.$message.error(res.msg);
}
this.userList = res.data.list;
})
.catch(() => {
this.dataListLoading = false;
});
},
getSupplier() {
this.$http
.get(this.urlOptions.getSupplierURL, {
params: {
limit: 999,
page: 1
},
})
.then(({ data: res }) => {
this.dataListLoading = false;
if (res.code !== 0) {
this.supplierList = [];
return this.$message.error(res.msg);
}
this.supplierList = res.data.list;
})
.catch(() => {
this.dataListLoading = false;
});
},
getProduct() {
this.$http
.get(this.urlOptions.getProductURL, {
params: {
limit: 999,
page: 1
},
})
.then(({ data: res }) => {
this.dataListLoading = false;
if (res.code !== 0) {
this.productList = [];
return this.$message.error(res.msg);
}
this.productList = res.data.list;
})
.catch(() => {
this.dataListLoading = false;
});
},
submitForm(formName) {
console.log('啊啊啊啊啊', this.ruleForm)
if (this.timeSlot) {
this.ruleForm.timeNodeStart = this.timeSlot[0]
this.ruleForm.timeNodeEnd = this.timeSlot[1]
} else {
this.ruleForm.timeNodeStart = undefined
this.ruleForm.timeNodeEnd = undefined
}
this.$refs[formName].validate((valid) => {
if (valid) {
this.$http["post"](this.urlOptions.addURL, this.ruleForm)
.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: () => {
console.log(1111, res);
this.$emit("refreshDataList");
this.resetForm('ruleForm')
},
})
})
} else {
console.log('error submit!!');
return false;
}
});
},
resetForm(formName) {
this.$refs[formName].resetFields();
}
}
}
</script>

View File

@ -0,0 +1,123 @@
<!--
* @Author: zhp
* @Date: 2023-02-14 15:02:26
* @LastEditTime: 2023-07-14 15:34:18
* @LastEditors: DY
* @Description:
-->
<template>
<el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" label-width="150px">
<el-form-item prop="evaluationType" label="评估类型">
<!-- <el-input v-model="dataForm.evaluationType" :placeholder="$t('laboratory.title')">
</el-input> -->
<el-tag :type="dataForm.evaluationType === 0 ? 'info' : dataForm.evaluationType === 1 ? 'success' : ''" effect="dark">{{ dataForm.evaluationType === 0 ? '年度' : dataForm.evaluationType === 1 ? '季度' : '月度' }}</el-tag>
</el-form-item>
<el-form-item prop="estimatedNextStartTime" label="评估时间">
<el-date-picker v-model="dataForm.estimatedNextStartTime" type="datetime" placeholder="评估时间"
format='yyyy-MM-dd HH:mm:ss' valueFormat='yyyy-MM-ddTHH:mm:ss'>
</el-date-picker>
</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: "/supplier/qmsEvaluationPlan"
// infoURL: "/laboratory/qmsLaboratoryTrainExperience/{ id }",
},
gageList: [],
userList: [],
customerList:[],
gageTypeList:[],
departmentList: [],
visible: false,
dataForm: {
id: null,
estimatedNextStartTime: '',
evaluationType: ''
},
};
},
computed: {
dataRule() {
return {
};
},
},
// mounted () {
// this.getData();
// },
methods: {
init(data) {
this.visible = true
console.log('jpuz cjuu', data)
this.dataForm.id = data.id
this.dataForm.evaluationType = data.evaluationType
// 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();
// if (this.dataForm.id) {
// this.getInfo()
// } else {
// // this.getCode()
// }
// });
},
//
// getInfo() {
// this.$http
// .get(`/laboratory/qmsLaboratoryTrainExperience/${this.dataForm.id}`)
// .then(({ data: res }) => {
// if (res.code !== 0) {
// return this.$message.error(res.msg);
// }
// this.dataForm = {
// ...this.dataForm,
// ...res.data,
// };
// })
// .catch(() => { })
// },
//
dataFormSubmit: debounce(
function () {
console.log('nihc ', this.dataForm)
this.$refs["dataForm"].validate((valid) => {
if (!valid) {
return false;
}
this.$http['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: () => {
console.log(1111);
this.visible = false;
this.$emit("refreshDataList");
},
});
})
.catch(() => {});
});
},
1000,
{ leading: true, trailing: false }
),
},
};
</script>

View File

@ -0,0 +1,30 @@
<!--
* @Author: zhp
* @Date: 2023-04-18 09:11:41
* @LastEditTime: 2023-07-13 15:21:27
* @LastEditors: DY
* @Description:
-->
<template>
<div class="tableInner">
<span>{{ injectData.supplierStatus === 0 ? '合格' : injectData.supplierStatus === 1 ? '不合格' : '黑名单' }}</span>
</div>
</template>
<script>
export default {
props: {
injectData: {
type: Object,
default: () => ({})
}
}
}
</script>
<style lang="css">
.tableInner .el-input__inner {
border: none;
padding: 0;
height: 33px;
}
</style>

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-07-12 15:54:54 * @LastEditTime: 2023-07-14 15:56:51
* @LastEditors: zhp * @LastEditors: DY
* @Description: * @Description:
--> -->
<template> <template>
@ -32,6 +32,10 @@
<el-input v-model="dataForm.address" :placeholder="$t('supplier.address')"> <el-input v-model="dataForm.address" :placeholder="$t('supplier.address')">
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="grade" :label="$t('supplier.grade')">
<el-input v-model="dataForm.grade" :placeholder="$t('supplier.grade')">
</el-input>
</el-form-item>
<el-form-item prop="ment" :label="$t('supplier.ment')"> <el-form-item prop="ment" :label="$t('supplier.ment')">
<el-select v-model="dataForm.ment" :placeholder="$t('supplier.ment')"> <el-select v-model="dataForm.ment" :placeholder="$t('supplier.ment')">
<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">
@ -159,7 +163,8 @@ export default {
contactPhone: null, contactPhone: null,
enterpriseNature: null, enterpriseNature: null,
industry: null, industry: null,
productService: null productService: null,
grade: null
}, },
}; };
}, },

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-07-12 15:55:44 * @LastEditTime: 2023-07-14 15:57:26
* @LastEditors: zhp * @LastEditors: DY
* @Description: * @Description:
--> -->
<template> <template>

View File

@ -1,20 +1,20 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-04-17 14:23:17 * @Date: 2023-04-17 14:23:17
* @LastEditTime: 2023-06-19 10:25:26 * @LastEditTime: 2023-07-12 14:17:24
* @LastEditors: DY * @LastEditors: DY
* @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"> -->
<el-input v-model="name" :placeholder="$t('supplier.title')" style="width:300px" @blur="throttle(handleAdd())" @keyup.enter.native="throttle(handleAdd())"> <el-input v-model="name" :placeholder="$t('supplier.title')" style="width:300px" @blur="handleAdd" @keyup.enter.native="$event.target.blur">
</el-input> </el-input>
<!-- </div> --> <!-- </div> -->
<el-card v-for="(item, index) in tableData" :key="index" class="box-card" style="width:80%; margin-top: 15px"> <el-card v-for="(item, index) in tableData" :key="index" class="box-card" style="width:80%; margin-top: 15px">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>{{ item.name }}</span> <el-input :disabled="item.disabled" style="width: 20%; border: none" v-model="item.name" @blur="handleEdit(item)" @keyup.enter.native="$event.target.blur"></el-input>
<el-button style="float: right; padding: 3px 0" type="text" icon="el-icon-edit" /> <el-button style="float: right; padding: 3px 0" type="text" icon="el-icon-edit" @click="editHandle(item)" />
<el-button style="float: right; padding: 3px 0" type="text" icon="el-icon-delete" @click="deleteHandle(item.id, item.name)" /> <el-button style="float: right; padding: 3px 0" type="text" icon="el-icon-delete" @click="deleteHandle(item.id, item.name)" />
</div> </div>
<!-- <span v-for="(item, index) in tableData" :key="index" class="text item"> <!-- <span v-for="(item, index) in tableData" :key="index" class="text item">
@ -62,7 +62,8 @@ export default {
getSupplierListURL: '/supplier/qmsSupplier/page', getSupplierListURL: '/supplier/qmsSupplier/page',
getTemplateListURL: '/supplier/qmsEvaluationTask/page', getTemplateListURL: '/supplier/qmsEvaluationTask/page',
submitURL: '/supplier/qmsEvaluationItemListLabel', submitURL: '/supplier/qmsEvaluationItemListLabel',
addLabelInfoURL: '/supplier/qmsEvaluationItemListLabelInfo' addLabelInfoURL: '/supplier/qmsEvaluationItemListLabelInfo',
deleteLabelInfoURL: '/supplier/qmsEvaluationItemListLabelInfo'
}, },
name: '', name: '',
tableData: [], tableData: [],
@ -71,7 +72,6 @@ export default {
page: 1, page: 1,
total: 0, total: 0,
}, },
dynamicTags: ['标签一', '标签二', '标签三'],
inputVisible: false, inputVisible: false,
inputValue: [], inputValue: [],
searchOrEditTitle: "", searchOrEditTitle: "",
@ -83,7 +83,7 @@ export default {
}, },
components: { components: {
}, },
activated() { mounted() {
this.getDataList() this.getDataList()
}, },
methods: { methods: {
@ -92,6 +92,30 @@ export default {
// this.searchOrEditTitle = ""; // this.searchOrEditTitle = "";
// this.searchOrUpdateVisible = false; // this.searchOrUpdateVisible = false;
// }, // },
handleEdit(label) {
const data = {
name: label.name,
id: label.id
}
this.$http["put"](this.urlOptions.submitURL, data)
.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.getDataList()
},
})
})
},
editHandle(label) {
label.disabled = false
console.log('nihc', label)
},
handleClose(tag) { handleClose(tag) {
console.log('你好', tag) console.log('你好', tag)
this.$confirm(`确定对[名称=${tag.name}]进行删除操作?`, "提示", { this.$confirm(`确定对[名称=${tag.name}]进行删除操作?`, "提示", {
@ -99,7 +123,20 @@ export default {
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning", type: "warning",
}).then(()=> { }).then(()=> {
this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1) this.$http.delete(this.urlOptions.deleteLabelInfoURL, { data: [tag.id] }).then(({ data }) => {
if (data && data.code === 0) {
this.$message({
message: "操作成功",
type: "success",
duration: 1500,
onClose: () => {
this.getDataList();
},
});
} else {
this.$message.error(data.msg);
}
});
}) })
}, },
@ -192,19 +229,11 @@ export default {
type: "success", type: "success",
duration: 500, duration: 500,
onClose: () => { onClose: () => {
this.visible = false this.getDataList()
this.$emit("successSubmit")
}, },
}) })
}) })
}, },
conditionSearch() {
this.searchOrEditTitle = "搜索";
this.searchOrUpdateVisible = true;
this.$nextTick(() => {
this.$refs.searchOrUpdate.init();
});
},
exportHandle() { exportHandle() {
this.$http.get(this.urlOptions.exportURL, { responseType: 'blob' }, { this.$http.get(this.urlOptions.exportURL, { responseType: 'blob' }, {
...this.dataForm ...this.dataForm
@ -299,6 +328,7 @@ export default {
}, },
getDataList() { getDataList() {
this.dataListLoading = true; this.dataListLoading = true;
this.name = ''
this.$http this.$http
.get(this.urlOptions.getDataListURL, { .get(this.urlOptions.getDataListURL, {
params: this.listQuery, params: this.listQuery,
@ -310,7 +340,11 @@ export default {
this.listQuery.total = 0; this.listQuery.total = 0;
return this.$message.error(res.msg); return this.$message.error(res.msg);
} }
this.tableData = res.data.list; this.tableData = res.data.list.map((item) =>{
item.disabled = true
return item
})
this.listQuery.total = res.data.total; this.listQuery.total = res.data.total;
}) })
.catch(() => { .catch(() => {

View File

@ -1,253 +1,201 @@
<!-- <!--
* @Author: zhp * @Author: Do not edit
* @Date: 2023-04-17 14:23:17 * @Date: 2023-06-20 11:16:51
* @LastEditTime: 2023-07-12 16:05:36 * @LastEditTime: 2023-07-14 15:53:22
* @LastEditors: zhp * @LastEditors: DY
* @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>
<SearchBar :formConfigs="formConfig" ref="ruleForm" @headBtnClick="buttonClick"> <el-form :inline="true" :model="formInline" class="demo-form-inline">
</SearchBar> <el-form-item label="供应商名称">
<base-table id="palletTable" :table-props="tableProps" :page="listQuery.page" ref="palletTable1" <el-input v-model="formInline.supplierName" placeholder="供应商"></el-input>
:limit="listQuery.limit" :table-data="tableData"> </el-form-item>
<method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn" <el-form-item label="评估模板">
@clickBtn="handleClick" /> <el-select v-model="formInline.evaluationTemplateId" filterable clearable placeholder="评估模板">
</base-table> <el-option
<pagination :limit.sync="listQuery.limit" :page.sync="listQuery.page" :total="listQuery.total" v-for="item in modalOptions"
@pagination="getDataList" /> :key="item.id"
<!-- 弹窗, 新增 / 修改 --> :label="item.name"
<base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel" :value="item.id">
@confirm="handleConfirm" :before-close="handleCancel"> </el-option>
<evaluationItemList-add ref="addOrUpdate" @refreshDataList="successSubmit"> </el-select>
</evaluationItemList-add> </el-form-item>
<!-- <el-row slot="footer" type="flex" justify="end"> </el-row> --> <el-form-item label="评估类型">
</base-dialog> <el-select v-model="formInline.evaluationType" clearable placeholder="评估类型">
<base-dialog :dialogTitle="searchOrEditTitle" :dialogVisible="searchOrUpdateVisible" @cancel="handleSearchCancel" <el-option
@confirm="handleSearchConfirm" :before-close="handleSearchCancel"> v-for="item in typeOptions"
<supplierProduct-search ref="searchOrUpdate" @successSubmit="conditionSearchSubmit"> :key="item.id"
</supplierProduct-search> :label="item.name"
<el-row slot="footer" type="flex" justify="end"> :value="item.id">
<el-col :span="12"> </el-option>
<el-button size="small" type="primary" plain class="btnTextStyle" @click="handleSearchCancel"> </el-select>
{{ $t("close") }} </el-form-item>
</el-button> <el-form-item>
<el-button size="small" class="btnTextStyle" type="primary" plain @click="handleSearchReset">{{ <el-button type="primary" @click="onSubmit">查询</el-button>
$t("reset") </el-form-item>
}}</el-button> </el-form>
<el-button type="primary" size="small" class="btnTextStyle" @click="handleSearchConfirm">
{{ $t("search") }}
</el-button>
</el-col>
</el-row>
</base-dialog>
</div> </div>
<div>
<el-table
:data="tableData"
v-loading="dataListLoading"
style="width: 100%">
<el-table-column type="expand">
<template slot-scope="props">
<el-form label-position="left" inline class="demo-table-expand">
<el-form-item label="供应商列表">
<el-tag type="success" v-for="(item, index) in props.row.list" :key="index">{{ item.supplierName }}</el-tag>
</el-form-item>
<br>
<el-form-item label="负责人列表">
<el-tag>{{ props.row.evaluatorName }}</el-tag>
</el-form-item>
</el-form>
</template>
</el-table-column>
<el-table-column
label="评估类型"
prop="evaluationType">
<template slot-scope="slot">
<el-tag :type="slot.row.evaluationType === 0 ? 'info' : slot.row.evaluationType === 1 ? 'success' : ''" effect="dark">{{ slot.row.evaluationType === 0 ? '年度' : slot.row.evaluationType === 1 ? '季度' : '月度' }}</el-tag>
</template>
</el-table-column>
<el-table-column
label="标题"
prop="title">
</el-table-column>
<el-table-column
label="评估模板"
prop="evaluationTemplateName">
<template slot-scope="slot">
<el-tag type="danger" effect="plain">{{ slot.row.evaluationTemplateName }}</el-tag>
</template>
</el-table-column>
<el-table-column
label="说明"
prop="description">
</el-table-column>
<el-table-column
label="上次启动时间"
prop="lastStartTime">
</el-table-column>
<el-table-column
label="上次启动评估时间段"
prop="lastStartEvaluationPeriod">
</el-table-column>
<el-table-column
label="预计下次启动时间"
prop="estimatedNextStartTime">
</el-table-column>
<el-table-column
label="提醒人"
prop="reminder">
</el-table-column>
<el-table-column
label="操作"
width="160"
prop="desc">
<template slot-scope="slot">
<el-button type="text" @click="start(slot.row)">启动</el-button>
<el-button type="text" @click="editPlan(slot.row)">edit</el-button>
<el-button type="text" @click="deletePlan(slot.row)" style="color: red">delete</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div>
<el-button class="carcleButton" @click="addPlanButon">+</el-button>
</div>
<add-plan v-if="addtModelVisible" @refreshDataList="onSubmit"></add-plan>
<base-dialog dialogTitle="start" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel" @confirm="handleConfirm" :before-close="handleCancel">
<start-plan ref="addOrUpdate" @refreshDataList="closeSucess"></start-plan>
</base-dialog>
</el-card> </el-card>
</template> </template>
<script> <script>
import basicPage from "@/mixins/basic-page" import addPlan from './components/addPlan.vue'
import basicSearch from "@/mixins/basic-search" import startPlan from './components/startPlan.vue'
import supplierProductSearch from "./components/supplierProductSearch.vue"
import evaluationItemListAdd from "./components/evaluationItemList-add.vue"
import { timeFormatter } from '@/filters'
import i18n from "@/i18n"
// import i18n from "@/i18n";
const tableProps = [
{
prop: "evaluationType",
label: i18n.t('supplier.evaluationType')
},
{
prop: "title",
label: i18n.t('supplier.title')
},
{
prop: "evaluationTemplateName",
label: i18n.t('supplier.evaluationTemplateName')
},
{
prop: "description",
label: i18n.t('supplier.description')
},
{
prop: "lastStartTime",
label: i18n.t('supplier.lastStartTime')
},
{
prop: "lastStartEvaluationPeriod",
label: i18n.t('supplier.lastStartEvaluationPeriod')
},
{
prop: "estimatedNextStartTime",
label: i18n.t('supplier.estimatedNextStartTime')
}
];
const tableBtn = [
{
type: "edit",
btnName: i18n.t('t.edit'),
},
{
type: "delete",
btnName: i18n.t('t.delete'),
}
];
export default { export default {
mixins: [basicPage, basicSearch], components: { addPlan, startPlan },
data() { data() {
return { return {
urlOptions: { urlOptions: {
getDataListURL: "/supplier/qmsEvaluationPlan/page", getDataListURL: "/supplier/qmsEvaluationPlan/page",
deleteURL: "/supplier/qmsEvaluationPlan", getTemplateListURL: '/supplier/qmsEvaluationTemplate/page',
getProjectTypeList: '/supplier/qmsProjectType/page' deleteURL: '/supplier/qmsEvaluationPlan'
// submitURL: '/supplier/qmsSupplierType'
}, },
tableProps, dataListLoading: false,
ment: '', addtModelVisible: false,
tableBtn, typeOptions: [
productData: {},
dataForm:{
limit: 999,
page:1
},
projectTypeId:null,
projectTypeList:[],
searchOrEditTitle: "",
searchOrUpdateVisible: false,
productOrEditTitle: "",
addOrEditTitle: '',
addOrUpdateVisible: false,
productOrUpdateVisible: false,
formConfig: [
{ {
type: 'input', name: '年度',
label: i18n.t('supplier.name'), id: 0
placeholder: i18n.t('supplier.name'),
param: 'name'
}, },
{ {
type: 'input', name: '季度',
label: i18n.t('supplier.code'), id: 1
placeholder: i18n.t('supplier.code'),
param: 'code'
}, },
{ {
type: "button", name: '月度',
btnName: i18n.t('search'), id: 2
name: "search", }
color: "primary",
// plain: true,
},
{
type: "button",
btnName: i18n.t('add'),
name: "add",
color: "success",
plain: true
},
], ],
}; modalOptions: [],
addOrUpdateVisible: false,
formInline: {
page: 1,
limit: 10,
evaluationTemplateId: undefined,
evaluationType: undefined,
supplierName: '',
total: 0
}, },
components: { tableData: []
supplierProductSearch, }
// supplierProduct,
evaluationItemListAdd
}, },
mounted () { mounted() {
this.getData() this.getTemplate()
this.onSubmit()
}, },
methods: { methods: {
getData() { closeSucess() {
this.$http this.addOrUpdateVisible = false
.get(this.urlOptions.getProjectTypeList, { params: this.listQuery }) this.onSubmit()
.then(({ data: res }) => {
if (res.code === 0) {
console.log(res.data);
this.projectTypeList = res.data.list
}
})
.catch(() => {
})
}, },
//search-bar handleCancel() {
handleProductCancel() { // this.$refs.addOrUpdate.formClear()
this.productOrUpdateVisible = false; this.addOrUpdateVisible = false
this.productOrEditTitle = "" // this.addOrEditTitle = ''
}, },
// handleSearchCancel() { handleConfirm() {
// this.searchOrEditTitle = ""; this.$refs.addOrUpdate.dataFormSubmit()
// this.searchOrUpdateVisible = false; },
// }, start(val) {
conditionSearch() { this.addOrUpdateVisible = true
this.searchOrEditTitle = "搜索";
this.searchOrUpdateVisible = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.searchOrUpdate.init(); this.$refs.addOrUpdate.init(val);
}); });
}, },
exportHandle() { editPlan(val) {},
this.$http.get(this.urlOptions.exportURL, { responseType: 'blob' }, { deletePlan(val) {
...this.dataForm this.$confirm(`确定对[名称=${val.title}]进行删除操作?`, "提示", {
}).then((res) => {
console.log(res)
// if (res !== 0) {
// return this.$message.error(res.msg)
// }
let fileName = ''
const contentDisposition = res.headers['content-disposition']
if (contentDisposition) {
const temp = res.headers['content-disposition']
.split(';')[1]
.split('=')[1]
// --Node.js使iconv-lite
fileName = decodeURI(temp)
console.log(temp)
}
const blob = new Blob([res.data])
const reader = new FileReader()
reader.readAsDataURL(blob)
reader.onload = (e) => {
const a = document.createElement('a')
a.download = fileName
a.href = e.target.result
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
}
}).catch(() => { })
},
// handleConfirm() {
// this.$refs.addOrUpdate.dataFormSubmitHandle();
// },
// conditionSearchSubmit() {},
conditionSearchSubmit(dataForm) {
// console.log(key);
// console.log(key);
this.listQuery.supplierName = dataForm.supplierName
this.listQuery.page = 1;
this.getDataList();
this.searchOrUpdateVisible = false;
// console.log(11111);
// this.conditionSearchSubmit();
},
handleClick(val) {
if (val.type === "delete") {
this.$confirm(`确定对[名称=${val.data.customerTypeName}]进行删除操作?`, "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
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.id] }).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.getDataList(); this.onSubmit();
}, },
}); });
} else { } else {
@ -256,47 +204,73 @@ export default {
}); });
}) })
.catch(() => { }); .catch(() => { });
} else if (val.type === 'edit') {
this.addOrUpdateVisible = true
this.addOrEditTitle = this.$t('edit')
this.$nextTick(() => {
const data ={
id: val.data.id,
projectTypeId: this.projectTypeId
}
this.$refs.addOrUpdate.init(data)
});
}
}, },
addOrUpdateHandle() { addPlanButon() {
console.log(this.projectTypeId) this.addtModelVisible = true
this.addOrUpdateVisible = true; },
this.$nextTick(() => { getTemplate() {
const data = { this.$http
projectTypeId: this.projectTypeId .get(this.urlOptions.getTemplateListURL, {
params: {
limit: 999,
page: 1
},
})
.then(({ data: res }) => {
this.dataListLoading = false;
if (res.code !== 0) {
this.modalOptions = [];
return this.$message.error(res.msg);
} }
this.$refs.addOrUpdate.init(data) this.modalOptions = res.data.list;
})
.catch(() => {
this.dataListLoading = false;
}); });
}, },
buttonClick(val) { onSubmit() {
console.log(val) this.dataListLoading = true
switch (val.btnName) { this.addtModelVisible = false
case "search": this.$http
// this.listQuery.paramCode = val.paramCode; .get(this.urlOptions.getDataListURL, {
this.listQuery.name = val.name ? val.name : undefined params: this.formInline,
this.listQuery.code = val.code ? val.code : undefined })
// console.log(i18n); .then(({ data: res }) => {
this.listQuery.page = 1; this.dataListLoading = false;
this.getDataList(); if (res.code !== 0) {
break; this.tableData = [];
case "add": this.formInline.total = 0;
this.addOrEditTitle = '新增' return this.$message.error(res.msg);
this.addOrUpdateVisible = true
this.addOrUpdateHandle()
break;
default:
} }
}, this.tableData = res.data.list;
}, this.formInline.total = res.data.total;
}; })
.catch(() => {
this.dataListLoading = false;
});
}
}
}
</script> </script>
<style scoped>
.demo-table-expand {
font-size: 0;
}
.demo-table-expand label {
width: 90px;
color: #99a9bf;
}
.demo-table-expand .el-form-item {
margin-right: 0;
margin-bottom: 0;
width: 50%;
}
.carcleButton {
border-radius: 50%;
width: 50px;
height: 50px;
margin: 5px;
background-color: rgb(196, 193, 193);
}
</style>

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-04-17 14:23:17 * @Date: 2023-04-17 14:23:17
* @LastEditTime: 2023-07-11 14:44:36 * @LastEditTime: 2023-07-14 15:53:48
* @LastEditors: zhp * @LastEditors: DY
* @Description: * @Description:
--> -->
<template> <template>
@ -129,6 +129,14 @@ export default {
limit: 999, limit: 999,
page:1 page:1
}, },
listQuery: {
supplierId: undefined,
closedLoop: undefined,
endTime: undefined,
startTime: undefined,
productName: undefined,
problemDescription: undefined
},
searchOrEditTitle: "", searchOrEditTitle: "",
searchOrUpdateVisible: false, searchOrUpdateVisible: false,
productOrEditTitle: "", productOrEditTitle: "",
@ -146,7 +154,7 @@ export default {
type: 'select', type: 'select',
label: i18n.t('supplier.supplierName'), label: i18n.t('supplier.supplierName'),
selectOptions: [], selectOptions: [],
param: 'supplierName', param: 'supplierId',
clearable: true, clearable: true,
filterable: true, filterable: true,
}, },
@ -318,7 +326,7 @@ export default {
conditionSearchSubmit(dataForm) { conditionSearchSubmit(dataForm) {
// console.log(key); // console.log(key);
// console.log(key); // console.log(key);
this.listQuery.supplierName = dataForm.supplierName this.listQuery.supplierId = dataForm.supplierName
this.listQuery.page = 1; this.listQuery.page = 1;
this.getDataList(); this.getDataList();
this.searchOrUpdateVisible = false; this.searchOrUpdateVisible = false;
@ -371,7 +379,7 @@ export default {
this.listQuery.productName = val.productName ? val.productName : undefined this.listQuery.productName = val.productName ? val.productName : undefined
this.listQuery.problemDescription = val.problemDescription ? val.problemDescription : undefined this.listQuery.problemDescription = val.problemDescription ? val.problemDescription : undefined
this.listQuery.closedLoop = val.closedLoop ? val.closedLoop : undefined this.listQuery.closedLoop = val.closedLoop ? val.closedLoop : undefined
this.listQuery.supplierName = val.supplierName ? val.supplierName : undefined this.listQuery.supplierId = val.supplierId ? val.supplierId : undefined
this.listQuery.startTime = val.timeSlot ? val.timeSlot[0] : undefined this.listQuery.startTime = val.timeSlot ? val.timeSlot[0] : undefined
this.listQuery.endTime = val.timeSlot ? val.timeSlot[1] : undefined this.listQuery.endTime = val.timeSlot ? val.timeSlot[1] : undefined
// console.log(i18n); // console.log(i18n);

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-04-17 14:23:17 * @Date: 2023-04-17 14:23:17
* @LastEditTime: 2023-07-13 11:15:39 * @LastEditTime: 2023-07-14 15:56:32
* @LastEditors: zhp * @LastEditors: DY
* @Description: * @Description:
--> -->
<template> <template>
@ -61,7 +61,10 @@ import inputArea from "./components/inputArea"
import innerTable from "./components/innerTable" import innerTable from "./components/innerTable"
import changeStatus from "./components/changeStatus.vue" import changeStatus from "./components/changeStatus.vue"
import i18n from "@/i18n" import i18n from "@/i18n"
import status from './components/status.vue'
// import i18n from "@/i18n";
import supplier from '@/filters/supplier' import supplier from '@/filters/supplier'
const tableProps = [ const tableProps = [
{ {
prop: "detail", prop: "detail",
@ -91,6 +94,8 @@ const tableProps = [
}, },
{ {
prop: "supplierStatus", prop: "supplierStatus",
// label: i18n.t('supplier.ment'),
// subcomponent: status,
label: i18n.t('supplier.supplierStatus'), label: i18n.t('supplier.supplierStatus'),
filter: supplier('supplierStatus'), filter: supplier('supplierStatus'),
}, },

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: Do not edit * @Author: Do not edit
* @Date: 2023-06-20 11:16:51 * @Date: 2023-06-20 11:16:51
* @LastEditTime: 2023-06-26 16:30:07 * @LastEditTime: 2023-07-04 09:53:30
* @LastEditors: DY * @LastEditors: DY
* @Description: 项目清单 * @Description: 项目清单
--> -->
@ -12,19 +12,173 @@
<el-form-item label="标题"> <el-form-item label="标题">
<el-input v-model="formInline.title" placeholder="标题"></el-input> <el-input v-model="formInline.title" placeholder="标题"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="物料">
<el-select v-model="formInline.productId" filterable clearable placeholder="物料">
<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 label="供应商">
<el-select v-model="formInline.supplierId" filterable clearable placeholder="供应商">
<el-option
v-for="item in supplierList"
:key="item.id"
:label="item.supplierTypeName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="状态">
<el-radio-group v-model="formInline.status">
<el-radio-button :label="2">全部</el-radio-button>
<el-radio-button :label="1">已完成</el-radio-button>
<el-radio-button :label="0">实施中</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="时间">
<el-date-picker
v-model="timeSlot"
type="daterange"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="onSubmit">查询</el-button> <el-button type="primary" @click="onSubmit">查询</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div>
<el-button class="carcleButton" @click="addButon">+</el-button>
</div>
<add-projects v-if="addtModelVisible" @refreshDataList="onSubmit"></add-projects>
</el-card> </el-card>
</template> </template>
<script> <script>
export default { import addProjects from './components/addProjects.vue';
export default {
components: { addProjects },
data() {
return {
urlOptions: {
addURL: '/supplier/qmsEvaluationPlan',
getProductURL: '/basic/qmsProduct/page',
getSupplierURL: '/supplier/qmsSupplier/page',
getPageURL: '/supplier/qmsSupplierProjectList/page'
},
formInline: {
limit: 999,
page: 1,
title: '',
productId: '',
supplierId: '',
ment: undefined,
status: 2,
startTime: undefined,
endTime: undefined
},
timeSlot: null,
productList: [],
supplierList: [],
tableData: [],
dataListLoading: false,
addtModelVisible: false
}
},
mounted() {
this.getProductList();
this.getSupplier();
},
methods: {
addButon() {
this.addtModelVisible = true
},
onSubmit() {
this.formInline.ment = this.formInline.status === 2 ? undefined : this.formInline.status
if (this.timeSlot) {
this.formInline.startTime = this.timeSlot[0]
this.formInline.endTime = this.timeSlot[1]
} else {
this.formInline.startTime = undefined
this.formInline.endTime = undefined
}
console.log('nihcdawowk', this.formInline)
this.$http
.get(this.urlOptions.getPageURL, {
params: this.formInline,
})
.then(({ data: res }) => {
this.dataListLoading = false;
if (res.code !== 0) {
this.tableData = [];
this.formInline.total = 0;
return this.$message.error(res.msg);
}
this.tableData = res.data.list;
this.formInline.total = res.data.total;
})
.catch(() => {
this.dataListLoading = false;
});
},
getProductList() {
this.$http
.get(this.urlOptions.getProductURL, {
params: {
limit: 999,
page: 1
},
})
.then(({ data: res }) => {
this.dataListLoading = false;
if (res.code !== 0) {
this.productList = [];
return this.$message.error(res.msg);
}
this.productList = res.data.list;
})
.catch(() => {
this.dataListLoading = false;
});
},
getSupplier() {
this.$http
.get(this.urlOptions.getSupplierURL, {
params: {
limit: 999,
page: 1
},
})
.then(({ data: res }) => {
this.dataListLoading = false;
if (res.code !== 0) {
this.supplierList = [];
return this.$message.error(res.msg);
}
this.supplierList = res.data.list;
})
.catch(() => {
this.dataListLoading = false;
});
}
}
} }
</script> </script>
<style scoped> <style scoped>
.carcleButton {
border-radius: 50%;
width: 50px;
height: 50px;
margin: 5px;
background-color: rgb(196, 193, 193);
}
</style> </style>

View File

@ -22,7 +22,7 @@
</span> </span>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="captcha"> <!-- <el-form-item prop="captcha">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="14"> <el-col :span="14">
<el-input v-model="dataForm.captcha" :placeholder="$t('login.captcha')"> <el-input v-model="dataForm.captcha" :placeholder="$t('login.captcha')">
@ -35,7 +35,7 @@
<img :src="captchaPath" @click="getCaptcha()"> <img :src="captchaPath" @click="getCaptcha()">
</el-col> </el-col>
</el-row> </el-row>
</el-form-item> </el-form-item> -->
<el-form-item> <el-form-item>
<el-button type="primary" @click="dataFormSubmitHandle()" class="w-percent-100">{{ $t('login.title') }}</el-button> <el-button type="primary" @click="dataFormSubmitHandle()" class="w-percent-100">{{ $t('login.title') }}</el-button>
</el-form-item> </el-form-item>