From f761b7eb031c316afb754c73f2d985368958d745 Mon Sep 17 00:00:00 2001
From: cuijian <cuijian@xalxzn.com>
Date: 星期四, 03 七月 2025 09:11:52 +0800
Subject: [PATCH] 质量管理-抽样规则、缺陷维护功能
---
src/views/qms/modules/inspectionItem/JSelectMultiInspectionTools.vue | 63 ++
src/views/qms/SamplingRulesList.vue | 342 ++++++++++++++
src/views/qms/modules/defect/DefectModel.vue | 248 ++++++++++
src/views/qms/InspectionToolsList.vue | 6
src/views/base/ShiftGroupManager.vue | 4
src/views/qms/modules/samplingRules/SamplingRulesModel.vue | 287 ++++++++++++
src/views/qms/modules/inspectionItem/InspectionItemModel.vue | 15
src/views/qms/InspectionItemList.vue | 14
src/views/base/SupplierList.vue | 6
src/components/jeecgbiz/JSelectMultiUser.vue | 22
src/views/base/WarehouseList.vue | 6
src/views/qms/DefectList.vue | 322 ++++++++++++++
src/components/jeecgbiz/JSelectBizComponent/JSelectBizComponentModal.vue | 20
src/views/base/ShiftManager.vue | 6
14 files changed, 1,319 insertions(+), 42 deletions(-)
diff --git a/src/components/jeecgbiz/JSelectBizComponent/JSelectBizComponentModal.vue b/src/components/jeecgbiz/JSelectBizComponent/JSelectBizComponentModal.vue
index f99ff94..bac8abb 100644
--- a/src/components/jeecgbiz/JSelectBizComponent/JSelectBizComponentModal.vue
+++ b/src/components/jeecgbiz/JSelectBizComponent/JSelectBizComponentModal.vue
@@ -14,18 +14,18 @@
<!-- 鏌ヨ鍖哄煙 -->
<a-form layout="inline" class="j-inline-form">
<!-- 鍥哄畾鏉′欢 -->
- <a-form-item :label="(queryParamText||name)">
+ <!-- <a-form-item :label="(queryParamText||name)">
<a-input v-model="queryParam[queryParamCode||valueKey]" :placeholder="'璇疯緭鍏�' + (queryParamText||name)" @pressEnter="searchQuery"/>
- </a-form-item>
+ </a-form-item> -->
<!-- 鍔ㄦ�佺敓鎴愮殑鏌ヨ鏉′欢 -->
- <j-select-biz-query-item v-if="queryConfig.length>0" v-show="showMoreQueryItems" :queryParam="queryParam" :queryConfig="queryConfig" @pressEnter="searchQuery"/>
+ <j-select-biz-query-item v-if="queryConfig.length>0" :queryParam="queryParam" :queryConfig="queryConfig" @pressEnter="searchQuery"/>
<!-- 鎸夐挳 -->
<a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
- <a v-if="queryConfig.length>0" @click="showMoreQueryItems=!showMoreQueryItems" style="margin-left: 8px">
+ <!-- <a v-if="queryConfig.length>0" @click="showMoreQueryItems=!showMoreQueryItems" style="margin-left: 8px">
{{ showMoreQueryItems ? '鏀惰捣' : '灞曞紑' }}
<a-icon :type="showMoreQueryItems ? 'up' : 'down'"/>
- </a>
+ </a> -->
</a-form>
<a-table
@@ -354,6 +354,16 @@
}
},
+ searchQuery() {
+ this.loadData(1);
+ this.selectedRowKeys = []
+ },
+ searchReset() {
+ this.queryParam = {}
+ this.loadData(1);
+ this.selectedRowKeys = []
+ },
+
}
}
</script>
diff --git a/src/components/jeecgbiz/JSelectMultiUser.vue b/src/components/jeecgbiz/JSelectMultiUser.vue
index f8609f9..0105c57 100644
--- a/src/components/jeecgbiz/JSelectMultiUser.vue
+++ b/src/components/jeecgbiz/JSelectMultiUser.vue
@@ -44,20 +44,24 @@
// 澶氭潯浠舵煡璇㈤厤缃�
queryConfigDefault: [
{
+ key: 'username',
+ label: '璐﹀彿',
+ },
+ {
key: 'sex',
label: '鎬у埆',
// 濡傛灉鍖呭惈 dictCode锛岄偅涔堝氨浼氭樉绀烘垚涓嬫媺妗�
dictCode: 'sex',
},
- {
- key: 'birthday',
- label: '鐢熸棩',
- placeholder: '璇烽�夋嫨鍑虹敓鏃ユ湡',
- // 濡傛灉鎯宠浣跨敤灞�閮ㄦ敞鍐岀殑缁勪欢锛屽氨蹇呴』瑕佷娇鐢ㄧ澶村嚱鏁�
- customRender: ({key, queryParam, options}) => {
- return <j-date {...options} vModel={queryParam[key]} style="width:180px;"/>
- },
- },
+ // {
+ // key: 'birthday',
+ // label: '鐢熸棩',
+ // placeholder: '璇烽�夋嫨鍑虹敓鏃ユ湡',
+ // // 濡傛灉鎯宠浣跨敤灞�閮ㄦ敞鍐岀殑缁勪欢锛屽氨蹇呴』瑕佷娇鐢ㄧ澶村嚱鏁�
+ // customRender: ({key, queryParam, options}) => {
+ // return <j-date {...options} vModel={queryParam[key]} style="width:180px;"/>
+ // },
+ // },
],
}
},
diff --git a/src/views/base/ShiftGroupManager.vue b/src/views/base/ShiftGroupManager.vue
index 1da4708..1e4f5c1 100644
--- a/src/views/base/ShiftGroupManager.vue
+++ b/src/views/base/ShiftGroupManager.vue
@@ -7,13 +7,13 @@
<!-- 鎼滅储鍖哄煙 -->
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
- <a-col :md="12" :sm="8">
+ <a-col :md="6" :sm="8">
<a-form-item label="鐝粍鍚嶇О" :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}">
<a-input placeholder="" v-model="queryParam.groupName"></a-input>
</a-form-item>
</a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
- <a-col :md="12" :sm="24">
+ <a-col :md="6" :sm="24">
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 21px">鏌ヨ</a-button>
<a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
</a-col>
diff --git a/src/views/base/ShiftManager.vue b/src/views/base/ShiftManager.vue
index 31f6d33..69321bc 100644
--- a/src/views/base/ShiftManager.vue
+++ b/src/views/base/ShiftManager.vue
@@ -5,17 +5,17 @@
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="鐝缂栧彿">
<j-input placeholder="璇疯緭鍏ョ彮娆$紪鍙�" v-model="queryParam.shiftCode"></j-input>
</a-form-item>
</a-col>
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="鐝鍚嶇О">
<j-input placeholder="璇疯緭鍏ョ彮娆″悕绉�" v-model="queryParam.shiftName"></j-input>
</a-form-item>
</a-col>
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
<a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
diff --git a/src/views/base/SupplierList.vue b/src/views/base/SupplierList.vue
index bbc0a89..270a0c6 100644
--- a/src/views/base/SupplierList.vue
+++ b/src/views/base/SupplierList.vue
@@ -10,7 +10,7 @@
>
<a-row :gutter="30">
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="渚涘簲鍟嗙紪鍙�">
<j-input
placeholder="璇疯緭鍏ヤ緵搴斿晢缂栧彿妫�绱�"
@@ -19,7 +19,7 @@
</a-form-item>
</a-col>
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="渚涘簲鍟嗗悕绉�">
<j-input
placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О妫�绱�"
@@ -28,7 +28,7 @@
</a-form-item>
</a-col>
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
<a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
diff --git a/src/views/base/WarehouseList.vue b/src/views/base/WarehouseList.vue
index 0d13ebd..fbb8ec7 100644
--- a/src/views/base/WarehouseList.vue
+++ b/src/views/base/WarehouseList.vue
@@ -10,7 +10,7 @@
>
<a-row :gutter="30">
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="浠撳簱缂栧彿">
<j-input
placeholder="璇疯緭鍏ヤ粨搴撶紪鍙锋绱�"
@@ -19,7 +19,7 @@
</a-form-item>
</a-col>
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="浠撳簱鍚嶇О">
<j-input
placeholder="璇疯緭鍏ヤ粨搴撳悕绉版绱�"
@@ -28,7 +28,7 @@
</a-form-item>
</a-col>
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
<a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
diff --git a/src/views/qms/DefectList.vue b/src/views/qms/DefectList.vue
new file mode 100644
index 0000000..5cf5eef
--- /dev/null
+++ b/src/views/qms/DefectList.vue
@@ -0,0 +1,322 @@
+<template>
+ <a-card
+ :bordered="false"
+ >
+ <!-- 鏌ヨ鍖哄煙 -->
+ <div class="table-page-search-wrapper">
+ <a-form
+ layout="inline"
+ @keyup.enter.native="searchQuery"
+ >
+ <a-row :gutter="30">
+
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
+ <a-form-item label="缂洪櫡缂栫爜">
+ <j-input
+ placeholder="璇疯緭鍏ョ己闄风紪鐮�"
+ v-model="queryParam.defectCode"
+ ></j-input>
+ </a-form-item>
+ </a-col>
+
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
+ <a-form-item label="缂洪櫡鍚嶇О">
+ <j-input
+ placeholder="璇疯緭鍏ョ己闄峰悕绉�"
+ v-model="queryParam.defectName"
+ ></j-input>
+ </a-form-item>
+ </a-col>
+
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
+ <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+ <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
+ <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+
+ <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
+ <div class="table-operator">
+ <a-button
+ @click="handleAdd"
+ type="primary"
+ icon="plus"
+ >鏂板</a-button>
+ </div>
+
+ <!-- table鍖哄煙-begin -->
+ <div>
+ <a-table
+ ref="table"
+ size="middle"
+ bordered
+ rowKey="id"
+ filterMultiple="filterMultiple"
+ :columns="columns"
+ :rowClassName="tableRowClass"
+ :dataSource="dataSource"
+ :pagination="ipagination"
+ :loading="loading"
+ >
+ <!--鐘舵�佹爮涓�у睍绀�-->
+ <span
+ slot="status"
+ slot-scope="text,record"
+ >
+ <a-badge
+ v-if="record.defectStatus==1"
+ status="success"
+ />
+ <span
+ v-if="record.defectStatus==1"
+ class="success"
+ >鍚敤</span>
+ <a-badge
+ v-if="record.defectStatus==0"
+ status="error"
+ />
+ <span
+ v-if="record.defectStatus==0"
+ class="error"
+ >绂佺敤</span>
+ </span>
+ <span
+ slot="action"
+ slot-scope="text, record"
+ >
+ <a
+ href="javascript:;"
+ @click="handleDetail(record)"
+ >璇︽儏</a>
+
+ <a-divider type="vertical" />
+ <a-dropdown>
+ <a class="ant-dropdown-link">鏇村
+ <a-icon type="down" />
+ </a>
+ <a-menu slot="overlay">
+ <a-menu-item>
+ <a @click="handleEdit(record)">缂栬緫</a>
+ </a-menu-item>
+ <a-menu-item>
+ <a-popconfirm
+ title="纭畾鍒犻櫎鍚�?"
+ @confirm="() => handleDelete(record.id)"
+ >
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+
+ </a-menu-item>
+ <a-menu-item v-if="record.defectStatus == 0">
+ <a-popconfirm
+ title="纭畾鍚敤鍚�?"
+ @confirm="() => handleActive(record.id)"
+ >
+ <a>鍚敤</a>
+ </a-popconfirm>
+ </a-menu-item>
+ <a-menu-item v-if="record.defectStatus == 1">
+ <a-popconfirm
+ title="纭畾绂佺敤鍚�?"
+ @confirm="() => handleActive(record.id)"
+ >
+ <a>绂佺敤</a>
+ </a-popconfirm>
+ </a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </span>
+
+ </a-table>
+ </div>
+ <!-- table鍖哄煙-end -->
+
+ <!-- 琛ㄥ崟鍖哄煙 -->
+ <defect-model
+ ref="modalForm"
+ @ok="modalFormOk"
+ ></defect-model>
+ </a-card>
+</template>
+
+<script>
+//鎸夐渶寮曞叆 缁勪欢
+import DefectModel from './modules/defect/DefectModel'
+
+import { deleteAction, requestPut, getAction } from '@/api/manage'
+import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+import JEllipsis from '@/components/jeecg/JEllipsis'
+import JInput from '@/components/jeecg/JInput'
+
+export default {
+ name: 'DefectList',
+ mixins: [JeecgListMixin],
+ components: {
+ DefectModel,
+ JEllipsis,
+ JInput,
+ },
+ data() {
+ return {
+ dataSource: [],
+ /* 鍒嗛〉鍙傛暟 */
+ ipagination: {
+ current: 1,
+ pageSize: 5,
+ pageSizeOptions: ['5', '10', '20'],
+ showTotal: (total, range) => {
+ return range[0] + "-" + range[1] + " 鍏�" + total + "鏉�"
+ },
+ total: 0
+ },
+ // 琛ㄥご
+ columns: [
+ {
+ title: '#',
+ dataIndex: '',
+ key: 'rowIndex',
+ width: 60,
+ align: "center",
+ customRender: function (t, r, index) {
+ return parseInt(index) + 1;
+ }
+ },
+ {
+ title: '缂洪櫡缂栫爜',
+ align: "center",
+ dataIndex: 'defectCode'
+ },
+ {
+ title: '缂洪櫡鍚嶇О',
+ align: "center",
+ dataIndex: 'defectName'
+ },
+ {
+ title: '缂洪櫡鍒嗙被',
+ align: "center",
+ dataIndex: 'defectCategory_dictText'
+ },
+ {
+ title: '鎻忚堪',
+ align: 'center',
+ dataIndex: 'descreption'
+ },
+ {
+ width: 100,
+ title: '鐘舵��',
+ align: 'center',
+ scopedSlots: {
+ customRender: 'status',
+ },
+ dataIndex: 'defectStatus'
+ },
+ {
+ width: 150,
+ title: '鎿嶄綔',
+ dataIndex: 'action',
+ align: 'center',
+ scopedSlots: { customRender: 'action' },
+ }
+ ],
+ url: {
+ list: '/qms/defect/list',
+ delete: '/qms/defect/delete',
+ active: '/qms/defect/active',
+ },
+ }
+ },
+ mounted() {
+ },
+ methods: {
+ loadData(arg) {
+ if (arg === 1) {
+ this.ipagination.current = 1;
+ }
+ var params = this.getQueryParams();//鏌ヨ鏉′欢
+ this.loading = true;
+ getAction(this.url.list, params).then((res) => {
+ if (res.success) {
+ this.dataSource = res.result.records;
+ this.ipagination.total = res.result.total;
+ }
+ if (res.code === 510) {
+ this.$message.warning(res.message)
+ }
+ this.loading = false;
+ })
+ },
+ //绂佺敤鐘舵�佹牱寮�
+ tableRowClass(record, index) {
+ if (record.warehouseStatus != "1") {
+ return "frozenRowClass";
+ }
+ return "";
+ },
+ //鍚敤绂佺敤
+ handleActive(id) {
+ if (!this.url.active) {
+ this.$message.error("璇疯缃畊rl.active!")
+ return
+ }
+ let that = this;
+ requestPut(that.url.active, {}, { id: id }).then((res) => {
+ if (res.success) {
+ that.$message.success(res.message);
+ that.loadData();
+ } else {
+ that.$message.warning(res.message);
+ }
+ });
+ },
+ },
+
+}
+</script>
+<style lang="less" scoped>
+@import '~@assets/less/common.less';
+.frozenRowClass {
+ color: #c9c9c9;
+}
+.success {
+ color: green;
+}
+.error {
+ color: red;
+}
+.fontweight {
+ font-weight: bold;
+}
+.ant-card-body .table-operator {
+ margin-bottom: 18px;
+}
+
+.ant-table-tbody .ant-table-row td {
+ padding-top: 15px;
+ padding-bottom: 15px;
+}
+
+.anty-row-operator button {
+ margin: 0 5px;
+}
+
+/deep/.ant-btn-danger {
+ background-color: #ffffff;
+}
+
+.ant-modal-cust-warp {
+ height: 100%;
+}
+
+.ant-modal-cust-warp .ant-modal-body {
+ height: calc(100% - 110px) !important;
+ overflow-y: auto;
+}
+
+.ant-modal-cust-warp .ant-modal-content {
+ height: 90% !important;
+ overflow-y: hidden;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/qms/InspectionItemList.vue b/src/views/qms/InspectionItemList.vue
index cf9db17..0689c6a 100644
--- a/src/views/qms/InspectionItemList.vue
+++ b/src/views/qms/InspectionItemList.vue
@@ -10,7 +10,7 @@
>
<a-row :gutter="30">
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="妫�楠岄」鐩紪鍙�">
<j-input
placeholder="璇疯緭鍏ユ楠岄」鐩紪鍙锋绱�"
@@ -19,7 +19,7 @@
</a-form-item>
</a-col>
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="妫�楠岄」鐩悕绉�">
<j-input
placeholder="璇疯緭鍏ユ楠岄」鐩悕绉版绱�"
@@ -28,7 +28,7 @@
</a-form-item>
</a-col>
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
<a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
@@ -197,17 +197,17 @@
{
title: '妫�楠岄」鐩垎绫�',
align: "center",
- dataIndex: 'itemCategory'
+ dataIndex: 'itemCategoryName'
},
{
title: '瀹氶噺/瀹氭��',
align: "center",
- dataIndex: 'qualitativeOrQuantitative'
+ dataIndex: 'qualitativeOrQuantitativeName'
},
{
title: '娴嬮噺宸ュ叿',
align: "center",
- dataIndex: 'inspectionTools'
+ dataIndex: 'inspectionToolsNames'
},
{
title: '澶囨敞',
@@ -232,7 +232,7 @@
}
],
url: {
- list: '/qms/inspectionItem/list',
+ list: '/qms/inspectionItem/queryList',
delete: '/qms/inspectionItem/delete',
active: '/qms/inspectionItem/active',
},
diff --git a/src/views/qms/InspectionToolsList.vue b/src/views/qms/InspectionToolsList.vue
index 94d5217..b0eb2fa 100644
--- a/src/views/qms/InspectionToolsList.vue
+++ b/src/views/qms/InspectionToolsList.vue
@@ -10,7 +10,7 @@
>
<a-row :gutter="30">
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="妫�楠屽伐鍏风紪鐮�">
<j-input
placeholder="璇疯緭鍏ユ楠屽伐鍏风紪鐮佹绱�"
@@ -19,7 +19,7 @@
</a-form-item>
</a-col>
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="妫�楠屽伐鍏峰悕绉�">
<j-input
placeholder="璇疯緭鍏ユ楠屽伐鍏峰悕绉版绱�"
@@ -28,7 +28,7 @@
</a-form-item>
</a-col>
- <a-col :xl="4" :lg="7" :md="8" :sm="24">
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
<a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
diff --git a/src/views/qms/SamplingRulesList.vue b/src/views/qms/SamplingRulesList.vue
new file mode 100644
index 0000000..28882b9
--- /dev/null
+++ b/src/views/qms/SamplingRulesList.vue
@@ -0,0 +1,342 @@
+<template>
+ <a-card
+ :bordered="false"
+ >
+ <!-- 鏌ヨ鍖哄煙 -->
+ <div class="table-page-search-wrapper">
+ <a-form
+ layout="inline"
+ @keyup.enter.native="searchQuery"
+ >
+ <a-row :gutter="30">
+
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
+ <a-form-item label="瑙勫垯缂栫爜">
+ <j-input
+ placeholder="璇疯緭鍏ヨ鍒欑紪鐮佹绱�"
+ v-model="queryParam.ruleCode"
+ ></j-input>
+ </a-form-item>
+ </a-col>
+
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
+ <a-form-item label="瑙勫垯鍚嶇О">
+ <j-input
+ placeholder="璇疯緭鍏ヨ鍒欏悕绉版绱�"
+ v-model="queryParam.ruleName"
+ ></j-input>
+ </a-form-item>
+ </a-col>
+
+ <a-col :xl="6" :lg="7" :md="8" :sm="24">
+ <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+ <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
+ <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+
+ <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
+ <div class="table-operator">
+ <a-button
+ @click="handleAdd"
+ type="primary"
+ icon="plus"
+ >鏂板</a-button>
+ </div>
+
+ <!-- table鍖哄煙-begin -->
+ <div>
+ <a-table
+ ref="table"
+ size="middle"
+ bordered
+ rowKey="id"
+ filterMultiple="filterMultiple"
+ :columns="columns"
+ :rowClassName="tableRowClass"
+ :dataSource="dataSource"
+ :pagination="ipagination"
+ :loading="loading"
+ >
+ <!--鐘舵�佹爮涓�у睍绀�-->
+ <span
+ slot="status"
+ slot-scope="text,record"
+ >
+ <a-badge
+ v-if="record.ruleStatus==1"
+ status="success"
+ />
+ <span
+ v-if="record.ruleStatus==1"
+ class="success"
+ >鍚敤</span>
+ <a-badge
+ v-if="record.ruleStatus==0"
+ status="error"
+ />
+ <span
+ v-if="record.ruleStatus==0"
+ class="error"
+ >绂佺敤</span>
+ </span>
+ <span
+ slot="action"
+ slot-scope="text, record"
+ >
+ <a
+ href="javascript:;"
+ @click="handleDetail(record)"
+ >璇︽儏</a>
+
+ <a-divider type="vertical" />
+ <a-dropdown>
+ <a class="ant-dropdown-link">鏇村
+ <a-icon type="down" />
+ </a>
+ <a-menu slot="overlay">
+ <a-menu-item>
+ <a @click="handleEdit(record)">缂栬緫</a>
+ </a-menu-item>
+ <a-menu-item>
+ <a-popconfirm
+ title="纭畾鍒犻櫎鍚�?"
+ @confirm="() => handleDelete(record.id)"
+ >
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+
+ </a-menu-item>
+ <a-menu-item v-if="record.ruleStatus == 0">
+ <a-popconfirm
+ title="纭畾鍚敤鍚�?"
+ @confirm="() => handleActive(record.id)"
+ >
+ <a>鍚敤</a>
+ </a-popconfirm>
+ </a-menu-item>
+ <a-menu-item v-if="record.ruleStatus == 1">
+ <a-popconfirm
+ title="纭畾绂佺敤鍚�?"
+ @confirm="() => handleActive(record.id)"
+ >
+ <a>绂佺敤</a>
+ </a-popconfirm>
+ </a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </span>
+
+ </a-table>
+ </div>
+ <!-- table鍖哄煙-end -->
+
+ <!-- 琛ㄥ崟鍖哄煙 -->
+ <sampling-rules-model
+ ref="modalForm"
+ @ok="modalFormOk"
+ ></sampling-rules-model>
+ </a-card>
+</template>
+
+<script>
+//鎸夐渶寮曞叆 缁勪欢
+import SamplingRulesModel from './modules/samplingRules/SamplingRulesModel'
+
+import { deleteAction, requestPut, getAction } from '@/api/manage'
+import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+import JEllipsis from '@/components/jeecg/JEllipsis'
+import JInput from '@/components/jeecg/JInput'
+
+export default {
+ name: 'SamplingRulesList',
+ mixins: [JeecgListMixin],
+ components: {
+ SamplingRulesModel,
+ JEllipsis,
+ JInput,
+ },
+ data() {
+ return {
+ dataSource: [],
+ /* 鍒嗛〉鍙傛暟 */
+ ipagination: {
+ current: 1,
+ pageSize: 5,
+ pageSizeOptions: ['5', '10', '20'],
+ showTotal: (total, range) => {
+ return range[0] + "-" + range[1] + " 鍏�" + total + "鏉�"
+ },
+ total: 0
+ },
+ // 琛ㄥご
+ columns: [
+ {
+ title: '#',
+ dataIndex: '',
+ key: 'rowIndex',
+ width: 60,
+ align: "center",
+ customRender: function (t, r, index) {
+ return parseInt(index) + 1;
+ }
+ },
+ {
+ title: '鎶芥牱瑙勫垯缂栫爜',
+ align: "center",
+ dataIndex: 'ruleCode'
+ },
+ {
+ title: '鎶芥牱瑙勫垯鍚嶇О',
+ align: "center",
+ dataIndex: 'ruleName'
+ },
+ {
+ title: '鎶芥牱瑙勫垯鍒嗙被',
+ align: "center",
+ dataIndex: 'ruleCategory_dictText'
+ },
+ {
+ title: '鎶芥牱鏁伴噺',
+ align: "center",
+ dataIndex: 'samplingQuantity'
+ },
+ {
+ title: '鎵归噺涓婇檺鍊�',
+ align: "center",
+ dataIndex: 'batchUpperLimit'
+ },
+ {
+ title: '鎵归噺涓嬮檺鍊�',
+ align: "center",
+ dataIndex: 'batchLowerLimit'
+ },
+ {
+ title: '鏈�澶т笉鍚堟牸鏁�',
+ align: "center",
+ dataIndex: 'maxUnqualifiedQuantity'
+ },
+ {
+ title: '澶囨敞',
+ align: 'center',
+ dataIndex: 'remark'
+ },
+ {
+ width: 100,
+ title: '鐘舵��',
+ align: 'center',
+ scopedSlots: {
+ customRender: 'status',
+ },
+ dataIndex: 'ruleStatus'
+ },
+ {
+ width: 150,
+ title: '鎿嶄綔',
+ dataIndex: 'action',
+ align: 'center',
+ scopedSlots: { customRender: 'action' },
+ }
+ ],
+ url: {
+ list: '/qms/samplingRules/list',
+ delete: '/qms/samplingRules/delete',
+ active: '/qms/samplingRules/active',
+ },
+ }
+ },
+ mounted() {
+ },
+ methods: {
+ loadData(arg) {
+ if (arg === 1) {
+ this.ipagination.current = 1;
+ }
+ var params = this.getQueryParams();//鏌ヨ鏉′欢
+ this.loading = true;
+ getAction(this.url.list, params).then((res) => {
+ if (res.success) {
+ this.dataSource = res.result.records;
+ this.ipagination.total = res.result.total;
+ }
+ if (res.code === 510) {
+ this.$message.warning(res.message)
+ }
+ this.loading = false;
+ })
+ },
+ //绂佺敤鐘舵�佹牱寮�
+ tableRowClass(record, index) {
+ if (record.warehouseStatus != "1") {
+ return "frozenRowClass";
+ }
+ return "";
+ },
+ //鍚敤绂佺敤
+ handleActive(id) {
+ if (!this.url.active) {
+ this.$message.error("璇疯缃畊rl.active!")
+ return
+ }
+ let that = this;
+ requestPut(that.url.active, {}, { id: id }).then((res) => {
+ if (res.success) {
+ that.$message.success(res.message);
+ that.loadData();
+ } else {
+ that.$message.warning(res.message);
+ }
+ });
+ },
+ },
+
+}
+</script>
+<style lang="less" scoped>
+@import '~@assets/less/common.less';
+.frozenRowClass {
+ color: #c9c9c9;
+}
+.success {
+ color: green;
+}
+.error {
+ color: red;
+}
+.fontweight {
+ font-weight: bold;
+}
+.ant-card-body .table-operator {
+ margin-bottom: 18px;
+}
+
+.ant-table-tbody .ant-table-row td {
+ padding-top: 15px;
+ padding-bottom: 15px;
+}
+
+.anty-row-operator button {
+ margin: 0 5px;
+}
+
+/deep/.ant-btn-danger {
+ background-color: #ffffff;
+}
+
+.ant-modal-cust-warp {
+ height: 100%;
+}
+
+.ant-modal-cust-warp .ant-modal-body {
+ height: calc(100% - 110px) !important;
+ overflow-y: auto;
+}
+
+.ant-modal-cust-warp .ant-modal-content {
+ height: 90% !important;
+ overflow-y: hidden;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/qms/modules/defect/DefectModel.vue b/src/views/qms/modules/defect/DefectModel.vue
new file mode 100644
index 0000000..86c508f
--- /dev/null
+++ b/src/views/qms/modules/defect/DefectModel.vue
@@ -0,0 +1,248 @@
+<template>
+ <a-modal
+ :title="title"
+ :width="800"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ :okButtonProps="{ props: {disabled: disableSubmit} }"
+ @ok="handleOk"
+ @cancel="handleCancel"
+ cancelText="鍏抽棴"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+
+ <a-row :gutter="24">
+ <a-col :span="24">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="缂洪櫡缂栫爜"
+ >
+ <a-input
+ :disabled="disableSubmit"
+ allow-clear
+ placeholder="璇疯緭鍏ョ己闄风紪鐮�"
+ v-decorator="['defectCode', validatorRules.defectCode ]"
+ />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :span="24">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="缂洪櫡鍚嶇О"
+ >
+ <a-input
+ :disabled="disableSubmit"
+ allow-clear
+ placeholder="璇疯緭鍏ョ己闄峰悕绉�"
+ v-decorator="['defectName', validatorRules.defectName ]"
+ />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :span="24">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="缂洪櫡鍒嗙被"
+ >
+ <j-dict-select-tag
+ :disabled="disableSubmit"
+ placeholder="璇疯緭鍏ョ己闄峰垎绫�"
+ v-decorator="['defectCategory', validatorRules.defectCategory ]"
+ dictCode="defect_category"
+ />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :span="24">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鎻忚堪"
+ >
+ <a-textarea :disabled="disableSubmit" placeholder="璇疯緭鍏ユ弿杩�" v-decorator="['descreption', validatorRules.descreption ]"/>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { httpAction, getAction } from '@/api/manage'
+import pick from 'lodash.pick'
+import { duplicateCheck } from '@/api/api'//閲嶅鏍¢獙
+import JDictSelectTag from '../../../../components/dict/JDictSelectTag.vue'
+
+export default {
+ components: { JDictSelectTag },
+ name: "DefectModal",
+ data() {
+ return {
+ title: "鎿嶄綔",
+ visible: false,
+ disableSubmit: false,
+ model: {},
+ defectId: "", //淇濆瓨缂洪櫡id
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 16 },
+ },
+
+ confirmLoading: false,
+ form: this.$form.createForm(this),
+ validatorRules: {
+ defectCode: {
+ rules: [
+ { required: true, message: '璇疯緭鍏ョ己闄风紪鐮�' },
+ { validator: this.validateNum },
+ ]
+ },
+ defectName: {
+ rules: [
+ { required: true, message: '璇疯緭鍏ョ己闄峰悕绉�' },
+ { validator: this.validateName },
+ ]
+ },
+ defectCategory: {
+ rules: [
+ { required: true, message: '璇烽�夋嫨缂洪櫡鍒嗙被' },
+ ]
+ },
+ },
+ url: {
+ add: "/qms/defect/add",
+ edit: "/qms/defect/edit",
+ },
+ }
+ },
+ created() {
+ },
+ methods: {
+ add() {
+ this.edit({});
+ },
+ edit(record) {
+ this.form.resetFields();
+ this.model = Object.assign({}, record);
+ this.defectId = record.id;
+ this.visible = true;
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ pick(this.model, 'defectCode', 'defectName','defectCategory','defectStatus','descreption')
+ )
+ });
+ },
+ close() {
+ this.$emit('close');
+ this.visible = false;
+ },
+ handleOk() {
+ const that = this;
+ // 瑙﹀彂琛ㄥ崟楠岃瘉
+ this.form.validateFields((err, values) => {
+ if (!err) {
+ that.confirmLoading = true;
+ let httpurl = '';
+ let method = '';
+ if (!this.model.id) {
+ httpurl += this.url.add;
+ method = 'post';
+ } else {
+ httpurl += this.url.edit;
+ method = 'put';
+ }
+ let formData = Object.assign(this.model, values);
+ httpAction(httpurl, formData, method).then((res) => {
+ if (res.success) {
+ that.$message.success(res.message);
+ that.$emit('ok');
+ } else {
+ that.$message.warning(res.message);
+ }
+ }).finally(() => {
+ that.confirmLoading = false;
+ that.close();
+ })
+ }
+ })
+ },
+ handleCancel() {
+ this.close()
+ },
+ //楠岃瘉 缂栧彿
+ validateNum(rule, value, callback) {
+ var params = {
+ tableName: 'qms_defect',
+ fieldName: 'defect_code',
+ fieldVal: value,
+ dataId: this.defectId,
+ //鏁版嵁搴撲腑瀛樺湪瀛楁del_flag骞朵娇鐢ㄨ瀛楁浣滀负鏈垹闄ょ瓥鐣ワ紝鐪熷垹闄わ細false 鍋囧垹闄わ細true
+ delFlag: 'true',
+ };
+ duplicateCheck(params).then((res) => {
+ if (res.success) {
+ callback();
+ } else {
+ callback("缂洪櫡缂栫爜宸插瓨鍦�!");
+ }
+ })
+ },
+ //楠岃瘉 鍚嶇О
+ validateName(rule, value, callback) {
+ var params = {
+ tableName: 'qms_defect',
+ fieldName: 'defect_name',
+ fieldVal: value,
+ dataId: this.defectId,
+ //鏁版嵁搴撲腑瀛樺湪瀛楁del_flag骞朵娇鐢ㄨ瀛楁浣滀负鏈垹闄ょ瓥鐣ワ紝鐪熷垹闄わ細false 鍋囧垹闄わ細true
+ delFlag: 'true',
+ };
+ duplicateCheck(params).then((res) => {
+ if (res.success) {
+ callback();
+ } else {
+ callback("缂洪櫡鍚嶇О宸插瓨鍦�!");
+ }
+ })
+ },
+ // 鍏抽棴寮圭獥鏃舵竻闄よ〃鍗曟牎楠�
+ removeValidate() {
+ if (this.$refs.form) this.$refs.form.clearValidate()
+ }
+ }
+}
+</script>
+
+<style scoped>
+.ant-btn {
+ padding: 0 10px;
+ margin-left: 3px;
+}
+
+.ant-form-item-control {
+ line-height: 0px;
+}
+
+/** 涓昏〃鍗曡闂磋窛 */
+.ant-form .ant-form-item {
+ margin-bottom: 10px;
+}
+
+/** Tab椤甸潰琛岄棿璺� */
+.ant-tabs-content .ant-form-item {
+ margin-bottom: 0px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/qms/modules/inspectionItem/InspectionItemModel.vue b/src/views/qms/modules/inspectionItem/InspectionItemModel.vue
index 272f420..76fde16 100644
--- a/src/views/qms/modules/inspectionItem/InspectionItemModel.vue
+++ b/src/views/qms/modules/inspectionItem/InspectionItemModel.vue
@@ -82,12 +82,11 @@
:wrapperCol="wrapperCol"
label="娴嬮噺宸ュ叿"
>
- <a-input
- :disabled="disableSubmit"
- allow-clear
- placeholder="璇烽�夋嫨娴嬮噺宸ュ叿"
- v-decorator="['inspectionTools', validatorRules.inspectionTools ]"
- />
+ <j-select-multi-inspection-tools
+ :disabled="disableSubmit"
+ v-decorator="['inspectionTools', validatorRules.inspectionTools ]"
+ valueKey="id">
+ </j-select-multi-inspection-tools>
</a-form-item>
</a-col>
</a-row>
@@ -111,9 +110,11 @@
import { httpAction, getAction } from '@/api/manage'
import pick from 'lodash.pick'
import { duplicateCheck } from '@/api/api'//閲嶅鏍¢獙
+import JSelectMultiInspectionTools from './JSelectMultiInspectionTools'
export default {
name: "InspectionItemModal",
+ components: {JSelectMultiInspectionTools},
data() {
return {
title: "鎿嶄綔",
@@ -229,7 +230,7 @@
//楠岃瘉 鍚嶇О
validateName(rule, value, callback) {
var params = {
- tableName: 'qms_inspection_items',
+ tableName: 'qms_inspection_item',
fieldName: 'item_name',
fieldVal: value,
dataId: this.inspectionItemId,
diff --git a/src/views/qms/modules/inspectionItem/JSelectMultiInspectionTools.vue b/src/views/qms/modules/inspectionItem/JSelectMultiInspectionTools.vue
new file mode 100644
index 0000000..c1de5e1
--- /dev/null
+++ b/src/views/qms/modules/inspectionItem/JSelectMultiInspectionTools.vue
@@ -0,0 +1,63 @@
+<template>
+ <!-- 瀹氫箟鍦ㄨ繖閲岀殑鍙傛暟閮芥槸涓嶅彲鍦ㄥ閮ㄨ鐩栫殑锛岄槻姝㈠嚭鐜伴棶棰� -->
+ <j-select-biz-component
+ :value="value"
+ :ellipsisLength="25"
+ :listUrl="url.list"
+ :columns="columns"
+ v-on="$listeners"
+ v-bind="attrs"
+ />
+</template>
+
+<script>
+ import JDate from '@comp/jeecg/JDate'
+ import JSelectBizComponent from '../../../../components/jeecgbiz/JSelectBizComponent'
+
+ export default {
+ name: 'JSelectMultiInspectionTools',
+ components: {JDate, JSelectBizComponent},
+ props: {
+ value: null, // any type
+ queryConfig: {
+ type: Array,
+ default: () => []
+ },
+ },
+ data() {
+ return {
+ url: { list: '/qms/inspectionTools/list' },
+ columns: [
+ { title: '宸ュ叿缂栫爜', align: 'center', width: '25%', widthRight: '70%', dataIndex: 'toolCode' },
+ { title: '宸ュ叿鍚嶇О', align: 'center', width: '25%', dataIndex: 'toolName' },
+ { title: '宸ュ叿鐘舵��', align: 'center', width: '20%', dataIndex: 'toolStatus' },
+ { title: '澶囨敞', align: 'center', width: '20%', dataIndex: 'remark' }
+ ],
+ // 瀹氫箟鍦ㄨ繖閲岀殑鍙傛暟閮芥槸鍙互鍦ㄥ閮ㄤ紶閫掕鐩栫殑锛屽彲浠ユ洿鐏垫椿鐨勫畾鍒跺寲浣跨敤鐨勭粍浠�
+ default: {
+ name: '宸ュ叿',
+ width: 1200,
+ displayKey: 'toolCode',
+ returnKeys: ['id', 'toolName'],
+ queryParamText: '宸ュ叿缂栫爜',
+ },
+ // 澶氭潯浠舵煡璇㈤厤缃�
+ queryConfigDefault: [
+ {
+ key: 'toolName',
+ label: '妫�楠屽伐鍏峰悕绉�',
+ },
+ ],
+ }
+ },
+ computed: {
+ attrs() {
+ return Object.assign(this.default, this.$attrs, {
+ queryConfig: this.queryConfigDefault.concat(this.queryConfig)
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="less" scoped></style>
\ No newline at end of file
diff --git a/src/views/qms/modules/samplingRules/SamplingRulesModel.vue b/src/views/qms/modules/samplingRules/SamplingRulesModel.vue
new file mode 100644
index 0000000..d4190f2
--- /dev/null
+++ b/src/views/qms/modules/samplingRules/SamplingRulesModel.vue
@@ -0,0 +1,287 @@
+<template>
+ <a-modal
+ :title="title"
+ :width="800"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ :okButtonProps="{ props: {disabled: disableSubmit} }"
+ @ok="handleOk"
+ @cancel="handleCancel"
+ cancelText="鍏抽棴"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+
+ <a-row :gutter="24">
+ <a-col :span="12">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="瑙勫垯缂栫爜"
+ >
+ <a-input
+ :disabled="disableSubmit"
+ allow-clear
+ placeholder="璇疯緭鍏ヨ鍒欑紪鐮�"
+ v-decorator="['ruleCode', validatorRules.ruleCode ]"
+ />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="瑙勫垯鍚嶇О"
+ >
+ <a-input
+ :disabled="disableSubmit"
+ allow-clear
+ placeholder="璇疯緭鍏ヨ鍒欏悕绉�"
+ v-decorator="['ruleName', validatorRules.ruleName ]"
+ />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :span="24">
+ <a-form-item
+ :labelCol="{ span: 3 }"
+ :wrapperCol="{ span: 21 }"
+ label="瑙勫垯鍒嗙被"
+ >
+ <j-dict-select-tag
+ :disabled="disableSubmit"
+ placeholder="璇疯緭鍏ヨ鍒欏垎绫�"
+ v-decorator="['ruleCategory', validatorRules.ruleCategory ]"
+ dictCode="rule_category"
+ />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :span="12">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鎶芥牱鏁伴噺"
+ >
+ <a-input-number :disabled="disableSubmit" v-decorator="['samplingQuantity', validatorRules.samplingQuantity ]" :min="1" style="width: 100%" placeholder="璇疯緭鍏ユ娊鏍锋暟閲�" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鏈�澶т笉鍚堟牸鏁�"
+ >
+ <a-input-number :disabled="disableSubmit" v-decorator="['maxUnqualifiedQuantity', validatorRules.maxUnqualifiedQuantity ]" :min="1" style="width: 100%" placeholder="璇疯緭鍏ユ渶澶т笉鍚堟牸鏁�" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :span="12">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鎵归噺涓嬮檺鍊�"
+ >
+ <a-input-number :disabled="disableSubmit" v-decorator="['batchLowerLimit', validatorRules.batchLowerLimit ]" :min="1" style="width: 100%" placeholder="璇疯緭鍏ユ壒閲忎笅闄愬��" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鎵归噺涓婇檺鍊�"
+ >
+ <a-input-number :disabled="disableSubmit" v-decorator="['batchUpperLimit', validatorRules.batchUpperLimit ]" :min="1" style="width: 100%" placeholder="璇疯緭鍏ユ壒閲忎笂闄愬��" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :span="24">
+ <a-form-item
+ :labelCol="{ span: 3 }"
+ :wrapperCol="{ span: 21 }"
+ label="澶囨敞"
+ >
+ <a-textarea :disabled="disableSubmit" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark', validatorRules.remark ]"/>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { httpAction, getAction } from '@/api/manage'
+import pick from 'lodash.pick'
+import { duplicateCheck } from '@/api/api'//閲嶅鏍¢獙
+import JDictSelectTag from '../../../../components/dict/JDictSelectTag.vue'
+
+export default {
+ components: { JDictSelectTag },
+ name: "SamplingRulesModal",
+ data() {
+ return {
+ title: "鎿嶄綔",
+ visible: false,
+ disableSubmit: false,
+ model: {},
+ samplingRulesId: "", //淇濆瓨鎶芥牱瑙勫垯id
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 6 },
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 },
+ },
+
+ confirmLoading: false,
+ form: this.$form.createForm(this),
+ validatorRules: {
+ ruleCode: {
+ rules: [
+ { required: true, message: '璇疯緭鍏ヨ鍒欑紪鐮�' },
+ { validator: this.validateNum },
+ ]
+ },
+ ruleName: {
+ rules: [
+ { required: true, message: '璇疯緭鍏ヨ鍒欏悕绉�' },
+ { validator: this.validateName },
+ ]
+ },
+ ruleCategory: {
+ rules: [
+ { required: true, message: '璇烽�夋嫨瑙勫垯鍒嗙被' },
+ ]
+ },
+ },
+ url: {
+ add: "/qms/samplingRules/add",
+ edit: "/qms/samplingRules/edit",
+ },
+ }
+ },
+ created() {
+ },
+ methods: {
+ add() {
+ this.edit({});
+ },
+ edit(record) {
+ this.form.resetFields();
+ this.model = Object.assign({}, record);
+ this.samplingRulesId = record.id;
+ this.visible = true;
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ pick(this.model, 'ruleCode', 'ruleName','ruleCategory','ruleStatus','maxUnqualifiedQuantity',
+ 'samplingQuantity','batchLowerLimit','batchUpperLimit', 'remark')
+ )
+ });
+ },
+ close() {
+ this.$emit('close');
+ this.visible = false;
+ },
+ handleOk() {
+ const that = this;
+ // 瑙﹀彂琛ㄥ崟楠岃瘉
+ this.form.validateFields((err, values) => {
+ if (!err) {
+ that.confirmLoading = true;
+ let httpurl = '';
+ let method = '';
+ if (!this.model.id) {
+ httpurl += this.url.add;
+ method = 'post';
+ } else {
+ httpurl += this.url.edit;
+ method = 'put';
+ }
+ let formData = Object.assign(this.model, values);
+ httpAction(httpurl, formData, method).then((res) => {
+ if (res.success) {
+ that.$message.success(res.message);
+ that.$emit('ok');
+ } else {
+ that.$message.warning(res.message);
+ }
+ }).finally(() => {
+ that.confirmLoading = false;
+ that.close();
+ })
+ }
+ })
+ },
+ handleCancel() {
+ this.close()
+ },
+ //楠岃瘉 缂栧彿
+ validateNum(rule, value, callback) {
+ var params = {
+ tableName: 'qms_sampling_rules',
+ fieldName: 'rule_code',
+ fieldVal: value,
+ dataId: this.samplingRulesId,
+ //鏁版嵁搴撲腑瀛樺湪瀛楁del_flag骞朵娇鐢ㄨ瀛楁浣滀负鏈垹闄ょ瓥鐣ワ紝鐪熷垹闄わ細false 鍋囧垹闄わ細true
+ delFlag: 'true',
+ };
+ duplicateCheck(params).then((res) => {
+ if (res.success) {
+ callback();
+ } else {
+ callback("瑙勫垯缂栫爜宸插瓨鍦�!");
+ }
+ })
+ },
+ //楠岃瘉 鍚嶇О
+ validateName(rule, value, callback) {
+ var params = {
+ tableName: 'qms_sampling_rules',
+ fieldName: 'rule_name',
+ fieldVal: value,
+ dataId: this.samplingRulesId,
+ //鏁版嵁搴撲腑瀛樺湪瀛楁del_flag骞朵娇鐢ㄨ瀛楁浣滀负鏈垹闄ょ瓥鐣ワ紝鐪熷垹闄わ細false 鍋囧垹闄わ細true
+ delFlag: 'true',
+ };
+ duplicateCheck(params).then((res) => {
+ if (res.success) {
+ callback();
+ } else {
+ callback("瑙勫垯鍚嶇О宸插瓨鍦�!");
+ }
+ })
+ },
+ // 鍏抽棴寮圭獥鏃舵竻闄よ〃鍗曟牎楠�
+ removeValidate() {
+ if (this.$refs.form) this.$refs.form.clearValidate()
+ }
+ }
+}
+</script>
+
+<style scoped>
+.ant-btn {
+ padding: 0 10px;
+ margin-left: 3px;
+}
+
+.ant-form-item-control {
+ line-height: 0px;
+}
+
+/** 涓昏〃鍗曡闂磋窛 */
+.ant-form .ant-form-item {
+ margin-bottom: 10px;
+}
+
+/** Tab椤甸潰琛岄棿璺� */
+.ant-tabs-content .ant-form-item {
+ margin-bottom: 0px;
+}
+</style>
\ No newline at end of file
--
Gitblit v1.9.3